HackerReposA FIELD GUIDE TO OPEN SOURCE
ProSponsor the shelf♧ 0
← Back to top all-time
codefrau
jasmine
Smalltalk2023–2024
codefrau / jasmine

jasmine

Croquet Jasmine (2004) on SqueakJS

2Distinct people
4Mentions
1Explicit recommenders
34GitHub stars
REPOSITORY AT A GLANCE

What to know before exploring

What it is

Croquet Jasmine (2004) on SqueakJS

GitHub

Where it is used

No documented product use has been verified yet.

What people are saying

This paper describes how Vanessa's groundbreaking Smalltalk VM implemented in JavaScript runs historic Smalltalk images, and elegantly and efficiently integrates Smalltalk's…

DonHopkins used a recommendation phrase. 2 indexed comments match. This is a phrase match, not a verdict.

No classified warning is attached to this page. Read the discussions before treating silence as approval.

Also in these discussions

No other repository is repeatedly linked in the same discussions.

This week on Hacker News

Nov 7–Nov 14 UTC · Direct repository links and separately labeled related project stories. Indexed through 11/14/2026, 1:49:46 PM UTC.

No direct repository links were found in the indexed HN discussions over the past seven days. Older discussions are available below.

Mentions over time

HN mentions by month4 dated mentions

Observed mentions: 2023-12-26 08:04:34 UTC to 2024-11-14 06:59:27 UTC.

0122023-12-01 00:00:00 UTC to 2024-01-01 00:00:00 UTC (exclusive): 2 mentions; 0 submissions, 2 commentsDec 20232024-01-01 00:00:00 UTC to 2024-02-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-02-01 00:00:00 UTC to 2024-03-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-03-01 00:00:00 UTC to 2024-04-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-04-01 00:00:00 UTC to 2024-05-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-05-01 00:00:00 UTC to 2024-06-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 commentsMay 20242024-06-01 00:00:00 UTC to 2024-07-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-07-01 00:00:00 UTC to 2024-08-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 comments2024-08-01 00:00:00 UTC to 2024-09-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-09-01 00:00:00 UTC to 2024-10-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-10-01 00:00:00 UTC to 2024-11-01 00:00:00 UTC (exclusive): 0 mentions; 0 submissions, 0 comments2024-11-01 00:00:00 UTC to 2024-12-01 00:00:00 UTC (exclusive): 1 mentions; 0 submissions, 1 commentsNov 2024

Counts come from the repository’s dated source evidence. Index cutoff: 2026-11-02 08:16:59 UTC.

View mention counts and date ranges
UTC ranges include their start and exclude their end. Select a period to filter the source evidence.
PeriodStart (UTC)End (exclusive, UTC)MentionsSubmissionsComments
Dec 20232023-12-01 00:00:00 UTC2024-01-01 00:00:00 UTC202
Jan 20242024-01-01 00:00:00 UTC2024-02-01 00:00:00 UTC000
Feb 20242024-02-01 00:00:00 UTC2024-03-01 00:00:00 UTC000
Mar 20242024-03-01 00:00:00 UTC2024-04-01 00:00:00 UTC000
Apr 20242024-04-01 00:00:00 UTC2024-05-01 00:00:00 UTC000
May 20242024-05-01 00:00:00 UTC2024-06-01 00:00:00 UTC000
Jun 20242024-06-01 00:00:00 UTC2024-07-01 00:00:00 UTC000
Jul 20242024-07-01 00:00:00 UTC2024-08-01 00:00:00 UTC101
Aug 20242024-08-01 00:00:00 UTC2024-09-01 00:00:00 UTC000
Sep 20242024-09-01 00:00:00 UTC2024-10-01 00:00:00 UTC000
Oct 20242024-10-01 00:00:00 UTC2024-11-01 00:00:00 UTC000
Nov 20242024-11-01 00:00:00 UTC2024-12-01 00:00:00 UTC101

What Hacker News says

