Parrot

Software Screenshot:
Parrot
Software Details:
Version: 7.9.0 / 7.11.0-DEV updated
Upload Date: 10 Feb 16
Developer: Parrot Foundation
Distribution Type: Freeware
Downloads: 115

Rating: nan/5 (Total Votes: 0)

Parrot was initially developed to support the developed of the 6.x branch of Perl, but has expanded into a broad project that provides a virtual machine that supports multiple programming languages, compiling code from one language to the other.

This allows developers to compile and then run bytecode from one language into another language.

Languages currently targeting the parrot VM:

Rakudo Perl 6

Lua

Winxed

Tcl

JavaScript

Ruby

Scheme

PHP

Python

APL

.NET languages

What is new in this release:

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

What is new in version 7.3.0 / 7.5.0-dev:

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

What is new in version 7.3.0 / 7.4.0-dev:

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

What is new in version 7.3.0:

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

What is new in version 7.0.2 / 7.1.0-dev:

  • Added a experimental INTERPINFO_MAX_GENERATIONS api, made MAX_GENERATIONS --ccflags adjustable, renamed to GC_MAX_GENERATIONS, and use the correct number.
  • Added the DEPRECATED attribute to all deprecated functions.
  • Fixed parser crashes detected by the american fuzzy lop.
  • Replaced an end op inside pcc methods by a returncc op.
  • Finish PackFile_ API deprecation and refactoring. No wrong exports anymore.
  • Reenabled the following NCI signatures: t (cstring), 2 (Integer PMC -> short),
  • 3 (-> int), 4 (-> long). SDL and Curses is now usable again.
  • Added a useful subset of static nci thunks to core-thunks.
  • 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.
  • Added an optional rpa splice warning as in perl5, when an overlarge offset is adjusted.
  • Fixed 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.

What is new in version 6.9.0:

  • Enable >2GB RAM on darwin also.
  • Fix crash with parrot -d8 DEBUG_IMC dump_instructions
  • Fix sprintf width count for unicode strings.
  • Fix sprintf width for NaN/Inf/-Inf
  • Optimize utf8_substr. Do not use the slow utf8 iterator.
  • Regenerated and fixed the iso_8859_1_typetable. Added \x2028, \x2029 and \v to be of cclass newline.
  • Protect callmethod from an empty object, missed by fixup_subs immediate.
  • Add Couroutine reset and autoreset methods.
  • Add -t8 trace flag for Coroutine states
  • Disabled trace flags -t4 and -t8 with --optimize.
  • Harmonize parrot usage messages

What is new in version 6.6.0:

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

What is new in version 6.3.0:

  • New Benchmark results
  • Fixed tests for cygwin and cygwin64
  • Added 2 new examples/benchmarks/ files and benchmarks/run.sh

What is new in version 5.9.0:

  • Don't complain about utf8 multibyte characters split by chunk boundaries.
  • Fixed readall SEGV at eof, e.g. when calling readall twice.
  • Fixed SEGV when .const not found.
  • Added PackfileView-compatible methods to EvalPMC.

What is new in version 5.0.0:

  • This is the first stable release of Parrot with thread support (via the Task PMC).

What is new in version 4.10.0:

  • Added PMCNULL check to result_info op.
  • Fixed record separator bug on IO handles.

What is new in version 4.9.0:

  • Keep encoding information in the imcc optimizer, which fixes the concat op but probably many more cases with non-ascii encoded constant strings.
  • Fixed ByteBuffer set_string_native, which became out of sync with two internal buffers.
  • Preload Configure steps when called with perl -d Configure.pl.
  • Strip unneeded config keys from installed config hash. Saves 6360 bytes from every installed executable.
  • Parrot_get_cpu_type returns now "unknown" for all unknown cpu types. On non-windows it returned before 4.9.0 a null string.

What is new in version 4.7.0:

  • Added .all_tags() and .all_tagged_pmcs() methods to PackfileView PMC.
  • Several build and coding standards fixes.

What is new in version 4.5.0:

  • Added .write_bytes and .read_bytes methods to FileHandle and Socket PMCs.
  • Added Parrot_api_set_stdhandle, Parrot_api_new_call_object and Parrot_api_setup_signature functions to the embedding API.
  • Removed the "can" VTABLE.

