Parrot 2.3.0 Released | parrot.org/ | Channel log: irclog.perlgeek.de/parrot/today | Priority: apply deprecations, merge branches, testexceptions_refactor branch | GSoC students, please read trac.parrot.org/parrot/wiki/GSoCersStartHere
Set by moderator on 6 May 2010.
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#33762), fulltest) at r46481 - Ubuntu 10.04 i386 (g++) 00:05
t/pmc/packfile.t - TODO passed: 34 in make coretest, smoke, testb, testf and testr
t/op/exit.t - TODO passed: 6 in testf
dalek rrot: r46482 | NotFound++ | trunk (2 files):
workaround and test for TT #1593
00:30
NotFound_b mikehh: my fault, thanks. 00:38
00:55 abqar joined 01:04 plobsing joined
dalek rrot: r46483 | NotFound++ | trunk (2 files):
avoid pointless repetition of comments and blank lines in generated code for the Object PMC
01:20
bacek_at_work NotFound_b, i've got feelings that you put hard-tabs in r46483. 01:35
02:02 Mokurai1 joined 02:35 janus joined
cotto bacek_at_work, ping 02:54
bacek_at_work cotto, pong 02:55
cotto bacek_at_work, is a dynamic op the opposite of a core op or do dynamic core ops exist?
plobsing arg! my tests for TT #126 fail because prints to stderr on error in stead of throwing
do we have a ticket for that?
bacek_at_work cotto, I'm not aware about "dynamic core ops"
cotto ok. I'll dig some. 02:56
I notice that the dynops in src/dynoplibs don
't use PARROT_IN_EXTENSION 02:57
bacek_at_work yes, but they are just dynpops shipped with parrot
dynops
cotto Mmmm. dynpop.
bacek_at_work :) 02:59
plobsing hmmm... TT #1610 seems to fit the bill. todoing tests. 03:00
03:01 plobsing joined 03:15 szabgab joined
bluescreen hey guys, I've newbie question 03:27
sorear purl, ask to ask? 03:28
purl Don't ask to ask or ask if there are any users of X around, people often don't respond to that because they've used X but maybe not the same features as you. Instead, skip straight to your question + pastebot link and if somebody knows they'll probably try and help
sorear go ahead.
bluescreen thanks
I've a sub defined like
.sub '!call_method'
.param pmc reciever
.param string method_name
.param pmc arguments :slurpy
plobsing arg. teh pasting! it burns! 03:29
(please use nopaste)
bluescreen and calling it like $P18 = "!call_method"(self, "getstring")
damn! sorry
sorear for only four lines?
plobsing pasted code.
purl rumour has it pasted code is confusing!!..give me some time to understand it
03:29 snarkyboojum joined
sorear my kick-point is seven... 03:29
bluescreen well, will keep that in mind! 03:30
now its done
sorear anyway
you said you have a question
bluescreen when i execute that I got an error stating that it specs two or more parameters
sorear what is it
purl it's it!
sorear How many did it say you passed?
bluescreen 1
i guess its because first parameter is a pmc 03:31
03:31 szabgab joined
bluescreen and its being sent as an array 03:31
dalek rrot: r46484 | plobsing++ | trunk (4 files):
[IMCC] dissallow non-string entries in '.namespace' statements

