A freelance software engineer with experience in webapplications, databases and bioinformatics.
A contributor to Parrot and the person behind Pipp.
A physicist who worked with third sound in Helium-III and CCD X-ray detectors.
barney on irc.perl.org
github: http://github.com/bschmalhofer [github.com]
XING: https://www.xing.com/profile/Bernhard_Schmalhofer [xing.com]
+ 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.
+ 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.
— PAST::Block now supports an 'nsentry' attribute.
— PAST::Var allows 'contextual' scope.
— Attribute bindings now return the bound value.
+ 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.
+ 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.
+ 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.
+ The meaning of 'p' means in NCI function call signatures was clarified.
+ 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.
+ The mailing list parrot-users and a corresponding google group was created,
+ Many bugfixes, code cleanups, and coding standard fixes.
Thanks to all our contributors for making this possible, and our sponsors
for supporting this project. Our next release is December 15th 2009.
When starting on the ReflectionExtension class for Pipp, I got reminded that some very basic OO-features were not working yet. The good think is that I can all that stuff from Rakudo. So simple inheritance and reading member of class instances are working now.
I also simplified my Test.php. The current test number is now tracked in a global variable. Before that change, the test number had to be passed in from the test script.
PHP Extensions are usually written C and they usually export at least one constant, function, class, resource type or stream to the PHP userspace. So they are pretty much the same as XS-Modules in Perl 5. Extensive information about PHP extension can be found in Sara Golemons book 'Extending and Embedding PHP'.
my $sth = $dbh->prepare(<<'END_SQL');
SELECT color, food, num_legs
my ( $food, $something_else, $color, $num_legs);
$sth->bind_columns( \$color, \$food, $num_legs );
Pipp, that is PHP on Parrot, has moved to github, http://github.com/bschmalhofer/pipp/.
I have not yet tested with an installed Parrot yet. So for now please check out Pipp in a Parrot source dir. See http://wiki.github.com/bschmalhofer/pipp for details.
Unlambda, http://www.madore.org/~david/programs/unlambda/, and Lazy K, http://esolangs.org/wiki/Lazy_K, are two pure functional esoteric programming languages. Leo Tötsch implemented them for Parrot. As language implementation are encouraged to leave the nest, I moved them over to Github, http://github.com/bschmalhofer.
Parrot m4 is an incomplete implementation of GNU m4 on top of parrot. As language implementations are encouraged to leave Parrot's svn, I have moved the code and the history over to http://github.com/bschmalhofer/m4/. The source can easily be fetched by typing 'make co-m4' in the 'languages' directory of a Parrot working copy.
HQ9+, http://www.esolangs.org/wiki/HQ9_Plus, is a little language the makes a few things easy, and almost all other things impossible.
In the last days I have been working on supporting closures for Pipp. Yes, you've read correctly. The next version of PHP will support real closures. See
Comparing different parsing and tree transformation techniques was for me a major reason for starting work on Pipp. Therefore Pipp had until now support for different frontends:
Pipp is Parrot's PHP and it has small test suite that lives alongside the code in the Parrot repository. Most of the test scripts are written in Perl 5 using the Parrot::Test modules. So usually I tell Pipp to run some PHP code and check whether the expected result is printed. This works fine but is not very exiting.
More exciting, for some definition of exciting, is to run PHP scripts and emit TAP with a testing lib implemented in PHP. So Pipp this needs