Parrot Changelog

What's new in Parrot 8.1.0

May 7, 2016
  • Restore make configure_tests, remove outdated t/steps/auto/labs-01.t
  • Annotate needed -Wcast-align fixes (for early armv5 systems)
  • Add missing hyperref package for latex
  • Fix typo in move_buffer_callback doc

New in Parrot 7.9.0 (Oct 23, 2015)

  • Core:
  • StringBuilder.clone and ResizablePMCArray write barrier optimizations. 1.14% faster, GH #1123
  • More StringBuilder optimizations with substr, set_pmc, push_pmc, i_concatenate, and do less overallocation.

New in Parrot 7.7.0 (Aug 18, 2015)

  • Documentation:
  • remove bitrotted author contributions

New in Parrot 7.6.0 (Jul 23, 2015)

  • Core:
  • structview
  • Added missing returns to switch/case.
  • Tests:
  • distro/manifest_generated.t
  • Corrected reversed order of got/expected.
  • Added reference to GH#1206 .

New in Parrot 7.5.0 (Jun 17, 2015)

  • Core:
  • Optimize mod_i_* ops and Integer pmc to avoid util_intval_mod
  • Coverity bugs fixed:
  • missing_comma in optimizer.c
  • nesting_indent_mismatch in runcore/subprof.c
  • insecure chroot in platform/generic/file.c
  • Tests:
  • Remove executable file permissions from some .t files
  • Community:
  • Coverity static analysis scans of the Parrot source code have resumed. Many thanks for providing the service to the open-source community!

New in Parrot 7.3.0 (Apr 21, 2015)

  • Build:
  • Fixed windows link regression from 7.0.2 with cl.exe. #1203
  • Fixed rlimit compilation for OpenBSD
  • Tests:
  • Relaxed the common GC stress test and re-add the JSON.nqp variant.

New in Parrot 7.2.0 (Mar 19, 2015)

  • Fix warning on Win32 (with cl.exe) when `link` is not explicitly set.

New in Parrot 7.1.0 (Feb 17, 2015)

  • Core:
  • Fix SIGBUS in GC trace_mem_block on alignment-strict CPUs (arm), #1200. We traced all pointers by +1 and not by +4 or +8.
  • Tests:
  • Add a common GC stress test to the normal testsuite. #1189
  • Fix tests for --ccflags=-DSTRUCT_DEBUG. #1195
  • Community:
  • rakudo perl6 announced to drop parrot support.

New in Parrot 7.0.1 (Jan 23, 2015)

  • GC regression --optimize caused by PARROT_CANNOT_RETURN_NULL, which was visible on machines with low memory.
  • threads deadlock in gc_gms_mark_and_sweep()
  • fix --m=64 with gcc on ppc64 and mips64 #1181, --m=64 produced wrong ld and linkflags since 6.10, GH #1110
  • fix icu probes with --m #1182

