Giter VIP home page Giter VIP logo

schego's Introduction

Schego - A Scheme implementation written in Go

shay-go: noun

definition: yet another Scheme implementation that probably didn't need to exist, but does anyway.

What?

The title is pretty descriptive. But it's missing some details. In addition to being a (soon-to-be) fully R7RS-compatible Scheme implementation, Schego will also include a stack-based, language-agnostic VM, suitable for implementing other languages instead of Scheme.

At some point in the future, Schego's VM will also include a JIT targeting the x86-64/amd64 platform (and perhaps some ARM devices), in addition to being able to be embedded into any Go application to provide Scheme scripting support, or just a generic VM to build on top of. Why would you want to do that when LLVM exists? I'm not entirely sure. But you could.

To summarize Schego's (planned) feature set in a quick bullet point list:

  • Complete R7RS Scheme implementation
  • R7RS SLib (https://github.com/petercrlane/r7rs-libs) compatibility
  • Hyrbrid JIT backend targeting x86-64/amd64 and maybe possibly some ARM devices down the road
  • libschego build target allowing embedding into almost any Go application
  • STM (Software Transactional Memory) multitasking model, possibly the first of its kind in Scheme

Why?

To familiarize myself with Go, primarily. There was, at least at the time I write this, very little practical need for a serious Scheme implementation in Go - many good, established Scheme implementations are already out there, with some of them even having basically the entire feature set I initially planned for Schego.

I do intend to implement Schego with a watchful eye towards readability, so hopefully the codebase will be able to serve as a reasonable frame of reference towards anyone trying to implement something similar. I'll also cover Schego's progress on my blog, which will hopefully be educational and at least slightly entertaining.

That, and I needed an excuse to do something with Scheme.

schego's People

Contributors

dangerontheranger avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

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.