4 sources
DonHopkins·Nov 14, 2024Recommendation phrase
This paper describes how Vanessa's groundbreaking Smalltalk VM implemented in JavaScript runs historic Smalltalk images, and elegantly and efficiently integrates Smalltalk's garbage collector with JavaScript's. I've written about her work and this paper previously on Hacker News: https://news.ycombinator.com/item?id=40917424 DonHopkins 4 months ago | parent | context | favorite | on: Dynamic translation of Smalltalk to WebAssembly Here's some stuff Vanessa and I discussed about Self and her SqueakJS paper: DonHopkins 6 months ago | parent | context | favorite | on: Croquet: Live, network-transparent 3D gaming Excellent article -- Liam Proven does it again! Speaking of a big Plate of Shrimp -- https://www.youtube.com/watch?v=rJE2gPQ_Yp8 ... The incredible Smalltalk developer Vanessa Freudenberg -- who besides being Croquet's devops person,
Read the rest
also developed Squeak Smalltalk, EToys, Croquet, and the SqueakJS VM written in JavaScript, and worked extensively with Alan Kay -- was just tweeting (yeah, it's ok to deadname Twitter!) about reviving Croquet from 20 years ago: https://twitter.com/codefrau/status/1738778761104068754 Vanessa Freudenberg @codefrau I've been having fun reviving the Croquet from 20 years ago using @SqueakJS . It's not perfect yet, but a lot of the old demos work (sans collaboration, so far). This is pretty close to the version Alan Kay used to give his Turing Award lecture in 2004: https://github.com/codefrau/jasmine Live version: https://codefrau.github.io/jasmine This is a version of Croquet Jasmine running on the SqueakJS virtual machine. Here is an early demo of the system from 2003. Alan Kay used it for his Turing Award lecture in 2004. While working on that demo, David Smith posted some blog entries (1, 2, 3, 4, 5), with screenshots uploaded to his Flickr album. This is work-in-progress. Contributions are very welcome. — Vanessa Freudenberg, December 2023 Dan Ingalls @daningalls Yay Vanessa! This is awesome. These are mileposts in our history that now live again! https://twitter.com/codefrau/status/1526618670134308864 Vanessa Freudenberg @codefrau 7:40 PM · May 17, 2022 My company @CroquetIO announced #MicroverseBuilder today. Each microverse is "just" a static web page that you can deploy anywhere, but it is fully 3D multiplayer, and can be live-coded. Portals show and link to other developer's worlds. This is our vision of the #DemocratizedMetaverse as opposed to the "Megaverses" owned by Big Tech. It runs on #CroquetOS inside your browser, which provides the client-side real-time synchronized JS VMs that you already know from my other posts. #MicroverseBuilder is in closed alpha right now because we don't have enough #devrel people yet (we're hiring!) but you can join our Discord in the mean time and the open beta is not far away. We are also looking for summer interns! #internships https://www.youtube.com/watch?v=CvvuAbjh11U And of course #CroquetOS itself is already available for you to build multiplayer apps, as is our #WorldcoreEngine, the game engine underlying #MicroverseBuilder. Learn more at https://croquet.io/docs/ and let's get hacking :) And as of today, #MicroverseBuilder is Open Source! lproven 6 months ago | next [–] Thanks Don! This is my original submission from back at the time: https://news.ycombinator.com/item?id=35302162 HN really needs a better automatic-deduplication engine. E.g. If the same link is posted again months later, mark the original post as new again with an upvote, and the caption (if changed) as a comment... codefrau 6 months ago | prev [–] Haha, thanks for the plug, Don! I just fleshed out the README for my Croquet resurrection yesterday so others may have an easier time trying it. It maybe even contribute :) https://github.com/codefrau/jasmine DonHopkins 6 months ago | parent [–] Vanessa, it has always amazed me how you managed to square the circle and pull a rabbit out of a hat by the way you got garbage collection to work efficiently in SqueakJS, making Smalltalk and JavaScript cooperate without ending up with two competing garbage collectors battling it out. (Since you can't enumerate "pointers" with JavaScript references by just incrementing them.) https://freudenbergs.de/vanessa/publications/Freudenberg-201... >The fact that SqueakJS represents Squeak objects as plain JavaScript objects and integrates with the JavaScript garbage collection (GC) allows existing JavaScript code to interact with Squeak objects. [...] >• a hybrid garbage collection scheme to allow Squeak object enumeration without a dedicated object table, while delegating as much work as possible to the JavaScript GC, Have you ever thought about implementing a Smalltalk VM in WebAssembly, and how you could use the new reference types for that? https://bytecodealliance.org/articles/reference-types-in-was... codefrau 6 months ago | root | parent [–] I would like to speed up some parts of SqueakJS using web assembly. For example BitBlt would be a prime target. For the overall VM, however, I’ll leave that to others (I know Craig Latta has been making progress). I just love coding and debugging in a dynamic high-level language. The only thing we could potentially gain from WASM is speed, but we would lose a lot in readability, flexibility, and to be honest, fun. I’d much rather make the SqueakJS JIT produce code that the JavaScript JIT can optimize well. That would potentially give us more speed than even WASM. Peep my brain dumps and experiments at https://squeak.js.org/docs/jit.md.html DonHopkins 6 months ago | root | parent | next [–] >Where this scheme gets interesting is when the execution progressed somewhat deep into a nested call chain and we then need to deal with contexts. It could be that execution is interrupted by a process switch, or that the code reads some fields of thisContext, or worse, writes into a field of thisContext. Other “interesting” occasions are garbage collections, or when we want to snapshot the image. Let's look at these in turn. This sounds similar to Self's "dynamic deoptimization" that it uses to forge virtual stack frames representing calls into inlined code, for the purposes of the debugger showing you the return stack that you would have were the functions not inlined. I always thought that should be called "dynamic pessimization". Debugging Optimized Code with Dynamic Deoptimization. Urs Hölzle, Craig Chambers, and David Ungar, SIGPLAN Notices 27(7), July, 1992. https://bibliography.selflanguage.org/dynamic-deoptimization... That paper really blew my mind and cemented my respect for Self, in how they were able to deliver on such idealistic promises of simplicity and performance, and then oh by the way, you can also debug it too. codefrau 6 months ago | root | parent | next [–] Absolutely. And you know Lars Bak went from Self to Strongtalk to Sun’s Java Hotspot VM to Google’s V8 JavaScript engine. My plan is to do as little as necessary to leverage the enormous engineering achievements in modern JS runtimes. DonHopkins 6 months ago | root | parent | prev [–] Glad I asked! Fun holiday reading to curl up with a cat to read. Thanks! I love Caffeine, and I use Craig's table every day! Not a look-up table, more like a big desk, which I bought from him when he left Amsterdam. ;) --- Vanessa> Our guiding principle will be to keep our own optimizations to a minimum in order to have quick compiles, but structure the generated code in a way so that the host JIT can perform its own optimizations well. Don> That's the beautiful thing about layering the SqueakJS VM on top of the JS VM: you've already paid for it, it works really well, so you might as well use it to its full extent! Very different set of trade-offs than implementing Self in C++. Vanessa> Precisely. My plan is to do as little as necessary to leverage the enormous engineering achievements in modern JS runtimes.
In SqueakJS: A modern and practical Smalltalk that runs in any browser (2014) [pdf]
DonHopkins·Jul 9, 2024Recommendation phrase
Here's some stuff Vanessa and I discussed about Self and her SqueakJS paper: DonHopkins 6 months ago | parent | context | favorite | on: Croquet: Live, network-transparent 3D gaming Excellent article -- Liam Proven does it again! Speaking of a big Plate of Shrimp -- https://www.youtube.com/watch?v=rJE2gPQ_Yp8 ... The incredible Smalltalk developer Vanessa Freudenberg -- who besides being Croquet's devops person, also developed Squeak Smalltalk, EToys, Croquet, and the SqueakJS VM written in JavaScript, and worked extensively with Alan Kay -- was just tweeting (yeah, it's ok to deadname Twitter!) about reviving Croquet from 20 years ago: https://twitter.com/codefrau/status/1738778761104068754 Vanessa Freudenberg @codefrau I've been having fun reviving the Croquet from 20 years ago using @SqueakJS . It's not perfect yet, but a lot of the ol
Read the rest
d demos work (sans collaboration, so far). This is pretty close to the version Alan Kay used to give his Turing Award lecture in 2004: https://github.com/codefrau/jasmine Live version: https://codefrau.github.io/jasmine This is a version of Croquet Jasmine running on the SqueakJS virtual machine. Here is an early demo of the system from 2003. Alan Kay used it for his Turing Award lecture in 2004. While working on that demo, David Smith posted some blog entries (1, 2, 3, 4, 5), with screenshots uploaded to his Flickr album. This is work-in-progress. Contributions are very welcome. — Vanessa Freudenberg, December 2023 Dan Ingalls @daningalls Yay Vanessa! This is awesome. These are mileposts in our history that now live again! https://twitter.com/codefrau/status/1526618670134308864 Vanessa Freudenberg @codefrau 7:40 PM · May 17, 2022 My company @CroquetIO announced #MicroverseBuilder today. Each microverse is "just" a static web page that you can deploy anywhere, but it is fully 3D multiplayer, and can be live-coded. Portals show and link to other developer's worlds. This is our vision of the #DemocratizedMetaverse as opposed to the "Megaverses" owned by Big Tech. It runs on #CroquetOS inside your browser, which provides the client-side real-time synchronized JS VMs that you already know from my other posts. #MicroverseBuilder is in closed alpha right now because we don't have enough #devrel people yet (we're hiring!) but you can join our Discord in the mean time and the open beta is not far away. We are also looking for summer interns! #internships https://www.youtube.com/watch?v=CvvuAbjh11U And of course #CroquetOS itself is already available for you to build multiplayer apps, as is our #WorldcoreEngine, the game engine underlying #MicroverseBuilder. Learn more at https://croquet.io/docs/ and let's get hacking :) And as of today, #MicroverseBuilder is Open Source! lproven 6 months ago | next [–] Thanks Don! This is my original submission from back at the time: https://news.ycombinator.com/item?id=35302162 HN really needs a better automatic-deduplication engine. E.g. If the same link is posted again months later, mark the original post as new again with an upvote, and the caption (if changed) as a comment... codefrau 6 months ago | prev [–] Haha, thanks for the plug, Don! I just fleshed out the README for my Croquet resurrection yesterday so others may have an easier time trying it. It maybe even contribute :) https://github.com/codefrau/jasmine DonHopkins 6 months ago | parent [–] Vanessa, it has always amazed me how you managed to square the circle and pull a rabbit out of a hat by the way you got garbage collection to work efficiently in SqueakJS, making Smalltalk and JavaScript cooperate without ending up with two competing garbage collectors battling it out. (Since you can't enumerate "pointers" with JavaScript references by just incrementing them.) https://freudenbergs.de/vanessa/publications/Freudenberg-201... >The fact that SqueakJS represents Squeak objects as plain JavaScript objects and integrates with the JavaScript garbage collection (GC) allows existing JavaScript code to interact with Squeak objects. [...] >• a hybrid garbage collection scheme to allow Squeak object enumeration without a dedicated object table, while delegating as much work as possible to the JavaScript GC, Have you ever thought about implementing a Smalltalk VM in WebAssembly, and how you could use the new reference types for that? https://bytecodealliance.org/articles/reference-types-in-was... codefrau 6 months ago | root | parent [–] I would like to speed up some parts of SqueakJS using web assembly. For example BitBlt would be a prime target. For the overall VM, however, I’ll leave that to others (I know Craig Latta has been making progress). I just love coding and debugging in a dynamic high-level language. The only thing we could potentially gain from WASM is speed, but we would lose a lot in readability, flexibility, and to be honest, fun. I’d much rather make the SqueakJS JIT produce code that the JavaScript JIT can optimize well. That would potentially give us more speed than even WASM. Peep my brain dumps and experiments at https://squeak.js.org/docs/jit.md.html DonHopkins 6 months ago | root | parent | next [–] >Where this scheme gets interesting is when the execution progressed somewhat deep into a nested call chain and we then need to deal with contexts. It could be that execution is interrupted by a process switch, or that the code reads some fields of thisContext, or worse, writes into a field of thisContext. Other “interesting” occasions are garbage collections, or when we want to snapshot the image. Let's look at these in turn. This sounds similar to Self's "dynamic deoptimization" that it uses to forge virtual stack frames representing calls into inlined code, for the purposes of the debugger showing you the return stack that you would have were the functions not inlined. I always thought that should be called "dynamic pessimization". Debugging Optimized Code with Dynamic Deoptimization. Urs Hölzle, Craig Chambers, and David Ungar, SIGPLAN Notices 27(7), July, 1992. https://bibliography.selflanguage.org/dynamic-deoptimization... That paper really blew my mind and cemented my respect for Self, in how they were able to deliver on such idealistic promises of simplicity and performance, and then oh by the way, you can also debug it too. codefrau 6 months ago | root | parent | next [–] Absolutely. And you know Lars Bak went from Self to Strongtalk to Sun’s Java Hotspot VM to Google’s V8 JavaScript engine. My plan is to do as little as necessary to leverage the enormous engineering achievements in modern JS runtimes. DonHopkins 6 months ago | root | parent | prev [–] Glad I asked! Fun holiday reading to curl up with a cat to read. Thanks! I love Caffeine, and I use Craig's table every day! Not a look-up table, more like a big desk, which I bought from him when he left Amsterdam. ;) --- Vanessa> Our guiding principle will be to keep our own optimizations to a minimum in order to have quick compiles, but structure the generated code in a way so that the host JIT can perform its own optimizations well. Don> That's the beautiful thing about layering the SqueakJS VM on top of the JS VM: you've already paid for it, it works really well, so you might as well use it to its full extent! Very different set of trade-offs than implementing Self in C++. Vanessa> Precisely. My plan is to do as little as necessary to leverage the enormous engineering achievements in modern JS runtimes.
In Dynamic translation of Smalltalk to WebAssembly
Excellent article -- Liam Proven does it again! Speaking of a big Plate of Shrimp -- https://www.youtube.com/watch?v=rJE2gPQ_Yp8 ... The incredible Smalltalk developer Vanessa Freudenberg -- who besides being Croquet's devops person, also developed Squeak Smalltalk, EToys, Croquet, and the SqueakJS VM written in JavaScript, and worked extensively with Alan Kay -- was just tweeting (yeah, it's ok to deadname Twitter!) about reviving Croquet from 20 years ago: https://twitter.com/codefrau/status/1738778761104068754 Vanessa Freudenberg @codefrau I've been having fun reviving the Croquet from 20 years ago using @SqueakJS . It's not perfect yet, but a lot of the old demos work (sans collaboration, so far). This is pretty close to the version Alan Kay used to give his Turing Award lecture in 2004: https://github.com/codefrau/jasmine Live versi
Read the rest
on: https://codefrau.github.io/jasmine This is a version of Croquet Jasmine running on the SqueakJS virtual machine. Here is an early demo of the system from 2003. Alan Kay used it for his Turing Award lecture in 2004. While working on that demo, David Smith posted some blog entries (1, 2, 3, 4, 5), with screenshots uploaded to his Flickr album. This is work-in-progress. Contributions are very welcome. — Vanessa Freudenberg, December 2023 Dan Ingalls @daningalls Yay Vanessa! This is awesome. These are mileposts in our history that now live again! https://twitter.com/codefrau/status/1526618670134308864 Vanessa Freudenberg @codefrau 7:40 PM · May 17, 2022 My company @CroquetIO announced #MicroverseBuilder today. Each microverse is "just" a static web page that you can deploy anywhere, but it is fully 3D multiplayer, and can be live-coded. Portals show and link to other developer's worlds. This is our vision of the #DemocratizedMetaverse as opposed to the "Megaverses" owned by Big Tech. It runs on #CroquetOS inside your browser, which provides the client-side real-time synchronized JS VMs that you already know from my other posts. #MicroverseBuilder is in closed alpha right now because we don't have enough #devrel people yet (we're hiring!) but you can join our Discord in the mean time and the open beta is not far away. We are also looking for summer interns! #internships https://www.youtube.com/watch?v=CvvuAbjh11U And of course #CroquetOS itself is already available for you to build multiplayer apps, as is our #WorldcoreEngine, the game engine underlying #MicroverseBuilder. Learn more at https://croquet.io/docs/ and let's get hacking :) And as of today, #MicroverseBuilder is Open Source!
In Croquet: Live, network-transparent 3D gaming

MAKE YOURSELF AT HOME

A few shortcuts

/
Search the collection
?
Open this guide
Esc
Close dialogs and navigation

Your saved repositories and interests stay in this browser.