smoke string_gc_encapsulate branch | Parrot 2.7.0 "Australian King" Released! | parrot.org Log: irclog.perlgeek.de/parrot/today | Nopaste: nopaste.snit.ch:8001 | close 25 tickets; remove deprecated items (especially CodeString); record deprecations; polish for 2.8 release
Set by moderator on 16 September 2010.
sorear all of them were committed in the span of less than ten minutes 00:00
probably dalek lost them because it works by polling rss
mikehh I think bacek++ overwhelmed dalek
sorear i.e. between two polling points, enough new commits were added for the first few to fall off the feed 00:01
mikehh I think we need to look into that, especially if parrot is moving to git soon 00:03
plobsing (1232028459 - 1211929522)/1232028459
purl 0.0163136953965444 00:04
aloha 0.0163136953965444
00:04 davidfetter joined 00:11 nwellnhof left
sorear mikehh: I rather suspect bacek is already using git... 00:13
00:14 dngor left, dngor joined, sjn left
mikehh sorear: yes - git-svn 00:22
dalek rrot: r49123 | mikehh++ | branches/gc_massacre/MANIFEST.SKIP:
re-generate MANIFEST.SKIP
00:42
rrot: r49124 | mikehh++ | branches/gc_massacre/t/op/testlib/test_strings.pir:
add svn properties
00:43
00:44 kthakore left
mikehh bacek: ping 00:45
00:47 Paul_the_Greek left 00:48 whiteknight left
plobsing tag, you're it.hashes are now the most expensive part of rakudo startup again. 00:49
dalek rrot: r49125 | plobsing++ | trunk (5 files):
add ImageIOThaw PMC

