Pharo VM Release - v10.0.0

T
tesonep@gmail.com
Wed, Mar 1, 2023 10:26 AM

Hello,
we have released a new version of the Pharo VM for Pharo 11. This VM is
accessible right now from Zero-Conf, updating it in the Pharo Launcher or
using the usual downloads (as described in pharo.org/download). OBS
packages are still in work and will come later.

This is the new VM that will be stable for Pharo 11 release, it is also
compatible with Pharo 10 images but it is not the default for Pharo 10.

It has a lot of changes and improvements, as it is the result of more than
a year and a half of improvements, clean-ups, and bug fixes.

Changelog v10.0.0

  • Slang (Smalltalk to C Translator)

  • Introducing a C AST to ease the generation of C Code

  • Having a Pretty Printer for C AST

  • Translation Tests

  • Fixing Translation Issues

  • Clear separation between Slang and VM code

  • Improving Cast generation

  • Clean Up:

  • Remove Old Bytecode Set

  • Remove Old Block Implementation

  • Simplification of the Primitives

  • Removing Unused / Old Code / Dead Code

  • Cleanup / Removal of Old Unused primitives

  • Removing Old FFI Implementation

  • Removing MT Experiment from the code base (Kept in own branch)

  • Fixing Compilation Warnings

  • Improving Type annotations to fix bugs in the translation / compilation

  • Removing Conditional Code on Old Configurations / Features

  • Renaming Concepts to be inline with Common terminology

  • Remove Newspeak, Multiple Bytecode and Old Memory Managers

  • Removing Unused Plugins

  • Tests

  • GNUification Tests

  • Tests for Math primitives including overflow and conversion testing.

  • Tests for comparison primitives (Equals / Not Equals / Less than / Less
    or Equals / Greater Than / Greater or Equals)

  • Testing Primitives for objects Pinned in Memory

  • Testing Math Primitives for Immediate Classes (SmallFloats /
    SmallIntegers)

  • Improving Simulation Infrastructure

  • Using Sista Bytecode in all Tests

  • Updating Unicorn version

  • Improving Machine Code emulation

  • Testing Image Read / Image Write

  • Using the same memory map in Tests and Execution

  • Testing Ephemerons

  • Become Primitives

  • Ephemeron

  • Fix for large ammounts

  • Make it available

  • Testing Signal Finalizations

  • Fixing Become Errors.

  • Fixing XRay Primitive

  • Single-Instruction Multiple-Data (SIMD) initial Support:

  • Initialization of new objects using SIMD (ARM64)

  • Adding Bytecode Extensions to support SIMD instructions

  • Adding Vector Registers

  • Vector Register bytecodes

  • Auto Localization of Interpreter loop variables and edge detection
    simplifying development and minimizing code

  • ImageReader / ImageWriter reification needed for Permanent Space.

  • Improving the Memory Map of the VM (Using constant positions)

  • Dependencies Improvements

Thanks a lot, and any doubt please let us know.
Cheers,

Pablo on behalf of the whole Pharo team

--
Pablo Tesone.
tesonep@gmail.com

