> On 8 Jul 2017, at 09:33, Clément Bera <[hidden email]> wrote: > > The incremental GC is already mentioned in "Better support for large heaps (GC tuning API, incremental GC)". Now we have a second paragraph about the incremental GC, that's redundant and the form of the paragraph is not consistent with the rest of the roadmap where each feature has 1 or 2 lines of explanations, not 10 lines. That is because "Better support for large heaps (GC tuning API, incremental GC)" is such an important topic ;-) > Same thing, the Sista-related introduction is 10 lines instead of 2-3, which is not consistent with the form of the rest of the roadmap. Idem ditto ;-) > Inconsistent form makes the document look unprofessional. We need to make it consistent, we can't let it like that. Yes, probably. > On Sat, Jul 8, 2017 at 8:22 AM, Stephane Ducasse <[hidden email]> wrote: > > Actually that's a good point - should the roadmap encompass what the community can offer too (i hadn't appreciated the distinction )? > > Yes it does. > Esteban (and christophe 60% paid by rmod) and guille (60% but also > writing papers) cannot do all that alone? > > > > We collectively pay for some things to be achieved, but also we expect that we can contribute some of the lower hanging fruit. > > Yes and even more. > We at RMOD are not paid to produce Pharo. Pharo only represents a > small part of our job evaluation. > Now if everybody takes 1 hour per week to improve Pharo it will be huge. > > > > Of course some things are at the whim of what itches to scratch, but others we may be able to rally around? > > > > Tim > > > > Sent from my iPhone > > > >> On 7 Jul 2017, at 06:11, Stephane Ducasse <[hidden email]> wrote: > >> > >>> On Thu, Jul 6, 2017 at 11:27 PM, Tim Mackinnon <[hidden email]> wrote: > >>> I didn’t mean to touch a nerve - and this was why I wrote “minor” points - but you did ask for feedback… > >> > >> you did not :) > >> Just that if we just count on fully book engineers working on super > >> important features we will not make it. > >> This is why once in a while I sit and fix a boring pop up or related. > >> I hate the stupid pop up for pakcgae selection and one day I will have > >> to retry to kill it. > >> > >>> > >>> Point noted on giving user feedback - I’d actually like to fix things, but currently its just too hard to submit fixes other than pull requests for documentation that is sitting in git hub (and I have submitted those). I know you are working on a simpler way to contribute (and getting the GitHub process smoothed out is in progress so its not fair to comment on that yet as its early days - and much appreciated. > >>> > >>> The Alt-Tab issue in the tracker since 2015 - but I will try and report others and possibly Calypso might have some better keyboard navigation tricks that help. > >> > >> do you have the bug entry? > >> > >>> > >>> For website documentation - I’ll take it back, as I went back again just now and everything I could think of was there (a lot in the news section which I hadn’t noticed). I do think the download page is a bit confusing but I know there is work being done on that. > >>> > >>> Tim > >>> > >>> > >>>>> On 6 Jul 2017, at 19:11, Stephane Ducasse <[hidden email]> wrote: > >>>>> > >>>>> Only 2 minor items stick out as missing: > >>>>> > >>>>> 1) Continuing to improve keyboard shortcut support (its a lot better, but > >>>>> not quite completed - I really miss some shortcuts, particularly the ability > >>>>> to meta-tab between windows - ALT-Tab only works in some windows, and widen > >>>>> selection in the editor - e.g. CMD-W in IntelliJ to increasing select a > >>>>> word, a statement, a function etc) > >>>> > >>>> There are three issues there: > >>>> - moving from the vm the keyboard generation (this will be done via > >>>> OSWindow and the VM can focus its main job: execution). > >>>> - then there is the way we declare/manage shortcuts: this is an > >>>> ongoing efforts where everybody can join. We should remove the > >>>> hardcoded shortcut and turn them into KeyBindings > >>>> - Most of the tools will be throw away when bloc will be integrated. > >>>> Now it does not mean that we should not do it. > >>>> > >>>> Now an important point: as a user you should report but you can also > >>>> contribute. > >>>> This is super difficult for me to fix something that I have no clue > >>>> how to reproduce/never encounter. > >>>> You see the mental model of a real open-source movement is to share > >>>> but also to produce together and the point is > >>>> what is the reward model: why should I spend time on pain I do not > >>>> feel. Of course we are already doing a lot > >>>> of actions that is not focus on our immediate needs and we should > >>>> improve the situation but I wanted to share > >>>> with you this perspective. > >>>> > >>>> > >>>>> > >>>>> 2) Keeping the website documentation more up to date (again the pharo.org > >>>>> website is very slick, and a great showcase, however often there are late > >>>>> breaking changes which new users won’t know about unless they trace through > >>>>> the news groups or subscribe to some blogs). If we could also focus on > >>>>> keeping it simple but up to date - that might help. > >>>> > >>>> Where is it not up to date? > >>>> We are always reacting to any broken piece there. > >>>> You see producing Pharo by Example 5 was A LOT of work and I thank > >>>> again Nicolai Hesse for all his huge efforts. > >>>> > >>>> > >>>>> I also have 1 small query - the references to the text editor, is this > >>>>> making the editor that was demo’d at PharoDays 2107 integrated? As that one > >>>>> was very cool? > >>>> > >>>> Yes calypso will replace our old friend Nautilus and we will certainly > >>>> need to put a lot of love into calypso to get > >>>> it to the right level. Now the basis is sound. > >>>> About the node we will revisit smart suggestions and indeed sometimes > >>>> there are problems to catch the correct AST nodes. > >>>> > >>>>> I don’t know how extensible it is (I’m hoping so - and that > >>>>> it might help making it easier to improve code editing tools such that > >>>>> refactorings can more intelligently understand where your cursor is with > >>>>> regards to the AST node underneath it, or we can add more intellisense > >>>>> options that match some of the things we see in IntelliJ). > >>>>> > >>>>> Tim > >>>>> > >>>>> On 6 Jul 2017, at 13:00, Pavel Krivanek <[hidden email]> wrote: > >>>>> > >>>>> > >>>>> TxText removal is already done too. > >>>>> > >>>>> -- Pavel > >>>>> > >>>>> 2017-07-06 10:55 GMT+02:00 Stephane Ducasse <[hidden email]>: > >>>>>> > >>>>>> We would like to share this list with you and get your feedback and > >>>>>> inputs. > >>>>>> It will be presented and discussed again at ESUG. > >>>>>> > >>>>>> Stef on the behalf of the engineering team of the Pharo consortium. > >>>>>> > >>>>>> # Pharo 7 (and 8) potential roadmap > >>>>>> > >>>>>> This document contains a list of actions that should be done during > >>>>>> Pharo 7 and 8. > >>>>>> It is not a definitive list. It is the result of a discussion within > >>>>>> the engineer team and RModers. > >>>>>> It first lists actions that should be performed at the image level > >>>>>> then lists the actions for the VM. > >>>>>> > >>>>>> > >>>>>> ## Image > >>>>>> As a general principle, we will try to remove something when we add a > >>>>>> new features or version of a component. > >>>>>> > >>>>>> ### New tools > >>>>>> - Iceberg: Iceberg is the new tool suite to handle new VCS in Pharo. > >>>>>> For the moment it supports Git. This tool will become central to the > >>>>>> development of projects in Pharo. The key and first enhancements will > >>>>>> be: > >>>>>> - cherry picking > >>>>>> - multiple directories support, subtrees > >>>>>> - better new development process support > >>>>>> > >>>>>> - Calypso: Calypso is a new tool suite for editing and navigating > >>>>>> code. It is modular and can easily be extended. > >>>>>> - integration, set as the default browser > >>>>>> > >>>>>> - Hermes (binary loader): Hermes is a code loader that does not > >>>>>> require the compiler to be loaded. It will be used to speed up the > >>>>>> bootstrap. > >>>>>> > >>>>>> - Beacon: Beacon is an announcement-based logger. It should be > >>>>>> introduced but in addition the left over of previous logging should be > >>>>>> cleaned and removed for example many of the transcript show: should be > >>>>>> removed. > >>>>>> > >>>>>> - Inspector refreshing: the inspector should refresh its values by > >>>>>> default. > >>>>>> > >>>>>> - Cargo: Cargo is a new package manager. It supports the expression of > >>>>>> dependencies between packages. We are currently validating that it can > >>>>>> support conditional loading (platform) and building new tooling to > >>>>>> express and validate data. > >>>>>> > >>>>>> - Check dependencies when committing. Pharo comes with a dependency > >>>>>> analyser tools. Such tools should be used before commiting to warn the > >>>>>> user when a new dependency is introduced in a package. > >>>>>> > >>>>>> ### Cleaning bloat > >>>>>> - Removing of Nautilus: Once Calypso will be integrated and exhibit > >>>>>> similar fetaures than Nautilus. Nautilus should be removed. > >>>>>> - Remove old text editor: there is only one or two widgets still using > >>>>>> the old text editor and the rubric text editor. > >>>>>> - Remove TxText: TxText was an attempt to get a new generation text > >>>>>> editor. Now it has been rewritten with a new design in Bloc so we > >>>>>> should remove it since Bloc editor is better and actively maintained. > >>>>>> - Remove Komitter: Iceberg already supports cherrypicking on commit > >>>>>> therefore Komitter can be safely removed from Pharo. > >>>>>> - Remove system categorizer: The old system categorizer is not used > >>>>>> anymore and should be remove. > >>>>>> > >>>>>> - Old compiler removal: The old compiler should now get unloaded from > >>>>>> Pharo. > >>>>>> - The old compiler should be moved to an external package and make > >>>>>> sure that it can be reloaded. > >>>>>> - In addition the encoders should be separated. (@@ more here@@) > >>>>>> > >>>>>> - Old inspector cleanup: we should remove the eyeInspector framework > >>>>>> but we should introduce a minimal fallback inspector. This inspector > >>>>>> should work without Spec or any frameworks. > >>>>>> > >>>>>> - Clean behavior protocol. The number of methods in the core Behavior, > >>>>>> ClassDescription and Class requires some analysis and cleaning. > >>>>>> > >>>>>> - Kernel modularization: the effort on modularising the packages > >>>>>> should be continued. > >>>>>> > >>>>>> ### Language infrastructure > >>>>>> The following points are more related to the infrastructure of > >>>>>> manipulating and loading class definitions. There are the basis for > >>>>>> the future module system and cleaning some often hidden parts of the > >>>>>> system. > >>>>>> > >>>>>> - New class definition: The class definition is not scaling anymore > >>>>>> due to the large number of options (traits, slot, tage, package, > >>>>>> immediate, ephemeron). A fluid-based message API should be designed. > >>>>>> > >>>>>> - Support for Undefined classes: When loading old code or code whose > >>>>>> superclass has not yet being loaded, the system has inconsistent > >>>>>> behavior. Depending on the tools, it may not load the code, raise a > >>>>>> warning or decide that the superclass is Object without any other > >>>>>> notice and losing the name of the original superclass. We are working > >>>>>> on a new mechanism to support a unique way to handle such case. To be > >>>>>> presented at IWST/ESUG > >>>>>> > >>>>>> - Class definition parser: Class definition is parser in different > >>>>>> place of the system and in addition the output is the direct creation > >>>>>> of a class object instead of an object representing the class > >>>>>> definition that can be further manipulated. We are working on class > >>>>>> definition parser. It produces a separate AST. It will help the > >>>>>> building of tools. > >>>>>> > >>>>>> - Better update infrastructure. Pablo Tesone has been working on a > >>>>>> better update mechanism, better modular class builder. > >>>>>> > >>>>>> - Ring2: Ring is a metamodel to manipulate code that is not actively > >>>>>> running in the current system. It is useful to perform analysis (such > >>>>>> as browsing, navigating off-line or remote definitions) before > >>>>>> actually loading the code. Ring got redesigned by Pavel Krivanek to > >>>>>> support the bootstrap of Pharo 60. The results is Ring2. > >>>>>> > >>>>>> - Opal is the Pharo Compiler. It should be enhanced to support handle > >>>>>> better the warning and a general enhancement pass is needed. > >>>>>> > >>>>>> ### System enhancements > >>>>>> > >>>>>> - Commandline enhancements. RMOD is currently improving the > >>>>>> command-line infrastructure and making sure that the system can work > >>>>>> in read-only mode. > >>>>>> > >>>>>> - Cleaning streams: the idea is to make sure that the system does not > >>>>>> use the old streams. The idea is to start using the fileStreams and > >>>>>> make sure that the Stream package can be substituated in the future by > >>>>>> other streams with the same API. Therefore hardcoded class names > >>>>>> should be substituted with factory (readSream writeStream). From that > >>>>>> perspective we do not think that it is wise to introduce Xtreams. We > >>>>>> should analyse the API of the current implementation. > >>>>>> > >>>>>> - New theme from the beginning. It is really important that each > >>>>>> version of Pharo is identified open the default opening. Pharo should > >>>>>> come up with two default themes: one light and one dark. > >>>>>> > >>>>>> - Better themes/palettes support > >>>>>> - Better and nicer Tabs. Tabs design should be revisited. > >>>>>> > >>>>>> - OSWindow world rendering: the effort to remove the logic of the > >>>>>> windowing from the VM should be continued. OSWindow should be used > >>>>>> instead. > >>>>>> > >>>>>> - Freetype: The current freetype plugin is the source of many bugs and > >>>>>> problem. Thibault Raffaillac used FFI to do direct call to openGL > >>>>>> (@@to verify@@). > >>>>>> > >>>>>> > >>>>>> - Refactoring 2: Refactoring 2 is an improved version of the > >>>>>> refactorings developed by Gustavos Santos and they should used to > >>>>>> replace the existing one. > >>>>>> > >>>>>> > >>>>>> ## VM > >>>>>> > >>>>>> - 64-bits by default: Mac and Linux 64 bits VMs have been working for > >>>>>> over a year and since June 2017 a Windows 64 bits VM has been working. > >>>>>> The plan is to stabilize each part of Pharo that is not working in 64 > >>>>>> bits as well as in 32 bits and make the 64 bits Pharo images and VM > >>>>>> the default download for Pharo. > >>>>>> > >>>>>> - Headless VM: Ronie Salgado has built a headless VM on his VM branch, > >>>>>> we need to merge and check everything works fine. With the headless > >>>>>> VM, Pharo can be run in true headless mode (not with a hidden window) > >>>>>> and it is required for future VM features (embeddable VM, ...). > >>>>>> > >>>>>> - Embeddable VM: The VM should be able to be embedded in external > >>>>>> applications, the application accessing objects through well-defined > >>>>>> APIs. > >>>>>> > >>>>>> - Idle VM: The goal is to avoid the active waiting loop consuming > >>>>>> several per cent of cpu time when the Pharo image is not doing > >>>>>> anything. > >>>>>> > >>>>>> - Android VM: integration of the Android VM build and tests in the > >>>>>> integration setup. > >>>>>> > >>>>>> - Threaded FFI: all FFI calls should be non-blocking (reviving > >>>>>> prototype of Eliot) > >>>>>> > >>>>>> - ZeroConf for ARM: The ARM VM should be available from the zeroConf > >>>>>> servers > >>>>>> > >>>>>> - Better support for large heaps (GC tuning API, incremental GC). > >>>>>> Pharo 64 bit is now able to manage large heap. However better > >>>>>> performance can be proposed by offering better settings for the > >>>>>> different GC zone. > >>>>>> > >>>>>> - Integrate various fixes to support better high resolution display. > >>>>>> In Retina mac display Pharo looks blurry. The fix to support Retina > >>>>>> should be integrated in the VM. > >>>>>> > >>>>>> ### Sista-related > >>>>>> Sista is an optimizing JIT for Pharo. It is the result of multiple > >>>>>> years of developement by Clement Bera and Eliot Miranda. An optimizing > >>>>>> JIT is manipulating code (folding constant, rewriting it) before > >>>>>> compiling it to assembly code. > >>>>>> > >>>>>> - New Block Closure implementation by default: Allows one to implement > >>>>>> in the Opal compiler the copying and clean blocks optimisations, > >>>>>> reduce massively the complexity of some parts of the JIT (debugging > >>>>>> API to map machine code pc to bytecode pc for example) and is required > >>>>>> for the Sista support. Some work remains in debugging/IDE support. > >>>>>> > >>>>>> - New Bytecode set in production: Eases bytecode decoding (simplifying > >>>>>> the code base of the bytecode to source code decompiler, the debugger, > >>>>>> the JIT, etc.), lifts compiled code limitations (size of jumps, etc.) > >>>>>> and is required for the Sista support. Some work remains in debugging > >>>>>> support. > >>>>>> > >>>>>> - Read-only objects: They work in Pharo 6, but the in-image support > >>>>>> needs to be improved (fall-back code of primitives, etc.) and some > >>>>>> polishing needs to be done (primitive error code not always correct, > >>>>>> etc.). Used for the support of different project, including GBS. > >>>>>> > >>>>>> - Literals immutability (based on read-only objects). In particular an > >>>>>> analysis of the image usage of literal (string mutation) is needed. > >>>>>> > >>>>>> - Sista preview: A first version of Sista will be integrated, yielding > >>>>>> 1.5x performance boost on most applications, but will be optional and > >>>>>> will require specific constraints (not toying too much with literal > >>>>>> mutability, partial IDE support, etc.). > >>>>>> > >>>>>> > >>>>>> ### Already done > >>>>>> > >>>>>> - [DONE] Remove Shoreline reporter. > >>>>>> - [DONE] Kernel should not depend on Traits: This will speed up the > >>>>>> bootstrap and support the modular introduction of alternate traits > >>>>>> implementation currently designed by Pablo Tesone and tested in the > >>>>>> new generation of Moose. > >>>>>> > >>>>> > >>>>> > >>>> > >>> > >>> > >> > > > > > > |
In reply to this post by Eliot Miranda-2
On 06-07-17 23:56, Eliot Miranda wrote:
> But what I was getting at in my comment was that, while 64-bit server > applications are indeed very important, I have not been contacted by > anyone yet complaining about scaling problems with the 64-bit system. It has been too early to get scaling problems in 64-bit for me. I ran into a lot of the gc bugs you fixed. In what I do (loading a lot of data in the image, adding restructuring information, and creating visualizations), the long GC wait is annoying but perfectly usable. Incremental GC fits perfectly for that use case. Stephan |
In reply to this post by Clément Béra
feel free to do pull request :)
On Sat, Jul 8, 2017 at 9:33 AM, Clément Bera <[hidden email]> wrote: > The incremental GC is already mentioned in "Better support for large heaps > (GC tuning API, incremental GC)". Now we have a second paragraph about the > incremental GC, that's redundant and the form of the paragraph is not > consistent with the rest of the roadmap where each feature has 1 or 2 lines > of explanations, not 10 lines. > > Same thing, the Sista-related introduction is 10 lines instead of 2-3, which > is not consistent with the form of the rest of the roadmap. > > Inconsistent form makes the document look unprofessional. We need to make it > consistent, we can't let it like that. > > On Sat, Jul 8, 2017 at 8:22 AM, Stephane Ducasse <[hidden email]> > wrote: >> >> > Actually that's a good point - should the roadmap encompass what the >> > community can offer too (i hadn't appreciated the distinction )? >> >> Yes it does. >> Esteban (and christophe 60% paid by rmod) and guille (60% but also >> writing papers) cannot do all that alone? >> >> >> > We collectively pay for some things to be achieved, but also we expect >> > that we can contribute some of the lower hanging fruit. >> >> Yes and even more. >> We at RMOD are not paid to produce Pharo. Pharo only represents a >> small part of our job evaluation. >> Now if everybody takes 1 hour per week to improve Pharo it will be huge. >> >> >> > Of course some things are at the whim of what itches to scratch, but >> > others we may be able to rally around? >> > >> > Tim >> > >> > Sent from my iPhone >> > >> >> On 7 Jul 2017, at 06:11, Stephane Ducasse <[hidden email]> >> >> wrote: >> >> >> >>> On Thu, Jul 6, 2017 at 11:27 PM, Tim Mackinnon <[hidden email]> >> >>> wrote: >> >>> I didn’t mean to touch a nerve - and this was why I wrote “minor” >> >>> points - but you did ask for feedback… >> >> >> >> you did not :) >> >> Just that if we just count on fully book engineers working on super >> >> important features we will not make it. >> >> This is why once in a while I sit and fix a boring pop up or related. >> >> I hate the stupid pop up for pakcgae selection and one day I will have >> >> to retry to kill it. >> >> >> >>> >> >>> Point noted on giving user feedback - I’d actually like to fix things, >> >>> but currently its just too hard to submit fixes other than pull requests for >> >>> documentation that is sitting in git hub (and I have submitted those). I >> >>> know you are working on a simpler way to contribute (and getting the GitHub >> >>> process smoothed out is in progress so its not fair to comment on that yet >> >>> as its early days - and much appreciated. >> >>> >> >>> The Alt-Tab issue in the tracker since 2015 - but I will try and >> >>> report others and possibly Calypso might have some better keyboard >> >>> navigation tricks that help. >> >> >> >> do you have the bug entry? >> >> >> >>> >> >>> For website documentation - I’ll take it back, as I went back again >> >>> just now and everything I could think of was there (a lot in the news >> >>> section which I hadn’t noticed). I do think the download page is a bit >> >>> confusing but I know there is work being done on that. >> >>> >> >>> Tim >> >>> >> >>> >> >>>>> On 6 Jul 2017, at 19:11, Stephane Ducasse <[hidden email]> >> >>>>> wrote: >> >>>>> >> >>>>> Only 2 minor items stick out as missing: >> >>>>> >> >>>>> 1) Continuing to improve keyboard shortcut support (its a lot >> >>>>> better, but >> >>>>> not quite completed - I really miss some shortcuts, particularly the >> >>>>> ability >> >>>>> to meta-tab between windows - ALT-Tab only works in some windows, >> >>>>> and widen >> >>>>> selection in the editor - e.g. CMD-W in IntelliJ to increasing >> >>>>> select a >> >>>>> word, a statement, a function etc) >> >>>> >> >>>> There are three issues there: >> >>>> - moving from the vm the keyboard generation (this will be done via >> >>>> OSWindow and the VM can focus its main job: execution). >> >>>> - then there is the way we declare/manage shortcuts: this is an >> >>>> ongoing efforts where everybody can join. We should remove the >> >>>> hardcoded shortcut and turn them into KeyBindings >> >>>> - Most of the tools will be throw away when bloc will be integrated. >> >>>> Now it does not mean that we should not do it. >> >>>> >> >>>> Now an important point: as a user you should report but you can also >> >>>> contribute. >> >>>> This is super difficult for me to fix something that I have no clue >> >>>> how to reproduce/never encounter. >> >>>> You see the mental model of a real open-source movement is to share >> >>>> but also to produce together and the point is >> >>>> what is the reward model: why should I spend time on pain I do not >> >>>> feel. Of course we are already doing a lot >> >>>> of actions that is not focus on our immediate needs and we should >> >>>> improve the situation but I wanted to share >> >>>> with you this perspective. >> >>>> >> >>>> >> >>>>> >> >>>>> 2) Keeping the website documentation more up to date (again the >> >>>>> pharo.org >> >>>>> website is very slick, and a great showcase, however often there are >> >>>>> late >> >>>>> breaking changes which new users won’t know about unless they trace >> >>>>> through >> >>>>> the news groups or subscribe to some blogs). If we could also focus >> >>>>> on >> >>>>> keeping it simple but up to date - that might help. >> >>>> >> >>>> Where is it not up to date? >> >>>> We are always reacting to any broken piece there. >> >>>> You see producing Pharo by Example 5 was A LOT of work and I thank >> >>>> again Nicolai Hesse for all his huge efforts. >> >>>> >> >>>> >> >>>>> I also have 1 small query - the references to the text editor, is >> >>>>> this >> >>>>> making the editor that was demo’d at PharoDays 2107 integrated? As >> >>>>> that one >> >>>>> was very cool? >> >>>> >> >>>> Yes calypso will replace our old friend Nautilus and we will >> >>>> certainly >> >>>> need to put a lot of love into calypso to get >> >>>> it to the right level. Now the basis is sound. >> >>>> About the node we will revisit smart suggestions and indeed sometimes >> >>>> there are problems to catch the correct AST nodes. >> >>>> >> >>>>> I don’t know how extensible it is (I’m hoping so - and that >> >>>>> it might help making it easier to improve code editing tools such >> >>>>> that >> >>>>> refactorings can more intelligently understand where your cursor is >> >>>>> with >> >>>>> regards to the AST node underneath it, or we can add more >> >>>>> intellisense >> >>>>> options that match some of the things we see in IntelliJ). >> >>>>> >> >>>>> Tim >> >>>>> >> >>>>> On 6 Jul 2017, at 13:00, Pavel Krivanek <[hidden email]> >> >>>>> wrote: >> >>>>> >> >>>>> >> >>>>> TxText removal is already done too. >> >>>>> >> >>>>> -- Pavel >> >>>>> >> >>>>> 2017-07-06 10:55 GMT+02:00 Stephane Ducasse >> >>>>> <[hidden email]>: >> >>>>>> >> >>>>>> We would like to share this list with you and get your feedback and >> >>>>>> inputs. >> >>>>>> It will be presented and discussed again at ESUG. >> >>>>>> >> >>>>>> Stef on the behalf of the engineering team of the Pharo consortium. >> >>>>>> >> >>>>>> # Pharo 7 (and 8) potential roadmap >> >>>>>> >> >>>>>> This document contains a list of actions that should be done during >> >>>>>> Pharo 7 and 8. >> >>>>>> It is not a definitive list. It is the result of a discussion >> >>>>>> within >> >>>>>> the engineer team and RModers. >> >>>>>> It first lists actions that should be performed at the image level >> >>>>>> then lists the actions for the VM. >> >>>>>> >> >>>>>> >> >>>>>> ## Image >> >>>>>> As a general principle, we will try to remove something when we add >> >>>>>> a >> >>>>>> new features or version of a component. >> >>>>>> >> >>>>>> ### New tools >> >>>>>> - Iceberg: Iceberg is the new tool suite to handle new VCS in >> >>>>>> Pharo. >> >>>>>> For the moment it supports Git. This tool will become central to >> >>>>>> the >> >>>>>> development of projects in Pharo. The key and first enhancements >> >>>>>> will >> >>>>>> be: >> >>>>>> - cherry picking >> >>>>>> - multiple directories support, subtrees >> >>>>>> - better new development process support >> >>>>>> >> >>>>>> - Calypso: Calypso is a new tool suite for editing and navigating >> >>>>>> code. It is modular and can easily be extended. >> >>>>>> - integration, set as the default browser >> >>>>>> >> >>>>>> - Hermes (binary loader): Hermes is a code loader that does not >> >>>>>> require the compiler to be loaded. It will be used to speed up the >> >>>>>> bootstrap. >> >>>>>> >> >>>>>> - Beacon: Beacon is an announcement-based logger. It should be >> >>>>>> introduced but in addition the left over of previous logging should >> >>>>>> be >> >>>>>> cleaned and removed for example many of the transcript show: should >> >>>>>> be >> >>>>>> removed. >> >>>>>> >> >>>>>> - Inspector refreshing: the inspector should refresh its values by >> >>>>>> default. >> >>>>>> >> >>>>>> - Cargo: Cargo is a new package manager. It supports the expression >> >>>>>> of >> >>>>>> dependencies between packages. We are currently validating that it >> >>>>>> can >> >>>>>> support conditional loading (platform) and building new tooling to >> >>>>>> express and validate data. >> >>>>>> >> >>>>>> - Check dependencies when committing. Pharo comes with a dependency >> >>>>>> analyser tools. Such tools should be used before commiting to warn >> >>>>>> the >> >>>>>> user when a new dependency is introduced in a package. >> >>>>>> >> >>>>>> ### Cleaning bloat >> >>>>>> - Removing of Nautilus: Once Calypso will be integrated and exhibit >> >>>>>> similar fetaures than Nautilus. Nautilus should be removed. >> >>>>>> - Remove old text editor: there is only one or two widgets still >> >>>>>> using >> >>>>>> the old text editor and the rubric text editor. >> >>>>>> - Remove TxText: TxText was an attempt to get a new generation text >> >>>>>> editor. Now it has been rewritten with a new design in Bloc so we >> >>>>>> should remove it since Bloc editor is better and actively >> >>>>>> maintained. >> >>>>>> - Remove Komitter: Iceberg already supports cherrypicking on commit >> >>>>>> therefore Komitter can be safely removed from Pharo. >> >>>>>> - Remove system categorizer: The old system categorizer is not used >> >>>>>> anymore and should be remove. >> >>>>>> >> >>>>>> - Old compiler removal: The old compiler should now get unloaded >> >>>>>> from >> >>>>>> Pharo. >> >>>>>> - The old compiler should be moved to an external package and make >> >>>>>> sure that it can be reloaded. >> >>>>>> - In addition the encoders should be separated. (@@ more here@@) >> >>>>>> >> >>>>>> - Old inspector cleanup: we should remove the eyeInspector >> >>>>>> framework >> >>>>>> but we should introduce a minimal fallback inspector. This >> >>>>>> inspector >> >>>>>> should work without Spec or any frameworks. >> >>>>>> >> >>>>>> - Clean behavior protocol. The number of methods in the core >> >>>>>> Behavior, >> >>>>>> ClassDescription and Class requires some analysis and cleaning. >> >>>>>> >> >>>>>> - Kernel modularization: the effort on modularising the packages >> >>>>>> should be continued. >> >>>>>> >> >>>>>> ### Language infrastructure >> >>>>>> The following points are more related to the infrastructure of >> >>>>>> manipulating and loading class definitions. There are the basis for >> >>>>>> the future module system and cleaning some often hidden parts of >> >>>>>> the >> >>>>>> system. >> >>>>>> >> >>>>>> - New class definition: The class definition is not scaling anymore >> >>>>>> due to the large number of options (traits, slot, tage, package, >> >>>>>> immediate, ephemeron). A fluid-based message API should be >> >>>>>> designed. >> >>>>>> >> >>>>>> - Support for Undefined classes: When loading old code or code >> >>>>>> whose >> >>>>>> superclass has not yet being loaded, the system has inconsistent >> >>>>>> behavior. Depending on the tools, it may not load the code, raise a >> >>>>>> warning or decide that the superclass is Object without any other >> >>>>>> notice and losing the name of the original superclass. We are >> >>>>>> working >> >>>>>> on a new mechanism to support a unique way to handle such case. To >> >>>>>> be >> >>>>>> presented at IWST/ESUG >> >>>>>> >> >>>>>> - Class definition parser: Class definition is parser in different >> >>>>>> place of the system and in addition the output is the direct >> >>>>>> creation >> >>>>>> of a class object instead of an object representing the class >> >>>>>> definition that can be further manipulated. We are working on class >> >>>>>> definition parser. It produces a separate AST. It will help the >> >>>>>> building of tools. >> >>>>>> >> >>>>>> - Better update infrastructure. Pablo Tesone has been working on a >> >>>>>> better update mechanism, better modular class builder. >> >>>>>> >> >>>>>> - Ring2: Ring is a metamodel to manipulate code that is not >> >>>>>> actively >> >>>>>> running in the current system. It is useful to perform analysis >> >>>>>> (such >> >>>>>> as browsing, navigating off-line or remote definitions) before >> >>>>>> actually loading the code. Ring got redesigned by Pavel Krivanek to >> >>>>>> support the bootstrap of Pharo 60. The results is Ring2. >> >>>>>> >> >>>>>> - Opal is the Pharo Compiler. It should be enhanced to support >> >>>>>> handle >> >>>>>> better the warning and a general enhancement pass is needed. >> >>>>>> >> >>>>>> ### System enhancements >> >>>>>> >> >>>>>> - Commandline enhancements. RMOD is currently improving the >> >>>>>> command-line infrastructure and making sure that the system can >> >>>>>> work >> >>>>>> in read-only mode. >> >>>>>> >> >>>>>> - Cleaning streams: the idea is to make sure that the system does >> >>>>>> not >> >>>>>> use the old streams. The idea is to start using the fileStreams and >> >>>>>> make sure that the Stream package can be substituated in the future >> >>>>>> by >> >>>>>> other streams with the same API. Therefore hardcoded class names >> >>>>>> should be substituted with factory (readSream writeStream). From >> >>>>>> that >> >>>>>> perspective we do not think that it is wise to introduce Xtreams. >> >>>>>> We >> >>>>>> should analyse the API of the current implementation. >> >>>>>> >> >>>>>> - New theme from the beginning. It is really important that each >> >>>>>> version of Pharo is identified open the default opening. Pharo >> >>>>>> should >> >>>>>> come up with two default themes: one light and one dark. >> >>>>>> >> >>>>>> - Better themes/palettes support >> >>>>>> - Better and nicer Tabs. Tabs design should be revisited. >> >>>>>> >> >>>>>> - OSWindow world rendering: the effort to remove the logic of the >> >>>>>> windowing from the VM should be continued. OSWindow should be used >> >>>>>> instead. >> >>>>>> >> >>>>>> - Freetype: The current freetype plugin is the source of many bugs >> >>>>>> and >> >>>>>> problem. Thibault Raffaillac used FFI to do direct call to openGL >> >>>>>> (@@to verify@@). >> >>>>>> >> >>>>>> >> >>>>>> - Refactoring 2: Refactoring 2 is an improved version of the >> >>>>>> refactorings developed by Gustavos Santos and they should used to >> >>>>>> replace the existing one. >> >>>>>> >> >>>>>> >> >>>>>> ## VM >> >>>>>> >> >>>>>> - 64-bits by default: Mac and Linux 64 bits VMs have been working >> >>>>>> for >> >>>>>> over a year and since June 2017 a Windows 64 bits VM has been >> >>>>>> working. >> >>>>>> The plan is to stabilize each part of Pharo that is not working in >> >>>>>> 64 >> >>>>>> bits as well as in 32 bits and make the 64 bits Pharo images and VM >> >>>>>> the default download for Pharo. >> >>>>>> >> >>>>>> - Headless VM: Ronie Salgado has built a headless VM on his VM >> >>>>>> branch, >> >>>>>> we need to merge and check everything works fine. With the headless >> >>>>>> VM, Pharo can be run in true headless mode (not with a hidden >> >>>>>> window) >> >>>>>> and it is required for future VM features (embeddable VM, ...). >> >>>>>> >> >>>>>> - Embeddable VM: The VM should be able to be embedded in external >> >>>>>> applications, the application accessing objects through >> >>>>>> well-defined >> >>>>>> APIs. >> >>>>>> >> >>>>>> - Idle VM: The goal is to avoid the active waiting loop consuming >> >>>>>> several per cent of cpu time when the Pharo image is not doing >> >>>>>> anything. >> >>>>>> >> >>>>>> - Android VM: integration of the Android VM build and tests in the >> >>>>>> integration setup. >> >>>>>> >> >>>>>> - Threaded FFI: all FFI calls should be non-blocking (reviving >> >>>>>> prototype of Eliot) >> >>>>>> >> >>>>>> - ZeroConf for ARM: The ARM VM should be available from the >> >>>>>> zeroConf >> >>>>>> servers >> >>>>>> >> >>>>>> - Better support for large heaps (GC tuning API, incremental GC). >> >>>>>> Pharo 64 bit is now able to manage large heap. However better >> >>>>>> performance can be proposed by offering better settings for the >> >>>>>> different GC zone. >> >>>>>> >> >>>>>> - Integrate various fixes to support better high resolution >> >>>>>> display. >> >>>>>> In Retina mac display Pharo looks blurry. The fix to support Retina >> >>>>>> should be integrated in the VM. >> >>>>>> >> >>>>>> ### Sista-related >> >>>>>> Sista is an optimizing JIT for Pharo. It is the result of multiple >> >>>>>> years of developement by Clement Bera and Eliot Miranda. An >> >>>>>> optimizing >> >>>>>> JIT is manipulating code (folding constant, rewriting it) before >> >>>>>> compiling it to assembly code. >> >>>>>> >> >>>>>> - New Block Closure implementation by default: Allows one to >> >>>>>> implement >> >>>>>> in the Opal compiler the copying and clean blocks optimisations, >> >>>>>> reduce massively the complexity of some parts of the JIT (debugging >> >>>>>> API to map machine code pc to bytecode pc for example) and is >> >>>>>> required >> >>>>>> for the Sista support. Some work remains in debugging/IDE support. >> >>>>>> >> >>>>>> - New Bytecode set in production: Eases bytecode decoding >> >>>>>> (simplifying >> >>>>>> the code base of the bytecode to source code decompiler, the >> >>>>>> debugger, >> >>>>>> the JIT, etc.), lifts compiled code limitations (size of jumps, >> >>>>>> etc.) >> >>>>>> and is required for the Sista support. Some work remains in >> >>>>>> debugging >> >>>>>> support. >> >>>>>> >> >>>>>> - Read-only objects: They work in Pharo 6, but the in-image support >> >>>>>> needs to be improved (fall-back code of primitives, etc.) and some >> >>>>>> polishing needs to be done (primitive error code not always >> >>>>>> correct, >> >>>>>> etc.). Used for the support of different project, including GBS. >> >>>>>> >> >>>>>> - Literals immutability (based on read-only objects). In particular >> >>>>>> an >> >>>>>> analysis of the image usage of literal (string mutation) is needed. >> >>>>>> >> >>>>>> - Sista preview: A first version of Sista will be integrated, >> >>>>>> yielding >> >>>>>> 1.5x performance boost on most applications, but will be optional >> >>>>>> and >> >>>>>> will require specific constraints (not toying too much with literal >> >>>>>> mutability, partial IDE support, etc.). >> >>>>>> >> >>>>>> >> >>>>>> ### Already done >> >>>>>> >> >>>>>> - [DONE] Remove Shoreline reporter. >> >>>>>> - [DONE] Kernel should not depend on Traits: This will speed up the >> >>>>>> bootstrap and support the modular introduction of alternate traits >> >>>>>> implementation currently designed by Pablo Tesone and tested in the >> >>>>>> new generation of Moose. >> >>>>>> >> >>>>> >> >>>>> >> >>>> >> >>> >> >>> >> >> >> > >> > >> > |
Free forum by Nabble | Edit this page |