also, uses pointer into immovable string in stead of index into string gets 1.6% improvement in rakudo startup
00:59
01:10 davidfetter left
chromatic Looks like Parrot's overhead dropped by ~0.5 MB too. 02:07
02:10 kid51 left
chromatic plobsing, ping 02:14
02:29 furrykef joined
furrykef What's the difference between PGE::Grammar and HLL::Grammar? 02:31
sorear PGE::Grammar is part of PGE, an old grammar framework which is no longer being maintained 02:34
HLL::Grammar is part of nqp-rx, the replacement
02:35 janus left
furrykef I see. The Parrot docs under "Grammar Engine" use PGE::Grammar 02:36
TBH I find Parrot's grammar system to be difficult to get into. I've written a Scheme parser (albeit incomplete) in pure Python, and I've messed around with lex/yacc before, but this stuff seems pretty hard with the current documentation 02:38
sorear yep
there's a reason PGE was abandoned
furrykef Well, the thing is I can't seem to find complete documentation on the current way of doing things 02:39
sorear squaak tutorial ? 02:40
purl squaak tutorial is what you want
furrykef Ah, there's a tutorial to go with it?
Found it 02:41
Thanks
I'm amused there's a TonyC in this channel. The game company I work for also has a TonyC 02:42
Obviously a different one, though. Our Tony wouldn't know Parrot from a cockatoo
plobsing chromatic: pong
sorear furrykef: the most authoritative document on the nqp-rx grammar system is perlcabal.org/syn/S05.html 02:43
nqp-rx is a subset of that by design
furrykef sorear - Yeah, I was using that page but for some reason it causes my Firefox to freeze up... 02:44
Maybe I'll use Chrome with it instead...
chromatic Idea: platform-native ImageIO PMC that inlines the specific "I know how to read bytecode on this platform" code, and a generic PMC that does the function pointer conversions. 02:47
furrykef What's a good pastebin? I always use pastebin.ca, but I sometimes get yelled at for using it and told to use another, but I always forget to... and I forget the alternatives that are usually offered
chromatic It may not be worth it right now, or ever, but it seems like an idea to think about at least. 02:48
plobsing chromatic: i already tried optimizing for the platform native case by checking for it in shift_integer. problem is, the check made it more expensive.
but doing that once at the start might result in a win. 02:49
02:50 petdance joined
plobsing furrykef: most people here use nopaste.snit.ch/ because parrot comes with a tool that uses it (tools/dev/nopaste.pl) 02:53
furrykef nopaste.snit.ch/23425 - OK, this is my first stab at a grammar for a subset of Scheme... how does it look? 02:56
03:01 janus joined
sorear I would write sexpr_body <expression>* [ '.' <expression> ]? 03:01
furrykef OK. Thanks
sorear that way (1 2 3 ... 998 999 . 1000) doesn't have to backtrack over and rematch all the items 03:02
furrykef I think I understand that 03:09
I guess I need to learn more about how this kind of parser works... I'm only vaguely familiar with parser generators in the first place
chromatic Once per PBC seems like a good frequency.
03:10 krunen left 03:11 krunen joined
dalek rrot: r49126 | plobsing++ | trunk/compilers/imcc (2 files):
avoid making string versions of PCC signatures
03:14
plobsing chromatic: we're not yet at the point where we are recycling deserializer objects 03:16
it would be nice to do, but we're not paying that much for them relatively
chromatic I'm thinking instead of avoiding the endianness and 32/64-bit size checks. 03:17
plobsing oh. those we do once per pbc, yes. 03:18
chromatic Sort of; we also pay the performance costs of runtime dispatch from function pointers. 03:19
plobsing function pointers aren't as bad as they're sometimes made out to be 03:20
pf->fetch_iv(stream) is faster than IS_NATIVE(pf) ? *stream : pf->fetch_iv(stream) 03:21
I always thought branching within functions was supposed to be fast
chromatic Not branching is faster. 03:22
sorear I think chromatic meant duplicating the entire PMC file
and removing all the branches from one version
chromatic Right, have one PMC optimized for the native version and one PMC which performs the checks and branches for non-native versions. 03:23
ImageIONative would be 32-bit LE on my machine here for example.
It could be 64-bit LE on yours.
sorear Does anyone still use BE platforms? 03:25
plobsing kid51 uses ppc. is that be?
sorear ppc supports both at the ISA level, iirc
plobsing ooh fun
03:26 krunen left, krunen joined, baest_ left 03:30 baest joined
dalek rrot: r49127 | chromatic++ | trunk/src/hash.c:
[hash] Used more parrot_hash_get_bucket_string().
03:31
rrot: r49128 | chromatic++ | trunk/src/pmc/hash.pmc:
[PMC] Optimized Hash's in get_pmc_keyed_str().
rrot: r49129 | chromatic++ | trunk/src/pmc/hash.pmc:
[PMC] Removed Hash PMC's duplicate type check.
03:34 bluescreen left
plobsing 30163020/1209230426 03:36
purl 0.024943980362598
aloha 0.024943980362598
plobsing chromatic: it's probably not worth it atm. ImageIOThaw.shift_integer only accounts for 2.5% of rakudo startup.
sorear We're using a vtable call FOR EVERY SINGLE INT IN THE PACKFILE!? 03:38
plobsing well yeah. how else do you want to be able to read packfiles in a more or less platform independant manner?
furrykef Endian: proof that when there is any possible way to make two systems incompatible, somebody will come up with it 03:40
sorear I dunno, wrap it in a macro and put it in include/parrot/*? 03:41
anything we call
15000000 / 4 03:42
purl 3750000
aloha 3750000
plobsing sorear: macros would be quite unfriendly to non-native objects wanting to implement their own serialization 03:43
sorear non-native objects? 03:44
plobsing not to mention precluding any alternate serializers (eg: my parrot-deepclone project)
non-native = from PIR, NQP, Perl6 etc
sorear Why not both? Should Sub be forced to use the same API as PIR? 03:45
plobsing why do both when any improvement you make to the status quo will be a slice out of 2.5% of startup
that's not a big pie to slice up
sorear How are you measuring that? 03:46
plobsing inclusive callgrind cost
dalek rrot: r49130 | plobsing++ | trunk (5 files):
convert remaining imageio functionality to ImageIOFreeze for symmetry
03:48
purl I don't know how to convert remaining imageio functionality to ImageIOFreeze for symmetry.
plobsing silly purl 03:49
purl LA LA LA LALAL CAN'T HEAR YOU LALALA
04:00 purl joined
dalek rrot: r49131 | plobsing++ | trunk (3 files):
make codingstd happier
04:05
04:15 petdance left
chromatic optimizing that 2.5% for speed isn't too useful. Could we get memory improvements? 04:29
plobsing what kinds of memory improvements? 04:31
chromatic Not sure.
Maybe PMCs could hand freeze/thaw a description of what they want instead of calling shift_integer/string directly and pass or get back a blob of memory. 04:32
In a Lorito world, maybe we can refer to the PBC directly (for constant PMCs).
It's a half baked idea at the moment and may not be useful. 04:34
plobsing I suppose you could create a sort of state-machine that would run on a blob per PMC 04:35
chromatic: I don't see how you could efficiently make the runtime and serialized representations be the same 05:13
freezing pointers doesn't work
dalek rrot: r49132 | plobsing++ | trunk/src/pmc/imageiothaw.pmc:
fix unoptimized build
05:18 furrykef left 05:32 Tanami joined
chromatic Assume we're not using C's memory model. 05:41
Tanami hi guys 05:46
I was interested in using parrot for a language I was making for personal use
is there anything I should know that isn't in the docs? 05:47
plobsing Tanami: yes, but if we could quantify it, it would probably be in the docs 05:49
chromatic Have you looked at the Squaak tutorial in the docs?
Tanami yes 05:50
it was pretty easy to follow
plobsing (1244112377 - 1208481770)/1244112377
purl 0.0286393798974319
aloha 0.0286393798974319
chromatic That's the best place to start. Besides that, if there are any gaps in the docs, let us know and we'll work on them. 05:53
Tanami ok
chromatic That function has really paid off for us today. 06:02
plobsing chromatic: my numbers were inflated 06:03
chromatic I'll get numbers here too, but I can believe a point or two.
plobsing you made some changes that were less than kind to my optimizer's inlining heuristic and pushed my performance halfway back to where we started
dalek rrot: r49133 | plobsing++ | trunk/src/hash.c:
assume serialized hashes do not contain duplicates.

2.8% speedup to rakudo startup
06:04
plobsing my change gets a significant boost from simply getting lucky with inlining
chromatic That's the fastest startup time I've seen in Rakudo ever, 0.834 wallclock.
Looks like 1.17% here. 06:05
plobsing that's a much more reasonable number 06:06
chromatic Does Sub's thaw() need to call SUPER(info)? 06:16
06:24 hercynium left
dalek rrot: r49134 | chromatic++ | trunk/src/pmc/sub.pmc:
[PMC] Optimized Sub PMC's thaw() slightly.
06:37
06:40 chromatic left
cotto plobsing, did you bump PBC_COMPAT after adding that pmc? 07:11
07:42 tadzik joined 07:59 gerd joined
moderator Parrot 2.8.0 will be released at "2010-09-21 08:00 UTC" | parrot.org Log: irclog.perlgeek.de/parrot/today | Nopaste: nopaste.snit.ch:8001 | close 25 tickets; remove deprecated items (especially CodeString); record deprecations; polish for 2.8 release 08:07
moderator Parrot 2.8.0 will be released at "2010-09-21 08:00 UTC" | parrot.org Log: irclog.perlgeek.de/parrot/today | Nopaste: nopaste.snit.ch:8001 | close 25 tickets; remove deprecated items (especially CodeString); record deprecations; polish for 2.8 release
08:09 gerd left 08:18 fperrad joined 08:39 contingencyplan joined 08:41 tadzik left 08:52 fperrad left 09:14 www joined
www \\o 09:15
09:17 www is now known as JimmyZ 09:22 JimmyZ left 09:31 JimmyZ joined 09:46 sjn joined 09:50 M_o_C joined 09:51 M_o_C left 09:57 M_o_C joined 10:02 M_o_C left 10:04 M_o_C joined, M_o_C left 10:06 M_o_C joined 10:10 M_o_C left 10:11 JimmyZ left 10:13 M_o_C joined 10:22 mikehh left 10:35 whiteknight joined
whiteknight gerd++ 10:51
whiteknight started watching diaspora on github, and now 90% of the traffic in my news feed is related to disaspora 10:55
11:11 mikehh joined
dalek rrot: r49135 | whiteknight++ | branches/stdhandle_meths (26 files):
remove most of the remaining references to the stdhandle method and the stdio.pasm file that it uses
11:40
mikehh plobsing: ping 11:44
11:57 M_o_C left
mikehh bbl 12:03
12:15 ruoso joined 12:42 ruoso left 12:43 patspam joined 13:08 PhatEddy joined
PhatEddy Anyone available to talk about 'C' const qualifiers and nci buffer parameters? 13:14
13:18 Patterner left 13:28 Psyche^ joined, Psyche^ is now known as Patterner
whiteknight PhatEddy: sure, what's up? 13:52
13:54 hercynium joined
PhatEddy whiteknight: ping 14:03
whiteknight pong
PhatEddy I was working on a bug with the interface to the pcre library and found that there had been an understandable confusion between capital 'B' and capital 'V' nci parameters. 14:04
whiteknight ok 14:05
PhatEddy pcre picked 'B' for a const char ** parameter when it seems from testing it should have been a 'V' 14:06
The tests make it sort of clear which is which but neither parameter is in the drafts book and other files sort of confuse the two like mk_nci_thunks.pl. 14:08
whiteknight mk_nci_thunks is the old tool, I think
of course, I'm having a hard time finding the source code of the new tool now 14:09
ah nevermind, I found it
PhatEddy what/where is it? 14:10
whiteknight tools/dev/nci_thunk_gen.pir 14:11
B looks like a char ** pulled directly from a string buffer
V looks like a void ** pulled from a PMC
PhatEddy I think that's wrong if you look at the tests and that's the problem. That's probably how pcre got it wrong. 14:12
whiteknight okay, what was pcre trying to do, and why wasn't it working?
PhatEddy It was calling pcre_compile (documented in www.pcre.org/pcre.txt) which has a const char ** errptr parameter and the errptr results unusable on win and caused other problems in ubuntu 14:15
Changing the B to a V and following the nci_vV example in nci.t fixed the problem. 14:16
whiteknight the problem, I think, is that Parrot strings are immutable
B is probably useless in NCI now
should probably always use V
(and we should update the docs)
PhatEddy So you can't at this point pass a modifiable buffer to an external library? 14:17
whiteknight hmmmm....That is a very good question 14:18
the problem is that Parrot strings are not modifyable in place 14:19
PhatEddy The example in the test doesn't modify the buffer but it reads from it OK.
whiteknight what it does internally is take the Parrot STRING argument, get a null-terminated C string from it (by copying the STRING to a malloc'd buffer), and passes that C string to the function 14:20
when the function call returns, the C stringis free()'d
without updating the Parrot STRING
what I think we can do is rewrite B to take a PMC. From the PMC get a Parrot STRING, do the operation I described above, but instead of freeing the new C string we create a new Parrot STRING from it and store that new STRING in the PMC 14:21
(not that you need all the internal details). Can you create a ticket on Trac? 14:22
PhatEddy I will do some more research and add at trac ticket - sure.
14:23 hercynium left
PhatEddy For the time being, I have some ideas about clarifying this in the examples with const qualifiers ... 14:23
for 'V' in the examples we could use 'char ** const' or 'void ** const' 14:24
for 'B' we could maybe use something like 'void const * const * const' - it could prevent confusion for lib developers for now. 14:25
any thoughts about the idea? 14:26
whiteknight: one other question if you have a moment 14:35
whiteknight sure 15:02
about that idea, plobsing is probably somebody you want to talk to about changing the NCI sematics
PhatEddy You are looking to close some tickets. I created and was following up on ticket #467. It's probably easy to close and I am here to answer questions ... if you're interested. 15:04
whiteknight actually, I have to sign off for a while, sorry
I'll be around again later
PhatEddy thanks ... bbl
whiteknight I will take a close look at #467 later
thanks, bye
15:05 whiteknight left 15:13 M_o_C joined 15:48 sECuRE joined
sECuRE hi. i just asked in #perl6 about implementing ipv6 support. do you accept patches for parrot to enable IPv6 support? 15:48
moritz votes "yes", unsurprisingly :-) 15:51
sECuRE :p
TimToady they might need a contributor license agreement from you
moritz fwiw, szbalint also considered hacking on IPv6 support in parrot
sECuRE what’s the recommended way to use the git version of parrot with rakudo-star? 15:52
TimToady: that’s no problem for me
TimToady has only ever used the svn of parrot... 15:53
sECuRE well, there is github.com/parrot/parrot which seems to be a mirror of the svn?
moritz yes (it's read-only for now) 15:54
sECuRE alright. as i prefer working with git, i’ll check that one out
moritz git clone git://github.com/rakudo/rakudo.git; cd rakudo; git clone git://github.com/parrot/parrot.git; cd parrot
perl Configure.pl --prefix=$src_path/rakudo/parrot_install
make -j3 install
cd ..
perl Configure.pl; make -j3 install 15:55
(installs locally into $src_path/rakudo/parrot_install )
sECuRE thanks!
moritz that gives you "just" the rakudo compiler (not the modules that are shipped with Rakudo Star)
sECuRE that’s alright
TimToady 100% Pure Perl 6 :) 15:56
moritz (though so)
TimToady *t
moritz right
16:07 snarkyboojum_ joined, snarkyboojum left, snarkyboojum_ is now known as snarkyboojum 16:15 TiMBuS_ joined, jjore joined 16:18 szbalint_ joined, athomaso1 joined, GeJ_ joined, x3nU_ joined, frodwith_ joined, cxreg2 joined, TonyC_ joined 16:19 cosimo_ joined, dngor_ joined 16:20 wagle_ joined, wagle left, jan left, jjore_ left, szbalint left, confound left, dngor left, TonyC left, aloha left, ascent left, cxreg left, frodwith left 16:21 jsut left, aloha joined, autark left, TiMBuS left, x3nU left, GeJ left, athomason left, dzoe left, cosimo left, elmex left, ascent joined 16:23 elmex joined, jsut joined, confound joined, autark joined, dzoe joined
dalek rrot: r49136 | dukeleto++ | trunk/NEWS:
[docs] Add note about skip_all to NEWS
16:26
rrot: r49137 | dukeleto++ | trunk/NEWS:
[docs] Add note about --gc-threshold to NEWS
sECuRE hm, i’m a little confused about github.com/parrot/parrot/blob/maste...dr.pmc#L79 16:27
the clone() function is said to create a clone of the pointer
but the memcpy copies the struct sockaddr_in
not the pointer
i guess the comment is wrong
16:37 elmex_ joined 16:40 szabgab_ joined, dzoe_ joined, ascent_ joined, jsut_ joined, Maddingu1 joined 16:41 jsut left, autark left, confound left, sECuRE left, szabgab left, elmex left, dzoe left, ascent left, Maddingue left, confound joined, autark joined, sECuRE joined 16:42 elmex_ is now known as elmex
sECuRE moritz: btw, using git for parrot is not the best idea, for example tools/dev/mk_manifest_and_skip.pl does not work then :\\ 16:44
16:46 particle left, particle joined 16:55 particle1 joined 16:58 particle left 17:01 jan joined
moritz sECuRE: I think dukeleto has a branch for that... not sure though 17:18
17:20 cotto left 17:22 cotto joined 17:23 cottoo joined 17:24 cottoo left 17:25 dngor_ is now known as dngor
dukeleto sECuRE: i am working on making all of our tools work in git. there is a branch on github that makes mk_manifest_and_skip.pl work in git 17:32
sECuRE ah, cool
dukeleto sECuRE: we are transitioning to git, and are mostly there
dalek tracwiki: v34 | dukeleto++ | GitMigration 17:33
tracwiki: trac.parrot.org/parrot/wiki/GitMigr...ction=diff
dukeleto sECuRE: github.com/parrot/parrot/tree/cotto...ware_tools 17:35
17:40 PhatEddy left
dalek ast: 280ebde | moritz++ | S32-list/reverse.t:
test for RT #77914, .reverse shoudl flatten parcels

Also removes some non-informative Pod
17:45
ast: 8c3cfd3 | moritz++ | S02-builtin_data_types/hash.t:
test for RT #75868, Match objects as Hash keys
ast: 5ca3dae | moritz++ | S02-builtin_data_types/array.t:
test for RT #57790, scalars indexed with [1] should return a Failure
17:51
17:52 Maddingu1 is now known as Maddingue
dalek ast: 519bef8 | moritz++ | S03-operators/short-circuit.t:
some basic tests for RT #77864, &&=, ||= etc. One of them fails
17:56
17:58 lucian joined 17:59 lucian left 18:02 lucian joined
dalek ast: 6a09536 | moritz++ | S03-operators/binding-scalars.t:
test for RT #77462: binding should have list assignment precedence
18:02
18:03 bluescreen joined 18:04 lucian left, particle1 is now known as particle 18:06 lucian joined 18:20 lucian left 18:26 patspam1 joined, patspam1 left 18:30 mariano__ joined, patspam left 18:35 bluescreen left 18:39 mariano__ left 18:47 dzoe joined, dzoe_ left 18:53 PhatEddy joined
dalek rrot: r49138 | dukeleto++ | trunk/docs/tests.pod:
[docs] Fix link to Smolder
19:14
19:21 chromatic joined 19:42 M_o_C left
dalek rrot: r49139 | dukeleto++ | trunk/examples/io/post.pir:
[examples] Update HTTP POST example with new smolder info
19:48
19:50 Andy left 20:07 lucian joined 20:08 lucian left 20:11 lucian joined, mikehh left 20:22 hercynium joined
dalek TT #845 closed by dukeleto++: separate tool for uploading to smolder 20:39
TT #845: trac.parrot.org/parrot/ticket/845
20:41 GodFather joined 21:01 whiteknight joined
dalek kudo: 12088a8 | KodiB++ | src/core/Temporal.pm:
[core/Temporal] Fixed RT #77910 (DateTime attributes like .hour should always be Ints).
21:02
ast: a32217d | KodiB++ | S32-temporal/DateTime.t:
[DateTime.t] Added tests for RT #77910.
21:06
21:34 whiteknight left 21:36 rurban joined
luben good evening everybody 21:41
dukeleto luben: welcome to the parrotdrome 21:47
21:52 mikehh joined
moritz Infinoid: I've added the first non-master branch to mu.git/misc/dalek-conf.json... let's see how it works :-) 21:53
dalek kudo: e59e96d | moritz++ | src/Perl6/Actions.pm:
check name clashes for enum names
22:08
kudo: ccde8dc | moritz++ | t/spectest.data:
run enums/basic.t
22:14
ast: 895d239 | moritz++ | S12-enums/basic.t:
fudge enums/basic.t for rakudo
22:17 hercynium left, luben left 22:19 hercynium joined 22:21 luben joined, preflex left 22:24 M_o_C joined 22:26 preflex joined 22:38 lucian left 22:48 dalek left, dalek joined 22:59 Paul_the_Greek joined
Paul_the_Greek Howdy ho, kids. 22:59
23:02 lucian joined 23:04 lucian left
cotto hi old guy 23:19
23:22 Chandon joined, Chandn joined 23:23 Chandn left
Paul_the_Greek Hey cotto. 23:34
23:52 Paul_the_Greek left
cotto ENOGREEK 23:53