What is new in version 4.1.0:

  • Shared libraries and installable binaries are now stripped if built with --optimize on Cygwin, which greatly reduces their size on disk.
  • New experimental PCC-related ops added to core.

What is new in version 4.0.0:

  • Core:
  • Several cleanups to the interp subsystem API
  • Cleanups and documentation additions for green threads and timers
  • Iterator PMC and family now implement the "iterator" role
  • A bug in Parrot_ext_try was fixed where it was not popping a context correctly
  • Documentation:
  • Docs for all versions of Parrot ever released are now available at http://parrot.github.com
  • Tests:
  • Timer PMC tests were converted from PASM to PIR

What is new in version 3.10.0:

  • The mark VTABLE was added to the Select PMC
  • The Parrot::Embed Perl 5 module was removed from parrot.git and now lives at https://github.com/parrot/parrot-embed
  • A set_random method was added to the Integer PMC, so random numbers can be generated without needing to load math dynops
  • A new implementation of green threads was added to Parrot, in preparation for a robust hybrid threading system. Green threads are currently not available on Windows.

What is new in version 3.9.0:

  • Core:
  • The whiteknight/kill_threads branch was merged, which removes the old and broken thread/concurrency implementation. Better and more flexible concurrency primitives are currently being worked on. This also involved removing some of the last vestiges of assembly code from Parrot as well as removing the share and share_ro vtables.
  • random_lib.pir was removed, since better alternatives already exist
  • The freeze and thaw vtables were removed from Default PMC, because they weren't useful and caused hard-to-find bugs.
  • A new subroutine profiling runcore was added. It can be enabled with the command-line argument of -R subprof . The resulting data can be analyzed with kcachegrind.
  • Added get_string VTABLE to FixedIntegerArray and FixedFloatArray PMCs
  • The update() method was added to the Hash PMC, which updates one Hash with the contents of another. This speeds up rakudo/nqp startup time.
  • Languages:
  • Updated snapshot to version 1.3.0
  • Added the builtin sleep
  • Modifier 'multi' allows some more multi functionality
  • Community:
  • New repo for the Parrot Alternate Compiler Toolkit, a re-implementation of PCT in Winxed: https://github.com/parrot/PACT
  • Documentation:
  • We are in the process to migrating our Trac wiki at http://trac.parrot.org/ to Github at https://github.com/parrot/parrot/wiki
  • Packfile PMC documentation was updated
  • Tests:
  • Select PMC tests improved to pass on non-Linuxy platforms

What is new in version 3.6.0:

  • Core:
  • Class.add_vtable_override now allows you to overwrite an override
  • Integers, floats and strings can now be stored in lexical variables. Previously, only PMCs could be stored in lexicals.
  • VTABLE_substr has been removed. VTABLE_substr_str has been renamed to VTABLE_substr
  • Added a new PackfileView PMC type, an intended replacement for the deprecated Eval PMC.
  • The is_integer vtable on the String PMC now works for all string encodings.
  • Unicode error messages on Win32 now work correctly.
  • A memory leak in IMCC was fixed.
  • Languages:
  • The snaphost of Winxed included with Parrot was updated to version 1.0.0
  • Winxed has migrated to Github: https://github.com/NotFound/winxed

What is new in version 3.5.0:

  • Core:
  • Parrot_PMC_destroy, Parrot_PMC_mark and Parrot_PMC_invoke were removed from the public extension API.
  • PAST now has PAST::Stmt node types, supports reusable temporary registers.
  • Test coverage of the embedding and extending interface is now at least 95%.
  • A snapshot of Winxed is now included in Parrot core to facilitate writing core Parrot tools from a higher level language than PIR.
  • Languages:
  • Improved compile time scope search.
  • Added 'using namespace' statement.
  • Compiler classes and functions now live in the Winxed;Compiler namespace.
  • Tests:
  • The Parrot test suite harness now understands the HARNESS_TIMER environment variable. Setting it to a true value will show timing results for a test run.
  • IPv6 tests are now parallel testing friendly.