testing pending TT #1610
sorear no, that makes no sense.
can you nopaste the *complete* code? 03:32
bluescreen this is exactly what i've got: " too few positional arguments: 1 passed, 2 (or more) expected "
sorear my you-left-out-an-important-bit alarms are going off
bluescreen sure
by the way thanks
hold on
03:33 rurban joined
bluescreen is it nopaste.pl? 03:35
www.nopaste.pl/q5s
plobsing nopaste? 03:36
purl nopaste is nopaste.snit.ch (works with the script in $_PARROT/tools/dev/nopaste.pl) or paste.scsys.co.uk or www.extpaste.com or gist.github.com or App::Nopaste or codepeek.com/paste/ or (: pastebot)
sorear nopaste: url?
nopaste, url?
bluescreen: No wonder it doesn't work, you're missing a .end 03:37
bluescreen i didn't put the whole thing, I know you told me too, but that would include all the generated pir and that's a lot 03:38
dalek TT #162 closed by plobsing++: Parrot segfaults if specifying a non-sensical namespace
TT #162: trac.parrot.org/parrot/ticket/162
bluescreen anyway i forgot to mention that if i change the order put the string first and then the pmc parameter it works ok 03:39
sorear really I have no way to help you without a small working example
do you want me to try to come up with one on my own?
bluescreen lol... you probably have better things to do 03:40
don't worry i thought this was something obvious i was missing
I'll try to come up with a non-working example that i can put in nopaste 03:41
03:42 LoganLK joined
sorear $P0 = find_method then $P0() is wrong anyway 03:42
bluescreen what's wrong about it?
sorear it can be better written receiver.method_name() 03:44
pastie.org/954839 ? 03:46
(non crashing complete example)
bluescreen what's the best way to debug these kind of things 03:47
dalek rrot: r46485 | plobsing++ | trunk/compilers/imcc (4 files):
[IMCC] more dead code
03:48
sorear bluescreen: come up with a minimal example 03:49
in the process of minimizing, you'll find the answer yourself 90% of the time
if not... run traces
bluescreen that's true, parrot_debugger :?
sorear compile to bytecode then disassemble, for instance, to see what IMCC did
to my knowledge parrot_debugger is nonfunctional
bluescreen cause when building the parser, sometimes i screw up the grammars and end up doing lots of "say" 03:50
to understand where ball dropped 03:51
sorear sounds like you need to get a parrot expert on your team
what language are you working on?
bluescreen i'm trying to create one on my own 03:52
this is a one team person trying to hack some parrot
I bought the premise that almost anybody can do it
sorear so, in your code, why was arguments simply being ignored? 03:54
plobsing sorear: IMCC's disassemble is pretty weak ATM. For example it disassembles method calls wrongly. It's on my (rapidly growing) todo list.
sorear plobsing: what about pbc_disassemble's?
bluescreen coz it isn't any near to usable
sorear That doesn't make sense. 03:55
purl I think you mean "I don't understand"
sorear What are you trying to say?
bluescreen I'm in the process of creating, the way I'm doing it is putting something trying it out, and so on 03:56
so far I was calling method with not parameters, and my next step was to start passing some of those
sorear This would explain the "not enough parameters" error. 03:57
plobsing sorear: hmmm... you're right! I forgot about that nifty gem.
sorear plobsing: How do I access IMCC's disassembler?
plobsing ./parrot -o x.pasm x.pbc # ought to do it
sorear How does that differ from ./parrot -o x.pbc x.pir #? 03:58
Does parrot multi dispatch on file extensions?
plobsing sorear: yes.
bluescreen anyway, thanks guys I really appreciate your help
sorear Honestly? You sound quite frustrated and unhappy.
bluescreen honestly... i didn't pay anywhere for 24x7 support 03:59
and I got it for free
who can ask for anything more?
and its fun too trying to hack something as cool as parrot! 04:00
plobsing hmmm... IMCC output of pasm appears to only work on pir inputs. added to bug queue 04:01
04:02 LoganLK joined
tcurtis plobsing: IMCC output of pasm works for pir inputs? Since when? 04:05
04:06 JimmyZ joined
plobsing fsvo "works" 04:10
04:19 snarkyboojum joined
dalek rrot: r46486 | plobsing++ | trunk/compilers/imcc/sets.c:
[IMCC] eliminate some direct uses of stderr
04:21
04:31 tcurtis joined
sorear Direct uses of stderr? sounds lovely. 04:36
plobsing sorear: it causes TT #1610. also doing things like writting directly to stderr and calling exit(1) are considered quite rude by embedders.
dalek rrot: r46487 | cotto++ | branches/ops_pct (6 files):
[opsc] make ops2c act more like ops2c.pl
04:37
rrot: r46488 | plobsing++ | trunk/compilers/imcc (7 files):
[IMCC] remove IMC_TRACE, a poor man's gdb
NotFound bacek_at_work: I don't see any hard tab :? 05:07
05:13 arnsholt joined
cotto t/codingstd/tabs.t will find them if they're there 05:14
clock?
purl cotto: LAX: Mon 10:14pm PDT / CHI: Tue 12:14am CDT / NYC: Tue 1:14am EDT / LON: Tue 6:14am BST / BER: Tue 7:14am CEST / IND: Tue 10:44am IST / TOK: Tue 2:14pm JST / SYD: Tue 3:14pm EST /
05:18 iblechbot joined 05:19 TiMBuS joined
dalek rrot: r46489 | cotto++ | branches/ops_pct/compilers/opsc (2 files):
[opsc] make ops2c.nqp work with dynops too
05:26
bacek_at_work cotto, SHIP IT! 05:52
cotto now I get to figure out how to tell make "yes, I do actually want circular dependencies"
"please don't drop them"
bacek_at_work Why do you need circular deps? 05:57
cotto opsc depends on nqp-rx, nqp-rx depends on parrot, parrot depends on ops, ops depend on opsc 05:58
Hmmm.
dalek rrot: r46490 | cotto++ | branches/ops_pct (4 files):
[opsc] switch to ops2c.nqp as the default op builder
05:59
cotto halifax?
purl hmmm... halifax is in Nova Scotia, which is in Canada, which is on Earth, which is in Canada.
06:00 rurban_ joined 06:01 snarkyboojum joined
bacek_at_work cotto, split stage0/stage1 ? 06:01
cotto Feel free to take a shot at it. We humans occasionally need to sleep. 06:05
night
sorear Hmm. 06:06
If we kill IMCC, there'll be an interesting bootstrap problem.
Every time we bump PBC_VERSION, we'll need to *somehow* get PIRC compiled again... 06:07
(PIRC is in NQP-rx right?)
cotto pirc is C 06:08
We'll eventually want a nqp-based pir compiler but that's a ways off. 06:09
By that time we should be compiling to Lorito behind the scenes. Since part of the goal of Lorito is that we can translate it to C, all we have to do is check in the generated C code. 06:10
06:14 japhb joined 06:16 uniejo joined, viklund joined
sorear What is PIRC's advantage over IMCC, then? 06:16
Is there a way to switch branches without looking up the full repository URL? 06:18
JimmyZ Currently IMCC has very little set of algorithmic optimisations such as "Constant Folding", "Dead Code Elimination", etc. They are very coupled to IMCC and not quite useful. 06:21
cotto JimmyZ, is this patch worth applying or should I just drop it: 06:23
nopaste "cotto" at 192.168.1.3 pasted "allow non-ascii characters in config values" (16 lines) at nopaste.snit.ch/20524
JimmyZ cotto: It's not worth, at least now. maybe in the future. 06:25
cotto Do you have a working build?
I thought this issue was preventing that?
s/?/./
JimmyZ cotto: I can't build parrot by adding unicode: to there
cotto Can you get closer or is the problem somewhere else? 06:26
JimmyZ cotto: I think the best way for me is removing 'if (!CHARSET_VALIDATE(interp, result))' from string/api.c 06:28
without that, parrot works very well 06:29
plobsing JimmyZ: why can't you build parrot by adding "unicode:"? syntax error?
cotto I'd ask the list about that. it doesn't sound like a correct fix
JimmyZ plobsing: TT #888
cotto: yeah, though it works for me. 06:30
otherwise I can't get parrot built
cotto: TT #326, I can build parrot before some time, see TT #326 06:32
cotto really needs to go to bed. I'll see about fixing that later.
night
JimmyZ thanks. good night 06:33
dalek rrot: r46491 | plobsing++ | trunk/compilers/imcc (5 files):
[IMCC] consolidate root-level error handling into one place
06:48
plobsing JimmyZ: I applied cotto's patch and followed the steps in TT #888, no build failures
JimmyZ plobsing: that's a CJK problem 06:49
plobsing: If you temp path cantains CJK, that's the problem 06:50
plobsing JimmyZ: I used the *exact* path from the TT 06:51
I do see some interesting test failures. but it builds and mostly runs fine (just a couple perl tests trying to make temp directories fail hard) 06:52
JimmyZ plobsing: Do you build parrot without cotto's patch too?
plobsing yes
no
sry
misread
oh wait, yes I did. it failed at miniparrot
JimmyZ what's error meassge? 06:53
plobsing Malformed string
JimmyZ ah
plobsing hmmm... is this a CJK+Windows issue? I'm on linux. 06:55
06:56 JimmyZ_ joined
JimmyZ_ plobsing: then I think you runs in the problem of TT #326 06:56
plobsing yeah, IIRC, linux is UTF-8 not UTF-16, so wchar doesn't exist 06:57
JimmyZ_ It's not UTF-16 06:58
plobsing: I am on Windows, but I don't think it's a +Windows issue 07:00
this is a CJK issue
plobsing JimmyZ_: all I'm saying is, cotto's patch gets me a little further along in the build. not perfect, but better IMHO. 07:01
JimmyZ plobsing: thanks, I will try it tonight again
moritz plobsing: linux is "everything that doesn't contain a null byte" in paths 07:02
UTF-8 is just a convention
07:02 simcop238 joined
sorear don't most actual chinese linux installs use other encodings for paths? 07:04
as opposed to en_US.UTF8 systems with Chinese paths loaded
moritz has no experience with Chinese linux systems 07:05
sorear neither
JimmyZ sorear: most chinese use chinese for paths. 07:06
sorear: they don't care about encodings, it depends on what system they are using. 07:07
sorear they don't, but we do 07:08
since we need to somehow second-guess the encoding
moritz so what's /usr/bin in Chinese?
sorear unless we want to tell them that their temp path is Ƥewƭe
07:09 aukjan joined
dalek kudo: 53fda34 | sorear++ | (3 files):
Enable support for --stagestats in Rakudo