Hello, we have released a new version of the Pharo VM for Pharo 11. This VM is accessible right now from Zero-Conf, updating it in the Pharo Launcher or using the usual downloads (as described in pharo.org/download). OBS packages are still in work and will come later. This is the new VM that will be stable for Pharo 11 release, it is also compatible with Pharo 10 images but it is not the default for Pharo 10. It has a lot of changes and improvements, as it is the result of more than a year and a half of improvements, clean-ups, and bug fixes. Changelog v10.0.0 - Slang (Smalltalk to C Translator) - Introducing a C AST to ease the generation of C Code - Having a Pretty Printer for C AST - Translation Tests - Fixing Translation Issues - Clear separation between Slang and VM code - Improving Cast generation - Clean Up: - Remove Old Bytecode Set - Remove Old Block Implementation - Simplification of the Primitives - Removing Unused / Old Code / Dead Code - Cleanup / Removal of Old Unused primitives - Removing Old FFI Implementation - Removing MT Experiment from the code base (Kept in own branch) - Fixing Compilation Warnings - Improving Type annotations to fix bugs in the translation / compilation - Removing Conditional Code on Old Configurations / Features - Renaming Concepts to be inline with Common terminology - Remove Newspeak, Multiple Bytecode and Old Memory Managers - Removing Unused Plugins - Tests - GNUification Tests - Tests for Math primitives including overflow and conversion testing. - Tests for comparison primitives (Equals / Not Equals / Less than / Less or Equals / Greater Than / Greater or Equals) - Testing Primitives for objects Pinned in Memory - Testing Math Primitives for Immediate Classes (SmallFloats / SmallIntegers) - Improving Simulation Infrastructure - Using Sista Bytecode in all Tests - Updating Unicorn version - Improving Machine Code emulation - Testing Image Read / Image Write - Using the same memory map in Tests and Execution - Testing Ephemerons - Become Primitives - Ephemeron - Fix for large ammounts - Make it available - Testing Signal Finalizations - Fixing Become Errors. - Fixing XRay Primitive - Single-Instruction Multiple-Data (SIMD) initial Support: - Initialization of new objects using SIMD (ARM64) - Adding Bytecode Extensions to support SIMD instructions - Adding Vector Registers - Vector Register bytecodes - Auto Localization of Interpreter loop variables and edge detection simplifying development and minimizing code - ImageReader / ImageWriter reification needed for Permanent Space. - Improving the Memory Map of the VM (Using constant positions) - Dependencies Improvements Thanks a lot, and any doubt please let us know. Cheers, Pablo on behalf of the whole Pharo team -- Pablo Tesone. tesonep@gmail.com
NH
Norbert Hartl
Wed, Mar 1, 2023 3:50 PM

This is yet again an impressive list of good things. Always appreciated are "Remov*" features :)

I'm especially interested in ephemerons and how it improves the weak structures in the image. Hope the image support that makes use of the vm features follows soon.

A wish would be to know a bit more about the permanent space news.

Great work as always. Thanks!

Norbert

Am 01.03.2023 um 11:26 schrieb tesonep@gmail.com:

