Running partcl on parrot [Was: Re: GCC failed with configure.pl]

Jonathan "Duke" Leto jonathan at leto.net
Wed Aug 7 15:36:59 UTC 2013


Howdy,

This might be a good start:

https://github.com/parrot/parrot/blob/master/docs/pdds/pdd31_hll.pod

In general, that entire directory is called the "Parrot Developer
Documents" and are documents geared towards people like you, who want to
understand the insides of Parrot.

If you have more questions, you know where to ask :)

Duke

On Mon, Aug 5, 2013 at 9:37 PM, Ashraya <theemeraldsoul at gmail.com> wrote:

> Hello All,
>
> I was successfully able to embed parrot APIs in C and execute the same.
> Thanks a lot for your support. :)
>
> I need another favour. I want to understand the workflow of how a C or
> perl etc. file gets converted into the parse tree, past, post and pir. I
> want to know in depth, how this is done. Can you please point me to the
> right docs for this ?
>
> Thanks & Regards,
> Ashiva
>
> Thanks & Regards,*
> Ashraya S Shiva*
>
>
> On Fri, Jul 26, 2013 at 10:02 AM, Ashraya <theemeraldsoul at gmail.com>wrote:
>
>> A gentle reminder.. Can anyone please help me here ? I am not able to
>> execute the generated .pir file.
>>
>> ashiva at ubuntu:~/EScript$ ./installable_escript Test/hello.es
>> Hello World!
>>
>> ashiva at ubuntu:~/EScript$
>> ashiva at ubuntu:~/EScript$ ./installable_escript --target=pir Test/hello.es
>>
>> .HLL "escript"
>>
>> .namespace []
>> .sub "_block1000"  :anon :subid("10_1374761960.96533")
>> .annotate 'file', "Test/hello.es"
>> .annotate 'line', 1
>>     $P100 = "say"("Hello World!\n")
>>     .return ($P100)
>> .end
>>
>> ashiva at ubuntu:~/EScript$ ./installable_escript --target=pir Test/hello.es> Test/hello.pir
>> ashiva at ubuntu:~/EScript$
>> ashiva at ubuntu:~/EScript$
>> ashiva at ubuntu:~/EScript$ parrot Test/hello.pir
>> Could not find sub say
>> current instr.: '_block1000' pc 6 (Test/hello.pir:8) (Test/hello.es:1)
>> ashiva at ubuntu:~/EScript$
>>
>> Thanks & Regards,
>> Ashiva
>>
>> Thanks & Regards,*
>> Ashraya S Shiva*
>>
>>
>> On Thu, Jul 25, 2013 at 7:59 PM, Ashraya <theemeraldsoul at gmail.com>wrote:
>>
>>> Hi All,
>>>
>>> Apart from the problem in compiling my factorial program, I tried to
>>> create a new language using the my_language_shell.pl given in PCT
>>> documentation.
>>> I followed the steps and created the skeleton for my language : EScript.
>>>
>>> When I tried printing "Hello World!", it printed properly.
>>>
>>> I tried generating the parse, past, post trees and it was all generated.
>>> I even generated the .pir file for my hello.es
>>>
>>> Here is the snapshot :
>>>
>>> ashiva at ubuntu:~/EScript$ ./installable_escript Test/hello.es
>>> Hello World!
>>>
>>> ashiva at ubuntu:~/EScript$
>>>
>>> However, if I try to execute the generated pir file, it throws an error :
>>>
>>> ashiva at ubuntu:~/EScript$ ./installable_escript --target=pir Test/
>>> hello.es
>>>
>>> .HLL "escript"
>>>
>>> .namespace []
>>> .sub "_block1000"  :anon :subid("10_1374761960.96533")
>>> .annotate 'file', "Test/hello.es"
>>> .annotate 'line', 1
>>>     $P100 = "say"("Hello World!\n")
>>>     .return ($P100)
>>> .end
>>>
>>> ashiva at ubuntu:~/EScript$ ./installable_escript --target=pir Test/
>>> hello.es > Test/hello.pir
>>> ashiva at ubuntu:~/EScript$
>>> ashiva at ubuntu:~/EScript$
>>> ashiva at ubuntu:~/EScript$ parrot Test/hello.pir
>>> Could not find sub say
>>> current instr.: '_block1000' pc 6 (Test/hello.pir:8) (Test/hello.es:1)
>>> ashiva at ubuntu:~/EScript$
>>>
>>>
>>> Can anyone please tell me what's wrong in my steps ?
>>>
>>> Please help.
>>>
>>> Thanks a lot, in advance.
>>>
>>> With Best Regards,
>>> Ashiva
>>>
>>> Thanks & Regards,*
>>> Ashraya S Shiva*
>>>
>>>
>>> On Wed, Jul 24, 2013 at 5:38 PM, Ashraya <theemeraldsoul at gmail.com>wrote:
>>>
>>>> Hi All,
>>>>
>>>> I am trying to run a simple factorial program using parrot inside my C
>>>> code.
>>>>
>>>> This is from the embed_new.pod tutorial.
>>>>
>>>> This line in the main function seems to be giving me some errors :
>>>>
>>>> Parrot_api_load_bytecode_file(interp, "foo.pbc", &pf)
>>>>
>>>>
>>>> ashiva at ubuntu:~/Parrot/rakudo/Test$ gcc factorial.c `parrot_config
>>>> embed-cflags` `parrot_config embed-ldflags`
>>>> factorial.c: In function ‘main’:
>>>> factorial.c:65:5: warning: passing argument 2 of
>>>> ‘Parrot_api_load_bytecode_file’ from incompatible pointer type [enabled by
>>>> default]
>>>> In file included from factorial.c:2:0:
>>>> ../parrot/include/parrot/api.h:324:12: note: expected ‘Parrot_String’
>>>> but argument is of type ‘char *’
>>>> ashiva at ubuntu:~/Parrot/rakudo/Test$
>>>>
>>>> Can anyone please suggest what I can possibly do to avoid these errors
>>>> and run the pbc ?
>>>>
>>>> Thanks & Regards,
>>>> Ashraya
>>>>
>>>>
>>>> Thanks & Regards,*
>>>> Ashraya S Shiva*
>>>>
>>>>
>>>> On Wed, Jul 24, 2013 at 12:23 AM, Ashraya <theemeraldsoul at gmail.com>wrote:
>>>>
>>>>> Oh ok.. Thanks for the clarification, Will.
>>>>>
>>>>> Thank you all, for your patience. :)
>>>>>
>>>>> Thanks & Regards,*
>>>>> Ashraya S Shiva*
>>>>>
>>>>>
>>>>> On Wed, Jul 24, 2013 at 12:12 AM, Will Coleda <will at coleda.com> wrote:
>>>>>
>>>>>> FYI, I'm the partcl developer.
>>>>>>
>>>>>> Some notes about the status of partcl on parrot:
>>>>>>
>>>>>> https://github.com/partcl/partcl is the old, PIR based version -
>>>>>> this version was more complete, written in PIR & C, but it is not even
>>>>>> being tested regularly to insure that changes in parrot don't break it, as
>>>>>> previous breaking changes are still unresolved.
>>>>>>
>>>>>> https://github.com/partcl/partcl-nqp is newer, and is targeting the
>>>>>> nqp-rx that ships with parrot, which is, so far as I know, no longer
>>>>>> maintained - a snapshot is bundled in with parrot.
>>>>>>
>>>>>> partcl-nqp  has a branch, nqp2, which is in the middle of trying to
>>>>>> target the standalone nqp, which is being maintained. However, this is a
>>>>>> work in progress, and I'm not sure the branch even compiles at this point.
>>>>>> The goal is to 1) make this work with the new standalone NQP, and then to
>>>>>> get this version as functional as the PIR version once was. But it's not an
>>>>>> actively developed project.
>>>>>>
>>>>>> So, it looks like you're using the first version... and yes, I can
>>>>>> reproduce your problem with my installed parrot (5.5.0-devel)
>>>>>>
>>>>>> I haven't done a bisect, but it looks like this file (Tcl::Glob) was
>>>>>> installed as part of parrot's 5.0.0-devel branch, but isn't as of 5.5.0
>>>>>>
>>>>>> So, partcl on PIR is extra broken until that's fixed, or you could
>>>>>> try with an older parrot version.
>>>>>>
>>>>>> Apologies.
>>>>>>
>>>>>> On Tue, Jul 23, 2013 at 2:18 PM, Ashraya <theemeraldsoul at gmail.com>wrote:
>>>>>>
>>>>>>> One more thing.. I am trying to compile TCL code here too..
>>>>>>>
>>>>>>> But it doesn't seem to work :
>>>>>>>
>>>>>>> ashiva at ubuntu:~/Parrot/rakudo/partcl$ ../parrot/parrot tcl.pbc -e
>>>>>>> "puts {hello world}"
>>>>>>> "load_bytecode" couldn't find file 'Tcl/Glob.pir'
>>>>>>> current instr.: 'prepare_lib' pc 27748 (runtime/builtin/dict.pir:102)
>>>>>>> called from Sub '_main' pc 0 (src/tclsh.pir:39)
>>>>>>> called from Sub '_main' pc 3 (src/tclsh.pir:42)
>>>>>>> ashiva at ubuntu:~/Parrot/rakudo/partcl$
>>>>>>>
>>>>>>>
>>>>>>> I read in a conversation thread that this is working.. But I am not
>>>>>>> able to understand where I am going wrong.
>>>>>>>
>>>>>>> Please help.
>>>>>>>
>>>>>>> Thanks a lot,
>>>>>>> Ashraya
>>>>>>>
>>>>>>> Thanks & Regards,*
>>>>>>> Ashraya S Shiva*
>>>>>>>
>>>>>>>
>>>>>>> On Tue, Jul 23, 2013 at 9:54 PM, Will Coleda <will at coleda.com>wrote:
>>>>>>>
>>>>>>>> It sounds like you're trying to compile C code with parrot - Parrot
>>>>>>>> is a compiler for the languages PIR and PASM, and provides an interpreter
>>>>>>>> to run PBC (parrot bytecode).
>>>>>>>>
>>>>>>>> You can compile C code that interoperates with parrot (using the
>>>>>>>> embed/extend interface), but you cannot use parrot to compile and run C
>>>>>>>> code by itself. For that, you'd use a tool like GCC.
>>>>>>>>
>>>>>>>>
>>>>>>>> On Tue, Jul 23, 2013 at 11:58 AM, Ashraya <theemeraldsoul at gmail.com
>>>>>>>> > wrote:
>>>>>>>>
>>>>>>>>>
>>>>>>>>> Hello Duke,
>>>>>>>>>
>>>>>>>>> Let me rephrase my question.
>>>>>>>>>
>>>>>>>>> For example, I write a simple perl file, hello.pl :
>>>>>>>>> #!/usr/bin/perl
>>>>>>>>> print "Hello World"
>>>>>>>>>
>>>>>>>>> To compile this, I use :  parrot perl6.pbc hello.pl
>>>>>>>>>
>>>>>>>>> The output is : Hello World
>>>>>>>>>
>>>>>>>>> Similarly, if I have a C file, hello.c :
>>>>>>>>>
>>>>>>>>> #include<stdio.h>
>>>>>>>>>
>>>>>>>>> int main()
>>>>>>>>> {
>>>>>>>>>     printf("Hello World\n");
>>>>>>>>>     return 0;
>>>>>>>>> }
>>>>>>>>>
>>>>>>>>> How would I compile this to get the output?
>>>>>>>>>
>>>>>>>>> Note : I downloaded the c99 package for parrot from github but I
>>>>>>>>> could not get this installed.
>>>>>>>>>
>>>>>>>>> Thanks & Regards,*
>>>>>>>>> Ashraya S Shiva*
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Tue, Jul 23, 2013 at 7:23 PM, Jonathan "Duke" Leto <
>>>>>>>>> jonathan at leto.net> wrote:
>>>>>>>>>
>>>>>>>>>> Howdy Ashraya,
>>>>>>>>>>
>>>>>>>>>> I believe nobody is answering you because they don't quite
>>>>>>>>>> understand
>>>>>>>>>> what you mean.
>>>>>>>>>>
>>>>>>>>>> Could you ask your question another way, and give some more
>>>>>>>>>> background
>>>>>>>>>> about what you are trying to do?
>>>>>>>>>>
>>>>>>>>>> Duke
>>>>>>>>>>
>>>>>>>>>> On Sun, Jul 21, 2013 at 10:51 PM, Ashraya <
>>>>>>>>>> theemeraldsoul at gmail.com> wrote:
>>>>>>>>>> > A gentle reminder.. Please reply. How to convert a C code into
>>>>>>>>>> PIR code ?
>>>>>>>>>> >
>>>>>>>>>> > Thanks & Regards,
>>>>>>>>>> > Ashraya S Shiva
>>>>>>>>>> >
>>>>>>>>>> >
>>>>>>>>>> > On Wed, Jul 17, 2013 at 4:30 PM, Ashraya <
>>>>>>>>>> theemeraldsoul at gmail.com> wrote:
>>>>>>>>>> >>
>>>>>>>>>> >> Hello Duke,
>>>>>>>>>> >>
>>>>>>>>>> >> I am trying one of the examples in the .pod you have given :
>>>>>>>>>> >>
>>>>>>>>>> >>   /* foo.c */
>>>>>>>>>> >>
>>>>>>>>>> >>   /* specify the function prototype */
>>>>>>>>>> >>   #ifdef __WIN32
>>>>>>>>>> >>   __declspec(dllexport) void foo(void);
>>>>>>>>>> >>   #else
>>>>>>>>>> >>   void foo(void);
>>>>>>>>>> >>   #endif
>>>>>>>>>> >>
>>>>>>>>>> >>   void foo(void) {
>>>>>>>>>> >>     printf("Hello Parrot!\n");
>>>>>>>>>> >>   }
>>>>>>>>>> >>
>>>>>>>>>> >> Then, after having compiled the file as a shared library, the
>>>>>>>>>> PIR code
>>>>>>>>>> >> looks like this:
>>>>>>>>>> >>
>>>>>>>>>> >>
>>>>>>>>>> >> Here, how do I compile the .c file to produce a .pir file ??
>>>>>>>>>> >>
>>>>>>>>>> >> Thanks,
>>>>>>>>>> >> Ashiva
>>>>>>>>>> >>
>>>>>>>>>> >> Thanks & Regards,
>>>>>>>>>> >> Ashraya S Shiva
>>>>>>>>>> >>
>>>>>>>>>> >>
>>>>>>>>>> >> On Wed, Jul 17, 2013 at 2:08 AM, Jonathan "Duke" Leto <
>>>>>>>>>> jonathan at leto.net>
>>>>>>>>>> >> wrote:
>>>>>>>>>> >>>
>>>>>>>>>> >>> Howdy,
>>>>>>>>>> >>>
>>>>>>>>>> >>> You can embed Parrot inside of a C or C++ application. It can
>>>>>>>>>> be any
>>>>>>>>>> >>> language, actually (it works with FORTRAN), but we have the
>>>>>>>>>> best docs
>>>>>>>>>> >>> for C and C++. I have embedded Parrot inside of PostgreSQL
>>>>>>>>>> (PL/Parrot
>>>>>>>>>> >>> [0]), but that uses the old interface [1]. The new interface
>>>>>>>>>> [2] is
>>>>>>>>>> >>> infinitely better, but has not been heavily used. But it was
>>>>>>>>>> designed
>>>>>>>>>> >>> very well by Whiteknight, so it is high quality.
>>>>>>>>>> >>>
>>>>>>>>>> >>> You can also call out to C/C++ libraries from parrot via
>>>>>>>>>> "dlopen" and
>>>>>>>>>> >>> cousins via the Native Call Interface (NCI) substem of Parrot
>>>>>>>>>> [3].
>>>>>>>>>> >>>
>>>>>>>>>> >>> Which of those things do you want to do, or possibly both?
>>>>>>>>>> >>>
>>>>>>>>>> >>> Duke
>>>>>>>>>> >>>
>>>>>>>>>> >>> [0] http://pl.parrot.org
>>>>>>>>>> >>> [1]
>>>>>>>>>> https://github.com/parrot/parrot/blob/master/docs/embed.pod
>>>>>>>>>> >>> [2]
>>>>>>>>>> https://github.com/parrot/parrot/blob/master/docs/embed_new.pod
>>>>>>>>>> >>> [3]
>>>>>>>>>> >>>
>>>>>>>>>> https://github.com/parrot/parrot/blob/master/docs/pdds/draft/pdd16_native_call.pod
>>>>>>>>>> >>>
>>>>>>>>>> >>>
>>>>>>>>>> >>> On Tue, Jul 16, 2013 at 4:58 AM, Ashraya S <
>>>>>>>>>> theemeraldsoul at gmail.com>
>>>>>>>>>> >>> wrote:
>>>>>>>>>> >>> > Hello All,
>>>>>>>>>> >>> >
>>>>>>>>>> >>> > I switched to my favorite Ubuntu and parrot got installed
>>>>>>>>>> like a charm.
>>>>>>>>>> >>> >
>>>>>>>>>> >>> > However, I would like to know how parrot supports C program
>>>>>>>>>> >>> > compilation.
>>>>>>>>>> >>> > Is there any tutorial I can find ? I did not get much
>>>>>>>>>> support for C in
>>>>>>>>>> >>> > google. Got loads for perl and pasm.
>>>>>>>>>> >>> >
>>>>>>>>>> >>> > Please advise.
>>>>>>>>>> >>> >
>>>>>>>>>> >>> > Thanks,
>>>>>>>>>> >>> > Ashiva
>>>>>>>>>> >>> >
>>>>>>>>>> >>> >
>>>>>>>>>> >>> > On Wednesday, July 10, 2013 7:30:29 PM UTC+5:30, Coke wrote:
>>>>>>>>>> >>> >>
>>>>>>>>>> >>> >> Do you have a C compiler installed?
>>>>>>>>>> >>> >>
>>>>>>>>>> >>> >>
>>>>>>>>>> >>> >> On Wed, Jul 10, 2013 at 6:39 AM, Ashraya S <
>>>>>>>>>> theemer... at gmail.com>
>>>>>>>>>> >>> >> wrote:
>>>>>>>>>> >>> >>>
>>>>>>>>>> >>> >>> Hi All,
>>>>>>>>>> >>> >>>
>>>>>>>>>> >>> >>> I am new to parrot and i am trying to install this in
>>>>>>>>>> windows 7.
>>>>>>>>>> >>> >>> I have installed perl and minGW and have added these to
>>>>>>>>>> my PATH as
>>>>>>>>>> >>> >>> well.
>>>>>>>>>> >>> >>>
>>>>>>>>>> >>> >>> But i get the following error :
>>>>>>>>>> >>> >>>
>>>>>>>>>> >>> >>> C:\Users\ashiva\Documents\GitHub\parrot>perl Configure.pl
>>>>>>>>>> >>> >>> Parrot Version 5.5.0 Configure 2.0
>>>>>>>>>> >>> >>> Copyright (C) 2001-2013, Parrot Foundation.
>>>>>>>>>> >>> >>>
>>>>>>>>>> >>> >>> Hello, I'm Configure. My job is to poke and prod your
>>>>>>>>>> system to
>>>>>>>>>> >>> >>> figure
>>>>>>>>>> >>> >>> out
>>>>>>>>>> >>> >>> how to build Parrot. The process is completely automated,
>>>>>>>>>> unless you
>>>>>>>>>> >>> >>> passed in
>>>>>>>>>> >>> >>> the `--ask' flag on the command line, in which case I'll
>>>>>>>>>> prompt you
>>>>>>>>>> >>> >>> for a
>>>>>>>>>> >>> >>> few
>>>>>>>>>> >>> >>> pieces of info.
>>>>>>>>>> >>> >>>
>>>>>>>>>> >>> >>> Since you're running this program, you obviously have
>>>>>>>>>> Perl 5--I'll be
>>>>>>>>>> >>> >>> pulling
>>>>>>>>>> >>> >>> some defaults from its configuration.
>>>>>>>>>> >>> >>>
>>>>>>>>>> >>> >>> init::manifest -      Check
>>>>>>>>>> >>> >>> MANIFEST.....................................done.
>>>>>>>>>> >>> >>> init::defaults -      Set Configure's default
>>>>>>>>>> >>> >>> values.....................done.
>>>>>>>>>> >>> >>> init::install -       Set up installation
>>>>>>>>>> >>> >>> paths..........................done.
>>>>>>>>>> >>> >>> init::hints -         Load platform and local hints
>>>>>>>>>> >>> >>> files................done.
>>>>>>>>>> >>> >>> inter::progs -        Determine what C compiler and
>>>>>>>>>> linker to
>>>>>>>>>> >>> >>> use...Compilation
>>>>>>>>>> >>> >>> failed with 'gcc'
>>>>>>>>>> >>> >>>
>>>>>>>>>> >>> >>> C:\Users\ashiva\Documents\GitHub\parrot>
>>>>>>>>>> >>> >>>
>>>>>>>>>> >>> >>> Please help me resolve this problem.
>>>>>>>>>> >>> >>>
>>>>>>>>>> >>> >>> Thanks a lot, in advance.
>>>>>>>>>> >>> >>>
>>>>>>>>>> >>> >>> --
>>>>>>>>>> >>> >>> Ashiva
>>>>>>>>>> >>> >>>
>>>>>>>>>> >>> >>> _______________________________________________
>>>>>>>>>> >>> >>> http://lists.parrot.org/mailman/listinfo/parrot-dev
>>>>>>>>>> >>> >>>
>>>>>>>>>> >>> >>
>>>>>>>>>> >>> >>
>>>>>>>>>> >>> >>
>>>>>>>>>> >>> >> --
>>>>>>>>>> >>> >> Will "Coke" Coleda
>>>>>>>>>> >>> >
>>>>>>>>>> >>> >
>>>>>>>>>> >>> > _______________________________________________
>>>>>>>>>> >>> > http://lists.parrot.org/mailman/listinfo/parrot-dev
>>>>>>>>>> >>> >
>>>>>>>>>> >>>
>>>>>>>>>> >>>
>>>>>>>>>> >>>
>>>>>>>>>> >>> --
>>>>>>>>>> >>> Jonathan "Duke" Leto <jonathan at leto.net>
>>>>>>>>>> >>> Leto Labs LLC http://letolabs.com
>>>>>>>>>> >>> 209.691.DUKE http://duke.leto.net
>>>>>>>>>> >>> @dukeleto
>>>>>>>>>> >>
>>>>>>>>>> >>
>>>>>>>>>> >
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Jonathan "Duke" Leto <jonathan at leto.net>
>>>>>>>>>> Leto Labs LLC http://letolabs.com
>>>>>>>>>> 209.691.DUKE http://duke.leto.net
>>>>>>>>>> @dukeleto
>>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>>> http://lists.parrot.org/mailman/listinfo/parrot-dev
>>>>>>>>>
>>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> --
>>>>>>>> Will "Coke" Coleda
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Will "Coke" Coleda
>>>>>>
>>>>>
>>>>>
>>>>
>>>
>>
>


-- 
Jonathan "Duke" Leto <jonathan at leto.net>
Leto Labs LLC http://letolabs.com
209.691.DUKE http://duke.leto.net
@dukeleto <https://twitter.com/dukeleto>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.parrot.org/pipermail/parrot-dev/attachments/20130807/4604cfb8/attachment-0001.html>


More information about the parrot-dev mailing list