There are no reviews yet. Be the first to send feedback to the community and the maintainers!
=pod =head1 NQP - Not Quite Perl NQP is Copyright (C) 2009-2020 by The Perl Foundation. See F<LICENSE> for licensing details. This is "Not Quite Perl" -- a lightweight Raku-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, raku or Rakudo) and is focused on being a high-level way to create compilers and libraries for virtual machines like L<MoarVM|https://github.com/MoarVM/MoarVM>, the JVM, and others. Unlike a full-fledged implementation of Raku, NQP strives to have as small a runtime footprint as it can, while still providing a Raku object model and regular expression engine for the virtual machine. =head2 Building from source =for HTML <a href="https://dev.azure.com/Raku/nqp/_build/latest?definitionId=1&branchName=master"><img src="https://dev.azure.com/Raku/nqp/_apis/build/status/Raku.nqp?branchName=master"></a> To build NQP from source, you'll just need a C<make> utility and C<Perl> 5.8 or newer. To automatically obtain and build MoarVM you may also need a C<git> client. To obtain C<NQP> directly from its repository: $ git clone git://github.com/Raku/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/Raku/nqp/tree/main and clicking "Download". Then unpack the tarball or zip. C<NQP> can run on three different backends: C<MoarVM>, the C<JVM>, and C<JavaScript>. The C<JVM> and C<JavaScript> backends are currently experimental. The JVM backend requires C<JDK 1.9> (also known as C<JDK 9>) or higher. Once you have a copy of NQP, decide which backends you want to run, and configure and build it as follows: $ cd nqp $ perl Configure.pl --backends=moar,jvm $ make If you don't have an installed MoarVM, you can have C<Configure.pl> download and build one for you by passing the C<--gen-moar> option to it as well. The C<make> step will create a C<nqp> or C<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 C<./install>. You can change that with the C<--prefix> option to Configure.pl; this will point to the directory prefix where `moar` is installed, such as `/usr`; it needs to be the same one used when configuring MoarVM unless you use the option `--with-moar`. This optional argument should point to the directory prefix where `moar` is installed, in that case; for instance, `--with-moar=/usr/local`. Once built, NQP's C<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 C<nqp> executable created by C<make> above can only be reliably run from the root of NQP's build directory. After C<make install> is performed the executable can be run from any directory. If the C<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). =head2 Troubleshooting =head3 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. =head3 JVM If attempting to run NQP on the JVM results in NQP claiming it couldn't reserve enough memory, you may need to increase the memory limit of your shell like so: $ ulimit -d 6144000 =head2 Using NQP B<NOTE:> there's B<no end-user support> for NQP and the behaviour can change without notice. It's a tool for writing Raku compilers, not a low-level module for Raku programmers. The L<examples directory|https://github.com/raku/nqp/tree/main/examples> is a good place to start, with the L<loops|https://github.com/raku/nqp/blob/main/examples/loops.nqp> and other files. Opcodes are listed in L<the docs directory|https://github.com/raku/nqp/blob/main/docs/ops.markdown>. NQP also has built-in routines listed in L<the docs directory|https://github.com/raku/nqp/blob/main/docs/built-ins.md>. You can use NQP from this release, it will be already installed if you have built Raku from scratch. =head2 JavaScript backend The best thing before playing with it/hacking on it is to contact pmurias via IRC at C<#raku> on L<irc.libera.chat|https://web.libera.chat/?channels=#raku>. We depend on C<node.js> at least 10.10.0 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 If you are developing C<nqp-js>, you may want to pass the C<--link> option to configure to have the C<nqp-runtime> linked instead of installed $ cd src/vm/js/nqp-runtime; npm link . $ perl Configure --backends=moar,js =cut
examples
Many examples of Raku codedoc
🦋 Raku documentationbook
Using Raku – an unfinished book about Rakuroast
🦋 Raku test suiteecosystem
Raku ecosystem – modules and moreold-design-docs
Raku language design documentsraku.org
Source code for https://raku.org/problem-solving
🦋 Problem Solving, a repo for handling problems that require review, deliberation and possibly debateraku-mode
Emacs major mode for Rakumu
Universal Raku repository (formerly called "pugs repository")docker
Docker files for Rakudo Staradvent
Contains all data relating to the annual Raku Advent event held 1-25 DecemberApp-Rakubrew
Raku environment manageruser-experience
Identifying issues in and improving the Raku user experienceatom-language
Atom/Github Raku Syntax Highlighting Support 🦋whateverable
🤖 Different IRC bots that operate on a bunch of prebuilt Rakudo versionsevalbot
IRC bot for executing Raku codemarketing
Marketing resources for Raku languagez
Helper script for Rakudo core developmentCCR
The Raku Programming Language Collect, Conserve and Remaster Projectfeatures
Overview of implementation status of different features in Raku compilersake
A Raku make-a-like inspired by rakeDocumentable
Documentation API: caching, parsing, indexing and generating documentationBlin
🥞 Project Blin – Toasting ReinventedRaku-Steering-Council
RSC Papersintellij-ide-plugin
Source dump of the former Comma IDE.tap-harness6
A TAP harness for Rakurakubrew.org
rakubrew.org websitedoc-website
Tooling to build/run the documentation websiteflycheck-raku
Raku support for Flychecksetup-raku
rakudoc
A tool for reading Raku documentation6.d-prep
All The Things to prepare for 6.d language releaseecosystem-unbitrot
Which modules are not installable?RakudoCIBot
🤖 🦋 I am the friendly Rakudo CI bot. Bzzt! ⚡ Beep beep boop.github-workflow-examples
A collection of workflow files for Raku code testing on githubIRC-logs
Repository of Raku IRC channel logs over the years (2005-now)nqp-configure
Configuration and build modules for NQPtoolchain-bikeshed
(ARCHIVE) Discussion area for the Raku toolchainREA
Raku Programming Language Ecosystem Archivepugs-perl-modules
Perl modules from the old Pugs repositorymuseum-items
Collection repo for Raku museum itemsflymake-rakudo
Raku(do) support for Flymakegeth
GitHub Push Updates to IRC Botrakudo-star
A user-friendly distribution of the Raku programming language.hacktoberfest
Centralized repository for hacktoberfest issued in the Rakuverseold-issue-tracker
Tickets from RTsurvey
Results from Raku Surveysvscode-dev-container
VSCode dev containerplease-turn-off-the-autowatch-feature
A friendly reminder that by default github will autosubscribe you to all repos of this orgL10N
The home of supported localizations of the Raku Programming Languagesynopsebot
synopsebot IRC botRakuDoc-GAMMA
Community review of the RakuDoc standardDocumentable-backup
Raku documentation CLI and APILove Open Source and this site? Check out how you can help us