Hello,
we have released a new version of the Pharo VM for Pharo 11. This VM is accessible right now from Zero-Conf, updating it in the Pharo Launcher or using the usual downloads (as described in pharo.org/download http://pharo.org/download). OBS packages are still in work and will come later.

This is the new VM that will be stable for Pharo 11 release, it is also compatible with Pharo 10 images but it is not the default for Pharo 10.

It has a lot of changes and improvements, as it is the result of more than a year and a half of improvements, clean-ups, and bug fixes.

Changelog v10.0.0

  • Slang (Smalltalk to C Translator)

  • Introducing a C AST to ease the generation of C Code

  • Having a Pretty Printer for C AST

  • Translation Tests

  • Fixing Translation Issues

  • Clear separation between Slang and VM code

  • Improving Cast generation

  • Clean Up:

  • Remove Old Bytecode Set

  • Remove Old Block Implementation

  • Simplification of the Primitives

  • Removing Unused / Old Code / Dead Code

  • Cleanup / Removal of Old Unused primitives

  • Removing Old FFI Implementation

  • Removing MT Experiment from the code base (Kept in own branch)

  • Fixing Compilation Warnings

  • Improving Type annotations to fix bugs in the translation / compilation

  • Removing Conditional Code on Old Configurations / Features

  • Renaming Concepts to be inline with Common terminology

  • Remove Newspeak, Multiple Bytecode and Old Memory Managers

  • Removing Unused Plugins

  • Tests

  • GNUification Tests

  • Tests for Math primitives including overflow and conversion testing.

  • Tests for comparison primitives (Equals / Not Equals / Less than / Less or Equals / Greater Than / Greater or Equals)

  • Testing Primitives for objects Pinned in Memory

  • Testing Math Primitives for Immediate Classes (SmallFloats / SmallIntegers)

  • Improving Simulation Infrastructure

  • Using Sista Bytecode in all Tests

  • Updating Unicorn version

  • Improving Machine Code emulation

  • Testing Image Read / Image Write

  • Using the same memory map in Tests and Execution

  • Testing Ephemerons

  • Become Primitives

  • Ephemeron

  • Fix for large ammounts

  • Make it available

  • Testing Signal Finalizations

  • Fixing Become Errors.

  • Fixing XRay Primitive

  • Single-Instruction Multiple-Data (SIMD) initial Support:

  • Initialization of new objects using SIMD (ARM64)

  • Adding Bytecode Extensions to support SIMD instructions

  • Adding Vector Registers

  • Vector Register bytecodes

  • Auto Localization of Interpreter loop variables and edge detection simplifying development and minimizing code

  • ImageReader / ImageWriter reification needed for Permanent Space.

  • Improving the Memory Map of the VM (Using constant positions)

  • Dependencies Improvements

Thanks a lot, and any doubt please let us know.
Cheers,

Pablo on behalf of the whole Pharo team

--
Pablo Tesone.
tesonep@gmail.com mailto:tesonep@gmail.com

This is yet again an impressive list of good things. Always appreciated are "Remov*" features :) I'm especially interested in ephemerons and how it improves the weak structures in the image. Hope the image support that makes use of the vm features follows soon. A wish would be to know a bit more about the permanent space news. Great work as always. Thanks! Norbert > Am 01.03.2023 um 11:26 schrieb tesonep@gmail.com: > > Hello, > we have released a new version of the Pharo VM for Pharo 11. This VM is accessible right now from Zero-Conf, updating it in the Pharo Launcher or using the usual downloads (as described in pharo.org/download <http://pharo.org/download>). OBS packages are still in work and will come later. > > This is the new VM that will be stable for Pharo 11 release, it is also compatible with Pharo 10 images but it is not the default for Pharo 10. > > It has a lot of changes and improvements, as it is the result of more than a year and a half of improvements, clean-ups, and bug fixes. > > Changelog v10.0.0 > > - Slang (Smalltalk to C Translator) > - Introducing a C AST to ease the generation of C Code > - Having a Pretty Printer for C AST > - Translation Tests > - Fixing Translation Issues > - Clear separation between Slang and VM code > - Improving Cast generation > > - Clean Up: > - Remove Old Bytecode Set > - Remove Old Block Implementation > - Simplification of the Primitives > - Removing Unused / Old Code / Dead Code > - Cleanup / Removal of Old Unused primitives > - Removing Old FFI Implementation > - Removing MT Experiment from the code base (Kept in own branch) > - Fixing Compilation Warnings > - Improving Type annotations to fix bugs in the translation / compilation > - Removing Conditional Code on Old Configurations / Features > - Renaming Concepts to be inline with Common terminology > - Remove Newspeak, Multiple Bytecode and Old Memory Managers > - Removing Unused Plugins > > - Tests > - GNUification Tests > - Tests for Math primitives including overflow and conversion testing. > - Tests for comparison primitives (Equals / Not Equals / Less than / Less or Equals / Greater Than / Greater or Equals) > - Testing Primitives for objects Pinned in Memory > - Testing Math Primitives for Immediate Classes (SmallFloats / SmallIntegers) > - Improving Simulation Infrastructure > - Using Sista Bytecode in all Tests > - Updating Unicorn version > - Improving Machine Code emulation > - Testing Image Read / Image Write > - Using the same memory map in Tests and Execution > - Testing Ephemerons > - Become Primitives > > - Ephemeron > - Fix for large ammounts > - Make it available > - Testing Signal Finalizations > > - Fixing Become Errors. > > - Fixing XRay Primitive > > - Single-Instruction Multiple-Data (SIMD) initial Support: > - Initialization of new objects using SIMD (ARM64) > - Adding Bytecode Extensions to support SIMD instructions > - Adding Vector Registers > - Vector Register bytecodes > > - Auto Localization of Interpreter loop variables and edge detection simplifying development and minimizing code > > - ImageReader / ImageWriter reification needed for Permanent Space. > > - Improving the Memory Map of the VM (Using constant positions) > > - Dependencies Improvements > > Thanks a lot, and any doubt please let us know. > Cheers, > > Pablo on behalf of the whole Pharo team > > -- > Pablo Tesone. > tesonep@gmail.com <mailto:tesonep@gmail.com>
GC
Gabriel Cotelli
Wed, Mar 1, 2023 9:22 PM

