Regarding #libsibo, I'm trying to decide on the way forward for the project.

Currently it's in #Arduino C, so there's the odd class, but it's mostly regular C. It'll run on an Uno, ESP32, or a Pico/RP2040.

I've wanted to drop the ESP32 support for ages. But I'm wondering about dropping Arduino support and switching fully to the #RP2040 SDK. For the Uno, I can just maintain the old .INO file for basic functions.

If I go C, I'll have to refactor the classes. But is going full C++ a good idea?

Also, I'd quite like some of #libsibo to be usable on a desktop OS as well as the RP2040.

For example, most of siboimg/fefstool's back-end functions will end up in libsibo (and, in fact, already have), so surely it makes more sense for fefstool to just call libsibo?

I'm sure someone's going to say "use Rust." But my brain can't even handle switching to Go right now, so I think rewriting my current projects in Rust is probably a leap too far.

@thelastpsion have you considered … oh, wait.

@thejpster The Rust Signal - a picture of Ferris - is projected into the sky.

A lone, bearded developer looks to the heavens.

He knows what he has to do.

(I found the picture after writing this. Credit to @ekuber.)

@thelastpsion I’ve started wrangling my emulator to build on RP2040 SDK as well as existing Windows, Linux and macOS - Cmake makes it do-able (not entirely painless). I’m limited to moderately old C++ standards, (11/14ish) but I’m not doing anything ultra funky. Straight C is a bit too limiting, IMHO. OO and RAII are not things I’d want to give up. Sticking to a sane subset of C++ is essential!

@M0CUV The more I learn about "real" C++ (rather than my current "C with classes" approach), the less I like it. (Who the hell thought the ”cout <<” syntax was a good idea?!) But it's pretty essential knowledge for fiddling with a large proportion of FOSS software such as MAME.

Using a sane subset in my own work sounds like an excellent idea!

Also, using a programming standard from 2011/2014 sounds positively futuristic to me, considering I've been using TopSpeed C! 😂

@thelastpsion << hehe if I ever meet the team responsible for the stream API, I’ll << THIS PENCIL…. I had to jump through several hoops to implement the emulator’s host file I/O protocol… like this: https://github.com/devzendo/transputer-emulator/blob/9114eef23cfec8918855ed9606773ff2cce0317c/IServer/server/platform.cpp#L157 … I was constantly thinking “this is trivial and relatively portable in C, there MUST be a way in C++”.. I couldn’t find it. The Addison-Wesley book “Accelerated C++” was useful.
transputer-emulator/IServer/server/platform.cpp at 9114eef23cfec8918855ed9606773ff2cce0317c · devzendo/transputer-emulator

This is a portable, open source emulator of the 32-bit Inmos T414/T800/T801/T805 Transputer family, and a host/file I/O Server that interfaces it to a host OS, providing boot/debug/IO facilities. ...

GitHub
@thelastpsion oh, and if you want your head to explode, look up “Curiously Recurring Template Parameter” :) Welcome to C++ !