Makefile system to pass --stagestats to Rakudo when compiling the setting and Test.pm in --makefile-timing builds. Signed-off-by: Moritz Lenz <moritz@faui2k3.org>
07:10
JimmyZ well, on windows, I think encoding is GBK 07:11
and linux, most are UTF
and gb2312 or Big5
moritz: chinese path usually is user defiend path, not system path. 07:12
dalek kudo: efbcce6 | plobsing++ | src/pmc/p6opaque.pmc:
De-dup item_str in p6opaque.pmc

Closes RT #74996 Signed-off-by: Moritz Lenz <moritz@faui2k3.org>
07:16
07:22 fperrad joined
plobsing anyone know yacc? does it make sense to bail in yyerror or is that bad? 07:29
sorear the traditional thing to do in yyerror is fprintf & exit
plobsing I see. so longjmp ing isn't unreasonable. 07:30
sorear actually I seem to be wrong 07:31
no.
yyerror is supposed to be for error *reporting* 07:32
after yyerror returns, yacc will free its temporary data structures and return 1 from yyparse
if you don't want to leak memory, don't longjmp out of yyerror
plobsing OK.
sorear instead, store the error somewhere, return, and throw the exception after yyparse returns
(it's also possible to do error recovery procedures in yacc, so that the remainder of the input will be checked for additional errors) 07:33
dalek rrot: r46492 | fperrad++ | trunk/tools/dev/mk_language_shell.pl:
[languages] fix generated setup.pir when no SVN revision (ie. Parrot built from tarball)
07:37
moritz seen chromatic 08:16
purl chromatic was last seen on #parrot 4 days, 3 hours, 39 minutes and 56 seconds ago, saying: Looks reasonable. [May 7 04:36:25 2010]
dalek kudo: d47ce57 | jimmy++ | src/builtins/Str.pir:
use replace instead of substr
08:20
kudo: 75b3762 | rurban++ | build/Makefile.in:
Install man page
08:21 JimmyZ_ joined 08:58 iblechbot joined
dalek kudo: 8236cef | snarkyboojum++ | docs/running.pod:
Document valid --target= command line options
09:11
09:13 gaz joined
bacek moritz, aloha. There is a typo in "Week 2" post: make t/spec/S05-grammar/parse_and_parsefile.t should be .rakudo 09:14
moritz bacek: nope, 'make' wants the .t file 09:15
bacek o hai, btw.
moritz and generates the .rakudo file
bacek moritz, erm... Why?
moritz oh hai bacekrobot
because it means you can type 'make $testfile' without knowing if $testfile contains fudges or not 09:16
bacek ah. makes sense 09:17
09:44 rurban joined
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#33769), fulltest) at r46492 - Ubuntu 10.04 i386 (g++) 09:54
t/pmc/packfile.t - TODO passed: 34 in make coretest, smoke, testb, testf and testr
t/op/exit.t - TODO passed: 6 in testf
bacek mikehh, aloha. If you are bored can you jump on ops_pct branch? (ignore codetest failures in .pl/.pm files for now :) 09:58
dalek rrot: r46493 | bacek++ | branches/ops_pct/config/gen/makefiles/root.in:
Use hardtabs in config/gen/makefiles/root.in - we are generating Makefile for it and do need them
10:04
mikehh bacek: don't know about bored, but will have a look anyway, never got around to fixin' that nqp test stuff :-{ 10:05
rrot: r46494 | bacek++ | branches/ops_pct/config/gen/makefiles/root.in:
Separate ops_bootstrap target to rebuild ops using opsc.
rrot: r46495 | bacek++ | branches/ops_pct (2 files):
Commit self-hosted core_ops.c/core_ops.h!!!
rrot: r46496 | bacek++ | branches/ops_pct/compilers/opsc/TODO:
Update TODO.
mikehh bacek: will give it a go, after some rakudo tests 10:07
moritz rakudo is very much broken on current parrot 10:08
because it emits .lex '$' for anonymous variables and parameters
and parrot doesn't like more than one of those
mikehh moritz: had to apply a patch to get it to build with g++ - I nopasted this months ago, but no one has applied it - a simple cast (void *) at line 174 of src/pmc/p6lowlevelsig.pmc 10:22
moritz mikehh: when nobody applies a patch pasted on IRC, please send it to rakudobug@perl.org with [PATCH] in the subject 10:23
anyway, testing that now
bacek msg cotto Hooray! Ship it! 10:25
purl Message for cotto stored.
dalek kudo: 9f1395c | moritz++ | src/pmc/p6lowlevelsig.pmc:
fix build with g++, patch courtesy of mikehh
10:32
rrot: r46497 | bacek++ | branches/ops_pct (2 files):
Update makefile dependencies. Remove duplicates ops_boostrap target in favour of boostrap-ops
10:37
nopaste "mikehh" at 192.168.1.3 pasted "rakudo make spectest summary" (33 lines) at nopaste.snit.ch/20526 11:00
mikehh moritz: I was going to run make spectest_smolder but you said it was broken - not too bad - some TODO passes otherwise 11:01
11:09 iblechbot joined
dalek rrot: r46498 | bacek++ | branches/ops_pct/lib/Parrot/Distribution.pm:
Add nqp-rx into exemptions from Parrot::Distribution
11:10
rrot: r46499 | bacek++ | branches/ops_pct/lib/Parrot/Test/Pod.pm:
Skip nqp or v6 files in Parrot::Test::Pod.
rrot: r46500 | bacek++ | branches/ops_pct/compilers/opsc/src/Ops/Compiler/Actions.pm:
Add nqp shebang to make codetest happy
rrot: r46501 | bacek++ | branches/ops_pct/compilers/opsc/Rules.mak:
Add dependance from ops2c.nqp to opsc.pbc to rebuild opsc for boostrap-ops target.
rrot: r46502 | bacek++ | branches/ops_pct/ext/nqp-rx/src/gen/settings.pm:
Add #! nqp shebang
11:14 gpw joined
bacek mikehh, I've made codetest happy at r46503 in ops_pct :) 11:17
mikehh bacek: we just have to get perlcritic to avoid those nqp files 11:21
bacek mikehh, I don't have perlcritic installed. But I think Andy can help with it :) 11:22
mikehh we probably need some sort of shebang line test there 11:24
maybe have an nqp_critic :-}
bacek v6_critic actually :) 11:25
dalek rrot: r46503 | bacek++ | branches/ops_pct/lib/Parrot/Test/Pod.pm:
Skip compilers/opsc from pod_syntax check. It's written in nqp.
11:27
mikehh perlcritic fails 9 tests - all nqp files out of 650 tests run - takes ages
moritz wonders if it's possible to write NQP in a way that makes perlcritic not complain :-) 11:28
bacek moritz, time to write some v6-specific Perl::Critic policies! 11:30
moritz you need a parser first 11:31
bacek "parser"? We have plenty of them! 11:32
E.g. viv :)
moritz yes, viv exists
bacek So... 11:34
Write viv->PPI conversion, implement Perl::Critic policies, ... , Profit!
11:34 aukjan joined
moritz I'm reminded of a region in spain that wanted to do some advertisment to attract more tourists 11:35
mikehh bacek: getting build errors in src/ops/core_ops.c with g++ - let me try gcc
moritz its slogan was "Murcia exists!"
bacek moritz, "Murcia exists"? 11:36
moritz viv exists!
bacek Indeed :)
moritz (Murcia is the name of that region)
11:44 kurahaupo joined 11:55 jsut_ joined 11:56 whiteknight joined
whiteknight good morning, #parrot 12:03
bacek whiteknight, aloha 12:04
whiteknight bacek: it's strange that the stringbuilder branch doesn't have higher performance. What's the reason for that?
are we just not using StringBuilder correctly throughout?
bacek whiteknight, I didn't check it...
mikehh bacek: apart from perlcritic, fulltest passes - Ubuntu 10.04 i386 (gcc) 12:05
bacek mikehh, excellent. Now you can test c++ build :) (I've made some changes to make c++ happy) 12:06
mikehh bacek: 'k on it 12:07
bacek mikehh, thanks!
12:08 bluescreen joined 12:13 jsut joined
dalek rrot: r46504 | bacek++ | branches/ops_pct/compilers/opsc/src/Ops (2 files):
Reorder generated bits to make c++ happy
12:15
rrot: r46505 | bacek++ | branches/ops_pct/src/ops/core_ops.c:
Regenerate core_ops.[ch] files
12:19 ruoso joined
bacek msg Coke can you retest codestring performance after my latest commit? 12:21
purl Message for coke stored.
12:25 fperrad joined
mikehh bacek: again apart from perlcritic, fulltest passes at r46505 - Ubuntu 10.04 i386 (g++) 12:28
some TODOs pass with i386 - t/pmc/packfile.t - TODO passed: 34 in make coretest, test, testb, testf and testr and t/op/exit.t - TODO passed: 6 in testf - I don't think they pass on amd64 12:30
let me see what I can work out with perlcritic 12:31
dalek rrot: r46506 | bacek++ | branches/codestring/src/pmc/codestring.pmc:
Optimize CodeString.lineof to not create duplicated string.
12:32
bacek mikehh, thanks!
12:32 fperrad_ joined
moritz build rakudo on latest codestring: real 3m35.475s, user 4m10.134s 12:39
will now try trunk
bacek it should be other way around... 12:42
Coke (disassemble) - trace is better than converting to pasm. ./parrot -t1 foo.pir 12:43
nopaste "mikehh" at 192.168.1.3 pasted "ops_pct branch - files not removed by make realclean and not under version control" (12 lines) at nopaste.snit.ch/20527 12:44
moritz trunk: real 2m55.634s, user 3m22.378s
bacek moritz, sigh... 12:45
Coke I think trunk got faster when we weren't looking. =-) 12:47
moritz: thank you for testing that, as I don't have a good "benchmarking" platform.
moritz it did 12:48
Coke: I'll now also run the spectests in comparison
building isn't the only cost of interested
Coke oh, hang on.
purl hang on. is this actually "session is still there but user has been deleted" ?
Coke I wonder if, with bacek's r46505, if we can avoid sorear's nqp-rx branch. 12:49
bacek mikehh, thanks. I'll try to fix it tomorrow (if noone beats me)
mikehh maybe plobsing++ work on imcc
Coke (which takes a String copy at some point.)
mikehh bacek: do those files need to be removed by make clean/realclean? 12:51
bacek mikehh, yes
mikehh, you can look at src/dynoplibs/Rules.mak for general idea 12:52
mikehh 'k will have a look as well as perlcritic
bacek ok
mikehh but have to go and see the dentist :-{ - bbl
Coke blah. 12:53
dalek rrot: r46507 | bacek++ | branches/codestring/src/pmc/stringbuilder.pmc:
Fix DRY violation in StringBuilder.set_pmc
13:04
Coke bacek: wasn't the RY way we had it faster? 13:07
bacek Nope. 13:08
Coke (direct ATTR access instead of calling another vtable?)
bacek You can replace it with STATICSELF and than compiler will optimize it
13:13 ruoso joined
dalek rrot: r46508 | bacek++ | branches/codestring/src/pmc/stringbuilder.pmc:
Use STATICSELF when calling other VTABLEs in StringBuilder. It's much faster.
13:22
bacek Coke, can you close TT#1626?
13:24 atrodo joined 13:28 aukjan joined
Coke sure. 13:32
dalek TT #1626 closed by coke++: Re: [parrot-tickets] Newbie reporting doc inconsistency
TT #1626: trac.parrot.org/parrot/ticket/1626
rrot: r46509 | coke++ | trunk (2 files):
When generating PMC c files, take advantage of -Iinclude/pmc in build.
13:40
13:51 plobsing joined, clinton joined 14:06 bubaflub joined
mikehh well that was fun - got another appointment though :-{ 14:19
let me look at codestring branch 14:20
dalek rrot: r46510 | coke++ | trunk (2 files):
fixup some dependencies -- checkdepend++
14:30
rrot: r46511 | plobsing++ | trunk/src/pmc/object.pmc:
add dummy freeze() method to Object.pmc to hide the automatically generated one which is *wrong*
rrot: r46512 | mikehh++ | branches/codestring/src/pmc/codestring.pmc:
fix codetest failure - trailing whitespace
14:35 JimmyZ joined
JimmyZ message cotto with your patch I got 'Malformed UTF-8 string', without your patch, I got 'Malformed string' 14:36
purl Message for cotto stored.
14:37 snarkyboojum_ joined
cotto bacek++ 14:38
JimmyZ good morning, cotto
cotto hi JimmyZ
so that patch doesn't help anything. 14:39
JimmyZ maybe
cotto It does allow a non-ascii temp path on my box but I wonder if there's a more general fix that's needed. 14:40
JimmyZ I think the file is saved as ascii. 14:41
but I can't changed it to UTF-8, seems IMCC doesn't support it
14:42 JimmyZ joined
cotto JimmyZ, you might ask darbelo. His gsoc project concerns unicode. 14:42
JimmyZ thanks. will do 14:43
cotto I can only point and look confused.
;) 14:44
JimmyZ CJK usually is a issue to non-CJK developer
err. an 14:45
mikehh codestring branch - fulltest passes at r46512 - Ubuntu 10.04 i386 (g++) (same TODOs pass as on trunk with i386)
cotto wonders if he could find and install a Chinese version of windows at work. 14:46
dalek rrot: r46513 | cotto++ | branches/ops_pct/config/gen/makefiles/root.in:
[opsc] remoe bootstrap-ops-test now that ops are opsc-generated by default
14:47
Coke . o O (only one more recursive makefile in regular build...) 14:48
plobsing cotto: I wonder if the environment variable we read from is encoded in non-UTF-8 unicode (and if the configuring perl knows about it) 14:50
maybe we can re-encode
Coke plobsing: don't nopaste your report in parrotsketch - just post it.
why do we care what the /encoding/ of a dir in an env var is. can't we just treat it as a binary and let the OS figure it out? 14:51
cotto +1 to no nopaste (especially since nopastes expire after a couple days) 14:54
14:56 ash_ joined
Coke I'll just not-no-paste it for ya. =-) 14:57
NotFound In windows you can read env vars as utf16, and then recode to whatever wanted, 14:58
But if we do that, we should do the same with directory related functions. 14:59
15:00 Andy joined
Coke Andy: trying out freemind for a new project at work. 15:03
NotFound JimmyZ: imcc supports utf8, but you must encode any non ascii codepoint as \\x{hexvalue}, otherwise the result may be unexpected.
Andy Cool.
And it's XML so easily Subversionable
dalek rrot: r46514 | cotto++ | branches/ops_pct (98 files):
sync branch with trunk, regenerate ops
15:04
15:06 khairul joined 15:13 Mokurai1 joined
Coke someone who is bored might want to troll through #perl6 logs for "parrot is broken", throw all those into a wiki, and insure that we eventually address them all. (with tickets if necessary). 15:13
*bored, excited, whichever. 15:19
mikehh ops_pct branch - t/postconfigure/05-trace.t - Failed test: 7 in post-config/make test 15:20
dalek rrot: r46515 | mikehh++ | branches/ops_pct/MANIFEST:
re-generate MANIFEST
rrot: r46516 | jimmy++ | trunk/src/string/charset (3 files):
calculate string length before loop, it avoids calculating string length very loop.
JimmyZ err. every loop 15:21
cotto_work mikehh, thank 15:30
several thanks, even
Odd. t/distro/file_metadata.t was failing on a bunch of files in ops_pct at home but here it's happy. 15:33
svn--
mikehh cotto_work: opsc-clean from compilers/opsc/Rules.mak needs to be invoked in the make clean/realclean target 15:34
cotto_work Agreed. Can you add it? 15:35
mikehh also ext/nqp-rx/src/gen/settings.pir needs to be cleaned
cotto_work: not sure but having a look 15:37
15:41 JimmyZ joined
mikehh ok that works, but where do I put ext/nqp-rx/src/gen/settings.pir for cleaning 15:43
Coke don't have a separate -clean target. have a list of files to remove. 15:51
please.
dalek rrot: r46517 | coke++ | trunk (3 files):
checkdepend++ src/dynoplibs, fix the deps, don't generate extra includes
15:53
15:53 snarkyboojum_ joined
cotto_work Coke: you should make an analogous commit to r46517 in ops_pct. Just look for callcontext in compilers/opsc/src/Ops/Trans/C.pm 15:54
Coke cotto_work: I will attempt to remember to do that. 15:56
dalek kudo: ed24098 | moritz++ | t/spectest.data:
enable test file for Grammar.parse, bubaflub++
15:58
Coke wonders where r46518 email went. 16:02
cotto_work NOM. 16:03
Coke dalek? 16:07
purl dalek is probably #parrot's spammy little rss bot or (see: dalek plugins)
mikehh he sometimes takes a while 16:09
dalek rrot: r46518 | coke++ | trunk (2 files):
checkdepend++ src/ops && fix the deps
16:10
rrot: r46519 | mikehh++ | branches/ops_pct/config/gen/makefiles/root.in:
fix up clean target
mikehh there you go only 13 minutes 16:11
not sure if the clean of ext/nqp-rx/src/gen/settings.pir is in exactly the right place 16:13
Coke mikehh: close enough. 16:14
16:16 theory joined
mikehh need to set the svn:ignore properties if I can remember how I did it last time - I know there are some problems with it as in multi-lines 16:17
probably need to regen MANIFEST.SKIP after
Coke and .gitignore 16:19
purl .gitignore is getting in the way
Coke no, .gitignore is regenerated with a script from tools/dev
purl okay, Coke.
Coke I am thinking we should just fold the .gitignore gen into mk_mani* since it's already using MANIFEST.SKIP as its source. 16:20
... though it's probably not worth if with an impending git switch.
moritz was that a (reluctant) thumbs-up from allison on parrot-dev? 16:21
mikehh how imminent are we talking about? 16:22
serious planning was specified for any switch
cotto_work We'll talk about how imminent this #ps. 16:23
Coke planning required.
mikehh about 4 hours right? 16:24
Coke we need a "commiter's guide" and a plan for what to do on the server side, at a minimum.
parrotsketch?
purl parrotsketch is a status meeting for parrot core committers held every Tuesday at 20:30 UTC in #parrotsketch
Coke clock?
purl Coke: LAX: Tue 9:24am PDT / CHI: Tue 11:24am CDT / NYC: Tue 12:24pm EDT / LON: Tue 5:24pm BST / BER: Tue 6:24pm CEST / IND: Tue 9:54pm IST / TOK: Wed 1:24am JST / SYD: Wed 2:24am EST /
darbelo ISTR chromatic mentioned something about 'Not before Rakudo Star'
moritz which sounds kinda sensible 16:25
Coke absolutely. can't hurt to have the plan before then.
cotto_work bacek, ops2c.nqp et al need to be installed.
Coke "oh, it hoits! it HOITS!"
mikehh ha svn help ps says svn:ignore - A newline separated list of file glob patterns to ignore. 16:26
why on earth does it have to be newline separated? 16:27
16:28 bakkdoor joined
mikehh I remember having a lot of problems with that 16:28
darbelo Newlines are a reneweable resource.
Like solar power or kittens. 16:29
Coke mikehh: why not just use 'svn pe svn:ignore' ? 16:30
mikehh hi darbelo, hows the NFG stuff goin' - how about TimToady's ideas there 16:31
Coke throws it into your editor. boom, no shell trouble.
darbelo mikehh: It... goes. I'm reading the source to our strings and sleep with pdd28 under my pillow. 16:32
Not ready to start coding yet. I have a mostly-done blog post about it coming today. 16:33
mikehh Coke: I have done it that way before IIRC now, but that was quite a while ago - last time I tried I had serious shell trouble 16:34
darbelo: look forward to seeing it
16:58 davidfetter joined 17:03 PacoLinux joined 17:12 ash__ joined
cotto_work dynop HLLs? 17:13
sorear dynop HLLs? 17:14
cotto_work dynop HLLs is Rakudo 17:16
dynop HLLs?
purl dynop HLLs is Rakudo
cotto_work HLLs that use dynamic ops
darbelo Lua doesn't? Or am I thinking of dynpmcs?
cotto_work i.e. ones that will need to be updated to use opsc between the ops_pct merge and the next deprecation point.
17:16 joeri joined
cotto_work Nope. Lua has dynpmcs but no dynops. 17:19
Rakudo's the only HLL I've found. 17:20
darbelo partcl, but I think that's already broken by now.
partcl-nqp is the future. 17:21
cotto_work That's the assumption I'm going on.
If it builds I don't mind testing it though. 17:22
darbelo Last I checked it built, but had some big test failures. But that was a long time ago. 17:23
cotto_work Coke, should partcl be moved to the inactive section of the Languages wiki page? My impression was that no further development will happen there.
17:28 lucian joined
dukeleto 'ello 17:30
cotto_work #ps in 2:59 17:31
'
17:38 baest joined 17:40 rurban_ joined 17:42 Tene joined 17:44 patspam joined 18:06 cognominal joined
darbelo goes afk. 18:16
dalek website: darbelo++ | Encodings, charsets and how NFG fits in there.
website: www.parrot.org/content/encodings-ch...fits-there
rrot: r46520 | mikehh++ | branches/ops_pct (5 files):
set some svn:ignore properties
18:20
rrot: r46521 | mikehh++ | branches/ops_pct/MANIFEST.SKIP:
re-generate MANIFEST.SKIP
rrot: r46522 | mikehh++ | branches/ops_pct/.gitignore:
re-generate .gitignore
moritz darbelo++ good blog post 18:24
18:26 iblechbot joined
cotto_work khairul: do you want to chat now? 18:26
18:26 kjeldahl joined
cotto_work clock? 18:26
purl cotto_work: LAX: Tue 11:26am PDT / CHI: Tue 1:26pm CDT / NYC: Tue 2:26pm EDT / LON: Tue 7:26pm BST / BER: Tue 8:26pm CEST / IND: Tue 11:56pm IST / TOK: Wed 3:26am JST / SYD: Wed 4:26am EST /
18:27 fperrad joined
cotto_work probably asleep 18:27
Coke cotto_work: no, partcl will get bugfixed. just no new features. 18:30
18:32 ruoso joined
Coke what's wrong with this: 18:34
value = Parrot_str_concat(interp, value, Parrot_str_new(interp, c, length), 0);
... crap. nevermind. 18:35
khairul cotto_work: ping, i'll send a priv msg. 18:39
darbelo moritz: Thanks, about 70% of it was written under the influence of Boling Brain Syndrome, so the sanity check is appreciated. 18:42
Eh, Boiling.
mikehh darbelo: good post 18:44
moritz darbelo: I knew the difference between encoding and charset before, and what you wrote sounds sane 18:45
darbelo Glad I didn't get it wrong ;) I was aiming to explain it to people for whom character set == character encoding. 18:48
moritz sadly some very popural places get that wrong 18:49
for example in HTTP headers
you write Content-Type: text/html; charset=utf-8 18:50
where it should really be encoding=
but they didn't want to confuse it with transfer encoding
darbelo But they also do charset=iso-8859-1 which is arguably correct :) 18:51
Coke whee. ok. now partcl builds, but segfaults.
nopaste "coke" at 192.168.1.3 pasted "imageio segf?" (12 lines) at nopaste.snit.ch/20529 18:52
moritz darbelo: yes, but only by chance 18:53
Coke pushed compiling but segfaulting partcl (pre-npq-rx) 18:55
dalek rtcl: 1ccfa9c | Coke++ | (20 files):
Compile against parrot trunk.
18:58
mikehh essentially the character set is the set of characters available and the encoding is how the character set is stored in memory or on various media 18:59
19:00 Psyche^ joined 19:09 plobsing_work joined
cotto_work it's kinda funny. if you look at a graph of when commits happen to to Parrot, the largest number happen right around #ps. 19:11
19:11 smash joined
smash hello everyone 19:11
mikehh ops_pct branch: apart from the nine nqp files in compilers/opsc/src fasiling perlcritic, pre/post config, make corevm/make coretest. test, fulltest PASS, some TODOs pass bit same as trunk on i386 - Ubuntu 10.04 i386 (g++) 19:12
cotto_work good news there 19:13
mikehh I thought of using the shebang line as a filter, but at the moment two of the older files do not have one, looking at trunk there is no consistancy in shebang lines 19:14
cotto_work That doesn't mean it needs to stay that way. 19:16
19:17 fperrad joined 19:29 fperrad joined 19:30 Casan joined
mikehh need to take, get something to eat etc, be back for #ps 19:30
mikehh missed a break there 19:31
darbelo cotto_work: maybe #ps is a psychological 'deadline': it makes you rush off and finish stuff so you can report it as done. 19:38
cotto_work That's likely what's happening.
I'm more motivated to get stuff done so I have something to post in #ps. 19:39
GeJ Good morning everyone 19:53
20:00 chromatic joined
cotto_work #ps in 25 20:05
20:06 ash_ joined 20:08 tcurtis joined
bubaflub if i wanted to get bindings to the GMP library in parrot, do i use NCI? 20:09
s/do/would/ 20:10
moritz you could also write a dynpmc in C that wraps GMP 20:11
plobsing_work bubaflub: in order of increasing complexity, you could: a) export NCI functions raw b) make fake objects out of ManagedStructs c) create C-based PMCs 20:13
bubaflub i would only need a subset of the functions available in the library to start
but would want it to be extensible if i ever need some of the other stuff 20:14
plobsing_work: what are the benefits to option c) ? 20:15
plobsing_work it's how most people do it these days. I would really like to see us shift towards option b.
most apis are vaguely OO-ish
tools that scanned C for struct and function prototypes would probably go a long way towards making that easier. Does SWIG do that well? 20:17
cotto_work +1 to b 20:18
Less C code is generally a good thing.
darbelo bubaflub: I'd go for NCI, GMP doesn't look very amenable to PMC-ification. 20:19
Even if out BigInt and BigNum PMCs are based on GMP.
s/out/our/ 20:20
Tene plobsing_work: That was tewk's plan with ncigen, but it never got far enough.
20:21 allison joined
plobsing_work I'd really like to see such a tool, because it would allow us to expose more of parrot core without a ton of C-based PMCs (at least in theory) 20:23
cotto_work It turns out that parsing C is hard. 20:25
smash C does it :)
cotto_work You'd think so.
chromatic C appears to do it. 20:26
cotto_work Only C can parse C.
20:28 gpw joined
Util Inline::Struct has a Parse::RecDescent grammar to parse C structs. 20:34
also, (from StackOverflow), "One trick is to let GCC do the parsing for you and read in GCC's parse tree using a CPAN module named GCC::TranslationUnit" 20:36
Convert::Binary::C is a preprocessor and parser for C type definitions. 20:39
C::DynaLib is a Perl 5 module for calling C functions. 20:40
END_BRAINDUMP
tcurtis What's the difference between dynpmcs and other pmcs? 20:43
chromatic dynpmcs go into their own .so files.
NotFound tcurtis: "dyn"
tcurtis Thanks. 20:45
Coke NotFound: *thwap* 20:50
dalek tracwiki: v37 | cotto++ | BranchDescriptions 20:52
tracwiki: trac.parrot.org/parrot/wiki/BranchD...ction=diff
chromatic Anyone going to YAPC::NA and looking for a dorm roommate, by the way? 21:01
21:05 fperrad joined
Coke chromatic: I think I've got a roomie. 21:09
rebooting... 21:10
purl rebooting is always the first solution
Tene Oh, I could reasonably go to that this year. I need to think about that. 21:12
chromatic: Very possibly.
bacek Good morning, humans 21:34
cotto_work 1001010101101010101, bacek 21:35
bacek aloha cotto_work
mikehh hi bacek 21:36
cotto_work bacek, do you know how to make opsc installable? 21:37
bacek cotto_work, no idea... Maybe Coke can help
cotto_work ok. I'll dig around when I have some tuits.
Fortunately there are only a couple files that'll need to be installed. 21:38
maybe just one if ops2c.nqp turns into a fakecutable
darbelo Hmm. Has anyone considered using 'setup.pir' files for the 'core extensions' in parrot? 21:39
cotto_work core extensions?
you mean src/dynoplibs and src/dynpmc ?
darbelo Mostly, yeah.
cotto_work There's some charm in that idea but it'd also mean having them be a special case in the build system. 21:40
darbelo The JSON compiler too.
dynpmcs kind of already are ;) 21:41
21:41 Whiteknight joined
darbelo Unless someone wants to make the deps more granular and autogenerate the makefile. 21:42
I think it's less effort to the setup.pir approach.
Coke darbelo: I am really not interested in switching those at this time.
I'd like to get something like 'make depend' in place. 21:43
the deps /are/ fine grained, at least compared to the previous recursive make situation.
and... another reboot. aigh. 21:44
darbelo Coke: I defer to you, oh grand master of dep-tracking. 21:45
21:45 brooksbp joined
darbelo allison: ping 22:01
allison darbelo: pong
Coke msg dukeleto - i volunteered you for the first bullet at trac.parrot.org/parrot/wiki/GitMigration 22:02
purl Message for dukeleto stored.
darbelo For NFG, have you given any thiught as to what would be a good data structure to use as our grapheme table?
allison darbelo: the keys are codepoints 22:04
darbelo: so it could be hash-like, but that's generally quite expensive
darbelo: something array-like would be good 22:05
darbelo The expense of hashes was my biggest concern, yes.
allison darbelo: it doesn't have to be a resizable structure, since we can scan the string first, find all the combinations we'll need to change to NFG and allocate the right size 22:06
darbelo But something array-like is likely to become expensive for the reverse lookup. ("Have I seen this composition before?")
allison hashes would need double entries to handle that 22:07
or, two separate hashes 22:08
darbelo Maybe a hash and an array?
allison that could be workable
hanging two separate hashes off our strings will quickly lose the speed advantages
Coke I have a concern about how NFG storage will interact with freeze/thaw of bytecode.
mikehh what about a hash-type function into an array optimized for most commonly used codepoints
Coke you basically have to recalc every time you dynload something with strings, yes? 22:09
allison Coke: the strings would either have to be flattened out before freezing, or frozen with the NFG table intact
Coke but if you freeze the NFG table, you then have to merge it with your live in memory one on load, eys?
mikehh maybe using something like gperf to set it up 22:10
allison Coke: oh, no, each string has it's own NFG table
it's a local customization
not global
darbelo Coke: Initially at least, I'll be giving each string a ... what allison said ;)
Coke oh, per string. was thinking per interpreter.
nevermind, carry on.
darbelo We will have to merge grapheme tables on concatenation, though. 22:11
allison Coke: yeah, that was important, for exactly the kinds of reasons you just raised
darbelo: yes
but, the tables will generally be quite small
darbelo Yeah, I expect so. 22:12
Coke must away. laters.\\
mikehh unless you have very long strings in CJK or something
darbelo mikehh: We only allocate codepoints for stuff not on the unicode plane. CJK is covered there. 22:13
darbelo feels he has a subject for his next blog post.
mikehh just composition for negative codepoints?
allison mikehh: mainly for combining characters 22:14
mikehh yes 22:15
darbelo The thing is that we operate on 'graphemes' a single written symbol. If there is a Unicode char for that we use it. If not we allocate one at runtime.
mikehh or I see said the blind man to his deaf and dumb daughter :-} - actually I do
allison darbelo: we can play around with faster access data structures 22:16
darbelo mikehh: 'LATIN CAPITAL LETTER N WITH TILDE' is a composed character ('LATIN CAPITAL LETTER N' + 'COMBINING TILDE') that unicode already handles perfectly well. 22:17
mikehh the one I liked was the I with the double dot in cyrillic 22:18
darbelo So, we don't need a new codepoint. If I wanted to put a german umlaut on top of the letter 'n' then I'd be in trouble.
bacek mikehh, ё!
darbelo for 'LATIN CAPITAL LETTER N' + 'COMBINING DIAERESIS' I'd need to allocate a new (dynamic) codepoint. 22:20
And yes, I submitted this proposal just so I could insert 'Spinal Tap' references into the parrot codebase :) 22:21
allison :) 22:23
darbelo Back to the hacking part: How about starting with an array and then adding a hash if reverse lookups are too expensive? 22:25
I think that should head off any premature optimization I could regret later. 22:27
bacek darbelo, I doubt that you'll need hash. It's very unlikely to have more than NFG-specific graphemes. 22:28
darbelo bacek: In theory, combining character sequences can be arbitrarily long. I'm looking for a (prematurely optimum?) way to say "Oh, I know you! You are codepoint -5. There you go." 22:30
22:32 Hunger joined
darbelo But it's probably just a premature complication at this point ;) 22:34
allison: My other concern is where to store the grapheme table. Adding is to the string structure is way too expensive, but the other places I've come up with are kind of hackish. 22:36
allison it's one added pointer to the string structure, not too expensive
and, could be used for other things
bacek Coke, cat you test trunk vs codestring@r46523 on rakudo build time? I've got very promising results on my box, but want some "independent" confirmation. 22:37
allison that is, it could be generic, like "data" in the pmc structure
so it's not just for nfg strings
darbelo allison: We create an awful lot of string headers.
allison yes, we doo 22:38
do
darbelo An extra pointer could be enough to push the rakudo build over the .5G limit again.
Specially in 64 bits. String headers are twice as bit there. 22:39
Eh, twice as big.
NotFound Don't forget that we still don't save encoding in the .pbc, that's one more opcode for frozen string.
allison another alternative is to make NFG strings a pmc 22:40
that would make it easier to incorporate the hash and array behaviour into the string 22:41
the key is to gain speed on NFG strings 22:42
darbelo Hmm. It sounds convenient, but I am kind of attached to the Idea of making it available on regular strings... 22:43
I do like the 'data' pointer idea. Sounds like that could be turned into a profit, rather than a cost.
theory sees "NFG" and starts creating names to fit. 22:44
allison darbelo: I'm in favor of trying the added pointer on the string struct and considering the PMC option if that proves to be a performance burden in general 22:46
darbelo Added pointer it is. Worst case: chromatic has to optimize in the future :) 22:48
allison best case, nfg makes back the performance loss, or even improves on it 22:49
darbelo hopes.
allison variable-width encodings are high cost for PGE/NQP-rx 22:50
darbelo Or any other kind of regex matching really. 22:51
cotto_work bacek: should the rakudo build be timed with an optimized or unoptimized parrot? 22:55
bacek cotto_work, I'm usually check optimized builds. 22:56
darbelo If it's the same on both sides, does it matter?
bacek darbelo, it does. We can have more PARROT_ASSERT on one of the sides due different codepath 22:57
22:57 Psyche^ joined
cotto_work optimized makes more sense because that's what expect Rakudo to be using 22:58
darbelo I keep forgetting about the assertions.
Coke bacek: you just won't let this branch die! (awesome. will test later this evening) 23:02
bacek Coke, nope. I just want to make Rakudo faster :) 23:03
Coke So say we all.
... did feather's DNS entry vanish? 23:09
cotto_work I see no significant difference between codestring and trunk for Rakudo build times. I need to verify that I'm actually using different parrots. 23:13
is there an easy way to do that?
23:15 ruoso joined 23:21 cognominal joined 23:22 kurahaupo joined
cotto_work Gah. I was using the --gen-parrot parrot, not the installed one 23:24
mikehh bacek: how do you test the codestring branch using which rakudo? 23:28
cotto_work build and install the codestring branch, build rakudo using the installed parrot 23:36
It looks like codestring is meaningfully faster
~4:00 for trunk, ~3:26 for codestring 23:37
non-parallel build
which would be serial, I guess
for a parallel build: ~3:29 with trunk, ~2:55 with codestring 23:49
I'd call that a worthwhile improvement.
darbelo SHIP IT! 23:50
cotto_work bacek++ 23:51
coke++
bacek_at_work ~~ 23:53
Hooray! :)
cotto_work ~~~
I'm confident that there's an improvement but feel free to verify. 23:54
bacek_at_work I've got similar numbers on my box. That's why I asked to verify them :) 23:56
cotto_work awesomesause 23:57