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 like MoarVM , the JVM, and others.
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.
To build NQP from source, you'll just need a
make utility and Perl 5.8 or newer. To automatically obtain and build MoarVM 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.
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,jvm $ make
If you don't have an installed MoarVM, you can have Configure.pl build one for you by passing the
--gen-moar option to it as well.
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 MoarVM 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 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).
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.
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.
$ perl Configure.pl --backends=moar,js $ make $ mkdir node_modules $ npm install src/vm/js/nqp-runtime $ npm install tap
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-js-on-js/nqp-bootstrapped.js -e "say('Hello World')"