Try S8 Smalltalk ;-)
Browse an image with tools embedded in a web page
http://u8.smalltalking.net/profile/aleReimondo/239/index.html
[snip]
Hi Alejandro!
Thanks for the email about S8 and U8 in response to my previous FONC
post to address some issues I raised there. Sorry I did not see it
sooner as I had checked the list archives online for followups back then
but your email was sent directly to me and I just noticed it yesterday
in a different folder.
So, I played around with S8 yesterday, and it is pretty amazing.:-)
http://u8.smalltalking.net/
Here are some comments on that experience.
First, come practical issues I experienced:
* Firefox did not have draggable windows.
* There was a point at which after some use the Chrome window locked up
(on a Chromebook).
* The use of file-in format for writing methods is awkward.
* Response to clicking on classes and methods was slow (they turned red
probably to indicate a delay, and then eventually sometimes seconds
later the source showed up -- or even longer when looking at some
classes with a lot of methods).
* Trying to save an image snapshot led to an error ("Uncaught
ReferenceError: fileWrite is not defined") and it was not clear what it
was trying to do in the browser.
So, while S8 does a lot and looks great, there were still some rough
edges as I experienced them. That does not mean those may not be easily
fixable or maybe just due to my own inexperience with the system or
particular hardware etc.. I remember Squeak in its early days. And
ObjectWorks and Digitalk's Smalltalk/V too for that matter. Or Lively. :-)
But a deeper issues as I think on the social coding aspects, there is a
deep issue with social implications which Alan Kay has talked about) is
that there is the Blue and the Pink plane. One group (or one person at a
specific time) wants to take Smalltalk in new directions, and another
group (or even the same person at a different time) wants to use
Smalltalk as it is. That makes social coding harder to think about
within a specific system when changing a lot.
http://www.c2.com/cgi/wiki?BluePlane
For example, these are some changes I'd like (if I had time, which I
don't right now) to make in a Smalltalk (whether in a JavaScript-based
S8 or something else maybe even a C-based or Forth-based or
Assembly-based Squeak):
* Display methods as code that is evaluated to define methods instead of
file-in format.
* Support coding directly in JavaScript and maybe TypeScript for methods
(as essentially primitives, but also callbacks).
* Changing the Smalltalk VM so every (non-immediate) object was one or
more arbitrary records that could mix bytes, integers, floating point
values, and/or other object pointers all safely managed by the virtual
machine (which would also support safe-ish FFI calls and internal pointers).
* Building full support into the VM for numpy-like and scipy-like
mathematical operations on arrays over those records, as well as other
low level byte and float and integer manipulations.
* Reifying the Virtual Machine as a "vm" variable that messages could be
sent to for doing low-level things and using that for all low level
access (so, no use of "primitives" with magic numbers or similar methods).
* Support for generating WebAssembly for the underlying vm code like
Squeak compiles Smalltalk to C.
* Using high speed method dispatch tables (one slot per possible
selector) and maybe an object table.
* Replacing the class hierarchy with compositional construction of
message handlers from named functions which act like classes, where
every chunk of memory allocated (an "object") can have a message handler.
* Changing the Smalltalk syntax in various experimental ways, like using
C-style/JavaScript comments and strings and perhaps even supporting
JavaScript with messages
(e.g. new MyJavaScriptObject() x: 10 y: 20; ).
* Supporting including snippets of code in any language in a Racket-like
way.
* Maybe multi-threading support using the new Mozilla Parallel
primitives.
https://hacks.mozilla.org/2016/05/a-taste-of-javascripts-new-parallel-primitives/
* Eliminating the class side of Smalltalk objects which makes code
browsing harder and replacign that with factor methods or perhaps
instance methods denoted as "static" like in TypeScript.
Anyway, whether these are good ideas or not is not the issue here (even
as I think they might be good ideas to try). But doing most of them with
S8 (or Squeak) would make it hard or impossible to share code in systems
that made assumptions about a standard Smalltalk syntax or library. So,
the U8 social aspect aspect would presumably break down if you can't
just file in packages that run with the existing language? Yet, I could
do all that with projects on, say, GitHub, and people could discuss
them. Is there a way U8 could support all that experimentation as social
coding around Smalltalk?
Or maybe that is some future project for VPRI -- to support that kind of
"Blue plane" experimentation by a community doing Smalltalk-inspired
systems for the web browser or elsewhere?
Anyway, that's just a first response. I appreciate what you have done,
and it is inspiring.
I did not include your full reply which raised some other good points
because you did not post it to the FONC list, but I appreciated hearing
more about your work, and I encourage more people to check out S8 and
U8. Your work is a great contribution to moving the state of the art
forward for Smalltalk even as it may still be a work in progress worthy
of much more support.
--Paul Fernhout (pdfernhout.net)
"The biggest challenge of the 21st century is the irony of technologies
of abundance in the hands of those still thinking in terms of scarcity."