Category:Perl 6: Difference between revisions

From Rosetta Code
Content added Content deleted
(Paradigms and features)
m (→‎Hey! What happened to Perl 6?: reduced stuttering)
 
(16 intermediate revisions by 7 users not shown)
Line 3: Line 3:
|checking=both
|checking=both
|gc=yes
|gc=yes
|strength=weak
|strength=gradual
|safety=both
|safety=both
|compat=nominative
|compat=Nominative, Duck
|parampass=both
|parampass=both
|tags=perl6}}
|tags=perl6}}
Line 15: Line 15:
{{language programming paradigm|object-oriented}}
{{language programming paradigm|object-oriented}}
{{language programming paradigm|generic}}
{{language programming paradigm|generic}}
{{infobox_begin}}Can't install Perl&nbsp;6 locally?<br>Try Perl&nbsp;6 on-line!<br>
Perl 6 is the successor to Perl 5. Though it resembles previous versions of [[Perl]] to no small degree, Perl 6 is substantially a new language. In particular, it isn't backwards-compatible with Perl 5. In development since 2000, Perl 6 still lacks a reasonably complete implementation of its specification, the [http://perlcabal.org/syn/ Synopses].
[https://perl6.github.io/6pad/ Try Perl&nbsp;6 on 6pad].<br>
[https://tio.run/#perl6 Try Perl 6&nbsp;on tio.run].<br>
[https://glot.io/new/perl6 Try Perl 6&nbsp;on glot.io].
{{infobox_end}}
Perl 6 is a member of the Perl family of programming languages.
Though it resembles previous versions of [[Perl]] to no small degree, Perl 6 is substantially a new language; by design, it isn't backwards-compatible with Perl 5.
The first official release was at Christmas of 2015.


Damian Conway described the basic philosophy of Perl 6 as follows:
Damian Conway described the basic philosophy of Perl 6 as follows:
Line 21: Line 28:
<blockquote>The Perl 6 design process is about keeping what works in Perl 5, fixing what doesn't, and adding what's missing. That means there will be a few fundamental changes to the language, a large number of extensions to existing features, and a handful of completely new ideas. These modifications, enhancements, and innovations will work together to make the future Perl even more insanely great -- without, we hope, making it even more greatly insane.</blockquote>
<blockquote>The Perl 6 design process is about keeping what works in Perl 5, fixing what doesn't, and adding what's missing. That means there will be a few fundamental changes to the language, a large number of extensions to existing features, and a handful of completely new ideas. These modifications, enhancements, and innovations will work together to make the future Perl even more insanely great -- without, we hope, making it even more greatly insane.</blockquote>


Major new features include multiple dispatch, declarative classes, grammars, formal parameters to subroutines, type constraints on variables, lazy evaluation, junctions, meta-operators, and the ability to change Perl's syntax at will with macros and user-defined operators.
Major new features include multiple dispatch, declarative classes, grammars, formal parameters to subroutines, type constraints on variables, lazy evaluation, junctions, meta-operators, and the ability to change Perl's syntax at will.


The definition of Perl 6 is specified entirely by a test suite, so we could in theory have multiple implementations.
There are several different implementations of Perl 6. They vary widely in design goals, degree of completeness, and current development activity. At present, the implementations closest to matching the specification are [http://www.pugscode.org/ Pugs], written in [[Haskell]], and [http://rakudo.org/ Rakudo], built on the [http://www.parrot.org Parrot] virtual machine; of these, only the latter is actively developed.
The current version of the language is 6.d, as defined by the test suite known as "roast" (Repository Of All Spec Tests).
Compiler releases have date-based versions, and these are typically used in Rosetta Code entries for the "works with" fields.
The only compiler implementing the full test suite, Rakudo, currently runs on either of two backends, MoarVM or JVM.
Subsequent language revisions are planned for release on a roughly yearly cycle.

==Hey! What happened to Perl 6?==
When Perl 6 was conceived, it was intended to be a replacement for Perl 5. (The next version, if you will) As time went on, it became obvious that Perl 5 was still heavily used and desired, and Perl 6 wasn't going to be a drop in replacement for it. Having both languages named Perl led to much confusion outside of the community and much bickering and contention inside. To try to give both languages room to grow, it was decided to rename Perl 6. As of October 2019, "Perl 6" was officially (well, as officially as a volunteer led, open source project can be...) renamed to "Raku".

Since the old name has been in use for many years, it will take some time for the new designation to propagate widely. Expect to see both names in use for some time, but understand that they refer to exactly the same underlying idea. As of March 14, 2020 all of the Perl 6 task entries on Rosetta code have been updated to Raku. There are still many mentions of Perl 6 throughout the site and likely will be for the foreseeable future.

Probably where you want to go is over to the [[:Category:Raku|Raku Page]].


<br clear=right><!-- Stop the category list and infobox from overlapping -->
<br clear=right><!-- Stop the category list and infobox from overlapping -->

Latest revision as of 11:09, 15 March 2020

Language
Perl 6
This programming language may be used to instruct a computer to perform a task.
Official website
Garbage collected: Yes
Parameter passing methods: By reference, By value
Type safety: Safe, Unsafe
Type strength: Gradual
Type compatibility: Nominative, Duck
Type checking: Dynamic, Static
Lang tag(s): perl6
See Also:


Listed below are all of the tasks on Rosetta Code which have been solved using Perl 6.
Can't install Perl 6 locally?
Try Perl 6 on-line!

Try Perl 6 on 6pad.
Try Perl 6 on tio.run.
Try Perl 6 on glot.io.

Perl 6 is a member of the Perl family of programming languages. Though it resembles previous versions of Perl to no small degree, Perl 6 is substantially a new language; by design, it isn't backwards-compatible with Perl 5. The first official release was at Christmas of 2015.

Damian Conway described the basic philosophy of Perl 6 as follows:

The Perl 6 design process is about keeping what works in Perl 5, fixing what doesn't, and adding what's missing. That means there will be a few fundamental changes to the language, a large number of extensions to existing features, and a handful of completely new ideas. These modifications, enhancements, and innovations will work together to make the future Perl even more insanely great -- without, we hope, making it even more greatly insane.

Major new features include multiple dispatch, declarative classes, grammars, formal parameters to subroutines, type constraints on variables, lazy evaluation, junctions, meta-operators, and the ability to change Perl's syntax at will.

The definition of Perl 6 is specified entirely by a test suite, so we could in theory have multiple implementations. The current version of the language is 6.d, as defined by the test suite known as "roast" (Repository Of All Spec Tests). Compiler releases have date-based versions, and these are typically used in Rosetta Code entries for the "works with" fields. The only compiler implementing the full test suite, Rakudo, currently runs on either of two backends, MoarVM or JVM. Subsequent language revisions are planned for release on a roughly yearly cycle.

Hey! What happened to Perl 6?

When Perl 6 was conceived, it was intended to be a replacement for Perl 5. (The next version, if you will) As time went on, it became obvious that Perl 5 was still heavily used and desired, and Perl 6 wasn't going to be a drop in replacement for it. Having both languages named Perl led to much confusion outside of the community and much bickering and contention inside. To try to give both languages room to grow, it was decided to rename Perl 6. As of October 2019, "Perl 6" was officially (well, as officially as a volunteer led, open source project can be...) renamed to "Raku".

Since the old name has been in use for many years, it will take some time for the new designation to propagate widely. Expect to see both names in use for some time, but understand that they refer to exactly the same underlying idea. As of March 14, 2020 all of the Perl 6 task entries on Rosetta code have been updated to Raku. There are still many mentions of Perl 6 throughout the site and likely will be for the foreseeable future.

Probably where you want to go is over to the Raku Page.


Subcategories

This category has the following 4 subcategories, out of 4 total.