Chapter 7 of 9

Perl 6 traveled further as people, a VM and a warning

Perl 6's best-documented influence on another language community ran through Pugs, and it affected Haskell's adoption rather than its design. Haskell's HOPL III history (2007) names Darcs and Pugs as the open-source projects that drew people to Haskell, recounts that 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 on several GHC extensions and that people who met Haskell through Pugs, such as Edward Kmett, went on to energise its community (Tang interview2). Parrot left a cited footprint in VM research rather than in languages: 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), and the 2008 "Virtual Machine Showdown" paper says the stack-versus-register debate reopened because of Parrot's decision (VM Showdown4). No hosted language other than Rakudo ever made Parrot its primary implementation, and active development ended in 2021 (Wikipedia: Parrot5).

What the sources say 5
  1. 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.

  2. 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.

  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.

  4. 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.

  5. 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.

In other languages' design archives, Perl 6 is mostly a warning, and the warnings come from the top. Guido van Rossum told python-dev in January 2005 that Python 3000 should not be as pervasive as the Perl 6 design, wrote in April 2006 that the Python 3000 process aimed to avoid a repeat of Perl 6, and in 2008 contrasted Python 3 with Perl 6 as a wholly new language and implementation (python-dev6; Artima7; Linux Journal8). In the python-3000 thread that led to keyword-only arguments he cut off a bracketed parameter syntax by reminding the list that "we don't want to emulate Perl 6!", and in 2007 he answered an argument for Unicode for its own sake by pointing to Perl 6 as where that road led (0010949; 00768910). Barry Warsaw in 2000 and Łukasz Langa in 2014 used Perl 6 the same way, and a 2007 April Fools' PEP joked about Perl 6 not yet existing (Warsaw11; Langa12; PEP 311713). Brendan Eich said in 2008 that nobody on ES4 wanted it to resemble Perl 6, and in 2014 granted that Perl 6 was full of good ideas that required a compatibility break (esdiscuss 200814; esdiscuss 201415).

What the sources say 10
  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. Ł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.

  8. 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.

  9. 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.

  10. 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.

The same use runs through the other leaderships. Ian Lance Taylor's Go 2 transitions design doc (2018) dates Perl 6 from 2000 to a 2015 spec, calls it intentionally incompatible and endlessly evolving, and draws the lesson "Don't be Perl 6." beside meeting deadlines and not changing everything at once; Go then gated language changes by the go directive in go.mod from Go 1.12, and Russ Cox later ruled out a Go 2 that breaks Go 1 programs (28221-go2-transitions.md16; Go 1.1217; Go blog18). Douglas Gregor of Swift's Language Workgroup set Perl 5 → 6 beside Python 2 → 3 as a transition that never happened (2023), Martin Odersky contrasted Perl 6's years in announcement state with Scala 3's coming feature freeze (2019), Steve Klabnik, then on Rust's core team, wanted no repeat of the Ruby 1.9, Python 3 or Perl 6 situations (2015), and Walter Bright asked in 2015 whether Perl 6 had not gone through a paroxysm of its own (Gregor19; Odersky20; Klabnik21; Bright22). In PHP, Adam Harvey warned in 2014 that PHP 7 risked becoming the Perl 6 of its decade, and Stanislav Malyshev opposed the 2016 pipe operator as moving the syntax too far toward Perl 6, though |> eventually shipped in PHP 8.5; PHP's 2014 vote to skip version 6 cited Perl 6 among its reasons (7675523; 9296824; pipe-operator-v325; PHP RFC: php626). Rust's RFC threads mention it with Python 3 as the kind of drama a Rust 2.0 should avoid and, in the 2017 editions debate, as the model for separating a language (Perl 6) from its implementation (Rakudo) (rfcs #88627; rfcs #205228); and Perl's own proposal process lists the Perl 6 RFC era's habit of proposing features nobody knew how to implement as something to avoid, while Rust modelled its RFC process on Python's PEPs (PPC motivation29; Rust RFC 000230).

What the sources say 15
  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

  8. 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.

  9. 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.

  10. 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.

  11. 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.

  12. 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.

  13. 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.

  14. 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.

  15. 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.

The histories other languages wrote about themselves point elsewhere too: JavaScript's HOPL IV history credits Perl 5 for its regex and array functions and Python for generators, destructuring and comprehensions, and never mentions Perl 6 (HOPL JS31); Chris Lattner's list of the languages that influenced Swift 1.0 omits Perl entirely, although he later urged Perl 6's regexes and grammars on Swift's string work (nondot.org32). As of November 2026 Wikidata records no language as influenced by Raku (Wikidata Q205267633). Raku's Wikipedia infobox lists Perl and Haskell as influenced, citing Audrey Tang's 2010 post on implementing Perl 6 — not a talk but her PerlMonks reply of 21 April 2010, reposted on her blog — which supports influence on Perl 5 through Moose and other CPAN releases but makes no claim about Haskell: it says Pugs needed host-language features that later appeared in Haskell 2010 and GHC, and one of them, pattern guards, was already documented in GHC 4.08.1 in 2000 (Wikipedia: Raku34; Tang35; GHC 4.08.136). Haskell's listing of Raku cites a Perl 6 wiki glossary page (Wikipedia: Haskell37). The Raku community itself has claimed almost nothing: across 1,088 Weekly and Advent posts from 2009 to 2026, 133 6guts posts, raku.org and the docs FAQ, no author says a language outside the Perl family borrowed from Perl 6, and the Weekly never reported PHP's increment RFC or C#'s chained-comparison proposal; the one outward claim the record confirms is small, Sidef, a single-author language whose readme names Raku among its inspirations (rakuweekly.blog; raku-advent.blog; Raku FAQ38; Sidef39). Larry Wall himself presented Perl 6 as a borrower, saying in 2016 that other languages had stolen Perl 5's regexes and that any language borrowing enough of Perl 6 to be consistent would simply have reimplemented it; his 2006 prediction that everyone would move from PCRE to Perl 6 regexes was not borne out even by Swift, the one language that seriously tried (Slashdot 201640; OSDC::Israel 200641).

What the sources say 11
  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

  6. 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.

  7. 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.

  8. 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.

  9. 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.

  10. 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.

  11. 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.