Excellent News. My Rasps just arrived in time so I will try. S
> On 11 Jan 2021, at 18:21, teso...@gmail.com wrote: > > In the last months, we have been working on the implementation of a > MIT-licenced ARMv8 Just-In-Time compiler for Pharo VM. > We would like to announce that a beta first version of our JIT backend is > available for beta-testing for ARM Linux and Windows machines. > > We are very happy with the advance in this subject, as we have not only > implemented a new backend but we have added more than 2500 tests of the JIT, > the primitives, code generation, plugins, and the VM in general. Also, we are > generating a lot of documentation and improving the process to really > democratize the development of the VM. > > After all the text there are details on how to obtain the versions for > testing it. > > The following sections give more details of the current status, and the > following steps including Apple Silicon, Windows, and Linux ARM64. > > Current Status > > Our objective is to have a running JIT for the new aarch64 architecture (ARM > 64bits). This task includes not only a new backend for the JIT compiler but > also adding support for external libraries, dependencies, and the build > process. This means having a working VM with comparable features as the one > existing in Intel X64. We are targeting all the major operating systems > running on this platform (Linux, OSX, Windows). Each of them presents > different restrictions and conditions. > > After expending some time this is the current status: > > - We implemented a full backend for the JIT compiler targeting aarch64. > - All the image side was adapted to run on it, tested on Ubuntu ARM 64 bits. > - We added support for: Iceberg (Libgit) / Athens (Cairo) / SDL / GTK > - We implemented a LibFFI based FFI backend as the default one for Pharo 9 in > aarch64 (next to come in all platforms). This opens the door to easily port > the features to other platforms and OSes. This new implementation does not > have an impact on performance as it has comparable results with the old > implementation. Much more, this implementation opens also the door to have > runners in different threads than the VM thread (non-blocking FFI). > > Status By Platform > > Linux > > We have a working version of the VM. It is using the same code-base and build > process for both architectures (Intel X64 / ARM aarch64). A version can be > compiled and executed in all the platforms. Also, we have integrated the > build using Open Build Services (OBS) to generate packages for all the > mainstream distributions. > Currently, the version for Debian-like systems (Debian, Ubuntu, Raspberry pi > OS, etc) is available and ready to beta test; the details for installing them > are in the end of the mail. Versions for ARCH-based and RPM-based systems are > in the working (If you want to get them or to test them please contact us, so > we can pass on the detail of how to get them). > > Windows > > We have extended the build process to fully support Microsoft Visual Studio > compilers and more flexibility to select the targets, also we are building it > to run in Windows ARM. To correctly run the VM in Windows it is needed to > build all dependencies for aarch64. > In this path, we have a working Intel x64 version with Cygwin and MSVC, and a > MSVC version for aarch64 (ARM64). > The ARM64 version is available to be beta-testing on machines with this > architecture. > The Details are at the end of the mail. > > OSX > > Our third target is to have a working version for the newest Apple silicon. > We are acquiring the corresponding hardware to test and to address the > differences in the API exposed to JIT applications. As it is the case of the > Windows VM, there is no need to change the machine code generation backend, > as it is the same that has been implemented for Linux; but to compile > external libraries and particularities of the new OS version. > > Thanks for your support. In the meantime, we will continue giving you news > about the current state and where are we going. > > Beta Testing - Linux > > For Debian like distributions, the instructions are the following. > > Installation > > 1) Add a new APT source, usually modifying a file in > /etc/apt/sources.list.d/, for example, we can add the pharo.list file with > the following content. Also, we need to register the key of the repository. > These steps should be done only once. We are giving a little script for > modifying the configuration. It is only needed to execute line by line. > > For Raspbian: > > echo "deb > https://download.opensuse.org/repositories/devel:/languages:/pharo:/latest/Raspbian_10/ > > <https://download.opensuse.org/repositories/devel:/languages:/pharo:/latest/Raspbian_10/> > ./" >> pharo.list > > sudo cp pharo.list /etc/apt/sources.list.d/pharo.list > > wget > https://download.opensuse.org/repositories/devel:/languages:/pharo:/latest/Raspbian_10/Release.key > > <https://download.opensuse.org/repositories/devel:/languages:/pharo:/latest/Raspbian_10/Release.key> > > sudo apt-key add Release.key > > > For Ubuntu: > > echo "deb > https://download.opensuse.org/repositories/devel:/languages:/pharo:/latest/xUbuntu_20.04/ > > <https://download.opensuse.org/repositories/devel:/languages:/pharo:/latest/xUbuntu_20.04/> > ./" >> pharo.list > > sudo cp pharo.list /etc/apt/sources.list.d/pharo.list > > wget > https://download.opensuse.org/repositories/devel:/languages:/pharo:/latest/xUbuntu_20.04/Release.key > > <https://download.opensuse.org/repositories/devel:/languages:/pharo:/latest/xUbuntu_20.04/Release.key> > > sudo apt-key add Release.key > > 2) Update the repository to take the current versions > > sudo apt update > > 3) Install Pharo9 VM > > sudo apt install pharo9 libgit2 > > > 4) In case of using the interactive version (with UI) check if the packages > libsdl2-2.0-0 and libcairo2 are installed (Usually they are installed, but > depends what it is installed in the system). These are not needed for the > headless execution or if it is not used by the image. > > > Getting the images: > > The images can be downloaded using zero-conf, the latest image is ready to be > used. It can be done with: > > wget -O - get.pharo.org/64/90 <http://get.pharo.org/64/90> | bash > > > Running Pharo > > pharo Pharo.image eval 42 factorial > > Or interactive > > pharo Pharo.image --interactive > > Windows Testing > > A version of the VM is ready to be tested in Windows ARM64. A zip containing > the VM is available in: > > https://files.pharo.org/vm/pharo-spur64/Windows-ARM64/PharoVM-9.0.0-4df0e562a-Windows-ARM64-stockReplacement-bin.zip > > <https://files.pharo.org/vm/pharo-spur64/Windows-ARM64/PharoVM-9.0.0-4df0e562a-Windows-ARM64-stockReplacement-bin.zip> > > As in Linux, the latest image is compatible with this version of the VM. > > Error reporting > > In case of encountering errors please report them attaching: > > - crash.dmp file and PharoDebug.log > - Version of the image using (in case of any community project loaded, the > names of those) > > - Complete machine version (the result of executing uname -a) > - Complete information about the Linux distribution > > - Steps for reproducing the error (if needed) > > Thanks for the effort!! > > -- > Pablo Tesone. > teso...@gmail.com <mailto:teso...@gmail.com> -------------------------------------------- Stéphane Ducasse http://stephane.ducasse.free.fr / http://www.pharo.org 03 59 35 87 52 Assistant: Aurore Dalle FAX 03 59 57 78 50 TEL 03 59 35 86 16 S. Ducasse - Inria 40, avenue Halley, Parc Scientifique de la Haute Borne, Bât.A, Park Plaza Villeneuve d'Ascq 59650 France