|
Parrot 3.6.0 "Pájaros del Caribe" released | parrot.org | Log: irclog.perlgeek.de/parrot/today | #parrotsketch meeting Tuesday 19:30 UTC Set by moderator on 23 July 2011. |
|||
|
00:05
kid51 left
00:07
dmalcolm left
00:25
theory joined
00:35
jsut_ joined
00:40
jsut left
00:49
theory left
00:53
kid51 joined
00:57
soh_cah_toa joined
01:14
bacek_at_work left
01:16
aloha left
|
|||
| soh_cah_toa | is there a way i can preserve a numbers base in pir? say i have $I0 = 0o755. when i print $I0 i get 493 instead, it's decimal representation. pretty much, i want to print an octal number | 01:23 | |
|
01:25
bacek_at_work joined
01:26
aloha joined
01:43
RobertLJ joined
01:44
Kulag left,
Kulag joined
|
|||
| whiteknight | sprintf("%o") ? | 01:46 | |
| soh_cah_toa looks | 01:47 | ||
|
01:49
whiteknight left
02:01
Kulag left
02:02
Kulag joined
02:13
soh_cah_toa left
02:15
Drossel joined
02:17
Kulag left
|
|||
| dalek | rrot: 358549e | jkeenan++ | Configure.pl: Remove import of Data::Dumper. |
02:20 | |
|
02:26
kid51 left
02:42
woosley joined,
RobertLJ1 joined
02:47
RobertLJ left,
preflex joined
02:51
preflex_ left
|
|||
| dalek | kudo/nom: 5bfd327 | Coke++ | t/spectest.data: track more test error status, reclaim some files. |
02:52 | |
|
02:59
soh_cah_toa joined
03:05
woosley1 joined
03:07
woosley left
03:08
RobertLJ1 left
03:11
woosley1 left
03:16
woosley joined
04:02
dalek left
04:03
dalek joined
|
|||
| cotto | ~~ | 04:14 | |
|
04:17
davidfetter joined
|
|||
| dalek | rrot: 62e830a | soh_cah_toa++ | runtime/parrot/library/osutils.pir: Added :named('verbose') argument to chmod() in osutils.pir. |
04:18 | |
| rrot: 171eb16 | soh_cah_toa++ | runtime/parrot/library/osutils.pir: Added perldoc for the install() function in osutils.pir. |
|||
| plobsing | ~~ | 04:46 | |
| msg whiteknight great work on the :tag business so far. I think we can do better than a linear scan of string equality test over all tag-sub pairs. | 05:25 | ||
| aloha | OK. I'll deliver the message. | ||
|
05:26
soh_cah_toa left
|
|||
| plobsing | msg whiteknight we could reduce the number of entries to be scanned by either mandating a single entry per tag (internal, not necessarily as exposed by PIR) or by using a 2-level index | 05:27 | |
| aloha | OK. I'll deliver the message. | ||
| plobsing | msg whiteknight we could improve O(n) performance to O(log(n)) by sorting (at compile time) and using a binary search | 05:28 | |
| aloha | OK. I'll deliver the message. | ||
|
05:31
woosley1 joined
05:33
woosley left
06:07
Drossel left,
Kulag joined
06:14
Drossel joined,
Kulag left
06:30
Drossel left,
Kulag joined
06:31
fperrad joined
|
|||
| dalek | kudo/nom: 6383a6d | jonathan++ | src/core/IO.pm: Implement &prompt. |
06:35 | |
|
06:36
daniel-s joined
06:39
TiMBuS left
06:59
AzureSto_ joined
07:01
AzureStone left
07:13
mj41 joined
07:16
TiMBuS joined
07:46
davidfetter left
|
|||
| dalek | rrot/m0-prototype: 7b03c58 | cotto++ | / (2 files): add a basic metadata test + assembler support (test fails) |
08:59 | |
| rrot/m0-prototype: 1eb0f8c | cotto++ | src/m0/perl5/m0_assembler.pl: fix metadata segment generation, all tests pass again |
|||
| kudo/nom: 09c8fab | moritz++ | src/core/ (3 files): add :D constraints to invocants of Str/Int/Num methods |
09:24 | ||
|
09:51
woosley1 left
|
|||
| dalek | p: f68aa56 | moritz++ | src/6model/reprs/P6opaque.c: [P6opaque] guard against unboxing type object, a common-ish cause for segfaults in rakudo/nom |
09:55 | |
|
10:39
daniel-s left
10:46
preflex_ joined
10:50
preflex left
10:52
ambs joined
11:09
contingencyplan left
11:44
daniel-s joined
|
|||
| atrodo | =~ | 11:51 | |
|
11:59
particle1 joined
12:03
whiteknight joined,
particle left
|
|||
| whiteknight | good morning, #parrot | 12:05 | |
| msg plobsing the :tag search only does linear string comparions until we find the index of the target string. It's unique since IMCC de-dups at compile time. After we find the index, it's an integer comparison. A compile-time sort and binary search would be a big improvement, yes | 12:09 | ||
| aloha | OK. I'll deliver the message. | ||
|
12:12
mikehh left
|
|||
| dalek | kudo/nom: c2307d4 | moritz++ | / (8 files): routines that unbox to native types or access attributes need :D in their signature. Also bump NQP_REVISION to get error checking when unboxing type objects |
12:27 | |
|
12:28
fperrad left
12:35
preflex joined
12:40
preflex_ left
|
|||
| dalek | kudo/nom: c087c52 | moritz++ | src/core/ (4 files): fix syntax error in previous commit, moritz-- |
12:45 | |
| kudo/nom: f3d1b8f | kboga++ | src/core/terms.pm: Implemented @*INC. |
12:55 | ||
| kudo/nom: 496ec52 | kboga++ | src/core/terms.pm: Implement $*PID. |
|||
| kudo/nom: 2708593 | kboga++ | src/core/terms.pm: Implement $*VM and clean up @*INC. |
|||
| kudo/nom: eba4254 | kboga++ | src/core/terms.pm: Implement $*OS and $*OSVER. Note: they get their info from $*VM<config> instead of the sysinfo dynop like master. |
|||
| kudo/nom: fde5bfd | kboga++ | src/core/terms.pm: Implement $*EXECUTABLE_NAME. |
|||
| kudo/nom: 241faa2 | moritz++ | src/core/terms.pm: Merge pull request #30 from kboga/special-vars Special vars |
|||
|
13:00
bluescreen joined
13:18
bubaflub joined
|
|||
| dalek | R: 336feda | (Jay Emerson)++ | README.pod: Updated requirements |
13:19 | |
| R: 41fc921 | (Jay Emerson)++ | benchmark3.nqr: Oops... not for the repository |
13:21 | ||
| bubaflub | ~ | 13:30 | |
|
13:37
benabik joined
|
|||
| benabik | ~~ | 13:41 | |
| whiteknight | hello benabik, bubaflub | ||
| benabik | o/ whiteknight! How's things? | ||
| bubaflub | morning whiteknight. | ||
|
13:44
fperrad joined
|
|||
| whiteknight | benabik: Good enough. You? | 13:54 | |
| benabik | whiteknight: Pretty good, although I really need a new power cord for my laptop… The insulation is dissolving. | 13:55 | |
| whiteknight | benabik: I ran into that same exact problem last weekend. The insulation wore out at one point, and the wires inside started to fray | 13:56 | |
| I pulled out my soldering iron, some patch wire, electrical tape and some cable ties, and fixed it | |||
| it's extremely ghetto, but it works | |||
| benabik | whiteknight: I coated the break in electrical tape and it's now splitting open further down. | ||
| whiteknight | ouch | ||
| I'd say go to radioshack and get some shrink tube, but it's hard to find a radioshack anymore | 13:57 | ||
| much less one that carries more than phones and a small assortment of stereo equipment | |||
| benabik | There are several around here. I'm poking Apple with a stick. I may still be in warrantee. | ||
| Actually, not only do I know of a RadioShack around here that still carries electronics parts, but there's an entire store dedicated to them downtown. | 13:59 | ||
| atrodo | I was surprised the other week when I actually went into a shack at the mall. They had actual electronic parts | 14:01 | |
| whiteknight | It's like the mythical atlantis! | 14:04 | |
| minus the men of greatness and superior intelligence | |||
| atrodo | I know! I thought they got rid of those YEARS ago | ||
|
14:47
benabik left
14:48
pjcj left
14:49
pjcj joined
14:50
JimmyZ joined
|
|||
| dalek | kudo/nom: 7cc1567 | moritz++ | t/spectest.data: 3 more passing test files |
15:07 | |
| kudo/nom: c22bfbd | moritz++ | src/core/Enumeration.pm: make $enumValue.Int less awkward |
|||
|
15:19
daniel-s left
15:41
soh_cah_toa joined
|
|||
| soh_cah_toa | ~~ | 15:42 | |
|
15:42
AzureStone joined
15:45
Kulag left,
AzureSto_ left,
RobertLJ joined
15:48
mj41 left
15:49
soh_cah_toa left
15:54
JimmyZ left
15:55
soh_cah_toa joined
|
|||
| dalek | rrot: f7f182e | soh_cah_toa++ | t/library/osutils.t: Added tests for file_exists() to t/library/osutils.t. |
15:58 | |
| soh_cah_toa | does t/library/osutils.t fail for anybody else b/c of 2 tests in test_newer()? | 16:00 | |
| whiteknight | Let me fire up my VM and try it | 16:03 | |
| dalek | kudo/nom: 00ad1de | moritz++ | src/core/Hash.pm: implement basic Hash.delete |
16:13 | |
| kudo/nom: 6eabc3a | moritz++ | src/core/Str.pm: remove workaround, now that we have Hash.delete |
|||
|
16:13
NotFound joined
|
|||
| whiteknight | soh_cah_toa: t/library/osutils.t passes on my system | 16:17 | |
| I jsut did a git pull and rebuild | |||
| soh_cah_toa | hmm... | ||
| dalek | rrot: 5ae62b7 | soh_cah_toa++ | t/library/osutils.t: Added test for slurp() to t/library/osutils.t. |
||
| soh_cah_toa | oh yeah, i think rebuilding would fix that b/c it compares the pbc file against the pir file and i just edited it w/o rebuilding | 16:18 | |
|
16:20
mj41 joined
16:22
bluescreen left,
dmalcolm joined
16:24
Kulag joined
|
|||
| soh_cah_toa | whiteknight: what do you think i should do for testing system()? it's a super simple test except there can't be any output (b/c it's interpreted as a TAP token) and that's fine | 16:26 | |
| whiteknight: i was using `test -e t/library/osutils.t` since there's no output but i don't want it to fail on win32 platforms. should i do something like "if Env['MSWin32'] do one test else do another"? | |||
| whiteknight | that's a very good question. I don't know what to do about system() | 16:30 | |
|
16:32
soh_cah_toa left,
dodathome joined
16:34
jay joined
|
|||
| dalek | R: 1e4897e | (Jay Emerson)++ | VERSION: Updated version for today's work |
16:42 | |
|
16:43
soh_cah_toa joined
16:47
rdesfo joined
|
|||
| dukeleto | NotFound: winxed.org is still empty. | 16:49 | |
| cotto | ~~ | ||
|
16:57
rdesfo left
17:00
soh_cah_toa left
|
|||
| whiteknight | hello dukeleto, cotto | 17:00 | |
| NotFound | dukeleto: I know | ||
| jay | On docs.parrot.org/parrot/latest/html/...e.pod.html there are references to "CHP-7-TABLE-3Table 7-3 shows the escape sequences for rules." | 17:09 | |
| I don't see the tables, though. | 17:10 | ||
| Are they basically PERL metacharacters and escape sequences? E.g. try perlish code and hope for the best? | |||
|
17:11
soh_cah_toa joined
|
|||
| dukeleto | NotFound: i have been telling people about winxed and pointing them there. That sucks. | 17:11 | |
| NotFound: do you want to just moved winxed.org to be a github repo, so we can use github pages and all parrot devs can update the site? | |||
| jay: they are perlish, yes | 17:13 | ||
| jay | [a-zA-Z][\\w\\.]* is then "start with an alpha character, followed by as many word (alphanumeric plus _) or dot characters as you want?" | 17:16 | |
| dukeleto | jay: looks to be that way | 17:17 | |
| jay | I love Perl. Or used to... I've been distracted. | ||
| dukeleto | jay: indeed. I do Perl for my $dayjob :) | 17:18 | |
| jay | Hmmm... I'm trying to customize by identifier: | 17:19 | |
| token identifier { | |||
| <!keyword> [a-zA-Z][\\w\\.]* | |||
| } | |||
| It says, "Confused at line 187, near "token iden" | 17:20 | ||
| I'm confused, too. !-) No biggie, but if it were something obvious I'd like to permit . in identifiers rather than use the stock <ident> | |||
| soh_cah_toa | jay: p6 character classes need <> around the brackets i.e. <[a-z]> | 17:21 | |
| jay | Ah... perl5 vs perl6 then... I'll try that. | ||
| and .. instead of - for character ranges? | 17:22 | ||
| soh_cah_toa | yes | ||
| <[a..z]> | |||
| jay | compiled. Thanks, I'll test it. | ||
| soh_cah_toa does not like that new syntax at all | 17:23 | ||
| NotFound | dukeleto: I've located the guy, I hope the site be alive again in few hours. | 17:26 | |
| dalek | rrot: 7b9fa19 | soh_cah_toa++ | t/library/osutils.t: Added tests for mkpath() and rmtree() to t/library/osutils.t. |
||
|
17:28
bluescreen joined
|
|||
| jay | soh_cah_toa: I'm not quite there.... the trailing * doesn't seem to be quite right for "as many of [\\w\\.] that I want. Hint? I have: <[a..zA..Z]><[\\w\\.]>* | 17:29 | |
| dukeleto | jay: you may want that * inside the <>'s | ||
| jay | Tried that and it didn't compile. | 17:30 | |
| I found a perl6 example (googled) that indicates my usage might be right: <[A-Z]><[a-z]>+ for something like a name, for example. | 17:31 | ||
| dukeleto | NotFound++ | ||
| jay | Ok, <[a..zA..Z]><[a..zA..Z.]>* seems to work.... the \\w may not be what it claims, or else something else subtle is going on. | 17:34 | |
| PerlJam | jay: I'm not sure if <[ ]> supports the character class shortcuts. The trailing * should be fine (it still means "zero or more of the previous atom") | ||
| jay | PerlJam: yes, I think I agree based on this little test. | 17:35 | |
| soh_cah_toa | jay: i'm guessing this is for identifier names, right? | ||
| jay | Yup. | ||
| soh_cah_toa | well, wouldn't you want a limit on the length of identifiers? using * won't do that | 17:36 | |
| unless r doesn't have a limit, i don't know | |||
| jay | If there is a limit, I've never hit it. I'm too lazy to actually use long names. However, the point is taken. | ||
| Ah, now I need to change the method.... what does the ~ mean here: my $name := ~$<ident>; | 17:40 | ||
|
17:40
particle1 left
|
|||
| soh_cah_toa | forces string context | 17:40 | |
|
17:41
theory joined
|
|||
| jay | Would <!keyword> $<myident>=<[a..zA..Z]><[a..zA..Z_.]>* then give the name "myident" for use in the corresponding action? | 17:42 | |
| soh_cah_toa | hmm... | 17:43 | |
| jay | Er, no. Sorry, let me struggle with this for a bit. | ||
|
17:44
theory_ joined
|
|||
| cotto_work | ~~ | 17:46 | |
| PerlJam | jay: it would, but it might not contain what you think it should :) | 17:47 | |
|
17:48
theory left,
theory_ is now known as theory
|
|||
| PerlJam | jay: might you want $<myident>=[<[a..zA..Z]>[\\w|'.']*] ? | 17:49 | |
| jay | Hmm.... I might have found a way, just a sec. | 17:50 | |
|
17:50
contingencyplan joined
|
|||
| jay | Ok, Here we go: | 17:50 | |
| token identifier { | |||
| <!keyword> <myident> | |||
| } | |||
| token myident { | |||
| PerlJam... unlss you think your suggestion might have a performance benefit? | |||
|
17:51
particle joined
|
|||
| PerlJam | maybe slightly, but I wouldn't worry about it. | 17:51 | |
| jay | I'm happy enough to have the blasted thing working, I'm not worried about it at all. Thanks PerlJam++ soh_cah_toa++ DukeLeto++ | 17:52 | |
| soh_cah_toa | jay: have you seen the spec where it says that identifiers can't begin w/ a digit nor underscore nor a period followed by a digit? | 17:53 | |
| cran.r-project.org/doc/manuals/R-la...dentifiers | |||
| jay | Haven't seen the spec, but I'm trying to be consistent with that, yes. | ||
| I think my rule is ok on that front. In fact, a leading . is allowed in R, and it creates a "hidden" variable of some sort. not recommended, but I just tested it. | 17:54 | ||
| Ah, I see, can't be .9ab but could be .ab, yes. | 17:55 | ||
| soh_cah_toa | b/c i'm trying to make a regex for you for that but i seem to forget negation in p6 | ||
| jay | Right -- and I forgot the digits. So I have a little more work to do. | ||
| PerlJam | jay: and you're definitely correct to use a subrule when the rules for identifiers are so complicated. | 17:56 | |
| jay | Back to Parrot: I'd like to create a function named which.max(). This is a legal R function name, but apparently not in PIR/NQP/Winxed. Any advice? | ||
| PerlJam, Thanks, I agree, easier to read. | |||
| soh_cah_toa | oh, that's just a function, not a method call? | 17:57 | |
| soh_cah_toa doesn't know if r is object-oriented | |||
| moritz | token identifier { \\. <alpha> \\w* } | 17:58 | |
| jay | Erm... I think of it as a function... I have a working runtime function (written in winxed) whichmax that works fine, I just want it to be which.max instead. | ||
| moritz | something like that? | ||
| PerlJam | jay: Where does your R implementation live? | ||
| jay | github.com/NQRCore/NQR | ||
| moritz: not an identifier issue I think. This is a Winxed/NQR/PIR naming issue... I just want to expose a Runtime function to the R user and need to get around the function name limition (apparently) of Winxed, in this case. | 17:59 | ||
| dalek | R: 3a2270f | (Jay Emerson)++ | src/nqr (4 files): New identifier, working on more runtimes |
18:00 | |
| jay | Glance at github.com/NQRCore/NQR/blob/master...ime.winxed and you'll see the function which.max that is the issue... if I get rid of the . it works fine. | ||
| This may be a non-trivial issue... perhaps I need to maintain a list of exposed user-functions that map to internal functions, or something like that. | 18:02 | ||
| dukeleto just found a way to coredump parrot with 2 lines of PASM | |||
| PerlJam | dukeleto: That's an aweseome achievement to unlock! :) | ||
| moritz | jay: in PIR, function names are arbitrary (always quoted in '') | 18:03 | |
| jay | Ok... so I could move these to PIR. Anybody know a clever fix in Winxed? | 18:04 | |
|
18:05
RobertLJ left,
soh_cah_toa left
|
|||
| PerlJam | jay: I don't know about "clever" but you could add a dispatch table as you suggested to only be used when it can't find the function via normal means | 18:05 | |
| (I assume winxed has exception mechanisms) | 18:06 | ||
| jay | Ok. So I have good instincts and I'll leave it on the back burner for now. !_) Bigger fish to fry, thanks PerlJam. | ||
|
18:06
soh_cah_toa joined
18:08
benabik joined
|
|||
| PerlJam | jay: you could also make a PIR layer that dispatches only the dotted names to winxed with some regular name-mangling (the down side would be that the mangled names would also be available in your runtime) | 18:09 | |
| (but if winxed has some sort of namespace support, you can mitigate the damage) | 18:10 | ||
| jay | How about this: a modification of the trick used to get around array: | 18:11 | |
| $P0 = find_lex 'array' | |||
| set_global '!array', $P0 | |||
| whiteknight | dukeleto: I really wish people weren't using PASM. I'm starting to think we should disallow it from use completely | ||
| benabik | whiteknight: People are still using PASM? | 18:12 | |
| jay | Uh oh. Am I causing trouble? | ||
| whiteknight | jay: no, you're fine | ||
| dukeleto just reported a ticket where we can segfault in two lines of pasm | 18:13 | ||
|
18:13
theory left
|
|||
| whiteknight | the reason is because PASM is T3H SUX | 18:13 | |
| dukeleto | trac.parrot.org/parrot/ticket/2165 | ||
| our TT bot is slow | |||
|
18:13
mj41 left
|
|||
| atrodo | well that's an embarrassing bug | 18:14 | |
| whiteknight | it's not a bug really | ||
| PASM is too low level for humans to be writing things in | |||
| atrodo | One could argue the same thing about memory management. | 18:15 | |
| whiteknight | if you make poorly formatted input at such a low level, and use the fast core which turns off bounds checking, you get poorly formed output | ||
| atrodo | Aye, but we should never segfault. | ||
| whiteknight | I don't see why not | ||
| I mean, at the PIR level we shouldn't. No | 18:16 | ||
| at the PASM level, all bets are off. If you're going to play with fire, we won't pretend we can prevent the burns | |||
| dalek | TT #2165 created by dukeleto++: Coredumping Parrot with only 2 lines of PASM for fun and profit | ||
| TT #2165: trac.parrot.org/parrot/ticket/2165 | |||
| whiteknight | The solution here is to either use the slow core, or to disallow pasm as a valid input format | ||
| atrodo | Which won't work, because you can always hand craft a pbc to do the exact same thing | 18:17 | |
| whiteknight | atrodo: And I can always hand-craft a machine code binary to segfault or worse without parrot | ||
| atrodo | But the container of that program, the OS, doesn't crash because of it | 18:18 | |
| whiteknight | I don't see any reasonable way to guarantee at the Parrot level that this cannot happen | 18:20 | |
| dukeleto | whiteknight: what does the slow core do on that input? | ||
| whiteknight | dukeleto: the slow core is the fast core, but it performs bounds-checking. I think it would throw an exception if we tried to go out of bounds | ||
| I don't think there is any possible way to prevent this in all cases | 18:22 | ||
| atrodo: with NCI functionality, any user can force a segfault at any time | 18:23 | ||
| get handle to some function, pass a NULL pointer to that function. Repeat | |||
| atrodo | Another way to think about it. Can you cause a segfault with a malformed class in JVM or .Net? | ||
| whiteknight | atrodo: I would be extremely surprised if you could not | ||
|
18:24
jsut joined
|
|||
| jnthn__ | You can segfault the CLR by doing NCI-ish stuff. :) | 18:24 | |
| jnthn__ did it :) | |||
| atrodo | Ya, once you leave the sandbox, I assume you can do anything to it. I'm talking about while you're inside the sandbox | ||
| whiteknight | atrodo: If you are at the level of a malformed assembly file, I'm sure you could segfault it | 18:26 | |
| atrodo | I would be surprised | ||
| That's a huge security issue | |||
| jnthn__ | Doubt a malfomred assmebly will segfault it. | 18:27 | |
| Since it does bytecode verification | |||
| benabik | I think JVM and CLR do verification on the bytecode... | ||
| jnthn__ | It can statically know what would be out of bounds. | ||
| whiteknight | That's the only way around it that I can see: lots of bytecode verification on load | ||
| plobsing | atrodo: how does being able to segfault the process with arbitrary code equate to a security problem? | 18:28 | |
| whiteknight | I just can't think of any ways which would be full-proof | ||
| dukeleto just sent github a pull request to detect Parrot-ish stuff : github.com/github/linguist/pull/58 | |||
| plobsing | you already have arbitrary code execution. you've won already. | ||
| dalek | R: f3f755d | (Jay Emerson)++ | src/nqr (3 files): Solved the dot (.) problem with which.max |
||
|
18:29
jsut_ left
|
|||
| whiteknight | The immediate problem is that users can type in bad pasm by accident. The solution I see to that problem is to disallow pasm | 18:32 | |
| We could make a lot of ugliness in IMCC go away pretty quick with that policy | 18:33 | ||
| and if M0 is coming around the mountain quickly enough, nobody would mourn the loss | |||
| benabik | I see value in PASM. I'd really like a textual format for PBC that we can assemble from and disassemble to. That said, I don't think the current PASM is that. | 18:34 | |
| whiteknight | it's not, it never has been, and it never will be. | ||
| clearly, nobody here is going to put in the necessary energy. PASM hasn't been touched in years | |||
| benabik | whiteknight: It's one of the things on my Parrot wishlist... | 18:35 | |
| whiteknight | And eventually, PBCs won't even be in that format, so PASM will become just another compatibility nightmare during the M0 transition | ||
| benabik: PIR is almost the same thing, except PIR actually lets you do most things you need. If you can disassemble to PASM, you can disassemble to PIR | 18:36 | ||
| benabik | whiteknight: Really? Can you write a 1:1 map of opcodes to PIR without IMCC trying to mangle it into something subtly different? | ||
| whiteknight | it may do some optimizations, and translations of some ops, but I think that's the same for both PIR and PASM modes | 18:37 | |
| so in short, if you write out the low-level ops by hand, I don't think the PIR would be any more mangled than the PASM would be | |||
| what kills you isn't the op mangling, it's the things like compile-time directives which aren't ops at all and are very hard to trace | 18:38 | ||
| benabik | I'd like a 0% mangling assembly language. | 18:39 | |
| whiteknight | that isn't PASM | ||
| benabik | No, it's what I'd like PASM to be. :-D | ||
| I can call it something else. | |||
| plobsing | that language needs a good way to represent object graphs (that's what PBC in the end). neither PIR nor PASM have that. | ||
| whiteknight | plobsing: what do you mean? | 18:40 | |
| plobsing | right now, both PIR and PASM assume we want only specify a collection of subs. that's not really what we want | 18:41 | |
| dalek | kudo/nom: 56e2229 | jonathan++ | src/core/traits.pm: Make $x is readonly work on parameters. |
||
| kudo/nom: 49ede3c | jonathan++ | src/binder/multidispatch.c: Missing decontainerize in junctional argument check in the multi-dispatcher. Gets us further with the junction tests. |
|||
| kudo/nom: 1aa1163 | jonathan++ | src/core/Numeric.pm: Remove an optimization that busts +SomeEnumValue. |
|||
| whiteknight | plobsing: ah, you're talking about constant tables | 18:42 | |
| plobsing | we want to specify collections of objects - classes, namespaces, methods, subs, keys, etc... | ||
| benabik | plobsing++ | ||
| whiteknight | I've always looked at the constants table as what should be the central item in a pbc | ||
|
18:43
Kulag left,
Kulag joined
|
|||
| plobsing | I think the constant table is a big part of what PBC is, or should be. | 18:43 | |
| but our textual representations are sorely lacking when it comes to providing access to it | 18:44 | ||
| whiteknight | yes, very much so | ||
| plobsing | :anon :immediate? not nearly enough. | ||
| whiteknight | it's not a bad start though, and it is sorely underused and underapprciated | 18:45 | |
| plobsing | it doesn't round-trip | ||
|
18:45
dodathome left
|
|||
| whiteknight | and the performance is lousy, and the safety and reentrancy of the implementation is lousy | 18:45 | |
| so what would the alternative look like? We've kicked around ideas to add object literals to PIR for a long time, and nobody ever jumped on it | 18:47 | ||
| not that we ever had a compelling design to jump on | |||
| dalek | kudo/nom: b420e0d | moritz++ | src/core/Hash.pm: fix typo in Hash.pm, mls++ |
||
| whiteknight | With vtable overrides and other garbage like that, I can't think of any real way for any syntax to be round-trip arbitrarily anyway | 18:48 | |
| unless the result after a disassemble was allowed to be human-unreadable gibberish | 18:49 | ||
| plobsing | I created a branch a while ago with a textual serialization format. Not entirely human-readable, but 100% equivalent to the binary | 18:50 | |
| whiteknight | is that branch still around? | ||
| plobsing | yes. it is called pasm-serializer IIRC | 18:51 | |
| whiteknight | I'll have to stare vacantly at it | ||
| hmm.. this is actually very interesting | 18:54 | ||
| plobsing | also, TT #1644 is tracking it | 18:55 | |
|
18:56
bubaflub_ joined
|
|||
| plobsing | has some example outputs | 18:56 | |
|
18:56
bubaflub left,
bubaflub_ is now known as bubaflub
|
|||
| whiteknight | so what would we need next, an assembler to put it back into .pbc format? | 18:56 | |
| and how does it handle opcodes? I don't see any special-purpose code for that | |||
| moritz | why do we need object literals for that? can't we just have a .sub that is executed at the time when the .pbc is created, and serialize its result? | ||
| plobsing | it doesn't. it only handles objects. | 18:57 | |
| so we'd need other parts | |||
| a top-level that split sections appart, and other tools to handle the other sections | |||
| whiteknight | moritz:can't disassemble it, no round-trip fidelity | ||
| dukeleto | whiteknight: "Round-Trip Fidelity" sounds like the name of bad movie... | 18:58 | |
| whiteknight | :) | ||
| plobsing: so something like an LEX file, with delimited regions for constants, subs, etc? | |||
| plobsing | whiteknight: yes, something like that could work | 18:59 | |
| well, subs don't get a delimited region, code does | |||
| subs live in the object section | 19:00 | ||
|
19:02
simcop2387_ joined
19:04
simcop2387 left,
simcop2387_ is now known as simcop2387
19:10
preflex_ joined
|
|||
| whiteknight | how do you have a sub object without specifying it's bytecode contents? | 19:10 | |
| just a "to be continued" marker somewhere? | |||
| plobsing | the way sub objects exist in-memory and in-bytecode: they simply have integer indices which are taken to mean into the associated bytecode segment | 19:11 | |
|
19:12
preflex left
|
|||
| plobsing | like I said, it isn't exactly human-readable. it may be parrot-core-dev-readable though. half of us are robots anyways. | 19:14 | |
|
19:14
dodathome joined
19:19
lucian joined
|
|||
| whiteknight | so pasm-serializer is not intended to replace something like IMCC, or pbc_dump? | 19:27 | |
| moritz: again, it's not round-trip safe | 19:28 | ||
| oh shoot, sorry. | |||
| my scrollbar was in the wrong place | 19:29 | ||
| moritz | no problem | ||
| plobsing | whiteknight: not on its own | ||
| moritz | I'm not convinced by that argument, but disassembling is a good reason | 19:30 | |
| plobsing | but it can be part of a larger solution that acts as a replacement | ||
| whiteknight | If we commit ourselves that PIR/PASM are not the ultimate, best possible textual pbc format, we need to start seriously considering some alternatives | 19:31 | |
| and I can't imagine anybody making the argument that PIR is the best possible language for it's particular place in the stack | 19:32 | ||
| plobsing | moritz: round-tripping is important if for no other reason that being able to prove that the disassembly is capable of fully representing the binary | ||
| dalek | kudo/nom: 19c000b | moritz++ | t/spectest.data: run two more test files |
19:33 | |
| whiteknight | if that pasm serializer PMC were a dynpmc, we could move it into master more quickly | 19:36 | |
| dalek | R: 66c2ae5 | (Jay Emerson)++ | src/nqr/Grammar.pm: Updated notes on grammar changes |
19:37 | |
| plobsing | whiteknight: do you have any tests for the :tag functionality yet? | 19:40 | |
| NotFound | winxed.org/ is back! | 19:41 | |
|
19:42
bluescreen left
|
|||
| whiteknight | plobsing: no .t files, no. Just a long series of "test1.pir" files in my working directory | 19:48 | |
| I'll turn them into tests soonish | |||
| plobsing: thanks for the feedback on that, by the way. A sort/bsearch would be a nice addition to id | |||
| I was thinking today that we could replace :main as well with the same kind of mechanism. PackfileView.main_sub() could get the list of all subs flagged :tag("main") and pop the last one off the list | 19:50 | ||
| or the first, whatever semantic we want | |||
|
19:52
RobertLJ1 joined
|
|||
| plobsing | whiteknight: I'm halfway through coding up the sort/bsearch. I'd really like to know that I'm not screwing anything up. | 19:52 | |
| whiteknight | I'll commit some tests tonight. It's pretty straight-forward | 19:54 | |
| get a packfileview, pfv.'subs_by_flag'("my flag") to get an array of Subs, execute the subs to see that all the ones you want trigger as you expect | |||
|
19:57
bluescreen joined
|
|||
| whiteknight | do a bsearch on the array. When you find an index matching the Sub you want, look to the left and to the right to get all the entries with the same string index | 19:59 | |
|
19:59
theory joined
|
|||
| whiteknight | if we really want to replace :load and :init, we need to make sure we get the ordering the same, but that's a detail | 19:59 | |
| actually, I don't know. Do we make ordering guarantees about those flags? | 20:00 | ||
| plobsing | they are ordered now, but I'm fairly sure that isn't documented | 20:01 | |
| whiteknight | When we do the deprecation for those things, we'll make explicit note that ordering, if any, won't be preserved | ||
| lucian is an idiot | 20:02 | ||
| dalek | kudo/nom: 118befb | pmichaud++ | src/core/Hash.pm: Make sure that Hash.STORE doesn't consume the thing it's storing. |
||
| whiteknight | lucian: having troubles? | ||
| NotFound | msg dukeleto winxed.org is back and the most recent version restored | 20:04 | |
| aloha | OK. I'll deliver the message. | ||
| lucian | whiteknight: i managed to lose data | ||
| that is, a couple of commits. i forgot to push before wiping my laptop and selling it | 20:05 | ||
| whiteknight | ouch | ||
| lucian | i did use osx's time machine to backup the entire hard drive, which is likely to be the reason i forgot to push | ||
| whiteknight | oh, so you have that backup somewhere? | 20:06 | |
| lucian | but i can't follow directory hard links on anything other than osx | ||
| so until i find an osx machine, those bits are unreachable | |||
| whiteknight | is it anything you can reproduce from memory? | 20:08 | |
|
20:11
NotFound left
20:15
NotFound joined
20:16
theory left,
theory joined
20:17
theory left
|
|||
| lucian | whiteknight: possibly, it was monday's work mostly | 20:18 | |
| whiteknight | I can't be too much help because I don't have a mac | 20:21 | |
|
20:26
whiteknight left
20:40
dodathome left
20:41
theory joined
|
|||
| dalek | kudo/nom: 29058a9 | jonathan++ | src/Perl6/Actions.pm: &?ROUTINE |
21:09 | |
| kudo/nom: 1c335ac | jonathan++ | src/core/Routine.pm: Support Routine.assuming as well as master did (some day we may want to do some magic with generating an updated signature and some such, but that's teh tricky). |
|||
| kudo/nom: 5161c8b | jonathan++ | t/spectest.data: Two more passing test files. |
|||
| rrot/whiteknight/imcc_tag: 440f18f | plobsing++ | compilers/imcc/pbc.c: [codingstd] c_arg_assert |
21:19 | ||
| rrot/whiteknight/imcc_tag: cb07909 | plobsing++ | compilers/imcc/pbc.c: [codingstd] linelength |
|||
| rrot/whiteknight/imcc_tag: 28b69a4 | plobsing++ | compilers/imcc/ (2 files): [codingstd] c_function_docs |
|||
| rrot/whiteknight/imcc_tag: 7835cd1 | plobsing++ | / (6 files): use a proper struct to manage the format of the tag_map |
|||
| rrot/whiteknight/imcc_tag: 4cf23c5 | plobsing++ | / (3 files): store tags as a sorted pairs list |
|||
| rrot/whiteknight/imcc_tag: ffe846f | plobsing++ | src/packfile/api.c: use binary search to determine range of tag map containing querried tag entries |
|||
|
21:20
bluescreen left
21:21
RobertLJ1 left
21:25
ambs left
21:44
Psyche^ joined
|
|||
| dalek | kudo/nom: b0a7bcd | jonathan++ | t/spectest.data: One more passing test file. |
21:48 | |
| kudo/nom: d9d0d00 | pmichaud++ | src/core/IO.pm: Fix filetest operators for non-existent files. |
|||
|
21:49
Patterner left,
Psyche^ is now known as Patterner
21:50
bubaflub left
21:54
lucian left
21:59
jay left
|
|||
| dalek | lrskate: 39438d0 | tcurtis++ | src/LALR/Generator/ (3 files): Add several things I've been working on but forgot to commit. |
22:00 | |
| lrskate: e262efb | tcurtis++ | src/LALR/Generator.winxed: Add another. |
|||
| lrskate: a1e93a6 | tcurtis++ | setup.winxed: Update setup.winxed. |
|||
| kudo/nom: c2794a4 | jonathan++ | src/core/Routine.pm: Routine.candidates |
22:05 | ||
| kudo/nom: 333a91f | jonathan++ | t/spectest.data: Run S06-multi/syntax.t. |
|||
|
22:14
theory left
|
|||
| dalek | kudo/nom: 764d2f9 | jonathan++ | src/core/traits.pm: A couple more trait handlers (though nothing yet answers them). |
22:40 | |
| kudo/nom: 075104d | jonathan++ | t/spectest.data: Two more passing test files. |
|||
|
22:45
theory joined
|
|||
| dalek | kudo/nom: 9246ce6 | jonathan++ | src/Perl6/Metamodel/BOOTSTRAP.pm: Add logic to attribute meta-object so it may be explicitly marked readonly, and able to default itself to rw if it wasn't marked readonly. |
22:50 | |
| kudo/nom: 0ca6dad | jonathan++ | src/Perl6/Metamodel/ (2 files): Implement rw handling for types in AttributeContainer role; also factor attribute composition into that role to take a little more bulk out of ClassHOW. |
|||
| kudo/nom: caf5d1a | jonathan++ | t/spectest.data: Run S12-class/rw.t. |
|||
|
23:00
bubaflub joined
|
|||
| bubaflub | ~ | 23:02 | |
|
23:02
jay joined
23:08
davidfetter joined,
theory left
23:10
kid51 joined
|
|||
| dukeleto | aloha, clock? | 23:25 | |
| aloha | dukeleto: LAX: Thu, 16:25 PDT / CHI: Thu, 18:25 CDT / NYC: Thu, 19:25 EDT / UTC: Thu, 23:25 UTC / LON: Fri, 00:25 BST / BER: Fri, 01:25 CEST / TOK: Fri, 08:25 JST / SYD: Fri, 09:25 EST | ||
|
23:26
NotFound left,
NotFound joined
23:27
GodFather joined
|
|||
| dalek | website: soh_cah_toa++ | HBDB Closed for Construction, Please Use Detour | 23:38 | |
| website: www.parrot.org/content/hbdb-closed-...use-detour | |||
| kudo/nom: b05b391 | jonathan++ | LHF.markdown: Update LHF; remove a dupe entry...nice as minmax op would be, it only needs to be listed once. :-) |
23:48 | ||
| kudo/nom: 5d31774 | jonathan++ | src/ (3 files): Allow state declarator and pass along a flag to the lexpad when something is state scoped. |
|||
| kudo/nom: 24c07b6 | jonathan++ | src/Perl6/Grammar.pm: Re-enable state scope declarator, in preparation for restoring state var functionality. |
|||
| kudo/nom: 2d89f4a | jonathan++ | src/Perl6/Actions.pm: Need action method for state scope declarator also. |
|||
|
23:51
whiteknight joined
|
|||
| cotto_work | hio whiteknight | 23:51 | |
| whiteknight | hey cotto_work | 23:52 | |
| pg parrot | 23:56 | ||
| damnit | |||
|
23:58
dmalcolm left
|
|||