New in 2022.12: + Improvements: + Improve flow of calling set-env.sh from a script [57337212] + Make the "needle (elem) list" message more clear [958537b1] + Make X::TypeCheck::Assignment message better [05d60e21] + Simplify X::TypeCheck::Assignment for containers [1e30b43c] + Additions: + Allow for --no-foo as alternative to --/foo when %SUB-MAIN-OPTS is set [61617b12] + Allow for -j2 as an alternative to --j=2 when %SUB-MAIN-OPTS [388924d6] + Allow for .skip(produce,skip,produce,skip,...) in 6.e [2a1ace84] + Introduce "nano" term in 6.e [10feda11][feb97323] + Add IO::Path.created returning the Instant a path was created [dbf035d8] + Introduce // as a definedness prefix operator in 6.e [d05f7eed] + Add method Any.snitch in 6.e [10066021] + Introduce Dateish.days-in-year method [3d181c89][4d43bbf9][67513cb8] + Add rotor-like capability to Str.comb in 6.e [84abeb52] + Make sure Type.are also works [983cf3ec] + Implement IO::Path.chown and chown() [1e02f566] + Efficiency: + Add a lot of uint candidates for a lot of ops [47f9b286] + Add proper support for uint comparisons [25c76aed] + Fixes: + Make List:D.iterator a multi so that List:U.iterator works [5ad2c0c6] + Add missing Allomorph.words method [59a34853] + Revert "Add CUR::Staging.candidates method" to fix issue with precompiling modules for packaging [9360c650][6937da17][454752e3] + Implement nominalizable transparency for definites [71de2232][c915b07c] + Make World's `is_type` method more reliable [13f7416c] + Don't blindly make a Version object for vN [7ddb90ce] + Add missing $obj? to Perl6::Metamodel::JavaHOW.archetypes [d059921b] + Fix role parameterization over generics [94f3028e] + Get job done well for coercive nominalizeables [9e18b391] + Make generics work with return type in signature [a3021944][47c35cab] [4cdb5585] + Make (1,2,3,4,1,2).QuantHash>>-- work [63d03eb8][d0ec99a8] + Report deprecated subs/methods that are hidden-from-backtrace [43a6575b] + Feeds require .append to work, not .push [29eadbb2] + Make feed error message more comprehensible [2070ceeb] + Fix module installation writing precomp files into the wrong precomp store [cc7193d0] + Fix NEXT / LEAVE phaser interaction on JVM [ce1af0fa] + Fix definite type parameterization [07164fec] [8a7d84c5] + Fix a regression introduced by new 'dispatch' path related to smartmatch [35b180b8] + Make sure that Array.raku doesn't die on a lazy iterator [2037ffba] + Make sure .elems don't mention the class [3859d6cb] + Fix smartmatch in EVAL regression [0a9e2014][2702b001] + Avoid loss in precision on FatRat .Str conversion [441e71a5] + Revert "Simplify setting up standard handles" to fix seemingly unrelated issue with IO::Notifications not working [64f552f3] + Removals: + Remove nqp::p6client* ops [126aa804] + Internal: + Tune Java in response to nqp's (de)serialization rewrite [018e549b] [5a57f84e][18122e02][a78033f1] + Reuse $v-how instead of calling HOW again [191964c5] + Change internal API of RI:Snip [feb04dbe] + Move the iterator logic of Str.comb(N) to RI::Ngrams [e826dbdc][d12461b0] + Actions: Avoid repeated $ eq 'S' [bc3b5824] New in 2022.07: + Changes: + Re-imagine DateTime.new(Str) / Str.DateTime [aa462b41] + Make sort() a runtime error [0c9169dc] + Implement coercion via new-disp and re-consider return typechecking dispatcher [7774c331][4ab61720][efd610cb][b4a26fbe][3e45f709][6c3cb859] [f448ac47][a9606b29] + Make Iterable.hyper|race take Any as a default for :batch and :degree [d73d035e] + Additions: + Implement fallback support for MRO [1128d5cf][83197e34][9710a85e] + Add IO::Path inode, dev, and devtype methods [5c4970c5][599a6362] [6dc2f92c] + Add sub version of .head / .skip / .tail [af31b1df] + Implement Haskell's "span" as "snip" in 6.e [16ccb573] + Removals: + Efficiency: + Add native sub versions for .elems and .end (up to 4x speedup) [4fedb6f0] + Make coercions up to 1.6x as fast [5a8aa66b] + Add candidates for sub substr(str,int,int) for up to 2.8x speedup [09ead96e] + Fixes: + Fix cases where we try calling methods on BOOTCode [4130846b] + Make PostionalBindFailover.iterator die [dd7f3eb9] + Fix subclasses of .Date(Time) coercion [1a7b4b1b] + Revert relaxation of positional bind failover binding [bb944723] + Fix an LTA error message on passing Seq to a List parameter [db13e402] + Fix copy-pasto in error message for native unsigned ints [ffdeecd1] + Add missing private error handling method in Buf[32a40791] + Consider Positional/Associative type parameters in optional defaults [7148da1c] + Fix a deep recursion issue in return typecheck dispatcher [9fa76ec6] [808b0768] + Fix a regression where coercing into a role didn't work [0e09a287] + Implement lazy 'handles' trait application for methods [6430d41d] + Get around a problem where a module duplicates method objects [324adc5a] + Fix lone "-" in MAIN handling with :named-anywhere [3d3966b0] + Add ACCEPTS method for DateTime [31779f47][621d69e0] + Fix some cases of coercion over containerized values [fbe3acd0] [02f32d51] + Make code object based delegation 6.e feature [c6c8dfee] + Internal: + Micro-opt on CoercionHOW.typecheck [41e07ab9] + Make coercion more easily inlineable [eceea95c] + Simplify $has_varname setting [378a89e6] + Simplify native value / container check in binder [750487c6] + Further simplify native binding check [fc149e22] + Streamline native match check [a2f92b2b] + Ternearize lexpad binding of natives [f2546b44] New in 2022.06: + Changes: + Allow optional : on LHS of signature binding declaration [20fd4f04] + Make &[max] and &[min] return RHS for ties [175e716f] + Make handles on attribute of type object more natural [1c04360d] + Allow openbsd to locate shared libraries by version [5abd57a8] + Allow :from in identities [3051eefa] + Reconsider the way `$*PERL` is deprecated [10d73ada] + Allow setting ThreadPoolScheduler's max_threads to semi-infinite value [4e56f241] [b0ebb5e6] [febff8fb] + Additions: + Categorize exceptions thrown by role appliers [7a2f3b19][9155b92b] [d79a261d][86d2a75a] + Add :real named argument to DateTime.posix [1ffedd66] + Introduce (Exception|Cool).Failure coercer [51c00fdd] + Removals: + Efficiency: + Slightly speedup exponentiation by Ints [6f6fd1f7][1a12c34d] + Fix unneeded dependency check [636c805e] + Make .tail() on native arrays 25x as fast [7a25fc91] + Make .head/.tail faster on native arrays [7a25fc91][3c47f1d4][73b43e5f] + Make Date.new(Str) a few % faster [39298f10] + Make block exit handling faster for blocks having phasers [9a29735d] [080abcd8] + Fixes: + Fix install issue on JVM [e4ba84af] + Fix exponentiation by large negative Ints and speedup exponentiation by any sized negative Ints [c66c98fe][e4ae4737][b2c44bf3] + Fix for positional argument binding [83ea6474] + Fix infix le on two native strings [e93447cf] + Fix execution error when referencing non-existing captures [aaa5615c] + Remove counterproductive fallback from ModuleLoader [217960e2] + Resolve race conditions when working with symbols and repositories [6fc2e6c6][0293ae58][ad2fdca4][d1b58910][f5dbd15a][082c7122][466a21d3] [cef53ac1][2e17ca3d][8940d688][95fb9260][3b4061f6][c2f495b0][18c19fc9] [6b117a36][2c6bccb4][ddef6461][a5cf1227] + Make "make test" clean on newer MacOSes [a6a856a4] + Fix my %h is (Set|Bag|Mix|)Hash = foo [62b6792a][51fd091a] + Internal: + Update BUILDPLAN helper module to uint renumbering [bea59762][9fd893f7] + Let core module installer use information from Compiler object [ce86a7db] + Put CATCH blocks at the start of the scope for maintainability [9f8eea41] + Various micro optimizations and dead code removal [ca5cfed8][0e55e9ff] [36bdd01a][280a2090][b01c493a][a84e1684][64317c4e][8f70f8db][b84a6d2e] [59d07871][556f1a2a][bf979d08][e9de06b8][ce86a7db] New in 2022.04: + Changes: + Improve error when `make` encounters non-Match $/ (#4834) [2da9eb22] [540c7365] + Additions: + Make previous values in REPL accessible with `$*N` [190e303d][1292357d] + Add `INSIDE_EMACS` environment variable for better embedding of the REPL inside Emacs [76035de0] + Add an `IO::Path.dir-with-entries` method, returning a `Bool` indicating if the directory has any entries (without danger of resource leaking) [8a1e7788] + Implement `will complain` trait [a203a5af][2c2c5306][beeb9ffc][2baf8bc6] + Removals: + Remove the $?COMPILATION-ID constant as it was not documented and not tested [b2a8bfc9] + Efficiency: + Make IO::Path.mkdir 2x as fast if dir already exists [57a65562] + Shortcut many methods on `Empty` (returning `Empty` without needing to set up an iterator and a `Seq` [1b4977c6][8f5a07d0][943c443c] [1afc3f4f][78ca49eb] + Some optimizations for regex substitution [79cd9d97][55c833ad] [72f2f400][4503faac] + Micro-optimizations to make compilation of Raku code faster [3b692b1b][9a860ca8][9b07b66c][f6d9e90f][6736bd74][2555660b][f00fa82a] [a0303b18][0cb12fee][c74b1275][7c1e80c6][3187922b][5dfa9c4e][c891075f] [91185079][0fe48931] + Micro-optimizations to make module loading faster [f19d36b3][412c4625] [ec20a3f0][173a75b0][97ad3f79][04c8bd6b][55685572][397145a6][83bf9d26] [1c73cb8d][fc5ee2b0][1fd2d843] + Micro-optimize creation of `IO::Special` objects a bit (3x at each Raku startup) [3e217a0d] + Fixes: + Add mention of 'sub' potentially missing [a56d239d] + Revert "An object will never work if native is expected" compile-time error [94d4820a] + Only assign to caller's `$/` during a regex substitution if it's writable [aed27864] + Make sure we serialize exports [f4cba21c] + Ignore any dot files in "dist" directory [07b4422b] + Make `*CWD` initialization non-lazy, it is almost always needed and making it non-lazy prevents a race-condition [e9575349] + Don't initialize PROCESS:: variables more than once [e7143e00] + Protect setting loading with a lock [5dd82a62][07d3030a][d53d2da9] + Don't treat `!=` as a meta-op of `==` [f3b1e95d][12dd09e1] + Fix race condition in Rakudo::Supply::BlockState [5658f4da] + Fix for a lexical being localized while used in a nested scope [19c6c52f] + Fix typed named argument arrays not reporting type correctly [dcb0ac09] + Make `uniprop`/`uniprops` thread safe [2bd2ca0f] + Correctly check for writeable containers [90d876a3] + Internal: New in 2022.03: + Deprecations: + Additions: + Expose the `.file` and `.line` methods on `Label` objects [028828ac] + Allow `Date` / `DateTime` *day* parameter to be a `Callable` / `Whatever` allowing e.g. Date.new(2022,3,*) for the last date in March 2022. (#4808) [37756433] + Make sure tools/install-dist.p6 is also available as .raku [6ddf7529] + Removals: + Changes: + Make error on `Date.later(:hour|minute|second)` more awesome [7f00f798] + Give `.chomp` the possibility to specify a needle (#4739) [cccc3e8c] + Improve error message for invalid arguments passed to traits [eb151d53] + Test should work with any default version of the language [9425d0fa] + Fixes: + Un =my= `X::Comp::Group` [74cca333] + Turn junctions into value objects [cc3ed94b] + Fix a bug with gist over `Junction` keys [df09bef0] + Fix classification and categorization over junctions [c50f51f9] + Fix typo'd missing : in .nominal_type signature (#4788) [59dcca66] + Decrement # of calls in a block if any are optimized away [4d19c236] + Fix [native array `.repeated` / `.unique`] issues on JVM backend [b46fed9c] + Fix `IO::Path.parent` [4ef9426f][e53716aa] + Fix multi-method candidates lost when 6.e role is applied [6b58cc03] + Workaround for cases where `.ACCEPTS` may return non-Raku object [f1f5d5cd] + Fix issue with native array.splice [blin] [63830142] + Fix issue with `Net::Curl` [blin] [6d04cc39] + Make `DateTime.new(Allomorph:D)` work [60603bac] + Restore `given` / `when` optimization for `Numeric` cases [986b1df4] + Fix/test `Pod::To::Text` rendering of `=defn` elements (#4803) [ca2d1d6c] + Remove erroneous early exit from install-dist.raku [edb8a200] + Fix resources of the parent repo not found when using Staging [07d580bc] + Internal: + Optimize more cases of p6decontrv ops (#4793) [2ed88523] + Use new native unsigned integer NQP ops where applicable [ceaa38fc] [4d61a582][28a734d1][548c2550][167c2394][72b9e1c2][e000840d][88386a09] [3e89b30a][96cbc2be][f807186e][de9eeeb2][a71ec345][7c5595e2][a965cdcb] [771655b0][5c8a2cf7] + Generate the SignedBlob/UnsignedBlob roles [65507b89][7870b446][4677dcb7] [fb25bd4e] + Use --/++$i instead of $i = nqp::add/sub_i($i,1) for readability, as this is no longer needed for performance [5caf7aaf][648d02a1][0fac2da8] [db277ae2][11494f98][e06e32ef][2dfc69e2][3b64a627][81099326][a6019d51] [2bf84660][c92b44ec][af7c1c32][8077ebd3][6513988b][b79e9ba5][802a4737] [8529cc97][a236d438][08dcab8d][c1345c57][c7231cd7][bd722aba][473e903a] [f8e69321] + Streamline the Blob/Buf generated code a bit [6a21196c][6230645a] + Generate the sorting logic for native arrays [64c7dfa1] + Make Complex multiplication factor constant [7bc572e7] + Streamline Complex -> Real coercion [e3b836a5] + Simplify creating a Complex object [967a130f] + Enable num->str coercion in native.repeated/unique [979cc607] + Remove unneeded/confusing can('prec') checks [232a55b9] + Remove some unnecessary `try`s (#4773) [0949d67c] + Stop telling users to avoid mimalloc [200579f7] + CURS simplifications (use TWEAK over BUILD, remove .name) [3f10f7da] New in 2022.02: + Deprecations: + Additions: + Add support for $RAKUDO_OPT environment variable [e82e6774] + Implement sub rotor [90a04ac0] + Introducing $*RAT-UPGRADE-CLASS (#4299) [f737b080] + Add Cool.Order "coercer" (#4473) [4b2fc66f] + Add CI job that runs a spectest instead of Rakudo tests [7ef7b6ed] + Add :slip named argument to roundrobin() [de605e84] + Add an Any(iterable).infer method (#4626) [4d263779] + Add ACCEPTS candidate for Junction to Bool [f21af28e] + Add missing checks for nulls [821195b2] + Add missing precedence info for some infix ops (#4725) [cd86606e] + Add .unique to native arrays [bc8c286f] + Add .repeated to native arrays [369093c8] + Add .squish to native arrays [284b5623] + Finally add in memoriam for David Adler [510c24ed] + Removals: + Remove uniprop-(int|str|bool) [cc5f17a0] [2b355dc4] + Remove check for nullness of descriptor [b2f0a9d2] + Remove some no longer needed CALL-MEs [25ca2064] + Remove RESTRICTED setting (#3965) [6a8fa2f4] + Remove two dummy parameters from (Fat)Rat coercer [6c765609] + Remove dead code from MoarVM and JVM extops [e912bf2e][1ba3fe04] [421dd982][969ae326] + Changes: + Relax cross-language revision role-class boundaries [d493a051] + Get rid of trailing ] and } when dd-ing typed arrays/hashes [49608021] + Adapt to nqp::radix(_I)? now returning # chars converted [4a3753fb] + Disallow creating Uni with out-of-range codepoints [c56c578c][ef35db06] + Make Complex.new about 30x as fast [586f2f3c] + Get IO::Path!SET-SELF below inlining limit [4f3ff580][efdc1a9e] + $x ** ±Inf is sometimes 0 (#4226) [03065e29] + Make dd output consistent for arrays and hashes [59929f0a] + Call .perl(:arglist) for Capture's list elements [27ede8cb] + Make class A does B{ } error more awesome [535e0151] + Make .WHY on role group delegate to default role [8f989d1a][d3e74427] [91e3c983] + Make set-env.sh script work on MacOS (#4704) [19696916] + Protect some typechecks with try [e3f22147][5f843222] + Make sure that subclasses of FatRat .raku correctly [d6e6afb0] + Make Rat.FatRat about 5x as fast [82afbbf0] + Rename Any.infer to Any.are [186bd0b0] + Bring Rational.floor/ceiling/round/Int below inlining limit [59ea71f7] + Reduce bytecode size of Array[TR].BIND-POS [daeb9915] + Make adverbless @a[iterable] about 2.5x as fast [30f1fba3] + Make adverbless @a[*] about 20% faster [8ac55c57] + Make the adverbless zen-slice (@a[]) a few percent faster [21829c33] + Make FatRat.Rat coercion about 6x as fast [2fe1bb85] + Bring down bytecode size of nativearray.splice helper [38648b4f] + Re-arrange Int.base a bit [4d78bc6a] + Make unsuccessful .first about 40% faster [ed99df18] + Extract failure creation into separate subs [7dc3add8] + Make Capture[n] (and thus $0, $1, ...) about 5x as fast [11c8f82a] + Implement smartmatch as a dispatcher [32401c47] + Set up nativeref types for unsigned integers [b70d1147] + Support primspec 10 for unsigned integers [b092cc6c] + Also check iscont_u when looking for native references [2509e183] + Support uints as their own argument kind in dispatch [c0fbd367] + Use unsigned ops when handling unsigned buffers [63b2b846] + New uint candidates for operators [4db92b18] + Switch to unsigned ops where appropriate [c38b6b42] + Unsigned versions of some iterators [56923c12] + uint versions of native arrays [1ef6001f] + Bring uint improvements to the JVM [27f3b719] + Introduce NYI as a sub (#4716) [94456edf] + Make Int.roll/pick act as (^Int).roll/pick on 6.e (#4695) [45090c91] + Make Int.roll/pick about 6x as fast in v6.e [6222a14c] + Make ^Int:D about 14x as fast [21ee1fa0] + Make creation of Int .. Int object about 14x as fast [8fbe6c0a] + Specify base of non base 10 invalid numbers (#4717) [522155d5] + Further improvements to smartmatch dispatcher [cd20a2bc][6148b75c] [abfb9f86][2486960b] + Do some better job optimizing Junction on RHS [6f925ea2][eba72f4b] [49955840] + Properly support uints in BUILDPLANs [a38bebec] + Don't assume "year" as unit [34455138] + Use proper unsigned ops for accessing multidim uint arrays [8777e923] + Use nqp::istype for nominalizable smartmatch [ef4abcc7] + Fixes: + Make ranges coerce LHS into a numeric if range boundaries are numeric [7f73dcbd][dd5fabf9] + Many improvements to smartmatching and given/when [d0f2690f][7f1189fe] [7554d733][80fbaadd][fedfd716][91ec1bbf][5855c1d5][6616440d][9f80771c] [966e77fe][a1bb638f][ed85bad6][6b828fe6] + Fix Map ACCEPTS by collapsing explicit junctions [87621e1a] + [JVM] Mention routine in error for wrong arity [522e49a7] + Fix the behaviour of Pair ~~ Pair (#4671) [026c51a0] + Additional fixes and improvements of smartmatch optimizations [2a3f61ef] + Don't use MVM_free if we didn't use MVM_malloc [1b5c0b95] + Fix Nil warning in dd [a8498e8a] + Fix dd for nameless things [95d60623] + Fix potential race condition in Proc::Async start [8321ce10] + Test return constraints for role implementors (#3249) [56b57f61] + Use simpler code for correct `.length` suggestions test (#4703) [9310799c] + Fix warning in Pod::To::Text signature processing (#3528) [36cee696] + Make sure rebuilds of native array will generate ok [21d988d1] + Make add_constant lookup setting symbols only [28b51238] + Make initialization of core dynamic variables threadsafe [768ebea7] + Fix is_array_type on roles [944debd3] + Fix writes to native arrays via [] returning arbitrary data [72ef4e4d] + Fix "This container does not reference a native unsigned integer" [3823f88c] + Fix "This container does not reference a native integer" in Blob/Buf [a64c2f55] + Fix CArray treating all native integers as signed [fee9e822] + Eliminate p6decontrv ops caused by *_u ops [e5b67c1d][b3a71fbc] + Fix custom-lib race (#4738) [dab9cd66] + Fix method put failing on junctions [e521c8e4] + Fix Attribute.(get|set)_value treating uints like str [382f2f10] + Add unsigned candidate of +^ (bitwise negation) prefix operator [ffa09ff6] + Fix "Invalid ....BUILDALL plan: 24" error [118a0c3d] + Fix Attribute treating all native integers as signed [753c173e] + Fix optimizations of smartmatches over subsets [d6fb1919][b9d8aa49] + Fix "container does not reference a native integer" in UnsignedBlob.STORE [14bacc24] + Fix "No registered operation handler for 'iseq_u'" [4e1a7721] + Fix NativeCall wrongly expecting signed integer for size_t rw args [c92833f3] + Fix UInt where block trying to unbox a Scalar [26215f20] + Fix "container does not reference a native integer" with mixed int/uint multidim array indexes [7cb21467] + Fix "container does not reference a native integer" in multi slice [e4a4a92f] + Allow for using uint and int as indexes in native array slice assignment [a35a7791] + Fix precomp file rename race condition [006a920c] + Fix X::Method::NotFound on my-classes [8edc6d88] + Internal: + Replace nqp::attrinited with a descriptor-based approach [425913dc] [c3448773][13522362][71f8981b][c76c1e64][80f122d1][f96048c1][b6135861] [bdb0cc23][c719eab8][cd585f9d][8f796f5b][28053bd2][43f4e8a5] New in 2021.12: + Deprecations: + Additions: + Add is-wrapped method to Routine (#4579) [99bc766e] + Introducing RAKUDO_PRECOMPILATION_PROGRESS [d88d1cc0] + Add In Memoriam stub for David H. Adler [dba8dbb0] + Add a IterationBuffer.new(iterable) candidate (#4599) [ad145b4c] + Add IterationBuffer.unshift/prepend methods (#4641) [259d29b3] + Add knowledge about MacOS Monterey [1fc8cce3] + Add the ability to display any default values in sub MAIN to the default USAGE message [0b286ed2] + Changes: + Remove tai-offset-nanos from CORE::.keys [a8c579b6] + Make .subst-mutate faster by simplifying proto [d619e026] + Make .match faster by simplifying proto [2204c7cb] + Make .subst upto 1.9x as fast [0dae67a6] + Remove redundant multi method list(QuantHash:U:) [8fd65670] + Replace some empty TWEAKs by "is built"s [82a9ca4f] + Better cope with megamorphic callsites after new-disp [85df0ba1] [3229ef12][2df1d01a][091005f3][9ad99eb9][441e103f][0d84699c][5de7faf4] [e4b0ddf9][1fbeb4c6][f9aa1d65] + Support Terminal::LineEditor in the Raku REPL [5db6a344][138aca10] [694f648b][7b188795][15a13ffc] + Change SetHash.values() from `is rw` to `is raw` [65987460] + Very simple ACCEPTS for Int:D vs Int:D (#4625) [57387455] + Get either parametric or concrete roles in MRO when requested [641a86d5] [832a8476][bf2a07fb][856f1af0] + Create checksums for release files [8cb674ac] + Clean up list of people to ask for rakudo.org access [a31db709] + Micro-optiize IterationBuffer.append(IterationBuffer:D) [92c490ee] + Remove support for use experimental :collation (#4616) [eb837dee] + New disp nativecall (#4629) [f67fb4ab][30a7e94e][889754d5][d46a826f] [ad5cc86f][f20d448e][452781f3][624f3a7a][02539e96][3e3b5ca8][01470de8] [a6633242][d5b98cf7] + Update Release Guide to have actual information (#4639) [b3b4ca21] + Make Date.new(year,month,day) about 40% faster [74c8c861] + Make Telemetry::snap(:head) return the filename [ad1fddbb] + Make the max number of threads depend on number of cores (#4652) [afc56429] + Make Inline::Perl5 installation suggestion complete [4e23452c] + Speedup Instant.Num by manual inlining [4985f8a6][8642808e] + Add "ceiling" as a suggestion for "ceil" [57adbb1e] + Reduce number of nqp::cpucores calls (#4659) [c7e456d3] + Fixes: + Make enums and Bool throw on .new [42738187] + Use distribution specific comp unit ids in CURFS [7ab396a0] + Fix X::Assignment::RO message when assignment to Nil is attempted [1ea47322][15ed1566] + Make sure return value of Str.match is threadsafe [1d0a903a] + Fix gisting Buf or Blob parameterized with an unsized type [62c04646] + Use better default for nativesize in Buf/Blob gist [e99e2742] + Clarify let and temp operators [1fec0ef2] + Make StrDistance.ACCEPTS also a multi [3ef09a72] + Make sure IO::Path.slurp returns failures [ce0d31fb] + Make sure ParallelSequence is included in shas [e98e17da] + Fix handling of constrained Mu parameters in signature smartmatching [4329a995][c6e24eba][034768de][e6a68a94][088e0c4e] + Prevent rebinding for readonly parameters [PR #4536] [ea42b3df][5e1f25d9] [32e307b6][90307035][aeaf6f5e] + Fix segfaults when multiple threads initialize dynamics [db136bc5] + Make concurrent access to an enum by value safe (#4634) [4c238bdc] + Fix CATCH blocks setting $! leading to serialization errors with BEGIN time exceptions [b994c6bb] + Fix stupid copy-pasto, fixes #4660 [57801d59] + Minimal change for fix on MacOS Monterey [f029ac83] + Don't suggest method of the same name as "not found" [27082897][58c3d950] [d4914edd][af0153df][545f8d0e] + [JVM] Don't let signal(SIGINT) break the REPL [1ef7019b] + [JVM] Skip or todo failing tests for JVM [d301860e] + Restore larger limit for using string_to_int on 64bit systems [7772b737] + Fix segfaults due to concurrent hash access in parallel module loading [835d0f12] + Fix removing proxies in native calls [f0713c42][a6fad879] + Internal: + Lift $!do reading out of `for` loop body [560ff8c6] + Fix unnecessary boxing by routines with native return types [6bd955e6] + Prepare extops for a MoarVM internals change [3127861c] + Reduce visibility of Str internal classes [380c7758] + Only simplify protos on the MoarVM backend [c50bc998] + Add a missing MVMROOT in extops [ab02205e] + Remove an unnecessary decont on a hot path [24333b11] New in 2021.10: + SPECIAL NOTES: + Introduce a new dispatch mechanism, including more general and efficient handling of various language constructs. For more info see [The new MoarVM dispatch mechanism is here!](https://6guts.wordpress.com/2021/09/29/the-new-moarvm-dispatch-mechanism-is-here/) [d557f72b][3e086599][1f359956][959eaeab][dc456a1a][a114255c] [055ca78b][4e5e5329][41de71cf][4ecb1995][83f66c59][482f2561] [5c72c7b0][1023c381][8bd88c2e][d9b75e82][7d5f251c][10e5e32b] [54c085e9][e20ee30f][54f2d5ec][34d48682][69d8d938][734ecd2f] [b6359402][68aaeb1e][75a9cb65][52587136][38407083][d28a8aff] [3c5193d1][db03d022][e598691a][39cc4ee7][2b189a51][074c5fc7] [03b524dc][a42047fe][42b52ec9][997af70f][66dc358b][4302f94d] [f146f705][306a9e02][b4bb83c2][0d2db69c][b42f34e9][8ba49228] [868c05ff][90410697][753d269a][4f9ac059][8cc60acc][8845d57a] [71086d4f][c58d69eb][1360ffe1][3dd4314d][4956784e][db543fc6] [3aeb8e31][1ca8b728][417d17c5][8fc8a7f8][fba37c5b][85d4aaee] [dda0ea03][2baa490b][50fcef71][419d21a6][6e4a5420][21680e1f] [ccf7fa59][ca4d3f76][5973a1c6][5b4ee2e5][533978d0][192821f8] [c34964b3][7f15f505][39eb6778][049d1300][6bd5a86b][7055e93c] [df9c3939][26ee39e1][258610e8][fd9d62be][cff8e98f][9b39ae14] [269d9394][610a6c81][5d93c2ea][8b52034d][7e9aa39b][ce7e94e6] [29973253][13cae29b][b21bf9a8][7816de91][1c2b7149][c6342f8d] [de24aac1][ddcaf413][67501437][1355f036][3ebee705][1ab7674b] [8e760be0][4c14af68][25f0ef88][fa5b82af][dafb08cf][daa954fa] [652079e7][7afa7bf6][dc070055][11e73132][4e0ceea0][cf46a3c6] [8e20ea60][d17f00b5][5ba7cf0a][885f4ab5][84da856a][f8fa8844] [25d2f634][5d07d600][1f172ecb][5dedf062][20a3ed03][79e5919b] [605cd8e5][61f6984b][96e15cf5][439fc5bd][7583f21e][fa4efbf1] [52338a0c][b8183107][84b1820c][f496be1d][edf17b3d][9d7d164c] [c1a89bc0][1253f4bd][c0098e3f][ebd03058][3e5e217f][cee2053c] [9e7499ed][a267025f][33a6655e][fd383374][1220a3ec][a638cf61] [c1a89bc0][1253f4bd][c0098e3f][ebd03058][3e5e217f][cee2053c] [9e7499ed][a267025f][33a6655e][fd383374][1220a3ec][a638cf61] [c61d91a6][65b5b4a9][e7fee3ac][b63ff146][0400253c][6d05ce36] [90e650cf][73b82cf2][02d4e74f][336d488b][34df830a][558dccc0] [d2d21236][6d395816][72d9a0de][e8910a4e][e19bcbf2][d4062aa0] [69fb2d79][9441ef4a][8668ebf0][a04fe6c0][fab8e646][39b60a2c] [383a2fb2][36664650][2afbf2a2][7ff1a8a2][0805986b][a0c5c20e] [009f4d39][1bc136ac][0d4ba023][4d25d5d9][4c2be058][2051e7e6] [d9d30744][0da1bec2][41d478e8][45d642f6][0f323688][36738fac] [2ee73dbf][dc2efba6][b8e55656][8504a9a9][dfb8446b][080f772c] [19e0c985][4830a042][f488a6e8][305afb75][9a277af2][77a186f2] [3513296b][3ad1a93f][ebe6682d][32f1e20e][0b6f3b33][c412cd76] [de5ee1e8][0259d451][d2c88868][bfd8a36b][583a6da5][133807ca] [9ea760d8][dd2b274f][38f6f873][21271aa5][cddcdb71][191fbba9] [ff92bac5][aa728ef7][40bf3f3e][8d1f24f9][ca3355a8][d6d90f41] [02c13fad][8fc643ec][b34ae24a] + Deprecations: + The `$*PERL` variable usage will warn starting from `6.e` language release, using `$*RAKU` is preferred now [11fd2d70][3dc4aca2] + Additions: + Add Cool.Version coercer [dab7404c] + Changes: + De-unicodify `Raku` and `Rakudo` in the welcome message [ba15173f] + Fixes: + Fix a bug where using a signature constraint with a named callable parameter did not work [e9a0b18c][9c2cc9c2][ffb587f2][51968148][d47185eb] + Make sure name suggestions shown in the `X::Method::NotFound` exception are properly sorted [0152e3c3][569f90ea] + Fix a bug in module loading preventing the `Inline::Python` module to be loaded twice from different locations [88862a9f] + Ensure symbols installed into `GLOBAL` during loading of a compunit are not lost [0cb2cb50][bb607b6b] + Fix loading wrong version of a module among ones with the same name happening in some cases [33296d40] + Fix overwriting of the `.repo-id` file in some cases [fbb5228e][bc2cac13] + Fix `require` of a package with globally existing class names [d4f7d174] + Fix displaying a warning when using `is` routine from the `Test` module when comparing objects where calling `.Str` is impossible [69aaa424] + Prevent heredocs from improperly using block variables when continuing after the block [a78c9f0d] + Fix a bug where calling `substr` method on a `Str` object without arguments led to infinite loop [93f0d86f] + Internal: + Log event of exhausting system threads when `RAKUDO_SCHEDULER_DEBUG` env var is enabled [ffaf453d] + Pass `lib` in `RAKULIB` instead of `-I` in the `harness6` script [e09df02c] + Rewrite `INDIRECT_NAME_LOOKUP` [431c3d6b] + Use `$*RAKU` instead of `$*PERL` in more places [ff6951f5] + Add `:override` parameter to `Rakudo::Internals.REGISTER-DYNAMIC` [4b8b566a] + Consistently use a number for value in name suggestions hash [c99ffc51] New in 2021.09: + Additions: + Introduce the `safe-snapper` module. It is a shorthand for loading `Telemetry` and starting a snapper with control-c safety, allowing one to stop the script with control-c and still get a report [87152eba] + Add ability to subtract an `Instant` value from a `DateTime` object and vice versa [9a4af4b6] + Add `Numeric` coercer to `DateTime` [67138ec0] + Changes: + Make the `sprintf` method show its format string on error [ea8a95e5][57841911] + The `test` named parameter of the `dir` routine now handles Junctions [21a7117d] + Improve error message for the `X::Pragma::CannotPrecomp` exception [a52f1f62][fe461d17] + Efficiency: + Numerous small speed-ups and memory-related improvements [94462dfa][3aba9707][3c1c709c] + Fixes: + Properly handle List of Lists in the `List.fmt` method [a86ec91e] + Don't lose concurrent modifications to `%!conc_table` [72bc5623] + Fix potential race in `Metamodel::Concretization` [d666dfe8] + Make the default scheduler properly see `RAKUDO_MAX_THREADS` env variable [b14d404a] + Internal: + Support `ROAST_TIMING_SCALE` in telemetry tests [9681a093] + Fix false positive in basic telemetry test [c0a6823b] + Pass along whether the Rakudo runner was called with `--full-cleanup` [5492452b] + Update the concretization table more sparingly [b236dcfd] New in 2021.08: + Additions: + Enable rendering of nested blocks in the `Pod::To::Text` module [07517164][27f7924e][36de39f6] + Changes: + Raise priority of `let` and `temp` operators compared to `.=`, `.` and auto-increment, making `let $foo .= &{ Nil }` work more intuitively compared to `(let $foo) .= &{ Nil }` as was necessary before [ca40fca0][723e7488] + Change the `Scalar.WHICH` method implementation, fixing the semantics to reflect that `Scalar` is not a value object [56fce9e7] + Efficiency: + Make the `&&`, `||` and `//` operators about 2x as fast for the `+@a` candidates [db441c2c] + Improve performance of smartmatching between two `Signature` objects [66ae8612] + Fixes: + Fix some occurrences of hash-related concurrency issues [58ae9394] + Fix the `List.reduce` method when used with `&infix:<&&>` [ea389d66][db441c2c] + Fix matching of native types against roles `Numeric`, `Real` and `Stringy` [a8a78132] + Make `Pointer.Numeric` and `Pointer.Int` methods return 0 instead of resulting in an error [681e3b5e] + Fix a race in the `ClassHOW.new_type` method [08f5448d][83b0bca7] + Internal: + Make checking for Windows cheaper [89df7f4b] + Simplify `Rakudo::Iterator::While` iterator code [ffde2ba2] + Fix location of the `Proc.status` deprecation message [54f1b7a5] + Add tests to make sure float and double `NaN` can be passed to native code via NativeCall using the Raku `NaN` value [8ae6f394] New in 2021.07: + Additions: + Make `cmp` routine work properly on `Iterator`, `Seq`, `Uni`, native arrays and empty `List`s [efb3116a][f3ff0621][76714ca4][39ba8884] + Add the `ACCEPTS(Uni)` method on `Uni` candidate [6b6459f3] + Implement `last` and `next` with a value for `6.e` language revision [402ea056][2542a0ac][a5d81353][0761d4b2][47ebc86c][a2faac4b] [e777fc4f][4f190875][21576423] + Properly support nearly all HTML5 entities in Pod `E<>` formatting code [910179d7] + Allow `Ctrl-C` to stop entry in REPL [cf7b4f18] + Add `⩶` and `⩵` as Unicode synonyms for `===` and `==` [eab780f3] + Deprecations: + Deprecate the `status` method on `Proc` in place of `exitcode` and `signal` methods [249fdba2][2fd458cc] + Build System: + Tidy and improve cleanup rules [e771bd8a] + Support creating an MSI installer [4e93b84e] + Changes: + Allow `add` method on `IO::Path` to take multiple values (e.g. `"foo".IO.add()`) [b4d33982] + Efficiency: + Optimize calls to `map` [a8f144cc][38626c68] + Optimize loops without phasers for one and two arguments case [265888ce] + Make for / map with 2+ arguments up to 2x as fast [4c417f31][4f5fb9e6][bfa6b295] + Make `List cmp List` about 25% faster [50bd1717] + Reduce overhead of loops with phasers by at least 5% [5ecc8308][7a1b729b] + Make the `grep(Callable)` method about 3% faster [52ffc125][bb09bbb8][71f6bada] + Fixes: + Fix `rakuw.exe` to be a non-console app [57885f66] + Fix CURI probing and installation edge case issue on Windows [2839cef6][d668d992] + Clean up sockets created by `IO::Socket::INET.new` on error [bee5c7af][271f17b0] + Fix freezes caused by concurrently produced iterators [8eae05b9][2d396ae7][6e66c2e5][24b0df8a] + Fix `unimatch` for non-base properties [0a1256af] + Internal: + Implement support for `moar::hllincludes` config variable [a96bfdc2][552f2810] + Fix binary release `set-env.*` scripts with space in path [a4a46e3c] + `Rakudo::Iterator::UnendingValue` no longer a `PredictiveIterator` [917d674b] + Separate `Rakudo::Iterator::IntRange` into two classes [03aef65c] + `PredictiveIterator` provides own `push-until-lazy` [7cf3927d] + Various internal fixes and improvements [5976e30e][bdc5092f][1bd0411c][f2959ad5][ddc7c9ff][9c69b7d5] [941349d0][eae82f09][2efe4302][7f5f60e8][22f78f4e][9bf1e1c2] New in 2021.06: + Additions: + Support generics with consumption and inheritance in roles [4b996568][6e1cfe4c] + Introduce `done foo` syntax as a shortcut for `emit foo; done` [452e92ed] + Implement `pick` method on `Any` taking HyperWhatever as an argument (`.pick(**)`), which produce all values of Foo.pick(*), and then produce all values of Foo.pick(*) again, and again, ad infinitum [cd4a72b6] + Add a `repl` sub to enter the REPL from within a program [4183cdaf] + Add `Buf` and `Blob` coercers to `Blob` and `Buf` roles [f83e5511] + Changes: + No longer use Unicode in REPL on Windows [5e1c97ba] + Efficiency: + Tweak worker addition for many small tasks [39e5834d] + Make `.grep(Regex)` and `.first(Regex)` about 40% faster [0de28ae7] + Speed up setup of NativeCall subs and reduce memory usage [3b7fef2e] + Micro-optimize `levenshtein` sub used to suggest alternatives in error messages [da0f561c] + Fixes: + Improve stability on Windows by trying to rename precomp files multiple times [a9510b8d][7dfed29c] + Fix bogus "emit without supply or react" error when using `hyper` to process arrays [4953a299] + Fix some edge cases with `(+)`, `(.)`, `(&)` and `(|)` set operators [89fd8a8d] + Make signature destructuring with a `Junction` an error [15d372e2][57070f05] + Make `Mu eqv Mu` work [750c5d04] + Fix possible error when throwing an exception on JVM backend [9743035f] + Internals: + Provide support for `CORE::` namespace for the core itself [ea92934c][3fcf6f75][b03afef5] + Remove a special case for native arrays on JVM [28ff12a8] + Simplify `Iterable eqv Iterable` implementation [168da39a] + Abstract single elem path of `[]` into `Rakudo::Internals` [db074a8b] New in 2021.05: + Additions: + Add support for `∊` and `∍` as aliases for `∈` and `∋` [d00c7e35] + Changes: + Make `lc`, `uc`, `tc`, `tclc`, `fc`, `flip` methods on `Allomorph` return `Str` instance to make it consistent on subclassing [bb069a99] + Efficiency: + Make infix `(elem)` operator about 30x as fast on native arrays [e6a7bfe7] + Make `DateTime.posix` about 12x as fast [17c55f3c,ec8b1ae7] + Fixes: + Fix `$*EXECUTABLE` with non `_m` suffix executables and on Windows with `raku`, `raku-debug`, `rakuw` [b13542e8,a37f9790] + Fix copying of empty shaped array [0bf10e26,ede453e1] + Fix `substr_rw` method on `Allomorph` [1d8d05f5] + Improve error messages text [5c78fb7a,5331a1d8] + Internals: + Replace use of `P6EX` hllsym with `Metamodel::Configuration.throw_or_die` method [ca2753b7,a524c3de,8427afe9,2c4a0062] + Remove special cases for hash constants for JVM [4dab8405] + Move opening of standard handles into `Rakudo::Internals` [b1e4350f] + Fix a test for reproducible builds [21a60e17] + Use "#!/usr/bin/env rakudo" instead of `perl6` in module scripts [adc89e2a] + Add tests for REPL correctly handling junctions and incomplete regexes [45e8e8d9,cbf12d22,21100c91] New in 2021.04: + Additions: + Make methods `keys`, `values`, `kv`, `pairs`, `antipairs`, `invert` work on `Enum` [3a112938][615030d2][b1556cba] + Make `uniname` method work on all `Cool` values such as `Num` or `Match` [31331a28] + Add the `user` and `group` methods to `IO::Path` [2fa6413b] + Add new methods `day-fraction`, `modified-julian-date` and `julian-date` to `DateTime` [6841ed5e][457925e9][39260262][2689eac1] + Allow `uniparse` to be called on `Cool` [075d6921] + Add warnings on improper use of `contains` and `index` methods [39a3862b] + Deprecations: + Deprecate `Cool.path` method, use `Cool.IO` instead [c715b5cb] + The NQP operators `time_i` and `time_n` were deprecated in favor of `time` which returns integer nanoseconds since the epoch [b6448c7e][acaef290][c1f341cc] + Build System: * Properly handle signals (e.g. out of memory) during build phase and provide a more informative output [03854ed7] + Changes: + Rename `deterministic` method on `Iterator` introduced in 2020.12 into `is-deterministic` [596ccef3] + Calling `ord` method on `Str:U` now throws an exception instead of silently returning `Nil` [92dc60b7] + The subroutine `subtest` from the `Test` module now outputs a test header as a comment `Subtest` with an optional description provided [a7c57a01] + Make `Int.chr` and `Int.unival` handling of negative values consistent [627cc406] + Efficiency: * Make `now` about 38x as fast [06658515] + Make `Str.wordcase` about 5x as fast [5d058ea8] + Make `Str.uniparse` about 10% faster [9cc65028] + Make the `lines` and `words` subroutines up to 20x as fast [b954ef94] + Make `my %h is QuantHash = ...` about 5x as fast [ec73d6c9] + Make `Int.unival` and `Str.unival` faster [fb19daa7][bcfa5489][504c89a9] + Make `Str.ords` up to 2x as fast [74e449ec] + Make `List.sum` faster [18c4c5d4][8f4db8b6] + Make `Any.sum` about 40% faster and check for laziness [07aa4aea] + Make `chrs` method faster for native int arrays [f75957dd] + Make `uninames` method about 2x as fast [d14dda68] + Make `Str.univals` about 50% faster [88921320] + Make `Datish.daycount` calculation about 30% faster [c07639e6] + Make `uniprop` method about 30x as fast [c9aceda4][54c95ebe][885d6390] + Make `uniprops` method about 4x as fast [97b2b3f0] + Make `Baggy.AT-KEY` about 60% faster [74af72de] + Optimize various cases of iteration when `Iterator` produces no values [0bbeb2de] + Micro-optimization of a for loop construct [23036f1d] + Micro-optimization of startup [9ec3a128] + Fixes: + Fix a regression in command line arguments parser introduced in the 2021.03 release, where certain complex default arguments would throw errors when used in a pre-compiled module [10c3dbb9] + Fix compilation failure with `EVAL` in precompiled module's mainline [c05b23f1] + Make backtraces consistent on all back-ends [2e79780e][0b91b21a] + Fix and edge case of sub-signature handling, making `say :([]) eqv :(@);` properly result in `False` [41fd1d9f] + Make signal handler setup synchronous to avoid race conditions [2d1f4904] + Fix race condition in `ThreadPoolScheduler` [98839c80] + [JVM] Properly show name of a subset in the error message of `X::TypeCheck::Binding::Parameter` [b4367a8f] + [JVM] Fix `Bag` objects behavior regression [dc50951e] + [JVM] Fix a miscompilation of native arrays [e774e194] + Fix a potential issue on subclassing from NQP classes or consuming NQP roles [5959a21c] + Fix a potential issue during inlining [c0d7464a] + Fix `Int.uniname` to handle big negative and big positive integers [af6662a3] + Fix handling of holes in `raku` method for native str arrays [2d1510a9] + Fix resource leak when iterating files using `dir` method on `IO::Path` [62c976a4] + Fix an exception when `grab` was called on an empty `SetHash` that had contained entries before [e9e3b5fb] + Fix `DateTime` equivalence check with `eqv` relying on `raku` representation [01a0c934] + Fix methods `substr`, `substr-rw`, `chop`, `chomp`, `pred`, succ`, `comb`, `lines`, `words`, `wordcase`, `trans`, `indent`, `uc`, `lc`, `tc`, `fc`, `tclc`, `flip`, `split, `trim`, `trim-leading`, `trim-trailing`, `samemark`, `samespace`, `samecase`, `subst`, `subst-mutate` when called on a `Str` subclass [da34b40a][f4bfeea6][813d4f1a][a26ff404][b4813bbd][3e43a729] [a4a915ec][995d39c0][5ca26c2a][e2ec1607][c5057e86][1819caa1] [ffcda845][fd037828][9398ae68] + Make sure methods `comb`, `chop`, `chomp`, `substr`, `substr-rw` called on a `Allomorph` return Str [7a77b397][ba814fde] + Make sure `trim`, `trim-leading`, `trim-trailing`, `split`, `samecase`, `samemark`, `samespace` methods handle `Allomorph` values correctly [9a9a59c9][a2399ce9][7e87e20c][fb6441bc] + Internal: * Disable superseded CIs: Travis, AppVeyor and CircleCI [d272f4fd] + Remove two five-year-old compatibility wrappers [1e94845b] + Relax lots of Cool subs access checks [c993e33b] + Allow for experimental features in the setting [cae44e51] + Split history `src/core.c/Cool.pm6` to `src/core.c/unicodey.pm6` [0156f521][2d615fcc][4a9098ae][082800c4] + Re-organize Unicode related files [2d5e81b1][9f73552a][009d90b8][069c0b20] [9d7279d5][2251b70c][dc74f081][496f986e][b88e1ca3][f2f1cda6][dcf1c506] [5fd7d068][ee3fa379] + Introduce a new private method `!lazy` on `List` [d99bd6b8] + Introduce `throw-iterator-cannot-be-lazy` and `fail-iterator-cannot-be-lazy` internal helper methods [8e56c8c8][6e5d742e][e592277f][d3c4ff30][057620c9] [2cd963de][ec3c7bba][190dc553][28b2a953][3c178036][b1880263][b7b6230d] [db778174][fe133c2b][9d1b4821][71960b16] + Introduce `throw-iterator-cannot-be-empty` and `fail-iterator-cannot-be-empty` internal helper methods [ac9f40d8] + Abstract `unival` logic into separate class [504c89a9] + Abstract `ords` logic into `Rakudo::Unicodey` [817d1130] + Use a better approach to finding leap second days [5070ae3f] + Make `CLIENT::` work for code invoked from NQP world [73638877][a6639356][f0a36d89] + Re-organize `Nil` implementation code [5c6a80c2][32110eed][47a12a5e] + Make `Cool` methods consistently use `.Str` coercion rather than a mix with `Stringy` [a68d2579][8cad7d79] + Various internal fixes and improvements, most notably making various subroutines multi for the consistency [f0a345df][2a972b24][6d03c78b][8668474d][e191266f][b0910d5b][bc8a0997] [7dd80bb4][b988e763][30263075][e1c2d792][84eac183][e6823863][85e7e63d] [bd900c9d][df324f1b][d9fcb759][da80b57c][57ffaf96][ad81b980][1c4577ae] New in 2021.03: + Additions: + Implement space-delimited command line interface arguments [54b6ff30][244abf6e][67143a6d] + Add a predicated wait for `Lock::ConditionVariable` [b4980a1c][30e07901][94c562c4] + The `Pod::To::Text` module's output supports rendering of multi-level lists now [76dab72f] + Removals: + Remove `utf32` from encodings lists for MoarVM, it was never supported before and attempts to use it gave a confusing error message [9c603460] + Build System: + Avoid Azure CI failures on re-builds [58930cfb] + Fix `ln -nfs` on AIX platform [91ce9a29] + Changes: + Make `printf` directive error more descriptive [171d3c46] + Efficiency: + Make sorting and related infix operators about 2x as fast [70a8e366][d61d9836][b2ae599a][0ad991e4][599b6ea5][afab11e6][9ad47170][7f2dba7a] + Optimize coercive parameter typechecking [734e7f48][20e6f50e] + Make `>>.` construct faster [412d7706][3d2940af] + Make `BagHash.add` a few percent faster [7c0a556e] + Make `xx` on a constant value about 5% faster [bf67b1f7] + Fixes: + Fix single item assignment at `List` creation (`my @l is List = 'foo'` now produces a correct result) [d40c8cd1] + `Kernel.signals` no longer returns unwanted extraneous data [d3aab833] + Fixed `.of` method on type objects [ee5244b2] + Set up proper precedence info for a number of infix operators [ceac5217][affdd058] + Fix hypering on `Map` [b21bb5ab] + Fix hypering when using `next` [d18653c4] + Fix containerization on hypering [722c2c97] + Tweak some tests to work on JVM backend [08345f1d] + Various internal documentation updates / fixes [7f0ababc][6c1b02ec][9b071642][0e957a66][9b22e51b][09d27c32] + Internal: + Update broken links to IRC logs [f395cc52] New in 2021.02.1: + Fixes: + Fix a regression of the 2021.02 release where a lazy iterable usage could suddenly lead to a hang [5eeddd37][6d164158][7d6e4322] + Fix calling `list` and `iterator` methods on `Map` and `Array` type objects [6b83135a] + Fix a minor memory leak in Rakudo runner [18735ae9] + Internal: + Remove newly introduced, but unreliable inlining tests [a5ca53a8] New in 2021.02: + Additions: + Add support of the `is implementation-detail` trait for classes and roles [4384fc5c] + Introduce support for passing multiple time units to `earlier` and `later` methods on `Dateish` [8a1f8f6f][10dea6ef] + Add "Solaris" option to the list returned by `KERNELnames` method on `$*RAKU` [f918f0fd] + Introduce the `slice` method on `Seq` accepting indices (e.g. `@a.Seq.slice(0, 2 ... *)`) [63be83d3] + Implement `Map` method on `QuantHash` [110343d2] + Changes: + Add a way to set `arg0` (when specified, passed as first argument to the process instead of the program name) for `Proc` objects [ce124551] + Return to REPL implementation prior to 2020.12 release [d53a9273][39103199] + Move to CentOS 7 in binary release GNU/Linux build [38e69d87] + Provide single argument semantics for assigning a `QuantHash` to an `Array` object [6cd50ab2] + Conversion of a `Str` object to Enum now returns a `Failure` object wrapping an `X::Enum::NoValue` instead of returning the enum's type object [e3a0c32d][28b95813][184079c9][5bc394f6][bcb9a2c9][e44b524e] + Module installing at sorting now prefers API sorting over version sorting [43613ac5] + Implement the `item` method for `QuantHash` and `Capture` types [8f6c7fe7] + Throw a proper NYI error on attempt to parametrize a Hash with native types [5aec4aaa] + Efficiency: + Makes `DateTime.new(y,m,d,h,m,s)` about 25% faster [0c8d238a] + Make `>>.` faster [8c3795e0] + Make the `truncated-to` method implementation for `DateTime` and `Date` a lot faster [e6c0b5e9][c9ac5d90] + Improve startup time [39d3f136][f993b345][43ccad29][82314883][7be4f5ef][d53d0308] + Make `Array.ASSIGN-POS` about 15% faster [f623f1b6] + Make `Hash` slice assignment about 2x as fast [75c58168][09552ab5][281d9f3c] + Make array slices on a `Hash` about 40% faster [c039b28f] + Re-imagine array slicing, fixing issues, between 2x and 10x faster [ca7bc91e] + Makes slice assignment on a native array from an `Iterable` about 15x as fast [4d40e23e] + Optimize (AT|ASSIGN|BIND|EXISTS|DELETE)-POS methods [4c91d743] + Speedup the basic @a[*] (Whatever slice) [9ad80af2] + Fixes: + Fix segfault caused by repossession of native call site [8c63c54c] + Make sure that calling `new` on a shaped array works correctly [623d4c12] + Fix deleting colonpair with R-metaop in value by the Optimizer [18ae0df3] + Improve error message on operation on closed handle [3865f1ca] + Provide a more accurate implementation of `**` infix operator on `Complex` [12b49b83] + Make sure that `.of` method of various types works on type objects [790240f6] + Fix potential deadlock on specialization of roles [65a5cce1] + Fix native `@a[*-4 .. *..2]` (Callable candidates of subscription taking more than a single argument, and the ones returning something else than an Int) [8150a286] + Throw on non-Int result in `Iterable` index on native array [8a3e983c] + Throw on non-Int result in `Iterable` index on native array assignment [5eb55076] + Fixes for building and testing on Solaris platform [ac10a7a8] + Fix problem in `Compiler.verbose-config` [ed6e2c8b] + Fix an obscure error in `&Perl6::Actions::lower_signature` [bef6b4f6] + Fix calling programs with spaces in their path on Windows [570372f1][c3d3027d] + Fix passing tests for `X::Adverb` on JVM backend [e6f49356] + Internal: + No longer use Travis for CI [53da2061] + Add `MoarVM::SIL` helper module for developers to have better interface to spesh results [7f90c71c][c8647ad4][b01320ad] [1a03ce06][6793c551][842bbae3][842bbae3][1b45d0ad][7e970626] [98b91f43][dfd604d8][1fb8caf3][3235f3e4] + Resurrect `make test` on the JVM backend [bad3621c][5dfdd35c][0b4332dd][3f1607f8] + Make `Rakudo:Internals` method `SHORT-STRING` handle null str correctly [f2e324d5] + Introduce `Rakudo::Internals.TARGET`, `Rakudo::Internals.E`, `Rakudo::Internals.RERUN-WITH` methods [025448a6][467a931d][116c8e8e][164815f6] + Implement the `repo-chain` method on `$*REPO` iteratively, rather than recursively [50d1d86c] + Make `RAKUDO_SCHEDULER_DEBUG_STATUS` logging leaner [aa9e849a] + Remove a now unneeded `unimatch` method multi [6306f1e0] + Improve the internal subroutine `proclaim` of `Test` module [5133103d][297cba1a][446caae3] + Implement `sec`, `asec` and `sech` in terms of other NQP trigonometric functions [c9d69dc6] + Add support for native BOOT arrays for the `dd` routine [4e645ee5] + Fix individual running of some test files [74e5212f] + Add tests for inlining [1fb058e6][87d7c5a3][5a402a14][d94d07e6][0536d039][a3c7d00d][9c7b5561] + Various cleanup and micro-optimization changes [336a2170][e14833bd][3c79db6c][e5f94a15][620fa7ad][fa648a59] New in 2020.12: + Removals: + Deprecated method candidates (`subbuf(Any:U)` on `Buf`, `chdir(Str(), :$!test)` on `IO::Path`) and `indir(IO() $path, &what, :$test!)` subroutine candidate that were throwing an exception instead of a deprecation warning for a long time were removed from CORE [9040318c] + Additions: + Add new method `deterministic` to `Iterator` role [87fc041f][b83b1b34][b63c0e02][c37a88e8][96285afb] + Introduce `%*SUB-MAIN-OPTS` setting [bd5eba4b][49eecd68] + Add a new candidate to `spurt` routine and method. It does not have an argument taking content to write, making it similar to the `touch` utility [f2ea0a65] + Add `:emit-on-empty` and `:emit-once-on-empty` methods to `Supply.batch` method [cb8eb68a] + Add `:emit-timed` to `Supply.batch` method [492651ea] + Make `is DEPRECATED` trait introspectable on `Routine` instances [0d1c8a8e] + Changes: + Improve output of `Attribute` documentation when rendered with `Pod::To::Text` [a0a8a515] + Increase sensitivity of `Supply.batch(:seconds)` x 1000 [aecfc9b3] + The `cas` subroutine now accepts `Mu` as both its target and values [998cae57] + Defined `List` instances no longer return `True` when calling `ACCEPT` with an undefined `List` (i.e. `List ~~ ()` returns False now) [9fd79f9e] + Mark the base native `array` class as `Positional` [d1d2546e] + Efficiency: + Implement metamodel transparency of nominalizables and fix handling of definite parameters, gaining back some performance loss introduced with the new coercion protocol in previous release [d37906d0][ed16d6c1][b5465b17][e4816198] + Fix a shaped array performance problem [f27e212b] + Make execution of some kinds of `when` faster [c080e594][0006475a][b3a25580] + Make `cas` subroutine about 10% faster [484f870c] + Make `@a[*-1]` candidates about 60% faster [2d5d3bf4] + Optimize some array operators [4ac0f737] + Make array access `[$i]` with `$i` being a native int about 2x as fast [7c0956b8] + Improve the performance of signature binding [b1f59a2f] + Speed up various aspects of native 1-dim shaped arrays and native arrays in general [42fceb08][2c5b5457][3def3ced][705e6e62][a76e2b6e][60fa48ec] [6792cc42][bd944e7c][2274aa85][392d8be2][1c43c46e] + Fixes: + Fix number of issues with REPL execution. e.g. it "forgetting" previous multi sub declarations, calling `WHAT` on native type [7c0a81f5][eae309a4][e46a1da2][f2851b90][e8ab5272][0d6278f3] [6f7718ce][be455078] + Fix roles not being auto-punned for `postcifcumfix:<( )>`, by implementing an invocation protocol for roles [79d2aeab] [5a22a7c5][77a7bd27][17223fc4][4009f401][538ad1b7][9f98595c] + Fix concurrency issue in compilations with heredocs [147bae3b] + Fix subsets of coercions [af43ef62] + Fix an issue with `splitdir` method of `IO::Spec::Unix` leading to action at a distance bugs [3d463419][f154244c] + Fix argument of a coercion type not having a workable default value [44cc88b5][856dfb2d] + Fix error reporting for slurpy named parameters with type constraints [e1f09cfa] + Fix behavior of postcircumfix `[ ]` called with Iterable on native array [4304e250] + Disallow calling of postcircumfix `[ ]` with type objects [6c7044ec] + Fix a bug in set symmetric difference logic [7b6de5c5] + Make `Num` coercer demand definite invocant [a75b3fa8] + Add missing handling of adverbs `:kv`, `:p`, `:k`, `:v` for 1-dim shaped native arrays, also support many adverbs at once (e.g. `:exists:(kv|p)` [0f4970da][02e48d81] + Give stub packages created by package_at_key a proper longname [aab4f55a] + Fix `raku` method called on `CompUnit::Repository::Distribution` instance [7d0813c3] + Fix proper reporting of the `X::Parameter::RW` exception message [17320542] + Fix `RAKUDO_MODULE_DEBUG` output when the message contains meta characters [b58510ff] + The `Test` module now correctly handles `RAKU_TEST_TIMES` environment variable, previously called `PERL6_TEST_TIMES` [d84ed4e9] + Internal: + Remove deprecated functionality to core epilogue [7406f8c6] + Introduce `Rakudo::Iterator.TailWith` [f6c7ddb2][9dbb52f9] + Add `sink-all` method to a number of PredictiveIterators [cf0f2f2e] + Make `Iterator.sink-all` default to using `skip-one` [f0ebdd09] + Add `raku` method to `Rakudo::Internals::IterationSet` for easier debugging [0d301fab] + Remove all easily removable `nqp::stmts` from Rakudo code [f2f2cf82] + Another round of nqp::if -> ternaries [aba90b01] + Fix unwanted references to other compilations by CompilerServices [d0de7664] + Type IO::Socket::INET family/type/protocol values [534cc543] + Add missing debug type names for easier debugging [a68b8ab4] + Move "is test-assertion" to candidates [15ec4fe6] + Adapt filenames in binary release scripts [3748884d] + Various cleanup and micro-optimization changes [1801a5aa] [eabdee48][45246aef][6852f40d][dce6804c][c663cc33][1712f03b] [b525c4df][6ee47f03][912381b7][2ce5260e][80f92836][161325e0] [65f24a8d][c02c9cdb][46e9468f][82d31e0d][137d49b0][53ad24af] [1331ffdd][c4c4ba98] New in 2020.11: + Additions: + Introduce new coertion semantics. It includes coercions being first-class type objects, a parameter being marked as `coercive` if its type is a coerce, coercions redelegating method calls to their target type, coercions type checking being more correct. Coercions are now nominalizable, they nominalize into the target type. Aside from those changes, coercion protocol is introduced. If `coerce` method of `Metamodel::CoercionHOW` is used for `Foo(Bar)`, then the following methods are tried in the order of mentioning: - the current standard of `Bar.Foo` - `Bar.COERCE-INTO(Foo)` - `Foo.COERCE-FROM(Bar)` Also, nested coercions are supported now. User code that depends heavily on compiler internals in this area can become incompatible, so upgrade with caution if there is any of such sort. [f2d73287][2675813f][81f3334a][27fb3ec0][39614955][841529a9][ea2fdd2f] [3a7ae220][ebef668e][178c8535][dcfcda64][7429bfe3][32a8024b][42a0d131] [0dc9664d][f4f5d2c1][e890ddf9][9725c2e9][58576c24][0edb1fcb][1dd99ef1] [72984bfa][4efcdba2][43a81a2c][8a1ba7fd][cad80873][9f625326][34bc0b91] [a3ed0204][b4525665][6dbce0ac][824c5adc][c015759b][efd8078f][2fb0f9fb] + Implement the `prefix:<||>` operator in postcircumfixes for `6.e` and later, originally described in Synopsis 09 [e6787d77][48b1b20f][7a2264b4][35213f66] + Give `dd` (an internal Rakudo-specific routine for debugging purposes) support for `BOOTThread` objects [59d140bf] + Add a flag to `symlink` allowing creation of relative symlinks [089bd590] + Implement binding of array-slices (e.g. `@A[1,2,3] := `) [051e0361] + Implement binding of hash-slices (e.g. `%h := 1,2,3`) [87ef76ae] + Give `raku -v` a pure ASCII version [329e47f4] + Introduce `is test-assertion` trait for routines, improving behaving of test assertions written by the user [585db59c][86a208e2][2436532f] + Make Whatever slice work on 1-dim native shaped arrays [1cb2df80] + Handle `:exists` and `:delete` on 1-dim native shaped arrays with int index [db3ca28e] + Add Windows specific build instructions [07c95131][5b282cfc] + Changes: + Unicode support is updated to match with 13.0, 13.1 versions [bd803d5e][68196c99] + Do not allow `infix:` on Int or Str, print an error message saying `but` should be used [2f3de2fa] + `Datetime.local` now defaults to `$*TZ` [9443fba8] + Values passed to sub form of `push` and `unshift` are not longer flattened [e78c53ba] + Efficiency: + Create common Version objects at setting compile time [18882bf6][7f9f9e96] + Make `Str.raku` about 35% faster [97d473b9][5cbe14e8] + Make `DateTime.now` 60% faster [53b558fe][fd5950f1] + Simplify native shaped array `.shape` method [424ce71a] + Constantize empty list / hash in `Match` [0447b15e] + Constantize encoding and clean parts lookup [8af0c463] + Simplify Hash parameterization [1321a853] + Streamline handling of bind/delete on native arrays [adeff7de] + Make simple native shaped array access about 5x as fast [3e6e15e6][75574bea][f6cdbd81] + Fixes: + Fix building on Windows with MinGW [200821cd] + Fix a rare issue with precompilation [dd0a2a15] + Improvements of `postcircumfix[;]` in 6.e language version [39c51595][03e1ba72][316902dd] + Make auto-generated mixin role be of language revision `c`. This fixes `$a but $b` under `use v6.e` pragma [6b87d3e5] + Don't inherit mixin class language revision. This allows mixin of custom roles under `v6.e.PREVIEW` pragma [2991016a] + Fix some issues with `$*TZ` and long-running processes [613da571][78935ebd] + Make MacOS nick lookup hash a constant, also improving build reproducibility on MacOS [78f16451][2ad244b1] + Add support for MacOS 11.0 nick [ccc50f7a] + Use alternate test for DST change [89211e2e][ede52fb0] + Make sure match processing can handle `$/` being a `Junction` [5b369181] + Fix for `isa-ok` to handle test subjects not inheriting from `Mu` (e.g. `isa-ok Any.HOW, Metamodel::ClassHOW`) [dbf53c05] + Fix `IO::Path.absolute(IO::Path)` breakage on Windows [08f5d028] + Fix regression in list handling of `take` / `take-rw` introduced back in 2020.01 release [3e10cc6f] + Provide more improvements to language revision support and provide a better fix for mixins [7de2b15b][9075c766][b21dd027][38bb2441][74faa0a2] + Internal: + Replace all simple `nqp::if(42,foo,bar)` with ternaries [b1912d9f] + Strip excessive escaping in an internal script [857fbfd5] + Update `docs/running.pod` [39eedacf] + Make `sigils2bit` mapper a setting compiler time thing [a541aed8][0a4eaf31] + Expose the `Array::Shaped` role, `Array::Shaped1|2|3` roles [ee089234][532b5423][cb95c653][e45bcd53][e45bcd53] + Expose `Hash::Object` and `Hash::Typed` roles [1a6cf787] + Make unicode property tests deterministic [151fd310] + Pseudostash code doesn't need a sub [7b2d9af7] + Refactor `Array::set-shape` a bit [18af3f44][417ad76c] + Better check for subness of `MAIN` [e3352cdd] + Don't use "perl" in identifiers unless needed [fa2013db] + Prevent a compiler warning about an invalid cast [f0808da6] + Make setting array shapes more alike [e612214c] New in 2020.10: + Additions: + Implement `MAIN` parameter bundling via the `%*SUB-MAIN-OPTS` option [75f92d2b][04164a0f] + Generate a `rakuw.exe` executable on Windows which will not spawn a console window (in contrast to the `raku.exe` executable) [0ea6902d][708d0ca6] + Add 𝐑𝐚𝐤𝐮𝐝𝐨™ and 𝐑𝐚𝐤𝐮™ welcome message [80a4ada6][4e9178f8][bae905ef] + Changes: + Add a new implementation for multi-level Hash slicing, not backward-compatible with `6.c` version and to be enabled since `6.e` [551b577d][f106c231][6986ea1d][8a2d9a61][1c08e66b][1c08e66b] [d08247db][94d89686][18f3808e][4b278bcb][f9b3f925][b1ec2489] [d6e94aed][564faa64][93503c24][b60772fa][198f6030][ff2f2b0c] [420cb1f4][c701a482][1971ba46][964f6e48][3ca1fede][54eb4314] [d713e451] + `False.truncate` returns `False` instead of 0 now [7192a99e] + Make "is rw" on parameters of MAIN worry [d0854ffc] + Change `IterationBuffer.raku` output. Note that IterationBuffer.raku is a debugging tool: it does *not* roundtrip, nor is it the intent that it ever will. [33bb6504] + Efficiency: + Adapt to simplified `nqp::isprime_I` [80bf1db1] + Make `%a{a;b}` about 30% faster [a5774094] + Further simplify `%h{a;b;c}` candidate [e435a087] + Make `Hash.DELETE-KEY` on a non-existing key 40% faster [3131ce25][fcabad44] + Make making a `Uni` between 1.5x and 22x as fast [2999be32] + Make `.grep/.first` on native arrays about 3.5x as fast [240bc9eb][cf239477] + Make `.unique/.repeated/.squish` on native arrays faster [c37ffe71] + Fixes: + Fix stub packages in multi part declarations only knowing part of their name [51db5341] + Build System: Add a check to prevent building a Rakudo with a stale NQP version [4dbdcb8d][d8db03b5] + Make BUILD(ALL)PLAN output a bit clearer [a26beb66] + Make `$*USER` and `$*GROUP` return correct values on some non-English locales [6a89d716] + Fix possible race in multi-threaded precompilation [12946210] + Produce a better error message for `my &MAIN = { }` [e0e24a8d] + Fix issue with Z / X used with set operators [338c7439] + Produce a better error message for incorrect code `infix:(&)` [4af961ed] + Fix NativeCall/C++ to allow double instantiation [ecaf334c][f3ffb702] + An attempt to copy a directory to a file does not remove the file anymore [41a76cad] + Fix a problem with multi submethods been treated as method [7cfca098] + Internal: + More fixes to the binary release scripts [bd029ae4][99acfa9c] + Move `Int` candidates from Numeric.pm6 to Int.pm6 [bf799bae] + Add `.gitattributes` file and specify file extensions [42e0434d] New in 2020.09: + Additions: + Introducing the `Allomorph` class [716cacdc][4872c3f0][39bc2bdf][1b16da19][3cd51ae4] + Add `cmp` candidates for `Code` [4a34b266] + Add CAVEATS.md file [df68eb29][7e11234e][a1c7497f] + Build System: + Fix relocatable build-time NQP-home [eab3e1cb][5a40482d][077f8f97] + Fix `RUN_RAKUDO` to use the dummy Rakudo home [a56ce834] + Make `Perl6::SysConfig` depend on NQPs `HLL::SysConfig` [64eb6fcb] + Changes: + Method names that differ only in capitalization are now suggested when the method is not found [b7ff282f][30c4b6e5][bb7c617a][b054f9f0][df5b3d53][3703469d][8c015584] + Make `IO::Notification::Change` a value type [17f352f5][ad927871] + Deprecations: + The `parse-names` subroutine is now explicitly deprecated in 6.d to be be removed in 6.e, use `uniparse` subroutine instead [eef7383e] + Fixes: + Give a hint about missing provides in a META6.json when module is not found in CURFS [b2d625b9] + Make `Blob.gist` work for all sizes of `Blob` [f98861ad] + Prevent parser bug for multiple `[` in reduce metaop [86bac5ad] + Make JVM honor `PERL6_HOME` env variable [038fbc44][c9901246] + The `set`/`unset` methods on `SetHash` and the `add`/`remove` methods on `BagHash` give proper error message when called on a type object [b0b4459c] + Fix behavior of `Supply.head($n)` [46a72998] + Improve wording on `X::MultipleTypeSmiley` error [a9371749] + Fix long standing race condition in precompilation causing spurious test failures [3780c1d4] + Fix `--rakudo-home` Configure.pl parameter + Internal: + Start to use `nqp::execname` on the JVM backend [3ba803d2] + Test the install instead of the build runners [f2bf446c] + Add missing files to the `make clean` target for the JVM backend [58e729f6] + Tweak release-related scripts [d6e27314][ccb41617][a0c12cdd] + Remove use of deprecated `undefine` [e59262f6] + Efficiency: + Allow for more paralellism when precompiling modules, making parallel compilation faster [961a6535][86425339][0500ed3a] + Streamline `X::Multi::Ambiguous` listing [999680e6][b8121cec] New in 2020.08.2: + Fixes: + Fix output of `--show-config` option [1a1fe7fb][f00c4198] New in 2020.08.1: + Changes: + Fix compiler version [1336e5f3] + Method `invoke` of `WalkList` returns a lazy `Seq` instance now [fe40ee1e] + Internal: + `Seq` class now has its own proto for `new` method [a19996db] New in 2020.08: + Changes: + Methods `name` and `usage-name` of `Parameter` now return an empty `Str`, when there is no name, instead of `Nil`. Method `default` returns `Code` type object, when no default was provided instead of `Any` type object [c11f4b18] + Remove redundant `(())` from `Map.new.raku` [491e1def] + Routine `done-testing` of `Test` module returns `Bool` now, indicating if the tests passed or not [337848fe] + Deprecations: + Deprecate `--nqp-lib` command line option, which had no effect for more than a year [9071653e] + Fixes: + Make `X::Method::NotFound` exception more user-friendly [b36afcb3][760034ef][eb0ca2a3][66adb771][acc5e64d][4546a603] + Fix false positive typechecking exceptions for some generic types [3d5fba7b][973b83de][8d40691d][1db17c46][1eb712d5] + Ensure `Routine` subtypes are composed before performing mixins with their instances [7f2ae26c][e3c2646e] + Fix mixing in a role with attributes into a NQP class [1b5f6b98][9e51d01b] + Make exceptions thrown by supply iterators don't claim to have originally been thrown within the iterator itself [fcfc60b6] + Fix `Baggy.pickpairs` called with a `Callable` [08f81f24] + Fix a rare, yet possible data race [9d6d8dd7] + Additions: + Add `set_parameterizer`, `parameterize_type`, `type_parameterized`, `type_parameters` and `type_parameter_at` methods for `Metamodel::Primitives` [2ab94429] + Internal: + Type `Parameter` methods [c11f4b18] + Fix release pipeline to not delete the GNU/Linux build [4ad4bd30] + Make `Rakudo::Internals::JSON` up to 4.4x as fast [b60e1636][43bd739f] + Do roast-related cleanup, add `quicktest` make target [1e20dfca][6fd09811][333ce78c][dd8cd411] + Rework `tools/update-passing-test-data.pl` to support backends [ea0c98cf] + Make `main-version.nqp` a backend-specific configuration file [80b0747a] + Add a `Perl6::SysConfig` class [ace5e22f] + Simplify binary release instructions a little [27eb5ea9] + Add tests to make sure profilers can be invoked [d7aa7e66] + Remove an outdated workaround from `Cool` implementation [a3af5833] + Fix incorrect method call [02a83442] New in 2020.07: + Fixes: + Improve "Method not found" error message for some rare cases [0a86798f] + Fix calling `.say`/`.put`/`.note` methods on Match objects [9f546ef6] + Add word wrapping to numerous error messages, improve wording [eb589c03][1b84e036][3cb29a03][6db1fb1d][80aaede3][42031860][f70a3ccd] [3ffed2fb][a7a1fe24][cd8846ad][83a126b3][3add8615][3d9a9fc4][697596fd] [56e5f7dc][88b0e7a3][7a93c907][f550c9f9][a4b982cd][93963433][58685eeb] [5f423a7e][92f8c19b][5627e02b][5b7ecdc0][a7455050][f96a641f][1f93724f] [98c7e512][248664c6][3bc4fa90] + Wordwrap `Mu.WHY` [16d24a21] + Fix check for valid Raku module extension to be an exact match instead of suffix-like one [d4eef8d4] + Fix result of `.raku` method called on a generic typed array [90f86d4c] + Additions: + Set equality operators: `(==)` Unicode `≡` and `≢` which allow to check for sameness of the operands using QuantHash semantics (for example, `1,2,3 (==) 3,1,2` returns `True`) [701f4cfb][dbd69ba7] + Add support for Supply.tail(*) and .tail(Inf) [9ccfc90e] + Add support for Supply.tail(*-3) [eaa72afa] + Make `Supply.head(*-3)` consistent with `List.head(*-3)` [5c8c7324][70e5cfb9] + Rakudo now supports the `--rakudo-home` command line option to specify the path of the Rakudo home [914bcbad] + Efficiency: + Make .permutations between 23 and 85x faster [682a4d4f] + Make IO::Handle.read(1) about 3x as fast and consuming less memory [2946ed64][252b9349] + Internal: + Micro-optimize `buf8.new` creation code in compiler [ed936c14] + Give `Supply.tail` its own candidate [1a91af8c] + Add `Str.naive-word-wrapper` (implementation detail) [056d6a4e][9ea66e13][6db1fb1d][45893495][821f582f][3674f812] + Make `IO::Path` use its own `.succ` / `.pred` logic [305fc7bd] + Remove placeholder files [07009cc0] + Re-imagine `CompUnit::Repository::FileSystem!distribution` [f3b1c8df] + Change `perl6` to `Raku` in nqp-configure submodule URL [ddebab5a] + Refactor `Rakudo home` and `NQP home` handling [e4f020ca] + Do core setting name mapping via compiler config [6e087e13] + Fix for spectest not seeing Inline::Perl5 [d5630720] New in 2020.06: + SPECIAL NOTES: + Results of `dir` routine called with dirty base path are presented as cleaned up for some paths (like `///` or `a/../a`) unlike before. While compatibility with most of other cases is preserved and no ecosystem fallout was observed, be cautious of the possible observable changes if the code does not clean dirty paths using `cleanup` method. + Since this release, when you start Raku with "-" as a single positional parameter, it will now check if STDIN is connected to a terminal. If it is, then the REPL will be started, rather than appearing to freeze waiting for the user to enter something and issue an EOF. If STDIN is *not* connected to a terminal, then Raku will read from STDIN and process that as the source of a program. + The `run` routine, `Proc.spawn` and `Proc::Async.new` are extended with a new argument `:$win-verbatim-args` defaulting to `False`. If the argument is left off or set to False, the arguments are quoted according to the Microsoft convention. This is identical to Rakus previous behavior and thus backwards compatible. When passing True the passed arguments are concatenated with a single space. No other processing takes place. This allows to manually quote the arguments as necessary. + Changes: + Support verbatim argument handling for `Proc` [709941c6][9a75738f] + Signatures of `slurp` and `spurt` routines not accepting redundant arguments is now compile time error rather than run-time one [22f43444] + The `Distro.desc` method now states codename for MacOS [b4b2a5ec] + The `gist` method output for multi-dimensional arrays is truncated now [cfc3e57f][4bfe5bd5] + Parametrization a variable type in form `my $foo is Type[Foo, Bar]` works for all types now [de43f193] + The `rotate` method now returns `Seq` instead of `List` [4b501bd4] + Add CACHEDIR.TAG to mark cache dirs as cache [37646b86][c3bdb617][ef90599e] + Improve GNU C++ name mangling [4f672c27] + Make `Instant.raku` output simpler [c0b5fb28] + Improve smartmatching against `Mu`/`Any`/`Junction` types (`Mu.new ~~ Mu` does not die anymore, `any(Mu, Any) ~~ Mu` returns `True` now) [3b4794f4][840d3e81] + Fixes: + Fix code objects created BEGIN time EVAL getting lost in precompilation [537f8877][169f63d9] + The `is` routine from `Test` module now handles types that cannot be stringified and compares them using `raku` method now [c9e94623] + Fix various JVM and JS backend issues [8e5b610a][2b81f978] [12f8f1eb][5b86436c][1464b35e][a059373e][9fe471cf] + Fix BEGIN time `EVAL` accidentally running CHECK phasers of the outer comp unit [eeb4f43f][b874c68e] + Fix results o `"١٢٣".Numeric` and `"١٢٣".Int` [c2e8b22f] + Fix race in `PIO` method of `IO::Handle` [f33ce01c] + Fix `Date(now)` call [9dcbc5ff] + Fix `.comb(Str)` to ensure non-overlapping results [8d5a0f70] + Fix `Instant.raku` for Rational values [f506cc03] + Fix sorting of 2 element native arrays [becb85eb] + Make sure `push-all` does not push when exhausted when splitting using a regex [077300c5] + Improve error message for method calls placed after white space [4278e4c2] + Improve `X::Syntax::Variable::MissingInitializer` exception's error message [ee005d8b] + Improve `X::Method::NotFound` exception's error message to only suggest a submethod if correct [b02a7413] + Improve `malformed loop spec` related errors [d3c3e534] + Improve error message for case of too many directives in routine `sprintf` [c988f832] + Improve detection of a version control conflict marker to provide an error message [65e412f7] + Additions: + Add `IO::Handle.do-not-close-automatically` method [61046d76][999d04aa] + Add `IO::Path::Parts` class [4387f280][187312b8][e9ea048b][30ae200f] + Add support for `printf($format, Junction)` [110324d3] + Add `Supply.rotate` method [9f7c9278] + Add `Capture.EXIST-POS` method [6a4f79ec][b55ecdf0][3372352e] + Add `RAKU_REPL_OUTPUT_METHOD` environment variable which sets the method used to stringify a value of an expression in REPL, default is `gist` [285717a0] + Add `:chomp` named argument to `Str.lines` similar to the same named argument of `IO::Handle.new` [1bcc5d73] + Efficiency: + Make creation of regex captures faster [15961f91][272c4636] [ed65d733][e3fa44ab][7f47db80][0b48651c][537a6e41][f627d2c8][6f6b2dfe][219199bb] + Make file test methods like `.d` or `.x` faster [c821bbc5] + Make `Match.caps` about 35% faster [87e91def] + Make `Str.split(Regex)` up to 2x faster [9c74d983] + Make `Str.split(Regex, *%_)` up to 2x faster [a9796fe5] + Make `dir` routine about 15% faster [700b7432] + Make `Blob.join` between 4% and 11% faster [84ff64cf] + Make `Blob.gist` about 2x as fast [b55667ef] + Make `QuantHash` implementation a bit faster [4a728f2a] + Make `IO::Spec::Win32.basename` about 1.7x as fast [ecd06c9f] + Make `IO::Spec::Win32.tmpdir` about 1.8x as fast [6d427d47] + Make `IO::Spec::Win32.path` about 2x as fast [1a8e07c2] + Make `IO::Spec::Unix.path` about 3.5x as fast [8dc58abf] + Make `IO::Spec::Unix.basename` and `IO::Spec::Unic.extension` about 1.7x as fast [f89fad87] + Make `IO::Spec::Unix.tmpdir` about 1.8x as fast [a2860ead] + Make `WhateverCode.ACCEPTS` about 2x as fast [853e6227] + Make `IO::Path.sibling` about 2x as fast [a5eb1d4a] + Make `IO::Path.succ` and `IO::Path.pred` about 3x as fast [26b9f388][7238b094] + Make `IO::Path.parent` about 2.7x as fast [71cb0c56] + Make `IO::Path.parent(N)` about 2x as fast [f93ce875] + Make `IO::Path.child` about 1.4x as fast [f5b2c240] + Make `IO::Path.add` about 1.25x as fast [718d305b] + Make `IO::Path.dir` between 1.5x and 2.2x as fast [b63976a8] [6b22c1eb][7691742a][9b9d9f64] + Make `IO::Path.is-absolute` a bit faster [fc88b9c2][bd7fcb28] + Make `IO::Path.spurt` up to 35% faster [7571f65a] + Make `IO::Path.slurp` up to 4.7x as fast [d03fa4b0][cde948ae][36d89cf6] + Make `slurp` routine up to 40% faster [f3baa389][fc3e1aea] + Make `spurt` routine a few % faster [da5825e6] + Make `Str.Numeric` about 4.3x as fast [a0e58412] + Make `.IO` method and `IO::Path.new` about 2x as fast [2a88990b] + Make `IO::Spec.curupdir` about 25% faster [6a0eaabd][16d93e26] + Make `"42".Int` about 4.3x faster [3ee1777a] + Reduce overhead of `Code.ACCEPTS(value)` by 20% [2eec62fe] + Make `so` and `not` routines faster [d8c26500][8a3c36f8][5c93ddac][cb69cfce] + Optimize symbol lookup [c5f5d7ee][dc6594d6][5d61b3d0] + Prevent `$*OUT` lookup for each eigenstate of Junction when calling `print` or `put` [4297cb05] + Make `printf` routine up to 5% faster [e46d4590] + Streamline variable `is` and `of` handling [5561669b] + Make `Hash.sort` a tiny bit faster [cd617248] + Various small optimizations [a9074977][b50fd8b5][65e17c40] + Internal: + Set up CI with Azure Pipelines [ae07d685][43213e49][55529de1] [78fe25b8][42c37997][4085cfdc][5b4faed3][5587574e][fce783a1][adfa192b] + Fix `main-version.nqp` dependencies [b71cb3ae] + Improve `say`, `put`, `print`, `note` methods of `IO::Handle` [7a902b5e] [88d98225][627b39b8][438c1d2f][483cac3a][2b38666f] + Simplify `Shaped1Array.reverse` [de173a18] + Simplify `EVAL(:check)` code [afe85110] + Rework part of `Match` internals [0a84aa7f] + Simplify `Kernel.signals` using `Signal` values [5644c709] + Simplify `Grammar.parse` code [f10e5bce][8be24067][1402c1d1] + Allow debuggers for Rakudo to be specified by environment variables [48e073e2] + Default to using egdb when possible in rakudo-gdb-m which covers OpenBSD developer environments [b01b0120] + Introduce INTERPOLATE [417a591a][777e7b65][3f9f23a9][638517da][05907227] + Various internal improvements to the code base [ef0c457b][e71d3cb0] [37533ee6][b3d933b4][4afaab73][3796405b][17bf5d5f][d9defb6c][2aac854f] [799d627a][a56e62de][c1decf2a][a69465a7][26d88b9e][44b27019][95f7d34e] [b5bf1bf4][285717a0][21c3ef82][4103a309][a616fe57][e645ff6a][ea8c04db] [ad9b9f4f][9942ccc0][1c94538e][9f73351b][e9f80357][a431968e][519a5726] [4ba70b7a][496e9166][d984e7c2][bf01f845][da9943a4][150af9a2][6f459456] [92d01836][98dec90d][792a0f00][902401b7][4d1ef59e][2bfaab6c] + Update `INSTALL.txt` for the latest changes [8bb0235b][e1db95e8][bd5e19e4] + Various small improvements to compiler's user-facing documentation [dac68b27] [302bc8ed][736ce715][10a8f6a2][627ffd42][3d6756b3][eab17e7a][18ecb604] [2cff6dd9][77b2f2a5][197bba98][621577b4][d09cf9d8][8a8f62ca][a79efdef] [797c96de][8c3f013d][11afa53b][fbb0abc1] + Various changes to documentation related to renaming process [6ead4ce1][142d03be][e0384ee0][0ccd4cfe][4d6031f6][d53a3b1a][de6ebd4e][b0032395] New in 2020.05.1: + Fixes: + Fix relocatable builds on the moar backend [46648b9b] New in 2020.05: + Fixes: + Decontainerize attribute default values [d71761e3] + Fix `Cool` catchers for some `Str` methods [a91d7d79][63a72659][af8788b4] + Update some internal documentation to use Raku name [f2cc20c6] + Add `Cool.contains(Regex)` candidates [c3c1e8c9] + Make format of all `QuantHash`'s classes `.gist` uniform [cf01f7a2] + `Method` objects that don't have `*%_` in their signature, `.gist` ok [ac5f353a] + Fix `DateTime` default stringification when the second is 0 [95de7859] + Make `Blob/Buf.list` non-lazy so they can be used in hypers [6d146b56][291aa580] + Remove unnecessary parentheses from `Pair.raku` [35a827af] + `IO::CatHandle.slurp` did not accept `:bin` parameter [42c4c3fc] + Fixed some cases where `IO::Handle.slurp` was used without `:close` [efab398e] + `run` routine with `out` named parameter being a `Handle` and `merge` flag enabled now writes both stdout and stderr to the handle [1f838791] + A single whenever react based on a signal is now serialized by default [8aa25bfb] + `&cmp-ok` subroutine of `Test` module now works with objects without support for methods [fc0f78d5] + Ensure meta-ops respect user-defined chain ops [ac012f18] + Fix exception when mixing in roles that use `is built` at runtime [4c026ab8] + Fix inconsistent match result when using a code block in a regex [1e0474d4] + Fix error message related to `nextcallee` subroutine [136087e7] + Fix regression in sequence operator [0a6456a4] + Fix reflection for . twigilled parameters [296fbcf4] + Fix `Parameter.raku` with `OUTER` default values [87d2ff95][2f8538ed] + Fix `Capture.WHICH` for subclasses of `Capture` [8808401c] + Fix `Capture.EXISTS-KEY` for some `Capture` values [2d18cdeb] + Make (1..-Inf).reverse) work as intended [3983b4f8] + Make (foo .. foo).reverse correctly [c588323e] + Properly throw an exception on attempts to add a key to an immutable `Map` [1a10b63a] + `INPUTRC` environment variable is now checked for a Readline config when using REPL [61a48362] + Add missing label support for some loop constructs [66a2250a] + Make `Real.sign` always return an `Int` [42a303ec] + Result of `reverse` called on a `List` value with holes returns a reverse of the list with `Nil` in place of holes instead of `Mu` now [e9468d6a][ca49c153] + Various small JVM backend related improvements [945a4d81][b4819e7c][f6f8ac0d][25a1929c][717b3266] + Additions: + Added `docs/IN-MEMORIAM.md` to commemorate departed contributors [9b6d89b1][f9f3b662][170add26] + Implement support of environment variables `RAKULIB` and `RAKUDOLIB` to eventually replace deprecated `PERL6LIB` [b3bb0d38][cc165a05][1fd660a9][00c0dec3][be9bb4b1][30a3186b][e8f7eb56][61124c35][013b47d2] + Implement support for environment variables `RAKU_TEST_DIE_ON_FAIL` and `RAKU_TEST_TIMES` to replace `PERL6_TEST_DIE_ON_FAIL` and `PERL6_TEST_TIMES` [30e7a67c][afff3b0b] + Show timing information when installing core modules in build process [58e61356] + Add multiple needles feature to `Str.index/rindex` [4cec44a3][cf02c2e9] + `dd` can now also handle `BOOTContext` objects [8b70bfb8] + `Str` now has `.Date` and `DateTime` coercers [d95d218f] + `Date.yyyy-mm-dd` now takes a separator parameter, defaulting to `-` [3017cfea] + Added `Date.dd-mm-yyyy` and `Date.mm-dd-yyyy` methods [70ac9b72] + `IterationBuffer` now has a `.Slip` method for easier iteration [d68fe5eb] + Add `is implementation-detail` trait and hide exposed internals with it [12a33637][09c1b05a][2ae9fdf0][20c978e6][78371bb0][1d57d17d][0c36feb0] + Introduce `^...` and `^...^` sequence generator operators [371590fa][bbed2255] + Add `Date.last-date-in-month` and `Date.first-day-in-month` methods [2fb7198f][20ce5560] + Add a `parents` metamethod to `Metamodel::ParametricRoleGroupHOW` [8dcfa849] + Removals: + Remove undocumented `Seq.new-consumed` [0f97a7f5] + Move implementation detail to internals [aed658d6][b639221d][86bc3b3d] [75f34c52][d3385e73][73c7ded2][9429728c][509a7f6e][439b8609][e152aa6a][ebb29499] + Turn `infix:<…>` and `infix:<…^>` into aliases [bd4e119d] + Build system: + Fix CircleCI configuration [efba9639][ffcc6198] + Be more robust when working with git reference directories that has spaces in path [3ec58489][e6044dfc][2f0dd45e] + Move prebuild archive scripts to scripts folder [e1114208] + Change update-submodules.pl to not use the shell at all [0ae8b4e0] + Fix installation of perl6 aliases [aeb418a5] + Move RUN_CLEAN_TARGET_FILES to a separate script [ffad1024] + Fix building non-moar backends on Windows [47650ebe] + Fix `--nqp-home` Configure.pl parameter [94fdb3d5][59fe24bc] + Make timing based performance tests opt in via `RAKUDO_RUN_TIMING_TESTS` environment variable [31ffc2bd] + Efficiency: + Speed up compilation of large projects [c9092582][6956c063] + Make `raku -n` as fast as manual iteration with `.IO.lines` [be9c139f][5cad8fee] + Improve behavior of default `ThreadPoolScheduler`, increasing efficiency of multithreaded applications [77a2201e][750abe03] + Make method lookup with the handles trait 13% faster in certain cases [af594925] + Simplify "previous setting" logic [9f4a0f1c] + Make creation of `Failure` objects faster [79ca396e] + Make default `DateTime` stringification about 12% faster [0e872356][d95141ed] + Make all `IO::Path` filetest methods a few percent faster [76c20d28][355b520b][bd9d7c1c] + Make `IO::Path.mode` about 14x as fast [a093b7fa] + Make `Date.yyyy-mm-dd` about 250x as fast [3017cfea][f9ecf6e8] + Make accessing native shaped arrays about 15x faster [80f2aebf] + Make `Seq.Numeric` and `Seq.Int` slightly faster [b7b9358f] + Make a number of traits around 2% faster [4bbe308b] + Make a minor optimization to a bunch of STORE methods [a4fbbfa3] + Make `Capture.raku` 45% faster [5baa645b][d6298edc] + Make `Capture.WHICH` 60% faster [688f6710] + Make `Capture.AT-KEY` 2% faster [22c0a53d] + Make `push(@a, foo)` about 20x as fast [385ab4cf] + Make `append(@a, foo)` about 20x as fast [b98d2e00][1e4c7361] + Make `unshift(@a, foo)` about 20x as fast [6541775c] + Make `prepend(@a, foo)` about 20x as fast [9b735b76] + Make `Num.Rat` faster [f987cdb0][2d1ba433] + Make `Date.succ` faster for days 28-31 [285da3b8] + Make `Str.tc` about 10% faster [5610416c] + Make `Supply.grab` a few percent faster [e0336d52] + `...` (SEQUENCE) optimizations [fc8c8281][935ee309][08545a33][d2ed7faa][fbf54e17][0fba27d7] [8fe30b9c][58fa99b2][cf6177ef][75c6ac34][500dc662][9286def3][13559242][99cb2fa2] + CompUnit::* optimizations [1dbb227c][0249f23e][28bd4247][b4cdccc1][cb7be78c][638c8955] [c9d9a096][83fed554][2cc509c0][f1cdfb18][9d1b3f63][db6d2306][7c9951cc][83ddbaba] [196db682][551c157f][07643d37][e56eddd8][20d3713c][b4d32c97][8ac2eecc][4e3e937b] [6c7ffbdb][17c45d89][89503809][747a35ba][dedb7444][cbd75f72][81ac37f8][f54ad732] [fae4d45d][d55146bd][e33fe878][b712789e][e756e622][199888ab][95e8906c][5271d122] [f48b80c3][954e545c][ef2d7d84][778ce379][1a0cc947][11b186c8][dec40dc4][d38d76d5] [f31bd5ba][e1af7407][33fc8950][a62da301][0736bf7d][437f9f46][6e95e1b0][6723d3ad] [24fd100d][b3f7ad2f][c29a2bf0][b07224f6][7de42d4b][7b5e1434][68cadd79][f980898f] [bec2ac4c][d66068c1][31197cd3][2899d737][d4231b1f][c2a1ee95][6d3f1c12][dceef85f] [859d8f04][5ea1c346][2a58eb39][3d6e8d6d][ea4bdf94][38a0eb82][2075489e][13ca677e] + Be better at inlining `any` Junction [76923bee] + Optimize symbol lookup at compunit creation time [35832540][75da4cfe] + Numerous small optimizations and improvements [014d493a][776ef800][87226876] [49d1dcd3][d8366ff4][61b5e488][6793713b][2edce41b][d0e427dc][0b414c0a][88a9a36e] [604085fb][f70d95e2][db6048e3][a66f5c29][80be7d19][a5535b2a][0d5f87cc][3c83ce75] [3aaca26a][43c7e96f][dc7a7962][e78483ed][7bbf12d3][b9b46c0a][b0a720cb][fcda03ba] [4339073b][cfc6cc3c][33f41966][0aa8b2a8][9cabea01][9b503292][6bb87106] + Internal: + Update Appveyor perl requirement on Windows to 5.22 [370956b9] + Add optional "lazy" flag to `Rakudo::Iterator.SequentialIterators` [101a80f2] + Give `IterationBuffer` its own `iterator` method [2b49d685] + Adopt MoarVM-provided `value_desc_cont` [4221f822] + Add `Rakudo::Iterator.AllButLast` iterator [77defa77][aa5154e0] + Add `Rakudo::Iterator.AllButFirst` iterator [4fe18a48] + Add and use `Rakudo::Iterator.ReifiedListReverse` iterator [3ca38022][270cc275][cea0fc78][4025ca43][447b396f] + Add `Exception.message` stub [2e605520] + Make `Mu.iterator` use `Rakudo::Iterator.OneValue` [65fdea7d] + Make `Rakudo:Iterator.OneValue` a `PredictiveIterator` [ec50b961] + Rename `SlippyIterator` to `Rakudo::SlippyIterator` [50f13f03][fa3c0dba] + Don't use named variables between internal methods [92750571] + Implement `VM.request-garbage-collection` [e223be56] + `Rakudo::Iterator.ReifiedList` now returns a `PredictiveIterator` [063bfa05] New in 2020.02.1: + Fixes: + Fix building on musl [979d384a9f] New in 2020.02: + Changes: + `throws-like` sub from `Test` module now throws an exception on Bool:D matchers [f4ad0c2e][50f084d8][5696dbd1] + `RAKUDOLIB` environment variable now mentioned in `--help` [f9b7de22] + `Supply.repeated` now has `unique` rather than `squish` semantics [05213315] + Fixes: + Fix mixing in Raku-level code to the grammar [992f1b83] + Fixed concurrency issue with re-checking a precomp file's dependencies [f5ce80e1] + Ensure Rakudo can be located in a path with Unicode characters on Windows [4c6cd035] + Smart matching a `Regex` no longer breaks if `$/` is not a container [b777d6ff] + `raku -v` now mentions `Raku` as the languages [15621b8e] + Fixed typecheck on bound attributes (`is built(:bind)`) [4b64338a][89203438][8a46fca4][d75a703f] + Fixed location of REPL history and made the `RAKUDO_HIST` environment variable work [c5c98dea][94713af7] + Fixed problem with `.rotor` when given a `Seq` [c7e0df64] + Restored exact stringification behaviour of `index`, `indices`, `contains` on `List` [21762929] + Improved invalid TypeSmiley error message [246f20db] + Assume 1 core is always available in case `nqp::cpucores` fails [1a7f16bc] + `Lock.protect` now allows return of a container [b90bebae] + Fixed `Parameter.raku`'s handling of default values [21b80974][2aa4d095] + Work around spurious error in `Lock::Async` that could lead to crashing [d18d6e9a][28541444] + Fixed handle leak when chaining `Proc::Async` [cdbd60c1] + Restore creating a `Parameter` instance using named arguments [b2c809e4] + Fixed behavior of `eqv` operator on two `Seq` objects [76187b57] + Fixed variable declared by shape match in signature [ca78390e] + Fixed calling of a module sub without `&` and parentheses [e1faa704] + Fixed consuming of all `Channel` values which has prevented reusing it in multiple react blocks [6fbfc4a0] + Fixed usage of `$^a` withing a substitution regex [50ca2ed9][adb85e44] + Fixed clonning of multi-dim arrays [4a954cbc] + Fixed `$*USER` and other dynamic variables coercion for some buggy cases [3a86272e] + Fixed internal compiler error on parameter re-declaration [3498c540] + Fixed unhandled exceptions in REPL [6bf227d0] + Fixed stringification if `Signature` for some edge cases [b2962b1f][56ccd132] + Fixed `is rw` trait application to roles [4de852e4][85660c8f] + Improved error message when putting a positional parameter after a named one [8dcf1a8e] + Improved error message when referring to a non-existent class whose name contains a `::` [ca1e51c8] + Improved error message for Buf stringification [539e96c2][3f637af9] + Made sure `Version` objects can coerce themselves [5eb113b1] + Various fixes for JVM backend [a08f0439][5984ce98] + Additions: + Enable user-defined chaining operators to work [d027ee0c] + Added `prefix` and `suffix` methods to `Parameter` class which return textual prefix and suffix of the parameter [bd68955b] + Made an improperly typed default for an attribute a compile time error [d8e859d0][05b5f81b][a8bb85a0][b6fa5f5d][13c9da97][4c0761a5][c592b80e] + Added `SetHash.set` and `SetHash.unset` methods [6df78ca3] + Added `BagHash.add` and `BagHash.remove` methods [c1b8ff60] + `Str.contains` now also can take a `Regex` [c3c5dae1] + Add `:i(ignorecase)` and `:m(ignoremark)` support to `index`, `starts-with`, `ends-with`, `contains`, `substr-eq`, `indices` [49aaa6ff][60b0d86a][84987742][0b2236a1][d91c773a][2e3c091c][46ef7f48] [9f710029][19576d6c][90fc61bb][ec13c3d0][ea44c194][327c74a6][73c5a25e] [d49a418e][5a716a39][7cb04813][0761a882][b140d7a9][c2e608b2][a6acfd0a] [aefc851b][597288be][b32048df] + The `IterationBuffer` class now has a `Seq` method [c87f5df9] + The `Compiler` class now has a `backend` method [61b416ed] + The `Match` class now has a `replace-with` method [b43c839a][1ac3c5c0][7f3e852f][cd4ab4f3][930e5182] [488feafc][b4e00120] + `Cool.subst` doesn't need a replacement string anymore [dfb563af] + `Supply.first` now also works without a matcher [57dbc358] + Properly show enums, subsets and routine return type in `Pod::To::Text` output [f60d9694][91f89435][0b0a1aad] + Added `iterator` implementation for `Junction` (fixes e.g. calling `^name` on a Junction) [bceaeb1a] + Removals: + Remove deprecated support for implicit `Distribution::Builder` prefix [593db2d7] + Build system: + Implement an automated pipeline to create precompiled releases [6504be7b][d01d4b26][aaf9a93e][8c995feb] + Implement `--git-cache-dir` Configure.pl option. It can save time and bandwidth when doing more than one build [322b095e][ac6c4379] + Add a `--build-only` option for `install-dist.p6` script [4c6c0278] + made building optional when installing in `install-dist.p6` script [411db10e] + Efficiency: + Simplify exception throwing in bootstrap [d18c69b2] + Made `Seq.list` return cached list if present [8ccfa87e] + Made `.List` and `.Slip` more efficient [d1d931a7] + Made `Str.comb(Regex)` about 1.8x as fast [9e8adb65][4df7472d] + Made `Str.split(Regex)` about 15% faster [931f5ae0][ba2c58a3] + Made `Supply.unique` a few percent faster [32bd4ed8] + Made internal `Match` stringification a few percent faster [495ddcc1] + Made various aspects of `Date` and `DateTime` faster [076ef98b][ced67b83][b086a9f2][99b67a4b][e979f173][af8cca77] [65d0422b][b19c4eec][fa7d3bf7][16962c84][c0e8091e][0286904b] + Made `Date.new(Str)` about 9.8x as fast [0408d6e4][497afdad] + Made `Date.new(Instant)` about 12.5x as fast [f91a1616] + Made `Date.today` about 4.5x as fast [1d7a9168][7a2d68f8][13444198][8876e035] + Made `Date.earlier` / `Date.later` between 1.5x and 5.5x as fast [4ebbddfb][5943cbfe] + Made `Date.succ` / `Date.pred` (used in ++ and --) about 2.8x as fast [9707384c] + Made `Date` integer arithmetic about 2.3x as fast [cfe2cdc5] + Made `Date.Str` about 250x as fast with the default formatter [67022d4c] + Made `DateTime.new(Str)` about 30% faster [578935e6] + Made `DateTime.Str` about 90x as fast with the default formatter [a331ac4d][2b7d5ffe] + Made `Instant.new` a few percent faster [5b97ddef][bd948ba3] + Made creation of a `Junction` about 3.5x as fast [470f7fd0] + Made `Junction.defined` between 15% and 40% faster [7a561d63][423d9ad8][6844be9d] + `Hash.DELETE-KEY` does one less hash lookup [9217b1c7] + Made various aspects of `Proc::Async` faster [0c5a7075][ca49dcbd][1db41618][356bf3f7][05916efa] + Made `Channel.list` around 16x faster [82bd76f1] + Internal: + Preparations for UNIX sockets support [7c7d3b96][1a5b2185][ed4226d7][ce5b5dea][62cb756d] + Simplify leap date updating logic [25c84b3a][bdb00749] + Removed perlcritic config file [5ac792ac] + Add support for `use BUILDPLAN class` [8fdce756] + Add support for nqp arrays to `dd` [255318ec] + Change of `IO::Path!new-from-absolute-path` internal method signature [1d946e15] + Correctly set up values for `$*DISTRO` initialization [22d5ffc3] + Change file extensions to Raku format [61821ffa][8c242d5e][582c14a8][5e9d98c2][ea1cb407][3b8104ec] [4677f741][ac652c0e][e5723208][deac4407][7b679604][416fd513] [ca99c7ca][54375179][82ea3292][4ec31e2c] + Other internal changes related to Perl 6 -> Raku migration [10e5390b][8fd7172c][af292586][81014e78][925e73df][dd7b4ce5] + Tests added [21320191][ffabf8d5] + Remove unused `nqp::p6decodelocaltime` as NQP has `nqp::decodelocaltime` [e2ba546f][663c427e] + Rename the `Junction` `$!storage` attribute to `$!eigenstates` [1a6f83c6][911cac4e] + Simplify fetching of the kept `Promise` sentinel in `Lock::Async` [e81e5162] + Simplify `Parameter.raku` implementation and improve how it handles parametert names [3f6a2a22] + Added `*_RUNNER_OPTS` variable to Makefiles [701c38df] + Make `rakudo` binaries default ones and `perl6` to be aliases, as well as include some other renaming-related changes [f5f6f76f][23ca6952][519a741a][536a2d28] New in 2020.01: + Changes: + A big overhaul of role applying rules and behavior or submethods, constructors and destructors [38c72649][a8f61882][cddcd46a][61d3aef2][27147ed0][cbc4b839] [3f7caf57][f242bcfa][cd74a3a7][51055d0e][9369c68e][ad92abc3] [00fec7c3][6f0dd1ea][c9ac15cb][cb903667][d89a0c92][a08e1ff5] [c674a1d3][0654d3e5][fffb5c9c][232382f8][b47be208][44648fbe] [c2d5c20c][48fc44c2][7afffd61][17537ab5][b1e288c3][32e210cd] [fc4a5a3b][1e166e41][7a94c4e0][3eb63b3d][a4ad1a8e][526d38d4] [9e4087e1][aeb10ef5][c4f1cff0][1f620408][b83e069d][4d69fda5] [c7a87053][13ae9298][0fb7a697][86b1ccbd][ca2cb4ab][e843fd20] [a92ade48][bdcf3149][93d0575c][23191207][595e0ca3][2c4fa983] [b51c1fc5][afcbeb59][eadc1582][548dea5f][1aad3481][4a962e07] [0b6a9343][bb2600d9][5d10e91c][139d528b][f2a41613][262b6fc7] + Smartmatching typed Arrays against same-typed Positionals now returns True (e.g. `Array[Str:D] ~~ Positional[Str:D]`), which returned False before [fb55ae29] + Class attributes and methods are now prioritized over those from roles [f19e2ee5][2fc87db1][4c265c7c][9357eddb][83d26ddd][9f2a2f6a][55b51a24] + DateTime class now accepts picosecond precision [9eef0e63] + Make default degree for hyper/batch utilize number of CPU cores better [9fd29cd2][5def05c9][3f51728d] + `$*ARGFILES` special variable now defaults to `$*IN` if no arguments [bde10698] + An attempt to use methods `index`, `indiced`, `contains` on a `List` now gives a warning [c9b02185] + Fixes: + Fix repository name lookup on windows [13c5d046] + Fix leaking file handles when loading modules [1c467401] + Fix Parameter.sigil for anonymous scalar params with default values [8c0a5d6b] + Fix raw slurpy onearg parameter handling in Parameter.raku [33993023] + Fix construction of Parameter object [68808c54] + Fix error when calling Parameter.usage-name on unnamed parameters [81311a20] + Fix hang when initializing `Int` with a type object [0e9f96ea] + Fix missing dependency information when precompiling large dependency trees [9fa82b80] + Fix off-by-one error in Supply.head(limit) [80f60c05] + Fix for parameterized roles not found for FQN lookup if applied to a parent class [27b3db27] + Fix double execution of ENTER block in some cases [d8c7d879] + Fixed compile-time subroutine candidate matching when `is rw` trait is used on JVM [12d4514a][fae105b0][73d5e74d][d81212b2][5c65a126] + Improved error message for invalid Pod6 leading and trailing declarator blocks [26f63ff7] + Prevented `ASSIGN-POS` method on `Any` from decontainerizing, allowing its correct overloading in roles [ed8f5141] + Prevent `name` MOP method from returning a `NQPMu` when no name is set by returning an empty string instead [dabf83a2] + Fixed relocatability of bundled native libraries [55b3ed56][0e4f8351] + Made `Range.int-bounds(from,to)` always return correct result [8c3f2927] + Fixed a precompilation bug related to determining class language version [15a55801] + Fix "expected IO::Handle:D but got IO::Handle" in parallel test runs [efadff2a] + Fix calling a qualified method from role on JVM backend [5648a4f3] + Fix `roundrobin` method, cross and zip operators on a 1-element lists [f602c02c][737dd1b1][87de5ee4] + Fix MoarVM::Profiler.report [734047a0] + Additions: + Add `Version` type coercer to `Str` [e3cbd32c] + Add `Supply.repeated` method [ff08697a] + Add `Supply.decode($encoding)` method [59f6a031] + Add `Supply.first` method [ace98531] + Add `Supply.collate` method [40797028] + Allow Supply.head(*-3) to be synonym of Supply.tail(3) [6d6318d4] + Add `Supply.encode($encoding = "utf8")` method [5d6c0b6b] + Add `Supply.comb` method [348d54df][3dd9edff][67ec4b2b] [1331128f][07dce515][147ce39e][550bf097][a666e736][92d465db] [622b20fb][f74e506f][f8724459] + Add new `is built` attribute trait [e76f8e4d][98abd6a7][e81b0b68][826c3ead][f1f690e0][ada7c365] [ecf8a3f4][7bbb76da][8ab53027][3f0dca4f] + Add `Supply.split` method [cac64caa][4fa60ab5][c16a6484][9b29bcc4][2188f13b] + Add `Supply.lines(:nl-in)` method [c63d8a87] + Allow user to retain formatting of Pod6 leading declarator blocks (`#|`) using RAKUDO_POD_DECL_BLOCK_USER_FORMAT env var, instead of always collapsing them into a single string. The latter remains the default behavior [9a4c83af] + Made `.perl` (now `.raku`) method call on signature of {...} display `$_` variable from outer scope [e7c20386] + Add `$*RAKU` variable [a05e169e] + `Raku` is now allowed to be used as a language in EVAL [1c5d010f][632c0083] + Add `:$match` named parameter to `comb` subroutine when called on `Cool` object when the `$matcher` argument is a `Regex` [dd2f072d][a9cd6404] + Add `log2` subroutine, which accepts `Cool` and `Numeric` arguments, as well as its method form (`Numeric.log2`) [f6254be1] + Allowed colon syntax on `$.foo` method, making `$.foo: 42` work as well as equivalent `self.foo: 42` does [4a1323ed][6abdf27a][0f86e49f] + Add `RAKU_EXCEPTIONS_HANDLER` env variable, which is not supported as an alias for `PERL6_EXCEPTIONS_HANDLER` [90408d18] + Build system: + Renamed `PERL6_HOME` env var into `RAKUDO_HOME`, preserving backward compatibility. Rakudo `Configure.pl` now accepts `--rakudo-home` in addition to `--perl6-home` [7cfdd598] + Add `--force-rebuild` command line option. Together with `--gen-*` options is causes corresponding components to recompile irrelevant to their existence and version conformance [15255b0a][2022b9cd][1945b9d2] + Fix `set-env.sh` script [0b8ede6c] + Fix `raku` symlinks relocability [a00628e0] + Prevent silently swallowing errors on submodule update [db43d134] + Use Visual Studio 2017 in AppVeyor [7ecc5bfd][7ce49472] + Various tweaks and small improvements [75056dfa][8b7d0651][52a7bab9][d7d9a2f4][470c9b7e] + Skip 'make test' on JVM backend [e5627b83] + Efficiency: + Make `StrDistance.new` about 30% faster [91a324a0] + Make `Rational.Str` 10% faster [272b658a] + Make `Rational.Str` a few % faster with 20% fewer allocations [73e98a6c] + Make `Rational.base` at least 2.5x as fast [97e7cdbd] + Make `Array[Int].raku` at least 5% faster [66cf6f81] + Make `NumStr.raku` about 60% faster [e262da1d] + Make `IntStr.raku` about 2x as fast [2261ef11] + Optimize `Pair.raku` [0d96bedc][08aec410] + Make `Mu.raku` about 40% faster [585227ee] + Optimize `Str.raku` [09e66e50][a4b62fb1] + Make `Str.rindex` a few percent faster [7ecc3e84] + Make `Str.index` a few percent faster [d5719bbe] + Make `Str.contains` a few percent faster [030ed10d] + Make `Str.substr-eq` between 1.4x and 2.4x faster [276d0967] + Made `Str.chomp` between 10x and 100x faster [b9c0196f] + Made `Str.chop(N)` between 3x and 17x faster [b569e112] + Made `Str.chop` between 1.8x and 30x faster [f1963623] + Made `Str.trim-trailing` up to 2x as fast [657d36f1] + Made `Str.trim` between 1.5x and 3x faster [0d0d419f] + Made `Str.substr(N)` between 1.5 and 3x faster [4252a8c9] + Made `Str.substr(N,M)` about 1.5x faster [908dd251] + Made `Str.substr(N, Inf)` about 15% faster [25a29987] + Made `Str.trim-leading` between 20x and 90x faster [3941fef0] + Made `Str.parse-base` between 7x (with decimal point) and 12x (without) faster, decreased its memory pressure [74c8017c][3ce92453][9b8ce733] + Made `Str.Numeric` a few percent faster and 13x faster for an empty string [37474a7a] + Made Str.Int a few percent faster [b42957cc] + Made DateTime.new(epoch) about 20% faster [9d895914] + Made DateTime.new($epoch) about 50% faster [cd321254] + Made the decont operator about 20x faster [872cb7c0] + Improved efficiency of JIT for `split` subroutine [3e2cfb4d] + Fix regression in performance of async socket [4e9487ce] + Micro-optimize `set_name` MOP method [88741d94] + Make `lazy gather` up to 15% faster [971174f4] + Make emit about 30% faster [aea2a36c] + Make `take foo` about 20% faster [a91813d0] + Make `take-rw foo` about 20% faster [533a2ad9] + Make `take foo, bar` about 60% faster [e1aaa83c] + Make `take-rw foo, bar` about 60% faster [bed716be] + Make Supply.lines a few percent faster [0f4ef3cb] + Numerous micro-optimizations [f5583de4] [05aff922][488f21a6][9c15d717][6c85e691][60a9ff62][779b0a2e] [fc8bfc2e][11a8d57f][392af08b][33266694] + Internal: + Add mechanism for seeding typename suggestions [b291fc78] + Removed SUBSTR-(START|CHARS)-OOR from Rakudo::Internals, they are now `Str` private methods [ab99c2dd] + Simplify `Str.substr` implementation [99a0610a][1a891062][e3426579][f79102fa] + Fixed some regressions related to `v6.e.PREVIEW` usage [6c251f27][8d03bdff][94b4ca96][466f7de4][65847f71][a59fec7f][755c8030][0d2eb1cb] + Reflect Raku renaming on codebase [604ca34a][186c4ce6] + Numerous small codebase improvements, including ones related to renaming process [8f30cc76][fc309419][540162c1][6a129499][1003bb93][68cee0dd] [2652d9c5][f9e30a02][ee66a6b1][a04af365][11808277][0e2485a8] [e8a9e07f][17d81160][d5a34f19][6bd0dd51][cfb655bc][b1a68be4] [74aea829][80cbb3ef][83423ea0][d38cfef3][d406d834][62bd2743] [6bf6d347][e4efccc6][6f527cea][b7888d79][7ce79f4d][5f335aa4] [9a5579ff][784daae2][add2ec0d][abcf37f2][a51268a1][b9fa673b] [3d432429][f06c2426][f1abe9c6][bd2e0c7a][22905592][8c4244f6] [829f4ccb][4f48e3a5][27d1c4b5][5d8ef435][ccb92df2][8ad3d244] [70f96d9b][276c06d3][d6970e96][3e332a1a][06292bc8][8cfa6590] [f08cd00f][7b075188][b1e986c2][0e9792c7][43669806][7925bfd4] [82913377][fa355a26][19b820d8][06ae7d61][86a771ac][aafa8ca2] [25e6128c][fdffa474][77d8fa37][ed44f60a][666f95c1][56d2b23d] [0d81a867][b7870953][37ddd598][87bc1171] New in 2019.11: + SPECIAL NOTES: + Perl 6 is now Raku! This release comes with initial changes required for the language rename. For more info see [Path to Raku](https://github.com/perl6/problem-solving/blob/master/solutions/language/Path-to-Raku.md) + Fixes: + Fixed the signature of `signal` [eb88e64e][fcf1f761][a46c414f] + Fixed laziness propagation in KeyValue/Pair iterators [abbd1285] + Fixed loading of `CORE`s allowing for defining new symbols for new language releases [56af07bf] + `die` and `fail` now use `$!` from the calling lexical scope if called without arguments [56af07bf] + Fixed a bug in `require` with incorrect installation of imported submodules [56af07bf] + Fixed outer signatures getting into string interpolation [7cab810b] + Fixed segfault when using meta ops in threaded code [60cfbb39] + Fixed Maps to keep containers [2ee82afe][42d6e0bc][cb1fbf66] + Made sure `Date.new-from-daycount` takes right candidate [ac11774d] + Fixed passing of formatter in operations on `Date` objects [971d4bf6] + Fixed `.wrap` when used with `callsame`/`nextsame`/etc. [da65fb5b] + Fixed a bug when a wrapped method is called first [2e915d74] + Fixed `:D` check when used with `where` [58c2d649] + Made socket family handling portable [16607d3f][17f66039] [39b04dc9][7e106265][d7d8d37e] + Fixed RakuDoc parser to allow empty config values [7c3b2572] + Fixed handling of `:every(Inf)` in `ThreadPoolScheduler.cue` [74f2d3f4] + Fixed exception propagation with race inside race [9d1505d1] + Fixed Proc to return Failure with non-zero signals [89fc9f35] [6b42d314] + Made sure that doing keep/break on a vow more than once throws [c7ec96aa][0f31d353][5aa998f1][f32b86a9][b8f92d25] + Made sure that `Backtrace.list` lists all the frames [559c24f0] + Made the `Buf.write-*` methods return self [dae981e8] + Allowed type objects on `Buf.write-int/num/bits` [43b5e768] [18ff9052] + Changes: + [6.e] Pseudo-packages now return `Failure` for a missing symbol (was `Nil`) [56af07bf] + `EVAL` no longer wraps evaluated code into own `CORE` context but shares the one used by the calling scope. It also means that `use v6.X` statement is not effective inside `EVAL`s anymore [56af07bf] + [6.e] Grammar now returns Failure when failing to parse [b21a5776][daebcd26][4cdd2d10][d46a9084] + Additions: + [6.e] `LEXICAL::` pseudo-package includes all symbols visible in the lexical scope, including dynamic symbols from caller chain [56af07bf] + [6.e] `SETTING::` pseudo-package includes all symbols from all available `CORE`s [56af07bf] + [6.e] `UNIT::` pseudo-package includes all lexicals visible at unit level [56af07bf] + [6.e] Symbol binding is now possible for all pseudo-packages [56af07bf] + Individual language-release `CORE`s are now accessible via `CORE::v6` namespaces. [6a885908] + Added GB2312 and GB18030 encodings [a95cb03b][4cee2c36] + Added support for Unicode v12.1 [f5ef0b3c][7056a25a] + Build system: + Added `raku` and `rakudo` executables [5090206d][ab0a6d61] + Added `--rakudo-home` alias to `--perl6-home` [dfeb7126] + Added `--nqp-home` and `--perl6-home` configure options to set custom home dirs [e16e61a8] + Added `RAKUDO_HOME` environment variable [dfeb7126][24abab8a] + Added support for `.rakumod` extension [daa16b9c] + Added `--silent-build` option [f9ee6043] + Fixed errors when building from a release archive [78c05c12] + Fixed installation to `/usr` [1e0220ff] + Fixed build in folders with spaces [93669907][abc072cd][f1170895] [0365662e][f7f9b1fc][ceb457e1][12d9e34a] + Created a process for making binary releases [34273916] [1c764404][f7b4d71f] + Fixed libffi include issue [98e0bb68] + Removed `--libdir` configure option [cdd57cd0] + Fixed the build to not create folders outside the build directory [cbd1dc27] + Minor build system fixes [165f3fbf][3d5c5517][579ac66e] [d487cd85][c2808b32][cfb0a267] + General build system cleanup [90de22f8][983c3985][4ce5b7c5] [ff9272b1][608c6cdc][9fefa336] + Efficiency: + Made sure dependencies are not recompiled if another process already did it [23cfe1c6] + Many small internal optimizations [f44c14c3][82fc4e57][af108863] [01b86fa8][c7056f20][0dd6573a][207b825e][e424248a][57f4a4c9] [19e075ff][c3926928][44a6a0de][696eea2d][1d4c21d0][6f5232f4] [3697325c][6297b0e4][519cfdeb][25abfe2b][1e2b0ec5] + Internal: + NQP vars and ops will now default to int instead of num [290cd792] [5876d38a][62e2555e][1e4d3ac4][cf6f6d92] + Optimizer: Don't use Int*Ref in first arg of `if/unless/while/until` [84ee0c8c] + Fixed `BYTE_SUPPLY_DECODER` breaking after exceptions [91624312] + Reduced `.moarvm` size by replacing `die X::Foo.new` by `X::Foo.new.throw` [6d8f4050][88dfe55c] + Stagestats are now shown for dependent precompilation [238f8e57] [960e5b4a] + Added more tests for symbols in CORE and SETTING [5cd45f91] [53bb28d0] + Added `nqp::p6client*` family of ops for finding first Raku caller from different package and determining its language version [86525a3b] + Added `nqp::p6getlexclient` op and `$*OPTIMIZER-SYMBOLS` [cbce0edd][f8768ae5] + Added `Sprintf.pm6` stub for development convenience [4bd25bf5] + Fixed inconsistent state of NativeCall subs after repossession [573f6a2f] + Fixed native subs declared in BEGIN blocks and role bodies [e45bb341] + Fixed optimizer interfering with some native subs [d662912e] + Fixed leaking an open file handle when re-precompiling [2dd570de] New in 2019.07.1: + Build system: + Fixed issues when installing into `/usr` [f41db044] + Fixed unnecessary use of `git` in release tarballs [540926bf][e18b4f3b] + Fixed intermittent failures in one of the performance tests [bd29d3f6] New in 2019.07: + SPECIAL NOTES: + Upcoming releases after this one will have a different changelog format + Java 9 is now required for JVM backend [ea94966d][8a37b931][b1fac3d6] + Deprecations: + `--profile-filename` will be deprecated in the future. Instead, there is a `--profile-kind` option that accepts the `instrumented` (default) or `heap` arguments, and `--profile(-compile)` accepts a filename as an argument [31e534cf] + Fixes: + Fixed `asinh` with large negative arguments [5281c23a] + Fixed laziness check on `[\+]` [8f424c9d] + Fixed representation of constant constraint in `Parameter.perl` [a1591fbe] + Fixed `$*KERNEL.bits` on Windows [5a9b720d][6e8df010] + Made sure creating a Failure from a Failure object throws [c9110654] + Made a Failure throw when it is used as something `Iterable` [23fca8f6] [4ffb4082] + Fixed `CLIENT::.keys` [6599998c] + Fixed a crash when values are deleted from `(Set|Bag|Mix)Hash` while iterating [a6a60705][1f066d96][63657986][c5664301][787d5bf6] + Fixed method cloning [d14fad4a] + Fixed USAGE message to not omit candidates when it shouldn't [bea51993] [dd1c8059][2b991664] + Class symbols are now merged into stub when using `require STUB:file<>` [f03c7814] + Fixed named parameters in `MAIN` so that a single parameter for a `@`-sigilled parameter is now accepted [87d219ee] + Improved USAGE message for `@` sigilled parameters [d5faa02b] + Implemented `:123foo` parameter format in POD6 config [95ce37d3] + Fixed notification queue growth in `Channel.Supply` [d5044de2] + Fixed `FatRat.base` failure for large denominators [d4e1d8e7][b69964b5] + Allowed `:at`/`:in`/`:every` to be `Inf`/`-Inf`/`NaN` in `ThreadPoolScheduler.cue` [cc88d63d][de76a056][9b46cb90] [c977d6c5][1a19c660] + Fixed an error when `RAKUDO_EXCEPTIONS_HANDLER` is set [939ea419] + Fixed parsing of Unicode brackets in string interpolation [ba07a62f] + Fixed a lot of reproducibility issues in Rakudo and precompiled modules [0990ecc4][50699817][e1f1eb00][7926cdd6][95af2f4c][a2ba5737][4af81c36] [5ee341cc][5b8b9c0c][5dcc687e][aa1d1ce0][7b5a9981][a973dae6][4d44bd93] [8ec2c43f][532d19fc][5669bc92][37b7ef7c][5c24182f][c5bc71e3][cd11b507] [b0dd44b0] + Fixed an issue with multiple dimensioned indexes throwing rather than failing [7bbbebc0][9ce87eeb] + Made sure the REPL creates a history file if it doesn't exist [cb691da5] + Made sure that `.head`/`.tail` can take `Cool` values [74c8f044] + Fixed bogus role conflict when the same method is added under multiple names [e274f4a2] + Made sure classes doing the `QuantHash` role have `.hash` and `.Hash` [650bbc1d] + Fixed `ThreadPoolScheduler.cue` when called with a `times` named parameter [48a12551] + Fixed an off-by-one error in infinite range subscript [35b69f07] + Fixed colon parsing of adverbs [76e5ee1b][91359141][c227693a][a26e95ba] + Fixed `List.perl` for lazy lists [ec978780] + Fixed `compile_in_context` with an immediate block [b9f89954] + Fixed parsing of `&` in regexes [f18af941] + Allowed capture argument to `MAIN` to accept arguments [410ff564] + Made `Date.truncate-to('day')` a no-op [e943f3eb] + Fixed assigning `Nil` to a scalar declared with captured type [c0134d2a] + Fixed roles inheriting from a class failing to type check against that class [90d81c7f][41f6f9ea] + Fixed type checking on curried roles [86290889][5f07a394] [9b65b33b][9c6fa1e7] + Fixed type matching of parameterized roles [0023f64c] + Fixed type matching of roles against their "parent" classes [6c023546] + Fixed role exports [163f0a03] + Fixed assigning a native array from an `Array` with deleted elements [ef766010] + Fixed number of elements when `Slip`ping an `Array` [f5f41901] + Fixed multi-dimensional `EXISTS-POS` for out of bounds dimensions [ca7408e9][c9a78928] + Made sure sorting a 2-element list with a mapper is stable [ab56324d] + Made sure calling `push`/`append`/`unshift`/`prepend` as a sub with named parameters dies [b20ccbae] + Made `is export` export role's group [120b8d95] + Fixed internal `from-json` so that it doesn't creatie nested arrays on assign [b7e0e894] + Made sure `Channel.fail`, `.poll`, and `.receive` will update status of `Channel.closed` [ef1ea42c] + Made some methods return `Bool`s instead of 0 or 1 [6f8442ad] + Made sure formatter information is kept when using operators on `Date`/`DateTime` [34c0e892][5bdeedcb][f05b1b08] + Fixed `require` to do the right thing when importing sigilless symbols [63b9e1fe] + Implemented a more fine-grained deconting of exported symbols [93f20871] + Made sure `Junction`s used in a `grep` are interpreted in `Bool` context [86523869] + Fixed signatures on several multi methods in core [66d92c62] [8969399b][9b639961] + Changed the value of `RAKUDO_FIRST_FLAG` to avoid collision with `MVM_CF_FORWARDER_VALID` [bf61f597] + Various fixes for the JVM backend [e84f7270][a5b22387][f26fbd37] [3e51bd4e][1aae63a6][5e8451f7][96a976b3][417fa68e][f1c80fdd] [07b4f743][ee2297b5] + Various fixes for the JS backend [0ecd037b][4f8a16e0][6e650cd3] [b0668b26][75e2fb70][9d187287][7aa72ce0][1aae63a6][f1c80fdd] [8abfbbc4][07f6ccc3][88712199][ea795710] + Various improvements to produced messages [54a89b6b][6563f1ab] [2732a286][69d88be3][1ec4f171][33e2d7f4][2f6e5fde][2e8f326d] [e3529622][24eb4d59][8f59177a][d8a41f7e][aeba161c][a362fac5] + Additions: + Added an `X::Cannot::Map` exception [fd8a00a3][ef8899f6][a804ed0f] + Telemetry's `snap` now also accepts an optional "checkpoint" message [afc9f849] + Telemetry: allow snap `:heap` for heap snapshots [90e18b65][0c80e067] + `CompUnit::Repository::FileSystem` objects can now also be created from an `IO::Path` [e9bbefd3][b2e72d6d] + Added support for `use v6.e.PREVIEW` [d4afd480] + `EVAL` now supports a `:check` flag to just check syntax (like `perl6 -c`) [d41f162d][5b3a8ce0] + Implemented support for `Kernel.free-memory` and `Kernel.total-memory` [31671f8f] + Added the `CachedIterator` role for creating iterators on cached lists [94ba19f7][a4d38539] + By default a parametric role group would now choose non-signatured candidate for introspection; if there is no such candidate then the first one would be chosen [6c023546] + Added `--confprog`, a way to configure the behavior of some moarvm-internal systems like the profiler [97334711] + Removals: + Removed `:where` support for `Signature/Parameter.perl` [4cfe5ec1] + Removed several internal functions from `CORE::` and `SETTING::` namespaces [45eb1c5f][ed074cd1][80185031][bf57f762] + Removed wrappers for no longer existing internal function from `RESTRICTED` setting [47832fe1] + Removed `Compiler::build-date` [019ccf05][35423a6e] + Removed the timestamp in `Distro`'s desc [2d4d2ca0] + Removed unused `%opts` argument from `Perl6::World::load_module_early` [bc764c2e] + Build system: + Replaced shell runner scripts with native executables [ed9b963d][7ab19817][5366c4fa][4b461bf7][2c9c823c][e0f84e05][637ba57d] [1853eb91][9e63da47][7846144e][787596d0][5bc62699][4459364e][bb7e6094] [11c55fb8][34162e96][9aec73a7][134b1baa][8fac1099][c4f33fce][afc79c24] [474997fc][ef0bc23f][c63c06e7][40cc12ac] + Made Rakudo relocatable on most platforms [b989882d][e27c1ec3][efa9f54e] [171bb6eb][a11e9ab5][d76fe0ae][aed29234][f20a2b6e][98a0df6e][ab96f1a6] [f0915e92][e00c9ea8][4ec400be][52b80c44][27adb553][ffaf3fc3][a542ec94] [090f1c96][4a7c487b][efb35b00][1add622d][1d538977][e20dcc4e][d3d4b2e8] [65217aaa][109ce1f4][99176243][249c730e][340f692b][5a07a7fd][8809b9ce] [de42e719][cac95fbb][0c8f269f][96e8d4f4][3fffe283][83f6256a][65ed8249] [3f0dfcd7][f8ced498][3a4ebf34][75e234a2][6c5be5e0] + Revamped the whole build system [db5becfb][c1c108fd][bafa5239][3627de6d] [6d40290e][2c4f7c79][9ce98098][c7b3bd7a][2974076b][d54fafca][7c20b9c8] [2c256531][0299578d][01e8b85f][55ebbacc][9ac52616][59d44cf0][8784b21c] [cc584b72][cf33f1a0][7960454a][b619b560][86fe3a05][825b6787][38980f0d] [4b481194][dd250027][6695777e][7d2bb288][13d65042][0adb7769][5404c2a2] [c314acc8][8d2fade7][e91668ad][5935b1dd][f12a8c95][99c53c39][141bd4e1] [da6d90e4][16ccbeb0][f6438b02][f2ccd6fa][49a4ddbd][1fceeada][87647236] [9ba51a8b][f077f57c][adc8e212][4e15f205][4816277c][0acd27f4][6e14da54] [79629bde][c86742ac][09b9e065][88218704][caae6e33][de53f43b][2b1e5ab4] [63a1b50a][e132e476][fd0a4c21][c24b1875][b25d7c94][7467ab1d][70d481b2] [2d7e7aa4][0522259d][3f25ba92][00362541][c8b5bd3e][6ee37f8b][b93201f5] [136e8a43][0296102e][7fc38d55][bf1bf73c][02e78700][50034d15][e51d2adb] [1655e73c][7f69ef1d][f15f5687][f935bd20][2f8a4d78][9dca33b6][c5830f4c] + Introduced `PERL6_HOME` and `NQP_HOME` which allow to control where Perl 6 and NQP look for their installation [8055fc1b][f76db01b] [9196db5c][2633aad6][472c8c90] + Fixed default target on `nmake` [44e0386a] + Debugging commandline arguments now work on perl6 directly [2d3a7fbf] [e26cd449][9ce17929][8b9297de] + Moved `spectest.data` file into roast [ed6d91c0] + Rakudo NQP libs are now installed into `/share/perl6/lib` instead of `/share/nqp/lib` [34476c3a] + The "perl6" Perl 6 CompUnit repo was renamed to "core" and is now installed in its own folder [80dff595][4d5b254e] + Efficiency: + Replaced internal json parser with `JSON::Fast` code [ce24f604] [43ff9f1c][a8cd286a] + Made `say(\x)` about 1.08x as fast [9770c1aa] + Made `Iterable (<=) Map` 2x to 3x as fast [44a6468f] + Made internal `to-json` functionality about 3x as fast on MoarVM, 1.6x as fast on JVM [667c75d3][8540c94d][a6a2ba90] [e22aeafb][ee2f2d2d][dc782575][1d4bcac3] + Made chained calls of `.reverse` much less memory hungry and a bit faster [2683b3d0][e118d4ef][719eefde][8ddc2ad5] + ReifiedListIterator is now a PredictiveIterator [9107215a] + Many small internal optimizations [f0915624][29878d82][76b6416d][a9b9cdc9] [17643d49][29ce2ce3][847783e2][165f9184][2eb93b2d][286aa29e] [a21cf6ae][86d66ea1][3556f270][0b66e011][e316c1a1] [7db3a06d][b559512a][25fe9b0b][3cde10a7][6df735b2][bb2c3f3a] [5b7870bf][9dad99b8][36fa16bb][0e7c6e77][c361736e][cbb9034a] [ce30ff2a][bed0695d][95a7866c][ffc47aae][2b0ac401][7b10a428] + Work in progress: + Re-implementation of `sprintf` [8fc53ec2][12a094ad][7201d89e] [29107b17][972a242f][1cad10b7][4ae023c7][af7b833f][74505389] [d000a125][dc02335d][e6cbbcc8][0f3bdfb8][e84845ad][7931fc25] + Providing an API to spesh logs [84144c79][4e677f04][f91de3e2] + Providing an API to the MoarVM profiler logic [c4fdb642][e421e638] [f7bcbb70][b51acee6][3910042a][28ce83a0][a70a82ea][51c6e585] [19c74bd0][9e8da747][ef7f0408][8e49a86b][4b8eb734][6e3a4b93] [ac698cd4][26a309b2][9203ef2e][a32ad594][29966a1a][e623265e] [13d3f0d4][161d7eef] + Internal: + Refactored `$*KERNEL` internal use of uname [ec40933d] + Got rid of a hack involving early return in `Test.pm6` [84b0e380] + Fixed `.&fail` after better return handler tracking [90722780] + Exposed `newmixintype` via `Metamodel::Primitives` [4702c245] + Fixed subclassing of `Parameter` [d31fb270] New in 2019.03.1: + Fixes: + Fixed issues with `$*KERNEL` on Windows [190a7148][2f9d69c2] New in 2019.03: + Fixes: + Fixed uncaught processor floating point exception on `Rat.round` [11da0fb4] + Fixed `$a=~$a` if `use isms ` is active [df748ea7] [af868f84] + Fixed `.WHICH` methods that did not return `ObjAt` types [e50f4f2e][6b401dad][67cbd993][9df09621][0d29768a][ca8d8afc] [4b91610e][537621e4] + Fixed missing redeclaration of bound outer error [23663609] + Made `X::TypeCheck::Assignment` and `X::Trait::Unknown` more resilient against strange values [a6d8858e][54fe8a1a] + [6.d] `$_` container is no longer `is dynamic` [33f79fef] [3d581c8d][c2e272ef] + Fixed thread safety of some state variables [a5b9fc2d] + Fixed `.^compose` calls on types stored in a scalar [ab8052dd] + Fixed `Parameter.perl` for slurpy parameters [d8b7fabe] + Fixed `$*EXECUTABLE` path construction after a `chdir` [5c14916b] + Fixed `$*PROGRAM` path construction after a `chdir` [cebf0cb7] + Fixed `.^add_attribute` calls with `Attribute` object stored in a scalar [bf0dbbe6] + Fixed hang in Channel `subscribe`/`close`/`drain` [9b77459b] + Fixed `Inline::Perl5` failing to load when installed through the Staging repository [1c101a04] + Allowed parameterization of parent class in `class` declaration [35ecfc8e] + Made `IO::Path.dir` on non-existent paths throw rather than return a `Failure` [38f4b7b4] + Fixed line number accuracy in backtraces [5b231e09] + Made regex literals capture `$/` and `$!` [8ef7c15e][ee2238f7] [4a2124a6] + Fixed `«=>»` crash if RHS is a List in a Scalar container [df96fa0f] + Tweaked `Range.ACCEPTS` to work better with Junctions [46409c07] [f3f7c5cb][d904b704] + Made `Baggy.ACCEPTS` signature the same as `Setty.ACCEPTS` [37ce147c] + Fixed "No concretization found" on role-qualified method call with inheritance [a6c8180f] + Fixed use of a role by its short name in some cases [b3eb3826] [9d6e508d] + Made sure that `CArray` can be `STORE`d into `Buf`/`Blob` [ada116ef][5e5c909d][30fc5146][84ed8548][bfadefaa][05b9aa0d] [b394b63c] + Made CUR uninstall `.bat` wrapper scripts [121ca5fd] + Fixed a problem with adding/subtracting negative values from `Date` [91ca8275] + Made sure hash slice auto-vivifies using infix metaop [616b757a] [e68e38e0] + Many improvements to the JS backend [634633be][8f2d9ed0][fc39f5ff] [9b20c476][822962da][e233f287][52de9657][6dd723a9][7b053d54] [17a2bcca][f7ba400e][ada01420] + Various improvements to produced messages [e48712a3][59bafb83] [6a8f08b9][89ca56af][8095cead][d499bd4b][7133b81e][f7704267] + Additions: + Added a candidates method to `CompUnit::Repository::FileSystem` and `CompUnit::Repository::Installation`, which acts as the API for module lookup. Internals were refactored to use this API for module lookup, which fixes some issues as a side effect (i.e. old bin scripts being invoked instead of a newer version) [2d007bf4][07f62c60][bed3bbd0][a25d5fa4][29d74709][085fa19c] [78de05eb][b378a157][d0a3fec9][d533d450][877e7dc0][270b355e] [683df8bf][e1ef571e][077f88a5][22021fdd][603010be][27e141cc] [ddb6abd0][c868ca9c][339ea850][3999d753][bfff01a5][d998c1ea] [83f0fd6c][d39e2fc4][74ccb4c8][67cf829f][92ebc333] + Added `buf8`/`blob8` read-(u)bits / write-(u)bits methods for reading/writing any number of **bits** [45a945b5] + Added `$?DISTRIBUTION` to give introspection and IO capabilities to the current `Distribution` [32d480ab] + Added `addendum` to `X::Method::NotFound` so that we can give better error messages for specific cases [04dd52f9][b6c8f5ed] + Added HLL interface for creating `Signature` and `Parameter` objects [f329d6c6][3d3578b6][c4723cba][e116f3ad][3b9fd81d] [e4635189][9cd42b1f][86557cfd][d6b1bd2a][9485dd2b][7be075eb] [081b15ee][eb50d8ce] + Made `does X::Control` imply throwing to CONTROL [ca177e58] + Made `QuantHashes` parameterizable to limit the type of value that can be put in them [0d9e9f34][4bb5c33c][e87b7afb][fe38bdba] [bcc8054a][87b71c27][836c18ae][71a19c61] + Allowed `is Type` trait to handle parameterization like `is Set[Int]` [2ed2f398] + Added a `dynamic-scope` lexical pragma [871cbefc][88c46676] [9517c377] + Removals: + Removed `ComptUnit::Repository::Installation` and `Distribution` compatibility shims for old versions of panda and zef [f430518f] + Renamed `Block/WhateverCode.pos` to `.POSITIONS` [ccf350e4] + Build system: + Added a `m-spectest5_precompile` to run tests in precompilation mode [89fee86a][ec289a6c][bb36f04a] + Added create and remove JavaScript wrappers in `ComptUnit::Repository::Installation` [83286e29] + Efficiency: + Made `postcircumfix:<[]>` for `CArray` more than 3x as fast [f009cb4a] + Made `Rational.floor/ceiling/Int` about 1.1x as fast [cf0a6eaa] + Made `Rational.Num` about 1.05x as fast [236351ad] + Made stringification of `Rat`/`FatRat` 1.2x to 2.2x as fast [5c0ac4db] + Made constraint check on `UInt` 1.15x as fast [922d41b3] + Made comparisons with `Rat`s 1.4x to 15x as fast [c11e7e6b] [4fecb72a] + Made negation of `Rat`/`FatRat` about 3x as fast [d195e146] + Made coercion of `Int` to `Rat`/`FatRat` 4x as fast [92321beb] + Several other `Rat`/`FatRat` optimizations [29d7f709][6dad5caf] [395d633d][e29554f5][91f67494] + Made `unival()` about 2x as fast [08ae9bfc][27332f04] + Made `Buf`/`Blob.gist` about 2.5x as fast [6d58e0b0] + Made `Map`/`Hash.sort` about 12x as fast [8ae4310e][edb53081] + Made `Str.trim-trailing` about 1.1x as fast [304feae9] + Several improvements to `Date`/`DateTime`/`Instant`/`Duration` handling [467394b8][de933656][9f28a423][92956164][3488a65e] + Added return type signatures for more optimization opportunities [ef565b2b][66f8ee0f][fb517b29][6af22bc3][30a534d1][2ce79561] [7a68df2b][5cf65b57][01d2e11c][26c0e620][0368fe95][e0cd1d99] [0797f93e][cbc3e72e][c45d2b82][bb84b66d][50f0bb2b][e58e3764] + Fixed a memory leak when a Callable has a definite return signature but the actual returned value was Nil [7aa796a9] + More aggressive lexical lowering and block flattening [e73853a1] [c28a0924][685f6cc3][b41e9f57][b0e7e375][5bbaabb9][42024539] [2468dea7][cf9e1f59][053f929f][852a593d][871b6f54][401a3547] [f741374c][64d08ad6][2a33bb1a][83c2070e][ab7f07db][91a4b3b1] [6b44c581][eb3917c2][a4c994f5][31c8fda2][17bf7415][8aa73306] [11884e03][87fcda81][6b078a05][19e4ace6][fcfd51be][541a4f16] [d2df5b80][7fb098d7][c0f83788][623450d8][08d87f70][f71ca0de] [c6053e6a] + Many small internal optimizations [6392634f][5540212c][7d3b7e11] [2d704af4][1611795d][cf0a6eaa][236351ad][501231ee][a904d25a] [87698317][93b5e2ef][f2ed3db7][485dec4d][64c88f91][839f28e7] [b4d114a3][225d2f96][7dea20ab][df8c5780][50e1ec33][3eeb7276] [5d707977][eb8561ba][f56e0756] + Internal: + Added `nqp::const(BINARY_)` constants [32c10e3c][420abcb9] + Added `Rakudo::Internals::ImplementationDetail` role to mark internal functionality [d248d47e][588037f0] + Moved some constant return values in Num methods to their signature [f02bceb7] New in 2018.12: + Fixes: + Fixed infiniloops with some set operators [99d94db4][9f5cc8d1] + Fixed regression in handling of `"1"..9` [d92b155c] + Fixed use of `Proxy` in a class attribute using the `Attribute`.`get_value`/`set_value` interface [a5411e45] + Fixed semantics of `minpairs`/`maxpairs` (ignore undefined values) [7bf7a2c6] + Fixed error on `@a > 2` if `@a` is a native array + Fixed error reporting on initializing shaped array with improperly shaped data [fd216fec] + Negative indexes on native arrays are now checked properly [dd2af90c] + Fixed use of uninitialized value in `IO::Notification` [83d0056b] + Enums can now have private methods mixed in [3c2cfb22] + Fixed resource content lookup for `Distribution::Path` [370310b3] + Fixed precompilation when cwd gets changed at run time [e2e5cc53] + Shared library versions are now ignored on OpenBSD [5603128e] + Many improvements to the JS backend [1865db0d][fdd249a3][194c84b9] [1dd59f10][52c2af5d][8b13655c][2869a48b][cf5432ae][758caa89] [e0b943d0][a759f9d7] + Various improvements to produced messages [869b9e58][abfb9a40] [79824db5][55d08c8f][24c8e172] + Additions: + Added `Endian` enum and implemented new methods in `blob8`/`buf8` for reading/writing native values [46d4c9fe][011c6f11][f66861dc] [f0279313][b781f8cc][543219c9][77182713][06156a7c] + Added `Kernel.endian` [2a761ca7][af43b159] + Implemented `Blob.readint` / `Buf.writeint` [4f14d713][fecfb22d] [5cc0e02d][79dd1c8e][ceaf7218][631940c7][38afa2d6][e7b61aff] + Added `.native-descriptor` for async sockets [a4db9139][2fd90b1e] + Added `.Real` method to native arrays [dd3f91a2] + Implemented `last` and `LAST` in `whenever` blocks [890d628a] + Efficiency: + Made `<$rx>` interpolation 1.05x as fast [62243cd9] + Made simple regex matches 1.05x as fast [01c56b48] + Other minor optimizations [93ea7ed1][a0cb89a7][adb85609][6c2f3c83] + Internal: + Introduced a more generally usable `X::ArrayShapeMismatch` error [dd030145] + Internal micro-optimizations [38bc682b][f18432ea] New in 2018.11: + SPECIAL NOTES: + 🎆❇️🔥 Default language version is now `v6.d` 🔥❇️🎆 [46ef0ea0] + Deprecations: + Deprecated `.path`/`.args` in `Proc::Async`, use `.command` instead [45bbc946] + Fixes: + Fixed `$*PERL.version` to always report the right version [c9ecfb7a] + Consistified `:U.pairup` with `:D.pairup` to return a Seq [d73272e4] + Provided a stable `.WHICH` for `Map` [4e0a1c24][052067fd] + Made sure `DEPRECATED` reports location correctly when using `:up` [8561d0ae] + Fixed literal `\` in `tr///` [85107ec0] + Fixed tap add/remove race in `Supplier` and `Supplier::Preserving` [7ee1f3c5][68d79e70] + `QuantHash`es now properly report `.of` and `.keyof` [8b93ec9f] + Added type constraints to port numbers in `IO::Socket::Async` [547f28ba] + Fixed re-initialization on some types of arrays [f1fa5adf] [7262b4e8][49f07abe] + Gave 6.d correct `is rw` Proxy semantics [7d37f9aa] + Fixed `Match.^roles` [becbdeb9] + Fixed missing path volume after `..` is resolved [8854bbd3] + The `.values` method can now be used to change values in object hashes [a728bb2d] + Fixed shaped dynamic variables like `my %*a{Int}` [bcdf87a6] + Made `my @a is Blob / Buf = ...` work [762c708f] + Object hashes and `QuantHash`es can now be used with metaops [Hyper refactor] + Many improvements to the JS backend [32b7c089][f35dd301][9457f7e5] [ea69c0a0][0e4969fe][9df074ba][78389aa2][1ef62aca][f460ad1a][cbbe16ed] + Improved error message when using placeholders with methods [deae5bcd] [0896c301][48093d0d][0bda7dc1][90103f6d][68b44e33][8549c4c1] + Various improvements to produced messages [15c16e35][e6758492] + Additions: + Implemented `X::Language::TooLate` [3365094f] + `$*COLLATION.set` is no longer experimental [20c41ca5] + Added dynamic variable `$*FOLDING` [cec1f511] + Removals: + Removed unspecced `.allowed` attribute in `Pod::Block::Code` [5aba3e96] + Set operators `(<+)`, `≼`, `(>+)`, `≽` now die when used [951303f9] [7a1a1868][81474bf9][5598f37d] + `Associative >>op<< Iterable` now dies, as the results are indeterminate due to random hash key order [Hyper refactor] + Build system: + Fixed `t/*/*.t` rule in generated Makefile [d2c7e327] + Made running timing based tests optional [72b896c8] + Efficiency: + Made `Int eqv Int` 3x and `int eqv int` 5x as fast [fb9a0454][94dd0a41] + Made `ObjAt` `eqv` `ObjAt` also faster [5120d3d2] + Made `Hash`/`Map` slices about 5x as fast [6fe27894][b83179f0] [c4da4c7e][9a2c4b44] + Optimized various operations on `Date` and `DateTime` making them up to 3x as fast [11cb4fac][b6292fe9][08fac045][98d07cf6] [b463746d][bf3eb8ec][a11d599f] + Made metaops use the fast path for `&[+=]`-like ops [e7ce194a] + Hyper operator refactor makes many things like `%h >>+>> 1` 1.3x to 8x as fast [bfe2ad63][130cc817][0bc72e05] [75c9456a][ec2848c4][f06e8582][73eb297f][194daab7][a575effe] [c50cf82a][1a2b39dc][307a98bd][843118ea][6208c266][9221c08d] [c03e71d5][78f64203][63ae9dcc][fa5215b6][d5a751d9][674a0837] [8fa72681][80edefcf][cf5c8a09][534d8f65][7fad12b0][800d8fbb] [c3f03e67][1ed2b098][21434dda][234e298b][e8285c01][32ab0d30] [90ac0940][f7007ac0][dc67ee75][cae9847e][481dbf92][c4445649] [19f0c842][86ce4f4e][50f2207b][2e5be5b8][1b7253df][64a47d87] [005261a4][10693d16] + Internal: + Changed CORE.d setting compilation to propagate indicator flags [4a6d9108] + Made sure we don't add object to serialization context more than once [3995e423] + New QAST to mbc compiler [edc4c054][6aafe18d][f8be2fa0][656a8045][bb43acdb] + Added `Hash.STORE(\keys,\values)` [faa19ab9] + Introduced `R:I.AssociativeIterableKeys` [6fe27894] + Various internal optimizations [5f1a81e0][1766435a][8e858c8d][00eb7b85] [0fa6988c][bf3575cc][18ded174] New in 2018.10: + SPECIAL NOTES: + This is the first Rakudo release that comes with an additional JS backend. See `6pad` project for running Perl 6 code directly in your browser. + Deprecations: + Deprecated `gethostname()` in favor of `$*KERNEL.hostname` [f7fa5185] + Fixes: + Fixed/improved divide-by-zero errors in `Rational.floor`/`.ceiling`/`.Str` [a639fa9c][6d70346c] + Fixed semantics of `[Nil]` [88e6de22] + Fixed issue with custom `bless` method [64137bd2] + Made nativecall's `postcircumfix:<[ ]>` return containers [be2d4cb4] + Fixed hash descriptor when doing `Hash[Int].new` [9acbf000][ea710414] + `Nil` is now allowed in initialization and assignment of hashes [f61ba41a][605bcb39][7e86d4e3] + Fixed ContainerDescriptor for arrays with a dimension of three [a2e78ec8] + Fixed indexing of shaped arrays with a dimension higher than 3 [0307c366] + `.in-timezone`s value is now coerced to Int [c8438e6a] + Stub methods from roles are now verified [fd5d5bdf] + Fixed double-closing of handles in `IO::Handle.lines` when `:close` and `$limit` are used [6edb142f] + Fixed closing of handles in `IO::Handle.lines` when `$limit` is used [c1c75740] + Consistified Rat.base to fail instead of throw [a804ab57] + Fixed enforcing of return constraints on multi method stubs [abba67b2] + Various improvements to produced messages [cc2fcc9a][560e94ef] [bf10f4c5][243a2f01][7d02b949][9894eda5][0243275d] + Additions: + [6.d] Constructs `$()`/`@()`/`%()` no longer have any `$/`-related magic [bb88a032] + [6.d] DefiniteHOWs' (type smileys) default default is now the base type [38b198c9] + Zero-Denominator Rationals are now normalized on creation [671c4115] [75ec2248] + Made `my @a is List = 1,2,3,4` work [2bdf2b35] + Using `is Type` on `@` and `%` attributes is now allowed [b537ce2e] + Added a BOM on `open` for utf16 filehandles [959b89cf][479348f3] + Added initial support for Unicode 11.0 [5c272ee4] + Pluggable `MAIN` interface refactored, documented and tested [f234b9af][35f3d83d][7c9b2955][33c24153][8c3a4131][fbfccfa2]][341190e2][24413b5f[2c43d2bf] + Usage message now limits itself to partially matching candidates [0d1be77e] + Added additional dashed variants for utf16le and utf16be [4307996a] + Added `Parameter.coerce_type` method [0243275d] + Added `Code.cando` method to allow for `.cando` on all `Callable`s [45eeab78][69533b50] + Removals: + Removed --encoding support [bea08ec6][31b19d09] + Efficiency: + Made Hash.push/append between 1.2x and 1.4x as fast [12cfde2a] + Made `"".ord` orders of magnitude faster [b22edce4] + Made `==` with Rationals up to 1.55x as fast [c5a2eb81] + Made Rational `===` Rational 2.47x as fast [97e8413b] + Made many cases of `for (range-like things)` up to 150x as fast [2dd02751][645eeb52][dfd6450d][49baea70][89787028][2af789d7] + Made `[42]` not allocate anything anymore [8c4546bb] + Made `[@a]` and `[1,2,3]` about 1.4x as fast [e430813f] + Made `Array.List` coercion 1.5x as fast [3d405e89] + Made `.isa` about 2x as fast [4e8740c8] + Made `infix:<%%>` 10.42x as fast on natives [3d161a56] + Other minor optimizations [464a86b1][ab83b9d8][8cc3d5d7][b107cda5] + Internal: + Made `make` an only [369068ae] + Added skip-one method to appropriate `PredictiveIterator`s [e54885e5] + More things are now initialized at setting compile time [06dfbf02][688cbac1][92735770] + Simplified initialization of `CompUnit::RepositoryRegistry` [0425d927][8e1cd01a] + Introduced `IterationBuffer.List` [8c10da6a] + Use `nqp::create` for IterationBuffer instead of .new [84311b77] + Made sure `.STORE` only works on instances of mixy/baggy types [9daac683] + Added `$*INSIDE-EVAL` to mark that we're inside an `EVAL` [73b7c603] New in 2018.09: + Fixes: + Made native arrays throw when storing a lazy Seq [fc8c7f84][bb963a25] + Fixed smartmatching of Seqs against Iterables [d3cac14e] + Made it possible to emit Mu [3f10e2d1][db3768e3] + Fixed setting of `$/` when matching NDF [cf1df1d7] + Fixed prefix calls with `.:< ... >` on integer literals [ec366c30] [1835f280] + `.Array` on shaped arrays now returns a proper `Array` instead of dying [efbd58c8] + Fixed `.keys` on one-dimensional native shaped arrays [5a9105ae] + Made `Parameter.twigil` also work on dynamic Parameters [39f2d68a] + Made sure the decoder is detached when closing handles [b07874e0] + Made sure `X` handles empty lists on RHS [6c93fde8] + Various improvements to produced messages [d419a313][c8db35e3] + Additions: + Added a `PredictiveIterator` role for `Iterator`s that can determine how many values can still be generated, without actually generating them [3ffacb9f][5cbbcc6e][842d4b32] [78ae9028][000ac81e][c2c9df1c][cdf65305][ad64c757][eefbe6e1] [da663afd][e717e21b][ca5825b4] + Added `use isms ` and make `use isms` assume all available "isms" (now 'Perl5' and 'C++') [57f89278][c6c2b6c4][528def48] + Partially implemented Pod `#` alias for `%config :numbered` [b4bf1660] + Added utf16 decodestream and file handle write support [8fcebb86] [e8a7564d][0bf909bb][d275ea09] + Efficiency: + Made `Str.words` about 3x as fast [b8f37bfc] + Made `Str.lines` about 2x as fast [3dd09be3] + Made `IO::Handle.lines` about 1.2x as fast [874ec002][d198c1b7] + Made `IO::Path.lines` about 1.1x as fast [1905838c] + Made `Str.chop(N)` about 5x as fast [07089e89] + Made `Str.(r)index(needle,pos)` about 1.2x as fast [5d1d792a] + Improved `.elems` and `.Bool` on `Seq` by adding `count-only`/`bool-only` methods [89055755][86468e1e][070780e0] [64ddacab][9738dfbf][d1e80dfe][9ff17367][b1c645ed][bd832061] [708ff624][5f3c2bfc][2a011a0e][faed3a9c][e73e3ecc][78bebc7a] [d970c2b3][f5ebad98] + Internal: + Moved some iterators from Range to `R::Iterator` [fcd45ff8] + Streamlined quoted words handling [92951168][ae739adf] + Fixed a bug in the optimizer where optimizations were improperly combining [e436f4e5] + Simplified `Map.kv` iterator [6977973d] + Replaced use of `p6bool` by `hllbool` and `hllboolfor` [672196cd] [20feda70][170ffd40][7e69c640][3272207a][f1f6825b] + Removed obsolete p6settypes extop [de4e8225] + Standardized use of proto's on `.STORE` methods [ed9b48de] + Removed EmptySeq [a4db33e7] New in 2018.08: + SPECIAL NOTES: + Changed filenames and permissions of many scripts in the repo (e.g. install-dist.pl is now install-dist.p6) [07b4100c][9d8b6600] [c5c4ea38][59a6f7d2][248ee79c][906bec8c][683ae67b] + Deprecations: + Deprecated RAKUDO_EXCEPTIONS_HANDLER [5e1df41b][d2116efd] + [6.d] Deprecated `undefine` [72bac670] + Fixes: + Fixed .assuming on subs with slurpies [93a8ec66] + Fixed auto-printing of low-level (non-`Mu`) objects in REPL [9ea427a3] + Made `Map.list` return a List instead of a Seq [60447c62] + Made internal safely_stringify routine safer [0e2a7d93] + Made .perl of `(|)` signature a bit more idiomatic [24467ed6] + Fixed coping with failures to open a directory in internal `DIR-RECURSE` sub [e9351cba] + Fixed preservation of newlines in pod blocks [c6433838] + Fixed big int values in `BagHash` [fd779109] + Fixed several crashes and bugs involving meta assign operator [b9b0838d] + Fixed roundtripability of `QuantHash`es [84f60ada][ddf496c7] + Fixed `.comb` on allomorphs with leading 0's [f8d6a3f4][72ccd432] + Fixed crash when doing EVAL :lang from multiple threads [66683080] + Fixed potential race condition in EVAL [80bbfbb3] + Fixed `Test`'s `diag` to no longer die on `Junction`s [5ec2c96e] + Fixed Cool consistency in arguments of &round [e547811a] + Fixed &prompt to convert numeric data to allomorphs [38d7f2a0] [0275ea29][07b032d0] + Many fixes and improvements to the contributors.p6 script [7a87b7f5][8fee8d48][c5cfbc64][f6c8159d][1197c3f6][ade83c86] + Made `Routine.perl` more verbose / precise [d6c161ba] + Added some missing `is rw` [6caf86be][832ccd81] + Fixed problem in concatenation of 2 `Junction`s [4ef8433a] + Fixed failure to set up encoder/decoder in IO::Handle via `.encoding` call in certain cases/encodings [86846ac5] + Made it impossible to assign to a Map [fffe89c5] + Fixed `Map.WHICH` to reflect subclasses correctly [199d276b] + Gave PseudoStash its own non-value based .WHICH [bb5db6a8] + Fixed `QuantHash`.hash/Hash return values [76298204] + Made `Proc.command` return an immutable List instead of Array [925c1134] + Fixed `loop` to always return Nil [aff96bae] + Made an uncomposed class type-check against roles that have been added [38d046fa] + Fixed IO::Handle.encoding to check if$!decoder was set up [edf81bfe] + Fixed `is required($reason)` [7c349b7e] + Fixed `Range.roll(*)`/`roll(N)`/`pick(N)` with big ints [b30800c8] + Removed `` token in `term:sym` [51e41da8] + [6.d] Reserved `:sym` colonpair on names of routines [a68784a6] + Fixed a ThreadPoolScheduler memory leak whereby certain usage patterns caused it to build up an ever-deeper call stack, due to continuation mis-use [bf514c15] + Fixed misscoping of blocks in whatever curries [85495890] + Made sure that onlystar Routines cannot be optimized away when wrapped [434ede49][1188f801] + Made it possible to use `Array::` as a top level namespace in modules [a71e370b] + Fixed Distribution::Resource.^mro to not error [bb46381a] + [6.d] Changed `$*ARGFILES` to be based on `$*IN` inside sub MAIN [84d45f07] + [6.d] Made `num` variables default to 0e0 [f045042d] + Made Rationals fully-immutable [5c429e4e] + Fixed problem in QuantHash.ACCEPTS [712d0f0f] + Slightly changed semantics of (+), (-), (&), (.), (^), (|) on QuantHashes [3a6c1197][b826a07a][42595c27][f1693f26][64ab7179][8cedbbd1] + Fixed wrong math with largish Ints [fec1bd74][8e2c70fa][342c5a9c] + Fixed crash with attr + submethod TWEAK [d09756ae] + Removed sig from Routine.perl if it is empty [546d08c1] + Gave Routine its own .gist [6ad50d79] + Made sure `my ($a,$b)` does not have any runtime effect [90ef3061] + Prevented REPL from writing to filehandle when opening a file [07d00db1] + Fixed a couple of thinkos in Map.STORE [6587bf75] + Fixed Unicode Regional Indicators [80a7cff6] + Normalized the path portion of repo specs [aae0827f] + Gave Blob.subbuf the same feature set as Str.substr [26b49169] + Added support for Buf.subbuf(x,Any) [22f779a8] + Gave native arrays their own ACCEPTS [9726e644][6a481323] + Gave Buf/Blob their own ACCEPTS [9531455d] + Fixed occasional crashes in deprecation location handling code [0979b775] + Various improvements to produced messages [e2e42181][e2bbe3f0] [35fec8e0][1956df25][21eb168c][7a7e5e96][e9e8cd55][2e90c660][03574546] [4494a249][d60be5e4][9a45b2b8][2c7692fc][08b449e1][b5e92a55][ef61ce32] + Additions: + Added `X::ParametricConstant` exception [b6cd6122] + Added enforcement of type constraints on constants [1dea3034] + Improved auto-coercion of values to `@`- and `%`-sigilled constants (the `%`- one requires use of `v6.d.PREVIEW` pragma) [1dea3034] + Added a warning on definition of anon sub in `sink` context [d6c05395][08a54212] + Exposed host and port of IO::Async::Socket.listen via the Tap [cb2ea932][2d16e12c] + Added ability to mixin roles on attrs, aka `has %.a does Foo` [3158ae7e] + Added Callable indexing candidate for CArray [541922a0] [68ebe71e][2a803a39] + Added QuantHash.Setty|Baggy|Mixy coercer methods [3d9ea6eb][76e5f9c8] + Added proper handling of pod =defn block [6e8ca327] + Removals: + Use of syntax for parameterized constants now throws (such constrains were never enforced) [1dea3034] + Removed unspecced/used pre-6.c jvm modules [e6c5e859] + Removed unused Universal role [2670236f] + Renamed `IO::Handle.*-internal` methods to their final names [03d79975] + Removed previously deprecated `$*INITTIME` dynamic variable [a37c6aa4] + Build system: + Bumped JVM memory limit to survive setting build [80dca6b7][8feb13cd] + Added passing of --execname to nqp so that nqp::execname() works [359ac12d] + Efficiency: + Made `.first()` and `:first(:end)` without other parameters about 2x as fast [e6e9daf1] + Made nested meta assign operators 3.9x as fast [b9b0838d] + Made `.?` 1.5x as fast by using a spesh plugin [708c1326][a167e6cc] + Marked `set()`, `bag()` and `mix()` as `is pure` [c37c3b59] + Made `Int != Int` about 4x as fast [b236faec] + Made native `int` array `.sum` between 2.2x and 36x as fast [88e913b6] + Made initialization of native `int` array from a `Range` about 1.7x as fast [5682ee1f] + Made `Map` initialization logic 1.5x-4x as fast [ee800ada] [8f090821][6850a64f][ae6058ce][9f524d0a] + Made `Map.WHICH` about 8x as fast [ac2fa03b] + Made the `for ^100` loop optimization about 1.02x as fast [f43f118a] [7043559b][d69fd2f3][9b07e7bf] + Made Rational reduction 1.43x as fast [3d10a7f1] + Made argless Rational.round 5.7x as fast [097826ef] + Made creation of Rationals 1.19x as fast [db66a138] + Made `infix:<**>(Rational, Int)` more than 10x as fast [d1729da2][f9963bbf] + Made `my @a = $string.comb` about 1.25x as fast [df5d82e8] + Made subbuf up to 8.5x as fast [4e56ce95] + Made Buf.subbuf up to 2.5x as fast [cd43c4f1][a50c0492] + Made @a[1,3] with literal indices 5.6x as fast [67a528f0] [c1044bce][1978a2fc][a3a87125] + Made method LANG about 3.2x as fast [a6edf511] + Made string interpolation up to 2x as fast [3ae97e5f] + Simplified a lot of internal code [6e661e9e][0f1b36a7][bc2ca535] [36d37cbc][81a5e4ba][9e71c22d][4da2f607][0601c43c][4eaff452] [12bd328b][f0b705cd][9327f95b][934c3f9d][eee77141][1070fa0c] [36841543][81bcc540][fc865a9a][7f1e41dd] + Other minor optimizations [8f807fc4][ecd899c9][c6033401] [45df171a][327cae7c] + Many low level and other improvements [bd0a1f8b][aedf41ae] [4f0b585c][6d271667][d3c5381b][8c0d9de8][3f832108][5e5c7870] [c4076b70][bfe69474][397263e3][a7e3dce3][ea9cf08f][bdb9193a] [593611ec][9ab3ad27][04b86ae0][1e825793][bfd9ee4e][3b40b1c7] [40d19c75][a3c12486][a2208b0d][92026f54][35528c6c][52f1b89d] [e9e89f88][ca2360a4][ebc6b124][27a7e9bb][4f4fb613][5b985f93] [a30ae153][163e7759][beae9686][d1c755af][bff1bb83][7885f357] [523ffae8][8d652761][59faed1d][5a6af277][0baeec02][d0aab741] [05d7c39b][1b3dd35e][fa073679][ae25c4b0][8a76c00c][abfa1b15] [980f692c][4766536b][8607f682][656b763d][0b1e6d54][99f7f4cc] [1f65bf24][37c7e6e5][90f678f3][fa73bb48][fe5c8d49][db96cab3] [f8be2a2d][bf9ab42e][a41c37c8][fd6164a1][9a5c538f][c60a347f] [5559f4c9][ec7de841][8d8c755b][0b3fc077][574212ab][2b2f568a] [66aa6892][06073c5b][34468f11] \ More specifically: + Refactored Scalar and numerous container operations, resulting in Scalar being one attribute smaller and paving the way for a range of new optimizations + As part of the Scalar changes, also extensively refactored auto-vivification to be cheaper and more optimizable + Implemented specializer plugin for type-check elimination for assignments + Refactored the way return value handling is done, to generate a shorter code sequence + Improved the code generated for signature binding so as not to repeatedly decontainerize passed values, but rather to only do this once + Avoided a number of exceptions that could be thrown and caught in the optimizer, for a small performance win + Avoided a number of situations where parts of the compiler were repossessed for serialization purposes, resulting in smaller precompilation output + Tuned Map and Hash for better lookup and assignment performance, as well as more compact code in numerous other operations; this made it possible for single-element hash access to be fully inlined + Tuned Array.AT-POS to enable it to be fully inlined + Tuned Array.ASSIGN-POS to do less work + Improved `p6bindattrinvres` code-gen quality, which is a slight improvement for the many places in CORE.setting that use it + Made sure references to the Scalar type-objects compile into a constant, not a lexical lookup + Internal: + Implemented `Perl6::World.lang-ver-before` for easier language version check [4dcf5929] + Removed `Set`, `Bag`, `Mix` `.clone` special casing [7865bfa6] + Updated makeUNIPROP.pl6 with Unicode 10 property names [2ff46764] + Removed propname → propname mapping from Cool.pm6 [a9e844a8] + Made `infix:` for `Ints` consistent with other infix operators [46e7640f] + Simplified `Hash` → `Map` coercion [c567af73] + `PseudoStash` "pseudoers" hash is now a native hash [8a8ce95e] + Various `Range` internal changes [6ad096c8][806752fb] + Tightened up some `trait_mod:` signatures [f6209d73] + Renamed nqp::getstrfromname to nqp::strfromname [4522132d] + Changed install-dist.p6 to use and prefer full namespace for builder identifier [0249afc2] + Turned p6reprname into a desugar [07cfbeb2] New in 2018.06: + Fixes: + Fixed numeric values in Signal enum [aa622a95][852c1bd3][f2b50378] [774ec5a0][189c5a8a][b19cc4bd][c661c03c][5603771f][bfcfa5da] [7e5a862e][cd8d0445] + Fixed long class names being cut off in X::TypeCheck message [a79de429] + Many improvements to POD parsing [75430ac9][cb66dfcc][6f1b1cb6] [e1e7e4c6][cc28ce37][e776ded7][54aa17c6] + Fixed code execution in elided duplicate argument pair values [fc57f9f0][73297600] + Fixed `use isms ` for `rand` [d1d31fd5] + Fixed miscompilation of chain ops [c10b1eec] + Fixed home path when setting up repositories [91b211ac][d06e70c3] + [JVM] Implemented canStore in RakudoContainerSpec [704b893c] + Additions: + Made `is DEPRECATED` work on attributes with auto-generated accessors [7e3aa2f2] + Added `:api` in preparation for full zef / ecosystem support [affc218f] + Added .perl method to Distributions [18f9de61] + Removals: + Removed backwards compatibility with installers using the old Distribution class [2acbe7fc] + Moved pack/unpack support to lib/experimental.pm6 [9472fdfd][edc6ac6b] + Renamed `use p5isms` to more general `use isms ` [4109ce36] [c80ea2f2][56dbd735][148d7c56][95aa77c9] + Efficiency: + Streamlined creation of HyperWorkBatchIterator [20bf96f9] + Made .minpairs/.maxpairs about 25% faster [788cda94] + Privatized a lot of methods for (now) better performance [c940a0ed][ec5e51c8][7284a30f][c49bbc93][0ac5c4ff][09a9bbc0] [caafcb38][0c265d49][48864774][0e835805][5621b262] + Added spesh plugin support [192083f6] + Made private method calls 6.6x faster (spesh plugin) [51ff83c7] + Made qualified method calls 12x faster (spesh plugin) [f6f43d58] + Internal: + Moved &DEPRECATED to Rakudo::Deprecations.DEPRECATED [472f6e48] [89a4cf0d][afbbf8f8][2fa08d5e][874ead51] + Turned Hash.BIND-KEY into multis [1c1acbc2] + Various NQP ↔ Perl 6 fixes [e4ecf5e5][23af3491][7bc6e46f][cbb5ee5f] New in 2018.05: + SPECIAL NOTES: + Corresponding MoarVM release introduces hash randomization to prevent DoS attacks. Among other things, this may affect user tests that expect keys or values returned from a Hash object to be in the same order every run. + Fixes: + Made .assuming available in WhateverCodes [6e8dc6f1] + Fixed truncation of seconds in DateTime.later/.earlier [656ff77b] + Fixed spurious unhandled Failures caused by require [666eb3ab] + Made IO::Handle.seek to always return True [24a90774] + Made CallFrame skip over thunk-like things [0d216bef] + Fixed unwanted warnings in X::NYI when $.feature is omitted [a7c03101] + Fixed WHICH of non-reduced Rats [8cd70d1e] + Fixed smartmatch exception explosion [97d5d83e] + Made code detection in subsets more robust [ede507b7][febcb917] + Made build of BOOTSTRAP.moarvm reproducible [39227d54][56c03572][6ae0526f] + Simplified Signature.perl/gist for unnamed invocants [71159bed][f14dc6bd] + Made it possible to call .perl on uninitialized native strings [b12fba38] + Made .gist on native / non-native arrays similar [4e88fa15] + Fixed overzealous X::Syntax::NoSelf throwage [9b915f09] + Fixed smartmatching an Iterable type object [385308d3] + Fixed unexpected POD table failures [2cda7a19] + Made pass() and flunk() more consistent [82b3a894] + Fixed distribution path format on windows [4cacbf66] + Various fixes for the JVM backend [7d2940ee][cc57d06a][be35160d] + Various improvements to produced messages [7b336519][0de80523] [b4973115][22d08069] + Additions: + Added shapes support for HAS scoped attributes [4c3807c5][7847768c] + Added NativeCall CArray.allocate method [a02131d5] + Added "use p5isms" pragma to stop complaints about Perl 5 traps [8ae82a55] [8ccda189][7bde26fc] + Removals: + Removed some 5to6 error messages [3f350912][4ac9915e] [5ce24929][cf35764d][44538f50] + Build system: + Fixed Configure script to not assume gmake location [abd88a94] + Efficiency: + Made Int.lsb 2x faster [9e2dacd4] + Made Int.msb 2x faster [775a42ee] + Made Range slices on native arrays about 23x faster [67a31600] [f038e12d][09cbe679][c69179cc] + Made .splice on native arrays up to 2x faster [ee1ba153] [4ab2f2cd][da646aa2][e0ad668e] + Made Rat / FatRat stringification up to 200x faster [e0dca0cc] + Made creation of regexes up to 30% faster [32a78996] + Made @a.splice(offset) about 20% faster [8d12d5b4][a5d46b42][8bde96d2] + Made module loading 10ms faster by avoiding IO::relative [849ba56d] + Other minor optimizations [d53fe90a][aa18140e][776ff354] [ac6e26e8][073a7f50][54e390f5] + Internal: + Introduced nqp::slice op [090432bb] New in 2018.04.1: + Fixes: + Fixed hang in parsing of nums with huge exponents [4e38bc1f] + Fixed denormals and precision issues in num parser [cc93bc9a] New in 2018.04: + Fixes: + Fixed bug mapping windows1252/windows1251 without a dash [c9c5f341] + Made sure .encode and .decode accept the same encoding aliases [5298b7aa] + Fixed `infix:` identity function [87e43c4a] + Made builds reproducible [16daf02f] + Made build of NQP modules reproducible [2c882d96] + Fixed explosion in List.combinations(Range) [624b3f0c] + Consistified &combinations/&permutations with method forms [29dcde10] + Made .produce/.reduce nodal [08eb465f] + Fixed Channel iterator failing if Nil was sent [bdd8143e] + Fixed value drift & precision issues in Num creation [8422d7b4][17446fc1] + Made sure that values of `once` blocks are deconted [f97398cf][53c02d85] + Made Supply.interval a serial Supply [7572983a] + Fixed bug with iteration of negative empty character classes [20495f09] + Fixed crash in loop + FIRST + LAST when it's wanted [cfc6b109][879b3340] + Fixed error for .native-descriptor on closed handle [5d554ba3][c6c25159] + Fixed QAST::Block migration in `with` + loop-comprehended `for` [fc192212] + Fixed `infix:<->($n)` to not negate [edbbc442] + Fixed crash in double-sink `for ... { Package::foo }` [4402839a] + Fixed thinko in CURR conditional [9bcc8e52] + Fixed crash with unknown column in RAKUDO_REPORT_COLUMNS [c015f08d] + Fixed substr to handle non-int arguments properly [f0c85125] + Fixed hang in IO::Socket::INET.lines [6e37c7f0] + Made Setty.perl consistent with Baggy/Mixy.perl [c0212af9] + Fixed set difference for Bag (-) List [344a64e9] + Fixed @a[]:v and @a[*]:v to filter out deleted elements [08b951c8] + Fixed precision/value drift with Complex literals [43026662] + Fixed crash in NativeCall when calling into a C++ library [db8b218f] + Fixed dispatch with IO::Socket::INET.new: :!listen [ceeb3a00] + Fixed unwanted consumption of Seqs [9e6ae276] + Fixed proto .arity/.count for all core multi subs [4b5d36f3] [6a65ed02][d17f7535][859178b0] + Various improvements to produced messages [db7361a3][299dc6fc] [54137e8b][6c2f2445][5fee5891][91fe6b63][6cdee60d][4b2512a2] + Additions: + Added support for "api" adverb when loading modules [32c5c83c] + Added strict, replacement options for IO::Handle, Str.encode [6458811a][2760753d][37fc2883] + Added ShiftJIS decode/encode support [646f9211][f4863601] + Added a way to get child process ID via Proc::Async [1321917d] + Added Proc.pid [05816139][5ad102ea] + Added fails-like routine in Test.pm6 [4abfd4ca] + Added Array.grab [a0e5e880][a393ff69] + Added support for "const" marked return values in C++ functions (NativeCall) [9b3a0b6f] + Added gist methods to AbsolutePath, NQP and Perl6 repositories [8f3237c2] + Build system: + Added missing tools/build/check-nqp-version.pl [26518055] + Fixed build when using a different nqp than the one in $PATH [eb71edcc] + Fixed the Makefile on Solaris [affeaa79] + Fixed build system not noticing change to BOOTSTRAP.nqp [2ae3f484] + Efficiency: + Made HyperIteratorBatcher.produce-batch 3x faster [684a50d1] + Made .hyper.grep batch producer at least 23% faster [3e9b705e][1c4eebe5] + Made Iterator.push-exactly about 8% faster [9d784dd0] + Made `grep :kv .pull-one` 1.5x faster [c40f0254] + Made `grep :p .pull-one` 1.5x faster [5db9ebc4] + Made `squish :as .pull-one` 1.5x faster [d2c88bcc] + Made `squish() .pull-one` 1.6x faster [c41b79c0] + Made `grep :k .push-all` 1.5x faster [e3aef509] + Made Blob/Buf comparisons up to 30% faster [9ffb06b2] + Made Capture.FLATTENABLE_(LIST|HASH) 30% faster [768cf9f2] + Made List cmp 20x faster [0d7b42fb][126d8a84][082f8152] + Made ORDER() about 7% faster (affects `infix:`) [32b3ddc7] + Made List.roll($n) 6% faster [c71ff664][7327a33a] + Micro-optimized the Awaitable role (up to 10% faster) [266f4a22] + Made List.pick about 30% faster [de68bfc1] + Made List.roll about 20x faster [c53fde3e] + Made Map/TypedHash.roll about 30% faster [6a6bb23d][5981f81b] + Made unwrapped `dispatch:` curriable (`*.&uc` 7.6x faster) [f174d4b4] + Made `%h:delete` and `%h:exists` about 1.5x faster [d3eefa21] + Made `@a[1]:delete` and `@a[1]:exists` about 1.5x faster [6ad6dcbb] + Implemented optimized Iterator methods for `42 xx ...` [5f256bae] + Made copying native arrays about 9% faster [5ec4a5ab] + Made CurriedRoleHOW.accept_type 1% faster [8c265f9b] + Made `my int @a = ^100` about 40% faster [e8ec81db] + Made int(8|16|32|64)/num(32|64) array initialization 9x faster [40815d16] + Made `my @a = ^100; my int @b = @a` about 9x as fast [b5318e6e] + Made native array iterator about 1% faster [a2d8c96b][bd238a7c] + Made native array.splice up to 47x faster [d1b3809a] + Made native array.STORE(Seq) about 2x faster [72473bd0] + Made native array.splice(offset,size,Seq) about 13x faster [a39d382e] + Made %h.head 2x faster [91421874] + Made Complex.Str 5%-10% faster [5ef05612] + ThreadPoolScheduler optimizations [4ef28a7b][8f4a5a53][d4254216] [d0fbe744][c71fa17d][3468f690][637147af][17ca56b4][5bab5865] [aaacc5a4][ae91db88][f8c44164][924310c5][b22421e7][ac5cf2bb] + Other minor optimizations [dc921b60][caacb2e4][67f91572][739fd9c9][f4255d5a][6f42d19e] [828cd4a8][232197da][8ce20ae1][75b6651b][18252b60][31b072c6] [ec265706][153e892d][0344925f][81dbe4cb][348e6f45][6a66b359] [c2eae41c][9f8231c6][72dfddfa][24ddff73][eefccc18][0756076b] [a3da6ac5][8e2ee64e][29b7f464][111f67a4][7c510611][82b19b1f] [74b75599][850765f7][1f98b1bb][617624f5][a53811cd][d9869e53] [7b5ccaa6][518f2c31][d393b828][12a38f1f] + Internal: + Many improvements to .hyper and .race [7d978fb2][22849592] [34b294d2][ae0cbc30][7af3b648][9532e9c3][d75f4cfc] + Moved proto method splice: Mu -> Any [88d61bd9] + ±Inf/NaN are now treated as any other Num [e348b8f2] + Made sure native array splice won't splice from itself [28629905] New in 2018.03: + SPECIAL NOTES: + Str.comb(Regex) was fixed to return a Seq instead of a List, making Str.comb always return a Seq. Code relying on the specifics of the previous behavior might require some tweaks. + Fixes: + Fixed various sleep() issues [e3c4db73] + Fixed <0/0> to be False [748d1a57] + Improved Test.pm6's like/unlike [7c1a6cac] + Fixed failure to sink last statements of `for` loops [4c5b81fe] + Removed unneeded candidates in &say and ¬e [3a0d53ce] + Made Str.comb(Regex) return a Seq [1da07530] + Fixed &say and ¬e to not auto-thread [b62e0eb7][355b2eb5] + Differentiated precomp NC sub setup markers [b27c548f][ec5edcae] + Moved chrs() logic to List.chrs and made chrs() the gateway [1894eace] + Moved ords() logic to Str.ords [61176475] + Fixed bug on ops with subclasses of Range [440fceac] + Fixed wrong assumption of Junction execution order [207313be] [89f33bbe][e9cff795] + Fixed cases of mis-scoped QAST::Block of regexes [fb882d49] + Fixed .grep(Regex) on Hyper/Race Seqs [5e462e12] + Fixed &dd to not mark Failures as handled [7773c3d5][65874b15] + Enabled native-int candidates in bitshift operators [29fdb75a][3d735975] + Made Int:D (elem) Range:D be independent of size of Range [de30c162] + Straightened up `$/` handling in Str.subst[-mutate] [874fcdda] + Fixed Metamodel shortname assignments [ce08683f] + Fixed Pair.clone [5031dab3] + Improved Pod::To::Text to indent tables [57af8b84][dffbd68a] + Fixed precomp files of NativeCall users having absolute paths [51c4d4d8] + Made sure `samewith`-using routines aren't inlined [e12e305a] + Made sure MERGESORT-* don't leak low-level types [511bec0a] + Fixed code generation bug affecting private methods calls in roles where the target private method used a role parameter [21997b62] + Various improvements to produced messages [a4f9090e][235d3f1c] [3b350739][5ae1bbe1][52176c3c] + Additions: + Implemented IO::CatHandle.handles [d5baa036][eb064922][639c6da0] + Made signal handlers cancellable [db010b84][a31579c7] + “datagram”-oriented API for UDP sockets [67f36e36][b406b320][dd2c9019] + Added support for replacement and strict setting in Buf.decode [0d796fb0] + Added support to Encoding::Decoder to use replacements [ea92f550] + Removals: + Removed no longer used DELETEKEY helper sub [6f2cbcf7] + Removed Range.clone-with-op [440fceac] + Efficiency: + Optimized Uni.list to reify 15x faster (on 10000-char str) [8b7385d8] + Made Str.perl 43x faster for some chars [ba6b84bd] + Optimized Str.perl by making uniprop(Int, Str) 2.7x faster [6ac56cc0] + Made Rational.Str 28% faster [008b9279] + Made internal RETURN-LIST sub faster for common case [3a4056bf] + Made Num.Bool 9x faster [2a42cdbb] + Nano-optimized supervisor thread sleep [4617976d][85ad0eba] + Added special cases for 2-tuple infix:<,> that are 10% faster [b6e5d7fc] [48c46fa7][90079357][ddf00078][d5a148c0] + Made Channel.receive/receive-nil-on-close 2.5% faster [4054ca68] + Reduced the number of DYNAMIC calls when hypering [598832cc] + Made Channel.poll 2x fast [eff92f94] + Made HyperIteratorBatcher.produce-batch 3.6x faster [8026cef8] + Many HyperToIterator speedups [0194ef46][6232d29e][34889beb] + Internal: + Turned many subs into multis [16b57af5][55bc053c][182b7ea5][63775474] [c2d0d3ac][cdb45fa5][4f473867][bf5e3357][5210d702][b704a175][4c67498f] [7d72387b][838782b7][abfbd1ab][6d6a69fd][c1d2a5bc][4da2418a][62fc3118] [d3f50dba][b9f40fea][dfef8283][9a0a7bdd][32b08035][51fccdfe][474c512c] [4f04698f][423e7cc0][ae4204c5][8cba0846][1b94ff6f][5490bacd][e1b711ae] [a23684f3][804c009a][f5b23a55][4513c279] + Marked many subs as “only” [1be26afb][25bedf88] + Marked set ops as “pure” on their proto only [af353894] + Made Unicode operators aliases of corresponding ASCII subs [254f477e] [aadd3c12][bc52fefa][a2100ec7][2e7a0e59] + Added nqp::getppid [fed92e3b] + Many profiler improvements, it now supports multi-threaded programs [fed92e3b][a5a6c778][dd2c9019] + Made substr() just a front for Str.substr [7835652d][b688a6f3][15ccfd33] + Made substr-rw() just a front for Str.substr-rw [038837f8] + Moved substr/substr-rw catcher methods from Any to Cool [aad79f8a] + Remote debug support on MoarVM [ffeff74e][e32bda21] New in 2018.02.1: + Fixes: + Fixed Whatever curry QAST::Block migration in stmt mods [5270471c] New in 2018.02: + Fixes: + Fixed `no worries` pragma [f5b4d89f] + Fixed IO::Socket::Async losing :$scheduler in .print-to [7c451514] + Fixed postconstraints in `my (...)` being ignored [3745eff1] + Fixed optimizer crashes in `map` with certain args [f3efe5e6] + Fixed IO::Handle.get on TTYs blocking after EOF [359efef7][af4dfe82] + Fixed crash with colonpaired variable declaration [a35cd4e6] + Fixed crashes in degenerate .tail(Callable) [ba675971] + Fixed crash in `temp`/`let` with parameterized hashes [0a32e51b] + Fixed Hash.clone and Array.clone losing descriptor [0d7c4fe8][45560ac9] + Fixed `let`/`temp` on hashes losing Nils [8c4c979e] + Fixed crash in Any.skip(Callable) [8efba3a8] + Fixed crashes with native types in conditionals [d1a48efc] + Fixed many issues with block migration in thunk gen [1ee89b54][31ab8683] + Fixed "No such method 'prefix'" when there's no HOME directory [b6a7d7f6] + Fixed buf8 punning happening at INIT time instead of BEGIN [c6cc673d] + Fixed type constraint in Str.split's Seq [8afd791c] + Fixed Iterator.Rotor when cycle contains Whatever or Inf [ba7b4571] + Fixed crash with ENTER nested inside LEAVE [58de239c] + Fixed wrong error in REPL with none Junctions [2c36ab2e] + Fixed semantics of :b quoter tweak [deffe54b] + Fixed error when throwing error during setting compilation [c820e4be] + Fixed crashes with compile time evaluation of Whatever curry [7c1f0b41] + Fixed crash in Proxy.perl [902f45f5] + Fixed encoding of ›˜œžŸ™š with windows-1252 (Latin) encoding [4507a565] + Fixed state vars in `do`-ed loops [299e8526] + Fixed whatever curry with regexes [d80fc376] + Fixed crashes with compile time evaluation of `where` thunks [95f23a56] + Fixed broken 2-arity sort of 2-el list [2e65de29] + Fixed postfix whatever curry with another curry inside [e8c6c259] + Fixed empty compiler version when the git repo has no tags [382024e6] + Fixed migration of in-regex blocks [c0c7756f] + Fixed missing decont in `cmp` [114e3735][25c5c488] + Fixed drift when reusing lazy iterables for indexing [f330d7fc] + Fixed crash in parameterized constraints on attrs with .= [562edfc5] + Fixed REPL adding empty lines to the history file [24fab707] + Fixed Parameter.usage-name to omit leading * and ! [3c73099c] + Fixed Any.tail(Callable) violating Iterator protocol [2cc7b631] + Fixed .perl of handled Failures [b2a21fa9] + Unified List.roll/pick invocant specification [311ef07f] + Fixed multi-threaded precompilation [ac87ea2a] + Fixed issues in constant type declarations [f559c6d8] + Fixed `if` with slurpies on its block [ef1d22f4][dfb6d951][59556c70] [4b7113fa][00af9ce2] + Improved SprintfHandler [d419afe4][4ac67e73][684b99ea][13406517] + Fixed unwanted curries with HyperWhatever type object [57a1aa7a] + Made Backtrace.gist more helpful [555db42a] + Fixed ($ = 42) vs ($ = "42").subst-mutate [e7af9a6a] + Fixed Cool.subst-mutate to only mutate if there's a match [61015526] + Made Str.subst-mutate always return a List on :g [77794a28] + Made Str.match(:x) consistently return a non-Slip List [829ea8e3] + Fixed return of multi-match options of Str.subst-mutate [e0d39321] + Fixed .Numeric/.Real on :U numerics and .Real on :D allomorphs [1dc1f038] + Various fixes for the JVM backend [a2499c90][1f223190][f2188e45] + Various improvements to produced messages [8ffbc43b][7f07f68f][34b3356f] [de2d8296][1c894e41][d419afe4] + Additions: + Added windows-1251 (Cyrillic) encoding to the list of possible encodings [c73cb78f][4507a565] + Added support for .= to init sigilless vars [8ba3c86e] + Added compile time LiteralType error for native vars [e930e253] [63a1d25a][30b82b98] + Efficiency: + Made `$ where Type1|Type2|Type…` typecheck ~8x faster [43b9c829][264a1a27] + Many compunit speedups [5bd33669][6fa1e78f][c268f55c][5be174bb] [b188cc82][838beab9][a9a9e1c9][00cde175][ed9b287c] + Made certain conditionals with natives 2.1x faster [d1a48efc] + Improved dynamic optimization of nativecast [3ed2fbd5] + Reduced startup overhead of file I/O and module loading [db1e067e] + Made `dispatch:` call up to 43x faster [ff31f0a3] + Shaved off 10ms when loading a native library [86e926c7] + Made compilation up to 6% faster (for 3000-line files) [f4732164] + Made Whatever currier up to 2.2x faster [752bb8b3] + Made list assignment with roll up to 20% faster [65d6fe48] + Moved `$*PERL` initialization to BEGIN time to save runtime [bdb4d34d] + Made Version.new 82x faster [02d2e2ca] + Added native `num` post-inc/dec to pre- optimization [4a5cc2c2][13e6ed8c] [888328ef][971d17c4] + Made `.=` up to 63x faster [abea3242][01237782][2ba7634c] New in 2018.01: + Fixes: + Fixed IO::CatHandle.read switching handles too soon [dc800d89] + Ensured &await can handle flattenable Iterables [1a4df4e1] + Made Array.gist limit output to 100 elements [08539c43] + Fixed .[count|bool]-only of combinations/permutations [5eed2b00] [cda4a4d7][2c27eeaa][d4f53ed5][19604c2d] + Made sure subclasses of List create consistent .WHICH [18557da9] + Fixed Range.pick/roll in light of degenerate Ranges [5c228333][55cb8f3d] + Fixed Whatever.ACCEPTS with Mu:U [89d85baa] + Fixed signatures that had Int when Int:D was meant [3e044dc7] + Guarded subbuf against negative ranges [24f4609e] + Fixed some export issues [38897d19] + Fixed Slip wrapping of quoteword with one word [ad684de3] + Fixed ±Inf/NaN Num to Rat conversions [042cb741][c91bcc2a] + Fixed USAGE with subsets/where and variables with quotes [27fbd7ab] + Fixed .gist dumping too much output in some cases [de21da30][53a85080] + Fixed crash in `eqv` with conted Versions [72ee58e2] + Fixed issues with smiley-ed coercers [a177fa99][8dcf9dac][3947a4c1][354a3848] + Made sure Rat calculation does not use type objects [9910b393][9adc58c3] + Fixed handling of type objects in Date.new [1d034df8][dfaa2282][038b1ea7] + Fixed CURFS/CURI .perl output [9cf2f998] + Made sure hashes are not interpolated in regexes [f719a471] + Fixed explosions when hypering over Buf [7ba50d86] + Made &dd more resilient to low-level stuff [99923747][d0be53a1] + Fixed .head/.tail to take any Callable [b4007070] + Fixed .skip with WhateverCode [d034cb58] + Fixed operator chaining with negated operators [ba111cfe][14c2cdb3] + Disallowed binding into a List [eed54cae] + Fixed `--optimize` flag propagation in EVAL code [e509c1a9] + Fixed RatStr .succ/.pred explosion [631875fc] + Fixed silent failure when binding to map keys [6a3db334] + Fixed R::I::Rotor calling .pull-one too many times [4a82b4b6] + Fixed `need` with versions [7537f899][0cdd82a2][0a73f19a][4d5e097a] + Fixed the lookup of many core symbols [efdbfeca] + Made .range consistently a Str in OutOfRange exceptions [90246e65] + Fixed superfluous parsing of ∞ [626991e0] + Fixed cf, sc, STerm, Upper, space and White_Space properties [49dce163] + Fixed many POD issues [14c28cae] + Various fixes for the JVM backend [4945dc40][4909430c][333efa0b] [00b7832a][70c57c3a][1e8c9762] + Various improvements to useless use warnings [d30e5b1e][c6b7012a] [64803b0a][ef2dc1b8][99da4a5a][00188757][e9c9dc46] + Various improvements to other produced messages [a04c6164][548dcf46] [6d65cf4f][51e0aa09][82dbada3][e543c890][0444a2c3][e5b4f37f][900c1b59] [96a3582c][5571d7f7][34160bf0][01ffd0f9][6a6470f9][e91159c5][5f7fdfdd] [f02606ce][cad66b72][79600d69][2dc93ac3][4ec5936c][ad60b947][732a25c3] [f8953ee8][ddbf07e8][fa136be2] + Additions: + Added Str.uniparse as an alias to Str.parse-names [2a8287cf] + Added Cool candidate for .is-prime [f01c50f1][23701966][b2b39bad][893d09ff] + Added compile time error for misplaced whenever in v6.d.PREVIEW [7672e34c] [0ec8e088] + Removals: + Removed deprecation fudge for native type instantiations [e0af68a0] + Removed :$CWD param in IO::Path.dir [b3e73b64] + Removed :$buffer param in IO::Handle.open [f415d61e] + Removed MONKEY BUSINESS env var [ac2e50c8] + Removed UInt64 (not to be confused with uint64) [cf154355] + Build system: + Fetch tags too to avoid potential missing tags [d93f8053] + Efficiency: + Made adding integers to Rats 22% faster [418fc068] + Made Blob.subbuf 1.8x faster [5f48c069] + Made `else`-less `if`/`with` blocks 3.4x faster in some cases [1815c368] + Made DateTime creation about 1.6x faster [36d71a39] + Made Date.new about 1.6x faster [b7170f83] + Made use of faster typechecks (7.5x faster) [4c9b84f8][8f71b0e0][10cd405f] + Made operator chains up to 2.4x faster [b77d8756] + Made `infix:` with bools up to 2x faster [f99943d3] + Made `infix:` with bools up to 16x faster [ca4fcaca] + Made |(1,2,3) xx 42 about 3x faster [014f1712] + Slightly speeded up adding of `whenever`s [7230b765] + Slightly optimized Array.ASSIGN-POS [6e13bfa2][86d91f2d] + Made `$a ~= "b"` 70% faster [5dd9ed10] + Made constraint checks Num/Int/Str literals 1.1x-10x faster [65d4876d] + Micro-opted exit_handler [0415bb5f][b5b6e23b][421504bd][21bc5916] + Performatized MetaAssign with MetaReverse [858b659f] + Made .sum on 2-element Lists about 30% faster [0af3f4d1] + Optimized `supply emit ` [81fe7b82] + Optimized Supply internals [32fbefab][9086f4c4][2548c2c5] + Improved first touch of Array/Hash variables [eeb3cc72] + Optimized more cases of private method calls [b6a236b9] + Tuned Lock::Async code stucture [f36a1f4e] + Special-cased one top-level whenever supply/react [e5f412d6][2192ddd1] [2dbc2bcb][e072474e] + Made Promise construction slightly faster [2ac1ceaa] + Assorted internal improvements to CPU/memory use [00797d07][2130c097] [7a3d9ce6][9c0db1cd][fbf432f9][4804003a][229b03fd][163f275b] [83a619ec][64de571b][773d2b9e][0dc4f731][cdb53afa] + Internal: + Introduced ValueObjAt, the .WHICH for value types [202459ce][4790587f] + Introduced Proc!set-status [7a4743be] New in 2017.12: + Fixes: + Various POD-related fixes [41514235][11d90cac][061c36d6][2cd266fe] [8ea7a46f][2c951798] + Fixed resolve of IO::Path for Windows [eed733e2] + Fixed ∖ op to do Hash→Mix conversion through Sets [eacf9b27] + Fixed incorrect attribute name in X::AdHoc.new [3166400d] + Fixed Supply.zip() to call `done` when some supply is `done` [1d0dae86] + Fixed Supply.throttle() when the source supply becomes `done` [c8370f21] + Fixed silent failures on invalid `is export` values [1668b4f0] + Fixed many cases of enum creation [d9021cf1][754664ed][65301756] + Fixed crash when using allomorphs as enum values [fc52143b] + Fixed <:Digit> to match digits correctly [0339b0f8] + Fixed some Telemetry.EXISTS-KEY issues [f3b1289f][91798547] + Fixed gut spillage in pseudopackages [cd24b1c5][a82e0e7d][1c7d15d7] + Fixed introspection on Mixins to Code:U objects [e31a414b] + Fixed let/temp to be able to take Mu [75229976] + Fixed autovivification container issues with `no strict` [e5b49ce3] + Fixed shaped array indexing to accept non-Ints [00632edb] + Fixed List.new to not create containers [d80df073] + Fixed incorrect .count-only/.bool-only implementation [af9812fa][0e228fab] + Made sure each Seq.skip gets a new Seq [854c10c2] + Moved attribute settage inside the lock [8df8ce09] + Made print/say/put/note handle junctions correctly [07616eff] [9de4a60e][8155c4b8][3405001d] + Fixed WhateverCode curries losing `use fatal` [31db3acc] + Various improvements to produced messages [d85585ea][9fd5042b] [c9699ab2][1da698ab] + Additions: + Implemented TR/// [f6958624][3d2fa915][8b27166f] + Implemented .toggle [694f534a][78caeb6b][ca7d0483][e7c0a644] + Consistified &[but] and &[does] with non-roles [575d31e2] + Added While/Until iterators [2c1a2860] + Added proper Supply.Seq method [aa3c2c5b] + Efficiency: + Made multi-needle split setup cheaper [5929887c] + Streamlined INDIRECT_NAME_LOOKUP a bit [76158136] + Made &[-]/&[+] with Rationals 30%-50% faster [6c299bf9] + Made DIVIDE-NUMBERS 6%-15% faster [78aeaf46] + Streamlined Hash.AT-KEY [6601da5c] + Streamlined Array.Slip.AT-POS like Hash.AT-KEY [fe8312b7] + Streamlined Array.AT-POS for better inlinability [af29a227] + Streamlined List.AT-POS a bit [9a2f5325] + Made Array.ASSIGN-POS about 1.7x faster [c5afc97e] + Made R:It:ReifiedArray 15% to 30% faster [a974de9b] + Streamlined Array.iterator.push-until-lazy a bit [ae02bc29] + Internal: + Abstracted prefix: logic into R:I [47f23fc6][126d7b55][6fb5c8c8] + Implemented Sequence.Numeric [6061f0bc] + Various improvements for the JVM backend [0a24efc3][f40c3818] [fbf7beca][928ada08][74a13ae1] + Added tests for previously resolved issues [20d67a3d][831dab14] [1b0be0f6][062c27f3][1101fea1][fed56be2][47552282][ced4af66] [d4ad6fa9][eaf609ed][04eb1da6] New in 2017.11: + SPECIAL NOTES: + Main development branch changed from “nom” to “master” [f40babb8] + Fixes: + Fixed Lock.protect to no longer leak Proxies [be9e19ef] + Fixed R:I:JSON to handle recursive Exceptions [3cba6204] + Fixed .perl output of an empty Set/SetHash [af3624d4] + Made some attribute defaults throw NYI instead of silently ignoring [9f54bc98][0973b307][6dab5aad] + Fixed quote lang cache regression [ad16c6fb] + Improved stability by always setting up `$*PID` [a1866b7b] + Implemented hypered nodality for all methodcall variations [3c4041ea] + Fixed combinations with * endpoints [bdc73563] + Made Range.sum sensible for -∞/∞ endpoints [5eeb72a9][21efe96f] + Made multi sub(:@c is copy) { } work [be1e2879] + Ensured CLOSE phasers have correct outer chain [96557571] + Fixed segfault on Bag.new.pick(1) [fe1f8632] + Improved handling of %b spacing sprintf [b2fbf893] + Made .head and .tail only take WhateverCode [5a29a0ce] + Moved signal() handling to the timer worker queue [1bc9936a] + Fixed default Encoding::alternative-names [2f0da94c] + Various improvements to warnings and error reporting [142c1d65][fff43fd7] [c9360203][497e0582][ad7c97df][88d67516] + Additions: + Channel can now be closed with sub close() [91543fe3][ef84aafc] + my %h is (Set|SetHash|Bag|BagHash|Mix|MixHash) now DWIM [1949a2bc] [6ac2b15c][aab2b983][b6a4d5b5] + Implemented metamethod shorthand syntax [5c96d554] + Kernel.cpu-cores returning the number of CPU cores available [61af87bc] + Kernel.cpu-usage exposed basic CPU usage information [c4d373c5] + Telemetry module providing an easy interface to system state reporting [cbd4f212][273168d7][3e175c83][7f154fe2][3dfaa2ae][59a59be8][52440486] [b30916f3][b30916f3][f7d21b5d][ae1f0fda][f72ad227][4b4429cc][58249a52] [f51a3efc][8a0eb7fa][bc00894f][e95b02f1][ccbfaaa0][2f963b14][c1867ba1] [8e4d3248][0a809698][824a5dc2][dcf3e28c][0bdda086][a2ae00ed][86d541f4] [474feb09][5e7dfe52][3b4f0c6c][7144dc29][73e1faaa][cf1742dc][91e00e68] [96751ee8][7e00908c][d21c31e1][0dc4a0eb][c2baf95e][e1a1b8d8][b380230d] [fccc7515][1c2c7d84][2f12bea1][4ed91ed6][fea5612c][360eb228][9344d35d] [d5fc6cbb][3e4ef2e0][4d21ad67][0f2f0cd3][22939bc8][77142fdb][ab03b54c] [fc9e7241][948a3fa4][f8e1a5fa][17db03eb][14e2016c][2dcefa1c][345fbf5a] [b80d486c][3e4ccce9][86e9f44a][f87d8ef8][5f4b61b1][e5912337][de961b81] [d6f1077d][ba49b343][1aa83a78][06cbe9c2][246f4101][d6a3a7a1][88a9cb25] [9381ffbc] + Efficiency: + Made .sum on native num arrays 11x faster [b849622e] + Made INITTIME a bit faster [e00f705d] + Made interpolation of variables into regexes a bit faster [6bca84fa] [c93dc9e6][fa8bc549] + Made Buf ~ Blob about 7x faster, Blob ~ Blob 1.8x faster [8b47adad] + OS thread exhaustion is now handled more gracefully [fe799a98][57374490] [14fbb5e7][6d8ed287] + Other more general ThreadPoolScheduler improvements [e513f19d][6ac53e42] [2cd568f9][6bf58921][6de66df7][6aa150db][09e038cd][a7972a0c][260e4a3a] [a9b8854a][09492179][6959349e][697e4ecf][b386963a][5d0ccf73][bfcc43ec] [87e87202][92543962] + Minor IterationBuffer improvements [c15e80de] + Internal: + ThreadPoolScheduler now keeping internal statistics, e.g. for Telemetry [2c84f77e] + Thread now keeping internal statistics, e.g. for Telemetry [68b2891d] [77048b6a][cb4d8b66] + Changed how Int.new gets rid of mixins [6cb7ebfb] + Normalized proto bodies [0edd0cc9][102fbd51] + Set no_inline when the dispatcher is needed [c1df0b1b][0ff32c7f] + Various JIT-related changes [3bd756f5][0a029db6] + Repository cleanup [028b7d22][5baede59][825a8b0d][6ec6f1eb] + Various improvements for the JVM backend [ac738b98][b2725c12][4849c733] [d6cd0d2f][8b24bf5c][38f51db9][581edd58] New in 2017.10: + SPECIAL NOTES: + This release includes fixes to || alternation in :ratchet mode. Code that was unintentionally relying on buggy behavior (backtracking in :ratchet mode) may now produce unwanted results (namely will fail to match) [963a0f06] + Security: + Restricted dynamic lookup metasyntax in rx EVAL [1d63dfd2][2448195d] + Deprecations: + Deprecated .new on native types [9d9c7f9c][cc6c0558] + Deprecated :buffer `open` arg in favor of :out-buffer [f9c10c21] + Fixes: + Fixed Hash.perl to include Scalar indicators [47d6c66e] + Fixed :delete with lazy Arrays [0385b2aa] + Fixed sanitization of on-demand Supplies [93a66d75] + Fixed duplicate done/quit messages [9e179355] + Fixed non-blocking `react { await blah() }` [29863a0b] + Fixed issues with Int.new [dff7d9b2][0d2ca0d7][0834036d] + Fixed isa method on a subset [cee1be22] + Fixed Supply.zip to eager-shift its values [f9400d9a] + Fixed two utf8-c8 bugs [963a0f06] + Fixed infinite loop in .^roles of a class that does Rational [0961abe8] + Changed uniname to give better strings for non-unique names [9dba498f] + Fixed .push-all/.skip-all on SlippyIterators [41896b7b] + Fixed and improved `**` regex quantifier [681d6be9][4ca1fc3c] + Made cmp-ok to try harder to give useful description [8479a1ba] + Made List.ACCEPTS non-fatal for lazy iterables [1b9638e2] + Fixed some unspace parsing cases [11070e0f] + Fixed &chdir failing to respect :CWD attribute [4906a1de] + Fixed Blob.gist to trim its guts to 100 elements [ac8e5f43] + Improved .perl and .gist methods on Maps and Hashes [aad8991e] [39461368][381c4c3b] + Fixed explosion in IO::CatHandle.nl-out [83008443] + Fixed .pick and .roll on object hashes [12fcece4] + Made cmp-ok take its arguments raw [3684384d] + Fixed `is default(Mu)` on attributes [54507ac9] + Made Array.List fill holes with Nil [e1351219] + Fixed BagHash.grab with large values [975fcf6c] + Fixed .tail with large values [43e7b893] + Improved .gist of nodal methods [b6982e68][bb1df2cb] + Fixed IO::Pipe.close not always returning the Proc [74328278] + Fixed handling of type objects in set operators [8a88d149] + Fixed location of errors coming from Channel [82a38c29] + Fixed lockup when scheduling with degenerate delays [df01ad97][031f8cf7] + Fixed segfault in getlexdyn [4f5fc520][4c370072] + Fixed poor error with some slurpies with defaults [a92950fb] + Fixed Int.new to properly give a new object [e4a5bb17] + Fixed .STORE leaving behind elements on native arrays [a85c8d48] + Various async improvements [633a15b8][ef4d16fe][f53d3963] [26a9c313][9d903408][0d600a0c][54783920][e0e5e6fa][b16aba01] [d8890a82][73aeee6c][2a826238][3deda842][f58ac999][40c2d0cd] [c46de00f][e5c17462][6e42b37e][80f883bc][6af44f8d][e70969e3] [30462d76][97b11edd] + Various fixes and improvements to hyper/race [cc2a0643][2352efe5] [d43b3738][dfa230f7][1fdc84fe][cef4806f][ea51d19b][374ee3e2] [ad0dd8e7][41729e93][d74ba041][83676112][2580a0a6][cf1673d9] [7e9b9633][870eaa31][d37a19ea][da977785][270e7c8a][ee3f0f4f] [a042fd92] + Various improvements to warnings and error reporting [38186fcd] [cf95ce81][66c2d05f][a845ac3d][48a84d6a][bb45791c][279bae08] [6542bb80][5747bc71][c7a82d45][fb7abf06][ac97a401][64b001a1] [1ea3297b][56eef696][25c87d0d][5d3ebc09][de2b9ff7][084078e1] [3acde358][b3bb8c40][e611978f][12774237][33e113a2][9554a97c] + Additions: + Improved .Capture semantics on all core types [4ba12ff1] [bad9fefd][cd5864cf] + Added trim* subroutines taking Cool instance [5a19dffa] [691f8b7b][e01e5bc3] + Added Lock::Async [53dd776c][4a8038c2][85bdd38a][38896402][6170cb9d] + Added atomic reference op support on JVM backend [32e4a1de][59c4117f] + Added $*USAGE [0b15f672] + Added :bin parameter to IO::Handle.slurp [e2ec569b] + Added support for Bufs in &EVAL/&EVALFILE [6c928d61] + Added warning on typical precedence errors with infix:<..> [26bdc95c] + Added --repl-mode command line option [9ce896d8][20518454] [5c7bbea0][93e599db][de0533c4] + Implemented typed pointer increment and array dereference [3ca6554f][bc5fbfcb][2fba0ba0] + Added X::Numeric::CannotConvert exception type [2e726528] [b377de1c][f04bd1d6] + Added IO::Handle.out-buffer for controlling the buffer size [f9c10c21][765dd694] + Added IO::Path.parent(Int) for getting up more than one level [7bea3a2d][78d8d509] + Removals: + Removed $*MAIN-ALLOW-NAMED-ANYWHERE [9cb4b167] + Removed support for ornate parenthesis from quoting constructs [9ce896d8] + Renamed $*INITTIME to $*INIT-INSTANT according to the spec [6bdb2dd3][bd6c6403] + Build system: + Reworked REPL tests [be4d57de][338a0972][7c8a2739][f8edb829][1ce3a36d] + Various changes related to v6.d prep [7d830d5c][6cb810d2][36bc8e2d] [31cbdada][16f64182][50d2013d][f62950dc][dd8a6102] [36122f15][2a512f0c][03b1febc][edce8f53][c6ff787a] + Efficiency: + Made startup time up to 5 ms faster [48406db6][a09f5f21][bb5583ae] + Made chained ops up to 36x faster [a92d0369] + Made ≥, ≤, and ≠ unicode ops as fast as ascii equivalents [6ec21cb4][1af2a745][43c348a8][9ff2f98f][6ad06fad] + Made &infix: with Version:Ds 7.2x faster [1d9553f0] + Made &DEPRECATED 27% faster when vfrom is too large [145e3156] + Made Blob.gist 26x faster [20a99fc3] + Made Hash.gist 24% faster [69af24c4] + Made @a[42..*] 4.2x faster [456358e3] + Various NativeCall speedups [a06ebaf2][269fe7db][80d6b425] + Significantly faster interpolation of variables into regexes [1761540e][0a68a18f][d73d500b][1775259a][e8003c87] [4d3ccd83][04b171bd][317ae16c][dd880cad][2262cc47] + Other small optimizations [9d4a833b][6902c590][fb4eb666] [b9c98531][4fae0711][921db910][c91c4011][98fae3d8] [a462d0a2][16c2a157][5f6896bd][397692ac][476741e7] + Internal: + New JIT [2724a851][ff063e7b] + Better scheduler [d2eb7423][80b49320][340d8ed3][c50d35a9][9af5607d] [683037be][7c18112c][c285b489][b5605c2d][3b98fb9e][596611c8] [6f6e62ea][176a6fae][43b7cfde][59bfa5ab][27590e8b][e95eb42c] [2c4868b8] + Added RAKUDO_SCHEDULER_DEBUG_STATUS env var [de311f46] + Bumped libuv to the latest version [198b8497] + Reworked BUILDALL method autogeneration [9837687d][63cf246f] [5ad2fffe][31a03a41][eb9c3d4d][346dfeff][70ca505a][af2ab751] [5cd9197f][6824e192][7363f898][4959df3f][dd943ede][d3c48185] [371befe8][4d0ead24][92f239b5][7fa707db][d76af6aa][e513b857] [f80a8461][fcbd8adb][21788c89][e2f8a57d][b58bd8fb][0dd6af71] [f946bd35][cef3bf3e][92e51c3d][5144216f][ebd6440c] New in 2017.09: + Fixes: + Fixed NativeCall signature check for unsupported native types [4077842c] + Fixed .made called on a Match on which .make was never called [5db5b1db] + Fixed flattening of a typed hash [6cec6b72] + Fixed iterator on pairs with Mu's [a5014fd0] + Fixed Supply.batch with non-int elems and elems == 1 [98f9fffe][7d1ece80] + Improved error message on nameless postfix `.::` [5969f21e] + Fixed ::("GLOBAL") [1f6a782c] + Refined merging of one() junctions [79604a88] + Fixed error message with leaking variable name in FailGoal [ed4f6cc9] + Implemented missing Instant.Instant [51709e01] + Fixed thread safety issues with signal introspection [1f411693] + Fixed thread safety issues in the `signal` sub [13b6a33c] + Fixed thread safety of "foo{$x}bar" [59454b03] + Made Bool.enums consistent with Enumeration.enums [e7a58806] + Fixed doubled path issue in IO::Notification.watch-path [2362dfd6] + Disabled interactive REPL for non-TTY input [b6a60236] + Fix ignoremark and casechange operations of graphemes which begin with Unicode Prepend characters [7f526c1e] + Suppress line number in X::Package::Stubbed [edac1d68][7ba9b7cd] + Fixed race condition in Channel awaiter [b30ac08a] + Fixed NYI compilation of NativeCall sigs with optional params [1818de98] + Fixed missing deconts in nqp::eqaddr() tests [880b33e2] + Fixed Enumeration:D === Enumeration:D [8d938461] + Fixed non-blocking await when holding locks [f26d1e24] + Fixed non-blocking await-all to respect Slip [a137c0de] + Additions: + Added support for Str operations with Junctions [753c9a5e][7cd153f4] [95a70ca3][0b19baf0][d2f31bb7][e18291e2][8b5d283c] + Added support for Unicode 10 [64dd94c2] + Added complete Unicode Collation Algorithm implementation [9b42484a] [5f335065][ec18efa0] + .collate/coll/unicmp operators are no longer experimental (Note: $*COLLATION dynamic variable is still experimental) [5f335065] + Added Thread.is-initial-thread method [59a2056a] + Added output buffering for non-TTYs [44680029][4b02b8aa] + Made temp and let on a Failure throw it [80a3255b] + Made sure that open files are properly closed on exit [3c9cfdba] [97853564][347da8e5][dd8d0d89] + Implement pred() and succ() for the Enumeration role [2645a1e9] [8d442a52][8df53f34][43e41ec6][55aa7f28][f925c648][69dae1f3][2ad51a0f] + Added isa method to SubsetHOW [0704cd97] + Build system: + Made t/harness* use 6 TEST_JOBS by default [8019c15b] + Added --ignore-errors option to Configure.pl [0bc1c877][1da075f9] + Fixed `make test` without `make install` first [fb0b3eb5] + Made Configure.pl refuse to work without ExtUtils::Command [3f4a9ffa] + Fixed non-installed gdb/valgrind runners [4e3f0fca] + Efficiency: + Knuth-Morris-Pratt string search has been implemented for string indexing operations (needles between 2 and 8192 in length) [593fa5f8] + 1.5-2x speedup of most string operations involving strands [5ebbc5ba] + 2.5x speedup for eq() for comparing two flat strings (1.7-2x for others) + 9x speedup when indexing with a needle one grapheme in length [8a215876] + Made `Any ~ Str` and `Str ~ Any` about 25% faster [815faa35] + Made index and eqat operations 2x faster [5ebbc5ba] + Made all(@a), none(@a), one(@a) about 9x faster [51c3d86c] + Various improvements to BUILDPLAN and BUILDALLPLAN [7da0c215][0ca5ffa4] [760530a5][80e069a4][2574f883][b706b843][963b28d1][532f7092] + Made object creation 25% faster in some cases [62fd5093] + Internal: + Simplified setting up auto-threading [8a0f6ac1] + Streamlined Junction .defined, .Bool, .ACCEPTS [e8137b45] + Added --no-merge option to t/harness5 to pass through STDERR [4af1d95c] [84b40cf5] + Various improvements to INTERPOLATE [215a5fa7][ea57cbec][c6aacafd] [47439e69][4c25df74][fc632cd8] + Some minor cleanup on R:I.FirstNThenSinkAll [9dbc3c50] + Fixed --ll-exception to give full thread backtrace [0877278e] + Various heap analyzer API changes [bfee5a1e] + Streamlined exit / END phaser handling [1adacc72] + Made junction optimizer only look at candidates [4de858a5] + Assortment of low-level improvements [cbce6721][8a215876] [9b42484a][a4ce97ca] New in 2017.08: + Security: + Removed '.' and 'blib' from nqp's default module search paths [7e403724] [a331c804][1eeb9434] + Fixes: + Fixed IO::Path.new with 0 allomorph [45cd1a97] + Fixed erroneous closing of standard handles in DESTROY [0e578c4f] + Fixed handling of already existing .moarvm files during install [02667bd8] + Fixed --ll-exception [559c9255] + Fixed native callbacks called from other threads [b81597bd][1d941643] + Fixes concat with combining codepoints and repetitions [1f7fa683] + Fixed TODO test handling inside TODOed subtests [5b77a8aa] + Fixed formatting of X::Numeric::DivideByZero [3f99d1d0] + Fixed potential concat issue [3028466c] + Fixed null handling in List.join [9b5cce0a] + Fixed handling of default values in Array [12d7d5b4][2fb8c725] [0970ba33][ccaa0665] + Fixed error message for postcircumfix [ ] called with a type object [1a74a8c3] + Made .unique|repeated|squish return containers if applicable [51e59eeb] + Fixed string comparison issues [0564891e] + Fixed is-lazy of iterators created with R:I.FromIndexes [4db23064] + Fixed pull-one of iterators created with R:I.MonotonicIndexes [0c19f549] + Fixed compiler explosion with import statement [3e078d4d] + Fixed is default() trait on Attributes [a7d2ad1d][148ba7f2] + Made sure to stop socket reader on close [21359560] + Fixed missing tap closes in `whenever` [59f4123e] + Fixed missing tap closes in Supply [c59b9867] + Fixed potential memory leak of supply/react [5fcce673] + Fixed Mix.roll with fractional weights [a91ad2da] + Fixed reproducibility of RAKUDO_MODULE_DEBUG output [ec7bc25c] + Fixed Pair.WHICH [4f1322d0][c229022c] + Fixed ignoremark issues [7b81f0f9][a3b95749] + Fixed bad assumption about methods being closures [231cb3f5] + Stopped hllizing and sinking the result of .+, .* and .= method calls [2b8115f0] + Fixed native shaped array index to return l-value [61e1f4d5] + Fixed handling of test descriptions with new lines [9303a6e4] + Fixed wrongful escaping of `# SKIP` TAP instruction [eb529f14] + Fixed returned exit code when running a MAIN script with --help [fcf61f7b] + Various improvements to produced messages [9b31d1f5][998535ed] [6d3ba60c][365a1d08][cff51ea1] + Additions: + Added Buf subbuf-rw method [d7af4aeb] + Added ACCEPTS method to Map to compare Maps [45ca084e] + Treat :ver<...> like a version instead of a string [247fc649] + Improved Version smart match with different lengths [01dbd874] + Added new peer/socket host/port values in async sockets [76af17a8] + Added .Complex coercion method to Cool [c9de2184] + Added atomic operations (⚛) [9b1e252a][92707fac][c67d7dd5][ca8aafc1] + Build system: + Added --libdir option to Configure.pl [e4d65ac9] + Fixed quotes for windows [90a0f2e0] + Added 'install' test target on appveyor [9c0d40ab] + Efficiency: + Made `$s (-) $s (-) $s` on a 26 elem set about 1.5x faster [d7fcb314] + Made .Str and .perl 2x faster, .gist 1.4x faster (on a ^100 .Set) [5b6cd406] + Made .Str 30% faster, .perl 2x faster (on a ^100 .Bag) [21b9a720] + Made string concatenation more efficient [1f7fa683] + Made Mixy.roll up to 2x faster [d3f260c9][e2ca1ffa] + Made Baggy.roll up to 1.5 faster [e548b743] + Made Baggy.roll(N) about 1.5x faster [752a3265] + Made List.roll(*) about 1.5x faster [b147217e] + Made .unique(:as) 3% faster [a636fa8f] + Made .unique(:with) about 4x faster [47d9bd9b] + Made .unique(:with(&[===])) about 20% faster [26789cc7] + Made .unique(:as,:with) about 12x faster [acf9f90d] + Made .repeated(:with) about 4x faster [d9056207][c3851aee] + Made .repeated(:as,:with) about 12x faster [a3a3d1a9][32ce4afd] + Made .pairup about 1.5x faster [8f73d77b] + Made .codes 350% faster for short strings [3c6277c7][e051dd2d][4eff4919] + Various improvements made by using `is default` on attributes [08f705b9] [d0419a0f][9f5686ec][c8c5c712][40d5b27d][fb5db592][413b7116][fbdbe6fb] + Made Map eqv Map about 10% faster [15b2596e] + Decreased the cost of Supply block teardown [5d200f1e] + Saved 2 method calls per NativeCall call [aca4b941] + Speeded up NativeCall by replacing the subroutine code in setup [46ef1b5b][9a0afcbc] + Speeded up NativeCall subs by compiling specialized subroutine body [cd7dc4ce] + Internal: + Introduced Mixy!total-positive [f49c49bb][ccf6da9e] + Set debug_names of DefiniteHOW and CoercionHOW types [b22d189e][c040f1a6] + Simplified `infix:<(+)>(**@p)` and `infix:<(.)>(**@p)` [d82db18f][a0775e5e] + Ensured Scalar fetch can never return a NULL [2f5a6cd9] + Changed RAW-KEYS to create iterator early [710fa800] + Made sure Setty at least has a R:I:IterationSet type object [2dd5963c] + Made R:I:Mappy roles also take IterationSets [ab08bd04] + Made Setty.values use R:I.Mappy-values directly [250ae102] + Made R:I:Mappy* roles use a more abstract name for low-level hash [b7953d0d] + Retired R:Q:Quanty in favor of R:I:Mappy [d9055e80] + Introduced R:Q.RAW-VALUES-MAP [923c32e6] + Simplified the .Seq coercer [5d89cef9] + Changed Baggy to no longer use HLL hash internally [fb7ecb60] + Changed Supply implementation to use iteration, not recursion [ed87f998] + Added tests for native int as index to CArray [6cc858a0] + Simplified Hash creation for auto-vivification [84d052a0] + Various spesh, JIT, GC and other improvements [86cb1363][8bed4a67] [9658dd98][c1e41f9f][f590863e][4561c269][947376e2][1455a03b] + Introduced R:I.TwoValues [20e93d89][50f0508f] + Fixed some issues with R:I.OneValue [3ad33469] + Streamlined the standard Seq methods on Pair [30584dac] New in 2017.07: + Deprecations: + Deprecate `(<+)` ≼ `(>+)` ≽ in favor of `(<=)` ⊆ `(>=)` ⊇ [35cc7c0e] + Fixes: + Fixed perl6-debug-m debugger [6d4691fb] + Fixed finding proper %?RESOURCES for non-lib CURFS [71ffb164] + Fixed Mixy (-) Mixy behaviour for missing keys [4a37de7b] + Fixed Mixy.Setty coercion [b31b159c] + Fixed .perl of empty Bag and Mix [f72c97cb] + Fixed crash on dotless version literals given to `use` [fe7ea124] + Fixed various coercion related issues with (-) [19a1caa3] + Fixed Baggy/Mixy (-) Any/Iterable [a2133dbc] + Made sure we catch lazy lists on right of (-) and (|) [62d54c75][c16334e5] + Fixed mix() (-) `.Mix` [c727462c] + Fixed multi-dispatch with numeric literals and native types [1c0ed61a] + Fixed enum.Real coercion [ad9ed1cb][c226b71a] + Fixed (:e).Bag|Mix coercion using a Bool as a weight instead of just Int [d765f186] + Fixed outstanding issues with coercions done by (+) [c7922f14] + Fixed a data race in Proc::Async [2a8d1e7c] + Fixed `(&)`'s handling of lazy lists [cb06ebac] + Made set ops properly handle lazy lists [04746490][3058ba0d] + Made sure unhandled failures don't coerce QuantHashy [43fc751b] + Fixed sprintf octal format with precision [d7e10466] + Fixed 'is export' on constants assigned to routines [d067abf4] + Fixed Deprecation.report case where "removed" is set and "from" isn't [1b6d048b][e20817fb] + Fixed crash in coercers used with sigilless vars [c76d9324] + Made sure IO::Socket passes a list to set-line-separators [a2090821] + Prioritized .pm6 extension over .pm when files with both extensions exist [e1e9091f] + Fixed SEGV in Proc::Async.new [f6d4fbd2] + Fixed a few edge cases of (^) wrt QuantHash type permutations [b3916926] + Fixed regression in Map intialized with `<...>` having writable containers [4894a75d] + Fixed overflow in uniprop lookups [4f5a1e20] + Made improvements to segmentation of Emoji w/ GCB=Other [4f5a1e20] + Fixed break after ZWJ for Emoji=True + GCB=Other [4f5a1e20] + Removed faulty Iterable (^) Iterable candidate [4c91b522] + Fixed faulty Map (^) Map candidate [8afbfe6f] + Fixed inconsistent semantics in `.Bag (<) .Bag` [4b8bc617] + Fixed unwanted de-Bool during optimization of some constructs [83e15701] + Fixed handling of actions in .refine_slang [c40a2122] + Fixed baggy semantics of Mix `(<)` Mix [a526d839] + Fixed semantics of `mix() (^) (a=>-42).Mix` [8d5f3324] + Fixed precomp deps left open when up-to-date check failed [37250ed5] + Properly implemented Baggy semantics for `(<=)` and `(<)` [4101581d][c6cc1a7a] + Fixed handling of `[(^)]` with absentee keys and Mixies correctly [0c02f93e] + Fixed faulty dynamic cache invalidation in continuations [d74ebd82] + Fixed issues with calling `infix:<⊖>` with more than 2 params [aee4a46c] + Fixed Proc :merge [c86090e3] + Made sure we call done/quit on all taps [32b72cda] + Ensured empty string PERL6LIB var does not get interpreted as `.` [075ddefa] + Fixed floating point noise in denominator of Rat literals [f6e25b54] + Fixed .getc and .readchars reading too much at EOF [80bbfcdd][49f555a2][f6279c34] + Fixed SEGV and memory leak in MoarVM that impacted parameter destructuring [f6279c34] + Made `exit()` coerce its argument to Int [caa9ef81] + Made IO::Handle.new coerce `:path` to IO [fec90956] + Various improvements to warnings and error reporting [bde28209][06379113][d5d3bd27] [d39f7b9a][1dda8622][d74ebd82][88acdbb7] + Additions: + Added full Unicode 9.0 and Emoji 4.0 text segmentation support [c40a2122] + Implemented tentative API for custom user encoder support [d0995f68][5ab4036e] + Implemented experimental buffering support in IO::Handle [86e7b2bd] + Collation object updated to work with new unicmp_s semantics [4da85879][47678077] + Allow getting native descriptor in Proc::Async [82301128] + Re-worked Proc so :in($p1.out) will plumb file descriptors [6dae179a][abfd7d95] + Added plumbing stdout/stderr to stdin in Proc::Async [11b02d2c] + Allow for "does Rational" and "does Rational[foo]" [41ed2c03] + Added `%*SUB-MAIN-OPTS` [40b0169d][da6c6584] + Implemented baggy semantics of `(<)` and `(<=)` [75797af3] + Added perl6-lldb-m for debugging MoarVM on the LLVM debugger [00dc4947] + Efficiency: + Made Baggy (-) Baggy about 100x faster [2a88c20c] + Made [(^)] Set, Set, Set about 35x times faster [0cdd6c25] + Made Setty (-) Setty at least 20x faster [10f840fc] + Made .BUILD/.TWEAK calls 15x faster when ther are no args to .new [43c1767b] + Made (Bag|Mix).WHICH about 8x faster [b2d2bf59][c585f370][d8c94353] + Made Map (+) Map between 3x and 6x faster [495fb5f8] + Made Baggy eqv Baggy upto 3.5x faster [49b1b03b] + Made Setty.ACCEPTS(Setty) about 3.5x faster [93d81d61][48c18f58][1ab4fd80] + Made Map.(Bag|Mix) 2.5x to 5x faster [72e5d614] + Made Setty eqv Setty between 2x and 3.5x faster [25047984] + Made Setty (-) Map between 2x and 3x faster [9936a3be] + Made Setty (-) Iterable about 3.5x faster [b66d8783] + Made Str.subst(Str,Str) upto 3x faster [327c8409] + Made Setty (+) Map about 2.5x faster [201a0bfb] + Made Any (-) Map|Iterable about 2x faster [e4f3358f] + Made Mix (+) Mix about 1.5x faster [d1838461] + Made Baggy (-) Baggy about 1.5x faster [36823ab1] + Made starting of installed scripts 46% faster [92f8abe0][4693ec86] + Made Baggy.keys about 40% faster [c65652d8] + Made Iterable (+) Iterable about 20% faster [38509227] + Made Setty (-) Setty about 20% faster [bacaa051] + Made internal nqp::index op used by many string operations 16% faster [4f5a1e20] + Made Setty.(Bag|Mix) about 5% faster [ae4c04ce] + Made Str:D (elem) Map 3%-10% faster [099a84b4] + Made Stash.AT-KEY a few percent faster [2ce5b678] + Gave Nil methods a much more efficient "take any args" signature [9a2127f2] + Made Exception messages created only when gisting [1a4d9493] + Made Any.tail() use iterator's .count-only if available [9c04dfc4] + Reduced cases when string concatenation needs renormalization [c40a2122] + Improve the speed of Unicode normalization [c40a2122] + Made all non-Texas set operators aliases where possible [f6025eb9] + Simplified `infix:<(|)>(**@)` candidate [46e009bf] + Fixed various VM errors in CallFrame. [e2ec7bdf] + Improved speed of `try` when exceptions are caught [1a4d9493] + Assorted internal improvements to CPU/memory use [3d2a521c][5a80412c][c4e14731][19be8722] [f03a176c][fff43337][f71cbed4][79ce1a99][640404fc][b4561229][30619e8d][9d14a724][a2a0d5c6] [66aef589][a95c70bd][d7e10466][73c3bcc6][7f109ed7][80b3e89b][05c255c1][2fb109f1][c0eeebde] New in 2017.06: + Fixes: + Fixed incorrect auto-boxing to native candidates in multi dispatch [ccfa5e51] + `^Inf .elems` now fails instead of returning Inf [20310d7d] + Made IO::Handle.print/.put signature consistent [613bdcf8] + Made sure that Setty:U is treated like any type object [ad8fa552] + Fixed behaviour of set() `(<)` X.Set [e6506bfd] + Made sure VM.osname always returns lowercase string [122aca1c] + Fixed List.Capture with non-Str-key Pairs [5b25836f] + Fixed inconsistency in .Int on zero-denominator Rats [6dbe85ed] + Fixed crash in smartmatch of non-Numerics with Numeric [43b03fc6] + Fixed occasional Windows file permission issues with installation of modules [8ec4dc5b] + Fixed crash in `X` operator used with empty List [9494cbd3] + Fixed spurious warnings/crash with certain `=para` Pod blocks [5e339345][807d30c2] + Fixed output of `CArray[Pointer].^shortname` [1ed284e2] + Fixed crash in Test.pm6's bail-out when used before tests [cb827606] + Fixed object Hash -> Set coercion failing to consider values [160de7e6] + Fixed Seq.perl for containerized Seqs [b22383fe] + Fixed Proc::Async.new not slurping first positional [92c187d2] + Fixed Proc::Async.kill failing to kill sometimes [99421d4c] + Fixed hang in deepmap with Iterable type objects [252dbf3a] + Fixed crash when Junctioning empty array after .elems'ing it [aa368421] + Fixed crashes/LTA errors in Junction.new w/wrong args [61ecfd51] + Fixed `infix:` calling .defined one too many times [77d3c546] + Made `fail` re-arm handled Failures given as arguments [64e898f9] + Fixed output of IO::Special.perl [7344a3d2] + Made IO::Handle.open with path '-'.IO properly handle non-default `$*OUT`/`$*ERR` [3755c0e7] + Fixed Promise.then to not lose dynamic variables [36bc4102] + Fixed allomorph smartmatching with Str values [8a0b7460] + Fixed IO::Path.extension with Range `:parts` when endpoints were excluded [8efffb1d] + Made coercion of lazy Iterable to Setty fail [211063c7] + Made Mixy/Baggy.new-from-pairs with a lazy Iterable fail [c9dfa840][e5719d6a] + Fixed byte.Range returning an incorrect range [af85d538] + Fixed edge-cases (e.g. Nan/Inf) in Mixy.roll [fb9e1a87] + Made sure that Mixy types only take Real values [7fa85682] + Fixed incorrect results in ignorecase+ignoremark regex matches [1ac7996a] + Fixed issues with `$*CWD` inside &indir when using relative paths [9151ebaa][326faed6] + Fixed crash with Seq:U.List [5c56e9e7] + Fixed various issues with Map `(<=)` Map [e1563a76] + Fixed various issues with Map `(<)` Map [b03d8044] + Fixed 4 cases of crashes with labeled `next` [3b67b4ac] + Made Proc.status/Numeric/Bool/exitcode/sink wait for Proc to be done [e4468c61] + Fixed Pair.perl with type-object components [c6b03c45] + Fixed bad shell quoting in Proc::Async on Windows [e9b30933] + Fixed crash when RAKUDO_MODULE_DEBUG was set to a non-numeric value [96e6b338] + Fixed Kernel.signals on OpenBSD [9435c14e] + Various improvements to warnings and error reporting [1c16bf2e][85bef661][e22508d4] [b6694bd0][ec51e73f][f2fca0c8][f9403b3b][86fe766a][c81b7a4b][7cf01296][fb7dd8a4] [7783fcab][9bf3ea3a][02614f64][e538cbc5][86c3d7aa][c2497234][b0a1b6c3][97298aca] [69b1b6c8][5e037736][e824266f] + Additions: + Implemented IO::CatHandle [5227828a] + Implemented support for merged STDOUT/ERR output Proc and Proc::Async [ac31c5df][05d8b883] + Implemented Complex.cis [a243063c] + Implemented Failure.self [0a100825] + Implemented Any.Seq [5c56e9e7] + Improved consistently to have .Supply on a type object it as Supply [52d39576] + Slightly changed IO::Handle.encoding; Nil now means 'bin' [95b4e5d5][27f09e9d][9c0362cb][51c73ba0] + Gave `(<=)` Baggy and Mixy semantics for Bags/Mixes [b1d83f9d] + Makde `use lib` accept IO::Path objects [3ff29d42] + Added IO::Socket.nl-out attribute [12d31e36] + Added Setty.pickpairs [e3695b16] + Added Str type constraints to IO::Spec::Win32 .join and .catpath [232cf190] + Made it possible to call &prompt with no args [0646d3fa] + Made IO::Socket::INET update localport if it binds on port 0 [bc98e671] + Improved support for Unicode properties `Prepend` and `Regional Indicator` [56e71d59] + Gave IO::Handle.read default value for size arg [b7150ae1][aa9516be] + Added default output for Mu.WHY [23d6d42d][cc4d9091] + Added support for binding to standard handles in Proc::Async [6b2967d7] + [JVM] Implemented Proc::Async [5154b620] + Removals: + Removed TAP.pm6 from core. Available as `TAP::Harness` in the ecosystem [ae891f93] + Removed all methods from IO::ArgFiles and made it a subclass of IO::CatHandle [f539a624] + Removed IO::Socket::INET.ins [75693b0b] + Removed NYI IO::Socket.poll method [cb404c43] + Efficiency: + Made Any (elem) Iterable:D between 1.3x and 110x faster [e65800a8] + Made `(<=)` and `(>=)` about 50x faster [32eb285f] + Made IO::Spec::Win32.catpath 47x faster [7d6fa739] + Made `(<)` and `(>)` about 40x faster [431ed4e3] + Made IO::Spec::Win32.join 26x faster [494659a1] + Made IO::Spec::Win32.splitdir 25x faster [2816ef71] + Made Map `(<=)` Map about 15x faster [0cb4df44] + Made Map `(<)` Map about 15x faster [f6f54dcf] + Made Str.subst(Str) without :g 14x faster [0331fb9d] + Made Setty.roll about 11x faster [e6192ca8] + Made IO::Spec::Unix.splitdir 7.7x faster [6ca702fa] + Made invocation of Proc.spawn and &run 4.6x faster [93524fb9] + Made SetHash.grab(N) about 3.5x faster [67292a1e] + Made SetHash.grabpairs(N) about 3.5x faster [0e9ee0d1] + Made invocation of Blob.decode() 2.7x faster [222b4083] + Made Baggy/Mixy.(hash|Hash) about 2.5x as fast (on a 26 elem Bag/Mix) [06cd0bc3] + Made Setty.roll(N) about 2x faster [18dd0741] + Made Setty.pick about 2x faster [10e9c8ba] + Made Set.new(@a) about 2x faster [b55a0f16] + Made Baggy.new(@a) about 2x faster [11f27a30] + Made SetHash.grab about 1.8x faster [d28540be] + Made Str:D (elem) Map:D 1.3x faster [b43303f2] + Made `$*KERNEL.signal` 64% faster, overall [79b8ab9d][01d948d2] + Made Iterable.Bag about 60% faster [f2876281] + Made Iterable.Mix(|Hash) about 40% faster [bba6de5f] + Made Setty.pick(N) about 30% faster [071c88cb] + Made StrDistance 25% faster [2e041b06][9185fa2c] + Made (Bag|Mix).AT-KEY about 10% faster [b43db636] + Made `infix:<∉>` about 10% faster [abfb52be] + Made Str.starts-with 8% faster [7ecb59dc] + Made .Set, .Bag, and .Mix coercers a few percent faster [8791b447][4139b96e][8c7e4e51] + Fixed lost optimization of for ^N {}; now its 3x faster [46b11f54] + Made &DYNAMIC about 1% faster [74242e55] + Made ^Inf marginally faster [446dc190] + Assorted internal improvements to CPU/memory use [2efd812c][07bff0e5][1369632f][2ac120ce] [539415cf][5ebf307a][ed07b2c3][0104a439][a91a2e4d][bd292225][8ff980e7][7edf9da6][241d2925] [7e8bac9b][3363c7b9][6f932687][e9b30933][51b63bf9][57553386][1171e67e] + Internal: + Refactored handle encoding. Non-binary read methods now throw when used on handles in binary mode [41bb1372][b3cd299e] + Refactored socket encoding [8ee383e3] + Made syncronous IO to not use libuv [05f3e9a0] + Made syncronous sockets to not use libuv [6f202fbe] + Moved encoding and line ending bits to IO::Socket [d6fd2491] + Moved get and lines to IO::Socket role [9cec9408] + IO::Path.Int method removed; handled by Cool.Int now [d13d9c2e] + Re-implemented Proc in terms of Proc::Async [ac31c5df] New in 2017.05: + Fixes: + Made Promise subclass-friendly [a61746fe][a7c23aa2] + Fixed unwanted warnings on Windows with `$*HOME` [4ae7c697] + Fixed handling of `<1` and NaN in Baggy.pick/.roll [40e4e132][e5d2c6f6] + Fixed NaN and empty Baggy handling with Baggy.pick/.(pick|grab)pairs [abc0509c][22ba2317][22ba2317][44c89ed9] + Fixed SetHash.(iterator|values|kv) to have same semantics as (Bag|Mix)Hashes [e5b5d346][e9ae0047] + Fixed off-by-one in `lines` routines when `:close` is given [bf399380] + Fixed `$*CWD` inside IO::Path.dir's :test Callable [b2a64a13] + Fixed regression with IO::Handle.close's value sunked in .slurp [84eb3599] + Made spaces and quotes escaped in MAIN() usage message [22bd2bbd] + Fixed dispatch hang in Str.match: Nil [1c21974d] + Made &slurp/&spurt/&get/&getc/&close `fail` instead of throwing [6fa4bbcb] + Made &lines/&words/&slurp/&spurt/&get/&getc/&close pass all of the given arguments to the methods they use [6fa4bbcb][34b58d1b] + Fixed handling of 8 digit hex literals in 32-bit systems [01dd2138] + Fixed $?BITS on 32-bit systems [d057efdb] + Fixed time stamp check interfering with packaging modules [ff4a034d] + Made perl6 usage message print to STDERR instead of STDOUT when an invalid cmd line option is used [2a6d3d1e] + Made sure Setty (^) Setty always returns a Set [4e37e7c5] + Fixed typed optional Array and Hash parameters [9f5c8e94][6231ecb0] + Made `$*HOME` default to Nil, not Any [7412184f] + Fixed crash on ^D to `$*IN` when reading with IO::ArgFiles [4b8fd4a4] + Fixed REPL crash when `$*HOME` is not set [1b0e41f9] + Fixed Test.pm6's &like crash when a non-Str is passed [ba3cf4e5] + Fixed Seq.perl for cached Seqs [54f50956] + Fixed crash in `eqv`, .iterator, .Slip, .join, .List, .list, .eager, .Array, .is-lazy, and .sink on cached Seqs [400f4ec8][c13d89b3] + Fixed role mixins with native attrs with defaults [6179ab34] + Fixed `andthen`-`orelse` chaining [37316f82][e1994d94][1ed76a90] + Fixed issues when `Empty` passed as arg to `andthen`/`notandthen` or postfix `with`/`without` [3c8822e8][e1994d94][1ed76a90][fdb2b2ab] + Fixed error in Iterable (+) Iterable if the Iterable contained Pairs [3d99321f] + Fixed .perl for IO::Path and subclasses [134efd83] + Fixed .IO on :U of IO::Path subclasses [69320e7f] + Fixed SetHash retaining the containers [551b8a69] + Fixed (Bag|Mix)Hash.values/.iterator/.pairs/.kv failing to check validity of assigned values [c1bd844e][0e0ac2fb][0338ce46][14e09532][c61c7f88] + Fixed 'ambiguous call' error in `eqv` and `cmp` with mixed allomorphs [e5870c11] + Fixed IO::Path.copy/move when source/target are same [08a8075f] + Fixed premature deletion of bin wrappers [c7aef59a] + Fixed ghost elements remaining when popping off an Array [c776c087] + Fixed rotate on empty list [b5c14bd1] + Fixed hang in .join/.gist in certain cases of flat slurpy positional arg [5e6b3878] + Fixed Str.comb(Int, $limit) for `<1` combers [a9959666] + Fixed Str.comb with empty-string comber [aa711c14] + Fixed unwanted split on read-chunk-size boundaries in IO::Handle.comb/.split by making them .slurp the entire file [973338a6] + Fixed crash in BagHash.pickpairs when given negative arguments [08b5c101] + Fixed incorrect results in `+>` for large negative numbers [ef29bb9f][66e8e72c] + Fixed is-deeply for Junction args [1c4d8451][dc5eece9] + Fixed crash in is-deeply when Seq type objects are given [f3f99b3a] + Fixed dispatch infiniloop in (elem) and (cont) [407bce1d] + Fixed issues with combiners on `/` in IO::Spec::Unix.is-absolute [f4309de9] + Fixed issues with combiners on `/` in IO::Spec::Win32.rel2abs [c96727aa] + Fixed crash when setting .nl-in/.encoding on unopened IO::Handle [06d8800e][70038855] + Made IO::Handle.open respect attribute values [95e49dcb] + Made IO::Path.parts a Map instead of Hash [9021a486] + Made IO::Spec::Unix.path consistently return a Seq in all cases [05479793] + Fixed IO::Spec::Win32.path failing to flatten resultant Seq [8992af13][816b2d4b] + Fixed IO::Handle.perl.EVAL round-trip [a282b8c8] + Made IO::Path.resolve set CWD to $!SPEC.dir-sep [a4127884] + Fixed unwanted padding Nils from Str.words($limit) [4bcf84a2] + Various improvements to warnings and error reporting [9962d2b6][9ed89d94][d87de586][6d28d788][8511081f][4f9fa6b0][12cec7a7][d1a81b30] [85c54db8][fc5698bd][1cf7ccba][0bd39de2][12c50b63] + Additions: + Made user grammars work more like real classes [db42d62f] + Loading deps no longer uses file timestamps [ca0a7439] + Changed type constraint on &slurp/&dir from Cool:D to IO() [6fa4bbcb][d0cd1372] + Added IO::Handle candidate for &spurt [6fa4bbcb] + Added Pair.Pair method [bd9e5730] + Added Seq.Capture method (makes it possible to unpack Seqs in signatures) [98e137b1] + Added QuantHash.Capture [5e74017d] + Made `(^)`, `(+)`, `(.)` multis [8b8f66c0][44893e6a][48ce8701] + Added primary and foreign key constraints and renamed some fields in profiler's SQL output [c776c087] + Added WhateverCode candidates to Map.roll and (Bag|Mix)Hash.grabpairs [1e58925c][2bda2703] + Made Baggy.roll/.pick/.grab Int-ify their $count arguments [31be5128] + Added big int support for `+<` and `+>` ops [6409ee58][ef29bb9f][66e8e72c] + Made Date.clone take a formatter [a9a161ae] + Added `$*DISTRO` and `$*KERNEL` information to `perl6 -V` output [94c4e7bf][b6496eda] + Made `perl6 -V` sort its output [85230d06] + Added support for `$*KERNEL.archname` [0c46aff2] + Added `$*PERL.compiler.verbose-config` [85230d06][c3b47280] + Added typed exceptions to IO::Handle.flush [b43ed18f] + Added support for building the dist in install-dist.pl [4298dd5e] + Simplified getting osname from VM.config [7c8f8d3e][18706852] + Added VM.osname as a rough equivalent to Perl 5's `$^O` [e79d7498][505ee33d] + Now show `System::Info` information with -V if module is installed [5feb3906][541597b8] + Made IO::Handle.encoding settable via .new [7e9496dd] + Added Proc::Async.ready [d76206e7] + Implemented $limit arg for IO::Handle.words [84502dc2] + Removals: + Removed IO::Handle.iterator that existed for a couple of releases [eb8d006e] + Removed unspecced Seq.is-ready method [59f6f485] + Removed broken Exception.resumable method [f2af3db1] + Removed argument forwarding from Instant.DateTime coercer [6bb1b5b4] + Removed IO::Path.dir's :absolute and :Str arguments [aa72bdef] + Removed .tell info in IO::Handle.gist [276d4a7e] + Removed `:directory` from Map returned by `IO::Spec::*.split` [6ed14ef6] + Efficiency: + Made Mixy (^) Mixy about 150x faster [9f0b1218][bea8ac68] + Made Baggy (^) Baggy about 150x faster [ee459360] + Made IO::Spec::Win32.is-absolute about 63x faster [c6fd7361] + Made Map (^) Map about 50x faster [13924397] + Made Setty (+) Setty about 45x faster [14568496] + Made Baggy (+) Baggy about 50x faster [ab5cd11b] + Made Mixy (+) Mixy about 45x faster [92df7d5c] + Made Setty (.) Setty about 35x faster [1562da07] + Made Baggy (.) Baggy about 35x faster [3f97831d] + Made Mixy (.) Mixy about 35x faster [226cd8b6] + Made IO::Spec::Win32.path 26x faster [8992af13][816b2d4b] + Made IO::Spec::Cygwin.is-absolute 21x faster [48cf0e67] + Made Setty (^) Setty about 20x faster [d92a2123] + Made Iterable (+) Iterable about 18x faster [6de08933] + Made Map.pick()/roll() about 7x faster [2fb6872b] + Made Baggy.pickpairs about 5x faster [c0270c66] + Made IO::Spec::Unix.path 4.6x faster [05479793] + Made (Bag|Mix)Hash.grabpairs/.grabpairs(N) about 4x faster [911b43de][3670720a] + Made Str.words/.lines with $limit arg lazy and up to 3.6x faster [4bcf84a2] + Made Iterable (^) Iterable about 3.5x faster [b2332816] + Made Map.roll(N) up to 3x faster [c74d37ba] + Made Mixy.roll(N) about 3x faster [b9222061] + Made IO::Spec::Unix.rel2abs 2.9x faster [277b6e5b] + Made Map (+) Map about 2.5x faster [a85b654d] + Made Map (.) Map about 2.5x faster [9c9ebd0b] + Made Iterable (.) Iterable 2.5x faster [3d99321f] + Made Mix.roll() about 2.5x faster [a2602b9c] + Made `notandthen` and postfix `without` 2.5x faster [fdb2b2ab] + Made `andthen` and postfix `with` 2.5x faster [3c8822e8] + Made `orelse` 2.4x faster [37316f82] + Made IO::Path.is-relative about 2.1x faster [ff23416b] + Made Baggy.pickpairs(N) about 2x faster [0f21f511] + Made 1-arg IO::Handle.say up to 2x faster [76af5367] + Made BagHash.roll 1.7x faster [07feca67] + Made MixHash.total 1.4x faster [5e459bce][4c813666] + Made IO::Spec::Win32.split about 82% faster [894ba82d] + Made IO::Path.is-absolute about 80% faster [74680d44] + Made `&say(**@args)` up to 70% faster [204ea59b] + Made `&put(**@args)` up to 70% faster [6d7fc8e6] + Made `+>` about 55% faster [ef29bb9f] + Made `<+` about 12% faster [6409ee58] + Made IO::Spec::Unix.join about 40% faster [d2726676] + Made IO::Handle.put($x) about 5%-35% faster [50429b13] + Made BagHash.grab 30% faster [2df7060c] + Made IO::Path.dir up to 23% faster [aa72bdef] + Made Baggy.roll about 15% faster [9e7d0b36] + Made BagHash.grab(N) about 10% faster [87a95fc1] + Made Baggy.EXISTS-KEY about 8% faster [451a2380] + Made List.AT-POS about 5% faster for common path [736be4d4] + Made IO::Spec::Win32.rel2abs 6% faster [c96727aa] + Made Hash.EXISTS-KEY about 1% faster [eb1ce414] + Micro-optimized reg/init dynamic [1d6a0023] + Speeded up module loading a bit by persisting source checksum [3829488f] + Assorted internal improvements to CPU/memory use [89f2ae4f][3c7cd933][aa23a91f] [7c531835][ccedd6b1][3dc08553][514124e3][146f3a39][9cb26c09][afd24a88][f2fc5674] [6641df83][d6cf518c][f18d0dc0][1a920dcc][bdb5391b][b1fbd133][7404c706][762fd239] [fec547a1][5ec8a464][8088f080][45305eca][e7087f29][f4017c32][3f7d1334][6ea2f12e] [788e6de6][3fb3c27e][09506dc8] New in 2017.04.3: + Fixes: + Fix REPL history file failure with Linoise on [6c66c1b88c] + Fix `)>` to work whenever .MATCH is called [2f143f476d][0150c7b8c5] + Fixed issues with false positive case-insensitive regex matches when only start of string and end of string match [f756b4b54f][25048824c8] New in 2017.04.2: + Fixes: + Fix "Cannot invoke this object (REPR: Null; VMNull)" [4a560aa] + Improve relations between %?RESOURCES and Native trait [647abfe] + Support all appropriate IO::Path methods on Distribution::Resources [f4f1c42] New in 2017.04.1: + Fixes: + Removed unwanted debugging output [c9ebfc20] + Reverted 9d8e391 IO::Path.resolve fix for JVM, as it does not yet know how to do utf8-c8 decode [88a6facc] New in 2017.04 + SPECIAL NOTES: + There are two Upgrade Notifications for this release: - Part 1: http://rakudo.org/2017/04/02/upgrade - Part 2: http://rakudo.org/2017/04/03/part-2 - Part 3: http://rakudo.org/2017/04/17/final-notes + Changes for Texas operators listed in this release also apply to their fancy Unicode alternatives. https://docs.perl6.org/language/unicode_texas.html + Fixes: + Fixed infinite loop due to wrong args in many Cool methods [8c88b0c] + Fixed failure to distinguish rw args in Capture.WHICH [4605d52] + Fixed regression in .rotor with negative gaps [5917b81] + Fixed a 1-arg-no-phasers path in .map stopping after 1 value [86dc997] + Fixed containerization issues in listinfix metaops [16f950b] + Fixed Inline::Perl5 detection in t/harness6 [b15cd20] + Fixed incorrect number of tests run in t/harness6 [8766370] + Fixed t/harness5 incorrectly failing NOTESTS runs [f28c515] + Fixed crash in S/// and s/// for some combinations of adverbs [43e0902] + Fixed crash when doing EVAL from multiple threads [218f8c4] + Fixed errors in concatenations of Hangul script with \r\n in it [a123eb3] + Fixed case insensitive string compare with synthetics in haystack [e87179d] + Fixed case insensitive regex with synthetics [666ce35] + Fixed issues with foreign lang cursor without a name [ffeb896] + Fixed introspection of attributes with explicitly typed keys [a6ba994] + Fixed spurious warnings in define_slang [666ce35] + Fixed issues in :exists with multidimensional hash slice lookup [a758c0b] + Fixed unwanted overflow when too-large values were *assigned* to native attributes [666ce35] + Fixed failure to set $/ by matching routines when used in loops [a62b221] + Fixed handling of Baggy (|) Mixy, Mixy (|) Baggy in dispatch [48619f8] + Fixed Allocations tab in --profile output [c16cdb2c] + Made `is equiv` to not propagate operator's `assoc` value [f9f0883] + Made Code.ACCEPTS pass take its parameter `is raw` [c0eb9bd] + Fixed SEGV in IO::Pipe.t [3e275dd] + Made `dynamic` default to False instead of Nil on Scalar/Hash/Array [28a6e80] + [IO] Fixed wrong results in IO::Path.resolve for paths with combiners on `/` [9d8e391] + [IO] Fixed a crash when using Whatever limit in in IO::Pipe.lines [0c62815] + [IO] Fixed crash in smartmatch of Cool ~~ IO::Path for some Cools [c360ac2] + [IO] Made IO::Path:: subclasses instantiate a subclass, not IO::Path [a0b82ed] + [IO] Fixed crash when very large files were read with IO::Path.slurp [d0924f1] + [IO] Ensured IO::Handle.Str coerced .path to Str [1f689a9] + [IO] Fixed crash when binary slurping large files with &slurp/IO::Path.slurp [756877e] + [IO] Fixed occasional zero byte read when binary slurping files [756877e] + [IO] IO::Handle.symlink/.link now take name of the link as argument; the invocant is the target [8c09c84] + Various improvements to warnings and error reporting [6a77cda][d90c6bf][f9968b3] [27f5469][41ac4b4][75c3f29][87fe800][7ba2fc5][093bb89][d3c93ad][6ee71c2][490ffd1][7112a08] + Additions: + Gave `Thread` a numeric representation [e5528dd] + Made Any.maxpairs/.minpairs use `cmp` and return Seq [5927186] + Made `Parameter` object available in bind error [0f9f000] + Added typed exception for parameter constraint failure [f1cd8e3] + Allowed nativesize to be unset in NativeHOW, but still compose [af4aae2][932b59f] + Made sure that Baggy and Setty handle bare objects [7433947][e660a57] + Added experimental coverage reporter tool with MoarVM backend (so far works with reports for core code; more work needed to expand for wider use) [932b59f][d0924f1] + Made it possible to assign to system dynamic vars on initialization [1b9d53c] + Broadened acceptance in `(<+)`/`(>+)`: all Quanthashes can be considered Settys and all Baggys can be considered Mixys [1ebeeb3] + Implemented `skip-all` option in &plan in Test.pm [14b6d5f] + Made it possible to use `.head(*-N)` (all but last N) [1fea495] + Made it possible to use `.tail(*-N)` (all but first N) [188b7b1] + Allowed `*` and `Inf` args to Array|List.tail [1b34ea6] + Made .Set, .SetHash, .Mix, .MixHash, .Bag, and .BagHash nodal [189615c][3e412b9][7025050] + Made `infix:<(&)>` a multi and added basic candidates [e8cb9a2] + Made `(-)` a multi [495f970] + Added default descriptions for Test.pm's `like`, `unlike`, and `use-ok` [4b915f7] + Made `is rw` on optional params throw a typed exception instead of generic one [8370675] + Made it possible to pass IO::Path to `is native` trait [9984080] + Implemented bypass of dependency resolution in the Staging repo via RAKUDO_RERESOLVE_DEPENDENCIES env var [5b862a3][d4d6a99][2a0a2d3] + Merged Cursor into Match; in preparation of for future removal of Cursor [b7c036c][cdd625b] + [IO] Added more powerful features to IO::Path.extension [b1e7a01][15a25da] + [IO] Added IO::Path.add [40217ed][0b5a41b] + [IO] Implemented IO::Path.sibling [8bacad8] + [IO] Implemented IO::Handle.lock [214198b] + [IO] Made IO::Path throw when path contains NUL byte [e681498] + [IO] Implemented `:completely` param in IO::Path.resolve [6a8d63d][51e4629] + [IO] Implemented IO::Handle.slurp [f1b4af7] + [IO] Made IO::Path.dir a `multi` method [fbe7ace] + [IO] `$*TMPDIR` now has a container, so it's possible to `temp` it [b62d1a7] + [IO] Allowed IO::Path.z to be called on directories, to mirror .s [b6838ee] + [IO] Implemented IO::Handle.spurt [a5800a1] + [IO] Implemented &indir [a0ef2ed][ca1acb7] + [IO] Implemented IO::Path.concat-with [966a7e3] + [IO] Made `&*chdir` return new `$*CWD` [5464b82] + [IO] Expanded accepted arguments from Cool to IO() in &spurt [099512b] + [IO] Implemented :parent in IO::Spec::Cygwin.canonpath [0c8bef5] + [IO] Made IO::Path.lines lazy again (reversal from last release) [90da80f] + [IO] Re-added :close param to IO::Handle.lines (reversal from last release) [90da80f] + [IO] IO::Handle.lines($limit, :close) now closes the handle when $limit is reached [90da80f] + [IO] Added IO::Pipe.path and .IO methods to return an IO::Path type object [d46e8df] + [IO] Made IO::Path.mkdir return invocant on success [c01ebea] + [IO] IO::Path now `does` role `IO`. This exists solely as a future compatibility feature with `IO()` coercer type check and provides no new methods [87987c2][c95c4a7][fd503f8] + [IO] &chdir and IO::Path.chdir now support :r, :w, :d, :x args for file tests and default to :d test only [a0ef2ed] + [IO] Changed coercers from Str() to IO() in `&*chdir`, &chdir, IO::Path.chdir, &rename, &move, © to avoid limitations of IO::Path.Str and race conditions with `$*CWD` [2483d68][a0ef2ed][ff97083] + [IO] Changed a Capture of remaining args to be passed to the delegate IO::Handle methods, instead of the internal .open call in IO::Path .lines, .words, .comb, .spurt, and .split [099512b][90da80f] + [IO] The following now return Failures instead of throwing: &chdir, `&*chdir`, &spurt, IO::Path.spurt, IO::Handle.spurt, IO::Path.slurp, &symlink, &link, &rename, &move, © [a0ef2ed][2483d68][5464b82][c13480c][da1dea2][ff97083] + Removals: + Removed unused $.pid from Proc [5b8d4c2] + [IO] Removed &mkdir candidate that creates multiple dirs [0d9ecae] + [IO] Removed IO::Path.abspath [cb323d5][a432b3d] + [IO] Made IO::Path.new-from-absolute-path a private method [7f73f92] + [IO] Removed vestigial IO::Path.pipe [a01d679] + [IO] Removed unused Capture in signatures of some .IO coercers [0c7e4a0] + [IO] Removed IO.umask method [87987c2][fd503f8][c95c4a7] + [IO] Removed :bin argument in IO::Handle.Supply; now uses handle's mode instead [184d499] + [IO] IO::Handle and IO::Socket no longer `does` role `IO` [87987c2] + [IO] Removed .chmod, .e, .d, .f, .s, .l, .r, .w, .x, .modifies, .accessed, .changed, .mode, and .watch methods from IO::Handle [36ad92a][50aea2b] + [IO] Removed &tmpdir and &homedir + [IO] :$test param on &chdir and IO::Path.chdir is now deprecated and will be removed in 6.d language [a0ef2ed] + Efficiency: + Made .Set/.SetHash.clone about 250x faster [d673ea7] + Make Baggy (&) Baggy about 80x faster [e9a3075] + Made Mixy (&) Mixy about 60x faster [03ef4be] + Made Str (elem) Map / Map (cont) Str 50x faster [a8c6eca] + Made Setty (&) Setty about 40x faster [89b5d65] + Made Setty (-) Setty about 40x faster [49c0ab6] + Made Baggy (|) Baggy at least 40x faster [4facf10] + Made Mix.BagHash and Mix.Bag coercions about 28x faster [2d8ac1e][af50e06] + Made Setty `(<+)`/`(>+)` Setty at least 25x faster [224e40f] + Made Mix.MixHash coercion about 25x faster [de983bc] + Made Map (|) Map 15x to 20x faster [9470d1c] + Made Setty (|) Setty about 25x faster [49807eb] + Made Object Hash.Set(Hash) coercion 12x faster [fb5d726] + Made .invert about 10x faster [7ea0f66] + Made Baggy coercion to Set|SetHash 10x faster [f947a19] + Made @a.first(Foo) 6x-10x faster (also affects many set operators) [9671ffe] + Made Iterable (|) Iterable about 9x faster [80062b0] + Made Set.WHICH about 8x faster for 50 elem Sets [167a0ed] + Made Set.SetHash coercion 12x faster [2731087] + Made coercion of Map to Set(|Hash) about 8x faster [4683e83] + Made Setty coercion to (Bag|Mix)Hash 7x faster [6686abb] + Made Map (&) Map about 7x faster [605e9e9] + Made Baggy `(<+)`/`(>+)` Baggy at least 6x faster [928a406][0672082] + Made Mixy `(<+)`/`(>+)` Mixy at least 5x faster [38b341a][0672082] + Made (cont)/(elem) 25% to 5x faster for QuantHashes [5b7ef3e] + Made Setty.hash about 4x faster [10fe02a] + Made Setty.pick/SetHash.(grab|grabpairs) 4x faster [6c9f31b] + Made Iterable.Set(|Hash) about 4x faster [f849df3] + Made m:i// regex matching 1.8x-3.3x faster [3e275dd] + Made Enum.ACCEPTS(Enum) 2.9x faster [17d34cd] + Made Iterable (&) Iterable about 2x faster [0fc3751] + Made internal nqp::index 2x faster, affecting many methods that work with strings [f1fc879] + Made case-insensitive regex 2x faster [822566f] + Made Baggy.new-from-pairs 1.5x faster and use less memory [ff52b74] + Made concatenation with control chars at end 30% faster [027aa54] + Made Baggy.new, bag(), and mix() about 25% faster [ae3ff5c] + Made Iterable.flat about 20% faster (also affects `*@foo` slurpy params) [f532f81] + Made Numeric.ACCEPTS(Any) about 15% faster [89457f8][e0e0800] + Made Hash.Bag about 15% faster [e7e97c7] + Made generic handling of `(<+)` and `(>+)` about 15% faster [5ae4549] + Made Set.new(42) about 8% faster and use less memory [fb60621][1471527] + Made Set.new-from-pairs about 4% faster for Pairs [213a72c] + Made Any.unique a few percent faster [6060bd3] + Streamlined tai/epoch conversion / leap-second check [dcebce4] + Added fastpath for `infix:<(|)>` with empty list of args [e24980f] + Made multiple memory use reductions in internals in MoarVM [d0924f1] + Made Grammars pre-compute their NFAs during precompilation [064b585] + Improved FSA which gives better multithreading performance [20af51f] + [IO] Made IO::Spec::Unix.split 36x faster [4fdebc9] + [IO] Made IO::Spec::Unix.catpath 9x faster [55abc6d] + [IO] Made IO::Spec::Unix.join 8.5x faster [55abc6d] + [IO] Made IO::Spec::Unix.is-absolute about 4.4x faster [4eef6db] + [IO] Made IO::Spec::Unix.catdir 3.9x Faster [0111f10] + [IO] Made IO::Pipe.lines 3.2x faster [0c62815] + [IO] Made IO::Spec::Win32!canon-cat 2.3x faster [0e36bb2] + [IO] Made IO::Path.child 2.1x faster on `*nix` [55abc6d] + [IO] Made .IO.slurp about 2x as fast [b4d80c0] + [IO] Made IO::Handle.open 75% faster [4032953] + [IO] Made IO::Spec::Unix.rel2abs 35% faster [dcf1bb2] + [IO] Made IO::Path.slurp 12%-35% faster (for small files) [c13480c] + [IO] Made IO::Path.new 7% faster when creating from Str [ae5e510] + Assorted internal improvements to CPU/memory use [1132b1a][a123eb3][1bacc61][c3c849e] [fa9aa47][666ce35][e7e97c7][213a72c][fab9f87][9671ffe][08a9735][8a4df162][b64f210][1277fb5] [463898a][3f36508][65037c3][e408e47][6ef7b59][a4b30dc][7875eaf][d793e21][bf63719][9a2446c] [0dbe451][1867099][2694f5d] New in 2017.03 + Fixes: + Made IO::Path.lines non-lazy so it can always close the file handle [0083c4f] + Fixed unwanted container re-use in `infix:` [5b7b7fb] + Made Emoji_Modifier_Base return Bool instead of int with uniprop [2125d4d] + Fixed JIT rounding bug for negatives in nqp::div_i [deac603][f73d984] + Fixed failure in `\c[]` with non-ASCII names [deac603] + Fixed issues in `infix:
` optimization [deac603] + Fixed .split(...:skip-empty) not skipping with empty strings [fc86084] + Fixed duplicated .done/.quit on Channels in Proc::Async on exit [c4a4c84] + Fixed error handling when Proc::Async process failed to spawn [f73d984] + Made sure `infix:` always returns a Seq [1eb7b1f] + Partially fixed `infix:` being non-lazy [f190f24] + Fixed SC collision when loading identical modules from different dists [254f76a] + Fixed CURI loading of modules with identical short-names [c1a0fa7] + Fixed SEGV in exception handler resolution in sub/INIT/return [b2eb115] + Fixed SEGV on `xx` with a huge repeat values [1cafc67] + Fixed SEGV on chars with a huge number of combiners [1cafc67] + Fixed SEGV when `Scalar` type object is processed by `unique` [cfe0e04] + Fixed .comb(Int) failing to work on Cool [a08e953] + Fixed hang in dispatch of .lines/.words when given wrong args [7425737] + Fixed cases of lack of panic upon with quantifiers in regexes [91a4ac5] + Fixed broken thunking of infix: [5e6f30a] + Fixed failure to thunk RHS on `or=`, `and=`, and `notandthen=` [3e88c41] + Fixed precision loss with `cmp` involving Rationals/Int [9e8ecb7] + Fixed crash in .Bool, .so, .not, .hash, and .elems on Baggy:U [e8af855] + Fixed crash in .Str on Bool:U [3de5fb2] + Fixed crash in IO::Special .WHICH/.Str [dd4dfb1] + Fixed install wrapper when no binaries are found [796b6a8] + Fixed crash when calling .sort on reified empty Array [8e250db][75e070f] + Fixed `Nil` being displayed as `Mu` in REPL [a274bdd][cd47e2a] + Fixed previous output silencing exceptions in REPL [db70a1f][61a65ce][7f9235c] + Fixed loss of data when using a hash in assignment to itself [ae7bcf1] + Fixed IO::Path.e failing to detect changes on the filesystem [76f7187] + Fixed `infix:` with Seq/List containing same elements [f9eb811] + Fixed CArray to pass NULL when for type object elements [26e6993] + Fixed GC deadlock when event loop worker thread was spawned [26e6993] + Fixed `:i` in regexes using lowercase instead of fold case [26e6993] + Fixed parsing issue with detached methods in `[…]` metaop [e1ebb50] + Fixed unwanted list flattening in triangle reduce [10f5f74] + Fixed Range.int-bounds for NaN and Inf end points [79f2681][16ef21c] + JVM backend fixes [b1def95][2f6d2c6][dc19892][cef41b2] + Various improvements to error reporting [dc5fb20][d66c382][b11dc88][6cb9be2][3bf734f][26e6993] [20fa14b][127338a][1934a56][27dc7b1][1e24666] + Additions: + Made symbol imports of `require`d modules lexical. For more information, see http://rakudo.org/2017/03/18/lexical-require-upgrade-info/ [63cf5ca][3e86d0f][5b98caa][6771dee][9da6de4][4fce405][030c4c5] + Added ≤, ≥, ≠ as Unicode versions of <=, >=, and != [5c68ea6] + Made it possible to hyper ops that return a Seq [e2db7b8] + Made `infix:<∘>` keep RHS's .count and .arity and LHS's .of [032b283][cb149a8] + Made purity propagate up through meta-meta ASTs [68a40f7] + Made Proc::Async default to translating newlines [05add43][2973ccd] + Implemented Str.parse-names [5c1761a] + Added `$epsilon` argument to Complex.Rat/.FatRat [a4af702] + Fixed loss of precision in Instant.Rat [a4af702] + Implemented .FatRat coercer in Cool and Numeric [a4af702] + Added Mu candidate for `infix:` [e270a15] + Implemented Mu.iterator [81fcd1b] + Made sure Str.split always returns a Seq [f595733][8301a30] + Made List.reverse return a Seq [beda576] + [EXPERIMENTAL] Added support for Parameter.set_default [d6c95ea] + Implemented new internal braids API to make future optimizations easier. This affects any slang modules that access `%*LANG`, `%*PRAGMAS`, and `$*ACTIONS` internals using unofficial API. + Removals: + Removed IO::Path.Bridge [212cc8a] + Removed support for IO::Handle.lines(:close) agument [76a59cf] + Efficiency: + Made min/max/min=/max= about 3x faster [a9c5196] + Made .WHICH of numerous types about 1.8x faster [79bb179][65b0040] + Made case-insensitive regex match 20%-30% faster [5b6e0fb][f73d984] + Made triangle reduce right op with 2 params 2x faster [e114d52] + Made triangle reduce right op with 2+ params 1.5x faster [d04c47f] + Made IO::Handle.lines about 10% faster [9019a5b] + Made IO::Handle.getc about 3% faster [9019a5b] + Made reduce chain op about 5% faster [9cec31a] + Made IO::Handle.lines about 10% faster [9da50e3] + Made List.reverse 0%–30% faster and reduced memory pressure by up to 70% [beda576] + Made loops/maps with NEXT phaser about 5% faster [80e0bce] + Made `infix:<%%>` about 14x faster for Int,Int case [755e25b] + Made `infix:<%>` about 8x faster for Int,Int case [5ec2517] + Made Junction creation about 20% faster [fafe663] + Made callframe() about 20% faster [7966dad][9a74cd0] + Made meta reduce with right-assoc. op 30%–200% faster [60a8f9e][2cf9b53] + REMOVED caching of IO::Path.e results to fix unwanted behaviour [76f7187] + Assorted internal improvements to CPU/memory use [b2e0ac0][25a3cc5][b61b3c7][829762a][45b3af8][7010ae9][556db9d][9e9a4ad] [8e8cd14][7556498][adb6f87][9a109c9][3de7b08][b283e52][0be7247][74573d0] [79d5670][313e7b2][e723e00][5843ee6][7c279c3][318f8ee][4ef1e69][9d497e9] [b597398][4bc826d][9da50e3][2a2e460][0633f03][d444f65][f94a2c7] New in 2017.02 + 6.d.PREVIEW changes: + It is now possible to use different language versions in different comp units. Pragma `use v6.d.PREVIEW;` loads PREVIEW version of 6.d language [9044fca] + Made `await` non-blocking (i.e. not using a thread for waiting) [dd1cb5f] + Made `react` non-blocking [4aa8d70] + Various improvements to error reporting [ee7c1bb][a2d69a0][f22170f] + Fixes: + Fixed data race in NFA cache [8f53a6f] + Fixed handling of Unicode characters on Windows command line [8f53a6f] + Fixed overflow during full GC collection on 32-bit systems [8f53a6f] + Fixed GC problem in string repeat op [8f53a6f] + Fixed .perl.EVAL roundtripping for circular Arrays and Hashes [67aeefa][673f06b] + Fixed instantiation of subclasses of classes that do Rational [7f245f7] + Fixed incorrect handling of precision flag in sprintf '%d' [a1c7d01] + Fixed `infix:(..., *)` for empty Slips [4e49ec1] + Fixed .pairs, .values, and .kv with native shaped arrays not having values in writable containers [0fdb9e4][1181afe][e195e5f] + Changed Pair.AT-KEY on non-existent key to return Nil [9728c4a] + Fixed Slip.List not returning a Slip instead of a List [4d4822a] + Made Map.List and Hash.List always return a List [6dd542f] + Fixed crash when using `.=` to initialize attributes [700a077] + Fixed leak of asynchronous task handles [483e4fd] + Fixed issues in .skip-one in internal Mappy iterator [3a77cb5][e7ea4c2] + Fixed count-only on all Hash based .kv methods reporting only half of actual value [aecbb3e] + Fixed crash in internal iterator used by .rotor and .batch [bcd902a] + Fixed LAST phaser called twice in sunk do for {} loops [3424465] + Fixed various discrepancies as a result of inlining non-native types [f8b3469] + Fixed leaks and an invalid read in synchronous sockets on errors [9ed4449] + Fixed NFA generation for the constructs `x ** 1..2` and `:i <[A..Z]>`, and hardened NFA processing in MoarVM so as to not read out of bounds [9ed4449] + Fixed memory leaks on startup and module load with augmented types [9ed4449] + Fixed smartmatch of Complex against Ranges [f2894d3] + Fixed premature overflow of `div` on native int types [c98b3a5] + Fixed flat()/Iterable.flat not propagating `is-lazy` [51b0aba][ca102c5] + Fixed hang with `*@` slurpies when given infinite list [51b0aba] + Fixed abs() failing with negative zeros [f85978b] + Fixed List.perl of containerized empty lists [a148c70] + Fixed at-times incorrect result of Rational.ceiling [6372417][79553d0] + Fixed Rational.norm failing to normalize the Rational [aac9efc] + Fixed issues with close() and read() on closed async sockes [f16cf37] + Fixed occasional disordering of messages in Supplier::Preserving [cabf6fb] + Fixed a data race in NFA caching causing SEGV [62bd30b] + Fixed data races and over-sharing of %*ENV in precompilation [bab1c02] + Fixed data races in CompUnit::PrecompilationStore::File [accc156][39c517e][917d473][a88da2e][6c374d5][2b1eb64] + Various improvements to error reporting [10bcec2][5822605][f230224][b51a550] [8733aa5][483e4fd][f0b9234][e922275][51ebfb1][acae345][1b99196][301bcf9] + Additions: + Implemented Array.clone [dc69daf] + Implemented Mu:U.clone [11d005e][4b85db6] + Added experimental `infix:` [6f6f0cf][5870ef9][eb3356c][6990133] + Added experimental `infix:`, `Any.collate`, and `$*COLLATION` [2061485][4efcc29][46313fa][1923878][5611425][6990133][f85978b] + Implemented Any.skip [8a6bfc6] + Implemented Supply.skip [d71bf1e][15753fd] + Implemented Any.batch [e0201f1][f6531d3] + Added Supply.rotor($batch) candidate [5694727] + Added support for all Nd characers in sprintf format strings [483e4fd] + Added support for more named Unicode sequences [3a77406] + Made named Unicode lookups (e.g. "\c[...]") case insensitive [3a77406] + Added support for Support East_Asian_Width Unicode property [9ed4449] + Made CompUnitHandle.globalish-package return the actual Stash [960a789] + Made Test.pm6's skip() only accept Int test counts [ae9d517] + Numerious fixes related to colonpair-extended names on subroutines [48abeee] + Made merging of Perl 5 symbols use the same mechanism as for Perl 6 [4e7ab20] + Included try-load in CompUnit::PrecompilationRepository's interface [d932355] + Made S/// set $/ to Match objects made during substitution and avoid returning the result in $/ causing container-reuse in loops [97359ae] + Made CompUnit::Repository::Installation sort binaries by version [7c39bbf] + Made it possible to call IO::Path.s on a directory [25fd1ca] + Gave fakesignature a $/, $_, and $! to avoid unintended sharing [71a1283] + Implemented smartmatch of character Ranges [8477f3b] + Str ~~ Numeric no longer throws if Str cannot be coerced to Numeric [1615c83] + Efficiency: + Made SetHash.iterator|pairs|antipairs|kv|values about 20x faster [a2fbe20] + Made Int.WHICH about 1.7x faster [9841313] + Made Baggy.kv about 15% faster [e995107] + Made Baggy.kxxv about 30% faster [5db0b29] + Made Baggy.antipairs about 25% faster [2922ec4] + Sped up postincrement and postdecrement by about 5% [fd74c91] + Internal improvements for 1%+ faster parsing [dd514da][9493ffb][951a441] + Made `` parsing 5%+ faster [0bb7c20][d5262e6] + Generalized sink branch optimize logic improving performance for sunk post increment [5401a1a] + Improved radix operations (50% faster with non-ASCII digits) [9ed4449][c98b3a5] + Made uniprop/unival/unimatch 1.1x to 2.1x faster [411782e] + Fixed performance loss on `infix:` with very large number [8878af8] + Made Map.sort about 1.5x faster (also affecting its .perl/.gist/.Str) [0ee3b7d] + Made an improvement in candidate selection order of &sort [b7c6e73] + Made .skip of internal mappy iterator about 15% faster [54f647d] + Made List.keys on lazy lists a bit faster [0ad05ce] + Made Seq.InfiniteLoopIter about 6% faster [00e60d9] + Made do repeat while about 3%-11% faster [a832944][af49026] + Made `do while foo { bar }` loops about 20% faster [4932112] + Made `do repeat while foo { bar }` about 20% faster [3888b42] + Made `do loop ( init; while; next ) { }` loops about 6% faster [c2eb7fb] + Made `.map: -> $_ --> non-Slippy-Foo { ... }` maps about 2x faster [fdcf462] + Made firing of phasers about 25% faster [7e98504] + Made `my @a = do for @b { ...; PHASER foo }` about 1.5x faster [031efe0][3424465] + Made `for @b { ...; PHASER foo }` about 15% faster [031efe0] + Made `@b = @a.map: { }` 10% and `@b = do for @a { }` 20% faster [3e28b1e] + Made `for @a { ... }` about 1% faster [d69f375] + Made `my @b = @a.map: -> \a,\b { }` about 15% faster [9f15a4d] + Made `for @a -> \a, \b { }` about 2% faster [7384939] + Made .tail on reified List/Array about 8x as fast as `[*-1]` and .tail(N) about 16x as fast as `[*-N .. *-1] [*-N .. *-1]` [833fe43] + Made improvements and refactoring of various internal iterators [f2b97b0][18e6f0d][87f61d9][c069f45][ad90806][4ef37cf][54f647d][49e2d40a] [7c26985][4d8fc05][b1afc13][072d959][9d5c3fd][6b6a0b4][b31c591][b9d9279] [f799a03][98f9d8a] + Made improvements to performance of internals [ed4ef3b][f85978b] New in 2017.01 + Fixes: + Fixed importing globals nested in imported packages [85d8b14] + Fixed "Object of type A in QAST::Var value, but not in SC" [43d20eb] + Fixed use Foo::Bar; class Foo {my Foo::Bar $bar} not finding Foo::Bar [5c4db5e] + Fixed class Foo { use Foo::Bar; my Foo $foo; } not finding Foo [226cb36] + Fixed our scoped nested package swallowed by lexically scoped parent [85b9d8a] + Fixed imported nested enum colliding with symbols from outer scope [a962928] + Multiple methods that return listy things now throw instead of failing to avoid accidental Failure silencing through 1-elem lists [99e33fc][bd4e1f4] + Made List.roll always return a Seq [bd4e1f4] + Fixed SEGVs and GC panics in certain deep recursions [58c79e2] + Fixed detection of runtime errors in threads [b8df3a6] + Made sure .sort on shaped arrays uses the leaves [a4bc51a] + Made U+2212 infix:<−> and prefix:<−> same as regular `-` for all types [91af128] + Made sub MAIN usage ignore anon *% param [38ec79c] + Fixed lack of warning on unitilized values in infix: [c498d5b] + Fixed Distribution::Path bin/resources file format [393afcf] + Fixed spurious warnings in List.reduce [1ee24cc] + Sorting uninitialized List now returns a new list [005166e] + Made .sort always return a .Seq [434bf75] + Fixed combinations() incorrectly returning 1-item list in some cases [d86c419] + Made combinations() always return a Seq on succcess [db1836a] + Fixed useless "useless use" warnings in hypered ++ and -- [7193df1] + Fixed numerous bugs with $limit in lines() [19df358] + Fixed regression with mutability of .pairs on shaped arrays [dc7b688] + Fixed regression with infinite lists assignment to shaped arrays [aa35065] + Fixed regression with looping over uninitialized shaped array [696b1f4] + Fixed regression with regex match against NFC [8d35951] + Fixed infix: with 0-denominator rationals [a567eb4] + Fixed crashes in X::OutOfRange reporting with 0-denominator rationals [b2332c2] + Fixed &infix:<==> on 0-denominator rationals [73182d4] + Fixed &infix:<===> on 0-denominator rationals [cb2476f] + Fixed incorrect .isNaN result for 0/0 rationals [7434a8f] + Fixed IO::Socket::INET.new not parsing IPv6 URLs correctly [cb9ec03][df20d8b][fbd061b][8751f05] + Made IO::Socket::INET.new fail when invalid port or family is given [cb9ec03] + Fixed Range.AT-POS on int ranges failing for too-high indexes [c5e54ef] + Fixed (^) set operator on Baggies to take weights into account [a687d95] + Fixed incorrect dispatch in some cases of multi subs with where clauses [0c0dd82] + Fixed unwanted role punning due to attached Pod [d487657] + Made Routine.prec(key) return '' rather than Nil on fail [d7d76b7] + Moved .prec from Routine to Code [a7ccfc6] + Fixed an occasional heap profiler crash, and prevent heap profiler from greatly reducing the number of full GC collections [e182deb] + Fixed specializer log slots keeping alive, and so leaking, objects once specialized code has been produced [e182deb] + Fixed build under some versions of MSVC [e182deb] + Fixed code-gen bug in dispatch: [3d86286][ba8a284] + Fixed `1,*,3 Z~ ` case using Whatever value for the rest of list [471f4ba] + Fixed threading issues in ||=, //=, and &&= [d1c2e76] + Fixed GC in spesh triggered by managed mutex use [25615c7] + Fixed bugs in interaction between inlining, GC, and threads [25615c7] + Fixed endpoint-exclusion on string ranges with non-alphanumeric chars [daf7e51] + Fixed fatality of Nil.chomp/chop (back to just a warning) [7c81bec] + Fixed infix: on NaN and signed zeros [3f80e13] + Fixed crash in infix: when comparing Real and RatStr [8ec54ba] + [TEST] Test.pm tests no longer backslash every backslash in descriptions [b183cab] + [TEST] Fixed TAP::Harness parsing of single backslashes in test descriptions [b120ac4] + [TEST] Fixed TAP::Harness failing to parse full-file skip directive [aee7af3] + [UNI] Fixed `ISO_Comment` property in uniprop [4ff2fb2] + [UNI] Fixed uniname() on "\x[80]", "\0" and other controls [8163113] + [UNI] Made unival() use full Unicode names for Numeric_Value_* [dbbf9dd] + [UNI] Fixed several aliases for Unicode characters [5ba982a][644cd34] + [UNI] Fixed number of characters reported for hundreds of Unicode Emoji [823f0f7] + [UNI] Fixed compilation of /:ignoremark \"/ to actually ignore marks [6188771] + [UNI] Fixed mismatched closers on U+298D/U+2990/U+298E/U+298F brackets [76283f6] + [UNI] Fixed return value of uniprop Bidi_Mirroring_Glyph if no BMG [48e8ccc] + [UNI] Fixed breaking after Prepend characters [7c8b705] + [JVM] Fixed build issues [7bba13a][adcfb8b][e6ccb47][29f487e] [fb4f161][4320fdc][39bf63f] + Assorted improvements in error reporting + Additions: + Made importing globals from loaded modules lexical [4b529c8] + Added degenerate Any.match [3fe5893][cc0f836] + Added infix +/- for DateTime/Duration [6b850ba] + parse-base() now allows for omitted whole part [3282813] + Using a Bool:D literal as type constraint in signatures now warns [b01dfcd] + Made Bool.ACCEPTS work with Junctions [9fc616f] + Made Proc::Async sub-class friendly [a2cc58a][1dc0c01] + Implemented .clone for SetHash, BagHash, and MixHash [1ee9c82] + Implemented .List on shaped arrays [8568dd1] + Added own .perl method to Empty [ec0258a] + Made Inf and Whatever work as part of rotor()'s cycle [7ddc5f7] + Made it possible to use Inf and Whatever in .head and .tail [93b0ffa] + Implemented `next` in `whenever` blocks [f97d5c2] + [TEST] Test::is() now handles Mu types [268dc92] + [UNI] uniprop now handles Emoji properties [3baffe7] + [UNI] Implemented Bidi_Mirroring_Glyph as an integer property [7c8b705] + [UNI] Implemented Emoji grapheme breaking and other combined codes [7c8b705] + [UNI] Added Emoji Unicode properties [7c8b705] + [UNI] Added secondary and tertiary Unicode collation support [ee38721] + [UNI] Re-implemented UTF8-C8 streaming decode [7c8b705][ee38721][e182deb] + [UNI] Made all Nd chars accepted in ${} special variables [eba3fe0] + [UNI] Made all Nd chars accepted as regex quantifiers [e40a129] + Removals: + [UNI] Unicode 1 character names are now deprecated and issue a warning [e7c1d51] + Removed IO::Path:U.chdir candidate on account of it being a footgun [94df18c] + Efficiency: + [UNI] Made unival() slightly faster for repeated lookups [dbbf9dd] + [UNI] Made decoding UTF-8 text 14% faster [528ec53] + Made compilation of custom operators about 1.5x faster [c99fbc6] + Made improvements to memory management of various aspects of invocation records (aka call frames), greatly reducing memory pressure in a number of cases, especially in applications that produce and store a large number of closures. Up to 20% improvement to CORE.setting build time and ~10% peak memory use reduction observed [e182deb] + Made I/O memory buffers properly contribute to full collection criteria, reducing memory overhead required [e182deb] + Made @a[*-1] 13% faster [b39c0d8][ab26b58] + Removed unnecessary caching on .elems in core code [ab26b58] + perl6 -ne '' is now about 40% faster [541d127] + Made IO::ArgFiles.lines about 10% faster [73797b7] + Made List.sort() about 4x faster [8d33b89] + Made native @a.sort() about 12x faster [4b2cea0] + Made Str.split() about 3x faster [f0398fb] and then 10%-40% faster on top of that, based on length of string [2496963] + Made Any.sort(&by) about 40% faster [1374fcf][def5262] + Made List.sort(&by) about 5% faster on reified List/Array [1e54371] + Made .sort on 0- and 1-element lists 10%-40% faster [340bc90] + Made .sort on 2-element lists about 50% faster [4724bd6] + Made Supply.sort a multi for faster dispatch [54cc06b] + Made Cursor.MATCH about 10-15% faster [9eef565] + Made QuantHash.AT-POS and Baggy.new about 5%-8% faster [c13e67b] + Made is nodal check a bit faster [0f25d83][996ab6a] + Made Capture.Bool about 3x faster [516e527] + Made sorting of 0,1,2 element native arrays about 30% faster [4038c6c] + Made generating iterator after List.eager does not reify again [7a759d7] + Added Seq.join that's 25% faster than List.join [3c52aa0] + Make @a Z @a 5x faster [4ab020f][3d1d699] + Made slow-path in grep 10% faster [362f674] + Made fast-path in grep about 1.4x slower as a result of a bug fix [362f674] + Made internal improvements with Empty and SlippyIterator [ebe9147] + Streamlined .prec on operators [caba0d3] + Made zip(@a,@b,:with(&[+|~]) about 12x faster [62f7027] + Made zip(@a,@b,:with(&op)) about 7x faster [62f7027] + Made zip with generic listinfix ops (e.g. zip(@a,@a,:with(&[minmax])) about 2x as fast [5c685f2] + Made zip(@a,@a,:with(&[=>])) about 5x faster [46cdf16] + Made generic right-assoc zip ops in zip(@a,@a,:with(...)) form at least 2x faster [6703b4c] + Made Zop handling (except for non-LHS-thunky ops) 13x faster [f66d4b3] + Made List.from-iterator about 10% faster [8f3476d] + Streamlined Array.from-iterator, making it 30% faster in some cases [fab1a14] + Improved ||=, //=, and &&= by avoiding thunking and invocation [d1c2e76] + Made List.combinations(N) about 20% faster [1a54bba] and on top of that made List.combinations() 1.5x, List.combinations(3..5) 2x faster [502fc77] + Made permutations() 2x to 24x faster [78edbbb][b5293c2][c64aeb3] + Made roundrobin() about 4x faster [73d0cec] + Made X and cross(...,:with) about 5x faster [8a3ff7b] + Made Xop about 7x faster [a26f513] + Made 1 X foo about 20% faster [d4a5b69] + Made List.rotor between 15x and 20x faster [d7b8214] + Made Range.excludes-(min|max|infinite|is-int) 2.5x as fast [99b186b] + Made reified List.Array about 3x faster [c9a9bc8] + Made List/Array.sum about 30% faster [017c6cf] + Made List/Array.fmt with no args about 60x faster [22e589a] + Made List/Array.fmt("%s") about 60x faster [7ef3682] + Made List/Array.join about 20% faster [ed482ec] New in 2016.12 + Fixes: + Fixed inability to autocurry superscript exponents properly [c35d562] + Fixed Match.prematch and Match.postmatch for zero-width matches [c04b8b5] + Fixed Match objects being erroneously treated as value types [7f26e8b] + Made U+2212 minus work in places it didn't [cb9df2b][01775b7][6cd2144] + prefix:<~> now calls .Str on Str types (helps with allomorphs) [e0a415f] + Fixed errors in `$*ARGFILES.lines` limit counter [bd42363] + Fixed bug with add history for Readline module in REPL [f544e4c] + sum and [+] metaop now correctly work on Junctions [8d04bec] + Fixed various scoping bugs with NEXT/LAST/QUIT [6bb8823] + Fixed issues in QUIT handlers running asynchronously [c027e6a] + Fixed occassional hangs in Proc::Async [e4d78c6] + Fixed operations still running after supply deactivation [f928a20] + Fixed Iterator.flat occasionally skipping inner iterables [61a18c0] + Fixed slurp not propagating :bin and :enc args on `$*ARGFILES` [15f51a5] + Fixed negative zero handling in many places [f1263ab][e2587cd][a9654c0][085145f] + Synthetics in numbers in colonpairs in :42foo format now throw [4663d43] + Fixed hang in .subst with no arguments [0a874fb] + Fixed sleep() with huge values failing to sleep [c797d3f][7c5ea31][2f72fa0] + Fixed attributive binding not looking outward for `self` [843a6be] + Fixed sprintf($format) without args issuing spurious warnings [35183f3] + Fixed infix:<===> failing when both sides are allomorphs [4a59ab4] + Fixed data race in Supply.interval [47ffdea] + Fixed data races in supply/whenever [33f7456] + Fixed memory corruption in Proc::Async [74eb6b9] + Fixed handling of time resolutions below 1ms in Supply.interval [c38f1ad] + Fixed issues with `-Inf` being a single term [ae614f9] + Fixed Signature.gist stripping sigils from anon typeless scalars [219f527] + Made permutations/combinations/grep die instead of fail()ing [ab3a59c][bc13bb5] + Fixed spurious warnings on .trans with regex pair complements [2e1b82c] + Fixed premature frees in async sockets when errors occur [b2ac4e4] + Fixed handling of superscript powers larger than int [0428b79] + Fixed Proc::Async sending empty string to taps on program exit [7532297] + Fixed wrong results for .first on Numerics [8cb3e1b] + Fixed matcher-less .first not respecting its adverbs [ababb24] + Fixed `sink` statement prefix failing to explode Failures [345f6a7] + Fixed regression in S:g/// not returning original string [5476d60] + Reverted .match/.comb to return empty List instead of Empty when failing to match [5476d60] + Fixed Mu.clone incorrectly marking all attributes as initialized [9a161fa] + Fixed cloned Baggy having an undefined .WHICH [9a161fa] + Fixed smartmatching against UInt type object [f9d34a9] + Fixed some Date constructors accepting invalid dates [aa27d5c] + Fixed .rotor on empty list returning an internal iterator object [5558710] + Fixed unimatch to check canonical short/alternate unicode props [b456471] + Fixed uniprop to return correct values for na, uc, tc, lc properties [2a8ec40] + Fixed uniprop for 'Numeric_Value' not returning a numeric value [9ff5b7e] + Fixed crash with Rat Ranges constructed with Range ops [1d46004] + Fixed crash with tapping supplies supplied by thunked block [a980eb1] + Fixed .perl on parametarized Hashes with no items in them [003e654] + Fixed .perl for itemized Slips [8eef234] + Fixed chained `andthen`/`orelse` operators returning internals [287af6a] + Fixed ThreadPoolScheduler.cue not applying delays to all cues [b286048] + Fixed control exception propagation when thrown from within statements handled by `without`, `with`, `andthen`, or `noandthen [9a3c350] + Fixed Rand.rand generating value equal to excluded end point [334d134] + Fixed `last` not working inside .grep's block [7021861][f775474] + Fixed .head not always returning a .Seq [69d808f] + Various fixes and improvements in error reporting + Additions: + Bare \b, \B, and \K in regexes now throw [08589d3][ee14067] + Added SQL as an output option for --profile-filename [f20b8b6] + Implemented native str Arrays [014d4cf][6d726f8] + sub MAIN now allows Enums as type constraints [546dbd9] + Count in .pick/pickpairs/grab/grabpairs can now be a Callable [e9487d6] + REPL with Readline module now loads `inputrc` files [573ed59] + REPL with Readline module now saves history [9043f58] + perl6 --doc=Text now shows signature parameter pod [6ea6563] + Generated sub MAIN usage message now shows original program name [b597b7c] + Added arity-1 infix:<~> for Blobs [77e9d4b] + Added IO::Handle.printf [8774f24][3c4ac3c] + Added ability to negate all numeric literals in signatures [5baa064] + Added .reverse/.rotate/.sum to shaped 1-dimmed arrays [a2ede36][4f4737d] + Added Mu.emit [4e76827] + Added --with-nqp Configure option for having NQP in a different prefix [6f6e6db] + Added .gist, .perl, and .Str to BOOTSTRAPATTR [3dd2916] + Made .sum nodal [4fd6e94] + Implemented uniprops [f55ff82][0328422][05db996] + Added 5 new sets of matching brackets for available delimiters [8965145] + Removals: + Removed X::Syntax::Number::InvalidCharacter exception [a8ff3b9] + Efficiency: + Made indirect type lookup 3x as fast [939d273] + Made shaped(int|num|str)array.AT-POS at least 15% faster [bfe89a5] + Made shaped(int|num|str)array.ASSIGN-POS at least 10% faster [ecc202e] + Made shaped(int|num|str)array.EXISTS-POS at least 20% faster [bbbb2b6] + Made 1-dimmed native arrays at least 3x faster [4a711bc] + Made native shaped array creation about 1.5x faster [1b840f1] + Made native 1-dimmed array init at least 11x faster [b6de5e8] + Made native 1-dimmed array copying at least 25x faster [b6de5e8] + Made use of native 2-dimmed arrays 2.5x–4x faster [172898e] + Made use of native 3-dimmed arrays 2.5x–4x faster [64343d7] + Made copying 1+ dimmed native arrays up to 9x faster [e0c0ae5][331c2e2] + Made copying intX[2;2] to intY[2;2] native array just as fast as copying intX[2;2] to intX[2;2] [79090b2] + Made native shaped array initialization 4x–6x faster [d704820] + Made iteration of 1-dimmed native arrays 17x faster [947422b] + Made iteration of >1 dimmed native arrays 11x faster [3e93ddd] + Made .(anti)pairs for native shaped arrays 7x faster [39261e7][471cea2] + Made .kv for native shaped arrays 16x faster [965fa4d][c1a3a3c] + Made native array.reverse|rotate about 20x faster [0ee6bc0] + Made @a[2;2] about 40% faster [b9e2ffa] + Optimized Int->int coercion [b2ac4e4] + Made infix:<..> on Nums 13x faster [a8ba26b] + Made uniprop with the default lookup 5x faster and other lookups 15% faster. [474ea33] + Made print, say and note 25% faster to stderr and stdout [e9ce28a] New in 2016.11 + Fixes: + Various improvements to warning/error-reporting + Fixed assigning values to shaped arrays through iterators [839c762] + Fixed Str.Int not failing on numerics with combining characters [d540fc8] + [JVM] Fixed .antipairs breakage [dd7b055] + defined routine now correctly authothreads with Junctions [189cb23] + Fixed poor randomness when .pick()ing on ranges with >32-bit numbers [34e515d] + Fixed infix: silencing Failures [2dd0ddb] + Fixed edge case in is-approx that triggers DivByZero exception [f7770ed] + (Windows) Fixed returning of an error even when succeeding in mkdir [208a4c2] + (Windows) Fixed precomp unable to rename a newly compiled file [44a4c75] + (Test.pm) Fixed indent of multi-line diag() and test failure messages [43dbc96] + Fixed a callframe crash due to boxing of NULL filenames [200364a] + ∞ ≅ ∞ now gives True [4f3681b] + Fixed oversharing with grammars used by multiple threads [7a456ff] + Fixed incorrect calculations performed by acotan(num) [8e9fd0a] + Fixed incorrect calculations performed by asinh(num)/acosh(num) [a7e801f] + Fixed acosh return values for large negative numbers [5fe8cf7] + asinh(-∞) now returns -∞ instead of NaN [74d0e36] + atanh(1) now returns ∞ instead of throwing [906719c][66726e8] + Fixed missing close in IO::Path.slurp(:bin) [697a0ae] + :U QuantHashes now auto-vivify to their correct type and not Hash [79bb867] + Mix/MixHash.Bag/BagHash coersion now ignores negative weights [87bba04] + arity-0 infix: now returns a Seq instead of a List [3fdae43] + Fix augment of a nested package [87880ca] + Smartmatch with Regex variable now returns a Match instead of Bool [5ac593e] + Empty ()[0] now returns Nil instead of False [f50e39b] + Failed IO::Socket::Async connection no longer produces unexpected crash [f50e39b] + Quitting Supplies with no QUIT phasers no longer unexpectedly crash [f50e39b] + Fixed NativeCall issues on big endian machines [627a77e] + Fixed broken handling of $/ in some uses of `.match` [ba152bd] + Fixed Lock.protect not releasing the lock on control exceptions [48c2af6] + MoarVM now builds on any version of macOS [b4dfed2] + Fixed concurrency crashes due to garbage collection [6dc5074] + Fixed race condition in EmptyIterator [ed2631c] + Fixed hang with multi-threaded long-running NativeCall calls [f99d958] + Made my @a[10] = ^Inf work [aedb8e7] + Fixed [;]:delete [3b9c4c9] + Fixed incorrect handling of negative weights in ∪ operator [e10f767] + duckmap now preserves types of Iterables [43cb55f] + Fixed premature overflow to Inf with large Num literals [729d7e3] + Fixed race condition in NativeCall callsite used by multiple threads [49fd825] + Fixed instabilities in programs launching many threads at startup [0134132] + Fixed crash when reporting X::Composition::NotComposable or X::Inheritance::Unsupported exceptions [a822bcf] + Fixed clock_gettime issue on macOS [ee8ae92] + Fixed SEGV in multi-threaded programs with strings-as-strands [395f369] + `regex` TOP Grammar rule will now backtrack if needed [4ccb2f3] + Fixed .rotate/.reverse on 1-dimmed arrays assigning to self [2d56751] + Fixed exponentiation involving zeros for Complex numbers [7f32243] + Fixed Label.gist [29db214][53d7b72] + Fixed certain edge cases of incorrect stringification of Rationals with .Str, .perl, and .base [b5aa3c5] + Additions: + Added TWEAK submethod for object construction [fdc90a2][9409d68] + Added DateTime.hh-mm-ss [bf51eca] + Added parse-base routine [7e21a24] + is-approx with no explicit tolerances now uses more complex algorithm to choose a tolerance to use (same as old is_approx) [82432a4] + on failure, is-approx now displays actual values received [b4fe680] + Added Iterator.skip-one to skip a single value [71a01e9] + Added Iterator.skip-at-least to skip several values [8d357af] + Re-imagined Str.match [b7201a8]: + the family of :nth is now lazy will return whatever can find + non-monotonically increasing :nth iterator values will now die + Str.match/subst/subst-mutate now have :as adverb [1b95636][c9a24d9][aaec517] + &infix: now works with Setty objects [d92e1ad] + :ov and :ex adverbs are now illegal in Str.subst [b90c741] + Made nextwith/samewith/nextsame/callwith to be real subroutines [70a367d] + Added CX::Emit and CX::Done control exceptions [07eeea8] + Setty.Mix/.MixHash coercers now use Int weights instead of Bool [7ba7eb4] + Implemented :kv,:p,:k,:v on 1-element multidim [;] [764cfcd] + .chrs can now also accepts codepoint numbers as Str [4ae3f23] + Added support for compilation of Rakudo on Solaris [a43b0c1] + IterationEnd.perl/gist/Str now returns text "IterationEnd" [59bb1b1] + Added X::Syntax::Number::InvalidCharacter exception [2faa55b] + .reverse/rotate on 1-dimmed arrays are now nodal [cd765e6] + .line and .file on core Code now references original source files [b068e3a] + .rethrow now works on unthrown exceptions [58a4826] + All Reals now accept `Whatever` as the second argument to .base() [c1d2599] + sub MAIN usage message shows possible Enum values if param is named and is an Enum [a3be654] + Efficiency: + Made slip(@a) about 1.2x faster [37d0e46] + Made initialization of 2+dimmed array 10x to 16x faster [dfb58d4] + Str.match is now about 5% faster [4fc17df] + Str.match with :nth feature is now about 2x faster [41e2572] + my @a = Str.match(...) is now about 5% faster [e472420] + Str.comb(Regex) is now about 7x faster [1794328] + Simple Str.subst/subst-mutate is now about 30% faster [364e67b] + Match.Str|prematch|postmatch is now about 2x faster [e65d931] + Match.Bool is now about 1% faster (not much, but used a lot) [1fce095] + Made ~~ /foo/ faster: 2% for successful/6% for failed matches [05b65d0] + Made ~~ /foo/ about 2x faster [e4dc8b6] + Made %h ~~ /foo/ about 2x faster [33eeb32] + Frequent accesses of multiple adverbs (e.g. %h:p:exists) is now 2x faster [f22f894] + Made infix: faster: Str: 14x, type: 10x, Range: 3.5x, Int|Seq|Hash: 1.5x, Array: 1.2x [bc7fcc6] + IO::Spec::Unix.canonpath is now 7x to 50x faster [f3f00fb] + Baggy.roll/pick is now about 10% faster [fc47bbf] + Made copying shaped arrays 10x to 20x faster [a1d8e93][0cf7b36][d27ecfa] + Made setting up a shaped array 2x as fast [f06e4c3] + Made creation of typed shaped arrays 15% faster [f5bf6c1] + Made 2d/3d array accesses about 7x as fast [d3a0907] + Made AT-POS on 1,2,3dim arrays about 20x faster [feb7bcb] + Made creating a shaped array about 50% faster [1293188][576f3a1] + Made .AT-POS on 3+ dimmed arrays 20% faster [1bb5aad] + Made over-indexed .AT-POS on 1,2,3 dimmed arrays about 10% faster [1bb5aad] + Made multi-dimmed ASSIGN-POS about 30% faster [5b2bdeb] + Made .ASSIGN-POS for 1,2,3dimmed arrays about 40x faster [050cf72] + Made n-dimmed .EXISTS-POS about 1.5x faster [006f008] + Made .EXISTS-POS for 1,2,3dimmed arrays about 10x faster [b1c41b7] + Made n-dimmed DELETE-POS about 1.3x faster [6ccecb1] + Made .DELETE-POS for 1,2,3dimmed arrays about 20x faster [55b9e90] + Made n-dimmed BIND-POS about 1.3x faster [2827edb] + Made .BIND-POS for 1,2,3dimmed arrays about 20x faster [9f94525] + Made @a[10].STORE at least as fast as @a.STORE [8064ff1] + Made .kv on shaped Arrays about 4x faster [e42b68e] + Made .pairs/.antipairs on shaped Arrays about 2.8x faster [0f2566a][f608a33] + Made List.kv about 30% faster [7a2baf4] + for loops on 1-dimmed arrays are now 3x faster [ed36e60] + .kv on 1-dimmed arrays is now 7x faster [608de26] + .pairs/.antipairs on 1-dimmed arrays is now 3x faster [b7d9537][1c425f9] + postcircumfix[;] on 2/3 dimmed arrays is now 9x faster [0b97362] + Assignment to [;] for 2/3 dimmed arrays is now 10x faster [ce85ba3] + [;]:exists for 2/3 dimmed arrays is now 7x faster [e3e3fef] + [;]:delete for 2/3 dimmed arrays is now 10x faster [3b9c4c9] + [;] := foo for 2/3 dimmed arrays is now 10x faster [eaf4132] + .iterator and .values on shaped arrays are now about 4x faster [736ab11] + Fixed optimization of shaped arrays that gives 10% gain on simple `for` loops and likely will give larger gains on bigger programs [b7e632e] + Made starting MappyIterator faster, affecting all Hash/Map/Baggy iterator methods. 2-elem Hash iteration is 1.6x faster [97fb6c2] + Made starting a grepper faster: .grep on with no adverbs on 2-element list is now 20% faster [077c8f0] + Made Date/DateTime creation 20% faster [0e7f480] + Hashes now use 4 (32-bit) or 8 (64-bit) bytes less memory per stored item [395f369] + Rational.Str is now about 40% faster [b5aa3c5] + Rational.base is now about 30% faster [b5aa3c5] + Various streamlining of code that's hard to measure the final impact of New in 2016.10 + Fixes: + Many fixes and additions improving JVM backend support + Several improvements to error messages + Fixed .tree([&first]) incorrectly calling .tree($count) candidate + Fixed unwanted errors when smartmatching objects against IO::Path + Fixed is-deeply with Seqs showing Seq.new-consumed() in failure text + Fixed concurrency race when setting up NativeCall routines + Fixed Match.list treating inner unmatched captures as end of list + .first now correctly handles Junction matchers + Fixed GLOBAL symbol clash re-compiling due to a repo change + Fixed Backtrace.map candidate being uncallable + Fixed multiple bugs in Hash/Baggy.classify-list/categorize-list + Fixed PERL6_TEST_DIE_ON_FAIL not exiting on failed subtests + Fixed autovification using Junctions as keys + Fixed infix:<^^>(Mu, Callable) candidate being uncallable + Fixed IO.l for dangling symlinks + Fixed infinite recursion in duckmap when mapper returned Any + Fixed .subst/.subst-mutate treating incorrect arguments as failed matches + Fixed .subst-mutate not returning all matches with :x + Fixed hang on smartmatching Promises against numerics + Fixed failure to smartmatch Numeric:U against Numeric:D + Fixed hang on incorrect .splice arguments + Fixed hang on incorrect .split offset + Fixed multi-argument WhateverCode not detected in double closures + Fixed Baggy:U ~~ Baggy:D emitting gut-referencing warnings + Fixed uncallable Dateish.IO + Fixed Exceptions::JSON for exceptions with no `message` method + Fixed Exceptions::JSON for exceptions with non-JSON-friendly attributes + Proc::Async decoding exceptions are now catchable + Prevented return handler being optimized out in `sub { 42.return }()` + Fixed error reporting when trying to invoke a native parameter + Fixed uncallable 0- and 1-arg candidates of infix: + Fixed Cool.match not setting $/ + Fixed Cool:U.IO coercion emitting internal warnings + Fixed Nil.chrs failing when called + Num:U++ now returns a Num zero instead of an Int one + Removals: + Removed argument-taking Dateish candidates for is-leap-year, days-in-month, and day-of-week [were never part of the spec] + Cool.IO no longer accepts any arguments + Overflow check has been removed from infix:<**>(int, int) + Additions: + Added basic Unicode 9 support (NFG changes for latest TR#29 still to do)) + X::Proc::Unsuccessful now includes command that was run + IO::Handle.new now uses 'utf8' encoding by default + Bare `put` now requires parentheses to call as sub + .head/.tail with no arguments now return the item and not a 1-item List + Added basic native attribute parameter binding + Made nativecast and spurt multies + Added .^elems metamodel method to enums + Enums can now be used to declare array shapes + Added X::Invalid::ComputedValue exception + Throw when dereferencing a null pointer in NativeCall + It's now possible to refer to sigiless parameters inside `where` clauses + Added extra candidates to .splice to allow for all combinations of Int|Whatever|Callable for both $start and $elems arguments + Made enums able to typecheck against the roles they do + Made Complex.new() return 0+0i + Int.new can now handle any value that can .Int + Added shortname() method to CurriedRoleHOW + Proc::Async new, stdout, and stderr methods now take :enc + IO::Socket::Async listen, connect, and Supply methods now take :enc + .Date and .DateTime are now supported on :U/:D Date/DateTime + Trailing empty cells can now be omitted in Pod tables + Mix/MixHash with non-Int weights can now be coerced to .Bag/.BagHash + Efficiency: + Made List.reverse about 5% faster + Made auto-threading about 10% faster + Made huge improvement to CUR::Filesystem.id performance + Made dir() about 20% faster + Made Regex.Bool about 2x as fast + Made Str.match about 3% faster New in 2016.09 + Fixes: + Various improvements to the content of error messages + Defaults on a slurpy params now throw instead of crashing at the VM level + Distribution::Path now handles native libraries correctly + Junctions now work in .classify + Control statements (e.g. `next`) in toplevel REPL now show useful error + IO::Handle.encoding now returns correct values + .comb/.split on binary handles now throws X::NYI + Fixed filehandle leak in precompilation + Regex in .grep and .first on Pairs now works correctly + Pod parser returns proper Bool instead of Int on passed config options + Fixed PERL6_TEST_DIE_ON_FAIL=1 exiting the test suite too soon or dieing on failing tests inside TODOed subtests + Fixed failure to accept enums as types for optional arguments + Fixed blocking bug when using socket accept and threads + Fixed fatal bug when using Non-ASCII tokens in regex/grammars + Fixed missing adverbs and candidates in Cool.split; made same as Str.split + Fixed missing adverbs in Cool.trans; made same as Str.trans + Fixed NativeCall CArray hanging when created from empty list + Fixed various issues with reading chars from an async socket (uncatchable exceptions on decode errors, and mis-handling of graphemes and multi-byte sequences over packet boundaries) + Fixed "%%foo @@bar" interpolation trying to find %foo and @bar variables + Fixed mis-compilation and possible compiler crash when using a construct like /$=@(1,2)/ + Fixed a memory leak involving EVAL + Fixed a multi-dispatch cache unbounded growth bug involving calls with many named arguments + Fixed warnings emitted when using hyper operators on two hashes + Channel.elems now returns a Failure rather than eating all values + Fixed type error ion IO::Path.rw + Fixed …, ???, and !!! yadas not working to stub classes + Fixed tab-completion issues with non-identifiers in REPL + Additions: + Coercions now work in return types + Added RAKUDO_EXCEPTIONS_HANDLER env var to control exceptions output + IO::Handle.slurp-rest now has :close flag + CompUnit::Repository::Installation now cleans up short-name folders when empty + Added support for very large numbers in :42foo colon pairs + Added a .Map coercer for object hashes + All Unicode quotes can now be used as quoters inside qqww/qww + LEFT/RIGHT DOUBLE PARENTHESIS characters can now be used with q and others + Unicode digits can now be used with Match variables ($١), quote pairs (:۳<12>), negative numbers (-١), and radix bases (:۳("22")) + Efficiency: + Numerous improvements in CUR, offering up to 10x faster module loading + Baggy.ACCEPTS(Baggy) is now about 25x faster + Baggy eqv Baggy is now at least 10x faster + Infix === now checks identicality, offering performance gains on large objects, such as a Bag with 1000 elements + Many metaops are now about 10% faster + Made Junction.Bool|ACCEPTS about 2x faster + Improvement in performance of IO::Path::child + Made permutations() about 5x faster + Made List.permutations about 40x faster + Made combinations() about 1.8x faster + Made List.combinations about 7x faster + Made Unix's canonpath several times faster for simple paths + Made Buf|Blob.reverse 1.5x faster + Made .IO.lines about 10% faster on large files + Changed APIs: + The operator precedence configuration rule `O()` has been changed to be more precompilation-friendly; rather than taking a string containing colonpairs, it now takes named arguments directly. This is not strictly a Perl 6 change, but rather a change in NQP, and thus only applies if you're doing fairly involved hacking on the grammar. If the sentences above made no sense to you, your code is not affected by this change. New in 2016.08.1 + Fixes: + Updated NQP version to avoid broken tag New in 2016.08 + Fixes: + Numerous improvements to content of error messages and addition of new previously-undetected warnings, such as on sinks and ... terms + Removed redeclaration error for anon subs + Concatenation/substr with strings constructed with repeat operator no longer results in incorrect strings + Fixed error for unknown symbol in parametric type + Things that produce a Seq no longer get constant-folded, avoiding bogus Seq exhaustion errors + where {} clause on unit sub MAIN no longer produces bogus errors + Fixed compilation and behaviour of :D on subsets + Assigning Nil to a :D variable now fails (unless its default is :D) + Fixed CURF's resolve generating the wrong repo-id + Fixed precomp file for Staging repo containing build path + Fixed merge global symbols failures when changing repositories + Fixed -Ilib and friends not overriding installed dependencies + Fixed <[a..z]> ranges breaking grapheme awareness + Fixed a race condition in Channel.Supply + Fixed an occasional deadlock when using the supply/react syntax + Fixed a race condition involving tearing down listening async sockets + start blocks now get their own fresh $! and $/ + .squish, .unique, .repeated, and .grep now correctly pass on .is-lazy + Fixed segfault on "multi cross{}" + .sort stored in a Callable no longer incorrectly returns BOOTArray + Smartmatch with two signatures, only one of which has slurpy hash, no longer produces spurious exception + @a.splice now returns array with correct descriptor + .rotor with negative gap that lands out of range now throws + Range.rotor with Rat arguments no longer crashes + .hash on Bag, Mix, BagHash, and MixHash types no longer stringifies keys + .abspath on filenames starting with '-' no longer results in empty string + generated setting file now has empty lines for those that were skipped in the past, allowing to directly map the line in a setting to the source code it was generated from + loop and repeat now properly self-sink + for { ... .map } now properly sinks + Backtrace::Frame.is-(hidden|routine) now returns Bool + Bool.Int now properly returns an Int + Starting the REPL with a module loading error, will now just exit + Names of phasers (such as BEGIN) will now be included in suggestions + Fixed loading of modules when a FileSystem repo doesn't actually exist + Fixed mis-scoping of blocks in s/// + Closure clones are no longer double code-generated + Caller $/ is now propagated through deferral + Fixed inconsistent coersions to Bool + Fixed over-assuming optimization of R meta operator + Fixed endless recursion in Any::BIND-POS under certain conditions + Additions: + Str.samemark('') now returns self instead of failing + Test.pm now provides bail-out() + Implemented $?MODULE and ::?MODULE + Implemented CompUnit::Repository::Installation::installed + InstalledDistribution now gets returned where appropriate + returns in signatures of many builtins now marked as --> Nil + .min/.max can now be called on Hashes + Invocant marker (:) can now be used in bare signatures + Added X::Syntax::NonListAssociative exception type + Hash[Any].new.perl now roundtrips + Buf.push|append|unshift|prepend also allow Blob:D + .succ now increments additional 29 digit ranges, such as Thai digits + List.sum is now marked as nodal + Can now return Nil as a result of a Promise + Implemented :exists on multi-dim assoc subscript literals + Added PERL6_TEST_DIE_ON_FAIL env var in Test.pm6 to bail out of the test suite on first failure + Efficiency: + Streamlined multiple internal code paths that may or may not result in performance improvements in user code + Improved dynamic variable lookup (2x as fast) + Hash.AT-KEY is about 35% faster + Hash.ASSIGN-KEY about 2x as fast + Hash.DELETE-KEY about 2x as fast + Hash[Any,Any].AT-KEY about 20% faster + Hash[Any,Any].ASSIGN-KEY about 15% faster + Hash[Any,Any].BIND-KEY about 15% faster + Hash[Any,Any].EXISTS-KEY about 10% faster + Hash[Any,Any].DELETE-KEY 10% faster + Repeated calls on Bag.WHICH now 5x as fast + Backtrace creation 25% faster + .first/.first(:end) iteration is now about 10% faster after testing 1000 elements + .minmax about 25% faster + .min/.max about 40% faster + min/max/minmax on native arrays is between 15x and 25x faster than non-native equivalent + Array.splice() almost infinitely faster and is much easier on memory (no longer copies anything but instead transplants internals) + Array.splice(offset,size) is now 20x to 40x faster for small offsets and sizes + Array.splice(offset,size,@) is about 10x faster + 10% improvement to .map/for in special cases of one-argument block that has a return signature that excludes Slips, such as -> Int $_ --> Str { .Str } + Many Set/SetHash methods are now at least 5% faster + Coercing a MixHash/BagHash to a Mix/Bag is now 300x faster + Coercing a Bag/BagHash to Mix coercion is now 1000x faster + Coercing a SetHash to a Set is now 80x faster New in 2016.07.1 + Fixes: + `make DESTDIR` now correctly finds CompUnit::Repository::Staging + .polymod with a lazy list no longer loses mods if the list runs out + Output from Test.pm6's diag() is no longer lost in non-verbose prove output when called at the start of the test file or during TODO tests + Bitwise operators that return int/Int no longer fail with candidate error when given a native int argument + Additions: + Improved error message when IO::Path.new is given incorrect arguments + Improved error message when .polymod is given a zero as divisor + Efficiency: + Str.samecase is now 5x faster + Str.indices is 10% faster + Str.rindex is 30% faster + Str.index is 30% faster New in 2016.07 + Fixes: + Mu can now be the result of a Promise + samewith() now also works on non-multi's + Many fixes in the area of pre-compilation and installing modules + Maps now correctly identify themselves as value objects + BagHashes and MixHashes no longer identify themselves as value objects + count-only and bool-only now are optional methods in Iterators (only to be implemented if they can work without generating anything) + Hash.Map now properly creates immutable Map + IO::ArgFiles.slurp / IO::ArgFiles.eof are fixed + Several wrapper file fixes + If a file is unknown in an error report, it is no longer shown (This typically happens in the REPL, or when doing an EVAL) + REPL whitespace and error handling + CompUnit::Repository::Installation no longer considers `bin/xxx` and `resources/bin/xxx` the same content address + Callable in a Signatures stringifies correctly + BEGIN time EVAL no longer negatively affects MAIN_CTX + Str.chop correctly works when given very large arguments + min/max on Failures throw instead of returning ±Inf + NativeCall's is mangled trait no longer ignored for CPPStruct + Additions: + The "is required" trait on Attributes can now take a Bool or a Str + Support for new leap-second at 31-12-2016 added + IO::[Path,Handle] gained a .mode method which returns the POSIX file permissions + Fixed LTA error message with Str.samemark when no pattern present + Distribution is now a role interface that enables encapsulating IO used for distribution installation + CompUnit::Repository::Installation now uses the new Distribution interface + The original distribution META `provides` data is now preserved + Custom repository implementations now supported, including precompilation + List.BIND-POS now fails instead of throwing + RAKUDO_JDB_PORT and RAKUDO_PRECOMP_NESTED_JDB debug environmental variables + Failures in Cool.Numeric and related coercers now get propagated + Improved warning message for literals with leading zeros + Improved error message for attempts to `use` core types + Efficiency: + The MMD cache accepts candidates with named parameters if it can. (This made adverbed slices about 18x as fast) + Str.samemark is 50x faster + Str.contains is 6x faster + Baggy.pick(N)/pick()/roll()/grab() are 6x faster + Array.List is 5x faster + List.elems is 4.5x faster + for/map with 2 arguments is 4x faster (e.g. for @a.kv -> $i, $v { }) + Str.substr-eq is 4x faster + List.Bool is 4x faster + Str.chop is about 3.5x faster, Str.chop(N) 20% faster + Map eqv Map is 3x faster + Make "for List.pairs {}" 2.5x faster + Array.pop is 2.5x faster + List.AT-POS/EXISTS-POS are 2.5x faster + Creating arrays with [] is 2.5x faster + Array.AT-POS/ASSIGN-POS/BIND-POS at least 2x faster for unreified elements + Array.DELETE-POS is 7x faster + Str.starts-with is 2x faster + Array.shift is 2x faster + Baggy.roll(*) is 2x faster + Blob/Buf.AT-POS is 2x faster (underlying method of e.g. "$buf[2]") + List.STORE is 2x faster (e.g. "my ($a,$b,$c) = (1,2,3)") + Make "for List.kv {}" 1.8x faster + Array.push/append is 40% faster + Str.comb 30% faster + Map/Hash initializations are now 30% faster + A slurpy taking a list is 30% faster ("sub a(*@a) { }; a(1,2,3,4)") + Str.ends-with is 25% faster. + Str.chomp is 20% faster + single element for/map in sink context without phasers, is 20% faster + Pair.new is 10% faster + val() is 5% faster + {}|[]:adverb is 2.5x faster + foo xx Int is 10% faster + Str.Int is 5% faster + Code.arity|count are 2x faster New in 2016.06 + Fixes: + Arrays with holes (e.g. from :delete) now correctly iterate/auto-vivify + Hash.keyof now correctly returns Str(Any) + Precompilation from a debug Perl 6 now uses "normal" Perl 6 executor + Inf,NaN,-Inf now can be coerced to Rat, and back to Num + Creating an Enum from a List/Range no longer warns + Precompilation on file systems with coarse timestamps no longer fails + An issue with reverse dependencies of installed modules was fixed + Fixed issue with comparing v6 and v6.c Version objects + Fixed ≅ ignoring the signs of compared numbers + Additions: + Add default for CompUnit::PrecompilationRepository.precompile(:source-name) + The "is-approx" sub from Test now allows for relative/absolute tolerance + The "cmp-ok" sub from Test now can take any infix as Str, even custom ones + A fail in a custom BUILD will now be returned, rather than thrown + use MONKEY-WRENCH and use MONKEY-BARS are now reserved names for future use + Efficiency: + .map between 10% and 30% faster + .unique, .repeated and .squish 10% to 20% faster + gather/take about 10% faster + Basic object creation (using either .new or .bless) now up to 3x faster + (+@a), (*@a) and (**@a) signature handling between 20% and 4x faster + Iterating List/Array now uses less memory and is faster + All routines now have less overhead, thanks to improved implementation of return handlers (including those that do not use return) + return, next, last, and redo are now all faster + infix:<,> about 40% faster + numerous other smaller or edge-case speed improvements + Deprecations: + The "is_approx" sub (note underscore) from Test New in 2016.05 + Fixes: + Fix EVAL during precompilation + .substr fixes + many precompilation fixes + clean up error messages + Streamline some core classes + Harden Mu.Str against moving GC + JVM fixes + Simplify $*USER/$*GROUP initialization + Additions: + Ability to use a customer debugger module + $*MAIN-ALLOW-NAMED-ANYWHERE allows MAIN to be friendlier about where it accepts flags + Add richer set of comparison operators for Versions + Many improvements to precompilation - building OS packages with precomp'd code should now be possible! + Introduce .Map coercer + Implement alternate ways to call subtest + Efficiency: + Version comparisons are now 2x faster + List.minmax is about 3.5x faster + Num.perl is about 2.4x faster + Int division/modulus is about 1.5x faster + LoL accesses are about 3x faster + autothreader is about 2-3x faster + Make Any junction methods 14x faster + Make Junctions faster + Map.kv is about 10% faster New in 2016.04 + Fixes: + .combinations cleanup + "magic" inc/dec cleanup + utf8-c8 encoding crashes that occurred on random data + fix missing pre-comp store unlock + missing module error mentions line number + some JVM fixes + Additions: + Improved REPL + Add :kv to .first + Add provisional $*DEFAULT-READ-ELEMS + Efficiency: + Removed leaks associated with EVAL + Speed up .minpairs/.maxpairs + Speed up Object:D cmp Object:D + Speed up sort 3-15% New in 2016.03 + Fixes: + Buf.push|append|unshift|prepend now can take int arrays + Better error messages when trying to put illegal values into Blob|Buf + The REPL now allows statements spread over multiple lines + No longer show compilation error twice when loading module with errors + Only Bufs can now be specified as parameter to subbuf-rw + Values in %*ENV now have allomorphic semantics + Supply.Channel / Channel.Supply no longer lose exceptions + Calling .prepend on a native array no longer infiniloops + Blob.WHICH now indicates a value (immutable) type + Better error reporting for problems with sprintf() + Some obscure unicode codepoints causing segfaults no longer segfault + Directory listings now handle wrongly encoded data using utf8-c8 + Additions: + Native str arrays (my str @a) + Buf.pop, Buf.shift and Buf.splice (similar to List.*) + Blob|Buf.allocate($elems, @init-pattern) + Buf.reallocate($elems) added + &*EXIT can be set to handle exit() statements (for embedding Perl 6) + Efficiency: + Auto-generated accessors/mutators use less memory and are faster + Most Blob|Buf related options use less memory and/or are (much) faster + Same for much of the native array support and IO reading operations + Many Parameter/Signature related options are much faster + Punning a role is much faster + Modules can now be shared between rakudo versions + Reordering "use lib" statements made NativeCall tests 3x as fast New in 2016.02 + Fixes: + Many memory leaks fixed in MoarVM + Fix several issues with "require" + .perl of an iterated Seq (RT #127492) + Set.hash now returns an object hash (RT #127402) + Use the order of arguments in usage display, rather than hash order + Exception.fail now dies reliably outside of a routine + fix problem with Str.split with multiple overlapping needles + Map.Hash now correctly separates from the Map + Fix roundtrip issues of Instants + Specifying ::a now gives proper compile time error (RT #127504) + Rakudo jars are now installed in the proper location + Enums with a type object now fail with an NYI error + .first(:end) on uncached iterators no longer fails + Additions: + Buf.unshift/Buf.prepend + DateTime.new(y,mo,d,h,mi,s) fully positional candidate + Can now uninstall distributions + Date/DateTime now fully subclassable + REPL now supports multi-line statements (experimental) + Efficiency: + Str.trans can now be up to 160x faster + @a.chrs noq 3x faster, chrs(@a) now 9x faster + Many Map/Hash related functions can be up to 2x as fast + Magic increment/decrement on strings 2x as fast + Some percentages improvement in object creation, phaser handling, summing, creating failures. + Object hashes re-implemented using 1 internal hash, instead of 2. This results in about 10% less memory usage, and a few % less in CPU New in 2016.01 + Fixes: + Chained .grep calls on Supply fixed (RT #127297) + Fixed interaction with perl6-debug and precompilation that resulted in an endless loop + re-enabled warning when smart-matching against a True or False literal + Fixed internal error when reporting certain type errors (RT #127207) + Fixed rare "duplicate definition of symbol" errors (RT #127107) + Fixed interpolating of pairs with non-key strings into signatures + Fixed error when smart-matching Seq against a Set (RT #127166) + Improved error message when smart-matching against an S///-expression + Fixed bad interaction between EXPORTHOW and multiple declarations (RT #126566) + Fixed various issues regarding precompilation + Improved accuracy of Complex.sqrt + hyper now preserves order of results, as designed + Range.sum on an empty, numeric Range is now 0 + Fixed Promise.allof() with an empty list of promises (RT #127101) + Improved message on premature virtual method call (RT #127097) + Better error message for module load failures of types that are part of the setting + Support for Readline in addition to Linenoise New in 2015.12: + Features + Fixed size and multi-dimensional typed and native arrays + Greatly overhauled module loading and installation, including handling precompilation at module installation time in Rakudo + Automatic precompilation of modules + 'no precompilation' pragma to opt out of precompilation + Can now specify the backlog for listening sockets + NativeCall now knows the size_t and bool types + Give IO::Socket::INET connect/listen methods + while/until loops can now return lists of values + We now catch many more kinds of "Useless use of X in sink context" + On the flip side, the optimizer now has a much better idea of what is sunk + A number of convenient Unicode equivalents were introduced + Superscripts can now be used for integer powers + Non-digit unicode characters with a numeric value (½ and such) can now be used for that numeric value + There is a new "approximately equal" operator + The .narrow method can narrow things that are approximate integer + Allow quoted words as input for Buf.unpack + Can now mix in to enums + Implement List.first() + Added Supply.head and Supply.share + Implement Range.rand + Add support for USAGE argument help + Provide tau constant (also: τ) + Can now use channels with supply/react/whenever + Implement %?RESOURCES + Allow for :every *and* :times in SCHEDULER.cue + Implement Promise.at + Add .Date/.DateTime coercers to Instant + Implement native-descriptor on handles/sockets + Add UDP support to IO::Socket::Async + Switch to doing newline translation at I/O boundaries + Add support for specifing the api/abi version to native (NC) routine + Greatly improved support for sized and unsigned native lexicals + Implement CLOSE phaser for supply blocks + Respect multi's sigs in role composition + Treat multis with equivalent sigs as collisions + New method $*VM.platform-library-name + Incompatible changes + Bool is now a proper enum + Supply.new replaced by Supplier.new + An exact arity match in multiple dispatch beats slurpy/optional + Supplies consistently treat list values as single arguments + Remove grep-index/first-index/last-index for attributes in grep/first + Remove support for Str.split(:all) (use :v instead) + Changed IO::Socket::Async reading API to .Supply method + Order Complex first on .re, then .im + Order ranges first on min, then on max + Use of EVAL now requires a declaration of 'use MONKEY-SEE-NO-EVAL' + Likewise regex interpolation is limited in the absence of the declaration + Empty loop modifiers must now use Nil to avoid "useless use" warning + Thunky operators now thunkify arguments even when used in metaoperators + SEQ() is renamed to STATEMENT_LIST() to avoid extra overloading of 'sequence' + Tweak attribute initializer semantics match assignment semantics + Make @a[^2] consistent with @a[0,1] + Make ::= a NYI, in light of 6.c + Promise.Supply is an on-demand Supply + Remove earliest syntax + Forbid argument-less Date.new + Forbid Instant.new + Remove IO::ArgFiles.nl + Move sub-byte native int types to experimental + Enforce return types in pointy block sigs + Kill off has-accessor; use has_accessor instead, consistent with MOP + Make X, Z, and roundrobin respect items + Fix loss of structure in xx + Enforce SSA on sigilless in `my (\x, \y) = 1, 2;` + Remove IO::Socket::Inet.input-line-separator + Remove IO::Socket::Async.(bytes|chars)-supply + Remove IO::Handle.(ins|nl) + Remove IO::Handle.seek(pos,Int:D whence) + Promise.[anyof|allof] no longer break + Make pack and unpack experimental + Fixes + Dynamic variables are now visible inside start { ... } blocks + Sparse array no longer acts empty on shift + Disallow positions < 0 on index/rindex + Make "require PACKAGE/STRING" return said PACKAGE/STRING + Fix BEGIN/CHECK block scoping precompilation bug + Fix bug in the scheduler that could swallow exceptions + Supply.from-list should follow 1-arg rule + Prevent data loss in various cases with async sockets and processes + Autoincrements on native ints are now faster than on Int + The ~~ operator can now chain with other comparisons in many circumstances + Imported operators no longer lose their precedence info + Various numeric operations now return overflow/underflow failures instead of wrong value + The :ss, :ii, and :mm options to s/// now all work together + Ranges and complex are now ordered more consistently + Mixin Callable[$type] for all ways of declaring return type + Don't ignore return types when calling ACCEPTS with Signatures + Make MMD setup of sub print same as say/note/put + Fixed circular module loading detection + Cool.substr-eq should return a Bool + Fix some failures to catch return outside routine + Stop phaser loop swallowing loop exceptions + Fix FIRST in loop/while/until + Consistently return Nil for no value, not a typeobject + Import should reuse precedence of exported ops + Fix slurpy hashes in Signature ACCEPTS + Fix SomeRole.^roles + Make :transitive the default for .^roles. + fail should reliably die if outside of a routine + Make slicing with adverbs respect itemization + Fix return type of qqw{...} + Make (1,2,3)[2] = 4 and (1,2,3)[3] give same error + Show non-printables in IO::Path.perl New in 2015.11: + Features + Initial shaped array support + \r\n (Carriage Return/LineFeed) is now a single (synthetic) grapheme + Unicode support adheres to Unicode Annex #29 + New IO::Handle.nl-in now allows multiple line-endings to be set + New IO::Handle.nl-out allows you to set line-ending used in IO::Handle.say + New IO::Handle.split/comb, same feature set as Str.split/comb, but lazy + IO::Handle.seek now accepts new SeekType enum values as 2nd parameter + New $?NL contains the output new-line character(s) for the current system + New 'use newline' pragma allows setting of $?NL + New List.head/tail methods for easier getting first/last N elements + New List.repeated for only getting repeated values in a list + Str.encode now allows :replacement parameter for unencodable sequences + Str.split now accepts multiple strings to split on + Str.split now accepts :v, :k, :kv, :p, :skip-empty named params + Str.comb(Int:D $n) candidate allows for combing string per $n characters + New Range.int-bounds returns first/last value for integer ranges + EVAL now passes on named params, to allow for customised EVAL subs + Auto-generated meta-ops vivified by referring to them, instead of executing + Unicode quotes are now also allowed in regular expressions + Can now coerce to generic types in parameters + Can attach adverbs to variables + Illegal assignment of different Numeric values now caught at compile time + &nextcallee implemented, which returns the routine that nextsame would invoke + Deprecated + IO::Handle.nl should either be IO::Handle.nl-in or .nl-out + IO::Handle.seek with a numerical value for 2nd parameter + Str.split( ... :all) should be written as :v + Fixes + RT #74414: the multi dispatcher now treats "is rw" parameters as tighter matches + RT #125123: improved error message for type check failures in int-typed arrays + RT #126436: improved error message for missing required attributes + multi submethods aren't inherited to subclasses + leading escape sequences representing whitespaces aren't stripped anymore from heredocs + Speedups: + [+] and sum + Blob.subbuf + List.sort + List.roll + List.rotate + List.reverse + IO::Handle.getc + Build system + New options --sdkroot and --sysroot to Configure.pl to support cross builds New in 2015.10: + Features + We are now officially in beta! + There is now an infix:<.> operator that does method calls with slightly looser precedence than the postfix unary method call. + Definite return values are now allowed, and force final statement to sink + Types with type smilies (like 'Int:D' and 'Int:U') are now first class, and supported in constraints for variables, for example + New pragmata 'use variables :D', 'use attributes :D' for defaulting type constraints to ':D' + The 'constant' declarator now supports syntactic constructs, so you can alias with 'my constant &infix: := &infix:<+>;' + New operator 'infix o' for function composition + New method 'produce' for triangle reduce + 'fc' for Unicode-correct case folding implemented + '' assertion in regexes implemented + Methods 'file' and 'line' in 'Code' point to the location of the declaration + grep now accepts :k, :v, :kv, :p attributes + first now accepts :k, :v, :p attributes + first also accepts :end attribute to indicate searching from end of list + 'is equiv<+>' as shortcut for 'is equiv(&infix:<+>)'. Same for 'tighter' and 'looser'. + 'Supply.throttle' for rate-limiting + 'Hash.append' added, now that Hash.push doesn't flatten + Internal methods ZEN-POS/ZEN-KEY added, for handling zen-slices + Promise.start now passes on any extra parameters to async block + Use of comma in sink context now distributes sink to its parts + Attribute containers may now have defaults + The new .self method is the identity method on anything + Negative integers are now allowed in the parameter slot + List associative operators can now be autoprimed, including Xop and Zop + Incompatible Changes + Array.push is now used for pushing one element (mostly); Array.append exists for pushing multiple values. Same for 'unshift'/'prepend' + Basic arithmetic operations ('+', '*', '-', '/') on Range objects that shift or scale the end points while maintaining exclusions + 'is rw' now only works on scalars (was a noop), and actually requires a writable container. Parameters of the form '\x' enable the old behavior + The v notation now allows alphabetic components: v1.2.beta. (Incompatible because method calls on a version must be protected by \ or () now.) + 'use v6b+;' notation is now recognized and enforced + Many list functions no longer flatten, or use one-arg flattening only + The sequence operator no longer flattens sublists, so you must use slip to get that effect + The precedence of infix:<.=> is now tighter to match new infix:<.> + Smartmatch with List now recursively uses smartmatch + Smartmatch with list now globs using '**' rather than '*' + callwith/nextwith no longer flatten + Speedups: + Many built-in methods that return iterables are now much faster + 'Bag' and 'Mix' are now faster + Rat addition/subtraction is now faster due to lazy reduction when consistent denominators are used ("cents stay cents") + Fixes: + Better error messages when comparing version strings with numbers + Several error messages that were lacking line numbers now include them + Anonymous types now compare correctly under 'infix:<===>' + Fixed 'once' block semantics (RT #126293) + A dying 'LEAVE' block doesn't prevent other 'LEAVE' blocks from running anymore + 'Str.tc' now does an actual Unicode title case operation + polymod had not been GLRified yet + List/Supply.squish did not properly handle single element lists/supplies + Several fixes to the REPL, e.g. with regards to completions + with/without now topicalize properly + Fix usage of match variable in replacement part of substitution + ».[1;1] (hyper on multidim subscript) now works + Methods map, push, pop, shift, unshift, append, prepend now properly marked as nodal + Attempt to smartmatch with S/// now warns + grep { /foo/ } now dwims again + Operator names now canonicalize internally to legal Perl names + Reduction ops now generalize to N-ary functions + Extra list comma is now allowed before any statement modifier + Various multisubs now report .arity more accurately + Exceptions can now correctly report the Nil type + Deprecations: + grep-index() deprecated in favour of grep(:k) + first-index() deprecated in favour of first(:k) + last-index() deprecated in fevour of first(:end,:k) New in 2015.09 + Features + Great List Refactor + New slurpy parameter, +args or +@args, to allow for one-argument style binding + New with/orwith/without conditionals allow you to check for .defined but topicalize to the actual value returned + New 'supply', 'whenever' and 'react' blocks for easy reactive programming + Mu.return implemented: allows for ".return with $foo" + Cool.indices/indices() expands on Cool.index/index() functionality + Callframes now allow easy introspection of associated Code object + Test.pm now has a 'does-ok' function for testing role conformance + '$¢' in grammars now refers to the current cursor + All Unicode digits can now be part of literal numbers + 'val()' and allomorphic types implemented + Most European quoting styles are now supported + The parser now detects and reports possible runaway quotes + New $[...] and ${...} constructs allow prefix itemization + 'dd' now displays variable type + Fixes: + Using a Range with an infinite .max now works on substr()/.substr + Parameter aliases are now handled in MAIN subroutines + Fixed typo about environment access in IO::Spec::Cygwin.tmpdir + Blocks like { .foo } are no longer considered to be a Hash constructor + Propagate ignorecase into subrules of regular expressions + eqv no longer defaults to === semantics, but snapshot (via .perl) + A constant declaration now pays more attention to its sigil + The .gist and .perl methods can now deal with self-referential structures + andthen and orelse are now topicalizers as specced + Fixed CompUnit.load, which is what use/require uses under the hood + Incompatible changes: + Creating constants with a ? twigil has become a NYI for now + No longer allowed to create dynamic constants with "my constant $*FOO" + Forbid to use the very same variable to init itself directly in declaration + Parcel is no longer a type, use List instead + 'is parcel' trait is now 'is raw' + .gist now puts brackets around lists and arrays + IO::Handle::lines no longer returns an empty last line + The 'Enum' type is gone; use 'Pair' instead. + Deprecations: + All Deprecations removed in preparation for Christmas release + NativeCall: + Added support for calling into C++ libraries and calling methods on C++ classes New in 2015.07 + Features: + Cool.substr(-rw) and &substr(-rw) now also accept a Range + Added trait "is required" on class attributes + Parameters like :n($n) are presented as :$n in .gist + &?ROUTINE and &?BLOCK + Conversion forms now understand :16(':8<377>') and such + &words implemented (to completement .words) + Numeric comparison ops (== > etc) for DateTimes + Fixes: + ENTER phaser now can be used as an r-value + Allow %{Type} as a way to say Hash[Any,Type].new + Several issues with the use of ';;' in signatures + Issues with regexen throwing an exception (RT #62086 & #72440) + samewith() now also works in subs + Calling the .clone method with alternate values no longer changes original + Various fixes and optimizations on List.splice + .grep and &grep now consume multiple elements for many-param blocks + Issues with precedence limit checking in EXPR fixed + EVAL now pays attention to languages in the compiler registry + Incompatible changes: + my Type $a is default($value) is now compile-time checked + my $a is default(Nil) only works on untyped (Mu) variables + Can no longer (roulette) assign to Whatever slice of a hash + Emit warning when \$ \@ \% \& are used to create a Capture + Now illegal to use a contextual ($*c) before declaring it in a block + EVAL :lang instead of for consistency with use :from + Deprecations: + $*PROGRAM_NAME in favor of $PROGRAM-NAME + $*EXECUTABLE_NAME in favor of $EXECUTABLE-NAME + pipe() in favor of shell() or run() with :in, :out or :err New in 2015.06 + Features: + Lexical pragma 'use trace' now outputs statements on STDERR + $=finish now contains text after first =finish/=for finish/=begin finish + __END__/__DATA__ now marked as obsolete Perl 5 features + Added :as named param to .classify / .categorize + EVALFILE added, for evalling source in a file + Implemented 'quietly' statement prefix to prevent warnings being issued + MinGW (Windows with gcc/gmake) is now also supported besides MSVC + Implemented 'has Type method' + Implemented Buf.push + Implemented S/// (returns the new string rather than in-place substitution) + Implemented X::StubCode for .../!!! code + Add :createonly to rename() + Fixes: + (10e6).pick/roll no longer build the whole list to pick a value + Regex.gist/perl return source of regex + start now takes a statement also, or a block (as before) + .push/.unshift on typed arrays now create the right type of container + Throwing a Failure counts as handling it + Incompatible changes: + DateTime default timezone format is now +HH:MM (used to be +HHMM) + "".IO / IO::Path.new("") no longer legal, use "." for current dir + next/last/redo don't allow expressions to be evaluated anymore + sign(NaN)/NaN.sign is now NaN + Stubbed-out code (via .../!!!) no longer results in X::AdHoc + Deprecations: + Using start as a sub with parentheses, e.g. start( { ... } ) + open(:p) New in 2015.05 + Features: + NFG, NFC, NFD, Uni + Implemented unicode property pairs with explicit arguments, e.g. <:NumericValue(0 .. 1)>, <:Name(/LATIN/)> etc (MoarVM only) + :m/:ignoremark implemented (now that we have NFG) + Implement <&foo: $arg>, <&foo($arg)> and my $a = "alpha"; /<::($a)>/ + List/Supply.rotor expects a list of Pairs (elems|elems => gap) + Added much faster List.pick(*,:eager) variant + Implemented CLIENT:: (nearest CALLER:: from different package) + Normal stacktraces no longer include references to code in settings + RAKUDO_BACKTRACE_SETTING to *do* include code in settings + RAKUDO_VERBOSE_STACKFRAME environment variable shows source lines + Warnings now show file/line unless the end with a newline + Implemented "is nodal" for signalling behaviour under hypers + Rudimentary tab completion available via the Linenoise module + Incompatible changes: + The readline integration that existed on the VM level has been removed; it now exists as a module. To restore readline operations in the REPL (ex. history, line control), install the Linenoise module via Panda + "unit" declaration needed for blockless packages + Various API changes for the Great List Refactor, such as... + 'for' loops not longer flatten; use 'for flat' for that + .map no longer flattens, map as a listop does. Use .flatmap to get the old behavior + Likewise other methods that used to flatten their invocant no longer do: all, any, one, none, unique, squish, min, max, minmax, classify, and categorize + Nil no longer iterates like the empty List. Use () or Empty instead. + Hashes no longer maintain insert order on Moar (on JVM they never did) + @*INC now contains strings (again), rather than CUR objects + Item seperator in INC spec is now "," + Type / info seperator in INC spec is now "#" + .pick($n)/roll($n) now always return lists, even when $n == 1 + $?FILE is now always an absolute path + Variable will init/post/compose throw NYI instead of silently doing nothing + The "is cached" trait no longer works on methods, throws a NYI instead + Deprecations: + Method .map should be used instead of .for + List/Supply.rotor now *must* have elems and gap specified + Test.pm functions are now kebab-cased (e.g. throws_like -> throws-like) + in regexes, avoid non-significant whitespace between alphanumerics + Unhandled Failure leaks are now warned about if detected by DESTROY + Fixes: + Many race conditions, specifically wrt to role specializations + Hashes use much less memory on Moar + my $a will begin/enter/leave/keep/undo/first/pre now set $_ properly + List.roll(Inf) now knows it's infinite, so is lazy + The REPL is strict by default now, that leaves only '-e' lines to be lax + Undeclared variable compile time error made clearer + IO::Handle.lines(:eager)/.words(:eager) now properly eager again + 'earliest' now handles remaining channels without specific handlers + Int/Rat ** -Int now generates a Rat if possible, else a Num + IO::Path.resolve now returns IO::Path as specced + CALLER now produces consistent results in the dynamic scope of implicit protos + A regex may now be used as the smartmatch of a sequence operator + Fix /a ~ (c) (b)/ capture order bug. + map <:alpha> in regexes etc to proper lookup on JVM + site/lib is now in the C library (.dll/.so/.dylib etc) search path + Fix scoping bugs with statement modifier for and given. + Make { 1 R=> 'a' } and { %*h } construct hashes. + Fix lexical context of regex interpolations + Various list ops now report .is-lazy correctly + Speedups: + generating backtraces is now lazy, improving the speed of e.g. warnings + Make List.pick about 3% faster, List.pick(*) about 7% faster + Implement new @*INC handling (about 30% faster startup time) (bare startup time is now below 100 ms on some machines) + NativeCall: + Implemented CUnions which map to the union C type definition + Implemented HAS declarator for attributes to mark it embedded into the CStruct or CUnion New in 2015.04 + Incompatible changes: + Installation directory layout changed: it now uses $PREFIX/share instead of $PREFIX/languages + "0" (0 as a string) is now True, no special-casing anymore + an Int() coercion type in a multi now creates two candidates: Any and Int + Fixes: + try now implies "use fatal", so failures are not leaked + "use fatal" now only works in its scope, and not in deeper ones + don't constant-fold Failures + throws_like will EVAL code in context of caller + pragma's like "strict" can now also be called with -M on the CLI + once a List is infinite, it will stay infinite (fixes several hangs) + can now slice an Infinite list into a finite slice + can now slice a finite list into an infinite slice + adverbs are now allowed inside a ternary + auto-generated accessors will not show up in backtraces anymore + $_ now defaults to Any, rather than Nil + intuited iterators no longer bypass endpoint if no exact match + intuited iterators may also skip literal values if endpoint is lower + intuited iterators beginning/ending with same length now according to spec + say now observes the .nl setting + exceptions in BEGIN blocks and constant are now handled better + binding now works again in the REPL + various other REPL fixes + \foo variables work properly in EVAL + declarations like my (Str $ing, Int $eger) correctly enforce types + detect and complain about placeholders in attribute initializers + use of | prefix in the wrong place now complains at compile time + \(...) capture constuct handles nameds and | correctly + regex interpolation now uses cursors instead of scanning + correct line numbers are reported for faling tests + Deprecations: + the RC release in September will remove *all* deprecations + "use nqp" now required for silent use of nqp::ops + Features: + native arrays + 'bit' and 'byte' native types + starts-with/substr-eq/ends-with for comparing strings inside other strings + first steps towards generic lexical pragma's (e.g. soft, strict, nqp) + basic implementation of Uni, NFC, NFD, NFKC, and NFKD on Moar backend + Uni.Str coercion produces an NFG string + chop now takes optional number of characters argument + where constraints on variable and attribute declarations + dists are installed into a database-like way by default (via panda) + 'is rw' parameters implemented for native subs (they get passed as a pointer) + complex and rat literals now work inside of a <> quote + attempting to bind a Failure now tells you what was in the Failure + reduce() now pays attention to associativity (which is now part of the op) + can now reduce ([Z]) with list infixes over an arbitrary number of lists + use Foo:from supported when Inline::Perl5 is installed + EVAL $code, :lang supported when Inline::Perl5 is installed + Speedups: + Str.codes/chars/uc/lc/tc/tclc/ord/flip about 25% faster + List.pick about 10% faster + Mu.clone about 8% faster + make xx about 1.8 times faster + several speedups in matching + numerous Num.Rat optimizations: 6.5x faster New in 2015.03 + Incompatible changes and deprecations: Any code *calling* the old method names, will be given a deprecation warning, and will continue to work. Any module that *implements* MMD candidates for any of these methods with their old name, will probably break. Please start using the new names as described below. + renamed internal hash/array/code/* methods: - OLD NEW - at_pos AT-POS - exists_pos EXISTS-POS - delete_pos DELETE-POS - assign_pos ASSIGN-POS - bind_pos BIND-POS - at_key AT-KEY - exists_key EXISTS-KEY - delete_key DELETE-KEY - assign_key ASSIGN-KEY - bind_key BIND-KEY - invoke CALL-ME - Supply.on_demand Supply.on-demand - Supply.schedule_on Supply.schedule-on + renamed traits - hidden_from_backtrace hidden-from-backtrace - hidden_from_USAGE hidden-from-USAGE + Deprecated use MONKEY_TYPING for use MONKEY-TYPING. + Incompatibility change: spaces are no longer allowed in operators. + Disallow redeclaring constants in the same scope + Throw redeclaration error for duplicate type capture + Deprecate IO::Handle.input-line-separator for .nl + Remove parrot support from Rakudo. + Don't print deprecation messages if RAKUDO_NO_DEPRECATIONS env var is set + Features + Allow Buf.AT-POS to return an l-value. + Implement method ^foo($) { ... } syntax. + Implemented PairMap (the simple case only, for now). + Implemented .antipairs (pairs with value => key). + Implemented .pairup for creating pairs from lists. + Implemented LEXICAL, OUTERS and CALLERS pseudo-packages + Implemented UInt (sub)type and coercer. + Add a array[T], usable for native int/num (MoarVM only for now) + Other native improvements, e.g. my int $a; $a++ + Smart quotes (as in “foo”, ‘bar’, ‚baz’ and „zap”) now also supported. + Improve and test support for Listy types in JVM Interop. + Hyper-infixes (like »~») are faster and have more features. + Make token prefix properly compete with term in LTM + not() and so() are functions as well as prefixes. + substr-rw() now accepts the same range of parameters as substr() + keywords now require whitespace (unless shadowed), which allows: my \if = 42; say (if) if if; # now says 42 + Implement IO::Path.resolve on r-m/POSIX + Catch P5ish use of $/ + Fixes + Catch wrong attribute usage in a regexes. + Fix compiler warnings on OS X / JVM backend + bare say now complains about no valid arg + Make .invert no longer infiniloop + Make List.kv completely flatten its values + Update error message for $] to use $*PERL.version + Fix JVM runner generation on Windows. + fix $*KERNEL.arch for raspbian, ugexe++ + Make $?TABSTOP immutable + Make CALLER::<&?ROUTINE> work + Errors like "expected Array[Str] but got Array[Str]" have been fixed. + Optimizations + Make my int/num @a = Range about 1000x faster + Make generic Str.subst between 5 - 10% faster + Make s/// up to 25% faster (for many changes) + Make Bool.pick and Bool.roll up to 2x faster + Make Bool.pick()/roll() another 10% faster + Make substr(-rw) about 10% faster + substr("foo",1) 2.5x faster + substr("foo",1,2) 6x faster + substr("foo",*-2) 1.5x faster + substr("foo",0,*-2) 1.5x faster + Make %h = 42 about 10% faster + Test.pm changes + Several improvements in Test.is() wrt to handling type objects and whitespace. + Add simple use-ok implementation + NativeCall.pm changes + 'is native' will also accept Callables to allow runtime library detection + Implemented nativesizeof(T) + Add typed Pointer type as replacement for OpaquePointer + Throw exception for wrong arity in native subs New in 2015.02 + Overriding invoke/postcircumfix:<( )> for type coercions (ex. MyType(...)) now passes the function arguments as-is, rather than just passing a Capture containing them + optimizations to slices with adverbs + improved error messages from sprintf and fmt + improved error message when trying to inherit from a class that isn't composed (like a stub) + Proc::Async polished (improved error reporting, relaxed type constraints) + LoL assignment is now autovivifying + Semicolon/"rest of file" form of the MAIN sub implemented + Parsing for infixes like "$foo !and $bar" or "$foo !&& $bar" fixed + Coercion syntax for parameters: sub foo( Str(Any) $x ) { ... } + Str(Any) as a term now parses as a coercion type + Foo() works as a coercion type shortcut for Foo(Any) + Metaop "=" now respects the precedence of the op it's meta-ing + Enable term definitions via "my", e.g., "my \term:<∞> = Inf" + Added "polymod" method on numerical values + Made simple Str.trans / tr///, Str.subst about 20x faster + File test operators now follow symlinks on systems that support them + New method Rational.base-repeating, optional precision argument for Real.base + Blob.bytes now returns actualy byte size, even for non-byte blobs + "6;" at unit start is no longer a way to say "no strict;" + Anon variables in sink context warn now correctly + Buffer types can now be passed to C functions via NativeCall + C types like "long" that depend on the architecture are now handled correctly + NativeCall is now shipped with rakudo, because it is coupled too tightly + Allow "constant" and "has" declarations to be initialized with .= + Types constructed for mixins ("does" and "but") are now cached, giving a 10x speedup on repeated mixins of the same role to the same type and cutting CORE.setting size down (by 700KB on MoarVM, for example) + Made .^can(...) aware of submethods + Fixed a pre-compilation bug when a multi-method in a subclass was installed in a cloned proto-method inherited from the base class, then called at BEGIN time New in 2015.01 + New simple way of creating an object hash: :{} + Str.substr-rw was omitted before, it isn't anymore + The loop ^1000 optimization is working again + Pair.gist has been simplified (a => 42, rather than "a" => 42) + Exporting an Enum now also exports its values + Proper error handling for a placeholder that has already been used as non-placeholder in the same scope + Sub form of 'unique' introduced, 'uniq' deprecated + Supply.for deprecated in favour of Supply.from-list + All deprecated features will be removed with 6.0.0 (sometime in 2015) + Startup on the JVM has improved by 20% + Many improvements to Java interop for the JVM backend + Several precomp issues have been solved + Better error messages for die(Failure) + Fixed CATCH/CONTROL blocks in the program mainline + Substitution now supports assignment meta-op, e.g. s[\d+] += 2 + Many memory and CPU optimizations New in 2014.12 + Flakiness on OS X has been fixed + Support for Increase/Decrease, bless(*,...) removed, were deprecated 1+ year + Method FALLBACK implemented + $str ~~ s/// now returns a Match or list of Matches + Updated List smart-matching to latest design + $*DISTRO and $*KERNEL updated ($*DISTRO now actually report the Linux dist) + Most, if not all, signals are now supported everywhere (MoarVM only) + Configure.pl: Fixed check for outdated nqp-m; warn on missing --prefix + Optimizations of integer division and Rat construction + Added Metamodel::Primitives, to open up more meta-programming possibilities (publishing method caches, completely custom meta-objects, etc.) + Support for closure parameter signatures + Implemented chained sequences + Implemented longest literal LTM tie-breaker + Calling "close" on a Supply will now close all of its taps + Added "extension" method to IO::Path + Fixed bare "slurp", it was broken in 2014.11 or before New in 2014.11 + using a constant negative subscript now dies at compile time + better wording for runtime negative index failure + force calling method for <.foo> even if sub foo exists + fix tie-breaking issues with longest literal matching + make List.last-index non-lazy (as the whole list needs to be reified anyway) + introduce IO::Handle.slurp-rest for slurping rest from handle + method 'for' as an alias for 'map'. Map will stop flattening the list eventually, 'for' remains as it is now. + method 'unique' as a successor for 'uniq' + warn about clashing enum aliases, and also poison these aliases New in 2014.10 + unstrict mode now default with -e + use strict / no strict implemented (but -Mstrict does not work) + Implemented Supply.lines/words + Implemented IO::Handle.words + Updated chdir() to spec + Implemented indir( $dir,:test,{...} ) + Implemented tmpdir($dir) and homedir($dir) + Implemented IO::Path.all: "foo".IO.all() is True for r/w file + IO::Path.modified|accessed|changed now return Instant, according to spec + Fixed ordering issue with IO::Socket::Async + Str.words is now lazy by default + Str.words no longer returns the word if there is only one word: this behaviour was unspecced and apparently used internally only. This old behaviour is still available by specifying the :autoderef named parameter. + method .exists/.delete have been removed after 1+ year of deprecation + performance improvements in Str.trans and tr/// + fixed Str.trans and tr/// for anchored regexes + Bool.pick/roll (without parameter) now ~20x faster + Numeric.round (without parameter) now ~4x faster + Supply.more has been deprecated in favour of Supply.emit (as per spec) + Deprecations will now tell when they were introduced, and will give a release version in which the deprecated feature will be removed. New in 2014.09 + ./perl6 --profile for MoarVM, generates HTML profile output, including spesh/JIT info + Workaround OS X make bug for MoarVM + Make new LOLLY syntax the default + support for submethod DESTROY (MoarVM only) + optimizations to Str.words, Str.lines, IO.lines, chomp, and return + Str.lines and IO.lines take :eager for still faster performance + added experimental support for Proc::Async, MoarVM only for now + Promise.keep/break now default to True/False + support for S26-style declarative (#| and #=) comments + expectations are reported before result in test failures + bare 'say' is now a parse error + range *..* is now allowed (and means -Inf..Inf) + AST.Str now prints the correct source for operand ASTs + 'π' implemented as synonym for 'pi' + support for :temp/:let declarators in regexes + Reduced memory size of CORE.setting, improved startup time + startup (on Moar) 15% faster than p5 w/ Moose + fix issue with $*EXECUTABLE pointing to an non-existing interpreter on parrot New in 2014.08 + print file/line annotations for warnings also on moar and jvm + fixed reduce/infix function syntax [[&foo]] LIST and ITEM [&foo] ITEM + can now call exit() in END blocks without hanging or affecting END block execution + remove speed penalty of large ranges in character classes + make LF, FF, CR and NEL available as character names + fixed negated character lookup in regexes \C[...] + quote words syntax splits on breakable space only + duplicates in character classes warn now, like in accidently quoted items <[ '/' ]> + fixed (s)printf regression with "+" and " " flags + allow a DateTime to smartmatch against a Date + fix %a{5}:delete anomaly, "as Str" is your friend + die / note now say "Died" / "Noted" when not given anything + ∅ is finally recognized as the empty set + more work under the hood to get in line with S11 / S22 + Str.indent() now treats its arg as an Int where appropriate + Restructure the QAST classes + Add LoL candidates for postcircumfix:<[ ]> and postcircumfix:<{ }> + Pass --moar-options configuration to NQP's Configure + Add .new candidate for creating a Date from an Instant + Fail when a Boolean is used as the matcher for &grep, &grep-index, &first, &first-index, &last-index, and the corresponding methods + Implement cmp_ok in Test.pm + Add HyperWhatever / ** + Add method invoke as the preferred way to write what was method postcircumfix:<( )> + Warn when a Code object is coerced to Str + If the LOLLY envar is set, have (;;), [;;], etc., turn into LoLs. Otherwise, parsefail + Add SEQ(a; b) to emulate the old behavior of (a; b) + Make &infix: many times faster + NaN === NaN (but still NaN != NaN) + fix multi-dimensional slice assignment + Add .note() method to Mu New in 2014.07 + require and build parrot 6.6.0 + Cool.eval and eval() are now removed + assigning a single itemized hash to a hash is now DEPRECATED (my %h = {...}) + .hash now turns an itemized hash into a hash + added unpack directives "a" and "Z" + subbuf-rw specced and implemented + Supply.zip-latest specced and implemented + minute value is optional in Timezone offsets in DateTime.new(), also a colon to delimit hours/minutes is now optional + file copy and creation operations on the MoarVM now give default file permissions of 0666 + the tr/// operator is implemented and has the proper return value + improved string handling for MoarVM backend + fixed class A { my $.x = 42 } scoping on MoarVM + removed hack that kept (|)= & co from working + re-arranged infixish actions to support [[*]]= etc + optimized CompUnitRepo::Local::File + optimized takedispatcher to cleardispatcher + all backends now allow C pointer arithmetic and casting of pointers to Perl 6 types (this functionality is exposed by NativeCall) + made block inlining a level 2 optimization + small optimizations to number parsing + fixed Label.gist + fixed 'fail' so it also prints a backtrace + fixed a repeat until code-gen bug + added CompUnit.name and fixed .perl + removed hack for $Inf/$NaN: constants Inf/NaN are exposed since a while + made initial/max threads introspectable + naive implementation of IO.umask + make .WHICH also work on type objects + throw a X::Subscript::FromEnd for @foo[-1] + throw X::TypeCheck::Binding on all backends (was MoarVM only) New in 2014.06 + say/note now a little faster for single Str (which is most common) + an initial implementation of S11 (Compilation Units) is now available + .IO.{d|s|z} are now about 40% faster and return Failure if path doesn't exist + $*DISTRO now works correctly on OS X (with name "macosx") + $*KERNEL now works correctly on OS X (with name "darwin") + initial implementation of $*USER and $*GROUP + initial implementation of Supply.zip-latest + implement dummy Lock (for $lock.protect( {...} ) ) on parrot + @*INC now only contains elements for actually existing paths + more work on allowing slangs transparently (such as "v5") + IO::Socket::Async now also works on JVM + can close tap to stop listening on a socket + implement Supply.on_demand, for making on-demand supplies + fix race condition in async socket reading + can now also bind to dynamic variables + LAST phaser used to fire when not actually iterating, now fixed + (Set|Bag|Mix).pairs now return immutable Enums + (Set|Bag|Mix)Hash.pairs no longer allow changes feeding back + optimize :a(:$b) and attributive binding + optimize IO::Path.contents + optimize push, unshift, and comb + assorted optimizations to Junction construction and dispatch + optimize no-args case of @foo>>.bar + implement :42nd colonpair syntax + include correct version information in perl6-debug New in 2014.05 + asynchronous timers on MoarVM backend + added or updated many Supply methods: act, batch, categorize, Channel, classify, delay, elems, flat, grab, last, live, max, min, minmax, merge, migrate, Promise, reduce, reverse, rotor, sort, squish, stable, start, uniq, wait, zip + add list functionality to 'on', as with new S17 spec + added .Supply coercer + added IO::Notification.watch_path / IO::Path::watch which return a Supply of file system changes + added signal() which returns a Supply of Signals (such as SIG_HUP) + added IO::Socket::Async.connect, returns a Promise with a IO::Socket::Async + added IO::Socket::Async.send, returns a Promise with success / failure + added IO::Socket::Async.chars_supply, returns a Supply with chunks + added first-index, last-index, grep-index subs/methods + Pair.key was erroneously implemented "is rw" + added "subtest code, desc" to Test.pm (inspired by P5's Test::More) + added "throws_like" to Test.pm (formerly of Test::Util) + Test::Tap::tap_ok and throws_like are now 1 test (using subtest) + BagHash-- on non-existing key no longer fails (as per S02 spec change) + (Set|Bag|Mix)(|Hash) now have a .fmt method + deprecate $*OS, $*OSVER, $*VM, $*VM, $*PERL $*PERL... + added $*KERNEL, $*DISTRO, $*VM, $*PERL as full blown objects + .delta (by recent spec change) in Date/DateTime now instead spelled .later and .earlier + TimeUnit enum removed; string named and positional arguments used instead + optimized grep,grep-index,first,first-index,last-index with seperate candidates for Regex and Callable. + "use v5" is no longer a noop, but actually tries to load the "v5" module (soon available as part of Rakudo*) + implemented labeled loops and throwing of labels as payload + added various optimizations, like optimizing out %_ when unused New in 2014.04 + significant performance enhancement for MoarVM, spectest running 20%+ faster + S17 (concurrency) now in MoarVM (except timing related features) + winner { more @channels { ... } } now works + fixed pb with Parcelness of single element array slices with adverbs + implemented univals(), .unival and .univals (on MoarVM) + make .pick/.roll behave sanely on Enums + fixed Str.samespace and ss// + added .minpairs/.maxpairs on (Set|Bag|Mix)Hash + added Bag.kxxv + Capture.WHICH implemented so that identical Captures have the same .WHICH + Naive implementation of "is cached" trait on Routines + Hash.perl now randomizes key order, while Hash.gist sorts + NativeCall passes all its tests on all backends New in 2014.03 + Fix suggestions for unknown routines when specified with '&' + Match sigil in suggestions for unknown routines depending on specification + Improve suggestions for 'length' and 'bytes' being banned in Perl 6 + fixed for-loops to be properly lazy + Zop= now works + numerous Pod parsing and formatting improvements + uniname, uniprop, and unival implemented on MoarVM backend + @ as shortcut for @$, % as shortcut for %$ + improved "unable to deduce sequence" error message + duckmap, deepmap implemented + list infix reductions no longer flatten + X and Z meta ops treat [] as items + unary hyper subscripts (@array>>.[0]) now work + fixed problem with .=uniq and .=squish New in 2014.02 + $*INITTIME implemented + improved code generation for loops on the JVM backend + eager and lazy statement prefixes + statementlist-level for-loops are now assumed to be in sink context + improved unspace parsing + don't itemize make's ast argument + allow definition of custom postcircumfix operators + :allow in pod code blocks works now + Configure: git protocol is now configurable + smartmatching against an IO::Path does the right thing now + perl6-debug-* is now installed by rakudo; the user interface is still a module available from the ecosystem + lots of improvements for moarvm, such as client and server socket support and opening pipes/subprocesses + finished NativeCall support on the JVM New in 2014.01 + Use .narrow on Numeric to coerce to narrowest Type possible + Can now supply blocks with multiple arguments as sequence endpoints + rule no longer exists + The eval sub and method are now spelled EVAL + Method calls and hash/list access on Nil give Nil + No longer need to separate adverbs with comma in argument lists + div on parrot will now always round towards -Inf + Added support for MoarVM; passes >99% of the spectests that Rakudo JVM does + Fixed gather/take stack overflow bug in JVM backend + Fixed closure in regex bug on JVM + Fixed some line number reporting bugs on JVM + Optimized Enum($value) coercion + Regexes: Aliased assertions now properly create sub-captures + Regexes: Improved detection/reporting of null patterns + Implemented IO::Async::File.spurt (JVM only) + Implemented Setty.kv and Baggy.kv + Use a global ByteClassLoader rather than one per class. (JVM only) + Implement more parts of NativeCall for the JVM New in 2013.12 + The Whatever Star now works inside chain operators like comparisons + Private attributes from roles are now visible in the classes they apply to + Use invokedynamic in some places on the JVM. + Memory improvements in ListIter + Faster method List.combinations + Simple lookahead assertions in regexes are optimized + Regexes do less superfluous scanning New in 2013.11 + Many concurrency primitives harmonized with new S17, but still pretty fluid + Refactored build system that allows building rakudo on both backends in the same place + Order::Increase/Decrease are deprecated. Please use Order::Less/More. + Leading whitespace is ignored for :sigspace + Better null pattern detection in regexes + The "gethostname" function implemented + Warn when private attributes are a marked rw or readonly + "is DEPRECATED" trait now produces report when process finished + Parcel.rotate implemented + Performance optimization: unfold junctions in 'when' clauses + capitalize/.capitalize have been removed, as per docs/deprecations + improved run()/shell(), these return Proc::Status-objects now + The ... range operator can now be chained: 1,2,3 ... 10,15,20 ... 100 + various other bug fixes, optimisations and additional tests New in 2013.10 + postcircumfix {} and [] are now implemented as multi subs rather than multi methods. This should allow for better optimization in the future. + Add support for "is DEPRECATED", making it easy for early adopters to stay current. + Track multiple spec changes for various container classes. + Greatly reduce object creation during Regex parsing. + Various portability fixes. + qx// and run() now auto-quote correctly + Allow #`[...]-style comments in regexes + unlink() behaves like P5's, it deletes write-protected files on windows New in 2013.09 + candidate argument to bless removed (per spec change) + @a.VAR.name and %h.VAR.name implemented + The $var.++ and $var.() syntaxes work + Lots of improvements on the Set and Bag types + [op]() with relational operators vacuously return True + tr/// implemented + Sockets on JVM implemented + sleep(), sleep-time() and sleep-till() updated to spec New in 2013.08 + "is default" traits on variables, $/, $!, $_ are default Nil + "is dynamic" traits on variables, $/, $!, $_ are dynamic + "of TypeObject" trait on variables + .VAR.default/dynamic/of return the state of these traits + Assigning Nil, calling undefine() restores the default value + .WHAT more accurately returns a type object for specifically typed cases + Option --gen-nqp for ConfigureJVM.pl + Include file name in parser errors + Parse labels, tr/// (both don't do anything useful under the hood yet) + CALLER::<$var> now only works on dynamic variables, as per spec. + Improvements to Threads, including Channel and KeyReducer (JVM only) + Asynchronous file reading (JVM only) + Improved JVM interop, including 'use :from' (JVM only) + Fixed subroutine inlining on JVM + Fixed %*CUSTOM_LIB on JVM * Fixed sink context handling on JVM + Reimplementation of Buf as a role + Implemented Blob role + Implemented sized/encoded Buf/Blob types (buf8, blob8, utf8, etc.) + Str.encode now returns most specific appropriate type + "once" phaser fully implemented + Named parameters "with" and "as" on uniq/squish + "samewith()" for calling method on same dispatcher again + "will" variable trait partially implemented ($_ not set yet) + Interpolating strings into heredocs now dedents properly + Solved a slowdown when declaring custom operators + Improved P5-regexes (backslash sequences, code blocks) + Make type objects appear as Nil in non-scalar contexts + Placeholder variables $^A .. $^Z no longer allowed, as per spec + printf %d now supports bigints also on Parrot + my and our scoped methods no longer go into the method table + Implemented keybag(), KeyBag.push, KeyBag.categorize + Re-implemented hash iteration for a performance win + Various optimizations, code cleanups and error message enhancements New in 2013.07 + Huge progress in JVM backend (feature-wise almost on par with Parrot) + List.first is now lazy + unspace before argument lists is now supported + fixed handling of indented heredocs + basic support for threads and promises (JVM only) + improved sprintf and other formatting routines + keyof method for typed hashes to get key type + Hash.perl nows works for typed hashes + 'is parcel' and 'is default' traits (work in progress) + Parcel.new now works + slight optimization to join of many items + implemented canonpath for Win32 IO::Spec + implemented squish + made []:(kv|p|k|v) work according to spec + properly parse Pod formatting codes with brackets other than <...> + the POD_TO_TEXT_ANSI environment variable now leads to some formatting being applied by Pod::To::Text + declaration of multiple operators in a scope now generates much smaller serialized output + Int.round method now takes a scale argument + implemented Complex.ceiling, Complex.floor, Complex.round New in 2013.06 + JVM backend added - passes initial sanity tests + type captures in signature binder implemented + IO::Spec::Unix.canonpath made more efficient + IO::Handle methods gist, perl, path added + Int.msb and Int.lsb implemented + dir() is now lazy + lines($limit) now doesn't read an extra line + .^mro methods added to a few role metaclasses + $/ and $! now visible in eval/REPL + IO::Handle.copy moved to IO::Path.copy + .{} adverb combinations all implemented + :$ colonpair syntax implemented + 'my &foo; multi foo() { }' gives better error message + reduce() more aware of fiddliness + &first now returns Nil instead of failing + $*CWD and $*TMPDIR now contain IO::Path objects + REPL bug fixed when same line issued twice + pick/pop/push/roll/reverse/rotate/sort/classify/categorize now fail immediately if the list is infinite + categorize now returns a Hash, not a Parcel of Pairs + "undef" warning now refers to Any, not Mu + improved error messages for hash shapes + Hash.(classify|categorize) implemented + IO::Path.chmod implemented + IO::Path.succ and .pred implemented + syntax parser now allows a dot before hyper postfix + Str.succ added for codepoints \x2581..\x2588 + Cool.path implemented + sequences between 1-codepoint strings implemented + div and / fail with X::Numeric::DivisionByZero (rather than dying) + doing .perl on Rat with denominator 0 doesn't go into an infinite loop anymore + Capture.exists implemented New in 2013.05 + IO::Spec, a port of Perl 5's File::Spec + support for exporting things form EXPORT subroutine + ?-quantifier in regexes doesn't create arrays in the Match object anymore + speedup of repeated shifts of large lists and arrays by 70%+ + implemented Cool.lines + renamed IO to IO::Handle; IO is now a tag role, as per spec + simplify timezone handling + .Set and .Bag methods for List and Parcel + regex special characters can be used as delimiters + allow slice with :exists adverb on hashes … + .hash now accepts optional :type and :of named parameters + Make :exists and :delete up to spec … + fix for autoviv Typed hash problem + constant-fold infix:<~> + make decl and init of our-scoped arrays/hashes work + fix regex interpolation slowdown + fix exporting of subroutines + fix slurpy is-rw array-parameters + failed regex matches return Nil + add support for IO::Path:: + fix reporting of errors in gather/take. + added 125 extra opening/closing bracket-pairs + fix build failure on SPARC and PowerPC + underlying nqp layer supports parrot and JVM as backend, in preparation for JVM support in a future Rakudo release > more than 100 not listed changes New in 2013.04 + add Capture.Bool() + optimize getting size of numeric Range + for loops are eager again + improvements to DUMP() + wrap NQP objects in ForeignCode, allowing perl6 OO calls on them + improve some messages on parsefail. + add link and symlink to IO + reduce compile-time autothreading to avoid issues with !== + improve optimizer - caching, constants + fix List.ACCEPTS() for Whatever special case + bring 'require' closer to spec, esp. by taking paths + bring 'IO::Path' closer to spec + remove parrot dynops already provided as nqp ops + translate a dynop to nqp code + update from pir:: calls to nqp:: New in 2013.03 + Type names now gist as (Any) rather than Any() + Warn when pure expressions are used in sink context + Cool.substr(...) now correctly accepts whatever-star closures + Fix character class subtraction bugs + Correctly detect undeclared variables in regex assertions + :i now respected in character classes + Improved output of Rat.perl + Implemented shellwords postcircumfix (%h<< $x 'foo bar' >>) + User-defined circumfixes now parse a semilist rather than just an expression and handle whitespace correctly + Forbid null operators + Warn about leading 0 not indicating octal in Perl 6 + Fix some automatic end of statement on "}" parse bugs + Better error message on for(...) {} being interpreted as a function call + Array interpolations now properly do LTM + Respect :i in constructs like /:i <$var>/ + Autothread "none" and "all" junctions before "any" and "one" + Helpful error if you write "else if"/"elif" instead of "elsif" + Throw exception if a Range is used as a Range endpoint + Corrected argument order in IO.seek + Multi-dispatch now mostly implemented in NQP, not C + Fixed LEAVE (and thus UNDO/KEEP/temp) not firing in multis or upon 'next' in a for loop New in 2013.02 + "Did you mean ..." suggestions for symbol-not-found errors + Compile-time optimization of some cases of junctions in boolean context + Date and DateTime now support a .delta method + IO::Socket.get now works again with non-Unicode characters + $() now takes $/.ast into account + proper return value for smartmatching against a substitution + better error reporting when a parent class does not exist + constant folding for routines marked as 'is pure' + natively typed variables now work in the REPL + better error reporting in the REPL + writable $_ in -p and -e one-liner + speed up eqv-comparison of Bufs + warnings for useless use of (some) literals, variables and constant expressions in sink context + /../ and rx/.../ literals match against $_ in sink context + array variable interpolation into regexes New in 2013.01 + sink context; for-loops are now lazy by default + first mentioning a variable from outer scope and then redeclaring it in the same scope (my $a; { $a; my $a }) is now an error. + the long-deprecated "SAFE" setting has been removed + 'require' now works with indirect module names + restored socket read semantics to returning the requested number of bytes + $obj.Some::Role::meth() now passes the correct $obj + try/CATCH now returns Nil when the CATCH is triggered, rather than the exception; this brings it in line with try without a CATCH + whatever-star cases of splice now implemented + sequences with Junction endpoints now work + corrected precedence of various set operators + fixed binding of non-Any things into hashes and arrays + can now import multis with the same name from different modules, provided all dispatchers are onlystar New in 2012.12 + ~/.perl6/lib is gone from the default include path + fixed indent method's handling of empty lines + fixed .indent(*) + parse errors now formatted like in STD, with color + location of parse error now indicated with context + highwater algorithm implemented, greatly improving accuracy of parse error line numbers and locations in a range of cases + some parse errors now report what the parser was looking for at the time the parse failed + better errors for unmatched closing brackets and two terms in a row + uniq now has === semantics as specified, not eq semantics + junction auto-threader optimized and is an order of magnitude faster + implemented sub term: + implemented texas versions of the Set and Bag operators + good error for use of . to concatenate strings + flattening large lists of Parcels now happens in about half the time + adopted STD panic/sorry/worry model, meaning that we now keep parsing further and can report multiple issues in a range of cases + we now catch and complain about post-declared type names + variable redeclarations are now just a warning, not an error + a mention of an &foo that is never defined is now an error + fixed .perl output for a Pair with a Pair key + interpolation of undeclared arrays, hashes and functions now detected + { a => $_ } now correctly considered a block, not a hash as before New in 2012.11 + user-defined operators only affect the parser in the scope they are declared in + fixed pre-compilation of modules containing user-defined operators + implemented precedence related traits (equiv, looser, tighter, assoc) + Perl 6 grammar NFAs are pre-computed, saving some work on each invocation; this shaved around 10% off the time needed to run the spectests + redeclaring a class as a role now gives a better error + the < foo bar > syntax in regexes now respects :i + << ... >> now interpolates, respecting quoting and pairs + fix error reporting for not-found dynamic variables + many protos now have much narrower signatures + quote parsing implementation aligned with the approach STD uses + regexes and quotes have better support for user-selected delimiters + quote adverbs + heredocs + carry out IO::Path.dir deprecation + implement infix: + macro arguments now carry their lexical environment properly + postfix operators of the form '.FOO' take precedence over method calls + version control markers detected and gracefully complained over + INIT phasers now work as r-values + our ($x, $y) style declarations fixed + take and take-rw now evaluate to the taken value + implemented cando method on Routine + FIRST/NEXT/LAST can now be used in all types of loop (previously limited to for) + implemented operator adverbs + implemented :exists and :delete subscript adverbs and on hashes + implemented :p, :k, :v and :kv subscript adverbs on arrays and hashes + fixed shell words post-processing like << foo "bar $baz" >> + byte-order mark at the beginning of a file is now ignored + fixed bug that could lead to disappearing symbols when loading pre-compiled modules + Configure no longer passes --optimize to Parrot if --parrot-option is specified + deprecated current &foo semantics + fixed #`foo and friends at start of statementlist + simplify setting line number of compile-time exceptions + made :($a, $b) := \(1, 2) update $a and $b New in 2012.10 + :60[24, 59, 59] radix form + delegation to methods using the handles trait + fixed serialization of Buf + improved handling of :P5 regexes (more features, less bugs) + determining that an object lacks a method is usually now much faster + reduced memory usage of Match objects and optimized their construction a little + some code-generation improvements related to void context + implemented :dba('...') modifier in regexes + various error messages improved through use of :dba('...') in the Perl 6 grammar + implemented 'x' in pack + added $*CUSTOM-LIB + eval in a method can now see self, attributes and $?PACKAGE + each REPL line no longer implies a fresh GLOBAL + fixed some Pod parsing issues with Windows newlines + fixed interaction of :i and LTM (alternations and protoregexes now respect it) + import of custom meta-objects only affects the scope they are imported into + made <-> lambdas work + can now parse nested pairs of quote delimeters, like q{ foo q{ bar } baz } New in 2012.09.1 + is-prime and expmod + smart matching against Signature literals + binding to signatures in declarators + the is hidden and base traits + ability to set encoding on sockets temporarily removed (reverts to 2012.08 behavior) New in 2012.09 + class Iterable does not inherit from class Cool anymore + basic macro unquoting + basic support for m:P5/.../ regexes + support for indirect type names in routine and type declarations + compiler now built with QAST-based NQP, which generates better code, thus making the compiler a little faster + support for "is export" traits on constants + implemented Str.wordcase + can now write more complex proto subs and methods, using {*} to enter the dispatcher + tie-breaking with constraints now picks the first matching one rather than demanding they be mutually exclusive New in 2012.08 + tclc implemented + --> ReturnType in signatures and prefix type constraints of routine return types are honored + reduced memory usage at build time by around 35% - 40% + the argument to IO::Socket.recv is now interpreted as a number of characters + enum lists and arguments to parametric roles are now evaluated at compile time + switched to new internal AST and backend representations (QAST and PIRT) + removed deprecated routines Str.bytes and Str.lcfirst/&lcfirst + errors from traits now contain file name and line number + IO::File and IO::Dir have been removed + inliner has been improved and can inline a wider range of routines + simple implementation of the 'soft' pragma + fixed over-eager treatment of numeric literals as int rather than Int in cases where they appeared each side of an infix operator + detect circularities in module loading + sigilless variables in signatures when proeceed by | or \ + prevented blocks that declare variables turning into hash constructors + made pre-compilation complain if dependencies are not pre-compiled yet + fixed interpolation of double-quoted strings in regexes + fixed issue with Num.new not being friendly to subclassing + implemented handling of complex numbers in Str.Numeric New in 2012.07 + Deprecated SAFE.setting in favor of RESTRICTED.setting + Ranges can now interpolate in argument lists + The built-in meta-objects (such as Metamodel::ClassHOW) now inherit from Any + &open now supports :enc/:encoding + Exception.fail, .resumable and .resume + Changed &dir to return IO::Path objects, not strings + Deprecated .bytes, .ucfirst, and .lcfirst + &slurp now supports :bin + &spurt implemented + cleaned up Version implementation + fixed :s file test + recognize obosolete rand() and rand(N) forms at compile time + anonymous subset types 'subset :: of Int where { $_ > 0 }' New in 2012.06 + Rakudo is now compiled with the same regex engine as user-space regexes use + transitive longest-token matching in protoregexes + changed the output of Match.gist + string to number conversion now fails for non-numbers + string to number conversion now recognizes radix notation + string incrementation is now aware of more scripts + <|w> word boundary in regexes implemented + more errors from within the meta model now contain line number and file name + &push and &unshift functions can now autovivify + user-defined operators properly participate in LTM + Rakudo's C code is now compiled with optimization switches turned on + basic module loading tracing with the RAKUDO_MODULE_DEBUG=1 env variable + longest token matching with alternations + require with argument list + compile time errors in loaded modules now show a module loading backtrace + improved list and .map handling + can now use | to flatten a pair into an argument list as a named argument New in 2012.05 + meta ops //=, ||= and &&= now short-circuit properly + Failure objects don't blow up the REPL anymore + allow case insensitive regex matches without ICU in limited cases + %*ENV now propagates into subprocesses + RAKUDOLIB env variable supported in addition to PERL6LIB + -I and -M command line options + $?LINE and $?FILE variables + warnings now include line number from program, not from CORE.setting + reduction meta-operator on list-associative ops now has correct semantics + now have :th alias for :nth in Str.match + import collisions now report the name of the module that is to blame + ms// fixed + <$x> in regexes caches the compiled regex, which can be a big performance win + implemented temp and let + 'use' can now import by tag name + 'use' with positional arguments + lib.pm + updated calling conventions for traits + implemented fff flip-flop operator; improvements to ff form also + removed current directory from default library search path + 'import' works + symbols installed in EXPORT in all nested packages, not just UNIT::EXPORT + enumeration types can be used as roles + END phasers now run when program ends with exit or an exception + fix Rat.floor and .ceiling to work for large numbers + improved Rat stringification + Real is now a role, as it should be + implemented < foo bar baz > syntax for alternations in regexes + implemented <( and )> syntax for setting from/to of match in regexes + support for non-Int enums + basic support for Version literals + chmod now available as a function + roundrobin implemented + fixed a bug in precompilation of modules that use roles from other modules + basic implementation of pack and unpack + implemented substr-rw, which provides an l-value (assignable) substring + implemented <~~> (recursive call into self) syntax in regexes + 'LAZY' statement prefix New in 2012.04.1 + autvivification for arrays and hashes + more robust module precompilation + improved infrastructure for calling C code + $.foo style calls now contextualize correctly + &infix: now return members of the Order enum in all cases + --doc=format now loads Pod::To::format and uses it for rendering + 'lib/' is no longer in the default include path + improved Parameter.perl + add .changed, .modified and .accessed methods to IO + improved --help output + install precompiled test module for speedup + fixed printing of backtraces when regexes are in the call chain + case insensitive regex matches now also work for interpolated variables New in 2012.04 + 'defined' is now a listop instead of a prefix op + fixed :16('0d...') + implemented simple interpolation in names in type declarations (class ::(const) { }) + $=POD renamed to $=pod + fixed slicing of non-lists with infinite ranges + fixed accidental over-serialization, cutting ~300KB off each pre-compiled module + scalar positionals no longer treated as slices + implemented Routine.package + join will now always reify at least 4 elements of a list if possible + warnings now have line numbers + brought back Str.indent + ban declaring pseudo-packages, with a helpful error + a name followed by :: now returns .WHO, so Foo::<&bar> style lookups work + Exception.Bool now returns true + avoided re-parsing of longname, which speeds up the parse a bit overall + implemented MY, CALLER, OUTER, UNIT, CORE, SETTING and DYNAMIC pseudo-packages + implemented ::<$x> and ::{'$x'} style lookups + some small optimizations to various Str built-ins and MapIter + improved --doc output + added $*PERL + implemented IO::ArgFiles.slurp New in 2012.03 + updated to dyncall 0.7 + infix: now autothreads over junctions + more typed exceptions + pre-compiled modules/settings are now serialized, not re-built on load + startup time is now about 25% of what it once was + significant memory and time reduction (~40%) when pre-compiling modules/settings + BEGIN and CHECK now work in r-value context + constant declarator now works with non-literals on the RHS + implemented Set, Bag, KeySet and KeyBag types + implemented :exhaustive and :nth match adverbs + implemented ENTER, LEAVE, KEEP and UNDO phasers + implemented FIRST, NEXT and LAST phasers in for loops + implemented START phaser, including use of it in r-value context + implemented also syntax for adding traits inside a block/package + implemented macro declarations and quasi quotes (sans placeholders) + implemented anonymous enums + 'our multi' now dies (used to ignore the 'our') + implemented PRE and POST phasers + ~25% performance improvement to array indexing New in 2012.02 + catch duplicate accessor generation required of "has $.x; has @.x;" + many more typed exceptions thrown + undeclared attributes mentioned in signatures now caught at compile time + empty Buf is now False in boolean context + implemented + implemented // syntax + // can call a predeclared lexical regex x + conjugate is now called conj + enumeration values .gist to just the key, not the full name + in regexes fixed + implemented Match.make(...) method + better error reporting for improper use of nextsame and friends + initializers now parsed as part of a variable declarator + trailing whitespace now removed from Pod declarator blocks + List.tree made more useful + implemented rename and copy functions + ().pick and ().roll now return Nil + default MAIN usage message includes .WHY of the candidates + X::Base eliminated in favor of Exception + various range iteration fixes; Num ranges now produce Num lists + LHS of the xx operator is now thunked + can now declare state/constant/our in regexes (before, only :my worked) + improved backtraces + catch constructs that require an invocant but don't have one + catch uses of virtual method calls in submethods and attribute initializers + improved parsing and performance of reduction meta operators + Rat arithmetic now properly defaults to Num if the denominator is too big + FatRat implemented + implemented long forms of regex adverbs (e.g. "ignorecase" maps to "i") + fixed "but True" and "but False" + object hashes, with the my %h{SomeObjectType} syntax + implemented Int($x) style coercions + implemented Capture.perl New in 2012.01 + -c command line option re-implemented + take flattening bug fixed + duplicate named parameter names detected + fixed clone being too shallow with regard to containers + fixed negative modulo for bigint + better Routine.perl + .DEFINITE macro implemented + .^methods, .^attributes and .^parents now support :excl (the new default) and :all + Array.delete implemented + restored basic -n and -p functionality + improved parameter introspection + fixed operations on bigints when the first operand had been mixed in to + fixed multi-dispatch narrowness calculation for native types + binding to array and hash elements + added Order enumeration, and updated cmp and <=> to use it + adding various missing magicals, such as &?ROUTINE and ::?ROLE + accessor generation for my $.x and our $.x cases + fixed @x>>.() (hyper-invocation) + updated Complex.Str to match current spec + fixed eval to see GLOBAL properly + implemented 0 but Answer(42) style mix-ins + fixed various issues in scoping/handling of $/ + fixed usage of make in a regex (previously, only worked in action methods) + optimized Range.roll and Range.pick for large ranges + fixed non-numeric, no-Str ranges + fixed build on Cygwin + fixed regex backtracking into subrules and captures New in 2011.12 + improved protoregex support, including NFA caching + and (lookahead and lookbehind) + backslash sequences in character classes + fixed quantified captures and :r interaction bug + optimized match object construction, ListIter, substr and chomp + improved performance of send/get on sockets + optimizer detects missing private methods and simplifies calls (level 3 only) + fixed some issues when an array was assigned to itself, maybe using .= + implemented .wrap and .unwrap, plus wrap handles with a .restore method + implemented .trans on strings + unicode properties can be matched against in regexes + binding to @, % and & sigils now checks for the appropriate role + assignments to variables declared with the & sigil now checked for Callable + typed hashes, partial support for typed arrays + some parametric role fixes + can now use but operator with a type object + smartmatching of regexes against arrays and hashes + socket IO now implements .write and custom input line separators + implemented getc + implemented .WALK + implemented ff, ^ff, ff^ and ^ff^ + implemented .REPR macro + implemented Proxy class + some typed errors are now thrown from within the compiler + stubbed methods from roles now require those methods to be implemented + updated docs/ROADMAP + .WHICH now returns ObjAt objects + defining new operators New in 2011.11 + CATCH blocks are now much closer to spec + big integer support + basic protoregex support with NFA-driven LTM for some declarative constructs + correct default values for natively typed variables + fixed initialization of state variables + improved support for natively typed variables + catch more uses of undeclared variables + splice() is now implemented + uniq() is now implemented + several runtime errors now throw properly typed error objects + various performance improvements, for example to the X meta op and Str.succ + improved support for MAIN argument parsing + fixed lexicals/recursion bug + IO.copy is now implemented New in 2011.10 + operators and functions with native type arguments + detection of call to undefined routines at CHECK time + various optimizations: inlining of operators, CHECK time dispatch decisions + performance improvements of MapIter + support @$foo style derefencing/coercion + Exception.backtrace + eval() has stopped to catch exceptions New in 2011.09 + Rewritten meta object protocol and object storage + many speedups + Int, Num and Str are now far more lightweight + much more robust handling of infinite list + basic LoL (List of Lists) support + :U and :D type modifiers + protos and multis now conform to the new spec + improved enum support + basic 'constant' declarator + .WHAT and friends as macros + chrs sub and method + support for .gist + run() has been renamed to shell() to conform to current spec + hyper methods now descend into nested data structures + basic safe mode (through --seting=SAFE) + recording and reporting of test timings (tools/test_summary.pl) + Pod parsing and --pod=text option + basic support for .WHY + greatly improved BEGIN-time support + traits applied at BEGIN time for packages, routines and attributes + parametric roles reify types properly, fixing many bugs + better handling of type variables + support $?CLASS, which is generic in roles + support import/export of custom meta-objects for built in package declarators + custom meta-objects can override method dispatch + faster, allocation-free multi-dispatch cache + a custom BUILD does not suppress default values + undeclared attributes detected and reported at compile time + basic support for native int/num types on lexical variables + int/num as attributes are stored compactly in the object body New in 2011.07 + fractional powers of negative numbers now result in Complex numbers + obtain spectests from a specific branch of the 'roast' repo + fix bug that prevented build on systems with little RAM New in 2011.06 + added take-rw built-in + numerous build system improvements + assignment now evaluates arguments right-to-left New in 2011.05 release + added a call counter for builtins in Perl 6-level subroutines + gcd (greatest common divisor) and lcm (largest common multiple) operators + build system improvements + added --ignore-parrot-rev option to Configure.pl + Configure.pl now creates "config.status" file + fixed relational operators when used with NaN + implemented Int.base + speedup smart-matching against numbers and Str.comb with default arguments + added RAKUDO_SUBLOG environment var for tracking subroutine calls + overall performance speedups New in 2011.04 release + implemented Str.indent + A new, much simpler API and implemention of IO::Socket::INET + Unified error messages to use "Cannot" New in 2011.03 release + improved error message on type check failure in assignment + -n and -p command line options + Test.pm's skip() now has argument ordering consistent with todo() + implemented complex conjugation + more IO methods related to stat New in 2011.02 release + IPv6 support + more robust numeric exponentation + --ll-backtrace command line option for PIR level stack traces + future-proof for upcoming generational garbage collector in parrot + various constructs now return Nil + infix: implemented + infix:<^^> and infix: improved + negation metaoperator is now restricted to operators that return Bool New in 2011.01 release + faster subroutine calls (type cache) + 'handles RoleName' now works + Test.pm: s/done_testing/done/ + non-spec debugging pragma Devel::Trace + improved parsing of keyword boundaries + sped up .comb New in 2010.12 release + new .trans algorithm + fixed $*PID on MacOS X + don't register names of anon types + configuration improvements + updated Any functions + fix $*IN_DECL leakage + implemented Hash.hash + Temporal updates + Buf.decode fixed + open() fixed for binary flag New in 2010.11 release + now works with parrot on git + implemented qw// + 5x speedup of .trans + various improvements to Set + don't use deprecated charset ops anymore + Bool.Bool and Bool.so now return False + implemented &elems + improved error for Date.new(Str) + improvement on hyperoperators + indexings like .[0 .. *-1] work now New in 2010.10 release + True and False now stringify according to the specification + basic form of 'require' for run time module loading + warnings from the setting now produce line numbers in the users' program + local time zone available as $*TZ + more consistent line numbers from warnings + getting and setting attributes via introspection + implement samespace, ms// and ss/// + hyper operator invoving = can now modify their arguments + speed up Str.flip by over a factor of 100 New in 2010.09 release + new methods on IO concerning the modify and access time of files + S32::Temporal now completely implemented + Instants and Durations + speedup for slurp() and .reverse built-ins + various improvements to the Set type + revamp of series operator code, and adaption to new spec + implement ...^ up-to-but-excluding-series operator + allow :r and :ratchet modifiers on regex quoting constructs + Bool.pick + significantly improved enum implementation New in 2010.08 release + syntactic adverbs on substitutions, rx quotes and m//, e.g. '$x ~~ s:2nd/a/b/' + updated ROADMAP + speedups for integer operations + the Match class's .perl method now produces useful, roundtrippable Perl code + the MAIN subroutine can now parse short arguments + the cmp and <=> operators now work on more numeric types + the Buf class now has .pack and .unpack methods with partial functionality + numeric bitshift operators now have the correct precedence + smartmatch against True or False is now an error New in 2010.07 release + support for delegation via 'handles' + implemented binding with := and read-only binding with ::= + implement OS related built-ins like mkdir, cwd + improved diagnostics in Test.pm + basic binary IO, buffer encoding and decoding + magic $*ARGFILE file handle + more robust closures + multi-level Array and Hash element autovivification + perl6 --version now identifies the exact git sha1 and parrot version + implemented 'is rw' trait on classes + file tests now work through IO, ie. 'README'.IO ~~ :e + generic, multi-level Whatever-currying (eg grep !(* % 2), @list) + improved error reporting in many cases, especially multi-method dispatch + implemented backtracking into capturing groups and subrules + phasers refactored, they can now return results and see the setting + custom circumfix operators + basic .wrap and .unwrap implementation + weighted Hash.pick + .perl on custom classes now dumps attributes + Basic implementation of the ==> and <== feed operators + Int ~~ Num is no longer true, as per spec; use Numeric instead + Improvements to enumerations New in 2010.06 release + new list model with immutable iterators, lots of fixes to lists and arrays + variable interpolation into regexes + compile time Whatever currying for infix, prefix and postfix operators + autoprinting in the REPL shell + in @*INC, the current directory '.' now comes at the end, as in Perl 5 + basic Buf implementation: Str.encode/Buf.decode work for UTF-8 + proper Perl 6 match objects + Backtraces with Perl 6 subroutine names and line numbers + MAIN and USAGE subs + basic version of Str.trans + mix-ins with non-roles (5 but 'string') + @*ARGS is now read-write + IO::Socket::INET again works in CORE + hash and array slices have been greatly improved + basic support for callframe() and CallFrame type New in 2010.05 release + implemented lexical and anonymous classes and roles + manual pages are now installed + the .match method now understand the adverbs :c; :p, :nth, :x, :g, :ov + test reports with tools/test_summary.pl now record detailed timing information + many improvements to numeric handling + implemented S (sequential) meta operator + fixed placeholder parameters ($^a, $^b) + basic enum implementation + implemented List.classify + turned on an additional 47 test files + further improved error messages + implement zero-argument versions of many binary operators + basic interoperation with Perl 5 through the external Blizkost project New in 2010.04 release + interpolation of expression ending in postcircumfixes into double-quoted strings (for example "cards: @cards.sort()") + prefix and postfix hyper operators + multi subs now work properly when lexically scoped + implemented item assignment with tighter precedence than the comma operator + loading of .pm6 modules + Basic implementation of Numeric and Real roles + implementation of DateTime and Date built-in types + named regexes can be declared outside of grammars again + support for numbers with arbitrary radix, including fractional numbers (:16) + implemented fmt(), printf() note() and IO.getc built-in routines + infix meta operators now inherit the precedence of the modified operator + &[+] short name for infix operators + hash slices + signature literals + smart-matching against signatures + more consistent implementation of prefix:<|> for interpolating things into signatures + better error message on accidental usa of Perl 5 features such as << as bit shift operators, and catch many perl 5 magic variables + implemented type Cool + implemented anonymous classes and roles + implemented $*PID + method introspection works again + better error message for calling non-existent routine in a namespace + now run programs with the setting as an outer lexical scope, as per spec New in 2010.03 release + The trigonometric functions and the Rat class have received numerous updates, making them faster and more complete + .^parent now works again + The invocation logic has received various speedups + Hash creation has been optimized + Various improvement related to constant internal strings have led to slight speedups + .pick, .sort, .keys, .values, .kv, sprintf were reimplemented, ported from the old 'alpha' branch + The statement modifier for loop works again + Various parsing bugs have been sorted out; one having to do with closing curly braces at the end of a line not terminating the statement + .CREATE, .BUILDALL and .can in the OO system have received attention, some of it leading to mild speedups + $*PROGRAM_NAME and @*ARGS now work + Deferral works again (nextsame/nextwith/callsame/callwith) + Array.delete works again + Fixed .?, .+ and .* along with matching latest spec on .? + Switch untyped variables to default to Any instead of Mu + &foo lookup syntax works again (including for operators) + Various cases of eqv operator implemented + Make overriding postcircumfix:<( )> work again, this time per spec + Make junctions of code objects invokable again + Lazy implementation of the Z operator + Added back @*INC + Read-only %*ENV support + Grammars work again + Implemented regexes taking parameters + Implemented proto-regex declarations + Initial work on getting subset types working again + Add back many of the file test methods + Added docs/S11-Modules-proposal.pod documenting how we intend to handle modules through Rakudo * + First cut of locating and loading modules with a given version and/or authority, and in absence of a requirement selection of the latest version by default if multiple are available. + Many improvements to the series operator + Implemented 'need' and a first cut of 'import'; 'use' works in terms of them + Import is now into the lexical scope by default, as per spec + Removed requirement to hand-pre-compile .pm to .pir for use with 'use' + Improved multi-dispatch candidate not found errors to include details of the available candidates + Implemented 'use MONKEY_TYPING' + Many cases of smart-match work again + $x.Foo::bar() and $x.$y() work again + $.foo(1,2,3) works again + !, R, X and Z meta-operators work, albeit with some caveats + s/foo/bar/ and s[foo] = 'bar' substitution syntax implemented + Array.rotate added back + User defined operators (prefix, postfix, infix) working again + Many more small but important improvements to built-in types and functions + Various other bug fixes + ROADMAP updates New in 2010.02 release + The branch formerly known as 'ng' becomes the new master branch + The previous master branch is now Rakudo/alpha + NQP-RX replaces NQP in the Parrot Compiler Toolkit, enabling the source code of the compiler to be written in a subset of Perl 6 that is much more powerful, most importantly with regexes, as the name suggests + The revised Perl6/Grammar.pm is much closer to the canonical STD.pm + Regexes may declare contextual and lexical variables + Lazy lists and arrays are partly implemented + The object metamodel is largely written in NQP-RX instead of PIR + The name of the root of the object hierarchy is now Mu + The term 'undef' is gone, replaced by Nil, Mu or *.notdef depending on context + Builtin classes derive from Cool which derives from Any + The refactored source code is more compact and more easily extended + The number of spectests passed has reduced from a peak of 32731 in alpha to 24221, because porting the functionality to the new master is still ongoing + Release numbering changes from 'dash' to 'dot' delimiter to get on better with various package management systems New in 2010-01 release + Added method form of eval. + Implemented :s and :l file operators + Added functions for logarithms using $base + Refactored subroutine calls to use new Context structures in Parrot 2.0.0 New in 2009-12 release + Only minor maintenance was done because all attention was being given to the Rakudo/ng branch, bringing in the new nqp-rx bootstrap compiler New in 2009-11 release + Rakudo now uses Parrot's updated calling convention features + support unpacking of arrays, hashes and objects in signatures + changed .pick to use :replace instead of :repl + many core setting optimizations and bugfixes + IO::Socket.recv() has been extended to accept a parameter specifying the number of bytes which will be received + Rakudo now looks up %INC in the right namespace when loading libraries for foreign languages New in 2009-10 release + smolder reports for spectest runs + more Complex trig functions + pure Perl 6 implementation of the Complex type + some variants of the new series operator + correct construction of twigilled colonpairs + infix:, .pred and .succ for the Rat type + when configuring with --gen-parrot, pass --optimize to parrot's Configure.pl + moved more operators to the setting and thus made them overloadable + { %hash } now correctly constructs a hash, not a closure + new, faster low level Signature type + improved Signature introspection + new, much faster signature binder + improved various error messages related to signature binding + signature literals now supported + binding of named arguments to positional parameters + attributive parameters implemented + package blocks now run as immediate blocks, as per the spec + lexical variables declared outside of packages now visible inside them New in 2009-09 release + updates to numeric operators: infix(Int, Int) creates a Rat + Rat (rational) numbers + overloadable builtin operators + contextual variables + setting values in %*ENV now works + partial support for trigonometric functions of complex numbers + better handling of custom traits, many builtin traits moved to core setting + improved type dispatch for builtin operators, type coercions New in 2009-08 release + Rakudo must now be built from an installed parrot, and can be installed itself + separate Perl 6 meta class + introspection on roles + declaration of methods in the meta class by writing method ^newmethod($obj) + :tree options for parent class, attribute and role introspection + allow some custom postcircumfix:<( )> methods + moved more built-ins into the setting + implement operators infix: (divisibility test) and prefix [||] and [//] + updated ROADMAP in preparation for the Rakudo Star release + instead of throwing nasty parse errors, Rakudo now informs you that feed operators are not yet implemented + improved testing: planless testing with done_testing(); better diagnostic output from is() + the syntax for embedded comments has changed + embedded Pod comments are now recognized + support for defining traits and applying them to routines, classes and roles + "hides" trait (class A hides B { ... }), and "is hidden" + better handling of slurpy and optional in multi-dispatch + use of .?, .+ and .* with indirect calling form ($obj.+@cands) + .can improved; now returns something usable as an iterator + lastcall implemented New in 2009-07 release + extensive refactor of the multi dispatch code to get closer to the spec + better handling of named arguments in multi dispatch + operators and traits can be defined in the setting + basic implementation of the series and eqv operators + refatored trait code to match updated specification + implemented more cases of smartmatching against hashes + fixed state variables to work with //= and ||= initialization + improved testing: when Rakudo dies with 'Null PMC Access' it is never considered a success + implemented the :all flag to split which keeps captures + added List.rotate builtin + nextwith and callwith now also work properly with methods + take() without outer gather now merely warns + introspection of roles and attributes New in 2009-06 release + refactored and corrected object initialization (BUILD/CREATE) + attributes initilizations can now use attributes defined earlier + method calls are now faster + basic safe mode that forbids IO and execution of external programs + implemented meta operators for user defined operators + initial implementation of Temporal (date/time related objects) + type checking of implicit return values + improved introspection methods + cleaned up IO methods + improved "is export" handling for modules and setting + automatically transcode to iso-8859-1 for faster parsing when possible + refactored and corrected assignment, .succ, .pred, C<++>, C<-->, postcircumfix:<[ ]>, Whatever + "module Foo;" now allows statements before it + improved Unicode string handling + better support for Str increment/decrement in Unicode ranges + many performance improvements New in 2009-05 release + updated docs/ROADMAP + basic support for custom operators + operators can now be referenced as &infix:<+> + meta operator support for custom operators + cross-language library loading + stack traces now include source file name and line number + implemented Regex type + .WALK (parent classes in configurable order) + .name method on routines + refactored enums, thereby fixing many enum related bugs + fixed namespace of eval()ed code + implemented parallel dispatch (@objects>>.methods) + initial support for «...» quotes + text files now default to utf8 encoding + fixes to Match.perl and Match.chunks + implemented 'constant name = $value' + documented build dependencies + grep() accepts general matcher, things like @list.grep(Int) work + trigonometric functions (sin, cos, ...) now available via 'use Num :Trig' + qx{} quotes now work (except on Windows) + hyper-operators on hashes now work (%a >>+<< %b) + initial implementation of $foo.@bar + refactored wrap and unwrap to work with candidate lists; fixes some bugs + refactored/improved callsame and callwith, and added nextsame and nextwith (only work for dispatches of the form $foo.@bar and with wrap so far) + partial implementation of .^parents and .^methods + can initialize attributes in terms of others + many other bug fixes and performance enhancements New in 2009-04 release (#16, "Bratislava") + wrap and unwrap for subroutines + calling a method on a Whatever star generates a closure + 1+*, *+1 and others generate closures (*-1 missing) + Associative, Positional and Callable are now parametric roles + typed arrays and hashes + parametric role subtyping (R[T1] ~~ R[T2] where T1 ~~ T2) + .invert and .push on Hashes + enforce return types of subroutines (partial implementation) + parallel testing + Configure.pl now supports passing options to parrot's Configure + support for lexical subroutines and multis + implemented \c[character name] in double quoted strings and regexes + implemented Perl 5 regexes + rx/.../ regex quoting + sockets support has been added (IO::Socket) + regex patterns may now be quantified by a separator regex + moved many methods to the setting + exporting and importing by tags, support :DEFAULT export tag + implemented START blocks + implemented roots builtin + implemented .ast on Match objects + added Match.caps and Match.chunks + split() now supports limits in all cases + prefix:<=> and the "fish operator" ( =<> ) are now gone + .readline is now .get + roles are now punned on any method call on the role + many other bug fixes New in 2009-03 release (#15, "Oslo") + implemented $*PROGRAM_NAME magical variable + outer lexicals are now visible in eval() + next, last etc. work in grep() + added R metaoperator + add an initial draft of Match.perl + refactor Grammar and Match class hierarchy + fix if/unless/while/until/for/... on line after close curlies + add Q quoting, including Q:PIR + added "state" variables + //= fixed to short-circuit, and added short-circuiting &&= and ||= + multi-subs now have the Multi type and have a .candidates method + multi-method dispatch now looks up the class hierarchy + various fixes to using roles as type constraints + support bare sigils in signatures + more methods and functions moved to (Perl 6) setting + many other bug fixes New in 2009-02 release (#14, "Vienna") + first release independent of Parrot releases + passing 7076 spectests (+796 since 2009-01 release) + build and use fakecutable (perl6.exe) by default + redesigned build, configuration, and test subsystems + add settings/ directory for builtins written in Perl 6 (was "prelude") + improve diagnostics in Test.pm + allow anonymous classes via C<::> + re-use existing parameterized roles instead of creating new ones + roles now pun classes when .new is called on them + 'proto' now marks all same-named routines as 'multi' + XopX is now Xop + implement <-> (rw) pointy blocks + added min= and max= metaoperators + many many bugfixes + publish release schedule + documentation improvements