Amber Smalltalk | |
Logo Caption: | An ancient flying insect caught in amber. |
Author: | Nicolas Petton |
Developer: | Amber Community |
Latest Release Version: | 0.30.0 |
Latest Release Date: | [1] |
Programming Language: | Smalltalk, JavaScript |
Operating System: | Cross-platform |
Platform: | Web browser |
Language: | English |
Genre: | Object-oriented programming language, IDE |
License: | MIT |
Amber Smalltalk, formerly named Jtalk, is an implementation of the programming language Smalltalk-80, that runs on the JavaScript runtime of a web browser. It is designed to enable client-side development using Smalltalk.[2] The programming environment in Amber is named Helios.
Amber includes an integrated development environment (IDE) with a class browser, Workspace, transcript, object inspector, and debugger. Amber is written in itself (is self-hosting), including the compiler, and compiles into JavaScript, mapping one-to-one with the JavaScript equivalent.[3] This one-to-one mapping with JavaScript differentiates Amber from other Smalltalk variants such as Pharo, Seaside, and Squeak.[2] Developing Amber project requires Node.js to run the tooling; the deployed project only needs browser to run. Amber doesn't run slowly on a bytecode virtual machine due to its convenient mapping to JavaScript, which makes compiled code run fast.
Amber was originally created by Nicolas Petton in 2011.[4] Amber was influenced by an earlier Smalltalk in browser project, named Clamato, created by Avi Bryant.[4] [5] [6] Amber and Clamato both use parsing expression grammar (PEG) libraries to parse Smalltalk source code. Amber uses the JavaScript based PEG.js library[7] [8] written by David Majda. Clamato uses PetitParser, a Smalltalk-based library written by Lukas Renggli.[4] Clamato and Amber were both influenced by earlier work by Dan Ingalls in developing the Lively Kernel implementation of Morphic to run in web browsers via JavaScript.[4] [9]
Starting with version 0.12.0, Amber modules compile to asynchronous module definition (AMD).[10] Starting with version 0.12.6, the development helper command-line interface (CLI) tool is extracted to dedicated module, which can be installed from npm as @ambers/cli
; and setting up the project and its JavaScript ecosystem (npm, grunt) is greatly simplified using this CLI tool by issuing amber init
and answering a few questions.[11] Since August 2018, project scaffolding of "amber init" is simplified, not using bower any more and only based on npm and whole project resides under npm organization @ambers
. This makes setting Amber Smalltalk easier for people with little JavaScript experience.[12]
Up-to-date instructions should be at https://lolg.it/amber/amber.
To install Amber, Git must be installed first, if it is not already. The following commands will install Amber:[13]
npm config set prefix=~/npmexport PATH="$PATH:$HOME/npm/bin" # add to .bash_profile or .bashrc
npm install -g grunt-cli grunt-init @ambers/cliTo create a new project, write:
mkdir example-projectcd example-project
amber init"amber init" step will lead to some questions about the project. For most of them, a default answer can be set. The next step is to start the server:
amber serveAfter that, typing
http://localhost:4000
in the browser will get to the application. Most browsers will block Helios IDE pop-ups by default, so browser settings may need changing to allow the Helios IDE popup to appear.Npm software can be used to access a vast array of JavaScript libraries. A library can be integrated by following only four steps:[13]
By running grunt deploy
, the Amber project is packaged using RequireJS into just a few files, at the minimum just index.html
and the.js
, which can be hosted statically as any other static web page.