Congratulations on the new VM release!

Are there some reasons to skip this version as the default for Pharo 10
images? Or is it just not worth the effort, given the close release date of
Pharo 11?
I need to update our Pharo docker images and I want to understand if it's
better to wait for the Pharo 11 release.

On Wed, Mar 1, 2023 at 7:26 AM tesonep@gmail.com tesonep@gmail.com wrote:

Hello,
we have released a new version of the Pharo VM for Pharo 11. This VM is
accessible right now from Zero-Conf, updating it in the Pharo Launcher or
using the usual downloads (as described in pharo.org/download). OBS
packages are still in work and will come later.

This is the new VM that will be stable for Pharo 11 release, it is also
compatible with Pharo 10 images but it is not the default for Pharo 10.

It has a lot of changes and improvements, as it is the result of more than
a year and a half of improvements, clean-ups, and bug fixes.

Changelog v10.0.0

  • Slang (Smalltalk to C Translator)

  • Introducing a C AST to ease the generation of C Code

  • Having a Pretty Printer for C AST

  • Translation Tests

  • Fixing Translation Issues

  • Clear separation between Slang and VM code

  • Improving Cast generation

  • Clean Up:

  • Remove Old Bytecode Set

  • Remove Old Block Implementation

  • Simplification of the Primitives

  • Removing Unused / Old Code / Dead Code

  • Cleanup / Removal of Old Unused primitives

  • Removing Old FFI Implementation

  • Removing MT Experiment from the code base (Kept in own branch)

  • Fixing Compilation Warnings

  • Improving Type annotations to fix bugs in the translation / compilation

  • Removing Conditional Code on Old Configurations / Features

  • Renaming Concepts to be inline with Common terminology

  • Remove Newspeak, Multiple Bytecode and Old Memory Managers

  • Removing Unused Plugins

  • Tests

  • GNUification Tests

  • Tests for Math primitives including overflow and conversion testing.

  • Tests for comparison primitives (Equals / Not Equals / Less than / Less
    or Equals / Greater Than / Greater or Equals)

  • Testing Primitives for objects Pinned in Memory

  • Testing Math Primitives for Immediate Classes (SmallFloats /
    SmallIntegers)

  • Improving Simulation Infrastructure

  • Using Sista Bytecode in all Tests

  • Updating Unicorn version

  • Improving Machine Code emulation

  • Testing Image Read / Image Write

  • Using the same memory map in Tests and Execution

  • Testing Ephemerons

  • Become Primitives

  • Ephemeron

  • Fix for large ammounts

  • Make it available

  • Testing Signal Finalizations

  • Fixing Become Errors.

  • Fixing XRay Primitive

  • Single-Instruction Multiple-Data (SIMD) initial Support:

  • Initialization of new objects using SIMD (ARM64)

  • Adding Bytecode Extensions to support SIMD instructions

  • Adding Vector Registers

  • Vector Register bytecodes

  • Auto Localization of Interpreter loop variables and edge detection
    simplifying development and minimizing code

  • ImageReader / ImageWriter reification needed for Permanent Space.

  • Improving the Memory Map of the VM (Using constant positions)

  • Dependencies Improvements

Thanks a lot, and any doubt please let us know.
Cheers,

Pablo on behalf of the whole Pharo team

--
Pablo Tesone.
tesonep@gmail.com