What is new in version 3.4.0:

  • Core:
  • The Generational Mark and Sweep garbage collector is the new default.
  • The --gc-nursery-size command line argument was added.
  • Parrot now gets entropy from the underlying OS.
  • The NCI subsystem now supports 8, 16, 32 and 64 bit integers.
  • The NCI subsystem now supports "long long" and "long double" signatures. Not all platforms/compilers support these non-standard types, so developers are cautioned to take note that using them reduces portability.
  • Many more OpenGL functions in the Parrot OpenGL bindings are available, which required the above-mentioned signatures.
  • Bytecode-related embedding api functions moved to src/embed/bytecode.c.
  • Languages:
  • Use 'using extern' for module imports.
  • Improved stage 0 prefix ++ and -- operators.
  • Allow 'null' in conditional operator.
  • Several examples are updated.
  • Community:
  • Google Summer of Code Bonding period is going well. Students are mostly done with their classes and much code will flow soon.
  • Documentation
  • More PCT introductions are available at: http://github.com/benabik/cish.

What is new in version 3.3.0:

  • Core:
  • The isa and isa_pmc vtables can now be overridden from PIR
  • IMCC has a new improved external interface
  • A new IMCCompiler PMC adds prototype PDD31-alike functionality for the PIR and PASM compilers
  • New --with-llvm option to Configure.pl, which will link to LLVM if it is available
  • Community:
  • Parrot Virtual Machine was accepted into Google Summer of Code 2011
  • Ecosystem:
  • Rosella adds a stable "Event" library to implement a publish/subscribe mechanism
  • Tests:
  • The test coverage of the extend_vtable subsystem was greatly increased

What is new in version 3.2.0:

  • Full support for Unicode filenames on Linux and Win32.
  • The configuration option --cxx is gone.
  • New Generational GC implemented. To enable it run Configure.pl --gc=gms.
  • Now op definitions are semantically parsed. It opens possibilities for future optimizations of parrot core.
  • A statement convert the '.param' PIR systax.
  • A PMC is implemented for low-level buffer access which separate the representation from the pointers.
  • Support added for 'long double', 'long long', and 64-bit to StructView.
  • In math.h are tools available for Inf/NaN.
  • Signature PMCs are used pervasively.

What is new in version 3.1.0:

  • Exception PMCs are now subclassable from PIR
  • IPv6 is now supported and tested
  • Added Parrot_ext_try function to extend API (experimental), to allow implementation of try .. catch construcs in C extensions.
  • We now have a YAML library called YAML::Tiny, a port of YAML::Tiny from Perl 5
  • Deprecated/experimental features are now stored in api.yaml in an easy-to-parse format, which will allow automated tools easy access to this data. This replaces DEPRECATED.pod, which no longer exists.
  • Improved GC latency
  • Improved GC performance on low-memory systems
  • Improved packfile annotation lookup complexity
  • Removal of unused code and SVN based code

What is new in version 3.0.0:

  • Core:
  • A new embedding API is available in "parrot/api.h" and documented in docs/pdd/pdd10_embedding.pod .
  • Packfile PMCs were refactored and can now be used to produce runnable bytecode.
  • Packfile manipulation code now throws embedder-friendly exceptions rather than printing error details directly to stderr.
  • Unicode support for file IO, environment variables, program names, and command-line parameters was improved.
  • An experimental gdb pretty-printers in tools/dev for Parrot STRINGs and PMCs is now available. (gdb 7.2 or later and Python are required)
  • c2str.pl and pmc2c.pl improvements result in a noticably faster build.
  • Bugs in our Digest::sha256 library and bit-related dynamic ops were fixed by GCI student Nolan Lum. Both now work correctly on 32 and 64 bit systems.
  • Community:
  • tree-optimization by GSoC student Tyler L. Curtis joined the nest and now lives at http://github.com/parrot/tree-optimization .
  • Plumage now lives at http://github.com/parrot/plumage and is installable.
  • Christmas proceeded as scheduled. The Parrot team does not take credit for this event.
  • Documentation:
  • HTML documentation generation has been rewritten and greatly simplified.
  • We have improved documentation in docs/project/git_workflow.pod about keeping a fork of parrot.git in sync.
  • Translations of our README in various languages are now in the docs/translation directory, thanks to Google Code-In students.
  • Tests:
  • A better way to write "todo" tests with Parrot's Test::More was implemented by GCI student Fernando Brito.
  • Major increases in test coverage of many core PMCs, dynamic PMCs and dynamic opcodes resulted from GCI and the interpid students it attracted.
  • Jonathan "Duke" Leto set up Debian Linux x86_64 and sparc32 smokers in the GCC Compile Farm, which continually submit smoke reports with a variety of configuration options and compilers. Thanks, GCC!
  • Makefile dependency checking is now automatically tested, resulting in a more reliable parallel build.
  • Coverage tests were improved for platforms with and without Devel::Cover.

