Hi all, We wanted to share a new VM release, aimed at Pharo 14 images.
https://github.com/pharo-project/pharo-vm/releases/tag/v12.0.2-beta Besides many cleanups and small improvements, this enables a soon-to-come stack overflow support. For those interested in more details, I allowed myself to generate a digested changes log with some AI. Those using zeroconf will see this change effective immediately. Launcher users, do not forget to update your VMs. Please consider this is a beta release. Do not hesitate to communicate any issues you may find. Cheers, G Highlights This is a major release featuring: Frame unification and stack management improvements, delivering substantial interpreter and execution engine cleanups. RISC-V JIT support, expanding platform coverage and future-proofing VM development. New memory management capabilities, including direct old-space allocation and numerous GC and allocation improvements. Extensive compiler and Slang/C translation work, with many correctness fixes, new tests, and improved inspection tools. Platform and build modernization, including SDL updates, improved CI, cross-build support, and updated third-party dependencies. Large-scale cleanup and refactoring efforts across the VM, interpreter, Cogit, PICs, and infrastructure. VM Runtime, Interpreter & JIT Frame unification (#602 <https://github.com/pharo-project/pharo-vm/pull/602>) Improvements in stack management (#710 <https://github.com/pharo-project/pharo-vm/pull/710>) Initialize stack pages during simulation (#853 <https://github.com/pharo-project/pharo-vm/pull/853>) Robust cannotInterpret: in the interpreter (#641 <https://github.com/pharo-project/pharo-vm/pull/641>) Simplify stack-to-register mapping API (#627 <https://github.com/pharo-project/pharo-vm/pull/627>) Improve and use unreachable (#630 <https://github.com/pharo-project/pharo-vm/pull/630>) Clean up Interpreter State (#658 <https://github.com/pharo-project/pharo-vm/pull/658>) Void the instructionPointer systematically when creating a base frame (#914 <https://github.com/pharo-project/pharo-vm/pull/914>) Cleanup make base frame when compacting code (#943 <https://github.com/pharo-project/pharo-vm/pull/943>) Fix meta try primitive (#968 <https://github.com/pharo-project/pharo-vm/pull/968>) Feature: thisProcess JIT (#1037 <https://github.com/pharo-project/pharo-vm/pull/1037>) OpenPIC / Megamorphic IC work (#1067 <https://github.com/pharo-project/pharo-vm/pull/1067>) PIC Cleanup (#889 <https://github.com/pharo-project/pharo-vm/pull/889>) Cleanup PIC (#1021 <https://github.com/pharo-project/pharo-vm/pull/1021>) Allow Cogit>>#mnuMethodOrNilFor: to return non-CompiledMethod oops (#936 <https://github.com/pharo-project/pharo-vm/pull/936>) Remove entry alignment (#934 <https://github.com/pharo-project/pharo-vm/pull/934>) Mark debugging overrides in Cogit as #debuggerCompleteToSender (#1035 <https://github.com/pharo-project/pharo-vm/pull/1035>) Memory Management & Garbage Collection Do not unlink all sends on GC (#503 <https://github.com/pharo-project/pharo-vm/pull/503>) Improving perm space P12 (#621 <https://github.com/pharo-project/pharo-vm/pull/621>) Added new primitive for allocating directly in the old space (#701 <https://github.com/pharo-project/pharo-vm/pull/701>) Adding test to test Ephemerons in the Old Space (#702 <https://github.com/pharo-project/pharo-vm/pull/702>) Clean special object array a little (#640 <https://github.com/pharo-project/pharo-vm/pull/640>) Collapse allocation logs (#913 <https://github.com/pharo-project/pharo-vm/pull/913>) Only scan the class table if become: was performed to an active class object (#1023 <https://github.com/pharo-project/pharo-vm/pull/1023>) Set the size of larger indexable objects allocated in young space (#976 <https://github.com/pharo-project/pharo-vm/pull/976>) Fix LargeIntegers segfault on allocation failure (#1040 <https://github.com/pharo-project/pharo-vm/pull/1040>) Compiler, Slang & Code Generation Reject reserved words (#613 <https://github.com/pharo-project/pharo-vm/pull/613>) Rename reserved words: selectors, locals and instance variables (#624 <https://github.com/pharo-project/pharo-vm/pull/624>) Rename conflicting identifiers (#646 <https://github.com/pharo-project/pharo-vm/pull/646>) Validate if locals/args exist when adding a type declaration (#603 <https://github.com/pharo-project/pharo-vm/pull/603>) Check structs' instance variable type declarations (#607 <https://github.com/pharo-project/pharo-vm/pull/607>) Redundant type declaration linter rule (#662 <https://github.com/pharo-project/pharo-vm/pull/662>) Fix cast tests (#660 <https://github.com/pharo-project/pharo-vm/pull/660>) Fix and test inlinings with ifs and right shifts not translated (#667 <https://github.com/pharo-project/pharo-vm/pull/667>) Add tests and fix incorrectly generated inlined C code from CCodeGenerator (#666 <https://github.com/pharo-project/pharo-vm/pull/666>) C AST translation right-side parenthesis in expression (#685 <https://github.com/pharo-project/pharo-vm/pull/685>) Add a palette with the C translation of any inspected C node (#686 <https://github.com/pharo-project/pharo-vm/pull/686>) Add C source code inspection tab for TParseNode (#687 <https://github.com/pharo-project/pharo-vm/pull/687>) Created new package CAST-Tests (#679 <https://github.com/pharo-project/pharo-vm/pull/679>) Better dead code elimination (#915 <https://github.com/pharo-project/pharo-vm/pull/915>) Fix issue #822 <https://github.com/pharo-project/pharo-vm/issues/822>: remove unused argument for functionPointerFor:inClass: (#956 <https://github.com/pharo-project/pharo-vm/pull/956>) Fix CASTParserTests>>#testParseSizeofTypeInt (#965 <https://github.com/pharo-project/pharo-vm/pull/965>) Refactor inlining code and add tests for it (#987 <https://github.com/pharo-project/pharo-vm/pull/987>) Suppress the old inlining implementation (#1000 <https://github.com/pharo-project/pharo-vm/pull/1000>) Fix small bug related to method inlining and comments (#957 <https://github.com/pharo-project/pharo-vm/pull/957>) Remove the idea that we might have a different bytecode set (#927 <https://github.com/pharo-project/pharo-vm/pull/927>) Add a dumb isNotNil implementation (same as notNil) (#890 <https://github.com/pharo-project/pharo-vm/pull/890>) Platform Support & Portability RISC-V JIT Support (#932 <https://github.com/pharo-project/pharo-vm/pull/932>) Initial work on W^X for Linux systems (#905 <https://github.com/pharo-project/pharo-vm/pull/905>) Add Windows support for non-ASCII filenames in basicImageFileExists (#922 <https://github.com/pharo-project/pharo-vm/pull/922>) Fix the Windows build (#938 <https://github.com/pharo-project/pharo-vm/pull/938>) Windows improvements (#1062 <https://github.com/pharo-project/pharo-vm/pull/1062>) Make next non-blocking on Linux (#1065 <https://github.com/pharo-project/pharo-vm/pull/1065>) Support x86_64 musl cross-build smoke testing with QEMU (#1069 <https://github.com/pharo-project/pharo-vm/pull/1069>) Updating versions for OSX (ARM / Intel) (#937 <https://github.com/pharo-project/pharo-vm/pull/937>) Build System, CI & Dependencies Update SDL (#615 <https://github.com/pharo-project/pharo-vm/pull/615>) Remove strange SDL2_copy CMake target (#620 <https://github.com/pharo-project/pharo-vm/pull/620>) Forward VM build parameters from CMake (#654 <https://github.com/pharo-project/pharo-vm/pull/654>) Use Pharo 11 on CI (#669 <https://github.com/pharo-project/pharo-vm/pull/669>) Use Pharo file server @ Inria (#868 <https://github.com/pharo-project/pharo-vm/pull/868>) Extract full semantic version from git (#870 <https://github.com/pharo-project/pharo-vm/pull/870>) Remove old versions of libgit in new builds (#902 <https://github.com/pharo-project/pharo-vm/pull/902>) Update CMake minimal version for recent CMake compatibility (#945 <https://github.com/pharo-project/pharo-vm/pull/945>) Updating LibGit2 build to use new OpenSSL and libssh2 (#1033 <https://github.com/pharo-project/pharo-vm/pull/1033>) SDL2 2.32.6 update for Windows and macOS (#978 <https://github.com/pharo-project/pharo-vm/pull/978>) Fix OBS build (#981 <https://github.com/pharo-project/pharo-vm/pull/981>) Add FEATURE_JIT_SIMD option (#966 <https://github.com/pharo-project/pharo-vm/pull/966>) Fix Linux compilation error (#1053 <https://github.com/pharo-project/pharo-vm/pull/1053>) Plugins, I/O & Networking New file plugin (#1024 <https://github.com/pharo-project/pharo-vm/pull/1024>) Fix missing socket accept on Pharo 12 (#1005 <https://github.com/pharo-project/pharo-vm/pull/1005>) Move warnings to debug when loading plugins (#675 <https://github.com/pharo-project/pharo-vm/pull/675>) Testing & Simulation Small stack interpreter tests (#690 <https://github.com/pharo-project/pharo-vm/pull/690>) Simulator fixes (#1025 <https://github.com/pharo-project/pharo-vm/pull/1025>) Fix VM tests: specialObjectsArrayAddress (#1056 <https://github.com/pharo-project/pharo-vm/pull/1056>) Fix broken GC tests (#917 <https://github.com/pharo-project/pharo-vm/pull/917>) Fix some Slang tests (#891 <https://github.com/pharo-project/pharo-vm/pull/891>) Redo ML localization test fixes (#1064 <https://github.com/pharo-project/pharo-vm/pull/1064>) Bug Fixes Resolved UUID primitive bug (#610 <https://github.com/pharo-project/pharo-vm/pull/610>) Make instantiateClass more robust when format is missing (#629 <https://github.com/pharo-project/pharo-vm/pull/629>) Revert #629 <https://github.com/pharo-project/pharo-vm/pull/629> (#631 <https://github.com/pharo-project/pharo-vm/pull/631>) Revert the revert and restore primitive failure handling (#634 <https://github.com/pharo-project/pharo-vm/pull/634>) Add getClass for Pharo 12 compatibility (#651 <https://github.com/pharo-project/pharo-vm/pull/651>) Fix warning absolute value (#782 <https://github.com/pharo-project/pharo-vm/pull/782>) Fix load 32 bits (#920 <https://github.com/pharo-project/pharo-vm/pull/920>) Fix headerAt:put: (#919 <https://github.com/pharo-project/pharo-vm/pull/919>) Fix sign coercion warnings (#950 <https://github.com/pharo-project/pharo-vm/pull/950>) Fix int boxing/loading (#1066 <https://github.com/pharo-project/pharo-vm/pull/1066>) VM version primitive (#1050 <https://github.com/pharo-project/pharo-vm/pull/1050>) Profile data extraction from PIC cache tags (#969 <https://github.com/pharo-project/pharo-vm/pull/969>) Refactoring, Cleanup & Maintenance Added comments and renamed methods during dojo (#623 <https://github.com/pharo-project/pharo-vm/pull/623>) Fixing categorization P12 (#626 <https://github.com/pharo-project/pharo-vm/pull/626>) Updating P12 with changes from P10 branch (#733 <https://github.com/pharo-project/pharo-vm/pull/733>) Forward porting P10 → P12 (#851 <https://github.com/pharo-project/pharo-vm/pull/851>) Forward port 10 → 12 (#893 <https://github.com/pharo-project/pharo-vm/pull/893>) Forward port 10.3.3 → Pharo 12 (#903 <https://github.com/pharo-project/pharo-vm/pull/903>) Realign P12 branch to P10 (#1057 <https://github.com/pharo-project/pharo-vm/pull/1057>) Removing duplicated code (#857 <https://github.com/pharo-project/pharo-vm/pull/857>) Cleanups and improvements (#871 <https://github.com/pharo-project/pharo-vm/pull/871>) Lots of cleanups (#874 <https://github.com/pharo-project/pharo-vm/pull/874>) Cleaning (#881 <https://github.com/pharo-project/pharo-vm/pull/881>) Cleanup dead code (#961 <https://github.com/pharo-project/pharo-vm/pull/961>) Cleanup warnings (#906 <https://github.com/pharo-project/pharo-vm/pull/906>) Fix warnings (#1034 <https://github.com/pharo-project/pharo-vm/pull/1034>) Remove debugging code (#911 <https://github.com/pharo-project/pharo-vm/pull/911>) Remove unused variables (#930 <https://github.com/pharo-project/pharo-vm/pull/930>) Normalize variable (#897 <https://github.com/pharo-project/pharo-vm/pull/897>) Remove gcMode because getGCMode is used (#963 <https://github.com/pharo-project/pharo-vm/pull/963>) Remove ceShortCutTraceStore: and simulation guard users (#960 <https://github.com/pharo-project/pharo-vm/pull/960>) Simplify signal handler space calculation using POSIX SIGSTKSZ (#910 <https://github.com/pharo-project/pharo-vm/pull/910>) Documentation & Developer Experience README: Developer documentation is not a link (#637 <https://github.com/pharo-project/pharo-vm/pull/637>) Update README (#878 <https://github.com/pharo-project/pharo-vm/pull/878>) Add default values to --help parameters (#872 <https://github.com/pharo-project/pharo-vm/pull/872>) Fix typos in comments (#958 <https://github.com/pharo-project/pharo-vm/pull/958>) New Contributors @Mathilde411 <https://github.com/Mathilde411> @LucFabresse <https://github.com/LucFabresse> @ivojawer <https://github.com/ivojawer> @Gabriel-Darbord <https://github.com/Gabriel-Darbord> @iglosiggio <https://github.com/iglosiggio> @rolandbernard <https://github.com/rolandbernard> @fouziray <https://github.com/fouziray> @kilian-kier <https://github.com/kilian-kier> @NathanMalenge <https://github.com/NathanMalenge> @FedeLoch <https://github.com/FedeLoch> @Ducasse <https://github.com/Ducasse> @takano32 <https://github.com/takano32>
