Re: [Pharo-dev] [ANN] Pharo Headless - Beta (Actually what is between Alpha and Beta)

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

Re: [Pharo-dev] [ANN] Pharo Headless - Beta (Actually what is between Alpha and Beta)

NorbertHartl
This way cooler than expected. Lot of stuff already done. Great!

Norbert

> Am 08.08.2019 um 09:53 schrieb "[hidden email]" <[hidden email]>:
>
> TL;DR;
> ======
>
> For the anxious, you can get real headless vm and image from zero-conf.
>
> $ wget get.pharo.org/64/80+vmHeadlessLatest | bash
>
> Zero conf scripts remain unchanged for users.
>
> However, if you are launching the VM by hand from the executable
> instead of the launcher scripts (pharo and pharo-ui) as in
>
> $ ./pharoexecutable Pharo.image
>
> the image will launch in headless mode and will not open a window.
> To launch it in headfull, you can use the --interactive argument after
> the image, which will make the image open a window using SDL2.
>
> $ ./pharoexecutable Pharo.image --interactive
>
> Long version
> ============
>
> Hi, this mail is the happy intermediate result of the work that us,
> the Pharo Consortium Team, has been doing in the last couple of
> months.
> Our main objective is to have a real headless implementation of Pharo
> where all the responsibility to open or not a World window (or other)
> is handled by the image.
> For doing so we have done a series of modifications in the image and
> the VM side.
> We consider this is the path that Pharo 8 and following versions
> should follow, as it will severely improve server-side and command
> line Pharo and in building custom desktop applications.
>
> These modifications are available only in 64-bits machines (Windows,
> OSX, and Linux).
> ARM32 and 64bits headless is in the roadmap, but it is delayed because
> we have prioritized our three major platforms for this first couple of
> months.
>
> All this work is based in Opensmalltalk-VM and Ronnie's initial work
> on headless.
> We are really grateful to all the contributors in the history of this
> nice product.
> To achieve a real headless VM we have brought modifications in the
> source tree because most of the platform code to open and manipulate
> windows is not required anymore.
> Instead, we use the SDL2 library that implements a nice layer on top
> of the OS and allows us to manage on the image side through FFI.
>
> So this mail is now an open call for (beta?)testing.
> The sources of the current VM we are building are in the headless branch in
>  https://github.com/pharo-project/opensmalltalk-vm
> And we have set up a CI that is both building and testing the VM in
>  https://ci.inria.fr/pharo-ci-jenkins2/job/pharo-vm/job/headless/
>
> For the future we have a lot of ideas, that will wait for another long
> email or a beer-talk @ESUG.
> We want to hear your ideas!!
>
> Image-Side Improvements
> =======================
>
> - The image handles the creation or not of the main world window.
> - We incorporated the idea of World renderer, where different backends
> are used to render the world.
> - We have 3 backends: VM support (compatibility with non-headless
> VMs), and OSWindow with two backends: SDL and GTK3+.
> - The modifications in the image are fully backward compatible with
> the non-headless VM and are pushed since weeks in the latest 8.0
> image.
> - We move the handling of events to the image side when using SDL and
> GTK3+, opening the door to a richer set of events and finer-grained
> control over them.
> - SDL and GTK versions are implemented using FFI calls.
>
> VM-Side Improvements
> ====================
>
> - VMMaker code migrated to Tonel thanks to Feenk and included in the
> repository of the VM.
> - Making VMMaker execute in Pharo 7 and 8.
> - Removing GPL code from the VM repository (GDB).
>
> - Slowly adding new tests for the JIT / Slang and VMGeneration.
> - Restructuring of the source code.
> - A new simpler CMake build.
> - Generate VM code from Slang on each build.
> - A CI process to validate (including the run of the tests in Pharo
> and the ones adding to the VM).
> - Simplification of the codebase.
>
> - Maximize the reuse of code between the platforms (preferring the
> standard versions over the platform-specific).
> - Cleaning up duplicated code.
> - All the plugins are now external plugins.
> - The VM is now a dynamic library. This is a first step towards
> embedding Pharo into other applications.
> - The main executable is a thin frontend (you can change it or
> implement your own).
>
> - Removing unused plugins.
> - Improved crash dump. Especially the crash dump works now in Windows 64bits.
> - Dummy implementation of Security plugin (it is going away.... eventually).
> - Cleanup of SSL, UUID, and Socket plugin.
>
> - Cleanup of conditional code (Still to improve).
> - Improving the types used in the functions (we have to be neat to be
> multiplatform/multi-arch).
> - Improving the lookup of modules
> - Improving the logging of the VM
> - Improving the handling of VM arguments
>
>
> Thanks a lot for reading so long!!
> We hope you enjoy the VM and please tell us all the problems you find!!
>
> Pablo, Guille, and Esteban
>