Parrot 4.4.0 "Banana Fanna Fo Ferret" | parrot.org | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC
Set by moderator on 15 May 2012.
dukeleto NotFound: does that mean you want testing on clang? 00:09
whiteknight blah. I hate these stupid python gdb extensions more than anything 00:11
NotFound dukeleto: not a bad idea
whiteknight Every time I try to debug parrot I have to rm blib/lib/*.py* 00:13
and that's a nuisance at best
dukeleto whiteknight: that sounds no bueno
whiteknight: i have never run into that. exactly what happens?
whiteknight I don't know where those stupid things get loaded, and I have no idea how to turn it off
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
and you get a python exception if the string has a "binary" encoding, or a NULL one
and in those cases I can't look at the STRING at all, pretty or not
NotFound A debugger that fails with something unexpected kinda breaks the purpose of a debugger. 00:25
dalek rrot/notfound/pbc_to_exe_winxed: c7e2a4d | NotFound++ | / (3 files):
update the infrastructute to build pbc_to_exe from the winxed source
00:26
NotFound Now it's a bit easier to test. 00:27
dalek rrot/whiteknight/io_cleanup1: ad75883 | Whiteknight++ | / (7 files):
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
aloha (parrot/parrot) Issues opened : 777 (GDB pretty printers should be optional) by Whiteknight : github.com/parrot/parrot/issues/777 00:41
01:02 Jashwanth joined
Jashwanth dukeleto:I think I did the same thing 01:06
01:11 davidfetter joined
whiteknight Encoding handling in FileHandle is messed up 01:13
it stores a string name for encoding, which means on every single input operation we need to look up the encoding by name
instead of doing something sane like, say, storing the encoding pointer directly 01:14
this subsystem has so much fail, and I have so little time
dalek rrot/notfound/pbc_to_exe_winxed: 03d5e8e | NotFound++ | tools/dev/pbc_to_exe.winxed:
minor improvements in the converted pbc_to_exe:

  - define a const for the read buffer size
  - add a helper routine for spawnw
01:19
rrot/whiteknight/io_cleanup1: 452cfd1 | (Bart Wiegmans)++ | CREDITS:
Added myself to credits
01:38
rrot/whiteknight/io_cleanup1: 0d41939 | moritz++ | CREDITS:
Merge pull request #775 from bdw/master

Add my name
rrot/whiteknight/io_cleanup1: 2ec5d01 | benabik++ | t/pmc/bignum.t:
Fix warning in t/pmc/bignum.t for GMP 5

This code was trying to warn about GMP prior to 4.1.4, but instead was warning about any version before x.1.4. I rearranged the logic to make the intent more clear and to not warn about GMP 5+.
rrot/whiteknight/io_cleanup1: 18d0f30 | jkeenan++ | frontend/parrot2/prt0.pir:
Update copyright to 2012.
rrot/whiteknight/io_cleanup1: d70e3d9 | Whiteknight++ | / (3 files):
Merge branch 'master' into whiteknight/io_cleanup1
rrot/whiteknight/io_cleanup1: efdbe25 | Whiteknight++ | src/io/ (4 files):
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
rrot/whiteknight/io_cleanup1: 05df5a6 | Whiteknight++ | src/io/ (3 files):
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.
02:26 alvis joined
dalek p: 0631f83 | duff++ | src/PAST/NQP.pir:
Add nqp::stat
02:28
p: 0d86ce0 | duff++ | src/PAST/NQP.pir:
Add nqp::does
p: 5f23136 | duff++ | src/PAST/NQP.pir:
Add nqp::find_method
p: 831cc97 | duff++ | src/PAST/NQP.pir:
Add nqp::isa
p: a60e457 | duff++ | src/PAST/NQP.pir:
Add nqp::new
p: 4c4fa49 | duff++ | src/PAST/NQP.pir:
Add nqp::open
p: 730aea9 | duff++ | src/PAST/NQP.pir:
Add nqp::find_not_cclass
p: 07926fd | duff++ | src/PAST/NQP.pir:
Add nqp::rindex
p: 2d94351 | duff++ | src/PAST/NQP.pir:
Add nqp::typeof
p: 6ae28d9 | duff++ | src/PAST/NQP.pir:
Add nqp::defined
kudo/nom: 4aea135 | duff++ | src/ (2 files):
s/pir::stat\\w+/nqp::stat/g
kudo/nom: f4357fd | duff++ | src/ (4 files):
Use nqp::does
kudo/nom: c8d7cd9 | duff++ | src/ (8 files):
Use nqp::find_method
kudo/nom: dd145cb | duff++ | src/ (5 files):
Use nqp::isa
kudo/nom: ef161f7 | duff++ | src/ (3 files):
Use nqp::open
kudo/nom: ebd0e6c | duff++ | src/core/Str.pm:
Use nqp::find_not_cclass
kudo/nom: dbe1494 | duff++ | src/core/Cool.pm:
use nqp::rindex
kudo/nom: e4b9254 | duff++ | src/core/ (2 files):
Use nqp::throw
kudo/nom: d3c3756 | duff++ | src/core/Exception.pm:
Use nqp::rethrow
kudo/nom: 930a1a5 | duff++ | src/core/control.pm:
Use nqp::sleep
kudo/nom: 5480fcb | duff++ | src/ (12 files):
Use nqp::defined
kudo/nom: 0276a44 | duff++ | tools/build/NQP_REVISION:
Bump NQP version to get new nqp:: ops
03:18 Jashwanth_ joined 03:44 japhb joined
dalek kudo/nom: 696a71d | duff++ | docs/ (2 files):
Start on release announcement for June
04:06
05:10 woosley left, woosley joined
dalek kudo/qrpa: 6e7868e | pmichaud++ | / (2 files):
QRPA: Add init, destroy, mark, elements, unshift_pmc, and some native variants.
05:24
kudo/qrpa: c42e429 | pmichaud++ | / (2 files):
Add defined_*, exists_*, and unshift_* for native types.
kudo/qrpa: 07ced37 | pmichaud++ | / (2 files):
QRPA: Add clone, get_iter, splice.
kudo/qrpa: f57053a | pmichaud++ | src/pmc/qrpa.pmc:
Add some useful optimizations.
kudo/nom: 50b77f3 | duff++ | src/core/Mu.pm:
Give TimToady .take
05:45
06:32 fperrad joined
dalek p: b1fb4b3 | kboga++ | / (16 files):
pir::defined to nqp::defined, pir::find_not_cclass__Iisii to nqp::findnotcclass, pir::find_method__PPs to nqp::findmethod
06:45
07:02 cotto joined 07:03 brrt joined
brrt morning! 07:05
aloha (parrot/parrot) Issues opened : 778 (Move os.pmc) by bdw : github.com/parrot/parrot/issues/778 07:34
07:51 woosley joined
brrt oh, btw, i should probably want to merge OS and File 07:57
brrt thinks its bad practice to have such redundancy 07:58
08:02 p6eval joined 08:07 lucian joined 08:37 Khisanth joined 09:13 kjs joined 09:31 kjs_ joined 09:36 kjs_ joined 09:38 kjs joined 09:50 kjs_ joined 09:54 kjs joined 09:59 kjs_ joined 10:10 kjs_ joined, woosley left 10:23 JimmyZ joined
dalek Heuristic branch merge: pushed 20 commits to parrot by zhuomingliang 10:31
10:35 jashwanth joined
aloha (parrot/parrot) Issues closed : 378 (Add UINTPTR type into parrot.) by bacek : github.com/parrot/parrot/issues/378, 236 (config/auto/memalign.pm is broken) by gerdr : github.com/parrot/parrot/issues/236, 232 (config/auto/sizes/test_c.in uses wrong format specifier to print sizes) by 10:35
..gerdr : github.com/parrot/parrot/issues/232, 642 (Configure.pl allows sizeof(INTVAL) != sizeof(void *), but parrot requires them to be equal.) by doughera : github.com/parrot/parrot/issues/642, 704 (cleanup and auto::sizes refactor) by gerdr :
..github.com/parrot/parrot/issues/704, 631 (Add Configure.pl check for <stdint.h>) by doughera : github.com/parrot/parrot/issues/631
10:36 kjs joined
dalek : 609fbac | kjs++ | m1_ (5 files):
assign statement's lhs is of type m1_object. this is preparation for adding another parameter to gencode_obj
10:42
brrt hey kjs 10:45
where are you from?
kjs hi brrt
NL 10:46
hallo :-)
brrt yes, i imagined :-) 10:47
me, too, groningen here
kjs i's the name that gives it away ;-)
dalek : 1e5ea7b | kjs++ | m1_ (2 files):
add a is_target flag to function. do it in code, not the data structure. easier and saves ram.
10:48
kjs ah i'm from there as well
brrt quite
oh, really?
stadjer?
kjs but i dont live there.. 10:49
brrt ah, i see
shame
kjs 20 min from city
brrt not baflo, right? :-p
kjs come back every now and then
ha ha no
middelstum
close ;-) 10:50
brrt close enough
connected to the university or something?
10:51 travis-ci joined
travis-ci [travis-ci] parrot/parrot#395 (master - e036f5b : Jimmy Zhuo): The build was fixed. 10:51
[travis-ci] Change view : github.com/parrot/parrot/compare/a......e036f5b
[travis-ci] Build details : travis-ci.org/parrot/parrot/builds/1497453
10:51 travis-ci left
kjs used to 10:53
i had a supervisor there.
brrt i see
kjs you in rug? 10:54
brrt yes, biology 10:56
kjs ah. i did cs there
brrt in the old building probably? 10:57
dalek d_parrot: e1eaa3d | (Bart Wiegmans)++ | / (4 files):
Updated building on more different systems
10:58
d_parrot: 395ced7 | (Bart Wiegmans)++ | / (8 files):
Extended mod_parrot.winxed. Very unusable commit
JimmyZ kjs: ./m1 obj.m1 segfault
kjs ugh
JimmyZ: thanks for testing. I knew it was too simple.
brrt: yes, but i've also been to the new one. 10:59
JimmyZ: have you done make clean? 11:00
JimmyZ: which code does it choke on? 11:01
11:01 crab2313 joined
kjs oh obj.m1 i see now. 11:01
JimmyZ 0x0804c1ab in yyget_lineno (yyscanner=0x8052a59) at m1lexer.c:2614 11:02
brrt leaves for lunch
11:02 brrt left
kjs did you do make clean? 11:02
JimmyZ kjs: yeah
kjs works here..
was it good before my changes today?
JimmyZ kjs: nope 11:03
kjs oh ok
JimmyZ #0 0x0804c1ab in yyget_lineno (yyscanner=0x8052a59) at m1lexer.c:2614
#1 0x0804c7e5 in expression (comp=0xbffff0d8, type=EXPR_VARDECL) at m1_ast.c:46
kjs thanks. i'll have a look 11:07
dalek : 569f83f | kjs++ | m1_ (2 files):
add a comment. do some work on object indexing.
11:08
: 1672679 | kjs++ | / (3 files):
few changes to tests.
: df0035a | kjs++ | m1_ast.c:
add a few asserts.
11:10
kjs can you try again with latest change? added a few asserts.
ugh. M1 needs a test suite. 11:11
JimmyZ: which version of flex do you have? 11:12
(flex ---version)
eh, --version
JimmyZ flex 2.5.35 11:13
kjs ok that's alright then
bison --version?
JimmyZ bison (GNU Bison) 2.5 11:14
kjs ok. i have 2.3
but wouldnt expect any problems really. i think there were some chnages to the api for making reentrant parsers.
dalek : becb578 | jimmy++ | obj2.m0:
removed obj2.m0
11:17
: 7f997bc | kjs++ | m1_main.c:
add a check for argc in main. removes warning of unused param and also for safety.
11:19
: 4a39ba5 | kjs++ | m1_main.c:
fix problem reported by JimmyZ++.
11:31
: 6a83d7f | kjs++ | m1_gencode.c:
more work on arrays. may have to rethink code for assignments.
kjs JimmyZ: i found the problem , it's fixed now.
moritz how fast is m0? 11:32
JimmyZ I think It's very fast, but goto_chunk will be slow 11:33
kjs moritz: cant realy check at the moment, as there's no big programs 11:34
also the interp is implemented as a switch statement which is not the best approach
but goal is to JIT it
JimmyZ hmm, how can m1 call a c std function? 11:35
kjs havent looked into that
suggestions?
you mean to implement FFI
JimmyZ nope
native call
kjs into a c function 11:36
not sure how to do that yet
probably need syntax with special keyword to make it clear
JimmyZ kjs++, it got fixed! 11:40
kjs yes it was fairly simple and stupid really :-) 11:41
JimmyZ++ thanks for reporting (and testing!)
dalek kudo/qrpa: 02b5ec6 | pmichaud++ | src/Perl6/Actions.pm:
Add nqp::qlist() to obtain QRPA instead of RPA.
11:48
kudo/qrpa: f4373c6 | pmichaud++ | src/pmc/qrpa.pmc:
QRPA: Fix pointer typo in QRPA.clone.
: cb0e034 | kjs++ | m1_ (4 files):
add another stack for m1_regs. for use in code gen.
11:53
12:08 whiteknight joined
whiteknight good morning, #parrot 12:10
kjs good morning 12:11
JimmyZ whiteknight: good morning 12:12
whiteknight: how about removing gci_fill_params_reduce[2] and tt389_fix branch? 12:13
whiteknight JimmyZ: let me look at them first 12:20
dalek : 0c0f239 | kjs++ | m1_ (4 files):
use regstack for passing around m1_reg objects.
Coke gets pmc whiplash. 12:51
dalek kudo/qrpa: cf75879 | pmichaud++ | src/ops/perl6.ops:
QRPA: Update nqp::islist to be QRPA-aware.
12:54
13:13 Patterner joined
dalek kudo/qrpa: 725acab | pmichaud++ | / (2 files):
QRPA: Add QRPA.get_number().
13:24
kudo/qrpa: 94483a2 | pmichaud++ | / (2 files):
QRPA: Add QRPA.get_bool, get_bool and get_number tests.
13:25 kjs joined
dalek p: bfea0f7 | duff++ | / (15 files):
Use new nqp ops

nqp::defined, nqp::typeof, nqp::rindex, nqp::find_not_cclass, nqp::open, nqp::new, nqp::isa, nqp::find_method, nqp::does, nqp::stat
13:36
13:42 isBEKaml joined
isBEKaml good evening, #parrot! 13:43
13:47 whiteknight joined 13:49 jashwanth joined
tadzik hello isBEKaml 13:59
isBEKaml hey, tadzik - how goes bailador? :)
tadzik no new things, bu I have a talk accepted for FPW 2012 14:00
isBEKaml that's French Perl Workshop, right?
tadzik so I guess I'll have to write some new stuff to amuse people :)
right
isBEKaml great, post slides soon! tadzik++
tadzik journeesperl.fr/fpw2012/talk/4122
okay, expect them in July :P 14:01
isBEKaml congrats! that's only a month away. :) 14:02
tadzik don't scare me! :P
I have an exam session to pass too
isBEKaml Don't panic! Whatever happens, don't PANIC! 14:03
tadzik don't tempt me! :P
JimmyZ just segfault
isBEKaml :) 14:08
14:21 PacoAir joined
dalek kudo/qrpa: eadaa34 | pmichaud++ | src/pmc/qrpa.pmc:
QRPA: Restore the custom_mark_destroy flags that were in init(). Oops.
14:25
kudo/qrpa: c5b2ca2 | jnthn++ | src/binder/types.c:
Ensure the type mapper knows how to map a QRPA to Parcel.
14:33
nxed: 678cd52 | NotFound++ | winxedst2.winxed:
encapsulate get parameter multi type
14:36
isBEKaml hey, has anyone been able to compile parrot with clang?
whiteknight clang is the browser I use 14:37
er, compiler 14:38
I almost never use gcc anymore
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?
isBEKaml yes
whiteknight okay, what's the error in sprintf.c? 14:40
isBEKaml gist.github.com/2852607 14:42
whiteknight weird. Maybe we're missing an include somewhere?
Where is PARROT_VA_TO_VAPTR defined?
isBEKaml dunno, I'm guessing it has something to do Configure.pl skipping it. 14:43
let me run configure.pl again 14:44
btw, did you have to pass special flags other than cc to that script?
perl Configure.pl --prefix=$PWD --without-icu --cc=clang # any others? 14:46
moritz uhm 14:48
don't use $PWD as your prefix
isBEKaml moritz: so I can do "make install". nothing much in there, really.
moritz uhm, I thought parrot's sources were in $PWD? 14:49
I just think you can get some path clashes if you installing into the very source directory
isBEKaml yes, so far I haven't had a problem with it.
whiteknight: yep, auto::va_ptr -> gist.github.com/2852675 14:52
14:56 not_gerd joined
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
gist.github.com/2852706
isBEKaml not_gerd: I was just looking at that file. :) 14:58
not_gerd: btw, #if defined... (are they all right?)
not_gerd yes, that's fine 14:59
isBEKaml not_gerd: okay, I'll patch that in and see if it works.
not_gerd isBEKaml: mind you, that diff just fixed the configure probe - the actual macro definition needs to be adjusted as well 15:00
isBEKaml: config/gen/config_h/feature_h.in, line 67 15:02
isBEKaml not_gerd: well, it didn't fix config problem, either. :(
not_gerd isBEKaml: can you run with --verbose-step auto::va_ptr 15:04
sorry, --verbose-step=auto::va_ptr 15:05
dalek p: 69d548e | jnthn++ | / (17 files):
Toss various nqp:: ops that are too Parrot-specific.
15:07
isBEKaml gist.github.com/2852817 15:09
not_gerd: ^^
15:12 crab2313 joined
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
$(uname -a)
clang version 2.9 (tags/RELEASE_29/final) 15:14
not_gerd well, no wonder: that fix was for x86-64 and ppc 15:15
which means my guess as to what was wrong was incorrect :(
isBEKaml it works on x86_64? that's weird...
whiteknight that may be my problem 15:16
15:19 jashwanth joined
dalek p: 365eda1 | jnthn++ | src/HLL/Compiler.pm:
Toss a method that assumes Parrot namespaces, and is unused.
15:21
kudo/nom: abd4abf | jnthn++ | / (15 files):
Eliminate some uses of nqp:: opcodes that we've outlawed.
15:26
whiteknight jnthn: That's a weird commit. Aren't you moving in the opposite direction by replacing nqp:: ops with pir:: ones? 15:28
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::
(see backlog on #perl6)
not_gerd isBEKaml: no idea what's wrong 15:31
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?
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
then, PARROT_VA_TO_VAPTR gets defined accordingly (see config/gen/config_h/feature_h.in)
isBEKaml okay - VA_TYPE_REGISTER SEGV'd. I'll increase ulimit and try again 15:36
VA_TYPE_STACK threw up illegal instruction.
0x080483e5 in test0 () 15:37
Current language: auto; currently asm
that's with SEGV in gdb.
not_gerd on i686, VA_TYPE_STACK should work 15:38
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:39
(or not; need to think about that - anyway, VA_TYPE_STACK should work on i686) 15:40
dalek nxed: 3357c6a | NotFound++ | / (2 files):
new syntax for declaring multi parameter types
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
bye, #parrot 15:43
15:43 not_gerd left
isBEKaml not_gerd: okay, thanks for your help. I'll post more info if I get anything. 15:43
dalek p: d63dec6 | pmichaud++ | / (2 files):
Update notes about rejected nqp:: operations -- no functional changes.
15:45
kudo/nom: 0f9975c | jnthn++ | src/Perl6/World.pm:
Fix typo spotted by diakopter++.
15:47
kudo/nom: 1886ee9 | pmichaud++ | src/core/Parcel.pm:
Use nqp::shift($rpa) instead of $rpa.shift.
15:51
isBEKaml heh. Anyone familiar with x86 assembly? is there such a thing as a calll instruction? 16:01
I'm going over the differences in the generated assembly between gcc and clang. 16:02
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.
whiteknight: that may well be why I got SIGILL with VA_TYPE_STACK 16:04
dalek kudo/nom: 6365270 | jnthn++ | src/core/operators.pm:
Make let/temp cope sanely with temp'ing/let'ing the same variable twice.
16:07
16:12 dmalcolm joined
isBEKaml For anyone that can look over assembly and spot differences, here's the generated assembly from both clang and gcc: gist.github.com/2853291 16:18
dalek : 8b64e84 | kjs++ | m1_ (2 files):
converting from return values to explicit stack to move around regs.
16:19
rrot/threads: 58d737e | nine++ | src/alarm.c:
Reworked timer handling to fix a race

If after an alarm expires a new alarm was set to the exact same time (now) Parrot_alarm_runloop would not notice and still wait for new alarms without notifying any threads. This happened quite often on Windows because Parrot_floatval_time() gives only millisecond precision there which is an eternity for a processor.
This reworked version is no longer dependent on any precision.
16:34
rrot/threads: 4f8359f | nine++ | include/parrot/thr_windows.h:
Get Windows COND_TIMED_WAIT closer to POSIX semantics

The other part of the solution to the Windows timer problem
dukeleto nine++ # good commit messages 16:39
dalek rrot/threads: aad6ae6 | nine++ | t/pmc/task.t:
Activate t/pmc/timer.t on Windows since it actually passes
16:40
nine whiteknight: tests pass now for me on Windows :) 16:41
whiteknight really? Awesome 16:43
16:44 not_gerd joined
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?
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.
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 ;)
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:48
not_gerd my WIn64-build of clang cross-compiler via cygwin works with minor issues 16:50
some C++ stuff doesn't get linked correctly, but as I don't regularly do C++ and g++ works fine *shrugs* 16:51
cross-compile*d* 16:52
isBEKaml not_gerd: I have noticed that too a few times. they usually go away when I give -O switches. 16:53
not_gerd: without -O3, it segfaults. O3 on, it works. :/
whiteknight nine: I just got a config failure on the threads branch with mingw. 16:55
nine whiteknight: config failure? 16:56
16:56 jashwanth joined
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
when running perl t/src/threads_io.t, that is
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. 16:58
dalek : e1527b5 | kjs++ | m1_ (2 files):
more converting from implicit stack to explicit stack.
17:00
nine Ok, gotta run. Bye
not_gerd bye
dukeleto "Lua's virtual machine is register-based like Perl's Parrot and Android's Dalvik." -- www.technewsworld.com/story/Flame-T...75266.html
I give them a honorary mention for trying... 17:01
isBEKaml dukeleto: does that article talk about the recent flame virus?
dukeleto isBEKaml: yeah, it is mostly about that, with a side mention of Parrot 17:03
isBEKaml dukeleto: Oh, I see... 17:08
jashwanth ~~
whiteknight hello jashwanth 17:10
dukeleto jashwanth: hola 17:13
jashwanth: there you are!
jashwanth: i am reading your email response now
whiteknight miniparrot segfaults for me on win64 with nine's most recent threads branch
dukeleto jashwanth: i am confused. You still have exams? I thought they were over on wednesday
NotFound ~~ 17:22
Someone has tested the branch notfound/pbc_to_exe_winxed on windows? 17:23
17:31 brrt joined
dalek kudo/qrpa: e2a9ed3 | pmichaud++ | src/core/List.pm:
Switch List.gimme to initialize $!items with QRPA.
17:33
kudo/qrpa: 4fc8fa0 | pmichaud++ | src/core/Parcel.pm:
Use nqp::shift($rpa) instead of $rpa.shift().
17:34
dukeleto NotFound: doesn't seem like it yet. Perhaps asking some of the windows rakudo devs would be useful? 17:44
17:46 jashwanth joined
dalek p/altnfa: 32d6a49 | jnthn++ | src/QRegex/P6Regex/Actions.nqp:
Start saving per-alternation NFAs.
17:50
brrt dukeleto, how api.yaml set up?
dalek p/altnfa: 1aa896e | jnthn++ | src/QRegex/NFA.nqp:
Split merging part of mergesubrules out into mergesubstates.
p/altnfa: 72fc431 | jnthn++ | src/QRegex/Cursor.nqp:
Sketch out alternation NFA running.
NotFound tinking about merging anyway. That way it will be surely tested ;) 17:52
whiteknight notfound: I'm testing now 17:58
brrt hey, whiteknight :-)
whiteknight hello brrt
brrt i've read the comments on the pull requesr 18:01
18:01 contingencyplan joined
brrt how is api.yaml set up, and how should i edit it? 18:01
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
dukeleto brrt: it is just a simple way of keeping track of when user-visible stuff changes in parrot 18:03
brrt oh, ok
dukeleto brrt: like a pmc <---> dynpmc, a function signature changing, etc...
brrt: we have tools that read the yaml and can look for deprecated stuff/etc.
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
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
brrt bottom will do
dukeleto brrt: but the middle works too. If you put it somewhere in the middle, there is less of a chance of merge conflicts :)
brrt: and what exactly is your question about a load path? do you have a code example?
brrt: there is a default load path, and then you can add to it if you want 18:05
brrt: the default load path should be reasonable most of the time
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
whiteknight nevermind, I can't test here 18:06
brrt :-) i'm happy your all excited
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
brrt (and if i recall correctly, couldn't load the compiler, either)
dalek kudo/qrpa: 80d406d | pmichaud++ | src/ (3 files):
QRPA: Update binder to know about QRPA as well as RPA.

now to spread it more widely throughout List and ListIter and see if anything breaks.
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
i believe there is an unmanagedstruct pmc? 18:11
that sounds usable
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 : ce5ec11 | kjs++ | m1_ (2 files):
x[42] = 4 and x = y[42] seems to work now. kinda.
18:14 kjs left
whiteknight brrt: github.com/parrot/parrot/blob/mast...api.c#L664 18:14
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
dukeleto brrt: there is a ParrotInterp PMC, i believe. But you should listen to whiteknight++ 18:17
brrt: i am a bit more familiar with the old embed API, which I used to write PL/Parrot pl.parrot.org
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
brrt oh, yay :-)
something for after the summer
dukeleto yes, calling it an API is a dis-service to acronym API
brrt is a bit of a postgres fan
dukeleto brrt: awesome! I had to reverse engineer the pg PL api to make PL/Parrot. 18:19
dalek kudo/qrpa: 2ef6948 | pmichaud++ | src/core/List (2 files):
Migrate more nqp::list -> nqp::qlist for testing.
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.
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
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:28
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
NotFound not_gerd: That build uses resources or generated C data? 18:31
not_gerd NotFound: What do you mean? I just checked out the branch and did the ususal configure, make, make test 18:34
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
Look at the generated C to see what it does.
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
dalek p/altnfa: 51c3726 | jnthn++ | src/ops/nqp.ops:
Add an op for pushing a label onto a label stack.
p/altnfa: fbb1811 | jnthn++ | src/QRegex/Cursor.nqp:
Use NFA run results to push marks for possible branches onto the bstack.
NotFound Yeah, I think it does the other way only with msvc.
p/altnfa: c774ec8 | jnthn++ | src/QAST/Compiler.nqp:
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.
whiteknight brrt++ 18:41
brrt yay, karma :-)
over at perl6, i asked the parrot question: how do i use a VTABLE method 18:42
or, how do i get the args from the ParrotInterpreter
whiteknight what args?
moritz brrt: there are usually opcodes that trigger a vtable
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
so i can make mod_parrot look in the same places
dalek nxed: 9b4a167 | NotFound++ | winxedst (2 files):
experimental syntactic sugar for var declaratios initialized with new
18:44
brrt so it can loadlib() a bit more succesfully than it does now
brrt oh, wait, i see already 18:45
whiteknight NotFound: ooh shiney. You have an example of the new syntax?
NotFound whiteknight: coming....
brrt VTABLES are a way to implement polymorphic instructions 18:46
rather than polymorphic methods
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
NotFound whiteknight: the one for multi was done a few commits ago. 18:47
dalek nxed: 0fc94af | NotFound++ | winxedst2.winxed:
use the new var initializer syntax in a bunch of places
18:48
whiteknight oh that's nice 18:49
dukeleto brrt: for some light reading on PMCs and VTABLEs, see : github.com/leto/presentations/blob...f?raw=true 18:50
NotFound Winxed is becoming the language with the big abuse of ':'
dukeleto NotFound: sexy, but i can see it being confusing to new-comers. As long as it has good documentation, I like it :) 18:51
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
not_gerd bye, #parrot 19:05
19:06 not_gerd left 19:32 kjs joined
brrt oh, i can find out the load path by parrot_config versiondir 19:38
as in: parrot_config libdir . parrot_config versiondir 19:39
dalek d_parrot: e2988b7 | (Bart Wiegmans)++ | / (5 files):
Smallish fixes
19:57
d_parrot: 4c9a7a5 | (Bart Wiegmans)++ | / (10 files):
Merge branch 'master' of git://github.com/bdw/mod_parrot

Conflicts:
  \tmod_parrot_run.c
d_parrot: 7c91e30 | (Bart Wiegmans)++ | / (3 files):
Some documentation and todos. This was a figuring-stuff-out day
19:57 brrt left 20:52 crab2313 joined
pmichaud okay, I'm stumped on a PMC issue 20:58
I'm writing a custom RPA class for NQP and Rakudo.
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
here are the relevant sources:
gist.github.com/2855120 # parrot's RPA get_pmc_keyed_int 21:00
gist.github.com/2855123 # my PMC's (QRPA) get_pmc_keyed_int 21:01
gist.github.com/2855126 # sample driver program and timings
anyone have any ideas or suggestions why QRPA is so much slower than RPA in this instance? 21:02
21:02 brambles joined 21:05 perlite_ joined
NotFound pmichaud: maybe is the resizing and not keyed access itself? 21:05
pmichaud there's no resizing taking place in the loops
I'm just looking up the same element one million times
PerlJam pmichaud: what does PARROT_QRPA(SELF) do exactly? 21:06
pmichaud it returns the underlying struct holding SELF's attributes
#define PARROT_QRPA(o) ((Parrot_QRPA_attributes *) PMC_data(o))
PerlJam my only guess would be the "extra" dereferencing that QRPA does that RPA doesn't 21:11
pmichaud ..."extra dereferencing"?
PerlJam qrpa->slots vs data[key] for instance.
Basically, I just counted -> 21:12
pmichaud well, the equivalent -> comes from data = PMC_array(SELF);
in the RPA case
i.e, PMC_array(SELF is defined as
NotFound Now that I look at it, the RPA version uses access data[key] two times, but probably the optimizer get rid of it.
pmichaud #define PMC_array(x) ((Parrot_ResizablePMCArray_attributes *)PMC_data(x))->pmc_array
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:17
dalek kudo/qrpa: 138fcb2 | pmichaud++ | src/pmc/qrpa.pmc:
QRPA: Try to make get_pmc_keyed_int as fast as RPA's, fail so far.
21:18
pmichaud NotFound: ah, that's a good point. One second. 21:19
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:20
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?
pmichaud PerlJam: yes, but I can do it again.
NotFound Even better, use the same loop for both. 21:23
pmichaud ...same loop for both? 21:24
you mean, as in a separate sub?
okay
NotFound In a sub, or with a convoluted goto.
pmichaud gist.github.com/2855224 # as a sub, and increasing N to 20000000 21:27
NotFound I don't see any reason for the difference. 21:29
21:33 kid51 joined
PerlJam pmichaud: Is the timing difference still there when you try to access an element that doesn't exist? 21:35
pmichaud note that QRPA is a dynpmc and RPA isn't, if that might explain anything. 21:36
PerlJam: I can check... just a sec
rpa[$I0] = 0.612705945968628 21:37
qrpa[$I0] = 0.790001153945923
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:41
pmichaud for reference, the full code for QRPA is at github.com/rakudo/rakudo/blob/qrpa...c/qrpa.pmc 21:42
(there may still be other unrelated bugs present; I'm currently just testing to see if I can get a speed win for Rakudo.)
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:44
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
NotFound pmichaud: there is a thing you can try: drop the local variable elems. 21:56
pmichaud NotFound: just use qrpa->elems in each case? 21:58
NotFound Is the only significant difference between the two versions.
pmichaud: yeah
Or make it const. 21:59
pmichaud eliminating elems didn't change the timings
rpa[$I0] = 0.627300977706909
qrpa[$I0] = 0.809339046478271
aloha (parrot/parrot) Issues reopened : 642 (Configure.pl allows sizeof(INTVAL) != sizeof(void *), but parrot requires them to be equal.) by : github.com/parrot/parrot/issues/642
pmichaud I'll try adding it to parrot locally as a non-dynpmc and see what happens.
NotFound Good idea. 22:00
pmichaud but, that'll have to occur after dinner
NotFound Bon appetit, 22:01
dalek rrot: db9fc12 | jkeenan++ | config/auto/sizes.pm:
Remove unused subroutine _find_type_ge() per discussion with Gerhard R.
22:08
pmichaud oh! perhaps the headerizer makes a difference here somewhere? 22:11
rpa has been headerized, qrpa hasn't (afaik) 22:12
NotFound I don't think it will make any difference here. 22:13
The functions declarations are aleady generated in the .c by the PMC processor. 22:14
22:20 travis-ci joined
travis-ci [travis-ci] parrot/parrot#396 (master - db9fc12 : jkeenan): The build was broken. 22:20
[travis-ci] Change view : github.com/parrot/parrot/compare/e......db9fc12
[travis-ci] Build details : travis-ci.org/parrot/parrot/builds/1503600
22:20 travis-ci left 22:35 whiteknight joined
dalek p/altnfa: ddf6d6b | jnthn++ | src/NQP/Grammar.pm:
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
p/altnfa: bb0350f | jnthn++ | src/QAST/Compiler.nqp:
Don't leave leftovers on the bstack after an alternation.
p/altnfa: dc8561c | jnthn++ | src/QRegex/ (2 files):
We sometimes accidentally lost alternation branches if we could not build an NFA for them. Make sure we don't do this.
whiteknight What does the QRPA type do that Parrot's built-in type doesn't do? 22:48
pmichaud much faster shift, unshift, and splice operations 22:50
Parrot's shift is O(n), QRPA's is O(1) 22:51
and since iterators and lazy lists involve a ton of shifting, having a fast shift is fairly important 22:52
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)
*too radical
whiteknight I think that RPA probably needs a "radical" overhaul eventually anyway 22:55
pmichaud well, Parrot can certainly adopt QRPA as a core type then :) 22:56
at least, as soon as I figure out why the $@**!$ it's slower than RPA, which currently makes no sense
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
not-quite-parrot
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?
pmichaud Avengers
whiteknight I saw that last friday. Very pleased 22:59
pmichaud: We should probably touch base at some point soonish to talk about what Parrot can do better for NQP/Rakudo 23:00
we haven't had such a meeting in a while and I want to make sure we're moving in the right directions
pmichaud whiteknight: going to yapc? are any parrot folks going? 23:01
I know that particle++ is going
whiteknight I'm not going to be at yapc, unfortunately. I wish I could
23:01 kid51_ joined
pmichaud oh, and kid51++ is speaking there 23:01
whiteknight oh yes, kid51++
pmichaud and I think allison++ is expected to be there also 23:02
whiteknight darn, I really wish I could make it
pmichaud anyway, yes -- we can see about scheduling an online chat or something soon 23:03
I'll poll the other rakudo/nqp devs and see if they have any ideas
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:04
pmichaud I guess we still have to do --optimize with Configure.pl? 23:07
I thought that was defaulted already or something
whiteknight I think so, yes 23:08
For the common case, perhaps that should be default
pmichaud ummmm... hmm 23:09
gist.github.com/2855681 # test program I'm running 23:10
when run from the parrot repo (and with QRPA as a "built-in" PMC type in parrot/src/pmc), I get
pmichaud@kiwi:~/p6/parrot$ ./parrot z2.pir rpa[$I0] = 3.11733913421631
qrpa[$I0] = 2.88110089302063 23:11
when I run it from the rakudo repo, with QRPA as a dynpmc
I get
pmichaud@kiwi:~/p6/rakudo-qrpa$ install/bin/parrot z2.pir rpa[$I0] = 0.68439507484436
qrpa[$I0] = 0.730257987976074
...I'm totally confused. 23:12
First, by the fact that qrpa (dynpmc) is slower than rpa
but more confused by the fact that the parrot repo version takes ~3 seconds and the one built for rakudo takes <1 sec
whiteknight besides cache effects there shouldn't be a performance penalty for dynpmc
pmichaud maybe I didn't rebuild parrot... checking
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
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
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.
whiteknight Yeah, good idea. If you think it has enough utility I'm definitely in favor of having it be in core
pmichaud okay, --optimize improved things. Now I get 23:15
rpa[$I0] = 0.658792972564697
qrpa[$I0] = 0.609246969223022
so, when QRPA is a core PMC, it's faster than RPA, which is what I would expect.
we're leaving here now, so I'll try the dynpmc later tonight or tomorrow afternoon 23:16
whiteknight okay, thanks
dalek kudo/altnfa: f335c7f | jnthn++ | src/Perl6/Grammar.pm:
Update a couple of places in the grammar that need || insted of |.
23:18
kudo/altnfa: fb45990 | jnthn++ | src/Perl6/Grammar.pm:
Add ident so we can LTM on it.
NotFound I usually build with --optimize=-O3 23:25
whiteknight I build with optimizations off, so there are no surprises when debugging 23:29
NotFound I tend to do fprintf stderr debugging 23:30
whiteknight I prefer loading up GDB, not knowing what commands to use, and saying curse words 23:35
alias gdb=rm blib/lib/*.py*; gdb 23:40
this is absurd
dalek rrot/whiteknight/io_cleanup1: f9db036 | Whiteknight++ | src/io/ (7 files):
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
rrot/whiteknight/io_cleanup1: f77b281 | Whiteknight++ | src/io/utilities.c:
Make sure to pass the correct flags to re-refix the build
whiteknight my recipe for git commit messages: 3 parts description to 1 part snark 23:46
kid51_ whiteknight: ping 23:49
whiteknight pong
kid51_ On that gdb pretty-printer stuff.
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
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
I don't know exactly how those things get loaded into gdb when I run it. 23:54