Chapter 7 of 9
Perl 6 also travelled through people, Parrot and debates on language change
N.B. This material was collected and structured automatically, and may contain unintentional mistakes. Every claim links its source: please check it before relying on a detail.
Some of Perl 6's influence does not show up as borrowed features. It travelled through the people Pugs brought to Haskell, through Parrot's place in virtual-machine research, and through the part Perl 6 plays when other languages plan big changes.
Pugs and the Haskell community
- Haskell's HOPL III history (2007) names Darcs and Pugs as the open-source projects that drew people to Haskell. It recounts that Audrey Tang picked Perl 6 as her exercise after reading Types and Programming Languages, and records Pugs's growth to about 200 contributors within a year (HOPL III1).
- Tang adds that Pugs fed back into several GHC extensions, and that people who met Haskell through Pugs, such as Edward Kmett, went on to energise its community (Tang interview2).
What the sources say 2
Paul Hudak, John Hughes, Simon Peyton Jones and Philip Wadler, Haskell designers A History of Haskell: Being Lazy with Class, HOPL III, section 12.3 source ↗
Names Darcs and Pugs as the open-source projects that began attracting people to Haskell, tells how Tang chose Perl 6 after reading TAPL, and says Pugs had about 200 contributors within a year.
Audrey Tang, Pugs creator, interviewed by Andrew Shitov Interview with Audrey Tang, andrewshitov.com source ↗
Says Pugs chiefly drew newcomers to Haskell, some of whom, including Edward Kmett, went on to energise its community, and that Pugs's feedback helped firm up several GHC extensions.
Parrot in virtual-machine research
- The Lua 5.0 paper (2005) points to Parrot's planned register design as evidence of growing interest in register VMs, while claiming Lua 5.0 as the first widely used one (Lua 5.03).
- The 2008 "Virtual Machine Showdown" paper says the stack-versus-register debate reopened because of Parrot's decision (VM Showdown4).
- Rakudo was the one hosted language to make Parrot its primary implementation. Parrot's active development ended in 2021 (Wikipedia: Parrot5).
What the sources say 3
Roberto Ierusalimschy, Luiz Henrique de Figueiredo and Waldemar Celes, Lua's authors The Implementation of Lua 5.0, J.UCS 11(7) source ↗
Cites Perl 6's planned register-based Parrot VM as a sign of growing interest in register machines, while claiming Lua 5.0 as the first widely used register-based VM.
Yunhe Shi, Kevin Casey, M. Anton Ertl and David Gregg, VM researchers Virtual Machine Showdown: Stack Versus Registers, ACM TACO 4(4) source ↗
Says the stack-versus-register debate resurfaced because Parrot, the intermediate representation for Perl 6, was designed as a register machine rather than a stack machine.
Wikipedia article Parrot virtual machine source ↗
Says none of the languages hosted on Parrot made it their primary implementation, and that active development was declared over in August 2021, with MoarVM having taken over for Perl 6.
Perl 6 in debates about language change
Perl 6 was a bold, compatibility-breaking redesign. When other languages weigh big changes, their leaders often bring it up as the reference point:
| Language | Who | When | What they said or did |
|---|---|---|---|
| Python | Barry Warsaw | 24 July 2000 | A language cannot be designed by committee vote, and the Perl 6 and Tcl teams should learn from that (Warsaw6) |
| Python | Guido van Rossum | 31 January 2005 | Python 3000 should be less sweeping than the Perl 6 redesign (python-dev7) |
| Python | Guido van Rossum | 5 April 2006 | With a smiley: the Python 3000 process aims not to repeat Perl 6 (Artima8) |
| Python | Guido van Rossum | 20 April 2006 | In the thread that led to keyword-only arguments, set aside a bracketed parameter syntax as copying Perl 6 (0010949) |
| Python | Georg Brandl | 1 April 2007 | An April Fools' PEP about matching Perl 6's Unicode operators (PEP 311710) |
| Python | Guido van Rossum | 16 May 2007 | Answered a call for Unicode characters used for fun by pointing to Perl 6 as where that path leads (00768911) |
| Python | Guido van Rossum | 1 October 2008 | Contrasted Python 3 with Perl 6, an entirely new language and implementation (Linux Journal12) |
| Python | Łukasz Langa | 17 August 2014 | A new language called Python 4 should not repeat Perl 6's path (Langa13) |
| JavaScript | Brendan Eich | March 2008 | Nobody on the ES4 effort intends it to resemble Perl 6 (esdiscuss 200814) |
| JavaScript | Brendan Eich | 12 August 2014 | Perl 6 is rich in good ideas that could only arrive by breaking compatibility (esdiscuss 201415) |
| Go | Ian Lance Taylor | 2018 | The Go 2 transitions design doc traces Perl 6 from 2000 to its 2015 specification, as a deliberately incompatible and evolving design. It lists avoiding that path among Go's lessons, beside meeting deadlines and not changing everything at once (28221-go2-transitions.md16) |
| Go | Go team | February 2019 | Go 1.12 gates language changes by the go directive in go.mod (Go 1.1217) |
| Go | Russ Cox | 14 August 2023 | No Go 2 will break existing Go 1 programs (Go blog18) |
| Swift | Douglas Gregor | 18 January 2023 | Set Perl 5 → 6 beside Python 2 → 3 as a transition to learn from in planning Swift 6 (Gregor19) |
| Scala | Martin Odersky | 4 March 2019 | Contrasted Perl 6's long time between announcement and release with Scala 3's coming feature freeze (Odersky20) |
| Rust | Steve Klabnik | 18 December 2015 | Hoped Rust would avoid a transition like Ruby 1.9's, Python 3's or Perl 6's (Klabnik21) |
| D | Walter Bright | 14 March 2015 | Compared D's own D1-to-D2 change with Perl 6's (Bright22) |
| PHP | Adam Harvey | 21 August 2014 | PHP 7 should not become the Perl 6 of its decade by changing everything at once (7675523) |
| PHP | Andrea Faulds and Zeev Suraski | July 2014 | The RFC to skip version 6 cited Perl 6 among its reasons (PHP RFC: php624) |
| PHP | Stanislav Malyshev | 30 April 2016 | Objected that a pipe operator moved PHP's syntax toward Perl 6 (9296825). The |> operator later shipped in PHP 8.5 (pipe-operator-v326) |
| Rust | RFC commenters | 2017 | Mentioned Perl 6 with Python 3 as a transition a Rust 2.0 should avoid (rfcs #88627), and, in the editions debate, as the model for separating a language (Perl 6) from its implementation (Rakudo) (rfcs #205228) |
| Perl | Nicholas Clark | 7 June 2021 | Perl's PPC process sets out to avoid proposals nobody knows how to implement, as in the Perl 6 RFC round (PPC motivation29) |
What the sources say 24
Barry Warsaw, Python core developer python-dev, Evolving Python thread source ↗
Argues that a language cannot be designed by committee, since every proposal put to a vote would fail, and says the Perl 6 and Tcl teams should learn from that.
Guido van Rossum, Python's creator python-dev mailing list source ↗
Says the Python 3000 work should be less sweeping than the Perl 6 redesign.
Guido van Rossum, Python's creator Artima weblog, Python 3000 – Adaptation or Generic Functions? source ↗
Describing the Python 3000 process, says with a smiley that its aim is to keep Perl 6 from happening again.
Guido van Rossum, Python's creator python-3000 mailing list, Type Expressions thread source ↗
Dismisses proposed bracket notations for parameter lists, reminding the list that Python does not want to imitate Perl 6.
Georg Brandl, Python core developer PEP 3117, Postfix type declarations source ↗
Unicode makes it possible to express much more with much less characters, which is in accordance with the Zen ("Readability counts."). Additionally, it eliminates the need for a separate type declaration statement, and last but not least, it makes Python measure up to Perl 6, which already uses Unicode for its operators. [Footnote:] Well, it would, if there was a Perl 6.
The PEP is an April Fools' joke, dated 1 April 2007.
Guido van Rossum, Python's creator python-3000 mailing list, PEP 3131 discussion source ↗
Replying to a call for Unicode characters used purely for fun, in the PEP 3131 identifiers debate, warns that this path ends in Perl 6 and Python must stay a sane alternative.
Guido van Rossum, interviewed by James Gray Linux Journal interview source ↗
Answers a suggestion that Python 3 is unusual in breaking compatibility by pointing to Perl 6, which he calls an entirely new language with a wholly different implementation.
Łukasz Langa, Python core developer python-dev, PEP 4000 thread on ruling out another Py3k-style break source ↗
Jokes that if anyone ever designs a new language and calls it Python 4, they should be stopped from repeating what happened with Perl 6.
Brendan Eich, JavaScript's creator es-discuss, complexity tax thread source ↗
Assures the list that nobody on the ES4 effort intends the language to resemble Perl 6.
Brendan Eich, JavaScript's creator es-discuss, Thread about ES6 on reddit source ↗
Likens the situation to Perl 6 versus Perl 5, calling Perl 6 rich in good ideas that could only arrive by breaking compatibility.
Ian Lance Taylor, Go core team Go design doc 28221, Go 2 transitions source ↗
Its Perl section traces Perl 6 from a 2000 start to a 2015 specification, calls it deliberately incompatible and ever-changing, and lists not being Perl 6 among Go's lessons, with keeping deadlines and gradual change.
Go team Go 1.12 release notes source ↗
Says the go directive in a go.mod file now records which language version the module's files are written in.
Russ Cox, Go tech lead Go blog, Backward Compatibility, Go 1.21, and Go 2 source ↗
States that no Go 2 will ever break existing Go 1 programs.
Douglas Gregor, Swift Language Workgroup Swift Forums, Design priorities for the Swift 6 language mode, post 57 source ↗
Cites the Perl 5 to 6 move, which never took place, beside Swift 2 to 3 and Python 2 to 3 as lessons for planning Swift 6's language mode.
Martin Odersky, Scala's creator Scala Contributors forum, Move slowly and iterate, post 23 source ↗
Contrasts Perl 6, which he says stayed announced but unreleased for ages, with Scala 3, due to reach feature freeze that summer.
Steve Klabnik, Rust core team (quoted) Rust users forum, TWiR quote of the week thread, post 187 source ↗
Puts forward as quote of the week Klabnik's remark that he does not want a situation like Ruby 1.9's, Python 3's or Perl 6's.
Walter Bright, D's creator D newsgroup, thread on choosing between Go and D source ↗
Saying the D1 to D2 change nearly destroyed D, asks whether Perl 6 had not suffered a similar convulsion, and with less success than Python 3.
Adam Harvey, PHP core developer php.internals, Integer Semantics RFC thread source ↗
Warns that PHP 7 could become the Perl 6 of the decade, an example of what happens when a project discards everything at once.
Andrea Faulds and Zeev Suraski, RFC authors PHP RFC: Name of Next Release of PHP source ↗
Among its reasons for skipping version 6, notes that both the abandoned PHP 6 and Perl 6 had failed; the vote chose PHP 7 by 58 to 24.
Stanislav Malyshev, PHP core developer php.internals, pipe operator RFC thread source ↗
Objects to the 2016 pipe operator RFC that it pushes PHP syntax too far in the Perl 6 direction.
Larry Garfield, RFC author PHP RFC: Pipe operator v3 source ↗
Proposes the |> pipe operator for PHP; the RFC passed its vote and is marked implemented for PHP 8.5.
ssokolow, Rust RFC commenter rust-lang/rfcs PR #886, must_use on functions source ↗
Suggests keeping a list of features that later Rust-inspired languages should adopt, describing such a language as a Rust 2.0 spared the turmoil of Perl 6 or Python 3.
internetionals, Rust RFC commenter rust-lang/rfcs PR #2052, Evolving Rust through Epochs source ↗
Notes that the Perl 6 community separates the language, Perl 6, from its canonical implementation, Rakudo, and proposes versioning Rust's language and toolchain separately.
Nicholas Clark, Perl core developer Perl PPC process, docs/motivation.md source ↗
Lists the Perl 6 RFC round, whose proposals nobody could see a way to build, among the failures the new proposal process should avoid, linking a critique of it.
Rust, for its part, modelled its RFC process on Python's PEPs (Rust RFC 000230).
What the sources say 1
Rust project, RFC 0002 Rust RFC 0002, RFC process source ↗
Setting up Rust's RFC process, suggests drawing on Python's PEP process if a stricter procedure becomes necessary.
How other languages tell their own history
- JavaScript's HOPL IV history credits Perl 5 for its regex and array functions, and Python for generators, destructuring and comprehensions (HOPL JS31).
- Chris Lattner's list of the languages that influenced Swift 1.0 does not include Perl, although he later recommended Perl 6's regexes and grammars to Swift's string work (nondot.org32).
What the sources say 2
Allen Wirfs-Brock and Brendan Eich, ES2015 editor and JavaScript's creator JavaScript: The First 20 Years, HOPL IV source ↗
Credits Perl for JavaScript's regular expressions and several array and string methods, and Python for generators, destructuring and comprehensions; Perl 6 is never mentioned.
Chris Lattner, Swift's creator Chris Lattner's homepage, nondot.org source ↗
Names Swift's influences as including Haskell, Rust, Objective-C, Python, Ruby, CLU and C#, plus many unnamed others; Perl is absent.
What reference works record
- As of November 2026, Wikidata records no language as influenced by Raku (Wikidata Q205267633).
- Raku's Wikipedia infobox lists Perl and Haskell as influenced (Wikipedia: Raku34). It cites Audrey Tang's 2010 post on implementing Perl 6, which is her PerlMonks reply of 21 April 2010, reposted on her blog (Tang35).
- That post supports influence on Perl 5, through Moose and other CPAN releases. It makes no claim about Haskell: it says Pugs needed host-language features that later appeared in Haskell 2010 and GHC. One of them, pattern guards, was already documented in GHC 4.08.1 in 2000 (GHC 4.08.136).
- Haskell's own Wikipedia listing of Raku cites a Perl 6 wiki glossary page (Wikipedia: Haskell37).
What the sources say 5
Wikidata item Q2052676, Raku source ↗
Raku's item lists ten languages it was influenced by, Python and Haskell among them, while no language item names Raku as an influence.
Wikipedia article Raku (programming language) source ↗
Its infobox lists Perl, Haskell and AntLang as languages Raku influenced, citing Audrey Tang's 2010 post for the first two; the body makes no such claim.
Audrey Tang, Pugs creator How to Implement Perl 6 in '10, PerlMonks reply reposted on her blog source ↗
Recounts that Pugs work led to Moose and other CPAN releases for Perl 5, and that Pugs needed Haskell features later adopted in Haskell 2010 or implemented in GHC.
GHC team GHC 4.08.1 User's Guide, pattern guards source ↗
Documents pattern guards as a GHC language extension, presenting them as a shortened form of a proposal by Simon Peyton Jones.
Wikipedia article Haskell source ↗
Its infobox counts Raku among the languages Haskell influenced, footnoting a glossary page on a Perl 6 wiki; the article text mentions Pugs only in a list of Haskell applications.
What the Raku community claims
The Raku community has been modest about its influence. Across 1,088 Weekly and Advent posts from 2009 to 2026, 133 6guts posts, raku.org and the docs FAQ, no author claims that a language outside the Perl family borrowed from Perl 6 (rakuweekly.blog; raku-advent.blog; Raku FAQ38). The Weekly never reported PHP's increment RFC or C#'s chained-comparison proposal. The one outward claim on record is Sidef, a single-author language whose readme names Raku among its inspirations (Sidef39).
What the sources say 2
Raku documentation Raku FAQ, docs.raku.org source ↗
Describes Raku as a sibling of Perl and makes no claim that Raku influenced any language beyond the Perl family.
trizen (Daniel Șuteu), Sidef's author Sidef README, GitHub source ↗
Presents Sidef as a language drawing on Ruby and Raku, plus built-in computer algebra and exact rationals by default.
Larry Wall's view
Larry Wall presented Perl 6 as a borrower. In 2016 he said other languages had taken Perl 5's regexes, and that a language borrowing enough of Perl 6 to be consistent would simply have reimplemented it (Slashdot 201640). In 2006 he predicted that everyone would move from PCRE to Perl 6 regexes; Swift is the language that went furthest in that direction (OSDC::Israel 200641).
What the sources say 2
Larry Wall, interviewed by Slashdot readers The Slashdot Interview With Larry Wall source ↗
Says other languages took Perl 5's regexes, jokes that a PHP borrowing enough to be consistent would have reimplemented Perl 6, and credits C#, Erlang, Go and Haskell for Perl 6's concurrency ideas.
Larry Wall, Perl 6 language designer Present Continuous, Future Perfect, OSDC::Israel talk transcript source ↗
Observes that everyone borrowed Perl 5's regexes and predicts that people will abandon PCRE in favour of Perl 6 regexes.