develooper Front page | perl.perl6.compiler | Postings from May 2005

Re: [RELEASE] Pugs 6.2.5 is released!

From:
Jonathan Worthington
Date:
May 24, 2005 17:20
Subject:
Re: [RELEASE] Pugs 6.2.5 is released!
Message ID:
00fd01c560bf$83d74370$6ff8e880@jwcsjw
"vadim" <vadim@vkonovalov.ru> wrote:
>> On behalf of the Pugs team, I am elated to announce the release of
>> Pugs 6.2.5, with much more comprehensive OO support, hyper and reduction
>> metaoperators on user-defined operators, as well as experimental
>> coroutine support.
>>
>
> Could you please advice, how is it possible to use external library, or
> better just C code?
> Perl6 <-> C binding.
>
> Should I use Haskell for this? Should I use parrot?
>
> To be more concrete, I want to start using Tcl/Tk from within perl6
> (like currently Tcl::Tk CPAN module does this)
> At first I tried TclHaskell, which currently is out of date, and it took
> considerable efforts for me, unknowledgable in Haskell, to make it
> compile, but even after that is is non-trivial to move on, however seems
> doable.
>
> Which approach will you advice?
>
If I were doing this then I'd take my C library and write some kind of 
wrapper for it using Parrot. Parrot's NCI (Native Call Interface) lets you 
load a dynamically linked library/shared object and call functions in it (I 
once wrote a script that auto-gen'd Parrot calls for the entire Win32 API). 
Then you can write a Perl6 module that inlines PIR (Parrot code) that loads 
your Parrot code wrapping the C library and calls the functions you want, 
and wrap all of this again in some nice Perl 6 module/class.

I believe that the plan is that Pugs will be re-written from Haskell into 
Perl 6, so writing your binding to the C library with Haskell's support for 
doing so probably won't be a long-term solution to your needs.

Hope this helps, and corrections welcome (all(qw/beer wine baileys/) == 
none(@good_idea) ;-)).

Jonathan 




nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About