Camelia, the Perl 6 bug

IRC log for #parrot, 2009-02-07

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:02 Infinoid NotFound: what does it break?
00:03 rg are you sure it's the no-star part, not the exactly one whitespace part? there's another version of that regexp above that states \s*
00:03 NotFound Anything that tries to use a PMC * or STRING * PMC attribute from a pir subclass
00:04 NotFound rg: mmmm.... I think you are right.
00:04 Infinoid the lack of * after \s looks like an oversight, considering it's there for the get_attr case and also for STRING in both set/get
00:04 Whiteknight use: /PMC\s\*[^\*]?/
00:04 Whiteknight the question mark at the end makes the last character optional
00:04 Infinoid You probably want \s*\* too, not \s\*
00:05 rg whiteknight: that you can just aswell leave it out completely
00:06 rg s/that/then/
00:06 Infinoid NotFound: do you have a test case?
00:08 NotFound Now I see an interesting point: the re is not the same in GET_ATTR and in the SET_ATTR parts.
00:08 Infinoid yeah, that to me looks like a typo
00:08 NotFound : /PMC\s*\*[^\*]/ /PMC\s\*[^\*]/
00:09 Infinoid the former will match "PMC* foo" and "PMC *foo"; the latter will only match "PMC *foo"
00:09 NotFound And a violation of the principle: "Don't copypaste code"
00:09 AndyA joined #parrot
00:11 particle there's an easy way to fix that, Don't Repeat Yourself.
00:26 chromatic I wouldn't mind disallowing PMC* foo.
00:27 rg you can always match \s+ ;)
00:28 chromatic I could, but I think it might break something.
00:29 NotFound Well, I think that fixes part of the problem, but we have another one: get_attr_str does not get the pmc base attr from the pir derived class.
00:30 NotFound And all complicated by other known bug: exceptions thrown while searching from a handle enter infinite recursion
00:31 rg yes, i'd like to see a solution for that, too.
00:32 Infinoid chromatic: If we're going to disallow it, we should at least be consistent about it.
00:33 NotFound At least we must have codingstd test for ATTR syntax.
00:38 chromatic Agreed.
00:41 davidfetter joined #parrot
00:49 dalek parrot: r36407 | NotFound++ | trunk/lib/Parrot/Pmc2c/Attribute.pm:
00:49 dalek parrot: [lib] fix handling of ATTR types in Pmc2c
00:49 dalek parrot: review: https://trac.parrot.org/parrot/changeset/36407/
00:50 NotFound Let's go step by step
00:52 Whiteknight what are you guys updating? the ATTR syntax?
00:53 particle we don't allow STRING* syntax. there must be whitespace. that's in pdd07.
00:55 NotFound particle: I was worried about accepting valid things, not rejecting invalid ones.
00:56 NotFound Whiteknight: fixing, not updating
00:57 Whiteknight okay
01:05 cotto NotFound, that pmc2c code needs to reject things like STRING **.
01:05 cotto (i.e. for FixedStringArray)
01:06 NotFound cotto: it does
01:07 cotto NotFound, you're right.  I somehow missed the $
01:07 NotFound I think that what this code really need is tests
01:09 tetragon joined #parrot
01:10 Whiteknight I think I have a fix coming through for the cpu_ret issue too
01:11 Whiteknight I was perfectly happy with documentation saying "just don't use this freaking opcode ever, or we'll find you", but no. Coke can't have that
01:14 dalek parrot: r36408 | NotFound++ | trunk/src/scheduler.c:
01:14 dalek parrot: [core] quick hack to avoid infinite recursion when an exception is thrown while looking for a handler
01:14 dalek parrot: review: https://trac.parrot.org/parrot/changeset/36408/
01:23 Andy joined #parrot
01:30 dalek parrot: r36409 | NotFound++ | trunk/src/pmc/exceptionhandler.pmc:
01:30 dalek parrot: [pmc] One step towards fixing problems with pir classes derived form ExceptionHandler
01:30 dalek parrot: review: https://trac.parrot.org/parrot/changeset/36409/
01:35 kid51 joined #parrot
01:44 * Coke is glad to see his new president can swear convincingly.
01:44 kid51 Links?
01:44 purl i think Links is the linker rel
01:45 Coke kid51: http://digg.com/politics/Audio_​clips_of_Barack_Obama_swearing
01:45 shorten Coke's url is at http://xrl.us/befcm6
01:49 kid51 Thx
01:52 kid51 So, if anyone wants to respond to any of my pokes from the last week concerning RT tickets, we might be able to push the number of unresolved RT tickets down below an important threshold ...
01:55 Piper joined #parrot
01:55 Piper Hi there.  I am Piper.  I am now publicly logging this channel.  If you don't want to be logged, please leave now.
02:01 kid51 Piper, didn't you used to log here 6 or 7 months ago?  And where did you disappear to?
02:01 kid51 Piper, we rely on masak's log now!
02:02 rg i thought it was moritz, but yeah, we have a good log.
02:02 kid51 rg:  You're correct.
02:14 kid51 Speaking of bots, what's up with dalek.  I made a commit 5 minutes ago and it hasn't been posted!
02:15 cotto dalek's been slacking off lately.  Infinoid also lost a commit yesterday iirc.
02:15 cotto dalek is a slacker
02:15 cotto dalek?
02:15 purl i heard dalek was dha's distributed perl community badger badger badger attack or http://ourworld.compuserve.com/hom​epages/grahamwalters/dalek_fr.htm or 'Dalek' for the language, and 'dalek' for the program or http://www.daleklinks.co.uk/ or a Dr Who baddie or {see: dalek meme} or at http://www.deviantart.com/deviation/20016573/ or http://www.asciiartfarts.com/20020615.html or http://xrl.us/2doh
02:17 kid51 purl, dalek is also a bot (not unlike purl) who reports SVN commits on #parrot
02:17 purl wish i knew, kid51
02:30 kid51 Our FreeBSD Smolder reports are stuck at SVN r 29890 -- or at least the report is saying that's where they're being generated from.
02:30 kid51 Example:  http://smolder.plusthree.com/app/pu​blic_projects/report_details/17790
02:30 shorten kid51's url is at http://xrl.us/befcqq
02:44 rg if you want a freebsd smolder, i believe i can help. what's required to be useful?
02:46 Coke "make smoke" every so often.
02:46 Coke after an svn up; the problem with the current ones is that it's stuck in a checkout from perl.org and can't update.
02:47 rg should i rather do it automatically or manually after i've updated and did a make test anyway?
02:48 kid51 If, whenever you normally say 'make test', you say 'make smoldertest' instead, you get the smolder report for free.
02:48 kid51 The TAP from the tests is exactly the same.  It just takes a few seconds at the end to transmit the tarball.
02:49 kid51 (or however it transmits the report)
02:49 Coke automatically is easier to set and forget, but manually is fine, too.
02:51 rg hmm make smoke just told me i need TAP::Harness::Archive. this might take a minute
02:52 kid51 Uh, yeah, that's correct.  I should have mentioned that.
03:11 Zaba_ joined #parrot
03:20 rg ok ... here we go
03:22 Andy joined #parrot
03:23 rg oh hmm. maybe i shouldn't send in smoke reports for a tree that is already patched
03:33 rg ok, it worked: http://smolder.plusthree.com/app/pu​blic_projects/report_details/17825
03:33 shorten rg's url is at http://xrl.us/befcum
03:34 Whiteknight joined #parrot
03:34 Whiteknight if there's one thing I didn't miss, it was piper
03:35 Whiteknight we've got about 11 tests failing on Win32-x86 JIT
03:36 janus joined #parrot
03:40 Zaba joined #parrot
03:41 kid51 rg:  Thanks.  I was able to close one ticket with that report ... which puts at the magic number of 500 unresolved RT tickets:  http://tinyurl.com/cbub2z
03:42 Whiteknight kid51++
03:43 kid51 So, if one test failure will cause 'make fulltest' to halt, is there any way around that other than running the remaining targets individually?
03:44 Whiteknight your best bet is to write up a little shell script to run all the tests in sequence
03:44 Whiteknight I had a script like that at one point but I deleted it
03:44 Topic for #parrotis now Parrot 0.9.0 | http://parrot.org/ | 500 unresolved RTs left.
03:45 rg you could copy the invocation from the makefile and run with make -k instead (or edit the -k into your makefile)
03:46 rg but on a related note, we might want to skip the jit tests on platforms that don't support jit, otherwise fulltest reports lots of errors
03:49 Whiteknight I'm getting a test failure in t/pmc/freeze.t. Win32-x86. Anybody else seeing this?
03:50 rg i've just sent in a succesful smoke for freebsd/amd64, so not me ;)
03:50 Whiteknight crap
03:57 Whiteknight_ joined #parrot
04:10 bacek joined #parrot
04:21 * kid51 must sleep
04:21 purl $kid51->sleep(8 * 3600);
04:24 Andy joined #parrot
04:26 petdance joined #parrot
04:32 petdance I need a good picutre of pmichaud
04:32 petdance and by "good" I mean "preferably embarrassing"
04:49 Andy Putting a shout-out to kid51 in my keynote
05:00 Zaba_ joined #parrot
05:05 Andy joined #parrot
05:37 mberends joined #parrot
05:42 Andy joined #parrot
05:57 Andy joined #parrot
06:21 Theory joined #parrot
06:30 TiMBuS joined #parrot
06:43 rurban_ joined #parrot
06:53 alinbsp joined #parrot
07:32 bacek joined #parrot
07:36 bacek rakudo: say "hi"
07:36 polyglotbot OUTPUT[hi␤]
07:46 mberends bacek: say "hi"
07:49 chromatic joined #parrot
08:22 iblechbot joined #parrot
08:39 alvar joined #parrot
08:45 rurban_ joined #parrot
08:46 rurban_ Infinoid: A got now a gdb for mingw and added a bt to TT #276. encoding=0 on the DynLexPad indeed
08:52 cosimo joined #parrot
09:11 bacek Is git://github.com/rakudo/rakudo.git  now official source for Rakudo?
09:11 rurban_ yes
09:12 rurban_ for now
09:13 bacek rurban: great!
09:14 bacek it there any particular instructions for build rakudo outside of parrot?
09:15 rurban_ not yet, sorry. I never do that
09:15 bacek rurban: no worries. perl Configure --help is enough :)
09:20 bacek oh shi... It requires a lot of fixes to work with standalone parrot in separate directory...
09:25 cognominal rakudo has move out of parrot?
09:25 cognominal *moved
09:26 TiMBuS why has this not been announced yet?
09:27 cognominal this is a question, not an affirmation
09:27 TiMBuS well, the answer is yes
09:28 cognominal and parrot will not more to a git repository?
09:29 TiMBuS but it really needs to be announced. its kind of a big thing
09:29 cognominal *move
09:30 TiMBuS i don't think so
09:30 barney joined #parrot
10:11 Zaba joined #parrot
10:16 rurban_ I'm close to fixing TT  #276. encoding=0 after whoami = CONST_STRING_GEN(interp, "DynLexPad");
10:45 iblechbot joined #parrot
11:02 dalek parrot: r36412 | fperrad++ | trunk:
11:02 dalek parrot: [rakudo] remove some perl6 references
11:02 dalek parrot: review: https://trac.parrot.org/parrot/changeset/36412/
11:04 kj joined #parrot
11:05 rob joined #parrot
11:11 dalek parrot: r36413 | fperrad++ | trunk:
11:11 dalek parrot: [rakudo] leaves on github
11:11 dalek parrot: see http://github.com/rakudo/rakudo
11:11 dalek parrot: review: https://trac.parrot.org/parrot/changeset/36413/
11:11 dalek tracwiki: v47 | fperrad++ | Languages
11:12 dalek tracwiki: https://trac.parrot.org/parr​ot/wiki/Languages?version=47
11:12 dalek parrot: r36414 | barney++ | trunk/src/ops/core.ops:
11:12 dalek parrot: [codingstd] c_parens.t
11:12 dalek parrot: review: https://trac.parrot.org/parrot/changeset/36414/
11:16 kj joined #parrot
11:19 masak joined #parrot
11:21 rob joined #parrot
11:28 rurban_ TT #276: I think I have to give up in this for now. charsets are not initialized on a dynpmc init. but other ptrs are also not initialized. Null PMC access in get_integer()
12:03 alinbsp joined #parrot
13:02 rurban_ joined #parrot
13:05 Fayland_logger joined #parrot
13:09 Limbic_Region joined #parrot
13:13 bacek joined #parrot
13:14 kid51 joined #parrot
13:24 Fayland joined #parrot
13:24 rurban_ joined #parrot
13:48 alinbsp joined #parrot
13:52 dalek parrot: r36415 | barney++ | trunk/languages/pipp/t/php/control_flow.t:
13:52 dalek parrot: [Pipp] add first TODO test for 'switch'
13:52 dalek parrot: review: https://trac.parrot.org/parrot/changeset/36415/
13:53 dalek parrot: r36416 | barney++ | trunk/languages/pipp:
13:53 dalek parrot: [Pipp] Parse dummy switch control structure
13:53 dalek parrot: review: https://trac.parrot.org/parrot/changeset/36416/
13:56 Infinoid rurban_: the strange thing here is that the failed assertion was ASSERT(encoding), yet the backtrace says the function was called with encoding=0x3d4d60
13:57 rurban_ Infinoid: I showed here two cases: first cygwin good, then the mingw bade case
13:57 rurban_ sorry
13:57 rurban_ I thought it's a simple data structure error, then I found it it's a missing init
13:57 Infinoid oh ok
13:58 rurban_ we still have to check if it's msvc also, or only mingw, kjs should know, or smolder
13:58 Whiteknight joined #parrot
13:58 rurban_ but if you give me some hints I can test and verify.
13:58 Infinoid Does your mingw build with libicu?
13:58 rurban_ I assume it's some strange dllinit thing
13:58 rurban_ without
13:59 kj rurban_: hi
13:59 rurban_ I haven't installed it
13:59 rurban_ oh hi!
13:59 rurban_ did you have the dynpmc foo error on msvc?
13:59 kj yes
13:59 kj it came back recently
13:59 rurban_ ok, we shoudl note that in the ticket. so it's mingw and msvc
14:00 kj rurban_: i'm not sure, didn't look into the test too closelyk but ISTR it's something with loading some lib without extension?
14:01 rurban_ no, i noted it in the ticket. it's a missing charset initialization in every dynpmc
14:01 rurban_ and there are more inits missing
14:01 rurban_ the vtable are also missing
14:01 purl okay, rurban_.
14:01 kj rurban_: I'm  not sure if particle had that test failing as well
14:02 kj but for me it has failed for a long time
14:02 rurban_ I'll try to bisect it. sooner or later...
14:02 kj it would be weird if it's only on some win systems (like mine) but not others; haven't heard jonathan about it, either; he's on win as well
14:04 Infinoid hmmm
14:04 Infinoid rurban_: look at src/string/encoding.c line 369, if you haven't already
14:05 Infinoid that line is where the pointer gets initialized... yet it is NULL later on
14:06 Infinoid and it is being called with the right string and a nonnull pointer, it's #3 in your first backtrace
14:07 Infinoid which sounds like either STREQ() does't work (unlikely), or the pointer is being overwritten later on?
14:07 kj afk #shopping
14:09 moritz programming is hard; let's go shopping
14:09 Infinoid hehe
14:10 rurban_ did you see my nopaste patch?
14:11 Infinoid no.  (sorry, I just woke up)
14:11 rurban_ I fixed the encoding init, but then the vtable's had the Null config
14:11 rurban_ So I stopped, because I thought there's a biugger pircture involved.
14:12 Infinoid which nopaste?
14:14 Infinoid There are race conditions with encoding and charset initialization, because the init functions create STRINGs to store the encoding names, yet those STRINGs have null charsets or encodings at times.  I mentioned this a while ago, Allison suggested we split labeling out from init and do that part later
14:14 Infinoid But this looks like a different issue.
14:14 Infinoid It really seems to me like the pointer is being set, and then overwritten later (which sounds like a bug)
14:15 NotFound If you want to stop having problems with dll, we must kill global statics.
14:15 rurban_ sorry, no paste, it's in the ticket, comment 3
14:15 rurban_ or 4
14:16 rurban_ f (!PARROT_DEFAULT_CHARSET) { /* hack for TT #276, dynpmc init only on Win32 */ ...
14:16 rurban_ no I can confirm that the charset is never set, no overwriting
14:17 Infinoid hmm.
14:17 Infinoid When I discovered the init races, I made charset NULLOK (because the encodings were being initialized before the charsets were)
14:17 Infinoid so its crashing on a NULL PARROT_DEFAULT_ENCODING, not PARROT_DEFAULT_CHARSET
14:18 rurban_ I said something wrong before: my first bt is from mingw also, but on the first Parrot_str_new_init, the problem inside the dll, initialized later
14:18 rurban_ bot are 0
14:18 Infinoid oh!  So its a bad global variable reference?
14:19 rurban_ #0  Parrot_str_new_init (interp=0x3d25b8, buffer=0x6778879a "DynLexPad", len=9, encoding=0x0, charset=0x0,     flags=12288) at src/string/api.c:767
14:19 rurban_ encoding is just check first
14:19 rurban_ encoding is just checked first
14:19 rurban_ but encoding is a member of charset
14:20 Infinoid charset is never checked, because it is NULLOK
14:20 rurban_ ok
14:21 rurban_ so we should ensure that just the fixed_8 encoding is initialized
14:21 rurban_ but when you see my fix, you see "Null PMC access in get_integer()"
14:22 Infinoid yeah... at the position of your first backtrace, I would love to see a "print Parrot_fixed_8_encoding_ptr"
14:22 Infinoid and again at the position of your second
14:22 rurban_ ok, will do
14:22 Infinoid rurban++
14:22 * Infinoid is going to try moving these into the interp structure, to see if anything breaks.
14:23 rurban_ you mean in Parrot_lib_dynlexpad_load
14:23 Infinoid I don't know anything about dynlexpads... I just don't like the global pointers
14:24 rurban_ I remember having checked that: in cygwin (or elsewhere) the Parrot_fixed_8_encoding_ptr is kept, but on mingw it was 0x0 inside the (lazy) loaded dll. inside the main process it was okay.
14:24 NotFound Infinoid: an opaque structure known only by this file containing all those global and static globals will be better, IMO
14:24 Infinoid ...rather than being in the interp structure?
14:24 Infinoid or does the dll not have access to interp?
14:24 NotFound Infinoid: in the interp structure, a pointer to that opaque structure.
14:25 rurban_ I'll paste the p *interp, okay?
14:25 Infinoid ok
14:25 NotFound The idea is to encapsulate it from other parts of parrot.
14:25 Infinoid whatever we do, it should be useful to everything that uses PARROT_DEFAULT_CHARSET and PARROT_DEFAULT_ENCODING
14:26 NotFound And add an INTERP parameter to all functions that does not already have one.
14:27 nopaste "rurban" at 143.205.212.10 pasted "TT #276 attempt which shows there's more involved" (58 lines) at http://nopaste.snit.ch/15523
14:28 rurban_ okay, I think you were right, it seems that it got overwritten.
14:28 rurban_ I'll have to check the cpp expansion now for the macros
14:29 rurban_ note that this paste already includes my encoding init fix
14:32 Infinoid ok
14:34 rurban_ -g3 doesn't work on mingw-gdb so I cannot expend it there...
14:36 Infinoid are you trying to check the PARROT_DEFAULT_ENCODING macro, or something else?
14:38 rurban_ both. the  PARROT_DEFAULT_ENCODING definition and the CONST_STRING_GEN macro (which are both clear to me, but who knows)
14:42 Infinoid there's always gcc -E, I guess
14:44 rurban__ joined #parrot
14:46 rurban_ macros are good. I'll paste my result.
14:48 jan joined #parrot
14:53 nopaste "rurban" at 143.205.212.10 pasted "verification that constant_pmc_new() is resetting the charset and encoding (win32 only)" (54 lines) at http://nopaste.snit.ch/15524
14:53 NotFound I'm trying the approach of killing globals.
14:56 rurban_ Now I'm tracing into that mess
14:58 Infinoid NotFound: If you're talking about the Parrot_*_encoding_ptr and Parrot_*_charset_ptr globals, I'm working on that too (probably around 70% done)
14:59 NotFound Infinoid: A race? ;)
15:02 Infinoid heh, ok
15:02 Infinoid first one to nopaste a patch that passes "make test" gets free karma :)
15:03 Infinoid rurban_: so constant_pmc_new is calling the encoding and charset init functions?
15:03 NotFound Infinoid: In each onw system, or in rurban troubled one?
15:04 Infinoid I don't know if removing globals will have any effect on rurban's case...
15:04 Infinoid But removing them is probably useful for it's own sake.
15:06 NotFound Infinoid: yeah
15:09 Infinoid hah!  now all of a sudden I get a failed assertion 'encoding' too, in the same place as rurban's :)
15:10 Infinoid has nothing to do with dynlexpad tho
15:11 rurban_ aha
15:11 rurban_ it's kj also
15:12 * Infinoid splits encoding/charset labeling from init, to fix that race
15:12 rurban_ Infinoid: not
15:13 rurban_ Infinoid: constant_pmc_new is not calling the encoding and charset init functions, it's nullifying it. Parrot_charsets_encodings_init restores it again, even to the very same ptrs
15:15 Infinoid yeah, they are globals pointing to static structures
15:15 Infinoid rurban_: the crash I'm seeing is earlier, while parrot itself is initting.
15:15 Infinoid it would be great to find out why your pointers are becoming NULL though
15:16 rurban_ you just have to set watch on those two ptrs
15:16 rurban_ and then step through. not so easy on mingw though
15:20 rurban_ (gdb) watch Parrot_fixed_8_encoding_ptr
15:34 rurban_ but not! (gdb) watch *Parrot_fixed_8_encoding_ptr
15:34 rurban_ (I killed my gdb session and even my shell with doing this)
15:35 Infinoid hey, no fair!  I put the pointers into the interp structure, but then parrot crashes and it's a different interp structure!
15:35 Infinoid heh, I just had a watchpoint crash gdb here, too.
15:36 NotFound I'm having trouble with the jit, not easy to replace the global with a function call in jitted code
15:36 NotFound Configuring without jit, in the meantime
15:40 Infinoid I guess I didn't hit that, as jit isn't enabled on x86-64 by default anyway
15:41 Infinoid so I didn't consider that it might be a problem
15:45 Infinoid cloning the pointers in make_interpreter() seems to have worked.  But now I think I see why rurban was suggesting an opaque structure... quicker to copy one pointer rather than 10
15:50 NotFound Infinoid: hey, that was me ;)
15:50 Infinoid heh, ok.  NotFound++
15:59 szabgab joined #parrot
16:00 nopaste "infinoid" at 75.28.75.73 pasted "1-move-encoding-and-charset-into-interp.patch" (1327 lines) at http://nopaste.snit.ch/15525
16:00 nopaste "infinoid" at 75.28.75.73 pasted "2-split-encoding-charset-​labeling-from-init.patch" (231 lines) at http://nopaste.snit.ch/15526
16:01 Infinoid That works for me, but as you said, it will probably break JIT
16:01 NotFound Infinoid: you win
16:02 Infinoid your opaque pointer idea is a good one
16:02 NotFound But the race was for speed, not for goodness ;)
16:06 nopaste "NotFound" at 213.96.228.50 pasted "kill globals from encodings" (872 lines) at http://nopaste.snit.ch/15527
16:06 NotFound Here is my version, not fully tested yet.
16:11 Infinoid oh, searching for it?  that will be slower, but more flexible
16:11 rurban_ src\library.c:335: error: `interp' undeclared (first use in this function)
16:12 NotFound Infinoid: that is the way doable without much change, probably will need some functions to directly get the most used ones.
16:13 NotFound Well, actually the "most used" are all :D
16:14 Infinoid for now.  I think it makes it easier to add more without having to touch a lot of code tho
16:14 nopaste "infinoid" at 75.28.75.73 pasted "3-fix-rurbans-build-error.patch" (33 lines) at http://nopaste.snit.ch/15528
16:15 NotFound Or maybe assign fixed numeric values to some of them.
16:15 Infinoid rurban_: that will probably need a "make headerizer" to be fully correct
16:15 NotFound Test pass :)
16:15 NotFound Infinoid: hey, that is not fair, I headerized mine ;)
16:16 Infinoid NotFound: I headerized mine too.  But rurban's code is win32-specific, and headerizer only does the stuff that builds on your own platform
16:16 rurban_ 15525+15526, okay, 15527 messed it up for me.
16:16 NotFound Ah, all well then
16:17 Infinoid so whenever I do a headerizer, it misses all the JIT code
16:17 rurban_ is there a single file patch possible?
16:17 Infinoid yeah, I've just been keeping them separate for easier review
16:17 NotFound rurban_: 15527 surely is incompatible with the others
16:18 Tene_ joined #parrot
16:19 nopaste "infinoid" at 75.28.75.73 pasted "single patch for rurban" (1464 lines) at http://nopaste.snit.ch/15529
16:19 rurban_ sorry, I'm confused now. which pastes should I apply now?
16:20 NotFound rurban_: this was not a collaboration, was a competition. You apply either Infinoid patch or mine, but not both at the same time
16:20 Infinoid rurban_: NotFound and I both have our own versions of the patch.  NotFound's patch is standalone, 15527.  standalone version of mine is 15529
16:20 Infinoid time for breakfast here, back later :)
16:21 rurban_ sorry, I'm just in a conference room, so i'm listening to three at once.
16:21 NotFound BTW I modified just the encoding thing, not the charsets yet.
16:22 Infinoid yeah.  I did both, but didn't try to make it dynamic
16:22 Infinoid oh, I also managed to remove the NULLOK from charset (something I've been wanting to do for a while now)
16:23 NotFound I killed several SHIM_INTERP, wich is also good IMO
16:23 Infinoid yep, I had to do that too... and add PARROT_INTERP in a few new places
16:23 Infinoid and I also got rid of that nasty parrot_init_encodings_2() hack.  (but I replaced it with the almost-as-nasty register_encoding_names() hack)
16:24 NotFound That _2 is funny, giving that there is no _1
16:24 Infinoid Remember how I said there was a race condition where register_encoding() and register_charset() would create STRINGs before the various encodings and charsets were in place?
16:25 Infinoid parrot_init_encodings_2() went through and fixed up the strings' charset pointers after the fact
16:25 Infinoid Now I just go through and create the STRINGs after the fact
16:25 Infinoid to me that seems a little more sane.
16:25 NotFound Yeah
16:32 Infinoid lathos: Your input on this stuff would be valuable.  Have you made any attempt to eliminate the Parrot_*_encoding_ptr or Parrot_*_charset_ptr global variables in your strings branch?
16:33 rurban_ got it building now on mingw... wait a sec
16:35 NotFound Why on earth Parrot_str_new_init accepts a NULL charset?
16:35 NotFound ... and does nothing with it.
16:35 Infinoid haha
16:36 Infinoid NotFound: its because register_encoding() creates a string before any charsets have been initialized
16:36 Infinoid That's what I fixed in 2-split-encoding-charset-labeling-from-init.patch.
16:36 Infinoid (and its what I was just talking about)
16:37 NotFound So we can kill that NULLOK when other insanities are also killed.
16:37 Infinoid yes, and I did that
16:37 NotFound Good
16:38 Infinoid it didn't do nothing with it... it put the NULL pointer into the new STRING structure
16:38 Infinoid and parrot_init_encodings_2() fixed it up later
16:38 NotFound I think that for speed and clarity of the coda we may need to add Parrot_str_new_init_default and Parrot_str_new_init_fixed8
16:39 Infinoid I think we might already have macros for that
16:39 NotFound macros are evil
16:39 Infinoid (for clarity at least, if not speed)
16:39 dalek rakudo: a26b223 | (Moritz Lenz)++ | t/harness:
16:39 dalek rakudo: [t/harness] parrot libs can also be in parrot/lib
16:39 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/a​26b223157cb58437a117464c3cc560a8b247889
16:40 shorten dalek's url is at http://xrl.us/befd89
16:40 Infinoid NotFound: macros are evil, you won't find me arguing with that :)
16:40 NotFound Macros make the reader think that something is a fast and simple operation when really is a slow lookup.
16:41 NotFound Specially when they have a hidden interp argument.
16:42 Infinoid We could always go the perl5 ithreads route and stuff the interpreter structure into thread-local context instead
16:43 NotFound Mmmm... you mean pass the conext to most functions, and get the interpreter from it when needed?
16:44 NotFound Or just take it from a thread var?
16:44 Infinoid Yeah.  They stick the PerlInterpreter into a pthread_getspecific() pointer
16:44 Infinoid so it looks global, but isn't.
16:45 Infinoid kinda.  It's another way to have the interp available everywhere without assuming an interp argument
16:45 rurban_ still get errors after make headerize: core.jit:1356: error: `Parrot_fixed_8_encoding_ptr' undeclaredl
16:45 Infinoid ah, JIT.
16:46 NotFound rurban_: Configure --jitcapable=0
16:46 Infinoid (for the record, I think thread-local variables are even uglier than passing interp everywhere)
16:46 rurban_ no problem :)
16:46 NotFound We take care of the jit part later
16:47 rurban_ src\pmc\string.pmc:858: error: `Parrot_ascii_charset_ptr' undeclared
16:48 rurban_ `Parrot_String_nci_trans':
16:48 NotFound Giving that we allow a full hyerarchy of child interpreters and nothing forbids call one fromm the others inside the same thread, that will be confusing to say the least.
16:48 Infinoid yeah, the maintenance overhead of the fixups will outweigh the "casual reading" clarity gains I think
16:50 cosimo joined #parrot
16:50 Infinoid rurban_: can you change that to interp->ascii_charset_ptr, or should I issue a new patch?
16:53 Infinoid Ah, there are 4 instances in PMC files that I hadn't fixed up.  incremental patch #4 coming up
16:55 nopaste "infinoid" at 75.28.75.73 pasted "4-more-fixes.patch" (56 lines) at http://nopaste.snit.ch/15530
16:55 rurban_ fixed 4
16:55 * Infinoid did a clean and rebuild and is retesting now
16:56 rurban_ ok, sounds good now
16:59 kid51 joined #parrot
17:01 NotFound So we all agree that killing the encoding an charset global variables is the way to go?
17:01 Infinoid I think so, it looks pretty good here (other than jit)
17:02 Infinoid if it fixes rurban's issue, then it proves that shared library semantics are at fault, right?
17:02 rhr joined #parrot
17:02 Infinoid I mean, other than some init ordering details, I don't think I changed anything else that would fix mingw
17:02 NotFound Or at least, that using the globals need a serious review for windows dll usage
17:02 Infinoid yeah
17:03 NotFound And maybe for other platforms shared object semantics.
17:04 NotFound So killing them is easier and safer
17:04 Infinoid yeah
17:05 Infinoid This isn't the first time I've seen problems with linking on windows.  I've had some issues just accessing the PMCNULL global from time to time
17:05 rurban_ I'm testing cygwin, mingw and msvc6 now. It's just my small laptop.
17:05 Infinoid rurban++
17:05 Infinoid rurban: did mingw work, then?
17:05 rurban_ still relinking
17:05 Infinoid oki
17:06 rurban_ the first attempt had an old dynlexpad.c around, which needed an make realclean
17:08 * Infinoid is working on better separating his fix-charset-and-encoding-init patch from the remove-globals patch
17:09 Infinoid I'd like to check in the init-fix stuff first, and independent of the global stuff
17:10 dalek rakudo: 6211ae2 | (Moritz Lenz)++ |  (2 files):
17:10 NotFound Infinoid: good idea
17:10 purl NotFound: Good Idea: Buying a pair of shoes on sale. Bad Idea: Buying a parachute on sale.
17:10 dalek rakudo: filetests shouldn't die on non-existant files.
17:10 dalek rakudo: Also added tests to t/spectest.data.
17:10 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/6​211ae22cf233e068fe9f7d93229fac45cb4f994
17:10 shorten dalek's url is at http://xrl.us/befef6
17:20 Andy joined #parrot
17:20 dalek parrot: r36417 | petdance++ | trunk/src/exec_save.c:
17:20 dalek parrot: Found an infinite loop
17:20 dalek parrot: review: https://trac.parrot.org/parrot/changeset/36417/
17:20 Andy I found a bug, I found a bug.
17:20 Andy Whoo
17:22 gerd joined #parrot
17:39 Theory joined #parrot
17:48 dalek rakudo: 13f6779 | (Moritz Lenz)++ | config/makefiles/root.in:
17:48 dalek rakudo: [Makefile] don't try to checkout http:////-URLs.
17:48 dalek rakudo: I hope that doesn't break stuff on Windows...
17:48 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/1​3f6779d5e51cd810bb75cbe3c75362b2ef4b5f6
17:48 shorten dalek's url is at http://xrl.us/befej8
18:01 Andy joined #parrot
18:11 Infinoid Shiny.  PARROT_DEFAULT_ENCODING and Parrot_default_encoding(interp) both exist, and they don't always do the same thing
18:11 Infinoid calling Parrot_make_default_encoding() affects the latter but not the former
18:11 tewk joined #parrot
18:11 NotFound Infinoid: Parrot_make_default_encoding should be killed
18:12 Infinoid Several pieces of code use PARROT_DEFAULT_ENCODING directly to create strings, so they won't get the new default
18:12 Infinoid I'm not sure what the design should be here, but this seems like another way the current implementation is broken
18:12 NotFound I can't think of any reasonable way of using a mutable default.
18:13 Infinoid Removing it is fine with me :)
18:15 NotFound Otherwise we may need a function called: Parrot_default_default_encoding
18:16 NotFound Or we can kill completely the default idea. If you want ascii, say it. If you want binary fixed8, say it.
18:16 Infinoid NotFound: Does my patch on TT #286 look reasonable?
18:16 NotFound And if you want ebcdic.... er.... did we have someone building in an ebcdic platform?
18:17 Infinoid Not that I know of, yet
18:17 Infinoid well, there are lots of places where having to explicitly specify it clutters things up
18:17 Infinoid Like, do I really want to have to specify that all of my exception strings are in ascii format, for every sanity check I add?
18:17 NotFound No mora than explicty specifying DEFAULT
18:18 Infinoid that's true.  But for most things, I think I'd prefer to have a "don't care" function I can call, instead
18:18 NotFound I thnk that this type of thing must *never* be ascii. If we want to allow localization they must be unicode utf8
18:20 Infinoid That's a reasonable default indeed
18:20 Infinoid And it doesn't affect my code in any way :)
18:20 NotFound Yeah, that's the beauty of utf8
18:20 Infinoid Except for performance for things like string_equal, I guess
18:21 NotFound string_equal can be easily optimized for case of same charset and encoding to a memcmp
18:23 Infinoid Or the string creation function can use ASCII by default for strings that have no high bit set, and utf8 otherwise
18:23 Infinoid I'm not sure if that makes things better or worse.
18:24 NotFound That is the way some parts of parrot use now, and I think that this is effectively pesimizing lots of string operations.
18:25 Infinoid I'm sure if you posted a patch with some measurements indicating improved performance, it would get lots of attention :)
18:25 NotFound Marking them as ascii or latin-1 has the main virtue of making faster access to individual characteres.... but... hey, we don't have functions to access individual characters :D
18:27 Infinoid I love how Parrot_str_indexed()'s documentation starts out saying it does that, and then says (maybe)
18:27 Infinoid I'll be back later :)
18:27 NotFound Anyway, for strings destined to show error messages to the user, faster cmp is not a constraint.
18:36 Andy joined #parrot
19:13 dalek parrot: r36418 | NotFound++ | trunk/src/string/charset/iso-8859-1.c:
19:13 dalek parrot: [string] fix name inconsistency in charset/iso-8859-1
19:13 dalek parrot: review: https://trac.parrot.org/parrot/changeset/36418/
19:34 dalek parrot: r36419 | jkeenan++ | trunk:
19:34 dalek parrot: Applying patch submitted by fperrad in https://trac.parrot.org/parrot/ticket/284.  'pdump' executable renamed 'pbc_dump' to avoid name conflict with other open source program.
19:34 dalek parrot: review: https://trac.parrot.org/parrot/changeset/36419/
19:45 geof joined #parrot
20:06 chromatic joined #parrot
20:12 Andy joined #parrot
20:30 pmichaud moritz++ # 13f6779
21:03 Andy joined #parrot
21:12 tetragon joined #parrot
21:12 idemal_ joined #parrot
21:26 bacek joined #parrot
21:27 dalek parrot: r36420 | petdance++ | trunk/src/pmc/exceptionhandler.pmc:
21:28 dalek parrot: consting aplenty
21:28 dalek parrot: review: https://trac.parrot.org/parrot/changeset/36420/
21:30 turbov21 joined #parrot
21:33 Theory joined #parrot
21:34 turbov21 What does this mean: "load_bytecode" couldn't find file 'PCT.pbc'
21:34 turbov21 (I'm trying to run a Perl program in Windows)
21:36 chromatic Sounds like an improper installation.
21:36 chromatic PCT is the base code for a compiler in Parrot.
21:38 turbov21 I just ran the Win32 installer off sourceforge
21:39 turbov21 Perl6 works alone, I can get to a command prompt.  It just flakes out when I try to load/run a script.
21:40 dalek parrot: r36421 | petdance++ | trunk:
21:41 dalek parrot: ornamented some function parameters
21:41 dalek parrot: review: https://trac.parrot.org/parrot/changeset/36421/
21:41 chromatic Which version of the Win32 installer?
21:41 turbov21 0.9.0
21:41 turbov21 0.9.0.1
21:42 chromatic Hm.  That's fairly up to date.  I don't remember if we solved the PCT installation problem by that point though.
21:43 turbov21 I haven't spent time trying to build it from source, just ran the installer.
21:45 chromatic I don't see fperrad on channel right now.  He might know better.
21:48 turbov21 Thanks.  I'll check back later then.  (Finally got Rakudo to build on Linux.)
21:54 dalek parrot: r36422 | NotFound++ | trunk/src/library.c:
21:54 dalek parrot: avoid some duplications in library.c
21:54 dalek parrot: review: https://trac.parrot.org/parrot/changeset/36422/
22:17 szabgab joined #parrot
22:44 rurban__ joined #parrot
22:54 TiMBuS joined #parrot
23:02 dalek joined #parrot
23:03 dalek parrot: r36423 | NotFound++ | trunk/src/debug.c:
23:03 dalek parrot: [debugger] avoid headerizer noise in internal functions of debug.c
23:03 dalek parrot: review: https://trac.parrot.org/parrot/changeset/36423/
23:03 dalek allison@perl.org | Debian/Ubuntu chroot Environment Setup:
23:03 dalek link: http://www.perlfoundation.org/parrot/index.​cgi?debian_ubuntu_chroot_environment_setup
23:03 shorten dalek's url is at http://xrl.us/beesjm
23:04 dalek parrot: r36424 | petdance++ | trunk/src:
23:04 dalek parrot: consting and removing unused vars
23:04 dalek parrot: review: https://trac.parrot.org/parrot/changeset/36424/
23:10 Limbic_Region joined #parrot
23:12 braceta joined #parrot
23:13 braceta joined #parrot
23:33 dalek parrot: r36425 | petdance++ | trunk/src/pmc:
23:33 dalek parrot: more consty consty
23:33 dalek parrot: review: https://trac.parrot.org/parrot/changeset/36425/
23:40 dalek parrot: r36426 | NotFound++ | trunk:
23:40 dalek parrot: [codingstd] a few fixes
23:40 dalek parrot: review: https://trac.parrot.org/parrot/changeset/36426/
23:41 Theory joined #parrot
23:41 Theory oh joy, piper is harassing me again
23:52 HG` joined #parrot

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

Parrot | source cross referenced