Congratulations on the new VM release! Are there some reasons to skip this version as the default for Pharo 10 images? Or is it just not worth the effort, given the close release date of Pharo 11? I need to update our Pharo docker images and I want to understand if it's better to wait for the Pharo 11 release. On Wed, Mar 1, 2023 at 7:26 AM tesonep@gmail.com <tesonep@gmail.com> wrote: > Hello, > we have released a new version of the Pharo VM for Pharo 11. This VM is > accessible right now from Zero-Conf, updating it in the Pharo Launcher or > using the usual downloads (as described in pharo.org/download). OBS > packages are still in work and will come later. > > This is the new VM that will be stable for Pharo 11 release, it is also > compatible with Pharo 10 images but it is not the default for Pharo 10. > > It has a lot of changes and improvements, as it is the result of more than > a year and a half of improvements, clean-ups, and bug fixes. > > Changelog v10.0.0 > > - Slang (Smalltalk to C Translator) > - Introducing a C AST to ease the generation of C Code > - Having a Pretty Printer for C AST > - Translation Tests > - Fixing Translation Issues > - Clear separation between Slang and VM code > - Improving Cast generation > > - Clean Up: > - Remove Old Bytecode Set > - Remove Old Block Implementation > - Simplification of the Primitives > - Removing Unused / Old Code / Dead Code > - Cleanup / Removal of Old Unused primitives > - Removing Old FFI Implementation > - Removing MT Experiment from the code base (Kept in own branch) > - Fixing Compilation Warnings > - Improving Type annotations to fix bugs in the translation / compilation > - Removing Conditional Code on Old Configurations / Features > - Renaming Concepts to be inline with Common terminology > - Remove Newspeak, Multiple Bytecode and Old Memory Managers > - Removing Unused Plugins > > - Tests > - GNUification Tests > - Tests for Math primitives including overflow and conversion testing. > - Tests for comparison primitives (Equals / Not Equals / Less than / Less > or Equals / Greater Than / Greater or Equals) > - Testing Primitives for objects Pinned in Memory > - Testing Math Primitives for Immediate Classes (SmallFloats / > SmallIntegers) > - Improving Simulation Infrastructure > - Using Sista Bytecode in all Tests > - Updating Unicorn version > - Improving Machine Code emulation > - Testing Image Read / Image Write > - Using the same memory map in Tests and Execution > - Testing Ephemerons > - Become Primitives > > - Ephemeron > - Fix for large ammounts > - Make it available > - Testing Signal Finalizations > > - Fixing Become Errors. > > - Fixing XRay Primitive > > - Single-Instruction Multiple-Data (SIMD) initial Support: > - Initialization of new objects using SIMD (ARM64) > - Adding Bytecode Extensions to support SIMD instructions > - Adding Vector Registers > - Vector Register bytecodes > > - Auto Localization of Interpreter loop variables and edge detection > simplifying development and minimizing code > > - ImageReader / ImageWriter reification needed for Permanent Space. > > - Improving the Memory Map of the VM (Using constant positions) > > - Dependencies Improvements > > Thanks a lot, and any doubt please let us know. > Cheers, > > Pablo on behalf of the whole Pharo team > > -- > Pablo Tesone. > tesonep@gmail.com >
S
sean@clipperadams.com
Mon, Mar 13, 2023 7:32 PM

Norbert Hartl wrote:

I'm especially interested in ephemerons and how it improves the weak structures in the image. Hope the image support that makes use of the vm features follows soon.

+1. This has seemed to be just out of our grasp for so long. Are we “there yet” or close to completion?

Norbert Hartl wrote: > I'm especially interested in ephemerons and how it improves the weak structures in the image. Hope the image support that makes use of the vm features follows soon. \+1. This has seemed to be just out of our grasp for so long. Are we “there yet” or close to completion?
GP
Guillermo Polito
Mon, Mar 13, 2023 7:46 PM

PR has been green for two weeks waiting for a review

https://github.com/pharo-project/pharo/pull/12042

And the Phep was updated taking (almost) all comments into account

https://github.com/pharo-project/pheps/pull/19

:)

El 13 mar. 2023, a las 20:32, sean@clipperadams.com escribió:

Norbert Hartl wrote:

I'm especially interested in ephemerons and how it improves the weak structures in the image. Hope the image support that makes use of the vm features follows soon.

+1. This has seemed to be just out of our grasp for so long. Are we “there yet” or close to completion?

PR has been green for two weeks waiting for a review https://github.com/pharo-project/pharo/pull/12042 And the Phep was updated taking (almost) all comments into account https://github.com/pharo-project/pheps/pull/19 :) > El 13 mar. 2023, a las 20:32, sean@clipperadams.com escribió: > > Norbert Hartl wrote: > > I'm especially interested in ephemerons and how it improves the weak structures in the image. Hope the image support that makes use of the vm features follows soon. > > +1. This has seemed to be just out of our grasp for so long. Are we “there yet” or close to completion? >