* More immediate types. The classic Squeak/Pharo image type only allows for
objects, strings, and integers as immediates, if I recall correctly.
Spur adds individual characters, floats (soon), and some other stuff
I'm spacing. Since all Smalltalk values are nominally heap-based,
having more immediates is a really big deal.
* Allows for a segmented heap. For desktop apps, this isn't a big deal,
but for server apps, it means that the VM can actually relinquish
RAM.
* Better object pinning, which makes FFI a lot easier.
* A more GC-friendly design, that should enable a much faster GC pass.
The only downside, IIRC, is that the total image size grows by about 15%, but that's a pretty good trade-off, given a normal image is usually in the tens of megabytes.
I so often realize, when I look at my efforts in my own recreational programming, that I want to recreate and recapture the joy of working in smalltalk (which I've only ever done recreationally w/ Squeak/Pharo). Just with tools/APIs that I'm more comfortable with in my day-to-day programming.
Pharo is a fork of Squeak, loosely along the lines of "let's rip out and replace as much old cruft as we can" vs. "let's maintain backwards compatibility where reasonably possible", respectively.
The big news here, however, is the new VM and image format, and since Pharo and Squeak have never diverged in that area, it's likely that Pharo will benefit from these improvements as well.
It will indeed. The current plan (subject to change) is that Pharo 5 will ship as Pharo 4 + Spur (32 bit), then Pharo 5.1 will be Pharo 4 + Spur (64 bit), and then normal releases will resume. But as I said, that's just the current plan, and so much has landed on the 5.0 branch already that I'm a bit dubious they'll stick to that.
I should try out version 5. After many years of using Squeak I jumped to the fork Pharo for reasons I now forget.
I blogged many years ago that if/when I retired I might mostly only use Squeak for the rest of my life for learning/hacking projects. I have largely used Lisp languages since the early 1980s, but the Smalltalk environment is so much fun!
With Lisp (mostly ironscheme, guile and racket for me) and smalltalk, I have this feeling that just about every other language has been playing catch-up.
It is just recently that some scripting languages have started giving me the same feeling of bliss.
For one, operating on the running system and seeing immediate changes. I started in 1979 with a Commodore PET 2001, and although limited and not comparable to say a Lisp Machine (envy), it made me feel like I was the 'owner' and could jump into BASIC and program away at the resources in the machine - POKE, PEEK. I guess this gives new meaning to 'poking around' :)
Sorry, I wasn't clear enough. I was asking which modern scripting languages do you think are the closest to interactive Lisp and Smalltalk environments. I'm way too young to remember "the real thing", but I know Pharo a bit (Squeak fork) and recently I started using StumpWM, which is a window manager written in Common Lisp. In the latter case I'm practically living inside slime-repl.
The point being that I know quite a bit modern, scripting languages (Python, Ruby, JavaScript, TCL, Io, Lua, ...) and a couple more experimental, dynamic languages and still, none of them "give me the same feeling of bliss". They're getting closer, but are not quite there yet.
So I was just curious which scripting languages the GP had in mind.
@mark_l_watson: I'm with you. I love Lisp/Scheme, but I find myself always playing with a Smalltalk environment to spite my other forays into programming languages. Right now, I am comparing µO [1] to the Lisp-based openmusic [2].
µO is more code and interfaces with Csound, whereas openmusic is node, or patching like PureData or Max. I am always blown away and get lost in the onion layers of Squeak.
I like the newer theme vs. the older, colorful gui theme.
I'm just curious how people share projects with modern Squeak these days. I learned Squeak at GaTech and while I some what appreciated the language I really hated Squeaks tools and development style (basically monkey patching and sending big changesets and by god I want to use emacs not Squeaks Mattel/Fisher price kids editor... I'm sure its better now).
Sadly Squeak was the start of my slow and gradual hate of OOP languages (Java later on did not help) but it did have some really cool things like traits and continuations.
Pharo is an effort to make a "grown-up" Squeak. It's hard to get the kind of interaction that makes Smalltalk work when you're inside a general-purpose text editor. When I'm working in Smalltalk, even though it's always a "toy" program, I feel like I'm sort of reaching into the computer's inner world and fiddling with things in a way you can't do with a plain old text editor.
> When I'm working in Smalltalk, even though it's always a "toy" program, I feel like I'm sort of reaching into the computer's inner world and fiddling with things in a way you can't do with a plain old text editor.
I got some shit for bringing this up last time, and I will again.
Does anyone use GNU Smalltalk and how does it compete with the CogVM on performance?
(GNU Smalltalk is a text-based version of Smalltalk, on a separate dedicated VM, and apparently is shippped with a functional Seaside port, and there were even cool incomplete projects like a Qt shim library to buiild GUIs [0]).
[0] It ought to be gst-qt, as mentioned here, but unfortunately Github links and initial queries led me to a dead end for actual repos with code.
It's used by Etoile, at least. The problem with GNU Smalltalk is lack of traction (developers, users) and incompatibility with Pharo/Squeak. Pharo is the open source Smalltalk with the most traction at this point.
There are also licensing concerns because it's LGPL, whereas Pharo/Squeak is MIT.
I think using it as a scripting language in a UNIX environment would be easier than Pharo though.
Cool. I would love to see a Linux/UNIX system introspection tool built in any of the ST implementations.
And do you work on Etoile? I am very surprised to hear it was built with Smalltalk. I remember some devs on FLOSS Weekly years ago, and I could be wrong, and I thought this was one of the few projects in the FLOSS world using Objective C (I thought it was a branch of GNUStep, but maybe I am just getting it confused with GNUStep).
That is a very cool tidbit. Maybe it is time I finally sit down and play with EtoileOS. I listened a long time ago (we are talking years), but this explains also a point I remember that came up: object persistence and how modern OS X was doing cool stuff with application state (not just files) over reboots. Smalltalk makes that interest a lot more obvious now, and it seemed cool but far out and complicated at the time. Will definitely listen to the interview and encourage others to do the same!
The last time I checked, Etoille used "Pragmatic Smalltalk" built on top of their Objective-c runtime and their Language Kit. It's actually a compiler that generated code compatible with Objective-C. More details can be found from David Chisnall's presentation at FOSDEM a few years ago.
I prefer the IDE to an editor because I don't have to type as much boilerplate. For example, to create a class I just fill out a class template and accept, and to add a method I just type code in the method pane and accept. The IDE is built just for Smalltalk and is extremely productive as a result.
With Emacs + SLIME, I still find myself typing a lot of "(defun...", "(defmacro...", and "(defclass...") boilerplate.
Another ramblin wreck (cs '05) with Squeak PTSD checking in.
The tooling was just terrible and turned me off a lot of the better things in OOP for a lot for years. I guess it serves as good training for kids who come out of school and fall into some awful legacy codebase that makes their first job hell, but for the rest of us it seemed like and unnecessarily confusing and frustrating choice.
The people interested in that sort of thing left for Pharo long ago. The Pharo platform seems much more practically-minded, and the website has some case studies of businesses built using it: http://pharo.org/success
I remember Squeak used to have a bunch of different window colors for different tools, which always made Squeak look like a toy unfit for serious work.
I downloaded the latest, and now there seems to be uniformity in the UI, with a single window style for all tools. It looks like Pharo has pushed them in the right direction.
43 comments
[ 4.1 ms ] story [ 141 ms ] threadAlso lisp.
The big news here, however, is the new VM and image format, and since Pharo and Squeak have never diverged in that area, it's likely that Pharo will benefit from these improvements as well.
I blogged many years ago that if/when I retired I might mostly only use Squeak for the rest of my life for learning/hacking projects. I have largely used Lisp languages since the early 1980s, but the Smalltalk environment is so much fun!
Congrats to the Squeak team.
It is just recently that some scripting languages have started giving me the same feeling of bliss.
The point being that I know quite a bit modern, scripting languages (Python, Ruby, JavaScript, TCL, Io, Lua, ...) and a couple more experimental, dynamic languages and still, none of them "give me the same feeling of bliss". They're getting closer, but are not quite there yet.
So I was just curious which scripting languages the GP had in mind.
It is really a pity that those ideas didn't spread as they should have been.
µO is more code and interfaces with Csound, whereas openmusic is node, or patching like PureData or Max. I am always blown away and get lost in the onion layers of Squeak.
I like the newer theme vs. the older, colorful gui theme.
Sadly Squeak was the start of my slow and gradual hate of OOP languages (Java later on did not help) but it did have some really cool things like traits and continuations.
There's always http://dmitrymatveev.co.uk/shampoo/
That's what I didn't like when I was playing with smalltalk in school (in '87)
Does anyone use GNU Smalltalk and how does it compete with the CogVM on performance?
(GNU Smalltalk is a text-based version of Smalltalk, on a separate dedicated VM, and apparently is shippped with a functional Seaside port, and there were even cool incomplete projects like a Qt shim library to buiild GUIs [0]).
[0] It ought to be gst-qt, as mentioned here, but unfortunately Github links and initial queries led me to a dead end for actual repos with code.
http://smalltalk.gnu.org/project
There are also licensing concerns because it's LGPL, whereas Pharo/Squeak is MIT.
I think using it as a scripting language in a UNIX environment would be easier than Pharo though.
And do you work on Etoile? I am very surprised to hear it was built with Smalltalk. I remember some devs on FLOSS Weekly years ago, and I could be wrong, and I thought this was one of the few projects in the FLOSS world using Objective C (I thought it was a branch of GNUStep, but maybe I am just getting it confused with GNUStep).
https://twit.tv/shows/floss-weekly/episodes/56
For others who did not know about its use of Smalltalk, the dev page hints at it.
http://etoileos.com/downloads/installtrunk/
That is a very cool tidbit. Maybe it is time I finally sit down and play with EtoileOS. I listened a long time ago (we are talking years), but this explains also a point I remember that came up: object persistence and how modern OS X was doing cool stuff with application state (not just files) over reboots. Smalltalk makes that interest a lot more obvious now, and it seemed cool but far out and complicated at the time. Will definitely listen to the interview and encourage others to do the same!
[0] http://www.newspeaklanguage.org [1] https://news.ycombinator.com/item?id=10049588
With Emacs + SLIME, I still find myself typing a lot of "(defun...", "(defmacro...", and "(defclass...") boilerplate.
The tooling was just terrible and turned me off a lot of the better things in OOP for a lot for years. I guess it serves as good training for kids who come out of school and fall into some awful legacy codebase that makes their first job hell, but for the rest of us it seemed like and unnecessarily confusing and frustrating choice.
Application servers? Is anyone writing servers in squeak?
I downloaded the latest, and now there seems to be uniformity in the UI, with a single window style for all tools. It looks like Pharo has pushed them in the right direction.
I learned Smalltalk with Visual Works back in 1995, it was a great experience.