in reply to Concurrency in Perl 6

If you're interested in concurrency features...

The one aspect of perl 6 that does intrigue me is its extendability ... but I never see any posts about that.

AFAIK there's no XS with perl 6, so just *how* does one extend perl6 ?
I mean, if I find a really cool C library whose functionality I want to wrap, precisely how do I go about doing that ?
Is the procedure well laid out in the perl 6 documentation ?
Is it a big learning curve ?

Cheers,
Rob

Replies are listed 'Best First'.
Re^2: Concurrency in Perl 6
by raiph (Deacon) on Nov 06, 2013 at 17:10 UTC
    AFAIK there's no XS with perl 6, so just *how* does one extend perl6 ?

    The highest level sugar of all for extending P6 with code from other langs starts with a use some::module:from<otherlang> statement. For example that's how you call Java code.

    I mean, if I find a really cool C library whose functionality I want to wrap, precisely how do I go about doing that ?

    In an ideal world you'd use the above sugar. In the real world things aren't quite that simple (a long discussion about this today on #perl6).

    Fortunately there's a really nice lower level interface called NativeCall (codename Zavolaj) so you use that instead.

    Is the procedure well laid out in the perl 6 documentation ?

    Imo the formal doc is weak. I recommend interested parties first focus on this Advent Calendar post from a couple years ago.

    NB Right now you need to use Rakudo/Parrot to use NativeCall. (The final fixes for it on Rakudo/JVM are expected this month. My guess is that it'll be another few months before Rakudo/MoarVM catches up.)

    Also note that some of the doc is ahead of implementation, some of it behind.

    Is it a big learning curve ?

    For a 60 second intro, see this short example.

    I particularly like the way NativeCall supports use of P6's is repr trait to overlay P6 objects and C structs. This combines high performance (the same memory is used by both langs for fast and memory efficient execution) with coding convenience -- you just write ordinary object oriented Perl 6 code to read/write from/to a C Struct!


    »ö« . o O ( "the celebrity tell-all of the Perl-6 cult?" )

Re^2: Concurrency in Perl 6
by grondilu (Friar) on Nov 07, 2013 at 01:08 UTC
    I mean, if I find a really cool C library whose functionality I want to wrap, precisely how do I go about doing that ?

    You probably want to use the NativeCall module.

Re^2: Concurrency in Perl 6
by Anonymous Monk on Nov 06, 2013 at 18:48 UTC
    Documentation? That is not -Ofun! You have confused Perl-6 with a project built for users. These slides are the only documentation Perl-6 will ever have.

      Apart from all the documentation... I'm not a 'sixer' but found this stuff and have used it to learn most of the language features I care about and have used.

      http://perlcabal.org/syn/S21.html <- native call synopsis http://doc.perl6.org <- perldoc/javadoc core api equivalent

      I really don't understand the frequency of snide anon monk around Perl6 posts. If you don't get off on all the stuff in 6 land just ignore it. Why take epic dumps on everyone else's parade? There are users we just aren't fanatical. This is my first post on perlmonks for example. I've used Perl5 for more than a decade... I'm just tired of seeing nay saying and bickering rather than excitement. Someone tells you there are some cool concurrency features in a perlesk language. This is exciting not the end of the world.

        Maybe Perl-6 should release something normal people can use before it flaps its gums about how great it's going to be when it is finally finished in 2026.