Parrot 1.8.0 Zygodactyly Released!
On behalf of the Parrot team, I'm proud to announce Parrot 1.8.0 Zygodactyly. Parrot, http://parrot.org/, is a virtual machine aimed at running all dynamic languages. Parrot 1.8.0 is available on Parrot's FTP site ftp://ftp.parrot.org/pub/parrot/releases/devel/1.8.0/, or follow the download instructions at http://parrot.org/download. Parrot 1.8.0 News: - 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. Many thanks to all our contributors for making this possible, and our sponsors for supporting this project. Our next scheduled release is December 15th 2009. Enjoy! -- Bernhard Schmalhofer
Parrot 0.6.4
Hi, on behalf of the Parrot team, I'm proud to announce the release of Parrot 0.6.4 St. Vincent Amazon. Parrot 0.6.4 is available via CPAN, or follow the download instructions at http://parrotcode.org/source.html. For those who would like to develop on Parrot, or help develop Parrot itself, we recommend using Subversion on the source code repository to get the latest and best Parrot code. Parrot 0.6.4 News: - Documentation + removed a lot of old information from the FAQ + improved function level documentation - Configuration + removed the configuration item 'has_gnu_m4' + refactored ICU-detection - Languages + ChitChat - improved the Smalltalk implementation + Pipp - renamed Plumhead to Pipp - support for a lot of builtin functions. - Pipp now uses PHP specific data types. - converted from PCT with TGE to PCT with NQP actions - improvements in the PCT variant by using optok parsing - start of object support + pir - simple assignments work + json - added a PCT-based implementation of JSON parsing + lolcode - improved handling of symbols - added support for block handling - added support for globals + Lua - more tests + Rakudo - updated Range implementation - added enums - added generic type declarations (::T) - added runtime mixing of roles with 'does' and 'but' - added generic type declarations - fixed handling of implicit lexicals ($_, $!, and $/) - fixed implicit method calls on $_ - improved complex math builtins, added Complex - moved many builtins to class Any - declaration of lists of variables now work - improved test infrastructure - 910 additional passing spec tests since last release - more convergence with STD.pm grammar - added named 0-ary parsing and ops - Compilers + PCT: - allowed subroutine and method names to be a PAST tree that produces the name - Improved lexical handling - Tools + pbc_disassemble renamed from disassemble - Implementation + allowed .macro_const in PIR + added the flag :lexid(...) for subroutines + made multiple dispatch work for sub types + fixed garbage collection bug related to the metadata attached to a PMC_EXT structure + added a warning when using deprecated opcodes + simplified the stacks implementation + fixed C++ build + improved closure and lexical support + improved IMCC register allocator + added cache for all runtime-constant strings, reducing memory usage - Miscellaneous + improved OpenGL/GLU/GLUT bindings + added a standard profile for Perl::Critic coding standard testing + added support for smoke testing with Smolder + enabled use of Test::Harness 3.0 if available, but don't require it for 'make test' + added the executable 'parrot_config' to query Parrot configuration Many thanks to all our contributors for making this possible, and our sponsors for supporting this project. Our next scheduled release is August 19th 2008. Enjoy!
Parrot 0.6.0 PP is released.
On behalf of the Parrot team, I'm proud to announce Parrot 0.6.0 PP. Parrot (http://parrotcode.org/) is a virtual machine aimed at running dynamic languages. This release is a milestone release featuring the revamping of Parrot Magic Cookies. Parrot 0.6.0 can be obtained via CPAN (soon), or follow the download instructions at http://parrotcode.org/source.html. For those who would like to develop on Parrot, or help develop Parrot itself, we recommend using Subversion or SVK on the source code repository to get the latest and best Parrot code. Parrot 0.6.0 News: - Specification + launched pdd18_security.pod + updated pdd17_pmc.pod + launching draft of pdd28_character_sets.pod - Documentation + cleanup of IMCC documentation - Configuration + add step auto::gettext + add step auto::crypto - Compilers + PCT: . Fix '-e' option . Phase out P6Regex in favor of Perl6Regex + IMCC: '.local Array my_arr' is illegal now - Languages + C99: reimplementation with PCT + lolcode: . various updates . add support for functions with params . add math functions + Rakudo: . support for 'say' . first cut at smart matching . indirect method calls . support for Pairs . added methods 'grep' and 'first' . implement auto{increment,decrement} . initial implementation of 'perl6doc' + Lua: . various updates . add base64 library + Cardinal: basic support for functions with parameters + Pheme: various updates + Ecmascript: various updates + Tcl: now targeting tcl 8.5.1, no more expected failures in test suite. (No, this doesn't mean everything's implemented. =-) + Eclectus: various updates + WMLScript: various updates - Implementation + PDD17 (PMCs) + Add library YAML::Dumper + Add the MD2, MD4, MD5, RIPEMD160, SHA SHA1 PMC, as a wrapper around libcrypto - Miscellaneous + various bugfixes, code cleanups and coding standard fixes + consting + remove external Perl 5 modules from the Parrot distribution Thanks to all our contributors for making this possible, and our sponsors for supporting this project. Enjoy! Bernhard Schmalhofer
Should the op 'pin' create a C-string ?
Hi, I am trying to pass a string, containing YAML, from Parrot to the shared library 'libsyck'. 'libsyck' provides two functions: void syck_parser_str( SyckParser *, char *, long, SyckIoStrRead ); ( v_ptip ) SYMID syck_parse( SyckParser * ); ( i_p ) 'syck_parser_str' tells libsyck about the string to be parsed. 'syck_parse' does the parsing. This means that the string buffer has to stay around, until the parsing is done. Currently, when calling 'syck_parser_str', the string buffer is copied into newly allocated system memory. In order to avoid memory leaks, this allocated system memory is freed immediately after 'syck_parser_str'. Not surprisingly, bad things are happening when 'syck_parse' is called later. From strings.pod I gather that the op 'pin' is meant to make strings fit for passing strings to external libraries. For me it would be convenient, if 'pin' would put a trailing '\0' at the end of the used string buffer. Also a pinned string shouldn't have to be copied into newly allocated memory. Is that the right way to go? -- /* [EMAIL PROTECTED] */ Geschenkt: 3 Monate GMX ProMail + 3 Top-Spielfilme auf DVD ++ Jetzt kostenlos testen http://www.gmx.net/de/go/mail ++