Slash Boxes
NOTE: use Perl; is on undef hiatus. You can read content, but you can't post it. More info will be forthcoming forthcomingly.

All the Perl that's Practical to Extract and Report

use Perl Log In

Log In

[ Create a new account ]

Bernhard (4508)

https://www.xing ... hard_Schmalhofer

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
github: []
LinkedIn: []
XING: []

+ -

  Comment: Thanks for `` (Score 1) on 2010.07.02 4:31

by Bernhard on 2010.07.02 4:31 (#72136)
Attached to: Test counts and vim
Thanks for this tip. I knew about CTRL-A, but the `` (2 backticks) were new to me.
Read More 3 comments
Comments: 3
+ -

  Parrot 1.8.0 "Zygodactyly" Released! on 2009.11.17 12:49 Bernhard

Submitted by Bernhard on 2009.11.17 12:49
Bernhard writes "On behalf of the Parrot team, I'm proud to announce Parrot 1.8.0 "Zygodactyly". Parrot is a virtual machine aimed at running all dynamic languages.

Parrot 1.8.0 is available on Parrot's FTP site, or follow the download instructions. For those who would like to develop on Parrot, or help develop Parrot itself, we recommend using Subversion on our source code repository to get the latest and best Parrot code.

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,
    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,
  + 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.


Read More 0 comments

+ -

  Journal: Basic OO-features in Pipp on 2009.06.24 8:35

Journal by Bernhard on 2009.06.24 8:35
User Journal

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.

Read More 0 comments

+ -

  Journal: My first PHP extension on 2009.06.07 6:45

Journal by Bernhard on 2009.06.07 6:45
User Journal

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'.

Read More 0 comments

+ -

  Journal: Declaring lexicals within $sth-bind_columns() on 2009.03.05 15:27

Journal by Bernhard on 2009.03.05 15:27
User Journal
Lately I have taken on the maintainance of a legacy Perl 5 script. The script heavily uses the DBI function bind_columns() for retrieving data from a relational database. After some refaktoring I ended up with something like this:

my $sth = $dbh->prepare(<<'END_SQL');
SELECT color, food, num_legs
  FROM pet
my ( $food, $something_else, $color, $num_legs);
$sth->bind_columns( \$color, \$food, $num_legs );

Read More 1 comments
Comments: 1
+ -

  Journal: Pipp has left the nest and moved to github on 2009.02.15 8:18

Journal by Bernhard on 2009.02.15 8:18
User Journal

Pipp, that is PHP on Parrot, has moved to github,

I have not yet tested with an installed Parrot yet. So for now please check out Pipp in a Parrot source dir. See for details.

Read More 0 comments

+ -

  Journal: Moved Unlambda and Lazy K to github on 2009.01.25 15:15

Journal by Bernhard on 2009.01.25 15:15
User Journal

Unlambda,, and 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,

Read More 0 comments

+ -

  Journal: Parrot m4 has left the nest on 2009.01.18 7:38

Journal by Bernhard on 2009.01.18 7:38
User Journal

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 The source can easily be fetched by typing 'make co-m4' in the 'languages' directory of a Parrot working copy.

Read More 0 comments

+ -

  Comment: Re:Added to the wiki (Score 1) on 2009.01.15 8:20

Should be there now. I must have forgotten to submit after previewing.
Read More 7 comments
Comments: 7
+ -

  Comment: Added to the wiki (Score 1) on 2009.01.15 4:27

Cool, I have added the information about Perl to
Read More 7 comments
Comments: 7
+ -

  Journal: HQ9+ left the nest on 2009.01.12 16:58

Journal by Bernhard on 2009.01.12 16:58
User Journal

HQ9+,, is a little language the makes a few things easy, and almost all other things impossible.

Read More 0 comments

+ -

  Comment: make svnclobber (Score 1) on 2009.01.03 16:43

by Bernhard on 2009.01.03 16:43 (#66716)
Attached to: svn cleanup (parrot)
Doesn't 'make svnclobber' and 'svn revert -R .' achieve the same goal?
Read More 5 comments
Comments: 5
+ -

  Journal: Closures for Pipp on 2009.01.01 11:57

Journal by Bernhard on 2009.01.01 11:57
User Journal

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 a=drs-tp5008 for a nice writeup.

Read More 0 comments

+ -

  Journal: Pipp is now more boring on 2008.12.21 7:04

Journal by Bernhard on 2008.12.21 7:04
User Journal

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:

Antlr 3
Parsing and tree transformation with Java-based Antlr 3
Take XML-output from phc and transform it with XSLT
Parrot Compiler Toolkit
Read More 0 comments

+ -

  Journal: Rewriting Pipp tests in PHP on 2008.11.27 15:36

Journal by Bernhard on 2008.11.27 15:36
User Journal

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

Read More 3 comments
Comments: 3