Giter VIP home page Giter VIP logo

volution / vonuvoli-scheme Goto Github PK

View Code? Open in Web Editor NEW
152.0 6.0 12.0 7.87 MB

vonuvoli Scheme -- an R7RS interpreter written in Rust focused on systems programming and scripting (i.e. processes, file-system, etc.) with performance and safety in mind

Rust 100.00%
scheme r7rs rust interpreter systems-programming work-in-progress functional-programming systems-scripting scripting shell-scripting

vonuvoli-scheme's People

Contributors

cipriancraciun avatar

Stargazers

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

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

vonuvoli-scheme's Issues

Caching builtins -- implement various enhancements

Tasks

  • implement key hashing;
  • implement "load-or-build" functions;
  • implement expiration marker;
  • implement integrity hash;
  • implement cache cleaning of all namespaces;
  • implement cache pruning of expired values;
  • implement cache pruning if out-of-space;
  • implement "default" values for various cache-open arguments; (i.e. #f -- no-set; #t -- default, x -- that value;)
  • add time-to-live argument to select, include, and related;
  • implement caching of opened LMDB databases corresponding to previously used namespaces;
  • implement "keyed" caches (used as cache buster or additional axis in addition to namespaces);
  • implement "cache busting" based on a "token", per individual select, include, and related builtins; (this could be used to implement something similar to E-Tag HTTP header;)

Functional builtins -- implement various enhancements

Tasks

  • implement functional composition that allows for multiple values as inputs / outputs;
  • fix implementation of apply; (check R7RS specification;)
  • implement the following function call builtins (and related):
    • call-with-list;
    • call-with-vector;
    • call-with-values; (part of R7RS;)

Port builtins -- implement value writing

Tasks

  • implement support for regular expressions;
  • implement support for uniques;
  • add flag to accept only values that can be read back (i.e. accepted by the current parser, and compliant with the serialization library);

Fix R7RS compliance for `do` syntax

The following snippet should return 0 not 5!

(display
    (let ((l '()))
        (do ((i 0 (+ i 1))) ((= i 5) (l))
            (when (zero? i) (set! l (lambda () i)))))
)

Configure continuous integration

Tasks

  • identify appropriate continuous integration solutions (that are free, work with Rust nightly, and integrate with Github);
  • choose one of the continuous integration solutions;
  • configure the chosen continuous integration solution;

Replace all `bash` (and similar) scripts in the world with proper scripts written in saner languages!

Well... This is never going to happen, but one needs to aim high (in order to be disappointed)... :)


However, as silly as this objective might seem, the main reason this project was created, was to enable systems scripting (and systems programming) in a language saner than Bash, easier to work with than C, and easier to deploy than Python / Ruby.

It might happen that Scheme is not the perfect language for anyone, but it does provide a modern alternative...


It is absolutely certain this issue will always remain open to remind the developers what is one of the main project goals!

Hash builtins -- implement initial functionality

Tasks

  • implement integer-based hashing (SipHash and SeaHash);
  • implement cryptographic hashing (Blake2b and Blake2s);
  • implement both seeded (explicitly or randomly) and unseeded variants;
  • implement primitive procedures to expose builtins;

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.