What is new in version 2.11.0:

  • Just In Time native call frame generation using LibFFI.
  • PIR op find_codepoint is no longer experimental, it is now supported.
  • Several public functions in libparrot have been brought up to standard naming conventions.
  • Improved linked-list implementation in GC.
  • set_addr opcode is being replaced with the new set_label opcode in core libraries.
  • Removed deprecated CodeString PMC.
  • Added close, is_closed, read, readline methods to Socket.
  • Added experimental MappedByteArray PMC type.
  • Added Parrot_warn_experimental, to warn the user about experimental features.
  • Code for frontend executables moved from src/ to frontend/.
  • Support for chunked receive in LWP library.
  • Added a "quickcover" make target.

What is new in version 2.10.0:

  • Core:
  • We are on github now! https://github.com/parrot/parrot
  • Configure, build and test subsystems were made Git-aware
  • New parrot_config key 'osvers' which contains Operating System Version information
  • Updated to the latest nqp-rx
  • A proper exception is now thrown on IO read errors
  • Garbage Collector optimizations and memory leak fixes
  • Deprecated charset ops were removed
  • Configure system learned to detect IPv6
  • The mk_language_shell and create_language scripts have not yet been ported to Git.
  • Documentation:
  • How To Use Git to work on Parrot
  • Git Terminology
  • Testing:
  • Increased coverage on: String, FixedBooleanArray, PMCProxy, LexPad.
  • Community:
  • Macports portfile updated to 2.6.0
  • A Fedora package for PL/Parrot ( postgresql-plparrot ) was created This package allows you to write stored procedures for PostgreSQL in PIR or Rakudo Perl 6 http://pl.parrot.org
  • Parrot Foundation is teaming up with The Perl Foundation and taking part in Google Code-In 2010.

What is new in version 2.9.0:

  • Core:
  • Parrot and Rakudo's build and tests can now be run under the profiling runcore
  • IPv6 is now detected, laying the groundwork for future networking improvements
  • mk_language_shell.pl and create_language.pl no longer require an installed parrot
  • String PMC's 'reverse' method is now faster and supports all encodings
  • Improvements and simplifications in internal string processing
  • Added API for adding STRINGs to the gc root set
  • Speed up ord, substr, index and string comparison opcodes
  • Testing:
  • "make smoke" supports parallel testing by honoring TEST_JOBS
  • Added tests for Socket PMC, StringBuilder PMC, ByteBuffer PMC, mk_language_shell.pl, create_language.pl
  • Fixed "Configure.pl" about missing tests
  • Parrot and Rakudo Perl 6 now have access to the GCC Compile Farm
  • Testing on Darwin/PPC
  • Git Migration:
  • Most developer tools have been ported to Git
  • Majority of developer docs have been written for Git
  • Platforms:
  • Parrot can now be built on Minix

