Giter Site home page Giter Site logo

babelsberg-s's Introduction

Babelsberg/S

Build Status

A Squeak/Smalltalk implementation of Babelsberg licensed under MIT

See also Babelsberg/R and Babelsberg/JS

Work in progress.

How to Install

Download prebuilt image

Prebuilt images are published when the tests are green. You probably want the Image, Changes, and Sources. You can also try it online through SqueakJS (but note that this runs very slowly, and does not support Z3).

Install into your own image

  1. Get Squeak 4.5 or later with a recent CogVM for your operating system. Make sure that the SqueakSSL plugin is included (should be true for all official distributions.)
  2. Load Babelsberg/S into your image (You need Metacello¹)
Metacello new
  baseline: 'BabelsbergS';
  repository: 'github://babelsberg/babelsberg-s/repository';
  load.

How to develop

If you want to forward development, there are a number of areas that need work. In general, the system needs to be refactored so other constraint solvers (e.g. DeltaBlue) can be added more easily. There are also a number of things that this implementation does not do, yet, that are desirable, such as identity constraints, constraint priorities at time of definition, proper readonly variables, or automatic recalculation of constraints when a complex object involved in the constraint changes identity (the latter is an optimization found in the Babelsberg/R and Babelsberg/JS implementations). Further down the road, the constraints from different constraint solvers should be able to interact (as implemented in Babelsberg/JS).

The repository includes a package, Babelsberg-Tests, that includes the conformance tests generated from the executable semantics. These may be a little outdated if they have not been regenerated in some time, but in any case, a goal for further development should be to improve pass rates on these tests. As a guideline, Babelsberg/JS currently passes 39 of these tests using a combination of Z3 and DeltaBlue (the latter for identity constraints). Getting the number for Babelsberg/S up to mid-30 would be worthwhile.

License

All files except those in Cassowary.package are under the MIT License.
The files in Cassowary.package are under the LGPL License


Metacello

In case you do not have Metacello in your Squeak image, bootstrap it like this:

Installer gemsource
    project: 'metacello';
    install: 'ConfigurationOfMetacello'.

"Bootstrap Metacello Preview"
((Smalltalk at: #ConfigurationOfMetacello) project version: #'previewBootstrap') load.

"Load the Preview version of Metacello from GitHub and then load Latest Baseline"
(Smalltalk at: #Metacello) new
  configuration: 'MetacelloPreview';
  version: #stable;
  repository: 'github://Metacello/metacello:configuration';
  load.
(Smalltalk at: #Metacello) new
  baseline: 'Metacello';
  repository: 'github://Metacello/metacello:master/repository';
  get.
(Smalltalk at: #Metacello) new
  baseline: 'Metacello';
  repository: 'github://Metacello/metacello:master/repository';
  load.

babelsberg-s's People

Contributors

timfel avatar krono avatar

Stargazers

Jim Grisham avatar Joshua Scholar avatar Chen Tao avatar  avatar Andrew Berg avatar Samuel Kelemen avatar Zaki Mughal [sivoais] avatar Jeff Carpenter avatar salotz avatar Pavel avatar

Watchers

 avatar Conrad Calmez avatar Jim Law avatar James Cloos avatar Alan B avatar Jens Lincke avatar Christoph Matthies avatar Stefan Ramson avatar  avatar

Forkers

timfel rbarraud

babelsberg-s's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.