S8

DIY smalltalk platform

Alejandro Reimondo
aleReimondo@smalltalking.net

Motivation

"VM" concept
Limited the application/adoption of smalltalk.
A few VM experts in 30years (most smalltalkers do not invest time on it).
Good for customer-provider times, but a break in an open world.

Motivation

The invisible VM
It is not a good idea to build another smalltalk VM (no change).
The V8 VM was similar from start to a high perfomance st vm
(generational GC, no bytecodes, +1000 user base)
S8 project Started +2.5 years ago running on top of V8.
Built a subset that can be published open source, and can run in most javascript VMs.

License terms

  • MIT License
    S8 image is MIT licensed.
    The image is javascript code.
    The base image do not require VM changes (ECMAScript 5).

U8 service

How to run S8?

The boot can be embedded in the image.
Can load/detect low level features dynamically.

S8 Kernel

Object
Actions ActionSequence Events
change/update events perform:... basicAt:[put:] evaluate/deferred json
Behavior Class Metaclass
ivars, clsVars, clsIvars, pools
BlockClosure CompiledMethod
functions (callable)
Boolean Number String UndefinedObject
readonly strings

S8 Kernel


Collection Array Dictionary Set
variable size arrays
Exception Error

Association ComposedAssociations

S8 "minimal" image

Kernel
[do NOT need eval]

Compiler
Compiler Parser FileIn/Out Export
customizable compiler, trigger events

S8 "minimal" image


Image
Image & snapshot
SystemManager
#launch

Natives
NativeObject
description builders #as:
events(html5 local)
NativeLibrary
URLs, singleton, custom instantiation

S8 "minimal" image

Syntax Sugar

  • inline code {'...'}
    Object>>#basicDelete:
  • javascript name #{aName}
    #{history}
  • function call #aFunctionName:arg1:arg2:...
    Object>>#print:
  • direct access aName#prop aName[prop]
    Object>>#basicAt:put:

Platforms

Console - linux, win32, win64
Browser
Node.js
Android - A8
Cordova
.Net - CS8
Chrome extensions

Console

Console - win32, win64, & linux
builds & tests
binary modules generation (.st.js)

Console

Console - win32, win64, & linux

3+2*2 = 10

Web

Browser Agent
destop/web apps
WI8 (DOM based widgets)

Node.js

Server side S8
Image based, app based
remote management

Complete API implementation

Android A8

SDK level, webview
Native Android apps
Transparent access to java objects
java from/to s8
Can access local and remote resources (declared when building app)

Cordova Cva8


Native multiplatform
Cordova API
Extensible via plugins

Cordova Cva8

API
Accelerometer Camera Capture Compass
Connection Contacts Device Events File
Geolocation Globalization InAppBrowser
Media Notification Splashscreen Storage

.Net CS8


Two VMs
Transparent access to .net objects
.net to/from s8
experimental IIS

Chrome extension


Full chrome.* API
debugger
devtools
management
extension
pageActions
tabs
+++more

S8 Tools

Compact browser
Comparative browser
References
Inspectors & Debuggers
Meeting forces

U8 frameworks

DOM, DOMMedia, XMLHttp, CSSOM
WI8+UI8

U8 frameworks

Chrome
NodeJS, FFI

U8 frameworks

Html5 - websockets, events, mediastream, workers, WebRTC
WebIDL - WWW specs
FileAPI battery GeoLocation,...

U8 frameworks

Google Earth, Panoramio
Highcharts
Gamepad, Kinect
Three 3D

Open works/extensions

-complete alternative debugging tools
-social development tools
-more startups (iOS)

S8

The DIY Smalltalk

  • doIt your way
  • change/extend/run your objects, anywhere
  • ...in a social development context

_http://u8.smalltalking.net_
_Contribution #324_

Building GUI...