[ANN] Improving dialect portability and git support

52 views
Skip to first unread message

Mariano Martinez Peck

unread,
Jan 25, 2019, 3:18:48 PM1/25/19
to VA Smalltalk
Here at Instantiations we are helping to improve dialect portability by implementing some frameworks that are gaining acceptance in the greater Smalltalk community.
Closely related to this is a new feature we are working on that will bring VA Smalltalk support for text-based version control systems like Git. 

We wanted to take this opportunity to make public Pharo2VA [1], a little tool to ease exporting code from Pharo to VA Smalltalk.
This tool does a few things, one being the auto-conversion of the curly brackets Array.

Pharo2VA is installed and run in Pharo in order to facilitate the later import in VA. If you check at the top of the GitHub project you can see some labels about the current release, the CI status (made with Travis CI), and the results of Coveralls (test coverage). This is part of the things that could come when you can use GitHub for managing your code. 

Tonel [2] is a file-per-class text-based export/import format for Smalltalk code. Tonel works well on Windows and Linux filesystems, files are readable and it is Git-friendly (actually any kind of text-based versioning control system).

STON [3], short for Smalltalk Object Notation, is a lightweight, text-based human-readable data interchange format for class-based object-oriented languages like Smalltalk. It can be used to serialise domain level objects, either for persistency or network transport. By offering class tags for objects as well as support for object references, arbitrary object graphs can we written and read back. Tonel uses STON to encode the definitions metadata. 

We have STON currently working in 9.2 and Tonel already in progress and we expect to finish both by the next release. The availability of these projects in VAST will not just allow for storing VA Smalltalk code in version control systems like Git (something our customers have begun asking about), but it will also store it in a community format to facilitate sharing code across the various dialects in the Smalltalk community.

As a preview, we have created this repository [4] where you can find some demo apps that were exported from VA in Tonel format and they could also be imported into other
dialects such as Pharo, Gemstone, VW or any other dialect supporting Tonel format.

We also wanted to thank all the people that participated in the definition or implementation of all these projects. 

Best regards, 


--
Mariano Martinez Peck
Software Engineer, Instantiations Inc.
mp...@instantiations.com

Richard Sargent

unread,
Jan 25, 2019, 5:59:16 PM1/25/19
to VA Smalltalk
Very nice, Mariano!

----------
I do think it would be nice to have the dynamic {} array syntax supported. It definitely increases readability, even if it does add gratuitous syntax. The scanner and parser are relatively easy to modify. If you want, I can send you an example which I created to support parsing VisualWorks literal references: #{[name.]*name} e.g. #{Kernel.UserMessage}

Seth Berman

unread,
Jan 28, 2019, 9:54:58 AM1/28/19
to VA Smalltalk
Hi Richard,

Thanks for your inputs.  The {} would be nice and perhaps if we get enough demand for it we may do it.
The EsScanner is auto-generated code using a tool from the ancient past...well before we took over the product.
So any modifications to the scanner must be done with absolute care since we have to modify obfuscated code by hand
in an area we have little testing for.  The {} token identification is easy...its the subsequent statements tokenizing/parsing within that new state
that gives me pause.  
And then of course, the small matter of updating the editor tooling so it won't be screaming at you when you type, what it thinks to be,
a bunch of syntax errors.
However, if you have an existing implementation that solves this issue, we would definitely be happy to look at it.
Thanks.

- Seth

Richard Sargent

unread,
Jan 28, 2019, 11:57:49 AM1/28/19
to VA Smalltalk
On Mon, Jan 28, 2019 at 6:55 AM 'Seth Berman' via VA Smalltalk <va-sma...@googlegroups.com> wrote:
Hi Richard,

Thanks for your inputs.  The {} would be nice and perhaps if we get enough demand for it we may do it.
The EsScanner is auto-generated code using a tool from the ancient past...well before we took over the product.
So any modifications to the scanner must be done with absolute care since we have to modify obfuscated code by hand
in an area we have little testing for.  The {} token identification is easy...its the subsequent statements tokenizing/parsing within that new state
that gives me pause.  
And then of course, the small matter of updating the editor tooling so it won't be screaming at you when you type, what it thinks to be,
a bunch of syntax errors.
However, if you have an existing implementation that solves this issue, we would definitely be happy to look at it.

Unfortunately, the only one I tackled was the dotted array of global symbols  for VW window specs.

--
You received this message because you are subscribed to a topic in the Google Groups "VA Smalltalk" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/va-smalltalk/U4HVPl0KVrc/unsubscribe.
To unsubscribe from this group and all its topics, send an email to va-smalltalk...@googlegroups.com.
To post to this group, send email to va-sma...@googlegroups.com.
Visit this group at https://groups.google.com/group/va-smalltalk.
For more options, visit https://groups.google.com/d/optout.
Reply all
Reply to author
Forward
0 new messages