New in Parrot 7.0.0 (Jan 21, 2015)

  • Core:
  • Added a experimental INTERPINFO_MAX_GENERATIONS api, made MAX_GENERATIONS --ccflags adjustable, renamed to GC_MAX_GENERATIONS, and use the correct number. Default 3 for generations 0,1,2.
  • Add the DEPRECATED attribute to all deprecated functions. #1163
  • Fix parser crashes detected by the american fuzzy lop (1.06b) #1168
  • Replace an end op inside pcc methods by a returncc op, #1168. This used to crash the last years, now it returns. It is now documented as unspecified behavior.
  • Finish PackFile_ API deprecation and refactoring. No wrong exports anymore. See api.yml. #1170 #1122
  • Reenabled the following NCI signatures: t (cstring), 2 (Integer PMC -> short), 3 (-> int), 4 (-> long). SDL and Curses is now usable again. #436, #601, #605
  • Added a useful subset of static nci thunks to core-thunks. #1171 Updated the extra thunks to pass most nci examples without libffi, just 2, 3 and 4 require libffi when being used destructively on the Integer PMC.
  • Fixed a couple of blocking ResizablePMCArray ("rpa") splice regressions from 6.10, which broke perl6. See https://github.com/perl6/nqp/issues/209, GH #1174, #1175.
  • Added an optional rpa splice warning as in perl5, when an overlarge offset is adjusted. #1176
  • Fix a GC regression from 6.11 with ResizablePMCArray #1159 (1.2% slower)
  • Skip startup warnings "Unknown codeset `', defaulting to ASCII" when nl_langinfo() failed, and silently use ASCII. #1180
  • Build:
  • More code cleanup to reduce compiler warnings, code size and unneeded calls.
  • Add ARGIN_FORMAT declarations, probe for gnu_printf, ms_printf, printf. #1163
  • Fix PARROT_CANNOT_RETURN_NULL #1163
  • Move HASATTRIBUTE_* definitions from ccflags via cmdline to has_header.h #1163
  • Add the _Check_return_ MSVC SAL variant #1163
  • Check and fix that PARROT_EXPORT being the first function attribute (C++) #1164
  • Allow PARROT_DOES_NOT_RETURN without PARROT_CANNOT_RETURN_NULL #1163
  • Move -Wformat to --cage #1165
  • Fix and allow --cxx on FreeBSD 10 (clang, not g++) #1166
  • Fix git_describe config probe on tag-less repos, e.g. git clone --depth #1167
  • Fix solaris asctime_r with _POSIX_C_SOURCE #858

New in Parrot 6.11.0 Dev (Dec 16, 2014)

  • Core:
  • Rewrote ResizablePMCArray with moving offset, esp on shift. Even better than nqp/qrpa. 20% faster overall. #1152
  • Fixed wrong maybe_mark_and_sweep call in --gc ms #1142
  • Added GC maybe_gc_mark vtable function #1142
  • Fixed Memory_Block prolog access in --gc inf #1136
  • Added MEMORY_DEBUG tracing to --gc inf and ms2, added GC validation to ms2.
  • Fix bignum.i_substract and i_multiply #1144
  • Fix cmod_p_p_n* math dynops for NaN and Inf #1147
  • Fix floor, ceil and complex, integer math ops for NaN and Inf #422
  • Optimize printing of single numbers #828
  • More --debugging protections when accessing empty registers from :immediate #1024
  • Change ResizablePMCArray.delete to throw out of bounds errors, but just warn on deprecated delete[0] with size 0 for backcompat. #1153
  • Add check for illegal delete of capture blocks in PGE.match #1154
  • Add new traceflag -t20 for ResizablePMCArray states.
  • Add experimental vms support by mvorl. Untested. GH #866
  • Provide Parrot_new_string and Parrot_compile_string in the extend api
  • Build:
  • Extend auto::infnan probe to other --floatval #1146
  • Warn in Configure on experimental flags intval, floatval and gc #1148
  • Die in Configure on unsupported intval sizes #1148, #642, ...
  • Renamed auto::labs to auto::mathl, probe and use more long math functions: fabsl powl ceill floorl fmodl expl logl #1111
  • Fixed pbc_to_exe and wrong Parrot_{g,s,uns}etenv declarations on windows #1156
  • Documentation:
  • Rewrote docs/pmc/array.pod
  • Tests:
  • Fix t/steps/auto/arch-01.t darwin regression #1142
  • Added bigger t/stress/gc.t test to catch most GC issues.
  • Add optional copyright year test on TEST_SLOW #719
  • Fix most --floatval='long double' tests, just embed API broken #1111
  • Adjust tests for VALGRIND=valgrind #1150
  • Added tests to t/pmc/resizablepmcarray.t to cover all offset cases. #1152
  • Replace included IO::CaptureOutput with our own capture function. #892
  • Fixed most embed and extend tests. #41511 #829

