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: []

Journal of Bernhard (4508)

Friday November 14, 2008
07:35 AM

Attended talk about Enterprise 2.0

Wednesday night I attended a talk entitled "Enterprise 2.0 – Die Kunst, loszulassen". I didn't expect much of the talk, as I primarily went there for meeting people. But I was pleasently surprised, as the speaker Wilms Buhse did an excellent talk. He really made his point, that the lessons learned from social networks can be applied to enterprises. His examples were the experiences at CoreMedia and with

The other thing I learned at the Forum is that Dresden is really a nice City. I just didn't find the sweet spots when I went there.

Tuesday July 15, 2008
06:17 AM

Parrot 0.6.4

On behalf of the Parrot team, I'm proud to announce Parrot 0.6.4 "St. Vincent Amazon." Parrot is a virtual machine aimed at running dynamic languages.

Parrot 0.6.4 is available via CPAN (soon), 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 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 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

Thanks to all our contributors for making this possible, and our sponsors for supporting this project. Our next release is 19 Aug 2008.


Wednesday July 02, 2008
10:26 AM

Welcoming Pipp

The PHP on Parrot implementation used to be called Plumhead, after the Plum-Headed Parakeet. As this name is somewhat goofy, a new name was sought. Some more or less sane variants were discussed,

And the winner is Pipp.

Thanks to Christoph Otto for getting this rolling.

Thursday May 01, 2008
05:32 AM

Eclectus now emits Not Quite Perl6

Eclectus is a Scheme-compiler implemented in Scheme. The compilation target is a Parrot Abstract Syntax Tree, which is being run with the help of the Parrot Compiler Toolkit.

A sideline in Eclectus is the the problem how to tell PCT about the PAST generated in Scheme. Up to now I generated PIR that built up that data structure. This involved nasty dealings with unique ids for Parrot registers.

Generating NQP is much saner. The PAST is now set up with nested PAST::Node constructors.

Even nicer would be to create a YAML representation of PAST. But PCT doesn't support this yet.

Wednesday April 02, 2008
02:05 PM

HQ9+ reimplemented with PCT

Klaas Jan's excellent "Parrot Compiler Tools" - Tutorial inspired me to go back and reimplement HQ9+ with PCT. The result is in

As HQ9+ is not really a hard language, it all went fairly smooth. '' created me a stub in 'languages/hq9plus'. Then I copied some reusable files from the old implementation in 'languages/HQ9plus'. This was fine under Linux, but caused pain for folks on case-insensitive file systems. Sorry, next time I try to think before committing!

For looking up snippets of PAST I used the old trick: write a snippet of Perl 6 and look at the PAST that Rakudo generates.

The last problem was whitespace handling. For that I only needed a simple change in the grammar. Replace all 'rule's by 'token's and sprinkle some '\s*'s.

The next thing on my agenda is for Plumhead and Eclectus. I want to switch from 'generate PIR that sets up PAST' to 'generate NQP that sets up PAST'.

Tuesday March 18, 2008
04:19 PM

Parrot 0.6.0 "P&P" released

On behalf of the Parrot team, I'm proud to announce Parrot 0.6.0 "P&P." Parrot 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. For those who would like to develop on Parrot, or help develop Parrot itself, we recommend using Subversion or SVK on our 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.


Monday February 25, 2008
03:09 PM

Techtip of the week

When being shocked that your notebook is kaputt, as it apparently gets no power, please make sure that you are using the correct power supply. There are plugs with a slightly wider inner diameter.
Sunday January 06, 2008
01:30 PM

Parrot Abstract Syntax Tree in Scheme-XML

As I'm hacking away at Eclectus, Scheme on Parrot in Scheme, I'm starting to pick some Scheme knowledge. So before implementing new features I employed my new wisdom and did some refactoring on my Scheme code.

The most nasty thing in compiler.scm was the generation of PIR while traversing the to-be-compiled s-expression. I decided to use XML Infoset as an intermediate representation, as I already have an XSLT sheet for generating a PIR representation of PAST from an XML representation of PAST. The nice thing is that the XML infoset can also be represented as a Scheme s-expression, that is SXML. The Scheme librarx SSAX-SXML can turn SXML into XML and perform XSLT operations.

For an example let's look at the Scheme form:

(fx+ (fx+ -10 11) (fx+ (fx+ 4 3) (fx+ 3 3)))

In Perl 5 this could be expressed:

say ( (-11 10) + ( (4 + 3) + (3 + 3)));

Represented as SXML this becomes: (|PAST::Stmts| (|PAST::Op| (|@| (pasttype "call") (name "say")) (|PAST::Op| (|@| (pirop "n_add")) (|PAST::Op| (|@| (pirop "n_add")) (|PAST::Val| (|@| (value -10) (returns "EclectusFixnum"))) (|PAST::Val| (|@| (value 11) (returns "EclectusFixnum")))) (|PAST::Op| (|@| (pirop "n_add")) (|PAST::Op| (|@| (pirop "n_add")) (|PAST::Val| (|@| (value 4) (returns "EclectusFixnum"))) (|PAST::Val| (|@| (value 3) (returns "EclectusFixnum")))) (|PAST::Op| (|@| (pirop "n_add")) (|PAST::Val| (|@| (value 3) (returns "EclectusFixnum"))) (|PAST::Val| (|@| (value 3) (returns "EclectusFixnum")))))))))

Sunday December 09, 2007
03:33 PM

Plumhead and Eclectus

I'm inching forward with Plumhead, PHP on Parrot, and Eclectus, Scheme on Parrot.

Both have been converted to use the shiny new Parrot Compiler Toolkit. I don't use NQP yet, but being able to use Perl6 for compiler and library implementation is sooo sweet. Kudos to Patrick Michaud.

On the Plumhead side, Jeff Horwitz did some brave hacking and added Plumhead to mod_parrot. See

Saturday November 17, 2007
12:14 PM

Introducing Eclectus

When working on 'languages/scheme' in the Parrot repository I got estranged with using Perl5 for implementing Scheme on Parrot. It sure does the job, but I want to learn about Lisp, not about Arrays of Arrays in Perl 5.

I came across An Incremental Approach to Compiler Construction at This is a Scheme to x86 assembly compiler, implemented in Scheme. The cute thing is that the compiler construction is done in small steps. Every step constitutes a working compiler for a larger subset of Scheme. So I stared to work on Eclectus, a bootrapping Scheme to PBC compiler.

For pictures ses