Git Product home page Git Product logo

nqp's Introduction

NQP - Not Quite Perl (6)

NQP is Copyright (C) 2009-2016 by The Perl Foundation. See LICENSE for licensing details.

This is "Not Quite Perl" -- a lightweight Perl 6-like environment for virtual machines. The key feature of NQP is that it's designed to be a very small environment (as compared with, say, perl6 or Rakudo) and is focused on being a high-level way to create compilers and libraries for virtual machines (MoarVM [1], the JVM, and the Parrot Virtual Machine [2]). Unlike a full-fledged implementation of Perl 6, NQP strives to have as small a runtime footprint as it can, while still providing a Perl 6 object model and regular expression engine for the virtual machine.

[1] https://github.com/MoarVM/MoarVM
[2] http://parrot.org/

Building from source

To build NQP from source, you'll just need a make utility and Perl 5.8 or newer. To automatically obtain and build MoarVM or Parrot you may also need a git client.

To obtain NQP directly from its repository:

$ git clone git://github.com/perl6/nqp.git

If you don't have git installed, you can get a tarball or zip of NQP from github by visiting http://github.com/perl6/nqp/tree/master and clicking "Download". Then unpack the tarball or zip.

NQP can run on three different backends: MoarVM, the JVM, and Parrot. Decide on which backends you want it to run, and configure and build it as follows:

Once you have a copy of NQP, build it as follows:

$ cd nqp
$ perl Configure.pl --backends=moar,parrot,jvm
$ make

If you don't have an installed MoarVM (or Parrot), you can have Configure.pl build one for you by passing the --gen-moar (or --gen-parrot) option to it as well.

The make step will create a "nqp" or "nqp.exe" executable in the current directory. Programs can then be run from the build directory using a command like:

$ ./nqp hello.nqp

By default, NQP searches for the parrot executable and installs to the directory ./install. You can change that with the --prefix option to Configure.pl.

Once built, NQP's make install target will install NQP and its libraries into the same location as the MoarVM or Parrot installation that was used to create it. Until this step is performed, the "nqp" executable created by make above can only be reliably run from the root of NQP's build directory. After make install is performed the executable can be run from any directory.

If the NQP compiler is invoked without an explicit script to run, it enters a small interactive mode that allows statements to be executed from the command line. Each line entered is treated as a separate compilation unit, however (which means that subroutines are preserved after they are defined, but variables are not).

Troubleshooting

OS X

On OS X, it appears that configuration fails in some configurations:

3rdparty/libuv/include/uv-darwin.h:26:11: fatal error: 'mach/mach.h' file not found

Should this happen to you, then a solution might be the following:

$ cd MoarVM/3rdparty/libuv/include
$ ln -s /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.9.sdk/usr/include/mach
$ cd ../../../..
$ # run the Configure again

Note that the 10.9 in the above, represents the major version of OS X being used. On Mavericks use 10.9 (like above), on Yosemite use 10.10.

Using NQP

The examples directory is a good place to start, with the loops and other files. Opcodes are listed in the docs directory. You can use NQP from this release, it will be already installed if you have built Perl6 from scratch.

JavaScript backend

The JavaScript backend is currently undergoing a refactor/rewrite of parts to generate decently performing javascript, add source maps and remove some old hack as well as clean up the code. As a result of that it's in a really rough state so the best thing before playing with it/hacking on it is to contact pmurias via irc at #perl6 on irc.freenode.org.

Building the JavaScript backend currently requires building the moar backend:

$ perl Configure.pl --backends=moar,js
$ make

Currently it needs to be run like:

$ ./nqp-js file.nqp

To run the tests:

$ make js-test

To build nqp-js-on-js (that is nqp-js itself running on node.js):

$ make js-bootstrap

To run nqp-js-on-js:

$ node nqp-bootstrapped.js -e "say('Hello World')"

nqp's People

Contributors

arnsholt avatar bacek avatar benabik avatar coke avatar colomon avatar diakopter avatar donaldh avatar dwarring avatar froggs avatar gerdr avatar hoelzro avatar jnthn avatar kboga avatar lizmat avatar mlschroe avatar moritz avatar mouq avatar niner avatar perlpilot avatar peschwa avatar pmichaud avatar pmurias avatar retupmoca avatar shimmerfairy avatar sorear avatar timo avatar timtoady avatar ungrim97 avatar usev6 avatar zhuomingliang avatar

Watchers

 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.