Raku (programming language)

from Wikipedia, the free encyclopedia

Raku is a programming language in the Perl family of programming languages. It was originally known as Perl 6 and was renamed Raku in October 2019. Raku integrates many concepts of newer and historical programming languages ​​and also contains some innovations of its own. Compatibility with Perl 5 was not a goal, but there are opportunities for interoperability . The design process for Perl 6 began in 2000.

Raku
Camelia.svg
Camelia, the raku mascot
Basic data
Paradigms : procedural , functional , object-oriented
Publishing year: 2015
Designer:  
Developer:  
Current  version :    ()
Typing : Gradual typing
Important implementations : Rakudo
Influenced by: Perl , Ruby , Smalltalk , Haskell , JavaScript , C #
Operating system :  
License :  
https://raku.org/

history

Also Damian Conway is involved in the redesign of the language

On July 19, 2000, the TPC 4 announced Perl 6 as the version of the Perl community. After Larry Wall evaluated 361 suggestions and sorted them thematically, he wrote an overview of his ideas for each topic ( called Apocalypse ), which was formulated into a detailed exegesis by Damian Conway after discussions in the mailing lists . Subsequently, the language was further developed in a smaller group, with the impulses mainly coming from the implementers and users and the current status being recorded in much tighter synopses . These were replaced by regular documentation from 2009 and the role of the specification was taken over by a test suite , which also serves to monitor the development status of the individual implementations.

Larry Wall designed Perl and was instrumental in defining the language of raku

The language has been cleared out and given new skills. Among other things, the object orientation has been completely redesigned and is now based more on what one is used to in other programming languages ​​such as Scala , Java , Ruby or C # . There are also functional programming elements introduced as Hyper operators and junctions. Macros replace the source filters and the newly systematized and expanded regular expressions can be combined into derivable grammars . They allow the compiler to be changed or expanded to include DSL and are used with the smart match operator ~~, which, depending on the context, can compare different types of data, data structures and the contents of symbol tables . The area of ​​asynchronous and parallel programming is currently the last to be specified.

Originally (since 2001) a new register-based virtual machine called Parrot was developed as an interpreter for the language then known as Perl 6 . It should run many languages ​​(also mixed) and is optimized for dynamic languages ​​like Perl, Python or Ruby. Parrot was designed by Dan Sugalski and Chip Salzenberg and later supervised by Jonathan Leto and Patrick Michaud, the latter being responsible for the Parrot Compiler Tools (PCT), a set of tools for creating parsers and compilers. The Perl 6 compiler based on Parrot and PCT is called Rakudo. Under the leadership of Jonathan Worthington, Rakudo got a sub-structure programmed in NQP (very simple Perl variant), which allows the compiler to be ported to the JVM (small incompatibilities) and .NET (planned), as well as to Moar, which is exclusively geared towards Rakudo VM. Since July 29, 2010, a "Rakudo *" distribution with documentation and libraries as well as Parrot or (since August 2014) Moar has been published monthly for "early users". Useful libraries are listed and are installed with zef.

Audrey Tang led the development of the alternative Perl 6 compiler called Pugs in the Haskell language since early February 2005 . For several years Pugs was the most complete, but also the slowest Perl 6 compiler and was the first to make it possible to demonstrate, test and post-process numerous details of the language. The extensive Perl 6 test suite, written in Perl 6, comes from the Pugs source code. In addition to offshoot projects such as elf and viv, numerous other interpreter, compiler and parser projects were created with different focuses such as SMOP (Meta-OOP-runloop), Niecza (fast compiler for .NET), Sprixel, Perlito (compiled to, among others, to be executed in the browser JavaScript), Yapsi, which in some cases provided valuable insights, but often hardly any direct practical use. Only rakudo, perlito and gimme5 will be continued. The latter translates a machine-readable definition of the Perl 6 syntax (called STD) to Perl 5. Any software that complies with these rules can officially call itself Perl 6. Perl 6, which was officially published on December 25, 2015 as the version “ Коледа ” (also English Christmas), has been declared a “sister language” without any intention of replacing Perl 5 in the medium term.

Since the name "Perl 6" was sometimes viewed as misleading, Larry Wall granted the request of the user ZoffixZnet to introduce Raku or Raku Perl 6 as an alternative name for the language .

Individual evidence

  1. Larry Wall's speech at OSCON 2000 perl.com (English)
  2. Overview of the initial Perl 6 - RFC
  3. Differences between Perl 5 and Raku raku.org (English)
  4. Perl 6 Modules on modules.perl6.org, October 2, 2018.
  5. Herbert Breunung: Larry Wall releases the Rakudo Perl 6 compiler on MoarVM for productive use on heise.de on December 26, 2015.
  6. Raku Perl 6 Diwali 6.d: Release Information for the Second Major Version of the Language. Retrieved November 7, 2018 .