Camelia, the Perl 6 bug

IRC log for #parrot, 2011-02-24

Parrot | source cross referenced

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:00 Tene dukeleto: if you turn on "stacking", or whichever is "smoke every commit", when you finally push to smoke-me/foo, it will go back and smoke every commit on the branch, including the old busted commits.
00:01 dukeleto Tene: yes, i just realized that.
00:01 wknight-phone left #parrot
00:01 dukeleto Tene: i guess, for now, we can leave stacking off
00:02 dukeleto Tene: but if we want it, we can get it. If we do, all branches in smoke-me/* will have all commits tested
00:02 dukeleto Tene: as well as master
00:02 dukeleto Tene: jitterbug is pretty flexible, and anything it can't do, I can add to it
00:03 dukeleto Tene: i am just trying to find a nice workflow that give parrot devs feedback when stuff breaks
00:03 dukeleto Tene: via email
00:03 Tene dukeleto: We have a pretty strong tradition of breaking things in branches; I think it makes a lot of sense to leave stacking off.
00:03 dukeleto Tene: sounds good to me.
00:04 dukeleto Tene: if I add the ability to stack specific branches to Jitterbug, then we could make it only stack master
00:04 cotto_work +1 to not complaining too much about broken branches.
00:04 Tene dukeleto: if it stacks master, when you finally merge your branch in, it will go back and smoke all of the broken commits at the start of the branch
00:05 Tene no?
00:05 dukeleto Tene: touche. no stacking it is.
00:06 dukeleto wfm, less code to write
00:06 donaldh left #parrot
00:07 Tene dukeleto: I could imagine an argument for running a limited subset of tests on every commit, but the argument I'm imagining isn't very persuasive. :)
00:08 dukeleto Tene: my favorite kind of argument to ignore ;)
00:16 kid51 joined #parrot
00:42 cotto ~~
00:46 kid51 ~~
00:48 kid51 is now known as kid51_at_dinner
00:57 dolmen left #parrot
01:18 dalek parrot: 69fcf0a | mikehh++ | tools/dev/ncidef2pir.pl:
01:18 dalek parrot: fix perlcritic failure - String delimiter used with "split"
01:18 dalek parrot: review: https://github.com/parrot/parrot/commit/69fcf0a2e4
01:39 dmalcolm left #parrot
01:43 mikehh still getting server problems trying to upload to smolder - HTTP CODE: 500 (Internal Server Error)
01:44 kid51_at_dinner mikehh:  I was getting that about 24 hours ago.  Then it appeared to have cleared up.  Started bug ticket with OSL, no response yet.
01:44 kid51_at_dinner is now known as kid51
01:45 cotto_work left #parrot
01:47 cotto_work joined #parrot
01:49 rblackwe joined #parrot
01:49 rblackwe_ left #parrot
01:50 dalek parrot: 2e24c69 | mikehh++ | docs/index/tools.json:
01:50 dalek parrot: change tools/dev/ncidef2pasm to ncidef2pir
01:50 dalek parrot: review: https://github.com/parrot/parrot/commit/2e24c69983
01:52 mikehh kid51: I have been getting it since about 8 or so hours ago, tried about 5 uploads
01:53 mikehh they have all failed
02:09 dalek parrot: 3da9455 | bacek++ | t/pmc/hash.t:
02:09 dalek parrot: Add test for VTABLE_hashvalue.
02:09 dalek parrot: review: https://github.com/parrot/parrot/commit/3da9455b41
02:11 * mikehh must get sleeeepp
02:13 cotto mikehh, 'night
02:14 cotto much better than going to schlep
02:16 bluescreen left #parrot
02:23 bubaflub joined #parrot
03:27 dalek parrot/jkeenan/tt1159_distcheck: a488957 | jkeenan++ | / (2 files):
03:27 dalek parrot/jkeenan/tt1159_distcheck: First draft of 'make distcheck'.
03:27 dalek parrot/jkeenan/tt1159_distcheck: review: https://github.com/parrot/parrot/commit/a488957caa
03:27 dalek parrot/jkeenan/tt1159_distcheck: 6a054a6 | jkeenan++ | config/gen/makefiles/root.in:
03:27 dalek parrot/jkeenan/tt1159_distcheck: First draft of 'make distcheck': template.
03:27 dalek parrot/jkeenan/tt1159_distcheck: review: https://github.com/parrot/parrot/commit/6a054a6b3c
03:27 dalek parrot/jkeenan/tt1159_distcheck: 2c5bd53 | jkeenan++ | / (2 files):
03:27 dalek parrot/jkeenan/tt1159_distcheck: Implement 'make distcheck' target via new program 'tools/release/distcheck.pl'.
03:27 dalek parrot/jkeenan/tt1159_distcheck: review: https://github.com/parrot/parrot/commit/2c5bd53063
03:28 preflex left #parrot
03:33 kid51 Who is the March 15 release manager?  Which file lists that?
03:35 dalek parrot: 21ec453 | petdance++ | compilers/opsc/src/Ops/Trans/C.pm:
03:35 dalek parrot: remove unnecessary interp argument from store_op() and calls
03:35 dalek parrot: review: https://github.com/parrot/parrot/commit/21ec453662
03:37 kid51 seen petdance?
03:37 aloha petdance was last seen in #perl6 87 days 23 hours ago joining the channel.
03:37 bacek_at_work seen andy
03:37 aloha andy was last seen in #parrot 6 hours 6 mins ago saying "Tease.".
03:37 bacek_at_work kid51, ^^
03:37 kid51 A man of multiple identities!
03:49 bubaflub left #parrot
03:49 cotto aloha, release manager guide?
03:49 aloha cotto: I give up.
03:51 kid51 left #parrot
03:52 JimmyZ joined #parrot
03:52 preflex joined #parrot
04:25 akashmanohar joined #parrot
04:26 akashmanohar Hi all.
04:26 akashmanohar Can anyone point me to docs on writing extensions/libraries to parrot using PIR or the Parrot C API?
04:30 JimmyZ Hello akashmanohar, what do you want to write?
04:34 akashmanohar JimmyZ: I'm looking at writing a memcached lib for the parrotvm. but i want to start off with small stuff first like a lib that says hello world
04:36 JimmyZ akashmanohar: I think you want http://docs.parrot.org/parrot/latest/html/​docs/pdds/draft/pdd16_native_call.pod.html ?
04:37 akashmanohar JimmyZ: thanks!
04:38 akashmanohar JimmyZ: I just came to my senses. Writing extensions in C would have to take care of plat dependent stuff. Does that doc apply to PIR-based extensions too?
04:39 JimmyZ akashmanohar: yes
04:40 eternaleye left #parrot
04:42 JimmyZ akashmanohar: you dont' need parrot C api unless you want to embed parrot to other apps or improve parrot itself.
04:43 akashmanohar JimmyZ: okay. i'm confused. What I want to do it write a memcached lib for parrotvm that languages running on parrot can use.
04:44 mtk left #parrot
04:44 akashmanohar JimmyZ: the last chat I had here, I was advised to skip C and look at writing extensions using PIR (sorry, i just remembered that). And aren't there any articles/docs on this?
04:45 akashmanohar apologies if I asked too many questions. I'm just beginning to understand how to write libraries for parrot.
04:46 JimmyZ akashmanohar: there are some libs in parrot, see https://github.com/parrot/parrot/t​ree/master/runtime/parrot/library
04:47 eternaleye joined #parrot
04:47 JimmyZ akashmanohar: questions are welcome :)
04:50 akashmanohar JimmyZ: thank you! a lot of libs there. I found this small one for Math random here https://github.com/parrot/parrot/blob/mas​ter/runtime/parrot/library/Math/Rand.pir sounds like a good start
04:50 JimmyZ akashmanohar: you are welcome, hehe
04:51 mtk joined #parrot
04:59 dalek parrot: 197839d | util++ | src/oo.c:
04:59 dalek parrot: Fix Coverity defect #500: PW.PARAMETER_HIDDEN in oo.c
04:59 dalek parrot: review: https://github.com/parrot/parrot/commit/197839de0a
05:01 dalek parrot: 3aef68e | util++ | compilers/imcc/optimizer.c:
05:01 dalek parrot: Fix Coverity defect #476: PW.PARAMETER_HIDDEN in optimizer.c
05:01 dalek parrot: review: https://github.com/parrot/parrot/commit/3aef68e57c
05:09 cotto Util++
05:09 cotto thanks for knocking some of those out
05:11 bacek_at_work Util, ping
05:14 bacek_at_work Util, unping. I replied to your mail.
05:16 Util cotto: Glad to help. 5 down, 898 to go :)
05:16 Util Although I am hopeful that bacek++ "Rebootstrap ops" commit will resolve 570 UNUSED_VALUE defects from core_ops.c
05:16 cotto heh
05:17 Util bacek_at_work: Thanks for your prompt attention. Shall I commit?
05:24 akashmanohar left #parrot
05:25 dalek parrot: da90aa3 | util++ | src/gc/gc_gms.c:
05:25 dalek parrot: Move parenthesis in POBJ2GEN for clarity and correctness.
05:25 dalek parrot: review: https://github.com/parrot/parrot/commit/da90aa33a0
05:38 bacek_at_work Util, go for it
05:38 bacek_at_work Util, yes, "Rebootstrap ops" should resolve unused variables :)
05:56 dalek parrot: 9236c91 | util++ | src/gc/gc_gms.c:
05:56 dalek parrot: Remove unneeded parameter. Also fixes Coverity defect #1297: PW.PARAMETER_HIDDEN in gc_gms.c
05:56 dalek parrot: review: https://github.com/parrot/parrot/commit/9236c91401
06:02 Util $clock == Midnight; sleep &
06:14 rurban_ joined #parrot
06:17 rurban left #parrot
06:17 rurban_ is now known as rurban
06:30 cotto dukeleto, ping
07:01 dukeleto cotto: pong
07:01 theory left #parrot
07:05 cotto dukeleto, have you given any thought to what atoms would be necessary to enable dlfunc et al to be used by M0 code?
07:07 fperrad joined #parrot
07:24 ShaneC left #parrot
07:29 NotFound cotto: Shouldn't that be several levels up to M0?
07:32 cotto NotFound, there needs to be some way to generate M0 code that allows a shared library to be loaded and used.
07:33 cotto We won't get far interacting with the C parts of Parrot and external libraries like icu otherwise.
07:34 NotFound cotto: if M0 can call C functions, you just need to call the system functions that do that.
07:35 cotto NotFound, sure.  An important question is how it'll do that.
07:35 NotFound Oh
07:36 NotFound So the questio is how to call C?
07:36 cotto that and how to dtrt when dealing with shared libraries.  But the C question is more important atm.
07:37 cotto er, how to make it possible to dtrt.  M0 shouldn't have enough smarts to dtrt on its own.
07:39 NotFound I think that way may lead to integrating almost all NCI in M0, wich may lead to add another level below M0 %-)
07:41 cotto M4294967295
07:41 cosimo left #parrot
07:41 dukeleto cotto: good question
07:41 dukeleto NotFound: dlfunc will be at a level above M0, but the atoms to build dlfunc need to exist in M0
07:42 cotto We can use the current NCI system as a starting point.
07:43 dukeleto cotto: how much NCI is needed at M0 seems to be the question
07:43 dalek parrot: ff9918a | (Gerd Pokorra)++ | lib/Parrot/Docs/Section/Tools.pm:
07:43 dalek parrot: change to renamed file to fix "make html"
07:43 dalek parrot: review: https://github.com/parrot/parrot/commit/ff9918aa88
07:43 cotto dukeleto, yup
07:45 cotto If M0 can access arbitrary regions of memory, we're partly there.
07:47 ShaneC joined #parrot
07:48 dukeleto cotto: yes. dlfunc mostly boils down to looking up function signatures and fiddling with memory
07:48 dukeleto cotto: as far as I can tell
07:48 NotFound If you want to be able to call any C function, I'd call that full NCI.
07:48 cotto dukeleto, sure.  We can treat it as a black box,
07:48 ShaneC how would i go about doing what configure.pl does, but specifying values instead of letting it pull them from perl
07:48 ShaneC im on windows, and i don't want it to pull info from activeperl
07:48 cotto NotFound, just the most useful ones for now.  We won't be doing opengl with M0 for a while.
07:49 cotto ShaneC, http://trac.parrot.org/par​rot/wiki/Platforms/Windows
07:49 ShaneC cotto: thanks, i'll give that a try
07:49 cotto if that doesn't help, let us know
07:50 ShaneC still getting: compilation failed with 'cl'
07:51 ShaneC i'm in the proper command prompt that has all of the vs env vars set up properly
07:51 ShaneC i can run cl
07:52 cotto ShaneC, can you nopaste what's going on?  I likely need to let myself fall asleep soon, but someone else may be able to help you.
07:53 cotto aloha, nopaste?
07:53 aloha cotto: nopaste is is http://nopaste.snit.ch (works with the script in $_PARROT/tools/dev/nopaste.pl)
07:53 ShaneC http://nopaste.snit.ch/33885
07:54 NotFound is now known as Themeruta
07:54 dukeleto ShaneC: try perl Configure.pl --help
07:55 Themeruta Parrot Version 2.9.1?
07:55 dukeleto ShaneC: there is a --file option or something like that, to specify a file which sets the config variables
07:55 dukeleto ShaneC: also, welcome!
07:55 ShaneC thanks ;-)
07:55 ShaneC basically i dont want it pulling anything from my activeperl
07:56 cotto My work machine does fine with Strawberry Perl for both the msvc and mingw toolchains.
07:56 Themeruta is now known as NotFound
07:56 ShaneC id prefer not using mingw or cygwin
07:57 ShaneC i work on video games and those often conflict with sony/nintendo's stuff
07:57 cotto your call
07:57 dukeleto ShaneC: i am trying to find the option to Configure.pl
07:58 NotFound ShaneC: execute this: cl /?
07:58 ShaneC C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC>cl /?
07:58 ShaneC Microsoft (R) 32-bit C/C++ Optimizing Compiler Version 15.00.21022.08 for 80x86
07:58 ShaneC or do you need all of the arguments?
07:59 NotFound I'm just trying to figure why $msvcversion gets unitialized.
08:00 dukeleto ShaneC: perl Configure.pl --file=foo.txt
08:00 dukeleto ShaneC: perldoc Configure.pl to read about how to use --file
08:01 ShaneC will do
08:02 ShaneC got a link to that doc by chance?
08:02 ShaneC my perldoc is not cooperating
08:04 NotFound $cc /? 2>&1 --> 2>&1 works in cmd.exe ?
08:05 ShaneC 2>&1 was unexpected at this time.
08:07 NotFound Someone with msvc should review and fix config/init/hints/mswin32.pm
08:09 dukeleto ShaneC: i don't think we have the perldoc output of Configure.pl anywhere public, sadly
08:10 mikehh left #parrot
08:10 ShaneC alright, thanks for the help -- maybe i'll just lose activeperl and build my own p5 first
08:11 lucian joined #parrot
08:11 dukeleto ShaneC: http://leto.net/tmp/Configure.pl.html
08:12 ShaneC thanks
08:12 dukeleto ShaneC: good luck
08:12 NotFound ShaneC: if the problem lies in Configure and cmd interaction, switching perl will not solve it.
08:12 ShaneC if i use the file interface that skips probing my perl right?
08:13 dalek parrot: 46200ef | dukeleto++ | api.yaml:
08:13 dalek parrot: The hashvalue vtable will not be deprecated
08:13 dalek parrot: review: https://github.com/parrot/parrot/commit/46200ef7c7
08:14 cotto dukeleto, I'm glad that vtable function got some attention.  Now we know what it's for and it's better-tested.
08:14 * cotto sleeps
08:14 NotFound Well, maybe if it gets the value from perl config that branch of the prove doesn't get executed.
08:14 dukeleto cotto: yep. all good vibes from just sitting down and writing tests and trying to figure out how our vtables work
08:14 dukeleto ShaneC: i think you would have to override everything that perl gets asked, but i am not sure
08:15 NotFound The conflicting point seems to be C optimize flags.
08:16 NotFound Looks like the hints file does a check to avoid using unsupported optimizations when using the free versionof msvc.
08:18 NotFound ShaneC: you may try adding: --optimize=-O1 to Configure.pl options
08:19 ShaneC thanks, afk for a bit, i'll read over and try some stuff when i get back
08:19 NotFound Or adding -O1 to --ccflags
08:21 dukeleto cotto: re: http://trac.parrot.org/parrot/ticket/903 seems that about 40% or so of the vtables in extend_vtable.c are key-related
08:21 dukeleto cotto: removing keys will reduce the complexity of our vtable interface considerably
08:25 dalek TT #2027 closed by dukeleto++: Deprecate hashvalue vtable
08:25 dalek TT #2027: http://trac.parrot.org/parrot/ticket/2027
08:25 dalek TT #2026 closed by dukeleto++: t/src/extend_vtable.t: Non-deterministic results
08:25 dalek TT #2026: http://trac.parrot.org/parrot/ticket/2026
08:26 NotFound dukeleto: I don't thnk so. Most are pmc arguments that just happen to be keys most times.
08:27 dukeleto cotto: i stand corrected. It looks like 24% of the vtables in extend_vtable are key-related
08:28 dukeleto NotFound: still, we have a lot of vtables because of keys
08:29 lucian left #parrot
08:29 dukeleto NotFound: if we could use pmc vtables instead of having special key vtables, that reduces the number of vtable functions considerably, no?
08:29 NotFound dukeleto: because of keyed access, not because of the Key pmc.
08:30 NotFound dukeleto: we do have pmc vtables, and in most PMC they aren't limited to Key arguments.
08:36 NotFound Must go, SYL.
08:37 ShaneC ideally i'd like to create a parrot vcproj/sln
09:17 ShaneC can someone show me what their config.h looks like?
09:30 ShaneC almost have the vs build working
09:30 ShaneC i'd love to keep that maintained too, a lot of windows devs would probably appreciate that
09:47 benabik joined #parrot
10:39 particle left #parrot
10:41 particle joined #parrot
10:43 AzureStone left #parrot
10:46 AzureStone joined #parrot
10:52 AzureStone left #parrot
10:53 AzureStone joined #parrot
11:07 lucian joined #parrot
11:15 dalek parrot/opsc_full_parse: 94d9041 | bacek++ | / (2 files):
11:15 dalek parrot/opsc_full_parse: More tweaks of Grammar
11:15 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/94d9041b8c
11:48 JimmyZ left #parrot
12:05 bluescreen joined #parrot
12:11 krunen joined #parrot
12:26 dalek parrot/opsc_full_parse: c00dd2a | bacek++ | compilers/opsc/src/Ops/Compiler/ (2 files):
12:26 dalek parrot/opsc_full_parse: Distinguish between pod ws and C ws. Handle C macros properly
12:26 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/c00dd2a88f
12:31 mtk left #parrot
12:38 mtk joined #parrot
12:43 dalek parrot/opsc_full_parse: 50df85d | bacek++ | compilers/opsc/src/Ops/Compiler/Grammar.pm:
12:43 dalek parrot/opsc_full_parse: Remove misleading comment
12:43 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/50df85d20f
12:45 mikehh joined #parrot
12:47 bluescreen left #parrot
12:55 lucian left #parrot
13:01 lucian joined #parrot
13:11 dalek parrot/opsc_full_parse: 66a93ed | bacek++ | compilers/opsc/src/Ops/Compiler/Grammar.pm:
13:11 dalek parrot/opsc_full_parse: Change <type_indetifier> to avoid false positives.
13:11 dalek parrot/opsc_full_parse: review: https://github.com/parrot/parrot/commit/66a93ed388
13:15 whiteknight joined #parrot
13:15 whiteknight good morning, #parrot
13:25 dalek parrot: b8ee160 | (Gerd Pokorra)++ | config/gen/makefiles/root.in:
13:25 dalek parrot: add more dependencies for the EXTRANCITHUNKS_SO definition, this is a preparation for a JSON_nqp branch, but this should still can go to the master branch
13:25 dalek parrot: review: https://github.com/parrot/parrot/commit/b8ee160f00
13:27 lucian left #parrot
13:42 lucian joined #parrot
13:43 whiteknight kid51: ping
13:47 whiteknight msg kid51: I'm getting a test failure in t/perl/Parrot_Test.t on the whiteknight/imcc_compreg_pmc branch. It's a test for pir_error_output_is, and I don't really understand why it's failing or how to fix it. Could you take a look at it, when you get a spare moment? Thanks
13:47 aloha OK. I'll deliver the message.
13:52 jsut_ joined #parrot
13:56 jsut left #parrot
13:59 lucian left #parrot
13:59 dalek parrot/gerd/JSON_nqp: 3f7c693 | (Gerd Pokorra)++ | tools/dev/nci_thunk_gen.pir:
13:59 dalek parrot/gerd/JSON_nqp: add new JSON API to file "nci_thunk_gen.pir"
13:59 dalek parrot/gerd/JSON_nqp: review: https://github.com/parrot/parrot/commit/3f7c693635
14:12 JimmyZ joined #parrot
14:14 rurban_ joined #parrot
14:17 rurban left #parrot
14:17 rurban_ is now known as rurban
14:37 fperrad left #parrot
14:59 worr joined #parrot
15:34 Andy joined #parrot
15:39 dalek parrot: b49a5cc | (Gerd Pokorra)++ | t/op/gc-non-recursive.t:
15:39 dalek parrot: in non-optimized builds this test will be disabled
15:39 dalek parrot: review: https://github.com/parrot/parrot/commit/b49a5cc512
15:45 plobsing joined #parrot
15:50 plobsing_ left #parrot
15:58 whiteknight building the whiteknight/imcc_compiler_pmc branch with g++ is the failz
16:05 whiteknight on the bright side, the fixes help to futher insulate IMCC from libparrot
16:05 kj joined #parrot
16:06 kj is now known as kjs
16:12 whiteknight is there a way I can add stuff into a generated pmc .c file BEFORE the list of includes?
16:13 whiteknight blah
16:15 dalek parrot/whiteknight/imcc_compreg_pmc: 9222efd | Whiteknight++ | / (13 files):
16:15 dalek parrot/whiteknight/imcc_compreg_pmc: Add a new imcc/embed.h include file. This is the file libparrot would use to call into IMCC. Nobody should be using compilers/imcc/imc.h directly anymore, outside IMCC itself. The build is now broken because of problems in IMCCompiler PMC, but the g++ build is in much better shape.
16:15 dalek parrot/whiteknight/imcc_compreg_pmc: review: https://github.com/parrot/parrot/commit/9222efd1a5
16:16 whiteknight if I can rearrange that the #includes in src/pmc/imccompiler.c, I think I can fix the build for gcc and g++
16:18 Psyche^ joined #parrot
16:18 Patterner left #parrot
16:18 Psyche^ is now known as Patterner
16:18 * kjs hopes that, some day, on a good day, PIRC will be able to replace IMCC
16:19 JimmyZ somebody hopes pirate :)
16:20 * JimmyZ doesn't know which one is better.
16:21 tadzik one was to use tree-optimizer
16:24 Coke msg dukeleto the current board should have admin rights on all the mailing lists.
16:24 aloha OK. I'll deliver the message.
16:26 Coke kjs: pirc is pretty much dead at this point - no one was able to integrate it into the build.
16:27 kjs Yeah, I know. I did compile, but it's not feature-complete.
16:28 whiteknight on the bright side, the threshold for "integrate into the build" is going to become much lower
16:28 whiteknight I think we're about 2 months away from IMCC being an optional configure-time option
16:29 whiteknight well, 2 months away if we keep up this pace. I suspect other high priority things will take over
16:30 whiteknight one day, all you'll need to do is provide a libparrot-pirc binary, and load it in
16:36 tadzik aloha: imcc?
16:36 aloha tadzik: imcc is just a prototype example
16:36 tadzik mhm
16:37 * whiteknight resists the urge to update the imcc entry and teach poor aloha any new curse words
16:45 JimmyZ left #parrot
16:47 theory joined #parrot
17:39 cotto_work ~~
17:39 whiteknight cotto_work: good morning
17:40 whiteknight cotto_work: I have a question you might be able to answer, if you have a spare moment
17:41 cotto_work whiteknight: fire away
17:41 whiteknight cotto_work: I need to include a .h file in a .pmc *before* pmc2c adds in all the standard headers
17:42 whiteknight is there such a way?
17:43 cotto_work How do you feel about hacking pmc2c?
17:43 whiteknight ha
17:43 whiteknight okay, thanks. that's the answer I was expecting
17:44 whiteknight one more roadblock on the way towards IMCC freedom
17:45 cotto_work I suppose it's better that you need it for an internal user.
17:46 whiteknight I'm going to try to find a workaround first, then hack pmc2c
17:46 whiteknight I know g++ hates void*, it's just a matter of finding out how much it hates
17:49 ShaneC left #parrot
17:53 whiteknight actually, nevermind. I need to hack pmc2c anyway. It's mangling the names of header includes.
17:54 whiteknight is there an NQP version of it, or is it just tools/build/pmc2c.pl?
17:54 Coke isn't there a PREAMBLE marker?
17:54 cotto_work whiteknight: there's an nqp wip, but it's not complete afaik.
17:55 dukeleto ~~
17:55 cotto_work morning, dukeleto
17:55 * Coke thinks that might have been for ops. ah well.
17:59 plobsing whiteknight: I have BEGIN_PMC_HEADER_PREAMBLE in ptrbuf branch
18:00 plobsing which I will be merging in a day or two
18:02 ShaneC joined #parrot
18:10 kjs left #parrot
18:15 Coke left #parrot
18:16 Coke joined #parrot
18:20 whiteknight plobsing: Okay. That's a good start. I still need to fix a problem with a mangled include name
18:21 whiteknight in the PMC, I'm doing #include "imcc/embed.h", which is in include/imcc/embed.h. Pmc2c adds that to the makefile as "imcc/embed.h" instead of "include/imcc/embed.h". Make fails because that file doesn't exist
18:21 whiteknight Actually, searching through this code, I'm not even certain that Pmc2c does that
18:22 dmalcolm joined #parrot
18:28 Coke when in doubt, refer to them via ../ because I think pmc2c will leave it alone then.
18:28 Coke (or at least manipulate it properly.)
18:31 whiteknight the mangler in question in config/auto/pmc.pm
18:31 whiteknight and I'm fixing it to allow include/imcc/*.h handling transparently
18:37 cotto_work #include_without_mangling
18:39 plobsing #include should include. #import or #munge could mangle.
18:40 whiteknight nothing's really getting mangled per se. It's just not being fully-qualified like other files are
18:40 whiteknight so, I added that
18:53 lucian joined #parrot
18:56 lucian_ joined #parrot
18:59 benabik left #parrot
18:59 benabik joined #parrot
18:59 lucian left #parrot
19:01 cotto_work seen chromatic
19:01 aloha chromatic was last seen in #parrot 13 days ago saying "All of the core tests did pass for me, FWIW.".
19:18 lucian joined #parrot
19:20 lucian_ left #parrot
19:34 lucian_ joined #parrot
19:35 lucian__ joined #parrot
19:35 lucian_ left #parrot
19:37 lucian left #parrot
19:44 lucian joined #parrot
19:47 lucian__ left #parrot
20:18 mtk left #parrot
20:21 whiteknight do IMCC optimizations work? Do they ever get used or tested?
20:22 whiteknight I'm looking right now at the optimizations for converting recursive tailcalls into a loop, and it's....messy
20:25 mtk joined #parrot
20:26 whiteknight is github down?
20:27 atrodo seems up for me
20:28 atrodo Least the website
20:29 plobsing git fetch still works fine
20:30 whiteknight oh, it works now
20:30 dalek parrot/whiteknight/imcc_compreg_pmc: 0d03973 | Whiteknight++ | config/auto/pmc.pm:
20:30 dalek parrot/whiteknight/imcc_compreg_pmc: fix config/auto/pmc.pm to handle #includes of the form imcc/foo correctly
20:30 dalek parrot/whiteknight/imcc_compreg_pmc: review: https://github.com/parrot/parrot/commit/0d03973339
20:30 dalek parrot/whiteknight/imcc_compreg_pmc: 4b4b869 | Whiteknight++ | / (5 files):
20:30 dalek parrot/whiteknight/imcc_compreg_pmc: several fixes for the c++ build. We still don't build with g++, and some of the weirder failures in IMCC are hard to fix
20:30 dalek parrot/whiteknight/imcc_compreg_pmc: review: https://github.com/parrot/parrot/commit/4b4b869b0c
20:30 cotto_work whiteknight: they work at a basic level.  Most are broken.
20:31 whiteknight the recursive tailcall optimization has a pretty big base of code that is all...bad
20:31 cotto_work The only thing they do correctly is simple things like constant folding.
20:31 cotto_work well, one of the only things
20:31 cotto_work there might be a few others
20:32 whiteknight I may want to rip a few of them out, eventually
20:32 whiteknight lower priority than ripping IMCC itself out
20:34 plobsing the only reason IMCC does constant folding "correctly" is because it has to to properly generate PBC. add_i_ic_ic op is non-existant.
20:35 cotto_work plobsing: yes.  That also means that PIRATE needs tree-optimization in order to be able to generate correct pbc.
20:35 plobsing btw, I disaggree with the particular def'n of "correct" used by IMCC constant folder. the way it handles folds that throw exceptions is... well... not good.
20:35 whiteknight actually, the recursive tailcall optimization is causing a lot of heartache for the c++ build in my IMCC branch
20:36 whiteknight which is the only reason I'm looking at the code now
20:36 NotFound pir is a bizarre mix between a language and an assembler. On an assembler there will be a difference between the add opcode and the '+' in expressions.
20:37 plobsing If we look at IMCC as an *assembler* there are a lot of things it shouldn't be doing. constant folding is one of them. TCO is another. let the HLL compilers worry about that. they are more likely to make better decisions because, in general, they have more information available.
20:37 cotto_work Those are among the many things that M0 won't do.
20:37 whiteknight sometime, when you have some liquor in you, read through the source of src/utils.c:Parrot_util_register_move.
20:37 NotFound plobsing: winxed does it
20:37 whiteknight Then, when you're done reading it, realize that IMCC uses that function not to actually move registers, but to generate move instructions for them
20:38 plobsing NotFound: yes. and it does it a damn sight better than IMCC. contextual information is deleted compiling down to PIR.
20:38 plobsing whiteknight: if you'll like that, you might also like the basic-blocks optimizing code which we have to run because it expands out PCC-handling.
20:39 plobsing s/you'll/you/
20:39 whiteknight sometimes in my work, I find I really appreciate IMCC
20:39 whiteknight othertimes, I get so disheartened by it
20:39 plobsing also enjoy having to trapse through 3 different files to come to that realization
20:40 NotFound The most importante features of an assembler are: generated correct code and get out of my way.
20:40 whiteknight there are some gems in here. But the cargo-culting, everything-for-everybody-but-n​ot-really-anything-for-anybody mentality, the complete disregard for coding standards and best practices, the inability to separate out the working code from the half-working or only-half-implemented crap
20:40 whiteknight it's all too much
20:41 lucian_ joined #parrot
20:41 whiteknight encapsulation is treated like a curseword in a foreign language
20:41 whiteknight sort of funny to say, when nobody is listening, but not used for anything
20:42 whiteknight The real shame of it is that a "good", narrowly-focused IMCC would have made an excellent high-performance assembler for Parrot
20:42 NotFound Is not that bad, actually.
20:42 whiteknight but that potential is lost now, and we have a huge backwards-compatibility guarantee that prevents us from ever getting back to that point
20:44 plobsing the problem was making it *the* interface to Parrot. after that, it died a death of a thousand cuts from people who didn't really care about IMCC but "just want to make this one thing work". Like me. Right now. ;)
20:44 lucian left #parrot
20:44 plobsing I suspect the same will happen to anything we make *the* interface, unless we are particularily careful.
20:45 whiteknight plobsing: That's precisely why I am pushing to have *no* designated programming interface
20:45 whiteknight libparrot should take bytecode input only, and expose a limited embedding API only.
20:45 whiteknight everything else should be handled externally
20:45 whiteknight I'm purposefully ignoring extending
20:46 lucian_ whiteknight: like any other scripting language implementation
20:46 lucian_ is now known as lucian
20:46 plobsing whiteknight: the API is an interface. do not underestimate the power of "just one more thing".
20:46 whiteknight lucian: right. libparrot should be the runtime engine, not the assembler, the compiler, the frontend, or anything like that
20:46 whiteknight plobsing: This is true, and I've done my damndest so far to prevent the embedding API from growing without bound
20:47 whiteknight long term, it's a losing battle
20:48 lucian a good example is python's, embedding has been neglected so much in favour of extending, that it's now inconvenient to embed
20:48 lucian well, a rather bad example in fact
20:48 lucian but it still works, i've seen worse
20:49 plobsing lucian: have you seen Perl 5's 'interface'?
20:49 * dukeleto has nightmares about it
20:49 lucian plobsing: no, i've just heard stories
20:51 whiteknight lucian: I thought python was embedded in everything
20:52 whiteknight hell, my toaster has a python interpreter for plugins
20:52 lucian whiteknight: it is, it's still reasonable
20:52 lucian it's just an example of something that could've been perfect, but isn't at all
20:53 lucian although unlike lua, embedding is a significant minority
20:53 whiteknight I look at python and it's everywhere. There is either a built-in python interpreter or a readily available python plugin for every program I use on a daily basis
20:53 whiteknight my IRC client has a python plugin interface. my IM client. my text editor
20:53 cotto_work gdb
20:53 whiteknight The GIMP
20:54 dukeleto GIMP and all my IRC clients have bindings to most dynamic languages, but I agree, python is more prevalent than others.
20:54 whiteknight I've programmed embedded devices in python
20:54 plobsing whiteknight: that's not a strong argument. my irc client has a perl plugin. so does my text editor. hell my terminal is extensible with perl.
20:54 dukeleto the first scripting language for GIMP was Perl, iirc, and irssi and weechat both support all major dynamic languages
20:54 whiteknight plobsing: There are plenty of perl bindings out there too, but python is much more prevalent
20:54 lucian whiteknight: think of it this way: there are tons more applications written in python that use C/C++ modules
20:55 whiteknight lucian: right. I don't think I will ever write an XS module
20:55 plobsing I'm just saying prevalence or existance is by no means a measure of quality.
20:55 whiteknight plobsing: I never said anything about quality, although quality can't hurt you
20:55 lucian whiteknight: sure you will, cython is great
20:55 whiteknight plobsing: What's most important is that the interpreter is *available*.
20:55 NotFound I wrote a curses based text editor in C++ with perl embedded the past millenium and still use it today.
20:57 whiteknight so long as the interpreter is available, people will use it to write plugins and mods for their favorite software
20:57 whiteknight and those same skills translate over to the next favorite piece of software
20:58 whiteknight and here's the kicker: in theory, there's no benefit to having an embedded cython interpreter than having an embedded Parrot interpreter with the Pynie language pack
20:59 whiteknight and if we can get to the point where we can say "replace your old collection of a dozen separate dynamic language interfaces with a single Parrot interface", we win
20:59 atrodo whiteknight> I think that's the biggest win parrot could hope for
21:01 lucian whiteknight: that'd take a lot of work, though
21:01 whiteknight and then when language designers see that Parrot is embedded in everything, and all you need to do to make your new language X work with your text editor and your IRC client, and your web browser, and whatever, is to write your compiler on Parrot that's a big draw for us
21:01 lucian i'm specifically thinking of C extension modules for each of those languages
21:01 whiteknight lucian: of course. it's not a snap of the fingers
21:01 whiteknight lucian: obviously we don't maintain C-level compatibility with other interpreters or their modules
21:02 lucian whiteknight: yeah, but most software depends on that
21:02 whiteknight but we do have the ability to reuse effort. You don't need an XS perl wrapper and a Python extension plugin for the same library
21:02 whiteknight all you need is one NCI interface to that library for Parrot, and any language can use it
21:02 atrodo But if people creating these things can spend X amount of time integrating parrot and get python/lua/etc or X*3 to integrate all three individually, I would expect them to choose parrot first
21:03 whiteknight if your language can provide semantic wrappers and respect opaque pointers, you get a lot of stuff for free
21:03 whiteknight atrodo: right
21:03 whiteknight our strength is numbers. Write once, run everywhere
21:03 NotFound If we provide the means, writing replacements of current modules that keeps its interfaces shouldn't be too hard.
21:03 mj41 hi. taptinder is back ... reposiotory loop was hanging since Tuesday
21:03 whiteknight exactly
21:03 whiteknight mj41++
21:04 lucian NotFound: in theory, yes. but look at CPython/PyPy
21:04 lucian and Jython and IronPython and so on
21:04 lucian but specifically CPython vs PyPy is interesting because they overlap more
21:04 plobsing in theory, simple XS should be trivially translatable to Parrot. in practice, almost no XS is that trivial.
21:05 whiteknight we're never going to be the only game in town, because we're never going to be able to optimize any particular language as much as a dedicated interpreter/compiler could do
21:05 * theory eats XS, poops out Parrot
21:05 whiteknight but we can benefit from being competitive and offering huge economies of scale
21:05 NotFound plobsing: to be able to translate the code someone should be able to understand it, which with XS is hard ;)
21:06 plobsing whiteknight: but do you need your text editor to run hyper-optimized code?
21:06 whiteknight if our performance is reasonable, if we offer lots of compiler frontends, offer good interoperability, and if we get embedded into everything, I think that's what we would call success
21:06 whiteknight plobsing: no, but then again I hope Parrot has a better fate than just an medit plugin
21:06 whiteknight plobsing: embedding is a way to expand, but it's not all Parrot can do
21:07 NotFound whiteknight: a compiler can optimize its particular language and target parrot at the same time.
21:08 plobsing whiteknight: ELisp is nothing but an editor plugin, seems to be doing not too bad 20+ years on.
21:08 whiteknight NotFound: right. But once we get inside libparrot we lose a lot of the contextual information that could drive further optimizations. That is, anything the HLLs don't provide themselves we can't provide for them
21:09 whiteknight plobsing: right, ELisp has it's niche and is doing well there. I don't see ELisp growing to take over the world though
21:09 whiteknight If I don't use Emacs, I'm not going to use ELisp. no questions asked
21:09 lucian i'm quite certain parrot languages will be suitably slow
21:09 NotFound I have not much faith in the promises of dynamic optimizations.
21:10 whiteknight if we offer a decent JIT, I think that's about the best we can do
21:10 lucian sure, many languages are doing fine with slow reference implementations
21:12 lucian it's possible that yet another abstraction layer (parrot) can give the potential for other optimisations, especially across languages
21:12 lucian but i'm not holding my breath
21:13 lucian having ruby, python and perl6 call each other easily with reasonable speed would be enough
21:14 lucian whiteknight: well, elisp is a crappy language in many ways
21:14 lucian if elisp had been nicer and emacs had better platform integration, who knows
21:16 NotFound (who (knows))
21:16 whiteknight lucian: Parrot has a few things to offer, and we need to capitalize on them. We offer all the building blocks of any modern dynamic language, boxed and ready to go. We theoretically offer seamless interop between dynamic language
21:17 whiteknight for a new compiler writer, it should be our job to make the choice of using Parrot as easy as possible
21:18 whiteknight "I can write my own GC and my own exceptions system, or I can just use Parrot. Which do I choose?"
21:18 lucian "or i can just use the JVM"
21:18 whiteknight if the answer isn't "I'll just use Parrot", we're probably doing something wrong
21:18 whiteknight shhh
21:18 atrodo whiteknight> NIH is always the right answer ;)
21:18 dukeleto whiteknight: how do we make the choice to use Parrot as easy as possible?
21:18 whiteknight dukeleto: Great question.
21:18 NotFound Don't force people to learn nqp X-)
21:19 lucian NotFound: +1
21:19 ShaneC ++
21:19 atrodo dukeleto> marketing
21:19 whiteknight We need parrot to be available on many platforms. We need it to be pluggable into many other applications. We need to provide lots of features and provide them well
21:19 dukeleto whiteknight: i think we need a web-interface to HLL-generation that has all the useful documentation nicely linked-to
21:19 whiteknight documentation is definitely a big deal, especially since we're an unknown technology
21:19 atrodo dukeleto++ great idea
21:19 dukeleto whiteknight: we need to focus on actually making easy for a new HLL dev to grok parrot and start their language/project
21:19 lucian i think the big missing bit is a blessed parrot system language
21:20 lucian and random incremental improvement
21:20 dukeleto lucian: yes, agree. What ever happened to Close ?
21:20 dukeleto what happened to Austin_Hastings ?
21:20 NotFound dukeleto: nothing. That's the problem.
21:20 dukeleto seen Austin_Hastings
21:20 Khisanth left #parrot
21:20 aloha Sorry, I haven't seen Austin_Hastings.
21:20 dukeleto seen Austin_Hasting
21:20 aloha Sorry, I haven't seen Austin_Hasting.
21:20 dukeleto darn
21:21 dukeleto seen Austin
21:21 aloha Sorry, I haven't seen Austin.
21:21 whiteknight lucian: I'm on the fence about that. On one hand, we do need a way to actually write code for Parrot. on the other hand, we would have to anoint one particular language for the job and that path leads to madness
21:21 whiteknight That language is *clearly* not PIR
21:21 lucian whiteknight: that's because PIR is silly
21:21 dukeleto Rubinius solved this problem by not having it: You have to use Ruby.
21:21 lucian high level and assembly don't go together
21:21 whiteknight I use NQP for a lot of my work out of sheer momentum, but there's no real reason why it can't be NQP
21:22 NotFound In my absolutely subjective view, the best language to write code for parrot is winxed.
21:22 whiteknight er, why it can't be Winxed
21:22 atrodo But having one supported language makes the learning curve easier, even if there are alternatives
21:22 lucian whiteknight: sure, sounds good. "bless" it
21:22 whiteknight NotFound: I've considered rewriting Rosella in Winxed
21:22 whiteknight I may try that with one of it's component libraries
21:22 NotFound whiteknight: I'll be glad to help
21:22 plobsing lucian: be careful what you wish for. if we get a "blessed" system language in Parrot, there's a good chance it might be NQP
21:23 plobsing or some variant thereof
21:23 whiteknight A problem I have with NQP is that it uses P6object and it's ilk for everything, which makes interop with other "system" languages strained
21:23 perlite_ joined #parrot
21:23 lucian plobsing: meh, i don't hate perl syntax quite that much
21:23 lucian whiteknight: then i'd say nqp is unacceptable
21:24 lucian the blessed language should have no runtime at all
21:24 plobsing it isn't the perl syntax I take issue with, it's the leaning tower of abstraction
21:24 lucian just a procedural wrapper over the native assembly
21:24 whiteknight I find a lot of tasks that should be simple instead become difficult because I have to detect whether an object is a Class, a P6metaclass, a P6protoobject, or occasionally a NameSpace if the P6protoobject hasn't been initialized yet
21:24 whiteknight lucian: I would agree with that. I keep coming back to the idea of C
21:25 whiteknight C is a very small language by itself. Everything interesting is imported in libraries
21:25 lucian whiteknight: yes, C (despite it's stupid syntax and lack of safety) is relatively nice
21:25 whiteknight there is a reasonably-sized standard library, and huge external libraries
21:25 whiteknight lucian: I'm not saying anything nice about C except that it is very small
21:25 lucian at least the second is not a problem on parrop
21:26 NotFound In some way winxed is to pir what C is to assembler.
21:26 lucian what i keep thinking of is that while concrete syntax matters (and perhaps too much to some people), it's not really so important
21:26 bacek_at_work whiteknight, take a look at compilers/opsc/src/Ops/Compiler/Grammar.pm. It's almost full grammar for C :)
21:26 whiteknight NotFound: I don't need the sales pitch. I really do like Winxed
21:26 lucian abstract syntax and semantics can be as native parrot as possible
21:26 plobsing NotFound: in some ways, yes. in others you've diverged (possibly because the PIR semantics are dead stupid)
21:27 plobsing but divergence is what it is
21:27 perlite left #parrot
21:27 whiteknight bacek_at_work: maybe we need to factor that out, or copy it to be a new C compiler on Parrot
21:27 perlite_ is now known as perlite
21:27 lucian they way i'd like to see parrot is bytecode, 1:1 assembly for that and a system language on top
21:27 whiteknight lucian: exactly
21:27 Tene A simple C frontend for PIR (or PBC) is certainly possible.
21:27 Tene C-based grammar, that is.
21:27 whiteknight a parrot bytecode, a simple assembler that was 1:1 with bytecode, and nothing else that libparrot understands directly
21:28 whiteknight above that, we need HLLs to do everything else
21:28 Tene NQC?
21:28 Tene ;)
21:28 Khisanth joined #parrot
21:28 NotFound That was Close intention, wasn't it?
21:28 * whiteknight has to pack up and head home
21:28 whiteknight left #parrot
21:28 plobsing Tene: without objects, it would be pretty useless as a Parrot systems language. maybe minimal OO added to C, sort of like Obj-C.
21:29 Tene plobsing: 1) you could have a callmethod function, although that would suck. 2) Yeah, I was thinking of something like that, although I'm not very familiar with obj-c
21:30 lucian i'm not sure ObjC is a good ida
21:30 lucian idea
21:30 lucian i like ooc's covers http://ooc-lang.org/
21:30 Tene plobsing: You'd need other extensions as well to interact with all of parrot, so it would always have variance from any specific language.
21:30 lucian but NQC can just have a class keyword
21:30 lucian like java, with both primitive types and objects
21:32 Tene Any existing language is either going to have things we can't or dont' want to support in our impl (or without a runtime), or not have thigns that we need and so require extensions.
21:32 cotto_work That's funny.  I was just toying with the idea of nqc last night.
21:32 Tene Or both.
21:32 lucian i think java is a good example because it's a system language for an OO vm
21:33 Tene I rather like the idea of using a restricted/extended subset of an existing language, as long as it can be kept very simple, so C is a good choice.
21:34 lucian i guess few people will argue against C-style concrete syntax, since it's so ubiquitous
21:34 plobsing lucian: yes. sad, but true.
21:35 lucian semantics should be highly inspired by parrot itself
21:35 lucian close really is close, and so is winxed
21:35 ShaneC winxed is a javascript-alike, right?
21:35 lucian ShaneC: vaguely
21:35 Tene lucian: I'm probably insufficiently familiar with java to know what major syntactical diversions from C would be particularly suited for Parrot.
21:36 NotFound ShaneC: is mostly based in javascript, but nothing but trivial examples is directly portable.
21:36 Tene One way we could start talking about this more would be to choose a small or medium sized PIR program and produce versions of it in hypothetical system languages.
21:36 lucian Tene: no pointer syntax, object syntax, separate primitives
21:37 Tene I'd expect to get a lot of value out of a prototyping stage like that.
21:37 plobsing ShaneC: check out Ωη;)XD to see my attempts to make a useful JS program a JS/Winxed polyglot.
21:37 ShaneC something c-ish would be nice if you're targetting devs who may have implemented their language in c/c++ before
21:37 lucian ShaneC: and parrot is written in C
21:37 lucian i'm pretty sure you'll put people off with perl-ish concrete syntax
21:38 NotFound Hypothetical languages has the advantage of no real world problems nor speed concerns.
21:38 Tene lucian: What do you mean specifically by "concrete syntax"?  What other type of syntax is that distinguishing from?
21:39 lucian Tene: well, there's concrete syntax (mostly tokens) and abstract syntax (an if statement is made of an expression and a body)
21:39 Tene lucian: Thanks; I was unfamiliar with those terms.
21:39 * lucian is doing a module on formal definition of programming language
21:40 Tene lucian: can you explain the "separate primitives" claimed advantage of using Java syntax?
21:40 lucian Tene: well, int is a primitive. Integer is a class, wrapping an int
21:40 lucian parrot also has primitives and PMCs
21:41 Tene lucian: I don't really see how the types available in real JAva implementations would influence our choice of using Java's syntax.
21:41 NotFound Winxed already does that.
21:41 lucian Tene: i wasn't advocating java's syntax, just the idea of clear separation
21:42 lucian NotFound: and yeah, that's nice
21:42 lucian as i said, both close and winxed seem very good choices
21:42 lucian close is dead, so that leaves winxed, or an evolution of it thereof
21:42 NotFound int i = 1; /* $I register */ var i = 1; /* $P register initialized to 'Integer' PMC */
21:43 lucian NotFound: yeah, that looks good
21:43 Tene NotFound: exactly.
21:43 lucian is there auto boxinng/unboxing?
21:43 plobsing yep
21:43 NotFound lucian: yes
21:43 lucian cool
21:43 atrodo winxed++
21:44 Tene NotFound: although, I'd probably s/var/pmc/
21:44 ShaneC run any benchmarks on winxed?
21:44 NotFound Tene: I tend to prefer familiar looking syntax.
21:44 lucian i'm not really familiar with parrot or lorito plans, so i don't know if it's good as it is
21:45 Tene NotFound: I tend to be skeptical of false cognates between similar languages.
21:45 lucian but it's certainly very close, so a fork/winxed 2.0 might be *the* system language
21:45 lucian Tene: not really false, var is an object 'variable'
21:45 lucian javascript doesn't really have variables, though
21:47 NotFound I haven't yet found a confusion caused by that.
21:47 * lucian prefers var to pmc
21:47 lucian anyway, this is concrete syntax
21:47 lucian not *that* important
21:47 Tene NotFound: also, depending on how thick or thin of a wrapper around pbc/pir we want, I wouldn't be surprised by int/str/num/pmc just defining registers, and a separate syntax for defining lexicals.
21:48 lucian Tene: i think that sort of goes back to assembly for no good reason
21:48 Tene NotFound: One of the things people have complained about with NQP is repeated set/get/check-defined/autovivify of lexical symbols.
21:48 lucian Tene: then maybe int, var and register?
21:48 NotFound Tene: I have thinked about that, but for a now automatic lexicalization works well.
21:48 lucian like C's register
21:48 Tene lucian: Parrot has four types of registers, pmc/int/num/str
21:49 lucian i know. by default lexical, register modifier: "register int a = 2"
21:49 Tene lucian: Ah.  That's certainly feasible.
21:49 NotFound Tene: actually lexicals are not repeatedly set/get unless you qualify them as volatile.
21:49 Tene I'm certainly not arguing for anything here; just trying to explore the problem space.
21:50 NotFound That works well if you are careful.
21:50 Tene NotFound: That would be a good solution too.
21:50 Tene Possibly.
21:51 Tene consider: { var i = 1; if true { i = 5; }; say(i}; }
21:51 plobsing downwards-only lexicals do violate Principle Of Least Suprise, but are worth it because many cases work this way and it is much more efficient.
21:52 NotFound You need the =: operator for that.
21:52 Tene iirc, in parrot right now using lexicals, that would print 1, unless you re-fetched the lexical before printing
21:52 wknight-phone joined #parrot
21:52 plobsing Tene: no. blocks aren't subs in winxed.
21:53 Tene Hmm.
21:53 Tene So, no lexical scope in inner blocks?
21:53 NotFound var are lexicalized only if they are used in inner subs
21:53 lucian NotFound: is there a tutorial/lang ref for winxed?
21:53 NotFound lucian: no, I've been lazy on that.
21:54 Tene no lexical scope for inner blocks would be a surprise for many programmers, although interestingly not a problem for python or ruby fans.
21:54 plobsing lucian: there are many examples in the repo. those are nifty. also there's the bootstrapped parser.
21:54 lucian plobsing: i see
21:54 * lucian is thinking of doing pynie-ng for gsoc
21:55 cotto_work Tene: or php
21:55 NotFound The bootstrapped parser is not the best example, because it must deal with limitations of stage 0
21:55 lucian Tene: it's not a big deal, really
21:55 plobsing Tene: variables are still scoped.
21:55 lucian especially if you can request lexical scoping
21:56 plobsing just not by the mechanism of subs
21:56 plobsing registers get reused
21:56 lucian i'm thinking of something like python3's nonlocal
21:56 hercynium joined #parrot
21:57 Tene plobsing: ahh, right, because you *wouldn't* be using parrot's lexicals there.
21:57 Tene plobsing: You'll run into problems with closures there, although it's certainly reasonable to have to ask for that explicitly.
21:58 plobsing closures work fine.
21:58 Tene Hmm.
21:58 NotFound Tene: winxed inner anonymous functions are closures, and auto lexicalize outer variables used.
21:59 plobsing Ωη makes extensive use of closures.
21:59 Tene Okay; that sounds reasonable.
21:59 lucian left #parrot
21:59 lucian joined #parrot
21:59 plobsing by default, closed-over variables only pass information downward. That is why you need volatile.
21:59 wknight-phone python-ng?
21:59 NotFound Reciprocally, Ωη has driven the development and fixing of that features.
22:00 Tene fwiw, although I don't consider this a serious suggestion, I rather like the idea of having several core languages that interoperate well.
22:00 NotFound I like that, too.
22:00 Tene nqruby, nqpython, nqc, etc.
22:01 NotFound But the advantage of winxed is that it does exists right no.
22:01 NotFound now.
22:02 lucian what id like to see is easily changeable concrete syntax
22:02 lucian for the system language
22:02 lucian obviously its not necessary
22:02 Tene lucian: explain "changeable"?
22:02 lucian if i write pynie-ng it'll probably be in winxed
22:02 lucian customisable
22:03 Tene lucian: do you mean, individual programs would customize their own local syntax?
22:03 lucian so you can choose tokens (parens, braces, indentation-sensitive, etc.)
22:03 Tene I'm skeptical about the value of that.
22:04 NotFound It will probably be doable writing an alternate front end backed by winxed classes
22:05 lucian individual hlls would customise the concrete syntax of the system language
22:05 lucian so you dont need to write nqruby or nqpython
22:05 lucian yeah, but it's not a big deal anyway
22:06 NotFound Syntax matters for a lot of non-polylglot programmers.
22:07 lucian yes, and not only
22:07 Tene lucian: I'm skeptical that there's a useful minimal configuration space that you could use to specify python, javascript, scheme, C, php, java, etc.  I would expect it to not be "close enough" for comfort for most of the languages people might want a language like, and I'd be skeptical about the utility of the other locations in the configuration space.
22:07 NotFound I'd like to see some working general purpopse language written with Ωη
22:08 wknight-phone ditto
22:08 lucian tene: it would not be close at all, semantically
22:08 Tene lucian: Put differently, I'm skeptical that the syntaxes of the popular programming languages factor well.
22:09 Tene The online presence of winxed leaves a lot to be desired; I'm checking out the repo now to get a better look at it.
22:09 lucian i'm not sure either, but i'd like to try it
22:10 Tene lucian: It's certainly an interesting experiment, I agree, and I'd be very curious to examine the results of that research.
22:10 NotFound At least I've surpassed winx club and full methal alchemist fans in google positioning X-)
22:11 lucian i should probably look for papers on concrete syntax. i suspect there are few
22:11 Tene does winxed generate pir?  pbc directly?  pbc through POST?  do we have POST->pbc yet?
22:11 NotFound Tene: pir
22:11 wknight-phone left #parrot
22:12 NotFound Both stages generates pir
22:13 Tene One thing that hasn't been clear to me, do the people who object to NQP as a parrot systems language also object to use of PCT in the language impl?
22:14 lucian i strongly believe lang impls should be hosted on existing impls, if they exist
22:14 NotFound Tene: my main problem while deciding how to write winxed at its time was: lack of documentation and pct/nqp being a mobile target.
22:15 lucian and the (minimal) rest in the parrot system language
22:15 ambs joined #parrot
22:15 rurban_ joined #parrot
22:17 NotFound Also, is easier to write pir directly that trying to figure what PAST you should generate to make it generate the pir you want.
22:18 Tene NotFound: One of the intended advantages of going through POST was that there's long been a plan for POST to bypass PIR and go straight to PBC.
22:18 Tene But, okay, that makes sense.
22:18 NotFound Tene: you tell it. A *long* plan.
22:19 rurban left #parrot
22:19 Tene NotFound: Just like there's long been a plan to replace IMCC with "something"
22:19 Tene and to do language smoke reports
22:19 rurban_ is now known as rurban
22:19 Tene etc.
22:20 NotFound Tene: that plans were here before winxed even being imagined. Now winxed works and the plans are still on the way.
22:20 Tene NotFound: :)
22:20 NotFound I like things that works.
22:20 Tene Me too.
22:21 dukeleto Tene: i am working on HLLs submitting smoke reports. But some people don't want smoke report emails to parrot-commits
22:21 tadzik hello
22:21 dukeleto tadzik: greetings
22:27 cotto_work We can set up a separate list if that annoys people.
22:27 cotto_work I can see how parrot-commits having that's not a commit would be undesirable.
22:27 NotFound Or even several, for most active languages
22:28 cotto_work -1.  It should be easy to find out when a commit breaks something, no matter what it is.
22:28 Tene dukeleto: Sorry, I didn't mean to disparage your work or discourage you.  I haven't updated my cache of "projects that get talked about but never happen" yet.
22:29 cotto_work Tene: HLL smoking got upgraded from that list. ;)
22:29 NotFound Clearly marking the language in the subject should be enough to enable people to filter what they want.
22:31 ambs left #parrot
22:33 Tene Man, my time estimate skills are horribly useless lately.
22:34 lucian left #parrot
22:34 Tene I just noticed that I had estimated that I could get a nqC, nqRuby, and nqPython compiler all implemented and interoperating over the next weekend.
22:35 bacek_at_work Tene, looks like you have veery long weekends :)
22:35 NotFound Tene: I got winxed stage 0 more or less useable in about a month.
22:37 Tene bacek_at_work: I've been running into trouble with this at work lately.  For the past week while working on this project, I've told my co-workers that I expect to finish that day, every day.
22:37 NotFound But my pir knowledge at that time was limited and I updated it on the way, should be doable a bit faster,
22:37 Tene "Obviously all of the problems that I was having trouble dealing with yesterday will be absolutely trivial today somehow..."
22:39 donaldh joined #parrot
22:39 whiteknight joined #parrot
22:40 Tene NotFound: thinking harder about it, if I adapt bacek's C grammar and emit PAST, it should be possible to get something working well over a long evening, judging by similar projects with PCT I've done in the past.
22:41 jan left #parrot
22:41 NotFound I'm not sure about how well C syntax and parrot semantics will match.
22:42 Tene It seems like my default time estimation algorithm is using "time to understand and read a finished solution", and not thinking abotu the workinvolved to build and troubleshoot anything at all.
22:43 NotFound An attempt will help to understand the advantages and difficulties of that approach.
22:47 whiteknight Tene: if anybody has the mad skillz to accomplish that, it's you
22:49 Khisanth left #parrot
22:49 cosimo joined #parrot
22:52 NotFound http://megatokyo.com/strip/1161
22:52 Tene Argh, I wish I wasn't so busy with work lately.
22:53 Tene Really, I wish I could work full-time on Parrot. >.>
22:53 Khisanth joined #parrot
22:53 dukeleto Tene: well then, we should figure out how to accomplist that
22:54 dukeleto Tene: which involves making parrot usefult enough to a company that it would fund development
22:54 dukeleto useful, even
22:54 Tene dukeleto: If Parrot had piles of money, I would not put myself at the top of the list of devs to employ.
22:55 dukeleto Tene: i am talking about a company funding work, not them giving a bunch of money to PaFo
22:56 Tene dukeleto: Sure.  Same thing, though.  I guess we can find out if/when that happens.
23:08 hercynium left #parrot
23:24 Andy left #parrot
23:56 donaldh left #parrot

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

Parrot | source cross referenced