Rakudo is a Raku compiler targeting MoarVM , and the Java Virtual Machine , that implements the Raku specification. It is currently the only major Raku compiler in active development .
18-560: Originally developed within the Parrot project, the Rakudo source code repository was split from the project in February 2009 so that it could be developed independently, although there were still many dependencies at the time. Rakudo is written in C , Raku, and the lightweight Raku subset NQP (Not Quite Perl). Rakudo Perl #14 was released in February 2009, codenamed Vienna after
36-560: A hypothetical language, named Parrot , that would unify Python and Perl . The name was later adopted by the Parrot project (initially a part of the Raku development effort) which aimed to support Raku, Python, and other programming languages. The Parrot Foundation was dissolved in 2014. The Foundation was created in 2008 to hold the copyright and trademarks of the Parrot project, to help drive development of language implementations and
54-671: A long 'o'; 駱駝 道 ), which is Japanese for "Way of the Camel". "Rakudo" (with a short 'o'; 楽 土 ) also means "paradise" in Japanese. The term "Rakudo" was also chosen to distinguish between the name of a language implementation ("Rakudo") from the name of the language specification ("Raku") – any implementation that passes the official test suite could call itself "Raku". There are currently several implementations at various levels of maturity, with only Rakudo implementing full Raku and NQP for Raku subset. Parrot virtual machine Parrot
72-402: A result, it was focused on license compatibility with Perl ( Artistic License 2.0 ), platform compatibility across a broad array of systems, processor architecture compatibility across most modern processors, speed of execution, small size (around 700k depending on platform), and the flexibility to handle the varying demands made by Raku and other modern dynamic languages . Version 1.0, with
90-463: A stable application programming interface (API) for development, was released on March 17, 2009. The last version is release 8.1.0 "Andean Parakeet". Parrot was officially discontinued in August 2021, after being supplanted by MoarVM in its main use (Raku) and never becoming a mainstream VM for any of its other supported languages. The name Parrot came from an April Fool's joke which announced
108-494: Is a discontinued register-based process virtual machine designed to run dynamic languages efficiently. It is possible to compile Parrot assembly language and Parrot intermediate representation (PIR, an intermediate language) to Parrot bytecode and execute it. Parrot is free and open-source software. Parrot was started by the Perl community and developed with help from the open-source and free software communities . As
126-591: Is fixed at compile time per subroutine. In PASM In PIR mod_parrot is an optional module for the Apache web server . It embeds a Parrot virtual machine interpreter into the Apache server and provides access to the Apache API to allow handlers to be written in Parrot assembly language , or any high-level language targeted to Parrot. Allison Randal Allison Randal is a software developer and author. She
144-547: The Lua VM and Inferno's Dis . Parrot has rich support for several features of functional programming including closures and continuations , both of which can be particularly difficult to implement correctly and portably, especially in conjunction with exception handling and threading . The biggest advantage is the dynamic extendability of objects with methods, which allows for polymorphic containers (PMCs) and associated opcodes . Implementing solutions to these problems at
162-407: The Perl mongers group that had sponsored one of its developers since April 2008. Subsequent releases have used codenames based on Perl mongers groups. The first major release of a distribution of both compiler and modules (named "Rakudo *" or "Rakudo Star") was on July 29, 2010. The name "Rakudo" for the Raku compiler was first suggested by Damian Conway . "Rakudo" is short for "Rakuda-dō" (with
180-412: The " squaak " tutorial language. None of these projects were successful in becoming the primary implementation of their respective languages. There are three forms of program code for Parrot: Parrot is register-based like most hardware CPUs , and unlike most virtual machines, which are stack-based. Parrot provides four types of registers: Parrot provides an arbitrary number of registers; this number
198-511: The Java virtual machine and the current Perl 5 virtual machine are also stack based . Parrot developers chose a register-based design, reasoning that it more closely resembles a hardware design, allowing the vast literature on compiler optimization to be used in generating bytecode for the Parrot virtual machine that could run at speeds closer to machine code . Other register-based virtual machines inspired parts of Parrot's design, including LLVM ,
SECTION 10
#1732772282573216-435: The core codebase, to provide a base for growing the Parrot community, and to reach out to other language communities. Historical design decisions are documented in the form of Parrot Design Documents, or PDDs, in the Parrot repository. Until late 2005, Dan Sugalski was the lead designer and chief architect of Parrot. Chip Salzenberg , a longtime Perl, Linux kernel, and C++ hacker, took over until mid-2006, when he became
234-593: The difficulty of mapping high-level concepts, data, and data structures between languages. The differing properties of statically and dynamically typed languages motivated the design of Parrot. Current popular virtual machines such as the Java virtual machine and the Common Language Runtime , for the .NET platform, have been designed for statically typed languages, while the languages targeted by Parrot are dynamically typed. Virtual machines such as
252-412: The lead developer. Allison Randal , the lead developer of Punie and chief architect of Parrot's compiler tools, was the chief architect until mid-October 2010 when she stepped down and chose Christoph Otto as the new chief architect. The goal of the Parrot virtual machine was to host client languages and allow inter-operation between them. Several hurdles exist in accomplishing this goal, in particular
270-467: The parse-tree generated by PGE for optimization and ultimately for code generation. The most complete language implementations targeting the Parrot VM were Raku (known at the time as Rakudo Perl 6), Lua and a new language called "Winxed". Projects to implement many other languages were started, including PHP , Python , and Ruby ; along with esoteric and demonstration languages such as Befunge and
288-594: The virtual machine level obviates the need to solve them in the individual client languages. Parrot provides a suite of compiler-writing tools which includes the Parser Grammar Engine (PGE), a hybrid parser-generator that can express a recursive descent parser as well as an operator-precedence parser , allowing free transition between the two in a single grammar. The PGE feeds into the Tree Grammar Engine (TGE) which further transforms
306-775: Was the Technical Architect of Ubuntu at Canonical . In 2009, Randal was chair of O'Reilly's Open Source Convention (OSCON) . She was elected a fellow of the Python Software Foundation in 2010. She is currently a director of the Open Source Initiative and was its president between 2015 and 2017, taking over from and handing back to Simon Phipps . She also serves on the OpenStack Foundation board of directors. This biographical article relating to
324-592: Was the chief architect of the Parrot virtual machine , a member of the board of directors for The Perl Foundation , a director of the Python Software Foundation from 2010 to 2012, and the chairman of the Parrot Foundation . She is also the lead developer of Punie , the port of Perl 1 to Parrot. She is co-author of Perl 6 and Parrot Essentials and the Synopses of Perl 6. She was employed by O'Reilly Media . From August 2010 till February 2012, Randal
#572427