[ANN] Pharo Headless - Beta (Actually what is between Alpha and Beta)
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
That is very impressive, thank you all !
On 8 Aug 2019, at 09:53, tesonep@gmail.com wrote:
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
This way cooler than expected. Lot of stuff already done. Great! Norbert
Am 08.08.2019 um 09:53 schrieb "tesonep@gmail.com" <tesonep@gmail.com>:
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
Excellent news! I should say that for GT we are currently using the minheadlessVM (Ronieâs work) out of the opensmalltalk-vm repo (https://bintray.com/opensmalltalk/vm/cog) and it works remarkably well. We started to play with your minheadlessVM. So far it looks like there are differences, although I am sure they are not large. So, what is the difference between the minheadlessVM built by you versus the one from opensmalltalk-vm? Cheers, Doru
On Aug 8, 2019, at 9:53 AM, tesonep@gmail.com wrote:
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
-- feenk.com "Being happy is a matter of choice."
On 11 Aug 2019, at 13:19, Tudor Girba <tudor@tudorgirba.com> wrote:
Excellent news!
I should say that for GT we are currently using the minheadlessVM (Ronieâs work) out of the opensmalltalk-vm repo (https://bintray.com/opensmalltalk/vm/cog) and it works remarkably well.
We started to play with your minheadlessVM. So far it looks like there are differences, although I am sure they are not large.
like what?
So, what is the difference between the minheadlessVM built by you versus the one from opensmalltalk-vm?
Cheers, Doru
On Aug 8, 2019, at 9:53 AM, tesonep@gmail.com wrote:
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
-- feenk.com
"Being happy is a matter of choice."
Hi,
On Aug 11, 2019, at 5:29 PM, ducasse <stepharo@netcourrier.com> wrote:
On 11 Aug 2019, at 13:19, Tudor Girba <tudor@tudorgirba.com> wrote:
Excellent news!
I should say that for GT we are currently using the minheadlessVM (Ronieâs work) out of the opensmalltalk-vm repo (https://bintray.com/opensmalltalk/vm/cog) and it works remarkably well.
We started to play with your minheadlessVM. So far it looks like there are differences, although I am sure they are not large.
like what?
I do not know yet, but running GT in headless opens the window with the one from opensmalltalk-vm, but not with the new one. We did not yet look into details, but we will. Cheers, Doru
So, what is the difference between the minheadlessVM built by you versus the one from opensmalltalk-vm?
Cheers, Doru
On Aug 8, 2019, at 9:53 AM, tesonep@gmail.com wrote:
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
-- feenk.com
"Being happy is a matter of choice."
-- feenk.com "Speaking louder won't make the point worthier."
Hi Doru, can you give us more insight of the errors? Because there should not be changes in the behavior of the VM. Maybe there are issues, we have used the Pharo tests as a guarantee and we are laking some tests. Cheers, Pablo. On Sun, Aug 11, 2019 at 9:04 PM Tudor Girba <tudor@tudorgirba.com> wrote:
Hi,
On Aug 11, 2019, at 5:29 PM, ducasse <stepharo@netcourrier.com> wrote:
On 11 Aug 2019, at 13:19, Tudor Girba <tudor@tudorgirba.com> wrote:
Excellent news!
I should say that for GT we are currently using the minheadlessVM (Ronieâs work) out of the opensmalltalk-vm repo (https://bintray.com/opensmalltalk/vm/cog) and it works remarkably well.
We started to play with your minheadlessVM. So far it looks like there are differences, although I am sure they are not large.
like what?
I do not know yet, but running GT in headless opens the window with the one from opensmalltalk-vm, but not with the new one. We did not yet look into details, but we will.
Cheers, Doru
So, what is the difference between the minheadlessVM built by you versus the one from opensmalltalk-vm?
Cheers, Doru
On Aug 8, 2019, at 9:53 AM, tesonep@gmail.com wrote:
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
-- feenk.com
"Being happy is a matter of choice."
-- feenk.com
"Speaking louder won't make the point worthier."
-- Pablo Tesone. tesonep@gmail.com
Hi, Yes. We will be testing these days and we will come back with more details. Two more questions: - Is minheadlessVM now integrated in the regular VM binary or are the two different artifacts? - Also are the platforms from https://github.com/pharo-project/opensmalltalk-vm/tree/pharo/platforms representative for minheadlessVM? Cheers, Doru
On Aug 12, 2019, at 9:11 AM, tesonep@gmail.com wrote:
Hi Doru, can you give us more insight of the errors? Because there should not be changes in the behavior of the VM. Maybe there are issues, we have used the Pharo tests as a guarantee and we are laking some tests.
Cheers, Pablo.
On Sun, Aug 11, 2019 at 9:04 PM Tudor Girba <tudor@tudorgirba.com> wrote:
Hi,
On Aug 11, 2019, at 5:29 PM, ducasse <stepharo@netcourrier.com> wrote:
On 11 Aug 2019, at 13:19, Tudor Girba <tudor@tudorgirba.com> wrote:
Excellent news!
I should say that for GT we are currently using the minheadlessVM (Ronieâs work) out of the opensmalltalk-vm repo (https://bintray.com/opensmalltalk/vm/cog) and it works remarkably well.
We started to play with your minheadlessVM. So far it looks like there are differences, although I am sure they are not large.
like what?
I do not know yet, but running GT in headless opens the window with the one from opensmalltalk-vm, but not with the new one. We did not yet look into details, but we will.
Cheers, Doru
So, what is the difference between the minheadlessVM built by you versus the one from opensmalltalk-vm?
Cheers, Doru
On Aug 8, 2019, at 9:53 AM, tesonep@gmail.com wrote:
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
-- feenk.com
"Being happy is a matter of choice."
-- feenk.com
"Speaking louder won't make the point worthier."
-- Pablo Tesone. tesonep@gmail.com
-- feenk.com "What is more important: To be happy, or to make happy?"
Hi, The executables are not the same. We have 2 different now: the Stock VM (that is downloaded by the launcher, and it is the default download in Zero-conf), and the headless VM (this is downloaded by zero-conf when using vmLatestHeadless). Those platforms are not representative we currently have: OSX, Windows, and Linux all 64bits. We are working in ARM 32bits. In the near future, I will work on validating different flavors of Unix, but again It depends on the roadmap, and they are not there now. If someone requires some other platform we can talk to see how it can fit in the roadmap. Cheers, Pablo On Mon, Aug 12, 2019 at 10:03 AM Tudor Girba <tudor@tudorgirba.com> wrote:
Hi,
Yes. We will be testing these days and we will come back with more details.
Two more questions: - Is minheadlessVM now integrated in the regular VM binary or are the two different artifacts? - Also are the platforms from https://github.com/pharo-project/opensmalltalk-vm/tree/pharo/platforms representative for minheadlessVM?
Cheers, Doru
On Aug 12, 2019, at 9:11 AM, tesonep@gmail.com wrote:
Hi Doru, can you give us more insight of the errors? Because there should not be changes in the behavior of the VM. Maybe there are issues, we have used the Pharo tests as a guarantee and we are laking some tests.
Cheers, Pablo.
On Sun, Aug 11, 2019 at 9:04 PM Tudor Girba <tudor@tudorgirba.com> wrote:
Hi,
On Aug 11, 2019, at 5:29 PM, ducasse <stepharo@netcourrier.com> wrote:
On 11 Aug 2019, at 13:19, Tudor Girba <tudor@tudorgirba.com> wrote:
Excellent news!
I should say that for GT we are currently using the minheadlessVM (Ronieâs work) out of the opensmalltalk-vm repo (https://bintray.com/opensmalltalk/vm/cog) and it works remarkably well.
We started to play with your minheadlessVM. So far it looks like there are differences, although I am sure they are not large.
like what?
I do not know yet, but running GT in headless opens the window with the one from opensmalltalk-vm, but not with the new one. We did not yet look into details, but we will.
Cheers, Doru
So, what is the difference between the minheadlessVM built by you versus the one from opensmalltalk-vm?
Cheers, Doru
On Aug 8, 2019, at 9:53 AM, tesonep@gmail.com wrote:
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
-- feenk.com
"Being happy is a matter of choice."
-- feenk.com
"Speaking louder won't make the point worthier."
-- Pablo Tesone. tesonep@gmail.com
-- feenk.com
"What is more important: To be happy, or to make happy?"
-- Pablo Tesone. tesonep@gmail.com
Hi, Thanks for the answers! Could you point me to where the platforms for minheadless are (which repository should we look at)? Also, to the build scripts that are used to build it? Cheers, Doru
On Aug 12, 2019, at 10:56 AM, tesonep@gmail.com wrote:
Hi, The executables are not the same. We have 2 different now: the Stock VM (that is downloaded by the launcher, and it is the default download in Zero-conf), and the headless VM (this is downloaded by zero-conf when using vmLatestHeadless).
Those platforms are not representative we currently have: OSX, Windows, and Linux all 64bits. We are working in ARM 32bits. In the near future, I will work on validating different flavors of Unix, but again It depends on the roadmap, and they are not there now.
If someone requires some other platform we can talk to see how it can fit in the roadmap.
Cheers, Pablo
On Mon, Aug 12, 2019 at 10:03 AM Tudor Girba <tudor@tudorgirba.com> wrote:
Hi,
Yes. We will be testing these days and we will come back with more details.
Two more questions: - Is minheadlessVM now integrated in the regular VM binary or are the two different artifacts? - Also are the platforms from https://github.com/pharo-project/opensmalltalk-vm/tree/pharo/platforms representative for minheadlessVM?
Cheers, Doru
On Aug 12, 2019, at 9:11 AM, tesonep@gmail.com wrote:
Hi Doru, can you give us more insight of the errors? Because there should not be changes in the behavior of the VM. Maybe there are issues, we have used the Pharo tests as a guarantee and we are laking some tests.
Cheers, Pablo.
On Sun, Aug 11, 2019 at 9:04 PM Tudor Girba <tudor@tudorgirba.com> wrote:
Hi,
On Aug 11, 2019, at 5:29 PM, ducasse <stepharo@netcourrier.com> wrote:
On 11 Aug 2019, at 13:19, Tudor Girba <tudor@tudorgirba.com> wrote:
Excellent news!
I should say that for GT we are currently using the minheadlessVM (Ronieâs work) out of the opensmalltalk-vm repo (https://bintray.com/opensmalltalk/vm/cog) and it works remarkably well.
We started to play with your minheadlessVM. So far it looks like there are differences, although I am sure they are not large.
like what?
I do not know yet, but running GT in headless opens the window with the one from opensmalltalk-vm, but not with the new one. We did not yet look into details, but we will.
Cheers, Doru
So, what is the difference between the minheadlessVM built by you versus the one from opensmalltalk-vm?
Cheers, Doru
On Aug 8, 2019, at 9:53 AM, tesonep@gmail.com wrote:
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
-- feenk.com
"Being happy is a matter of choice."
-- feenk.com
"Speaking louder won't make the point worthier."
-- Pablo Tesone. tesonep@gmail.com
-- feenk.com
"What is more important: To be happy, or to make happy?"
-- Pablo Tesone. tesonep@gmail.com
-- feenk.com "The coherence of a trip is given by the clearness of the goal."
Hi, the repos is https://github.com/pharo-project/opensmalltalk-vm in the headless branch Cheers, Pablo On Mon, Aug 12, 2019 at 11:07 AM Tudor Girba <tudor@tudorgirba.com> wrote:
Hi,
Thanks for the answers!
Could you point me to where the platforms for minheadless are (which repository should we look at)? Also, to the build scripts that are used to build it?
Cheers, Doru
On Aug 12, 2019, at 10:56 AM, tesonep@gmail.com wrote:
Hi, The executables are not the same. We have 2 different now: the Stock VM (that is downloaded by the launcher, and it is the default download in Zero-conf), and the headless VM (this is downloaded by zero-conf when using vmLatestHeadless).
Those platforms are not representative we currently have: OSX, Windows, and Linux all 64bits. We are working in ARM 32bits. In the near future, I will work on validating different flavors of Unix, but again It depends on the roadmap, and they are not there now.
If someone requires some other platform we can talk to see how it can fit in the roadmap.
Cheers, Pablo
On Mon, Aug 12, 2019 at 10:03 AM Tudor Girba <tudor@tudorgirba.com> wrote:
Hi,
Yes. We will be testing these days and we will come back with more details.
Two more questions: - Is minheadlessVM now integrated in the regular VM binary or are the two different artifacts? - Also are the platforms from https://github.com/pharo-project/opensmalltalk-vm/tree/pharo/platforms representative for minheadlessVM?
Cheers, Doru
On Aug 12, 2019, at 9:11 AM, tesonep@gmail.com wrote:
Hi Doru, can you give us more insight of the errors? Because there should not be changes in the behavior of the VM. Maybe there are issues, we have used the Pharo tests as a guarantee and we are laking some tests.
Cheers, Pablo.
On Sun, Aug 11, 2019 at 9:04 PM Tudor Girba <tudor@tudorgirba.com> wrote:
Hi,
On Aug 11, 2019, at 5:29 PM, ducasse <stepharo@netcourrier.com> wrote:
On 11 Aug 2019, at 13:19, Tudor Girba <tudor@tudorgirba.com> wrote:
Excellent news!
I should say that for GT we are currently using the minheadlessVM (Ronieâs work) out of the opensmalltalk-vm repo (https://bintray.com/opensmalltalk/vm/cog) and it works remarkably well.
We started to play with your minheadlessVM. So far it looks like there are differences, although I am sure they are not large.
like what?
I do not know yet, but running GT in headless opens the window with the one from opensmalltalk-vm, but not with the new one. We did not yet look into details, but we will.
Cheers, Doru
So, what is the difference between the minheadlessVM built by you versus the one from opensmalltalk-vm?
Cheers, Doru
On Aug 8, 2019, at 9:53 AM, tesonep@gmail.com wrote:
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
-- feenk.com
"Being happy is a matter of choice."
-- feenk.com
"Speaking louder won't make the point worthier."
-- Pablo Tesone. tesonep@gmail.com
-- feenk.com
"What is more important: To be happy, or to make happy?"
-- Pablo Tesone. tesonep@gmail.com
-- feenk.com
"The coherence of a trip is given by the clearness of the goal."
-- Pablo Tesone. tesonep@gmail.com
On Mon, 12 Aug 2019 at 17:59, tesonep@gmail.com <tesonep@gmail.com> wrote:
Hi, the repos is https://github.com/pharo-project/opensmalltalk-vm in the headless branch
btw, to go directly to that branch... https://github.com/pharo-project/opensmalltalk-vm/tree/headless I'm really glad to see smalltalksrc on github for its accessibility. The concern then is synchronization with the original Monticello repo. Could a branch "headless-tracking-vmmaker" be created as a pure-mirror updated by a daily CI job so Github Compare View can be used to easily see differences ( https://github.blog/2010-03-01-introducing-github-compare-view/) This would make it easier for anyone to experiment locally merging in vmmaker updates without needing access to the particular conversion-tool being used. That is, it would fan out better to potential contributors. It might be useful to similarly have an independent "headless-tracking-extracted". How is the extraction currently being done? Is it a script being run adhoc by particular people or is it run by a CI job? Again it would fan out better to potential contributors to not need access to the extraction script. cheers -ben
Hey! I just see this email! This is exciting! <3 <3 <3 <3 El jue., 8 ago. 2019 a las 9:54, tesonep@gmail.com (<tesonep@gmail.com>) escribió:
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
participants (7)
-
Ben Coman -
ducasse -
Norbert Hartl -
Santiago Bragagnolo -
Sven Van Caekenberghe -
tesonep@gmail.com -
Tudor Girba