Git Product home page Git Product logo

nqp-jvm-prep's Introduction

NQP/Rakudo on JVM Preparations

What is this repository?

This repository is for exploring/building various pieces that will be needed for porting NQP and Rakudo to the JVM. Note that this is all very much a work in progress. If you're just interested in running NQP and Rakudo on the JVM - we're not at the point of having anything interesting for you yet. For now, what's in here is only of interest to those who want to follow of participate in the porting effort.

What's in here?

Here's a quick overview.

- src
  This contains the Java source for various bits of runtime support and
  the implementation of the 6model core. There's no build stuff yet; the
  best way to hack on it is to just add the directory to an Eclipse
  workspace.
- lib/JAST
  JAST is JVM Abstract Syntax Tree. It's a set of nodes that know how to
  turn themselves into a textual dump, which is then processed into JVM
  bytecode. In the future, we should be able to go straight from these
  nodes to bytecode, but that'll be much easier once NQP is cross-compiled.
  Implemented in NQP.
- lib/QAST
  QAST is the set of AST nodes that NQP and Rakudo build when compiling
  source. In lib/QAST is the code that turns these nodes into a tree of
  JAST nodes. This is where the main compilation work takes place (JAST
  itself really does not do much; it's very close to the JVM instruction
  set). Implemented in NQP.
- t
  Contains tests for turning JAST and QAST trees into .class files and
  making sure they produce the expected output. The QAST tests are the
  really interesting ones.
- Makefile
  Can build the lib/JAST and lib/QAST stuff sufficiently to get tests
  to run. Note you need to sort out building what's in src also; the
  Makefile doesn't worry about that currently.
- docs
  A ROADMAP, and some scribblings on how gather/take things will be
  dealt with (currently not particularly implemented). Maybe more
  will show up with time.

Sounds interesting; can I help with anything?

Help is welcome. See the file docs/LHF.md for a bunch of "Low Hanging Fruit" tasks (that is, things that should be comparatively easy to pick off without having to spend days learning stuff - at least if you already know a bit about some of Java, the JVM, NQP and QAST).

nqp-jvm-prep's People

Contributors

jnthn avatar coke avatar

Watchers

Norman Nunley avatar James Cloos 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.