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