Rosette
This update strengthens the x86 backend considerably. A more flexible ELF parser now exists, where it avoids hardcoding particular memory addresses regarding entry, so if there's some compiler offset, that is accounted for. The Assembly decoder handles more instructions broadly when it's interpreting an ELF object file, particularly when this object file contains C++ code. The ISA layer now accounts for about 500 different instructions, meaning that more x86 behaviors are covered and translated in NEON. JWasm was also swapped to an official version without weird licensing requirements, enabling full commercial usage if ever requested
Global shell updates include better handling of the kernel to avoid critical problems leading to stalling. This avoids the shell getting stuck, as processes are moved to a different stack so the terminal has no risk of indefinitely stalling, where a restart was once required to resolve these issues (that is how stuck the global shell once could get). This stalling-handling is done through a PID manager/killer that also aims to kill zombie processes and deal with any leftover processes. Userland better handles how PIDs are spun up by looking into parent/child processes and tackle how they begin and end. Now hooks establish various mechanisms in hopes of preventing unkillable processes, however, this is a WIP that still has many issues involved with it. In addition, Rosette now offers fallback to Rosette 2, so any unhandled processes does not segfault/abort trap the user, however, this can be turned off
Xenia Canary is an official target for good reason, enabling Rosette to be developed quicker and in more critical areas. For example, a resolved issue deals with the angle bracket/quotes header discrepancies you see with Windows and macOS based code. Third party libraries under x86 often use angle bracket includes, which Apple protests like a toddler, and hence, allowing Rosette to accept angle bracket header includes is a major system update that will help improve running Windows based code. Additionally, Rosette now handles when data needs to be statically cast on macOS when it does not need said casting on Windows. Dealing with issues like this means that porting Windows code to macOS means less preprocessor substantiation. The aim is to eventually tackle all these tiny issues that should not require preprocessor macros. It is a better use of time if a developer has to only configure differences in functionality, like a JIT or AOT compiler needing specific code that pertains to how the code itself executes, not errors because a variable was not properly cast
Version 0.07 aims to get rid of my .patch system required by my Xenia Canary port, or a substantial portion. Since Rosette aims to handle broad patterns and not hardcoded specifics (as in, if the library changes variable names but still utilizes the same logic), this will benefit more codebases with similar logic under the hood