Camelia, the Perl 6 bug

IRC log for #parrot, 2012-06-01

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:09 dukeleto NotFound: does that mean you want testing on clang?
00:11 whiteknight blah. I hate these stupid python gdb extensions more than anything
00:11 NotFound dukeleto: not a bad idea
00:13 whiteknight Every time I try to debug parrot I have to rm blib/lib/*.py*
00:13 whiteknight and that's a nuisance at best
00:13 dukeleto whiteknight: that sounds no bueno
00:13 dukeleto whiteknight: i have never run into that. exactly what happens?
00:13 whiteknight I don't know where those stupid things get loaded, and I have no idea how to turn it off
00:14 whiteknight They're a bunch of "pretty print" helpers for parrot types, which work nicely sometimes, unless you want a non-pretty look at a pmc or a string
00:14 whiteknight and you get a python exception if the string has a "binary" encoding, or a NULL one
00:14 whiteknight and in those cases I can't look at the STRING at all, pretty or not
00:25 NotFound A debugger that fails with something unexpected kinda breaks the purpose of a debugger.
00:26 dalek parrot/notfound/pbc_to_exe_winxed: c7e2a4d | NotFound++ | / (3 files):
00:26 dalek parrot/notfound/pbc_to_exe_winxed: update the infrastructute to build pbc_to_exe from the winxed source
00:26 dalek parrot/notfound/pbc_to_exe_winxed: review: https://github.com/parrot/parrot/commit/c7e2a4dca9
00:27 NotFound Now it's a bit easier to test.
00:33 dalek parrot/whiteknight/io_cleanup1: ad75883 | Whiteknight++ | / (7 files):
00:33 dalek parrot/whiteknight/io_cleanup1: Several build fixes. Miniparrot now runs without issue. parrot builds. The build progresses much further until we run into a packfile-related error on a later stage
00:33 dalek parrot/whiteknight/io_cleanup1: review: https://github.com/parrot/parrot/commit/ad758830dc
00:41 aloha (parrot/parrot) Issues opened : 777 (GDB pretty printers should be optional) by Whiteknight : https://github.com/parrot/parrot/issues/777
01:02 Jashwanth joined #parrot
01:06 Jashwanth dukeleto:I think I did the same thing
01:11 davidfetter joined #parrot
01:13 whiteknight Encoding handling in FileHandle is messed up
01:13 whiteknight it stores a string name for encoding, which means on every single input operation we need to look up the encoding by name
01:14 whiteknight instead of doing something sane like, say, storing the encoding pointer directly
01:14 whiteknight this subsystem has so much fail, and I have so little time
01:19 dalek parrot/notfound/pbc_to_exe_winxed: 03d5e8e | NotFound++ | tools/dev/pbc_to_exe.winxed:
01:19 dalek parrot/notfound/pbc_to_exe_winxed: minor improvements in the converted pbc_to_exe:
01:19 dalek parrot/notfound/pbc_to_exe_winxed: - convert remaining gotos
01:19 dalek parrot/notfound/pbc_to_exe_winxed: - define a const for the read buffer size
01:19 dalek parrot/notfound/pbc_to_exe_winxed: - add a helper routine for spawnw
01:19 dalek parrot/notfound/pbc_to_exe_winxed: review: https://github.com/parrot/parrot/commit/03d5e8ef49
01:38 dalek parrot/whiteknight/io_cleanup1: 452cfd1 | (Bart Wiegmans)++ | CREDITS:
01:38 dalek parrot/whiteknight/io_cleanup1: Added myself to credits
01:38 dalek parrot/whiteknight/io_cleanup1: review: https://github.com/parrot/parrot/commit/452cfd1ed9
01:38 dalek parrot/whiteknight/io_cleanup1: 0d41939 | moritz++ | CREDITS:
01:38 dalek parrot/whiteknight/io_cleanup1: Merge pull request #775 from bdw/master
01:38 dalek parrot/whiteknight/io_cleanup1:
01:38 dalek parrot/whiteknight/io_cleanup1: Add my name
01:38 dalek parrot/whiteknight/io_cleanup1: review: https://github.com/parrot/parrot/commit/0d41939bd0
01:38 dalek parrot/whiteknight/io_cleanup1: 2ec5d01 | benabik++ | t/pmc/bignum.t:
01:38 dalek parrot/whiteknight/io_cleanup1: Fix warning in t/pmc/bignum.t for GMP 5
01:38 dalek parrot/whiteknight/io_cleanup1:
01:38 dalek parrot/whiteknight/io_cleanup1: This code was trying to warn about GMP prior to 4.1.4, but instead was
01:38 dalek parrot/whiteknight/io_cleanup1: warning about any version before x.1.4.  I rearranged the logic to
01:38 dalek parrot/whiteknight/io_cleanup1: make the intent more clear and to not warn about GMP 5+.
01:38 dalek parrot/whiteknight/io_cleanup1: review: https://github.com/parrot/parrot/commit/2ec5d016fa
01:38 dalek parrot/whiteknight/io_cleanup1: 18d0f30 | jkeenan++ | frontend/parrot2/prt0.pir:
01:38 dalek parrot/whiteknight/io_cleanup1: Update copyright to 2012.
01:38 dalek parrot/whiteknight/io_cleanup1: review: https://github.com/parrot/parrot/commit/18d0f30c31
01:38 dalek parrot/whiteknight/io_cleanup1: d70e3d9 | Whiteknight++ | / (3 files):
01:38 dalek parrot/whiteknight/io_cleanup1: Merge branch 'master' into whiteknight/io_cleanup1
01:38 dalek parrot/whiteknight/io_cleanup1: review: https://github.com/parrot/parrot/commit/d70e3d9909
01:38 dalek parrot/whiteknight/io_cleanup1: efdbe25 | Whiteknight++ | src/io/ (4 files):
01:38 dalek parrot/whiteknight/io_cleanup1: Fixes so FileHandle.readall works as expected. Use an existing helper method to read bytes into a string. Fall back to the platform encoding if one isn't set on the filehandle. Fix some parameter assertions
01:38 dalek parrot/whiteknight/io_cleanup1: review: https://github.com/parrot/parrot/commit/efdbe25763
01:38 dalek parrot/whiteknight/io_cleanup1: 05df5a6 | Whiteknight++ | src/io/ (3 files):
01:38 dalek parrot/whiteknight/io_cleanup1: Fix a few things that were causing build problems. The build actually has regressed. Figuring out how the system used to handle all the encoding nonsense is hard.
01:38 dalek parrot/whiteknight/io_cleanup1: review: https://github.com/parrot/parrot/commit/05df5a6cb0
02:26 alvis joined #parrot
02:28 dalek nqp: 0631f83 | duff++ | src/PAST/NQP.pir:
02:28 dalek nqp: Add nqp::stat
02:28 dalek nqp: review: https://github.com/perl6/nqp/commit/0631f83778
02:28 dalek nqp: 0d86ce0 | duff++ | src/PAST/NQP.pir:
02:28 dalek nqp: Add nqp::does
02:28 dalek nqp: review: https://github.com/perl6/nqp/commit/0d86ce0898
02:28 dalek nqp: 5f23136 | duff++ | src/PAST/NQP.pir:
02:28 dalek nqp: Add nqp::find_method
02:28 dalek nqp: review: https://github.com/perl6/nqp/commit/5f23136573
02:28 dalek nqp: 831cc97 | duff++ | src/PAST/NQP.pir:
02:28 dalek nqp: Add nqp::isa
02:28 dalek nqp: review: https://github.com/perl6/nqp/commit/831cc973ed
02:28 dalek nqp: a60e457 | duff++ | src/PAST/NQP.pir:
02:28 dalek nqp: Add nqp::new
02:28 dalek nqp: review: https://github.com/perl6/nqp/commit/a60e457a74
02:28 dalek nqp: 4c4fa49 | duff++ | src/PAST/NQP.pir:
02:28 dalek nqp: Add nqp::open
02:29 dalek nqp: review: https://github.com/perl6/nqp/commit/4c4fa49528
02:29 dalek nqp: 730aea9 | duff++ | src/PAST/NQP.pir:
02:29 dalek nqp: Add nqp::find_not_cclass
02:29 dalek nqp: review: https://github.com/perl6/nqp/commit/730aea94d0
02:29 dalek nqp: 07926fd | duff++ | src/PAST/NQP.pir:
02:29 dalek nqp: Add nqp::rindex
02:29 dalek nqp: review: https://github.com/perl6/nqp/commit/07926fdf97
02:29 dalek nqp: 2d94351 | duff++ | src/PAST/NQP.pir:
02:29 dalek nqp: Add nqp::typeof
02:29 dalek nqp: review: https://github.com/perl6/nqp/commit/2d94351fe3
02:29 dalek nqp: 6ae28d9 | duff++ | src/PAST/NQP.pir:
02:29 dalek nqp: Add nqp::defined
02:29 dalek nqp: review: https://github.com/perl6/nqp/commit/6ae28d90d3
02:29 dalek rakudo/nom: 4aea135 | duff++ | src/ (2 files):
02:29 dalek rakudo/nom: s/pir::stat\w+/nqp::stat/g
02:29 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/4aea1353bd
02:29 dalek rakudo/nom: f4357fd | duff++ | src/ (4 files):
02:29 dalek rakudo/nom: Use nqp::does
02:29 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/f4357fd615
02:29 dalek rakudo/nom: c8d7cd9 | duff++ | src/ (8 files):
02:29 dalek rakudo/nom: Use nqp::find_method
02:29 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/c8d7cd94fc
02:29 dalek rakudo/nom: dd145cb | duff++ | src/ (5 files):
02:29 dalek rakudo/nom: Use nqp::isa
02:29 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/dd145cbbf7
02:29 dalek rakudo/nom: ef161f7 | duff++ | src/ (3 files):
02:29 dalek rakudo/nom: Use nqp::open
02:29 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/ef161f7cc9
02:29 dalek rakudo/nom: ebd0e6c | duff++ | src/core/Str.pm:
02:29 dalek rakudo/nom: Use nqp::find_not_cclass
02:29 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/ebd0e6cda3
02:29 dalek rakudo/nom: dbe1494 | duff++ | src/core/Cool.pm:
02:29 dalek rakudo/nom: use nqp::rindex
02:29 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/dbe1494dbf
02:29 dalek rakudo/nom: e4b9254 | duff++ | src/core/ (2 files):
02:29 dalek rakudo/nom: Use nqp::throw
02:29 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/e4b9254ba3
02:29 dalek rakudo/nom: d3c3756 | duff++ | src/core/Exception.pm:
02:29 dalek rakudo/nom: Use nqp::rethrow
02:29 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/d3c3756122
02:29 dalek rakudo/nom: 930a1a5 | duff++ | src/core/control.pm:
02:29 dalek rakudo/nom: Use nqp::sleep
02:29 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/930a1a5ad5
02:29 dalek rakudo/nom: 5480fcb | duff++ | src/ (12 files):
02:29 dalek rakudo/nom: Use nqp::defined
02:29 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/5480fcba18
02:29 dalek rakudo/nom: 0276a44 | duff++ | tools/build/NQP_REVISION:
02:29 dalek rakudo/nom: Bump NQP version to get new nqp:: ops
02:29 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/0276a442a4
03:18 Jashwanth_ joined #parrot
03:44 japhb joined #parrot
04:06 dalek rakudo/nom: 696a71d | duff++ | docs/ (2 files):
04:06 dalek rakudo/nom: Start on release announcement for June
04:06 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/696a71d936
05:10 woosley left #parrot
05:10 woosley joined #parrot
05:24 dalek rakudo/qrpa: 6e7868e | pmichaud++ | / (2 files):
05:24 dalek rakudo/qrpa: QRPA: Add init, destroy, mark, elements, unshift_pmc, and some native variants.
05:24 dalek rakudo/qrpa: review: https://github.com/rakudo/rakudo/commit/6e7868e12a
05:24 dalek rakudo/qrpa: c42e429 | pmichaud++ | / (2 files):
05:24 dalek rakudo/qrpa: Add defined_*, exists_*, and unshift_* for native types.
05:24 dalek rakudo/qrpa: review: https://github.com/rakudo/rakudo/commit/c42e429d5d
05:24 dalek rakudo/qrpa: 07ced37 | pmichaud++ | / (2 files):
05:24 dalek rakudo/qrpa: QRPA:  Add clone, get_iter, splice.
05:24 dalek rakudo/qrpa: review: https://github.com/rakudo/rakudo/commit/07ced374cc
05:24 dalek rakudo/qrpa: f57053a | pmichaud++ | src/pmc/qrpa.pmc:
05:24 dalek rakudo/qrpa: Add some useful optimizations.
05:24 dalek rakudo/qrpa: review: https://github.com/rakudo/rakudo/commit/f57053acc7
05:45 dalek rakudo/nom: 50b77f3 | duff++ | src/core/Mu.pm:
05:45 dalek rakudo/nom: Give TimToady .take
05:45 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/50b77f3674
06:32 fperrad joined #parrot
06:45 dalek nqp: b1fb4b3 | kboga++ | / (16 files):
06:45 dalek nqp: pir::defined to nqp::defined, pir::find_not_cclass__Iisii to nqp::findnotcclass, pir::find_method__PPs to nqp::findmethod
06:45 dalek nqp: review: https://github.com/perl6/nqp/commit/b1fb4b3098
07:02 cotto joined #parrot
07:03 brrt joined #parrot
07:05 brrt morning!
07:34 aloha (parrot/parrot) Issues opened : 778 (Move os.pmc) by bdw : https://github.com/parrot/parrot/issues/778
07:51 woosley joined #parrot
07:57 brrt oh, btw, i should probably want to merge OS and File
07:58 * brrt thinks its bad practice to have such redundancy
08:02 p6eval joined #parrot
08:07 lucian joined #parrot
08:37 Khisanth joined #parrot
09:13 kjs joined #parrot
09:31 kjs_ joined #parrot
09:36 kjs_ joined #parrot
09:38 kjs joined #parrot
09:50 kjs_ joined #parrot
09:54 kjs joined #parrot
09:59 kjs_ joined #parrot
10:10 kjs_ joined #parrot
10:10 woosley left #parrot
10:23 JimmyZ joined #parrot
10:31 dalek Heuristic branch merge: pushed 20 commits to parrot by zhuomingliang
10:35 jashwanth joined #parrot
10:35 aloha (parrot/parrot) Issues closed : 378 (Add UINTPTR type into parrot.) by bacek : https://github.com/parrot/parrot/issues/378, 236 (config/auto/memalign.pm is broken) by gerdr : https://github.com/parrot/parrot/issues/236, 232 (config/auto/sizes/test_c.in uses wrong format specifier to print sizes) by
10:35 aloha ..gerdr : https://github.com/parrot/parrot/issues/232, 642 (Configure.pl allows sizeof(INTVAL) != sizeof(void *), but parrot requires them to be equal.) by doughera : https://github.com/parrot/parrot/issues/642, 704 (cleanup and auto::sizes refactor) by gerdr :
10:35 aloha ..https://github.com/parrot/parrot/issues/704, 631 (Add Configure.pl check for <stdint.h>) by doughera : https://github.com/parrot/parrot/issues/631
10:36 kjs joined #parrot
10:42 dalek m1: 609fbac | kjs++ | m1_ (5 files):
10:42 dalek m1: assign statement's lhs is of type m1_object. this is preparation for adding another parameter to gencode_obj
10:42 dalek m1: review: https://github.com/parrot/m1/commit/609fbac09a
10:45 brrt hey kjs
10:45 brrt where are you from?
10:45 kjs hi brrt
10:46 kjs NL
10:46 kjs hallo :-)
10:47 brrt yes, i imagined :-)
10:47 brrt me, too, groningen here
10:47 kjs i's the name that gives it away ;-)
10:48 dalek m1: 1e5ea7b | kjs++ | m1_ (2 files):
10:48 dalek m1: add a is_target flag to function. do it in code, not the data structure. easier and saves ram.
10:48 dalek m1: review: https://github.com/parrot/m1/commit/1e5ea7b4d2
10:48 kjs ah i'm from there as well
10:48 brrt quite
10:48 brrt oh, really?
10:48 brrt stadjer?
10:49 kjs but i dont live there..
10:49 brrt ah, i see
10:49 brrt shame
10:49 kjs 20 min from city
10:49 brrt not baflo, right? :-p
10:49 kjs come back every now and then
10:49 kjs ha ha no
10:49 kjs middelstum
10:50 kjs close ;-)
10:50 brrt close enough
10:50 brrt connected to the university or something?
10:51 travis-ci joined #parrot
10:51 travis-ci [travis-ci] parrot/parrot#395 (master - e036f5b : Jimmy Zhuo): The build was fixed.
10:51 travis-ci [travis-ci] Change view : https://github.com/parrot/par​rot/compare/ad726e8...e036f5b
10:51 travis-ci [travis-ci] Build details : http://travis-ci.org/parrot/parrot/builds/1497453
10:51 travis-ci left #parrot
10:53 kjs used to
10:53 kjs i had a supervisor there.
10:53 brrt i see
10:54 kjs you in rug?
10:56 brrt yes, biology
10:56 kjs ah. i did cs there
10:57 brrt in the old building probably?
10:58 dalek mod_parrot: e1eaa3d | (Bart Wiegmans)++ | / (4 files):
10:58 dalek mod_parrot: Updated building on more different systems
10:58 dalek mod_parrot: review: https://github.com/bdw/mod​_parrot/commit/e1eaa3d92a
10:58 dalek mod_parrot: 395ced7 | (Bart Wiegmans)++ | / (8 files):
10:58 dalek mod_parrot: Extended mod_parrot.winxed. Very unusable commit
10:58 dalek mod_parrot: review: https://github.com/bdw/mod​_parrot/commit/395ced7580
10:58 JimmyZ kjs: ./m1 obj.m1 segfault
10:58 kjs ugh
10:58 kjs JimmyZ:  thanks for testing. I knew it was too simple.
10:59 kjs brrt: yes, but i've also been to the new one.
11:00 kjs JimmyZ: have you done make clean?
11:01 kjs JimmyZ: which code does it choke on?
11:01 crab2313 joined #parrot
11:01 kjs oh obj.m1 i see now.
11:02 JimmyZ 0x0804c1ab in yyget_lineno (yyscanner=0x8052a59) at m1lexer.c:2614
11:02 * brrt leaves for lunch
11:02 brrt left #parrot
11:02 kjs did you do make clean?
11:02 JimmyZ kjs: yeah
11:02 kjs works here..
11:02 kjs was it good before my changes today?
11:03 JimmyZ kjs: nope
11:03 kjs oh ok
11:03 JimmyZ #0  0x0804c1ab in yyget_lineno (yyscanner=0x8052a59) at m1lexer.c:2614
11:03 JimmyZ #1  0x0804c7e5 in expression (comp=0xbffff0d8, type=EXPR_VARDECL) at m1_ast.c:46
11:07 kjs thanks. i'll have a look
11:08 dalek m1: 569f83f | kjs++ | m1_ (2 files):
11:08 dalek m1: add a comment. do some work on object indexing.
11:08 dalek m1: review: https://github.com/parrot/m1/commit/569f83f463
11:08 dalek m1: 1672679 | kjs++ | / (3 files):
11:08 dalek m1: few changes to tests.
11:08 dalek m1: review: https://github.com/parrot/m1/commit/1672679072
11:10 dalek m1: df0035a | kjs++ | m1_ast.c:
11:10 dalek m1: add a few asserts.
11:10 dalek m1: review: https://github.com/parrot/m1/commit/df0035aa5a
11:10 kjs can you try again with latest change? added a few asserts.
11:11 kjs ugh. M1 needs a test suite.
11:12 kjs JimmyZ: which version of flex do you have?
11:12 kjs (flex ---version)
11:12 kjs eh, --version
11:13 JimmyZ flex 2.5.35
11:13 kjs ok that's alright then
11:13 kjs bison --version?
11:14 JimmyZ bison (GNU Bison) 2.5
11:14 kjs ok. i have 2.3
11:14 kjs but wouldnt expect any problems really. i think there were some chnages to the api for making reentrant parsers.
11:17 dalek m1: becb578 | jimmy++ | obj2.m0:
11:17 dalek m1: removed obj2.m0
11:17 dalek m1: review: https://github.com/parrot/m1/commit/becb578a1f
11:19 dalek m1: 7f997bc | kjs++ | m1_main.c:
11:19 dalek m1: add a check for argc in main. removes warning of unused param and also for safety.
11:19 dalek m1: review: https://github.com/parrot/m1/commit/7f997bcfcb
11:31 dalek m1: 4a39ba5 | kjs++ | m1_main.c:
11:31 dalek m1: fix problem reported by JimmyZ++.
11:31 dalek m1: review: https://github.com/parrot/m1/commit/4a39ba593a
11:31 dalek m1: 6a83d7f | kjs++ | m1_gencode.c:
11:31 dalek m1: more work on arrays. may have to rethink code for assignments.
11:31 kjs JimmyZ: i found the problem , it's fixed now.
11:31 dalek m1: review: https://github.com/parrot/m1/commit/6a83d7f84f
11:32 moritz how fast is m0?
11:33 JimmyZ I think It's very fast, but goto_chunk will be slow
11:34 kjs moritz: cant realy check at the moment, as there's no big programs
11:34 kjs also the interp is implemented as a switch statement which is not the best approach
11:34 kjs but goal is to JIT it
11:35 JimmyZ hmm, how can m1 call a c std function?
11:35 kjs havent looked into that
11:35 kjs suggestions?
11:35 kjs you mean to implement FFI
11:35 JimmyZ nope
11:35 JimmyZ native call
11:36 kjs into a c function
11:36 kjs not sure how to do that yet
11:36 kjs probably need syntax with special keyword to make it clear
11:40 JimmyZ kjs++, it got fixed!
11:41 kjs yes it was fairly simple and stupid really :-)
11:41 kjs JimmyZ++ thanks for reporting (and testing!)
11:48 dalek rakudo/qrpa: 02b5ec6 | pmichaud++ | src/Perl6/Actions.pm:
11:48 dalek rakudo/qrpa: Add nqp::qlist() to obtain QRPA instead of RPA.
11:48 dalek rakudo/qrpa: review: https://github.com/rakudo/rakudo/commit/02b5ec68be
11:48 dalek rakudo/qrpa: f4373c6 | pmichaud++ | src/pmc/qrpa.pmc:
11:48 dalek rakudo/qrpa: QRPA: Fix pointer typo in QRPA.clone.
11:48 dalek rakudo/qrpa: review: https://github.com/rakudo/rakudo/commit/f4373c6192
11:53 dalek m1: cb0e034 | kjs++ | m1_ (4 files):
11:53 dalek m1: add another stack for m1_regs. for use in code gen.
11:53 dalek m1: review: https://github.com/parrot/m1/commit/cb0e034cb6
12:08 whiteknight joined #parrot
12:10 whiteknight good morning, #parrot
12:11 kjs good morning
12:12 JimmyZ whiteknight: good morning
12:13 JimmyZ whiteknight: how about removing gci_fill_params_reduce[2] and tt389_fix branch?
12:20 whiteknight JimmyZ: let me look at them first
12:20 dalek m1: 0c0f239 | kjs++ | m1_ (4 files):
12:20 dalek m1: use regstack for passing around m1_reg objects.
12:20 dalek m1: review: https://github.com/parrot/m1/commit/0c0f239ebc
12:51 * Coke gets pmc whiplash.
12:54 dalek rakudo/qrpa: cf75879 | pmichaud++ | src/ops/perl6.ops:
12:54 dalek rakudo/qrpa: QRPA:  Update nqp::islist to be QRPA-aware.
12:54 dalek rakudo/qrpa: review: https://github.com/rakudo/rakudo/commit/cf7587996f
13:13 Patterner joined #parrot
13:24 dalek rakudo/qrpa: 725acab | pmichaud++ | / (2 files):
13:24 dalek rakudo/qrpa: QRPA:  Add QRPA.get_number().
13:24 dalek rakudo/qrpa: review: https://github.com/rakudo/rakudo/commit/725acab27f
13:24 dalek rakudo/qrpa: 94483a2 | pmichaud++ | / (2 files):
13:24 dalek rakudo/qrpa: QRPA: Add QRPA.get_bool, get_bool and get_number tests.
13:24 dalek rakudo/qrpa: review: https://github.com/rakudo/rakudo/commit/94483a2888
13:25 kjs joined #parrot
13:36 dalek nqp: bfea0f7 | duff++ | / (15 files):
13:36 dalek nqp: Use new nqp ops
13:36 dalek nqp:
13:36 dalek nqp: nqp::defined, nqp::typeof, nqp::rindex, nqp::find_not_cclass, nqp::open,
13:36 dalek nqp: nqp::new, nqp::isa, nqp::find_method, nqp::does, nqp::stat
13:36 dalek nqp: review: https://github.com/perl6/nqp/commit/bfea0f7975
13:42 isBEKaml joined #parrot
13:43 isBEKaml good evening, #parrot!
13:47 whiteknight joined #parrot
13:49 jashwanth joined #parrot
13:59 tadzik hello isBEKaml
13:59 isBEKaml hey, tadzik - how goes bailador? :)
14:00 tadzik no new things, bu I have a talk accepted for FPW 2012
14:00 isBEKaml that's French Perl Workshop, right?
14:00 tadzik so I guess I'll have to write some new stuff to amuse people :)
14:00 tadzik right
14:00 isBEKaml great, post slides soon! tadzik++
14:00 tadzik http://journeesperl.fr/fpw2012/talk/4122
14:01 tadzik okay, expect them in July :P
14:02 isBEKaml congrats! that's only a month away. :)
14:02 tadzik don't scare me! :P
14:02 tadzik I have an exam session to pass too
14:03 isBEKaml Don't panic! Whatever happens, don't PANIC!
14:03 tadzik don't tempt me! :P
14:03 JimmyZ just segfault
14:08 isBEKaml :)
14:21 PacoAir joined #parrot
14:25 dalek rakudo/qrpa: eadaa34 | pmichaud++ | src/pmc/qrpa.pmc:
14:25 dalek rakudo/qrpa: QRPA:  Restore the custom_mark_destroy flags that were in init().  Oops.
14:25 dalek rakudo/qrpa: review: https://github.com/rakudo/rakudo/commit/eadaa34679
14:33 dalek rakudo/qrpa: c5b2ca2 | jnthn++ | src/binder/types.c:
14:33 dalek rakudo/qrpa: Ensure the type mapper knows how to map a QRPA to Parcel.
14:33 dalek rakudo/qrpa: review: https://github.com/rakudo/rakudo/commit/c5b2ca293c
14:36 dalek winxed: 678cd52 | NotFound++ | winxedst2.winxed:
14:36 dalek winxed: encapsulate get parameter multi type
14:36 dalek winxed: review: https://github.com/NotFoun​d/winxed/commit/678cd52c34
14:36 isBEKaml hey, has anyone been able to compile parrot with clang?
14:37 whiteknight clang is the browser I use
14:38 whiteknight er, compiler
14:38 whiteknight I almost never use gcc anymore
14:39 isBEKaml whiteknight: first, there were warnings for configure script around va_ptr and then it failed in sprintf.c in make step
14:39 whiteknight This is parrot master?
14:39 isBEKaml yes
14:40 whiteknight okay, what's the error in sprintf.c?
14:42 isBEKaml https://gist.github.com/2852607
14:42 whiteknight weird. Maybe we're missing an include somewhere?
14:42 whiteknight Where is PARROT_VA_TO_VAPTR defined?
14:43 isBEKaml dunno, I'm guessing it has something to do Configure.pl skipping it.
14:44 isBEKaml let me run configure.pl again
14:44 isBEKaml btw, did you have to pass special flags other than cc to that script?
14:46 isBEKaml perl Configure.pl --prefix=$PWD --without-icu --cc=clang  # any others?
14:48 moritz uhm
14:48 moritz don't use $PWD as your prefix
14:48 isBEKaml moritz: so I can do "make install". nothing much in there, really.
14:49 moritz uhm, I thought parrot's sources were in $PWD?
14:49 moritz I just think you can get some path clashes if you installing into the very source directory
14:49 isBEKaml yes, so far I haven't had a problem with it.
14:52 isBEKaml whiteknight: yep, auto::va_ptr -> https://gist.github.com/2852675
14:56 not_gerd joined #parrot
14:57 whiteknight isBEKaml: that's weird. I've never seen that error before
14:57 not_gerd isBEKaml: the va_ptr test is missing a cast
14:57 not_gerd https://gist.github.com/2852706
14:58 isBEKaml not_gerd: I was just looking at that file. :)
14:58 isBEKaml not_gerd: btw, #if defined... (are they all right?)
14:59 not_gerd yes, that's fine
14:59 isBEKaml not_gerd: okay, I'll patch that in and see if it works.
15:00 not_gerd isBEKaml: mind you, that diff just fixed the configure probe - the actual macro definition needs to be adjusted as well
15:02 not_gerd isBEKaml: config/gen/config_h/feature_h.in, line 67
15:02 isBEKaml not_gerd: well, it didn't fix config problem, either. :(
15:04 not_gerd isBEKaml: can you run with --verbose-step auto::va_ptr
15:05 not_gerd sorry, --verbose-step=auto::va_ptr
15:07 dalek nqp: 69d548e | jnthn++ | / (17 files):
15:07 dalek nqp: Toss various nqp:: ops that are too Parrot-specific.
15:07 dalek nqp: review: https://github.com/perl6/nqp/commit/69d548ecb9
15:09 isBEKaml https://gist.github.com/2852817
15:09 isBEKaml not_gerd: ^^
15:12 crab2313 joined #parrot
15:13 not_gerd isBEKaml: what architecture are you on?
15:13 isBEKaml Linux zorander 2.6.29.6-smp #2 SMP Mon Aug 17 00:52:54 CDT 2009 i686 Pentium III (Coppermine) GenuineIntel GNU/Linux
15:13 isBEKaml $(uname -a)
15:14 isBEKaml clang version 2.9 (tags/RELEASE_29/final)
15:15 not_gerd well, no wonder: that fix was for x86-64 and ppc
15:15 not_gerd which means my guess as to what was wrong was incorrect :(
15:15 isBEKaml it works on x86_64? that's weird...
15:16 whiteknight that may be my problem
15:19 jashwanth joined #parrot
15:21 dalek nqp: 365eda1 | jnthn++ | src/HLL/Compiler.pm:
15:21 dalek nqp: Toss a method that assumes Parrot namespaces, and is unused.
15:21 dalek nqp: review: https://github.com/perl6/nqp/commit/365eda13d2
15:26 dalek rakudo/nom: abd4abf | jnthn++ | / (15 files):
15:26 dalek rakudo/nom: Eliminate some uses of nqp:: opcodes that we've outlawed.
15:26 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/abd4abfbe1
15:28 whiteknight jnthn: That's a weird commit. Aren't you moving in the opposite direction by replacing nqp:: ops with pir:: ones?
15:29 nine whiteknight: jnthn is not listening on this channel
15:29 tadzik whiteknight: it's just that some close-to-parrot opcodes are to stay as pir::
15:29 tadzik (see backlog on #perl6)
15:31 not_gerd isBEKaml: no idea what's wrong
15:32 not_gerd try manually compiling the test_c.in ith -DVA_TYPE_REGISTER and -DVA_TYPE_STACK and see what happens...
15:32 isBEKaml not_gerd: it works with gcc, but not with clang. Where's VA_TYPE_FOO defined?
15:35 not_gerd auto::va_ptr compiles config/auto/va_ptr/test_c.in once with -DVA_TYPE_REGISTER and once with -DVA_TYPE_STACK to determine if va_list is an array type and sets the va_ptr_type configuration value
15:35 not_gerd then, PARROT_VA_TO_VAPTR gets defined accordingly (see config/gen/config_h/feature_h.in)
15:36 isBEKaml okay - VA_TYPE_REGISTER SEGV'd. I'll increase ulimit and try again
15:36 isBEKaml VA_TYPE_STACK threw up illegal instruction.
15:37 isBEKaml 0x080483e5 in test0 ()
15:37 isBEKaml Current language:  auto; currently asm
15:37 isBEKaml that's with SEGV in gdb.
15:38 not_gerd on i686, VA_TYPE_STACK should work
15:39 not_gerd the segfault with VA_TYPE_REGISTER is somewhat expected as you'll read an arbitrary value from stack and interpret it as a pointer
15:40 not_gerd (or not; need to think about that - anyway, VA_TYPE_STACK should work on i686)
15:40 dalek winxed: 3357c6a | NotFound++ | / (2 files):
15:40 dalek winxed: new syntax for declaring multi parameter types
15:40 dalek winxed: review: https://github.com/NotFoun​d/winxed/commit/3357c6a750
15:42 not_gerd isBEKaml: I've got to go, but I'll take another look at it when I get home
15:42 * not_gerd is happy that his branch got finally merged
15:43 not_gerd bye, #parrot
15:43 not_gerd left #parrot
15:43 isBEKaml not_gerd: okay, thanks for your help. I'll post more info if I get anything.
15:45 dalek nqp: d63dec6 | pmichaud++ | / (2 files):
15:45 dalek nqp: Update notes about rejected nqp:: operations -- no functional changes.
15:45 dalek nqp: review: https://github.com/perl6/nqp/commit/d63dec6bae
15:47 dalek rakudo/nom: 0f9975c | jnthn++ | src/Perl6/World.pm:
15:47 dalek rakudo/nom: Fix typo spotted by diakopter++.
15:47 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/0f9975c782
15:51 dalek rakudo/nom: 1886ee9 | pmichaud++ | src/core/Parcel.pm:
15:51 dalek rakudo/nom: Use nqp::shift($rpa) instead of $rpa.shift.
15:51 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/1886ee9525
16:01 isBEKaml heh. Anyone familiar with x86 assembly? is there such a thing as a calll instruction?
16:02 isBEKaml I'm going over the differences in the generated assembly between gcc and clang.
16:03 whiteknight isBEKaml: I don't think I've ever heard that opcode before, but I stopped doing x86 assembly back on 16bit machines
16:03 isBEKaml whiteknight: exactly. that instruction appears off to me.
16:04 isBEKaml whiteknight: that may well be why I got SIGILL with VA_TYPE_STACK
16:07 dalek rakudo/nom: 6365270 | jnthn++ | src/core/operators.pm:
16:07 dalek rakudo/nom: Make let/temp cope sanely with temp'ing/let'ing the same variable twice.
16:07 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/636527047f
16:12 dmalcolm joined #parrot
16:18 isBEKaml For anyone that can look over assembly and spot differences, here's the generated assembly from both clang and gcc: https://gist.github.com/2853291
16:19 dalek m1: 8b64e84 | kjs++ | m1_ (2 files):
16:19 dalek m1: converting from return values to explicit stack to move around regs.
16:19 dalek m1: review: https://github.com/parrot/m1/commit/8b64e84a48
16:34 dalek parrot/threads: 58d737e | nine++ | src/alarm.c:
16:34 dalek parrot/threads: Reworked timer handling to fix a race
16:34 dalek parrot/threads:
16:34 dalek parrot/threads: If after an alarm expires a new alarm was set to the exact same time (now)
16:34 dalek parrot/threads: Parrot_alarm_runloop would not notice and still wait for new alarms without
16:34 dalek parrot/threads: notifying any threads. This happened quite often on Windows because
16:34 dalek parrot/threads: Parrot_floatval_time() gives only millisecond precision there which is an
16:34 dalek parrot/threads: eternity for a processor.
16:34 dalek parrot/threads:
16:34 dalek parrot/threads: This reworked version is no longer dependent on any precision.
16:34 dalek parrot/threads: review: https://github.com/parrot/parrot/commit/58d737e7c4
16:34 dalek parrot/threads: 4f8359f | nine++ | include/parrot/thr_windows.h:
16:34 dalek parrot/threads: Get Windows COND_TIMED_WAIT closer to POSIX semantics
16:34 dalek parrot/threads:
16:34 dalek parrot/threads: The other part of the solution to the Windows timer problem
16:34 dalek parrot/threads: review: https://github.com/parrot/parrot/commit/4f8359ff97
16:39 dukeleto nine++ # good commit messages
16:40 dalek parrot/threads: aad6ae6 | nine++ | t/pmc/task.t:
16:40 dalek parrot/threads: Activate t/pmc/timer.t on Windows since it actually passes
16:40 dalek parrot/threads: review: https://github.com/parrot/parrot/commit/aad6ae6bc7
16:41 nine whiteknight: tests pass now for me on Windows :)
16:43 whiteknight really? Awesome
16:44 not_gerd joined #parrot
16:45 not_gerd isBEKaml: can't reproduce your problem with clang 3.0 for cygwin
16:45 nine not_gerd: I think I fixes the threads stuff on Windows. Could you give the threads branch another try?
16:46 not_gerd nine: on it
16:46 isBEKaml not_gerd: yeah, I figured that's a problem on clang2.9. The thing is, it runs fine with lli after generating llvm bitcode. But llc still produces that shitty assembly.
16:47 isBEKaml not_gerd: If that's fixed in 3.0 upwards, I'll have to upgrade my clang/llvm
16:47 not_gerd well, clang 3.1 is out - why stay with 2.9 ;)
16:48 isBEKaml not_gerd: well, I'm just lazy. :) I tried compiling 3.1 a couple of days ago, but forgot to modify headers to suit gcc. :P
16:50 not_gerd my WIn64-build of clang cross-compiler via cygwin works with minor issues
16:51 not_gerd some C++ stuff doesn't get linked correctly, but as I don't regularly do C++ and g++ works fine *shrugs*
16:52 not_gerd cross-compile*d*
16:53 isBEKaml not_gerd: I have noticed that too a few times. they usually go away when I give -O switches.
16:53 isBEKaml not_gerd: without -O3, it segfaults. O3 on, it works. :/
16:55 whiteknight nine: I just got a config failure on the threads branch with mingw.
16:56 nine whiteknight: config failure?
16:56 jashwanth joined #parrot
16:57 not_gerd nine: t/src/threads_io.t fails test 3 (prints not ok 3, and after returning to the shell prints a line "ok 3 - main task back")
16:57 not_gerd when running perl t/src/threads_io.t, that is
16:58 nine not_gerd: ok, that's expected. I'm not sure if the test really is usefull anyway. It just happens to pass on Linux, so I activated it.
17:00 dalek m1: e1527b5 | kjs++ | m1_ (2 files):
17:00 dalek m1: more converting from implicit stack to explicit stack.
17:00 dalek m1: review: https://github.com/parrot/m1/commit/e1527b5a06
17:00 nine Ok, gotta run. Bye
17:00 not_gerd bye
17:00 dukeleto "Lua's virtual machine is register-based like Perl's Parrot and Android's Dalvik." -- http://www.technewsworld.com/story/Flame-Towe​ring-Inferno-or-Smoke-and-Mirrors-75266.html
17:01 dukeleto I give them a honorary mention for trying...
17:01 isBEKaml dukeleto: does that article talk about the recent flame virus?
17:03 dukeleto isBEKaml: yeah, it is mostly about that, with a side mention of Parrot
17:08 isBEKaml dukeleto: Oh, I see...
17:08 jashwanth ~~
17:10 whiteknight hello jashwanth
17:13 dukeleto jashwanth: hola
17:13 dukeleto jashwanth: there you are!
17:13 dukeleto jashwanth: i am reading your email response now
17:13 whiteknight miniparrot segfaults for me on win64 with nine's most recent threads branch
17:13 dukeleto jashwanth: i am confused. You still have exams? I thought they were over on wednesday
17:22 NotFound ~~
17:23 NotFound Someone has tested the branch notfound/pbc_to_exe_winxed on windows?
17:31 brrt joined #parrot
17:33 dalek rakudo/qrpa: e2a9ed3 | pmichaud++ | src/core/List.pm:
17:33 dalek rakudo/qrpa: Switch List.gimme to initialize $!items with QRPA.
17:33 dalek rakudo/qrpa: review: https://github.com/rakudo/rakudo/commit/e2a9ed3636
17:34 dalek rakudo/qrpa: 4fc8fa0 | pmichaud++ | src/core/Parcel.pm:
17:34 dalek rakudo/qrpa: Use nqp::shift($rpa) instead of $rpa.shift().
17:34 dalek rakudo/qrpa: review: https://github.com/rakudo/rakudo/commit/4fc8fa0304
17:44 dukeleto NotFound: doesn't seem like it yet. Perhaps asking some of the windows rakudo devs would be useful?
17:46 jashwanth joined #parrot
17:50 dalek nqp/altnfa: 32d6a49 | jnthn++ | src/QRegex/P6Regex/Actions.nqp:
17:50 dalek nqp/altnfa: Start saving per-alternation NFAs.
17:50 dalek nqp/altnfa: review: https://github.com/perl6/nqp/commit/32d6a493b6
17:50 brrt dukeleto, how api.yaml set up?
17:50 dalek nqp/altnfa: 1aa896e | jnthn++ | src/QRegex/NFA.nqp:
17:50 dalek nqp/altnfa: Split merging part of mergesubrules out into mergesubstates.
17:50 dalek nqp/altnfa: review: https://github.com/perl6/nqp/commit/1aa896e3cf
17:50 dalek nqp/altnfa: 72fc431 | jnthn++ | src/QRegex/Cursor.nqp:
17:50 dalek nqp/altnfa: Sketch out alternation NFA running.
17:50 dalek nqp/altnfa: review: https://github.com/perl6/nqp/commit/72fc431415
17:52 * NotFound tinking about merging anyway. That way it will be surely tested ;)
17:58 whiteknight notfound: I'm testing now
17:58 brrt hey, whiteknight :-)
17:58 whiteknight hello brrt
18:01 brrt i've read the comments on the pull requesr
18:01 contingencyplan joined #parrot
18:01 brrt how is api.yaml set up, and how should i edit it?
18:02 brrt and, what is a 'good' load path to feed my embedded parrot interpreter
18:02 whiteknight it's a YAML file, obviously. Find another entry in there and copy the formatting
18:03 dukeleto brrt: it is just a simple way of keeping track of when user-visible stuff changes in parrot
18:03 brrt oh, ok
18:03 dukeleto brrt: like a pmc <---> dynpmc, a function signature changing, etc...
18:03 dukeleto brrt: we have tools that read the yaml and can look for deprecated stuff/etc.
18:03 dukeleto brrt: it is basically to help people pay their "upgrade tax" when they want to use a newer version of parrot, but stuff has changed
18:04 brrt i see, should i put it on the front or the back on the document
18:04 dukeleto brrt: doesn't really matter. I think stuff has been being added to the bottom
18:04 brrt bottom will do
18:04 dukeleto brrt: but the middle works too. If you put it somewhere in the middle, there is less of a chance of merge conflicts :)
18:04 dukeleto brrt: and what exactly is your question about a load path? do you have a code example?
18:05 dukeleto brrt: there is a default load path, and then you can add to it if you want
18:05 dukeleto brrt: the default load path should be reasonable most of the time
18:05 dukeleto brrt: also, the parrot community is really excited to see mod_parrot live again! Keep up the good work and don't hesitate to ask as many questions as you need
18:06 whiteknight nevermind, I can't test here
18:06 brrt :-) i'm happy your all excited
18:07 brrt no, the thing was, from mod_parrot i couldn't load 'os', or any other lib for that matter
18:07 whiteknight NotFound: Sorry, I can't test it. My setup won't link and I can't figure it out
18:07 brrt (and if i recall correctly, couldn't load the compiler, either)
18:10 dalek rakudo/qrpa: 80d406d | pmichaud++ | src/ (3 files):
18:10 dalek rakudo/qrpa: QRPA:  Update binder to know about QRPA as well as RPA.
18:10 dalek rakudo/qrpa: Now almost everything passes with the simple nqp::qlist change,
18:10 dalek rakudo/qrpa: now to spread it more widely throughout List and ListIter
18:10 dalek rakudo/qrpa: and see if anything breaks.
18:10 dalek rakudo/qrpa: review: https://github.com/rakudo/rakudo/commit/80d406de39
18:10 brrt and another thing, i want to figure out how doable it is to read the c structs from the parrot interpreter, as opposed to accessing parrot pmcs from the c layer
18:11 brrt i believe there is an unmanagedstruct pmc?
18:11 brrt that sounds usable
18:13 brrt because if it is, i could pass a (wrapped) pointer to the function, and extract all information from within parrot, which would probably be easier
18:13 dalek m1: ce5ec11 | kjs++ | m1_ (2 files):
18:13 dalek m1: x[42] = 4 and x = y[42] seems to work now. kinda.
18:13 dalek m1: review: https://github.com/parrot/m1/commit/ce5ec11634
18:14 kjs left #parrot
18:14 whiteknight brrt: https://github.com/parrot/parrot/​blob/master/src/embed/api.c#L664
18:15 brrt i'm going to toy with that a bit
18:15 whiteknight I don't think those particular APIs are used anywhere, so if you need changes or additions let me know
18:17 dukeleto brrt: there is a ParrotInterp PMC, i believe. But you should listen to whiteknight++
18:17 dukeleto brrt: i am a bit more familiar with the old embed API, which I used to write PL/Parrot http://pl.parrot.org
18:18 whiteknight dukeleto: hardly an API at all, just "all the functions we were exporting from libparrot"
18:18 dukeleto brrt: it is bitrotten now, waiting to be ported to the new embed api
18:18 brrt oh, yay :-)
18:18 brrt something for after the summer
18:18 dukeleto yes, calling it an API is a dis-service to acronym API
18:18 * brrt is a bit of a postgres fan
18:19 dukeleto brrt: awesome! I had to reverse engineer the pg PL api to make PL/Parrot.
18:20 dalek rakudo/qrpa: 2ef6948 | pmichaud++ | src/core/List (2 files):
18:20 dalek rakudo/qrpa: Migrate more nqp::list -> nqp::qlist for testing.
18:20 dalek rakudo/qrpa: review: https://github.com/rakudo/rakudo/commit/2ef6948355
18:20 dukeleto brrt: when it finally started to work, it was one of the best "my god, it finally works" moments I had ever felt. Rakudo Perl 6 even worked at some point, but it moves fast and that is no longer the case.
18:21 dukeleto brrt: i.e. PL/Rakudo worked. I could create perl 6 grammars in stored procedures written in rakudo
18:21 brrt nice
18:28 mtk joined #parrot
18:28 NotFound Stupid idea of the day: store pbc files in blobs in a database and load modules from it. No need for a filesystem!
18:30 NotFound You can run an absolutely chroot jailed parrot that way.
18:30 not_gerd NotFound: no new failures on pbc_to_exe_winxed with MinGW-w64
18:31 NotFound not_gerd: That build uses resources or generated C data?
18:34 not_gerd NotFound: What do you mean? I just checked out the branch and did the ususal configure, make, make test
18:36 NotFound not_gerd: some platform generate the content of the pbc as C code, other use a windows resoure compiler to insert it in the executable.
18:36 NotFound Look at the generated C to see what it does.
18:38 not_gerd it generated C code, ie the C files contain `const unsigned char program_code[]`
18:38 brrt hey, i can't seem to call get-pmc on a parrotinterpreter instnance
18:38 dalek nqp/altnfa: 51c3726 | jnthn++ | src/ops/nqp.ops:
18:38 dalek nqp/altnfa: Add an op for pushing a label onto a label stack.
18:38 dalek nqp/altnfa: review: https://github.com/perl6/nqp/commit/51c372640f
18:38 dalek nqp/altnfa: fbb1811 | jnthn++ | src/QRegex/Cursor.nqp:
18:38 dalek nqp/altnfa: Use NFA run results to push marks for possible branches onto the bstack.
18:38 NotFound Yeah, I think it does the other way only with msvc.
18:38 dalek nqp/altnfa: review: https://github.com/perl6/nqp/commit/fbb1811f5d
18:38 dalek nqp/altnfa: c774ec8 | jnthn++ | src/QAST/Compiler.nqp:
18:38 dalek nqp/altnfa: Update QAST::Compiler's alt handling to use LTM. The NQP it builds will actually parse enough to try an 'aa' ~~ /a|\w+/ style example and get it right! However, it chokes right after a semicolon...thus failing all the tests.
18:38 dalek nqp/altnfa: review: https://github.com/perl6/nqp/commit/c774ec8b85
18:41 whiteknight brrt++
18:41 brrt yay, karma :-)
18:42 brrt over at perl6, i asked the parrot question: how do i use a VTABLE method
18:42 brrt or, how do i get the args from the ParrotInterpreter
18:42 whiteknight what args?
18:42 moritz brrt: there are usually opcodes that trigger a vtable
18:43 moritz brrt: which one in particular are you interested in?
18:43 brrt i want to know what in what path the (regular) parrot interpreter looks for its libraries
18:43 brrt so i can make mod_parrot look in the same places
18:44 dalek winxed: 9b4a167 | NotFound++ | winxedst (2 files):
18:44 dalek winxed: experimental syntactic sugar for var declaratios initialized with new
18:44 brrt so it can loadlib() a bit more succesfully than it does now
18:44 dalek winxed: review: https://github.com/NotFoun​d/winxed/commit/9b4a167827
18:45 brrt oh, wait, i see already
18:45 whiteknight NotFound: ooh shiney. You have an example of the new syntax?
18:45 NotFound whiteknight: coming....
18:46 brrt VTABLES are a way to implement polymorphic instructions
18:46 brrt rather than polymorphic methods
18:46 whiteknight brrt: Think about vtables as being the absolute lowest level of interaction with a PMC. Lower than the user or the HLL typically deals with directly
18:47 NotFound whiteknight: the one for multi was done a few commits ago.
18:48 dalek winxed: 0fc94af | NotFound++ | winxedst2.winxed:
18:48 dalek winxed: use the new var initializer syntax in a bunch of places
18:48 dalek winxed: review: https://github.com/NotFoun​d/winxed/commit/0fc94afcbf
18:49 whiteknight oh that's nice
18:50 dukeleto brrt: for some light reading on PMCs and VTABLEs, see : https://github.com/leto/presentations/blob/master/​2011/YAPCNA/visual_intro_parrot/pres.pdf?raw=true
18:50 NotFound Winxed is becoming the language with the big abuse of ':'
18:51 dukeleto NotFound: sexy, but i can see it being confusing to new-comers. As long as it has good documentation, I like it :)
18:54 brrt dukeleto: thx
18:54 NotFound dukeleto: yeah, is a lot less javascriptish, but I think that the lack of ambiguity compensates.
18:59 alester joined #parrot
19:05 not_gerd bye, #parrot
19:06 not_gerd left #parrot
19:32 kjs joined #parrot
19:38 brrt oh, i can find out the load path by parrot_config versiondir
19:39 brrt as in: parrot_config libdir . parrot_config versiondir
19:57 dalek mod_parrot: e2988b7 | (Bart Wiegmans)++ | / (5 files):
19:57 dalek mod_parrot: Smallish fixes
19:57 dalek mod_parrot: review: https://github.com/bdw/mod​_parrot/commit/e2988b7297
19:57 dalek mod_parrot: 4c9a7a5 | (Bart Wiegmans)++ | / (10 files):
19:57 dalek mod_parrot: Merge branch 'master' of git://github.com/bdw/mod_parrot
19:57 dalek mod_parrot:
19:57 dalek mod_parrot: Conflicts:
19:57 dalek mod_parrot: mod_parrot_run.c
19:57 dalek mod_parrot: review: https://github.com/bdw/mod​_parrot/commit/4c9a7a5320
19:57 dalek mod_parrot: 7c91e30 | (Bart Wiegmans)++ | / (3 files):
19:57 dalek mod_parrot: Some documentation and todos. This was a figuring-stuff-out day
19:57 dalek mod_parrot: review: https://github.com/bdw/mod​_parrot/commit/7c91e3021c
19:57 brrt left #parrot
20:52 crab2313 joined #parrot
20:58 pmichaud okay, I'm stumped on a PMC issue
20:58 pmichaud I'm writing a custom RPA class for NQP and Rakudo.
20:59 pmichaud However, doing   $P0 = $P1[$I0]   on the custom RPA class seems to be about 20%-33% slower than on the built-in RPA
20:59 pmichaud here are the relevant sources:
21:00 pmichaud http://gist.github.com/2855120  # parrot's RPA get_pmc_keyed_int
21:01 pmichaud http://gist.github.com/2855123  # my PMC's  (QRPA)  get_pmc_keyed_int
21:01 pmichaud http://gist.github.com/2855126  # sample driver program and timings
21:02 pmichaud anyone have any ideas or suggestions why QRPA is so much slower than RPA in this instance?
21:02 brambles joined #parrot
21:05 perlite_ joined #parrot
21:05 NotFound pmichaud: maybe is the resizing and not keyed access itself?
21:05 pmichaud there's no resizing taking place in the loops
21:05 pmichaud I'm just looking up the same element one million times
21:06 PerlJam pmichaud: what does PARROT_QRPA(SELF) do exactly?
21:06 pmichaud it returns the underlying struct holding SELF's attributes
21:06 pmichaud #define PARROT_QRPA(o) ((Parrot_QRPA_attributes *) PMC_data(o))
21:11 PerlJam my only guess would be the "extra" dereferencing that QRPA does that RPA doesn't
21:11 pmichaud ..."extra dereferencing"?
21:11 PerlJam qrpa->slots vs data[key] for instance.
21:12 PerlJam Basically, I just counted ->
21:12 pmichaud well, the equivalent -> comes from         data = PMC_array(SELF);
21:12 pmichaud in the RPA case
21:12 pmichaud i.e, PMC_array(SELF is defined as
21:12 NotFound Now that I look at it, the RPA version uses access data[key] two times, but probably the optimizer get rid of it.
21:12 pmichaud #define PMC_array(x)     ((Parrot_ResizablePMCArray_attributes *)PMC_data(x))->pmc_array
21:17 NotFound pmichaud: have you double checked that get_pmc_keyed_int is called directly. Any pitfall in the PMC preprocessor and it may be calling get_pmc_keyed instead.
21:18 dalek rakudo/qrpa: 138fcb2 | pmichaud++ | src/pmc/qrpa.pmc:
21:18 dalek rakudo/qrpa: QRPA:  Try to make get_pmc_keyed_int as fast as RPA's, fail so far.
21:18 dalek rakudo/qrpa: review: https://github.com/rakudo/rakudo/commit/138fcb25c4
21:19 pmichaud NotFound: ah, that's a good point.  One second.
21:20 pmichaud I commented out VTABLE get_pmc_keyed in QRPA (and it has no parent), and the z.pir test program still runs, with same difference in timing
21:21 pmichaud so, no, get_pmc_keyed isn't being invoked here.
21:21 PerlJam pmichaud: have you changed the order of the runs so that the rpa runs first?
21:21 pmichaud PerlJam: yes, but I can do it again.
21:23 NotFound Even better, use the same loop for both.
21:24 pmichaud ...same loop for both?
21:24 pmichaud you mean, as in a separate sub?
21:24 pmichaud okay
21:24 NotFound In a sub, or with a convoluted goto.
21:27 pmichaud http://gist.github.com/2855224  # as a sub, and increasing N to 20000000
21:29 NotFound I don't see any reason for the difference.
21:33 kid51 joined #parrot
21:35 PerlJam pmichaud: Is the timing difference still there when you try to access an element that doesn't exist?
21:36 pmichaud note that QRPA is a dynpmc and RPA isn't, if that might explain anything.
21:36 pmichaud PerlJam: I can check... just a sec
21:37 pmichaud rpa[$I0] = 0.612705945968628
21:37 pmichaud qrpa[$I0] = 0.790001153945923
21:41 NotFound Unless the dynpmc gets compilled with different options, there shouldn't be any difference. Is all getting a function pointer from the vtable and call it.
21:42 pmichaud for reference, the full code for QRPA is at   https://github.com/rakudo/raku​do/blob/qrpa/src/pmc/qrpa.pmc
21:42 pmichaud (there may still be other unrelated bugs present; I'm currently just testing to see if I can get a speed win for Rakudo.)
21:44 NotFound pmichaud: the only difference I can see is the order of the attributes. In FixedPMCArray, and the in Resizable, pmc_array is the second.
21:46 NotFound Shouldn't be important, but maybe there are some wizardry.
21:46 pmichaud moving it to first or second position doesn't seem to affect the timings at all
21:56 NotFound pmichaud: there is a thing you can try: drop the local variable elems.
21:58 pmichaud NotFound: just use qrpa->elems in each case?
21:58 NotFound Is the only significant difference between the two versions.
21:58 NotFound pmichaud: yeah
21:59 NotFound Or make it const.
21:59 pmichaud eliminating elems didn't change the timings
21:59 pmichaud rpa[$I0] = 0.627300977706909
21:59 pmichaud qrpa[$I0] = 0.809339046478271
21:59 aloha (parrot/parrot) Issues reopened : 642 (Configure.pl allows sizeof(INTVAL) != sizeof(void *), but parrot requires them to be equal.) by  : https://github.com/parrot/parrot/issues/642
21:59 pmichaud I'll try adding it to parrot locally as a non-dynpmc and see what happens.
22:00 NotFound Good idea.
22:00 pmichaud but, that'll have to occur after dinner
22:01 NotFound Bon appetit,
22:08 dalek parrot: db9fc12 | jkeenan++ | config/auto/sizes.pm:
22:08 dalek parrot: Remove unused subroutine _find_type_ge() per discussion with Gerhard R.
22:08 dalek parrot: review: https://github.com/parrot/parrot/commit/db9fc1209d
22:11 pmichaud oh!  perhaps the headerizer  makes a difference here somewhere?
22:12 pmichaud rpa has been headerized, qrpa hasn't (afaik)
22:13 NotFound I don't think it will make any difference here.
22:14 NotFound The functions declarations are aleady generated in the .c by the PMC processor.
22:20 travis-ci joined #parrot
22:20 travis-ci [travis-ci] parrot/parrot#396 (master - db9fc12 : jkeenan): The build was broken.
22:20 travis-ci [travis-ci] Change view : https://github.com/parrot/par​rot/compare/e036f5b...db9fc12
22:20 travis-ci [travis-ci] Build details : http://travis-ci.org/parrot/parrot/builds/1503600
22:20 travis-ci left #parrot
22:35 whiteknight joined #parrot
22:45 dalek nqp/altnfa: ddf6d6b | jnthn++ | src/NQP/Grammar.pm:
22:45 dalek nqp/altnfa: eat_terminator needs sequential alternation (STD has it that way too; vaguely reassuring that we also need it now we have LTM for alternations).
22:45 dalek nqp/altnfa: review: https://github.com/perl6/nqp/commit/ddf6d6bc4d
22:45 dalek nqp/altnfa: bb0350f | jnthn++ | src/QAST/Compiler.nqp:
22:45 dalek nqp/altnfa: Don't leave leftovers on the bstack after an alternation.
22:45 dalek nqp/altnfa: review: https://github.com/perl6/nqp/commit/bb0350f710
22:45 dalek nqp/altnfa: dc8561c | jnthn++ | src/QRegex/ (2 files):
22:45 dalek nqp/altnfa: We sometimes accidentally lost alternation branches if we could not build an NFA for them. Make sure we don't do this.
22:45 dalek nqp/altnfa: review: https://github.com/perl6/nqp/commit/dc8561c9d6
22:48 whiteknight What does the QRPA type do that Parrot's built-in type doesn't do?
22:50 pmichaud much faster shift, unshift, and splice operations
22:51 pmichaud Parrot's shift is O(n), QRPA's is O(1)
22:52 pmichaud and since iterators and lazy lists involve a ton of shifting, having a fast shift is fairly important
22:54 whiteknight pmichaud: I'm not entirely happy with our array types, if you have algorithmic improvements to recommend I would be happy to see them integrated
22:54 pmichaud I considered trying to patch into FPA and RPA, but the changes would end up being a bit to radical, especially if anyone derives from those types (as Rakudo once did)
22:54 pmichaud *too radical
22:55 whiteknight I think that RPA probably needs a "radical" overhaul eventually anyway
22:56 pmichaud well, Parrot can certainly adopt QRPA as a core type then :)
22:56 pmichaud at least, as soon as I figure out why the $@**!$ it's slower than RPA, which currently makes no sense
22:57 whiteknight With all we're planning to steal from NQP in the near- and mid-term, we're going to have to rename it
22:57 whiteknight not-quite-parrot
22:58 pmichaud @family here wants to go out to a movie tonight, though, so it'll likely be late tonight or tomorrow sometime before I can finish my tests
22:58 whiteknight what movie?
22:58 pmichaud Avengers
22:59 whiteknight I saw that last friday. Very pleased
23:00 whiteknight pmichaud: We should probably touch base at some point soonish to talk about what Parrot can do better for NQP/Rakudo
23:00 whiteknight we haven't had such a meeting in a while and I want to make sure we're moving in the right directions
23:01 pmichaud whiteknight: going to yapc?  are any parrot folks going?
23:01 pmichaud I know that particle++ is going
23:01 whiteknight I'm not going to be at yapc, unfortunately. I wish I could
23:01 kid51_ joined #parrot
23:01 pmichaud oh, and kid51++ is speaking there
23:01 whiteknight oh yes, kid51++
23:02 pmichaud and I think allison++ is expected to be there also
23:02 whiteknight darn, I really wish I could make it
23:03 pmichaud anyway, yes -- we can see about scheduling an online chat or something soon
23:03 pmichaud I'll poll the other rakudo/nqp devs and see if they have any ideas
23:04 whiteknight We're pushing to get threading merged soonish. IO is getting a be re-do. We've also got mod_parrot as a GSOC project moving at a good clip and Rakudo support there will be something of a priority
23:07 pmichaud I guess we still have to do --optimize with Configure.pl?
23:07 pmichaud I thought that was defaulted already or something
23:08 whiteknight I think so, yes
23:08 whiteknight For the common case, perhaps that should be default
23:09 pmichaud ummmm... hmm
23:10 pmichaud http://gist.github.com/2855681   # test program I'm running
23:10 pmichaud when run from the parrot repo (and with QRPA as a "built-in" PMC type in parrot/src/pmc), I get
23:10 pmichaud pmichaud@kiwi:~/p6/parrot$ ./parrot z2.pir rpa[$I0] = 3.11733913421631
23:11 pmichaud qrpa[$I0] = 2.88110089302063
23:11 pmichaud when I run it from the rakudo repo, with QRPA as a dynpmc
23:11 pmichaud I get
23:11 pmichaud pmichaud@kiwi:~/p6/rakudo-qrpa$ install/bin/parrot z2.pir rpa[$I0] = 0.68439507484436
23:11 pmichaud qrpa[$I0] = 0.730257987976074
23:12 pmichaud ...I'm totally confused.
23:12 pmichaud First, by the fact that qrpa (dynpmc) is slower than rpa
23:12 pmichaud but more confused by the fact that the parrot repo version takes ~3 seconds and the one built for rakudo takes <1 sec
23:12 whiteknight besides cache effects there shouldn't be a performance penalty for dynpmc
23:12 pmichaud maybe I didn't rebuild parrot... checking
23:13 pmichaud I agree there shouldn't be performance penalty for dynpmc, but it's pretty consistent
23:13 whiteknight 'tis quite a conundrum. I'll have to stare at it for a while
23:14 pmichaud I've got a QRPA in my local parrot repo as a builtin now that I can test.  Then I'll do a QRPA dynpmc as a test also.
23:14 pmichaud so we can do a good comparison.  I might create a qrpa branch in the parrot repo for the testing so others can play too.
23:14 whiteknight Yeah, good idea. If you think it has enough utility I'm definitely in favor of having it be in core
23:15 pmichaud okay, --optimize improved things.  Now I get
23:15 pmichaud rpa[$I0] = 0.658792972564697
23:15 pmichaud qrpa[$I0] = 0.609246969223022
23:15 pmichaud so, when QRPA is a core PMC, it's faster than RPA, which is what I would expect.
23:16 pmichaud we're leaving here now, so I'll try the dynpmc later tonight or tomorrow afternoon
23:16 whiteknight okay, thanks
23:18 dalek rakudo/altnfa: f335c7f | jnthn++ | src/Perl6/Grammar.pm:
23:18 dalek rakudo/altnfa: Update a couple of places in the grammar that need || insted of |.
23:18 dalek rakudo/altnfa: review: https://github.com/rakudo/rakudo/commit/f335c7f2e0
23:18 dalek rakudo/altnfa: fb45990 | jnthn++ | src/Perl6/Grammar.pm:
23:18 dalek rakudo/altnfa: Add ident so we can LTM on it.
23:18 dalek rakudo/altnfa: review: https://github.com/rakudo/rakudo/commit/fb45990048
23:25 NotFound I usually build with --optimize=-O3
23:29 whiteknight I build with optimizations off, so there are no surprises when debugging
23:30 NotFound I tend to do fprintf stderr debugging
23:35 whiteknight I prefer loading up GDB, not knowing what commands to use, and saying curse words
23:40 whiteknight alias gdb=rm blib/lib/*.py*; gdb
23:40 whiteknight this is absurd
23:44 dalek parrot/whiteknight/io_cleanup1: f9db036 | Whiteknight++ | src/io/ (7 files):
23:44 dalek parrot/whiteknight/io_cleanup1: Fix the way we do encodings. For read if the FileHandle doesn't have one specified, fall back to the platform default encoding. For writes we fall back to the binary encoding. This fixes some of the build errors I saw earlier, is much closer to the weird way it used to work, and gets us much further in the build
23:44 dalek parrot/whiteknight/io_cleanup1: review: https://github.com/parrot/parrot/commit/f9db03643c
23:44 dalek parrot/whiteknight/io_cleanup1: f77b281 | Whiteknight++ | src/io/utilities.c:
23:44 dalek parrot/whiteknight/io_cleanup1: Make sure to pass the correct flags to re-refix the build
23:44 dalek parrot/whiteknight/io_cleanup1: review: https://github.com/parrot/parrot/commit/f77b2816da
23:46 whiteknight my recipe for git commit messages: 3 parts description to 1 part snark
23:49 kid51_ whiteknight: ping
23:49 whiteknight pong
23:49 kid51_ On that gdb pretty-printer stuff.
23:50 kid51_ I've never used it myself, so I don't know how it manifests itself, so I don't know what you prefer.
23:50 whiteknight kid51_: There are several *.py files that get copied to the blib/lib directory. I want them to not be there
23:51 kid51_ bbial
23:51 whiteknight so that's the symptom and the way to test a solution: Just make sure that directory doesn't contain any *.py files
23:54 whiteknight I don't know exactly how those things get loaded into gdb when I run it.

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

Parrot | source cross referenced