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