Source code Report issues Develop instructions

Thanks for your interest in the Rascal MPL project! This page is intended for developers contributing to the source code of the Rascal implementation itself, rather than programmers that use Rascal.

Rascal is a (meta) programming language with the following features:

  1. type-checker (rascal-core)
  2. interpreter that type-checks (rascal)
  3. compiler (rascal-core)
  4. standard library (rascal)
  5. parser generator (rascal)
  6. type-checker generator (typepal)
  7. top-down context-free general parsing algorithm (rascal)
  8. hash-trie based implementation of relational calculus (via capsule)
  9. immutable values (sets, lists, numbers, maps, algebraic data-types), via vallang
  10. REPL (rascal)
  11. Eclipse IDE with IDE generator based on Eclipse IMP (rascal-eclipse)
  12. VScode IDE with IDE generator based on LSP (rascal-vscode)
  13. Interactive documentation (tutor) compiler (rascal)
  14. Interactive documentation content (rascal)
  15. Libraries for

Contributing to libraries or the standard library is preferred over contributions to the core implementation features since features in the core are tangled and therefore complex. We do have a lot of tests, so if you plan to contribute a bug-fix or a new feature don’t forget to run mvn test. If you are a parser, type-checking, or functional programming/term-rewriting expert, please do not hesitate to give us feedback or suggestions, we love those topics and it’s always good to talk to a fellow enthusiast and learn something new.

Library contributions

If you’d like to contribute a new library or library function do not hesitate to contact us: open an enhancement or bug issue here and we can start discussing the ins and outs of your idea! Also we’d be able to help out; you don’t have to do it all alone.

Contributing ideas for enhancements and bug fixes

We welcome feedback. Please use GitHub issues to submit your contributions such as pull requests, bug reports and suggestions for enhancement. Thanks!

Source access

Rascal is completely hosted on GitHub, under the UseTheSource repositories. See our developer setup instructions on which projects to checkout and dependencies to install.

Continuous integration

  • We use Github’s Actions for continuous integration:
    • Vallang Build Status Vallang
    • Capsule Build Status Capsule
    • Rascal Build Status Rascal
    • Rascal-core Build Status Rascal Compiler
    • Typepal Build Status TypePal
    • Rascal-eclipse Build Status Rascal-Eclipse
    • Rascal-vscode Build Status Rascal-VScode