Git Product home page Git Product logo

moarvm's Introduction

MoarVM

MoarVM (short for Metamodel On A Runtime Virtual Machine) is a runtime built for the 6model object system. It is primarily aimed at running NQP and Rakudo Perl 6, but should be able to serve as a backend for any compilers built using the NQP compiler toolchain.

Build It

Build Status

Building the VM itself takes just:

perl Configure.pl
make

(Or nmake/gmake on Windows). Currently it is known to build on Windows with MSVC and gcc, and with gcc and clang on Linux & MacOS X. We're expanding this with time.

Type perl Configure.pl --help to see the configure-time options, as well as some descriptions of the make-time options/targets.

Building an NQP with MoarVM

After installing MoarVM, you can clone the NQP repository or grab a source tarball and use the Configure.pl script in it like so:

perl Configure.pl --backend=moar --prefix=where_your_moarvm_install_lives

Alternatively, the same Configure.pl script in NQP is able to clone, build and install a copy of MoarVM on its own if you supply the --gen-moar flag.

Building a Rakudo with MoarVM

When pointing the Configure.pl script in rakudo's repository at a --prefix that has an nqp-m installed in it, it will automatically detect and configure the MoarVM backend. Alternatively, --backend=moar,jvm can be used to force it to build the MoarVM and JVM backends, for example. Just like in the NQP Configure.pl script, you have the option to supply a --gen-moar flag that will do all the work for you, including creating an nqp-m.

Status

MoarVM is currently in development. It can run all of the NQP test suite, all of the Rakudo sanity tests, and passes more spectests than any other Rakudo Perl 6 backend (though some backends pass tests that it does not).

Unlike the JVM backend of NQP, the MoarVM repo is not currently planned to be integrated into the main NQP source repo http://github.com/perl6/nqp but instead can be pulled in by Configure.pl --gen-moar configure script in the NQP repo, same as it can --gen-parrot.

Feature overview

Some key features provided by MoarVM include:

  • Meta-object programming, using the 6model design
  • Precise, generational, and parallel GC
  • Unicode 9.0 support (Unicode Character Database, encodings, normalization)
  • First-class code objects, lexical variables and closures
  • Exceptions
  • Continuations
  • Bounded serialization
  • Code generation from MAST (MoarVM AST)
  • Runtime loading of code
  • Big integers
  • A range of IO and process support, including asynchronous sockets, signals, timers, and processes
  • Native calling and native pointer manipulation
  • Threads, mutexes, condition variables, semaphores, and blocking queues
  • Bytecode specialization by type, and numerous optimizations (including resolution of method calls and multiple dispatch, dead code elimination, inlining, and on stack replacement)
  • JIT compilation
  • Instrumentation-based profiling of call frames and allocations

Contributing

Contributions by pull request are accepted. Commit bits are given to those who contribute quality work. If you are interested in contributing, drop by the #moarvm channel on freenode.org, or email [email protected] if you're averse to IRC.

See the LICENSE file in the root directory for information on the license of the source code in the MoarVM repository.

moarvm's People

Contributors

arnsholt avatar baby-gnu avatar bdw avatar benabik avatar cbvi avatar coke avatar cygx avatar diakopter avatar doughera88 avatar fperrad avatar froggs avatar gerdr avatar hoelzro avatar ilmari avatar japhb avatar jnthn avatar lemonboy avatar lizmat avatar masterduke17 avatar moritz avatar nanis avatar niner avatar nwc10 avatar pmurias avatar retupmoca avatar rudis avatar samcv avatar timo avatar timtoady avatar zhuomingliang 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.