What is new in version 2.8.0:

  • Core:
  • Inlined hashing and comparison functions
  • Hash memory allocation moved from system malloc to lazy allocated
  • Avoided infinite catching of exceptions while dying from exception
  • Some svn fixes
  • Added a check for duplicate vtable entries in PMCs
  • Building Parrot with Perl 5.12 and gcc-4.5 / g++-4.5
  • Eliminated cruft left over after dynops_mapping
  • Improved charset and string encoding
  • Better organisation of programs by reposition it to "tools/build" and "tools/release"
  • Implemented Exception clone vtable function
  • Added experimental function Parrot_getpid and getpid method
  • --gc-threshold command line argument added, which controls the % of memory wasted by the GC
  • Closed a lot of tickets
  • Testing:
  • Added more core pmc tests
  • Rearranged some tests with C coverage
  • We now have Smolder back, at http://smolder.parrot.org . Submit reports with "make smoke"
  • skip_all implementation in Parrot's Test::More completed
  • GitMigration:
  • Set up a test site for github trac plugin at http://mksig.org/trac/
  • Code of Trac plugin at github is on http://github.com/cotto/github-trac
  • Parrot is now mirrored on github at http://github.com/parrot/parrot
  • Compilers:
  • Fixed problem with imcc HLL in load_bytecode difference between loading a pbc and compiling a pir

What is new in version 2.7.0:

  • Core:
  • Cleanups in packfile and freeze/thaw handling
  • Hash optimizations that improve HLL startup and run time
  • As always, many bug fixes and other optimizations
  • Runtime:
  • Some runtime library cleanups
  • Testing:
  • Added more tests to improve coverage
  • New codingstd test for documentation in .pmc files
  • Documentation:
  • Added documentation to .pmc files (some still missing but headers in place)
  • General documentation improvements and bringing up-to-date
  • NQP-rx:
  • Updated version included from http://github.com/perl6/nqp-rx includes speed improvements

What is new in version 2.5.0:

  • Core:
  • Added ByteBuffer PMC to allow direct byte manipulation
  • Modified some PMC vtable functions to reduce complexity, simplifying coverage.
  • Modified PAST to generate symbolic PASM constants in PIR output.
  • General STRING API cleanups
  • Increased test coverage of core PMCs
  • Fixed up 'exit' opcode, added CONTROL_EXIT exception type.
  • Experimental 'unroll' opcode renamed to 'finalize'
  • NQP-rx:
  • Added proper support for multisubs and multimethods
  • Fixed sigspace handling ** quantifier in regexes
  • Added \e strings
  • Added use of inversion lists for charclass lists in regexes
  • Platforms:
  • EPEL (Extra Packages for Enterprise Linux) packages for RHEL6.beta are available.

What is new in version 1.8.0:

  • 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.
  • Platforms:
  • Fixes for the port of Parrot to RTEMS were applied.
  • 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.
  • 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.

What is new in version 1.5.0:

  • Core:
  • Removed several deprecated functions and features
  • Removed bsr, jsr, branch_cs, and ret opcodes
  • Removed global stacks system
  • Changed OPS file format to include explicit preamble
  • Changed all "new 'Iterator'" instructions into 'iter' instructions
  • Removed Configure.pl options for specifying non-working GC cores
  • Removed unexecuting code as found by Coverity
  • Improvements to the Parrot Debugger
  • Added experimental fixed-size structure allocator to the GC
  • Added experimental lazy arena allocation to the GC
  • Removed the defunct PASM1 compiler object
  • Refactored hashes, keys, and iterators
  • Added "corevm" make target to build Parrot without all the supporting libraries
  • Removed Random PMC type and added in a "rand" dynop
  • Optimization and Improvements to the NCI thunk generator
  • New include file libpaths.pasm
  • Compilers:
  • Multiple .local with same name and different type is now an error on IMCC.
  • Platforms:
  • Improved support for detecting Fink and Macports
  • Updated search directories for libraries
  • Documentation:
  • "Parrot Developers Guide: PIR" released to publisher and available to purchase
  • Improved documentation about Parrot Debugger
  • Update PGE Documentation
  • Miscellaneous:
  • Added tests
  • Fixes to code, documentation, and standards

What is new in version 1.4.0:

  • Core:
  • 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: <null> <fail> <sp> <lt> <gt> <dot>
  • 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

Similar Software

Editr
Editr

21 Jul 15

Bee
Bee

13 May 15

YARV
YARV

13 May 15

pagen.js
pagen.js

13 May 15

Comments to Parrot

Comments not found
Add Comment
Turn on images!