New in Parrot 6.9.0 (Oct 22, 2014)

  • Core:
  • Changed behavior with illegal escape sequences, GH #1103. Do not silently skip the \ anymore, throw an EXCEPTION_INVALID_CHARACTER error with "Illegal escape sequence \o in 'string\o'".
  • Add platform encoding functions for darwin, FreeBSD, OpenBSD and NetBSD, fixing rakudo problems with UTF-8 locales. #1092
  • Enable trap op (int3) on x86_64 also
  • Add const to env api STRING args
  • Do no pre-allocate 256 IO tables for the standard handles, only 3. #1093
  • Renamed ops2c to parrot-ops2c. Get the new name if exists in config key ops2c. #900
  • Reenable parrot -t [flags] traceflags to enable the flags 2 find_method and 4 invoke/retcc/yield again.
  • Enable >2GB RAM on darwin also. #268
  • Fix crash with parrot -d8 DEBUG_IMC dump_instructions
  • Fix sprintf width count for unicode strings. #956
  • Fix sprintf width for NaN/Inf/-Inf [GH #1099/perl6 RT#116280]
  • Optimize utf8_substr. Do not use the slow utf8 iterator.
  • Regenerated and fixed the iso_8859_1_typetable. Add \x2028, \x2029 and \v to be of cclass newline. [GH #1086, perl6 RT #122341]. Several chars 160..191 are not in the [[:punct:]] class anymore. Removed defunct Parrot_ascii_typetable, unused since 2010.
  • Protect callmethod from an empty object, missed by fixup_subs immediate. #1024
  • Add Couroutine reset and autoreset methods. #564
  • Add -t8 trace flag for Coroutine states
  • Disabled trace flags -t4 and -t8 with --optimize. #1105
  • Harmonize parrot usage messages
  • Build:
  • Fix all -Wshadow instances
  • Added bootstrap-tables make target
  • Configure options consistency: --{en,dis}able- for shared, rpath, threads, --with{,out}- for: llvm pcre ... + threads. [GH #1101]
  • Deprecated --parrot_is_shared in favor of --enable-shared. [GH #1101]
  • Change default of the config key debugging from 1 to 0, i.e. you need to provide now --debugging[=flags] for debugging. [GH #1099]
  • Enable --disable-shared (or --parrot_is_shared=0) to link against static libparrot [GH #1101]
  • Documentation:
  • Add missing manpages for pbc_disassemble, pbc_dump, pbc_merge
  • Improved src/string/encoding/tables.c pod.
  • Tests:
  • Run fulltests with the runcore=fast,-O1,-O2 fast, without -D040, --gc-debug [GH #1086]
  • Added tests for LexInfo.declare_lex_preg and .lex quoting roundtrips [GH #1095]
  • Simplify smolder resend usage
  • Fix mingw issues with \r\n
  • Updated the missing native_pbc 64-bit big-endian files on mips64 qemu.

New in Parrot 6.8.0 Dev (Sep 17, 2014)

  • Build:
  • pbc_to_exe created executables use now the absolute execname on most platforms and not only argv[0] which needs to be looked up in the path. [GH #1088]
  • Documentation:
  • Fix various new podchecker syntax errors with the new Pod::Simple 3.28
  • Tests:
  • Update embedded Pod::Simple to 3.28 to fix the missing whiteline_handler method from non-embedded podchecker [GH #1089]
  • Skip 3 crashing codingstd tests with 5.8 DEBUGGING [GH #1090]

New in Parrot 6.7.0 Dev (Aug 20, 2014)

  • Core:
  • find_codepoint: added more name aliases for perl6 (LF,FF,CR and NEL)
  • Optimize internal pcc CallContext calls from VTABLE to direct calls and inline CallContext ATTR accessors to omit the obj check. [GH #1083]
  • Documentation:
  • Updated documentation for StringHandle.readall and FileHandle.readall, which
  • reads just the rest of the buffer if tell > 0. [GH #1084]
  • Tests:
  • Improve test plan for t/library/pg.t
  • Community:
  • Our GSoC student Chirag Agrawal successfully passed the final evaluation.
  • All three project parts have been merged already.

New in Parrot 6.6.0 (Jul 22, 2014)

  • Core:
  • Optimized method call overhead at compile-time in pmc2c directly to avoid run-time overhead. Less temp. PMC's, less branches and avoiding at least 2 costly C functions per method call.
  • New arity warning: "wrong number of arguments: %d passed, %d expected" [GH #1080]
  • Build:
  • Workaround libffi-3.1 upstream bug in ffi.h [GH #1081]
  • Expand pkg-config make macros in auto::libffi [GH #1082]
  • Tests:
  • Fix t/pmc/filehandle.t on cygwin with newer Cwd >= 3.40 [GH #1077]
  • Community:
  • Our GSoC student passed the project midterm, having made great progress.
  • More parrot-bench numbers at https://github.com/parrot/parrot-bench, now using gnuplot for all releases from 1.8.0 - 6.6.0, amd64 + -m32

New in Parrot 2.6.0 (Aug 7, 2010)

  • Core:
  • Plug some memory leaks
  • As always, bug fixes and some optimizations
  • Runtime:
  • added (experimental) URI::Escape
  • Testing:
  • Improved test coverage of core parrot
  • Documentation:
  • Updated the Squaak tutorial to use modern NQP-rx and PCT
  • Platforms:
  • The Fedora package 'parrot-devel' install the files for syntax-highlighting and automatic indenting for the vim editor
  • NQP-rx:
  • Updated version included from http://github.com/perl6/nqp-rx includes new or improved: regex backtracking, named assertions, interactive mode, and setting (a minimal but useful runtime library)

New in Parrot 2.2.0 (Mar 24, 2010)

  • Core changes
  • Most internal allocations now use the GC
  • RNG non-randomness fixes
  • Elimination of much dead code
  • API changes
  • PMCs can now be initialized from an int
  • Many legacy ops are removed
  • Platforms
  • Sun cc and Intel icc support have been restored
  • Compiler invocation no longer goes through a Perl script
  • Tools
  • NCI thunks are now generated by self-hosted PIR code

New in Parrot 2.0.0 (Feb 2, 2010)

  • Features:
  • Context PMCs now support attribute-based introspection
  • Context and CallSignature PMCs merged into CallContext
  • .lex directive throws exceptions when used with incorrect register types
  • Platforms:
  • Packaging improved for free OS distributions
  • PPC, PPC64, and ARM now tested when running Linux
  • Performance:
  • Minor improvements to the profiling runcore
  • Improvements from the CallContext PMC merge
  • New deprecations:
  • In/out parameters in STRING modification functions
  • Void handling in NCI signatures
  • Parameter passing opcodes order in PBC
  • Tests:
  • Continued migration of core tests from Perl 5 to PIR
  • Tools:
  • dependency checker improved
  • Miscellaneous:
  • Deprecation cycle length changed to three months from six
  • GC accuracy improved
  • PMC freeze improvements; much more reliable
  • Makefile improvements for dependency handling

New in Parrot 1.8.0 (Dec 8, 2009)

  • Functionality
  • The FileHandle PMC now exposes the exit code of child process that was run as pipe.
  • Experimental support for overriding VTABLE invoke in PIR objects was added.
  • The method 'type' was added to the PackfileAnnotations PMC.
  • The internals of the parrot calling conventions, PCC, were reworked.
  • All call paths now use a CallSignature object for passing arguments and return values.
  • The new API-function 'Parrot_ext_call' was added for calling into C-land.
  • The fixed-size allocator was improved.
  • The files installed by 'make install-dev' are now covered by 'make install' as well.
  • The experimental ops 'fetch' and 'vivify' were added.
  • The -I option to the command 'parrot' now prepends items to the search path.
  • The Context struct was substituted with auto attributes (context_auto_attrs branch).
  • Use the osname determined in auto::arch in subsequent configuration steps (convert_OSNAME branch).
  • Eliminated dependence on Perl 5 '%Config' in auto::format (auto_format_no_Config branch).
  • MultiSub PMCs now stringify to the name of their first candidate,
  • instead of the number of candidates.
  • The platform detection at the start of the configuration process was improved.
  • The 'lineof' method on CodeString objects now precomputes line number information
  • to be more efficient on variable-width encoded strings.
  • P6object now supports .WHO and .WHERE methods on protoobjects.
  • Compilers
  • A shiny new self-hosting implementation of NQP has been added in ext/nqp-rx.
  • New NQP available as nqp-rx.pbc or parrot-nqp fakecutable.
  • NQP includes direct support for grammars and regexes, including protoregexes.
  • NQP has a new PAST-based regex engine (intended to replace PGE).
  • Regexes may contain code assertions, parameters, lexical declarations, and more.
  • Double-quoted strings now interpolate scalar variables and closures.
  • Subroutine declarations are now lexical by default.
  • PCT
  • PAST::Block now supports an 'nsentry' attribute.
  • PAST::Var allows 'contextual' scope.
  • Attribute bindings now return the bound value.
  • Platforms
  • Fixes for the port of Parrot to RTEMS were applied. Yay, first port to a real time OS!
  • On NetBSD, shared libs are now used.
  • Performance
  • Use the the fixed-sized allocator in the Context and the CallSignature PMC.
  • Many small speed improvements.
  • New deprecations
  • MT19937, the Mersenne twisted pseudorandom number generator, is now hosted on github and will be removed from the Parrot core. (eligible in 2.1)
  • The 'Parrot_call_*' functions for invoking a sub/method object from C are
  • deprecated. They are replaced by 'Parrot_ext_call'. (eligible in 2.1)
  • All bitwise VTABLE functions are deprecated. (eligible in 2.1)
  • All bitwise ops will become dynops. (eligible in 2.1)
  • - Realized deprecations
  • The slice VTABLE entry was removed.
  • The last traces of the 'malloc' garbage collector were removed.
  • Parrot_pcc_constants() was renamed to Parrot_pcc_get_constants().
  • The deprecated functions from the Embedding/Extension interface were removed.
  • The library YAML/Parser/Syck.pir was removed.
  • The VTABLE function instantiate_str() was removed.
  • Building of parrot_nqp was removed.
  • Tests
  • The test coverage of the time-related ops was much improved.
  • New testing functions in Test::More: lives_ok() and dies_ok().
  • The Perl 5 based test scripts t/op/bitwist.t, t/op/comp.t, t/op/inf_nan.t,
  • t/op/literal.t, t/op/number.t, t/op/sprintf2.t, and t/op/00ff-dos.t were converted to PIR.
  • The test scripts t/op/annotate.t and t/op/time.t have begun
  • to be translated from Perl 5 to PIR.
  • In some tests the dependency on %Config from Perl 5 was eliminated.
  • Documentation
  • The meaning of 'p' means in NCI function call signatures was clarified.
  • Tools
  • The stub for a new language, as created by mk_language_shell.pl,
  • now relies on the PIR-based tools, which are replacing the Perl 5-based tools.
  • The library Configure.pir was added.
  • The library distutils.pir was added.
  • Miscellaneous
  • The mailing list parrot-users and a corresponding google group was created,
  • http://groups.google.com/group/parrot-users.
  • Many bugfixes, code cleanups, and coding standard fixes.

New in Parrot 1.4.0 (Jul 24, 2009)

  • Key and Iterator refactor
  • Major pbc_to_exe generated code speed improvement
  • New "Infinite Memory" GC core for demonstration purposes
  • gc_debug runcore and GC-related heisenbug fixes
  • Elimination of variable expansion in parrot_config
  • ClI arguments are processed as Unicode by default
  • Substantial optimizations in NCI
  • Parrot builds on Win64
  • Hashes can use native types as keys and values
  • Fixed installed pbc_to_exe
  • Simplification of PMC generation code
  • Improved GC encapsulation and API documentation
  • Documentation
  • List of candidates for embedding API (docs/embed.pod)
  • PIR book sent to publisher
  • Testing
  • Several conversions of Perl test to pure PIR.
  • C indentation coding standards test improvement
  • Improved test coverage of example code
  • Deprecations
  • Removal of PGE rules:
  • Removal of PGE methods: .text .item .result_object
  • Deprecation of most dynops
  • Miscellaneous
  • Beginnings of OpenGL::Math library; OpenGL bindings and library marked experimental
  • Localizing and consting fixes
  • Many memory and thread-related leaks plugged

New in Parrot 1.2.0 (Jun 1, 2009)

  • Various cleanups in headers, directory layout, exported symbols, and GC API. Many improvements to the documentation, including core documents, the Parrot Book, and the Installation... design document.
  • Portability updates for MacPorts, NetBSD, MinGW, and HP-UX. Several build and runtime performance improvements