|
Parrot 2.7.0 "Australian King" Released! | parrot.org Log: irclog.perlgeek.de/parrot/today | Nopaste: nopaste.snit.ch:8001 | close 25 tickets; merge branches; review Git conversion plan Set by moderator on 7 September 2010. |
|||
|
00:00
kid51 is now known as kid51_at_dinner
|
|||
| sorear | just skip_all nt/exit | 00:09 | |
| NotFound | I just deleted alll and forked again | 00:11 | |
| dalek | TT #1781 created by plobsing++: examples/benchmarks/freeze.pasm broken in r48918 | 00:25 | |
| TT #1781: trac.parrot.org/parrot/ticket/1781 | |||
|
00:26
eternaleye_ is now known as eternaleye
00:39
tcurtis joined
00:47
davidfetter left
00:54
kid51_at_dinner is now known as kid51
|
|||
| dalek | TT #1782 created by NotFound++: C++ build broken in r48923 | 00:59 | |
| TT #1782: trac.parrot.org/parrot/ticket/1782 | |||
| tcurtis | Hello, folks. | 01:07 | |
| whiteknight | hello tcurtis | 01:09 | |
| tcurtis | How's PLA coming, whiteknight? | 01:22 | |
| whiteknight | tcurtis: very well, thanks. I'm putting together some online documentation for it now. I'm planning a release to follow 2.8 | ||
| kid51 | whiteknight: How much linear algebra would someone need to know to appreciate/use PLA? | 01:25 | |
| whiteknight | kid51 | ||
| : not much, really. Basically it only provides some matrix types now. Bsically 2-D arrays | |||
| it does support some of the mathematical operations on matrices too, but those aren't really necessary to use | |||
| kid51 once studied linear algebra. Nixon was president. | |||
| whiteknight | :) | 01:26 | |
| the ComplexMatrix2D PMC type is an extremely efficient storage solution for Complex values | 01:28 | ||
| ...if that's something anybody cares about | |||
| NotFound | I suppose it can be useful for doing 3-D oprations for graphics. | ||
| kid51 | I ask because I've been thinking ... | 01:29 | |
| ... (which is always dangerous) ... | |||
| ... that in the first half of 2011, it would nice to be able to have a "road show" of projects built on Parrot ... | 01:30 | ||
| tcurtis | whiteknight: whiteknight.github.com/parrot-linear-algebra/ is excessively wide on my screen (I have to scroll right to read some of the text and to see the sidebar). On the PMC documentation pages, I have the opposite problem. | ||
| whiteknight | japhb, I think, was talking about using the matrix type as a screen buffer for graphics | ||
| kid51 | ... both the ones people expect (i.e., Rakudo) and the ones they don't expect (such as PLA) | ||
| dalek | rrot: r48925 | jkeenan++ | trunk (4 files): Applying patch submitted by ash++ in ļæ½trac.parrot.org/parrot/ticket/1774, plus additional tests for case of new configuration option '--without-readline'. |
||
| whiteknight | tcurtis: that's weird. I don't specify any screen widths, I don't think | ||
| kid51 | hmm, you can tell that's a whiteknight page: white type on black background | 01:31 | |
| not good on kid51's eyes | 01:32 | ||
| NotFound | kid51: I'm doing a Gtk wrapper via Gtk2 perl5 module via blizkost that will be good for presentations for people that only appreciate things with GUI. | ||
| whiteknight | kid51: I'm no artist. I rarely use color, and I stick with what I know | ||
| :) | |||
| kid51 | But I don't have problem tcurtis reports | ||
| dalek | TT #1774 closed by jkeenan++: Adding without-readline support | ||
| TT #1774: trac.parrot.org/parrot/ticket/1774 | |||
| whiteknight | kid51: If you can suggest to me a better color scheme, I'll consider changing it | 01:33 | |
| NotFound | whiteknight: you can add some men at work signs, to give it a full good old geocities fashion ;) | 01:34 | |
|
01:34
hercynium left
|
|||
| whiteknight | again, not an artist | 01:35 | |
| NotFound | Talking about art, we still lack a scalable version of the parrot logo. | 01:36 | |
|
01:39
ash_ left
|
|||
| whiteknight | well, on that front: is the current parrot logo something we want to keep and use, or do we want a different one? | 01:40 | |
| if we don't have a scalable version of it, we'll need to recreate it in a scalable format. Getting it right could be a huge pain in the butt | 01:41 | ||
| NotFound | If someone provides a better one, I suppose we can switch. | ||
| whiteknight | That's not really a serious proposal, I'm just musing out loud | 01:42 | |
| kid51 | whiteknight: When you get a chance, can you comment on trac.parrot.org/parrot/ticket/1450 ? | ||
| msg Coke Can you comment on trac.parrot.org/parrot/ticket/1450 ? Thanks. | 01:43 | ||
| purl | Message for coke stored. | ||
| aloha | OK. I'll deliver the message. | ||
| whiteknight | kid51: sure. I'll do it now | ||
| I'm fine with closing the ticket | 01:45 | ||
| kid51 | msg allison When you get a chance, can you comment on trac.parrot.org/parrot/ticket/905 ? Thanks. | ||
| purl | Message for allison stored. | ||
| aloha | OK. I'll deliver the message. | ||
| kid51 | whiteknight: ok, but presumably coke has something to say before we close it | ||
| plobsing | C++ build has been broken for a while. why don't we have ttbot++ complaining at us? | ||
| whiteknight | I'm sure. My vote is cast, anybody else can have their say too | ||
| NotFound | plobsing: usually I am ttbot++, but these days I've been buliding with C for blizkost compatibility. | 01:47 | |
| plobsing | I'm trying to fix TT #1782, but there have been a number of changes that each broke C++ build independantly. fun. | 01:49 | |
| NotFound | plobsing: I can take care of them. | ||
| (not today) | 01:50 | ||
| plobsing | I really don't know how to fix "src/packout.c:280:30: error: cast from āvoid*ā to āintā loses precision | ||
| it's an explicit cast. why can't C++ shut up and deal? | |||
| NotFound | Error? No warning? | 01:52 | |
| plobsing | yeah. error. no idea why. | ||
| NotFound | I'm too sleepy to look at it right now, sorry. | 01:53 | |
| plobsing | It's cool. I'm lukcy, I'll be able to figure it out somehow. | 01:54 | |
| lucky even | |||
| NotFound | We have some macros for convoluted casts. | ||
|
01:55
shockwave joined
|
|||
| shockwave | Hi. | 01:55 | |
| I'm having some trouble compiling a file to PBC. | 01:56 | ||
| kid51 | Uh-oh: Starting to get things like this in 'make test' on Darwin/PPC: src/gc/api.c:169: failed assertion 'PObj_is_PMC_TEST(obj)' | ||
| I was not getting that yesterday at this time. | 01:57 | ||
| shockwave | Up until now, I've running my compiler's output by simple doing: ./parrot -I someDir someDir/file.to_run.foo -- Which runs fine. | ||
| However, when I try to create a pbc, by adding the -o output_name, only a blank file is created. | |||
| I must be overlooking some silly detail. | |||
| plobsing | kid51: that's likely related to TT #1781 | 02:00 | |
| shockwave: what is the exact command you run that generates a blank PBC file? are there any diagnostic messages printed? | 02:01 | ||
| shockwave | @plobsing: I copied the parrot exec/lib to the output directory, so that I don't have to use the -I flag. But still, no luck. Here's the command: | 02:02 | |
| ./parrot -o tmp.rune TestOutput.s_stream_2_xml_2.proof | |||
| No diagnostics | |||
| if I remove the -o tmp.rune from the command, the file is ran fine. | 02:03 | ||
| plobsing | hmmm... parrot still uses file extension to determine filetype in a number of places. try changing the name to tmp.pbc. | ||
| cotto is afk for most of the evening | 02:04 | ||
| shockwave | @plobsing: thanks. That wrote a non-empty file. | 02:05 | |
| If I may ask you another question. | |||
| Now, when I run that pbc file, I get a Null PMC error. | 02:06 | ||
| dalek | TT #1783 created by jkeenan++: t/compilers/pge/p5regex/p5rx.t and t/compilers/pge/perl6regex/01-regex.t: ... | ||
| TT #1783: trac.parrot.org/parrot/ticket/1783 | |||
| shockwave | Do all the .include'ed files get baked into the PBC, or not? | ||
| plobsing | null pmc error... progress :-D | ||
| shockwave | Yep :) | ||
| To tell you the truth, when I saw that blank file get created a few times, my heart skipped a few beats. | 02:07 | ||
| plobsing | yes, all included files are baked into the PBC. | ||
| shockwave | Compared to that, errors are much better :) | ||
| plobsing | I'd suggest filling a ticket (if one doesn't already exist) about alternate file extensions. | 02:08 | |
| shockwave | That's weird, then. | ||
| @plobsing: If you want, I can do it. But, I don't really need it. And, in fact, I did mean to use the .pbc extension. I'm saving that .rune extension for something else. I just had it in mind, and kept writing it. | 02:09 | ||
| That null pointer error, otoh... that's something. | 02:10 | ||
| Some of the file my compiler generates have different file extensions, such as .proof, .init, and .main -- I hope that's not the case | 02:14 | ||
| They get read fine, like I said, when just running them with ./parrot ... | 02:15 | ||
| plobsing | really? I thought parrot would assume them to be pbc files by defalt. | 02:16 | |
| s/defalt/default/ | |||
| shockwave | The only reason I'm doing that is to match them up with their correct .pir counterparts. | ||
| I'll test naming them all with the .pir extension. | 02:17 | ||
|
02:18
kid51 left
02:20
whiteknight left
02:22
sjn joined
|
|||
| tcurtis | shockwave: ooc, is your compiler available anywhere online? | 02:22 | |
| shockwave | tcurtis: Unfortunately no. | 02:23 | |
| Darn, that issue is not name related :( | |||
| I manually edited the files, and renamed them with the .pir extension. | |||
|
02:24
kid51 joined
|
|||
| plobsing | shockwave: if I've understood correctly, you are compiling up a number of files using a bunch of includes. could you try compiling smaller sets of files or even individual files in an attempt to pinpoint the problem? | 02:26 | |
|
02:27
patspam joined,
patspam left
|
|||
| ttbot | Parrot trunk/ r48925 MSWin32-x86-multi-thread make error tt.taptinder.org/file/cmdout/389770.txt ( tt.taptinder.org//buildstatus/pr-Pa.../rp-trunk/ ) | 02:28 | |
| plobsing | yay! ttbot lives! | ||
| shockwave | @plobsing: Sure. But, I'm gonna have to do this tomorrow. I can't keep my eyes open anymore. (I get up at 5am). | ||
| I'm sure I'll be back asking for more help. | |||
| Thanks for getting me this far. | 02:29 | ||
| bye | |||
|
02:29
shockwave left
02:35
janus left,
ash_ joined
02:41
alin left,
ash_ left
02:44
kid51 left
02:48
janus joined
03:25
sjn left
03:36
sjn joined
04:24
luben left
05:32
gaurav joined
05:44
gaurav left
|
|||
| dalek | rrot: r48926 | plobsing++ | trunk (7 files): fix C++ build |
05:57 | |
| rrot: r48927 | chromatic++ | trunk/src/gc/system.c: [GC] Fixed unoptimized builds in stack tracing. marked don't need. This whole system is a mess of false and foolish premature isomorphism, but we can live with this for now (unless someone beats me to cleaning up this approach before we replace this part of the GC). |
06:31 | ||
| TT #1782 closed by plobsing++: C++ build broken in r48923 | 06:35 | ||
| TT #1782: trac.parrot.org/parrot/ticket/1782 | |||
| rrot: r48928 | chromatic++ | trunk/src/pmc/nci.pmc: [PMC] Fixed GC bug in NCI's mark(). |
06:47 | ||
|
07:38
tcurtis left
07:59
tadzik joined
08:06
cosimo left
|
|||
| mikehh | t/op/integer.t and t/pmc/bigint.t FAIL in make corevm/make coretest - error:imcc:loadlib directive could not find library `sys_ops' | 08:32 | |
| all other tests PASS (pre/post-config, make corevm/make coretest, test, fulltest) at r48928 - Ubuntu 10.04 i386 (g++ with --optimize) | |||
|
08:38
tadzik left
08:45
barney joined
09:00
cosimo joined
09:12
mikehh left
|
|||
| dalek | ast: defbf3b | moritz++ | S0 (2 files): random rakudo unfudges |
09:27 | |
| moritz | whoever configured dalek, roast should report o #perl6, not #parrot | 09:28 | |
| *to | |||
| dalek | ast: 3d90aad | moritz++ | S03- (2 files): fix two tests that used non-matching series endpoints |
09:34 | |
| ast: c3f4ab2 | moritz++ | S32-list/grep.t: fix another series misuse |
09:40 | ||
| ast: 2832230 | moritz++ | S03-operators/series- (2 files): [series] fudge fixes |
09:52 | ||
|
09:58
whiteknight joined
10:03
barney left
10:07
mikehh joined
10:08
contingencyplan joined
10:12
fperrad joined,
baest left
|
|||
| whiteknight | good morning, #parrot | 10:12 | |
| dalek | ast: d3868b4 | moritz++ | S04-statements/given.t: [given.t] unfudge test using .so |
10:18 | |
|
10:22
tadzik joined
10:44
slavorg left
10:51
slavorg joined
|
|||
| dalek | rrot: r48929 | whiteknight++ | trunk/docs/project/release_manager_guide.pod: fix a typo with the 3.0 release date. Add dates of releases through 3.6 |
10:58 | |
| allison | msg kid51 commented on TT #905 | 11:13 | |
| purl | Message for kid51 stored. | ||
| aloha | OK. I'll deliver the message. | ||
|
11:13
allison left
|
|||
| dalek | rrot: r48930 | NotFound++ | trunk/t/pmc/packfile.t: add some more Packfile PMC tests |
11:31 | |
|
11:45
atrodo left
|
|||
| dalek | TT #1784 created by whiteknight++: distutils fails sdist and bdist if zlib is not installed | 11:53 | |
| TT #1784: trac.parrot.org/parrot/ticket/1784 | |||
| tadzik | new parrot fails with LDFLAGS=--as-needed, is that known? | 11:58 | |
| (fails to build) | |||
| whiteknight | fperrad: ping | 12:04 | |
| how do I go about making a .deb file for my project using distutils? | 12:10 | ||
|
12:31
sjn_ joined
12:33
sjn_ left
|
|||
| dalek | nxed: r627 | NotFound++ | trunk/winxedst1.winxed: minor refactors |
12:41 | |
|
12:47
aloha left
12:48
bacek left
12:59
kid51 joined
|
|||
| kid51 | Just got this build failure on Darwin/PPC at r48930: <src/glut_nci_thunks.nci | 13:03 | |
| src/gc/api.c:169: failed assertion 'PObj_is_PMC_TEST(obj)' | |||
| make: *** [src/glut_nci_thunks.c] Error 134 | |||
| Re-building to confirm. | |||
|
13:18
Patterner left
|
|||
| kid51 | Well, I got 'make' to complete. But am still getting same test failures reported in TT #1783 yesterday. | 13:18 | |
|
13:28
Psyche^ joined,
Psyche^ is now known as Patterner
|
|||
| plobsing | kid51: can you get a backtrace of the failing assertion? (I tried, but I can't get it to fail on linux/x86_64) | 13:46 | |
| fperrad | pong whiteknight | ||
| whiteknight | fperrad: how do I make a .deb using distutils? | ||
| I can see some stuff in the code, but I can't quite figure out all the steps to make the package | 13:47 | ||
| kid51 | plobsing: I don't know how to do that | ||
| plobsing | kid51: do you have gdb? if you run the failing parrot program (gdb --args ./parrot etc.pbc), it will halt at the failing assertion. then run bt to print a backtrace. | 13:48 | |
| whiteknight | fperrad: if I do "setup.nqp control" it looks like I get all the .deb metadata. Is that what I'm supposed to do or is there a different step I should run? | 13:50 | |
| fperrad | whiteknight, distutils doesn't make .deb, like it makes a RPM or SRPM, | ||
| but the command : | |||
| $ setup.pir control | |||
| creates some useful files in port/debian | 13:51 | ||
| dalek | TT #1781 closed by plobsing++: examples/benchmarks/freeze.pasm broken in r48918 | ||
| TT #1781: trac.parrot.org/parrot/ticket/1781 | |||
|
13:51
tadzik left
|
|||
| whiteknight | yeah, okay. so after that I can use some external tools to make the .deb? | 13:51 | |
| fperrad | the next step is read : www.debian.org/doc/maint-guide/ | ||
| kid51 | plobsing: I typed: gdb --args ./parrot t/compilers/pge/p5regex/p5rx.t | 13:55 | |
| When the gdb prompt appeared, I typed: run t/compilers/pge/p5regex/p5rx.t | |||
| All the tests ran and I got this result: Program exited normally. | |||
| whiteknight | fperrad: yeah, I've been reading that. Thanks. | ||
| plobsing | well there's your fix... just run parrot through gdb all the time ;-) | 13:56 | |
| kid51 | Got same result with: run t/compilers/pge/perl6regex/01-regex.t | 13:57 | |
| plobsing | do the same files fail when run with just ./parrot ? if not maybe the harness is using some flags. | 14:01 | |
| kid51 | plobsing: Running: ./parrot t/compilers/pge/p5regex/p5rx.t t/compilers/pge/perl6regex/01-regex.t ... | 14:04 | |
| ... the first test fails at the same point (after completing 233), with this: | |||
| src/gc/api.c:169: failed assertion 'PObj_is_PMC_TEST(obj)' | |||
| Abort trap | |||
| And, earlier, I got the same result running the 2nd test just by itself in the same way | 14:05 | ||
| plobsing | can you try (under gdb and not) the --gc-debug flag? | 14:06 | |
| kid51 | perl t/harness --gc-debug t/compilers/pge/p5regex/p5rx.t .... ends with: | 14:07 | |
| t/compilers/pge/p5regex/p5rx.t .. 209/960 src/gc/api.c:169: failed assertion 'PObj_is_PMC_TEST(obj)' | |||
| t/compilers/pge/p5regex/p5rx.t .. Failed 727/960 subtests | |||
| (less 8 skipped subtests: 225 okay) | |||
| Again invoking 'gdb' as before, only calling: run --gc-debug t/compilers/pge/p5regex/p5rx.t, I get same result, i.e., all tests complete and I conclude with: Program exited normally. | 14:09 | ||
| dalek | ast: fd2903a | moritz++ | S03-operators/series-nonnumeric.t: fix another old-school series test |
14:10 | |
| kudo: 62e168d | patrickas++ | src/core/operators.pm: Starting to implement new series spec |
14:11 | ||
| kudo: 953705a | patrickas++ | src/core/operators.pm: There is no more need to check of the wrong side |
|||
| kudo: 6483439 | patrickas++ | src/core/operators.pm: Simplify the limit-reached code since geometric series don't require use of abs() anymore |
|||
| kudo: c6e6807 | patrickas++ | src/core/operators.pm: Simplify the code, we don't need the type of the series anymore |
|||
| kudo: 9f204b1 | patrickas++ | src/core/operators.pm: 1..* ... 5 and @fib ... 8 (where @fib is infinite lazy) now work |
|||
| kudo: 927c28c | patrickas++ | src/core/operators.pm: Simplify limit check and when in doubt next is .succ |
|||
| kudo: 09f36de | patrickas++ | src/core/operators.pm: .succ instead of src/core/operators.pm.succ |
|||
| kudo: 23cffdb | moritz++ | src/core/operators.pm: Merge remote branch 'patrickas/series-new-spec' This implements the new series spec, and at the same time significantly simplifies the code. To quote github.com/rakudo/rakudo/pull/4 : * No more special cases for geometric series switching sign * No more special case 'limit is on the wrong side' * Literal limit must smart match exactly * Code on the rhs returns true to indicate limit has been reached. * Code on the rhs cannot have arity > 1 |
14:12 | ||
| plobsing | kid51: well, that's pretty much the end of my bag of tricks. I really don't see what gdb could be doing to modify the program execution so that it doesn't fail. | 14:15 | |
| kid51 | ISTR that we've encountered this paradoxical situation before | ||
| NotFound | Is Darwin, it adapts to survive. | 14:16 | |
| kid51 | I am now bisecting | ||
| dalek | ast: 9560604 | moritz++ | S03- (10 files): move series test to new S03-series/ directory |
14:17 | |
| ast: e118651 | moritz++ | S03-series/misc.t: [series] comma before series is caught at compile time, so change test to eval_dies_ok |
|||
| kudo: fb4feba | moritz++ | t/spectest.data: track test file rename |
|||
| kid51 | i.e., a situation in which a test file fails via 'prove' or 'perl t/harness' but succeeds when run thru 'gdb'. | 14:20 | |
| dalek | rrot: r48931 | NotFound++ | trunk/src/pmc_freeze.c: check PMCNULL instead of NULL and improve the Exception thrown in Parrot_visit_loop_visit |
14:35 | |
| ast: 4e24c6c | moritz++ | S03-series/ (4 files): lots of series unfudges for rakudo |
14:36 | ||
| kudo: a93dcb6 | moritz++ | / (2 files): [docs] update ChangeLog |
14:41 | ||
|
14:42
cognominal left,
cognominal joined
|
|||
| dalek | ast: 1beb062 | moritz++ | S03-series/nonnumeric.t: [series] oops, unfudged too much in previous commit; adding back a fudge marker now |
14:42 | |
| kid51 | r48918 is the source of the problem in TT #1783: trac.parrot.org/parrot/ticket/1783#comment:4 | 14:46 | |
|
14:49
ash_ joined
15:03
patspam joined
15:04
davidfetter joined,
kid51 left
15:08
whiteknight left
15:19
tcurtis joined
|
|||
| dalek | p-rx: 184e828 | moritz++ | src/Regex/P6Regex/Grammar.pm: catch p5 gneral quantifiers |
15:21 | |
| NotFound | The next commit is funny | 15:26 | |
| cotto sighs | 15:33 | ||
|
15:33
ruoso joined
|
|||
| dalek | rrot: r48932 | NotFound++ | trunk (3 files): add a check for duplicated VTABLE functions in PMCs and remove two duplicates found while tesing it |
15:42 | |
| rrot: r48933 | nwellnhof++ | trunk/src/ops (2 files): Fix find_codepoint opcode without ICU |
|||
|
15:43
patspam left
15:48
mikehh left
|
|||
| dalek | TT #1758 closed by plobsing++: Segfault caused by new dynop mapping code | 15:49 | |
| TT #1758: trac.parrot.org/parrot/ticket/1758 | |||
|
15:56
kid51 joined
|
|||
| dalek | rrot: r48934 | NotFound++ | trunk/t/pmc/packfile.t: fix test for Packfile set_integer_keyed_str with invalid key |
15:58 | |
| nopaste | "plobsing" at 192.168.1.3 pasted "TT #1783 debug patch" (13 lines) at nopaste.snit.ch/23297 | 16:11 | |
| plobsing | kid51: nopaste.snit.ch/23297 will turn the failed assertion into an infinite loop. you then can use gdb to attach to the already started program (using the 'attach <PID>' command) and obtain a backtrace. | 16:12 | |
|
16:27
tadzik joined
|
|||
| kid51 | plobsing: When I apply that patch, then call 'make', 'make' is hanging at Linked: parrot_nci_thunk_gen ./parrot_nci_thunk_gen --loader-name=Parrot_glut_nci_loader --loader-name=Parrot_glut_nci_loader --loader-storage-class=PARROT_DYNEXT_EXPORT --output=src/glut_nci_thunks.c <src/glut_nci_thunks.nci | 16:29 | |
| pmichaud | there's an argument to be made that r48932 requires a deprecation cycle. | 16:31 | |
| plobsing | then it is working. the assertion failed. get the PID of the hung parrot process and attach. | ||
|
16:34
sjn left
|
|||
| NotFound | pmichaud: What is the reason? | 16:37 | |
| purl | rumour has it the reason is that the company isn't VC funded. VC funded companies tend to spend money like water or that you didn't patch it yet or that you didn't patch it yet or that you didn't patch it yet | ||
| pmichaud | NotFound: because there could be users that rely on that particular bug, and now their code doesn't work. | 16:38 | |
| kid51 | plobsing: gdb ./parrot_nci_thunk_gen 11663 | ||
| leads to | |||
| purl | somebody said leads to was a type of verb. | ||
| kid51 | 0x0207e7c0 in Parrot_gc_mark_PMC_alive_fun (interp=0x600c30, obj=0x1065de0) at src/gc/api.c:169 | ||
| 169 while (!PObj_is_PMC_TEST(obj)); | |||
| plobsing | yes. that's the line of the failing assertion. running 'bt' should get you a backtrace now. | 16:39 | |
| NotFound | pmichaud: I profoundly dislike the idea of supporting stupidity. | ||
| Including our won. | |||
| pmichaud | that's part of what a deprecation policy is for, though. | ||
| NotFound | If something is obviously wrong, it should be fixed. | 16:40 | |
| pmichaud | I didn't say "don't fix it", I said "don't break our users' code" | ||
| nopaste | "kid51" at 192.168.1.3 pasted "'bt' after applying plobsing's diagnostic patch to api.c" (31 lines) at nopaste.snit.ch/23298 | ||
| NotFound | pmichaud: What user code? Code affected by that thing disappears. | ||
| pmichaud | Rakudo doesn't build because of that patch. | 16:41 | |
| kid51 | plobsing: is that what you were looking for? | ||
| NotFound | pmichaud: It has duplicated VTABLE functions on its PMCs? | ||
| pmichaud | There's one yes. I agree it's a mistake (and I'm fixing it now) | 16:42 | |
| But the point of the deprecation policy is so that user code doesn't get surprised by these sorts of changes. | |||
| plobsing | kid51: yes, that backtrace should help tremendously. I'm not all that familiar with gc (and trying to stay that way), so I'll defer to chromatic for the fix. | ||
| pmichaud | (which we did.) | ||
| NotFound | pmichaud: I don't expect anyone to be negatively impacted by better error detection. | 16:43 | |
| pmichaud | NotFound: then you were wrong. | ||
| the better approach is to issue a warning until the deprecation point, and fail after that. | |||
| anyway, it's not serious enough for me to argue heavily for. I'm simply pointing out that it violates the deprecation policy. | 16:44 | ||
| NotFound | pmichaud: I don't buy that. If someone wants to do the deprecation cycle, fine, but I'm not going to do it. | 16:45 | |
| pmichaud | Fair enough. | ||
| I'm not saying we absolutely have to make this fix. But as one of the active users of Parrot I think I also have a responsibility to let Parrot devs know when they've done something that breaks our code. | 16:46 | ||
| If you'd prefer that I shut up about it, then I will. | |||
| NotFound | Sorry if I'm being rude, but I'm tired of seeing lots of breaks without complaints, and complains for absolutely minor points. | 16:47 | |
| pmichaud | breaks without complaints? | ||
| NotFound | Changes that break lot of things. Like the dynop debacle, for example. | 16:48 | |
| pmichaud | I did complain about that. | ||
| NotFound | But it passed | ||
| pmichaud | So, you would prefer I just shut up and not report these things? | 16:49 | |
| tcurtis | And resulted in some changes to our deprecation policy. | ||
| NotFound | I'm not sure about what I prefer. | 16:50 | |
| pmichaud | sometimes when we discover that something breaks the deprecation policy, we decide to go with the lesser evil of causing some pain for downstream users rather than trying to strictly follow the policy, and to me that's okay. But we should at least acknowledge when it occurs. (more) | 16:51 | |
| and this includes letting our downstream users know that a fundamental change was made outside of the policy. | 16:52 | ||
| kid51 | plobsing++ for diagnostic assistance; let's hope c. can figure this out | ||
| pmichaud | but simply saying "sorry, we don't support stupidity" doesn't seem to me to be very supportive. | 16:53 | |
| NotFound | In a extreme case, someone can argue that fixing a segfault breaks the deprecation policy, because some code may be expecting that the segfault happens. | ||
| pmichaud | so, you're saying we should be free to ignore the policy in extreme cases, and we should be able to ignore it in non-extreme cases. | ||
| NotFound | I just don't think that the purpose of the deprecation policy is to keep errors. | 16:54 | |
| pmichaud | it's there to keep errors that downstream projects may be inadvertently relying upon. | 16:55 | |
| kid51 | Patrick, may I ask a question ... | ||
| pmichaud | kid51: sure | ||
| kid51 | Does Rakudo (or any other downstream project) have some idea of which bugs it is *advertently* relying on? | ||
| pmichaud | it's there to give downstream users the opportunity to adjust to things rather than "surprise! Your project no longer builds!" | ||
| NotFound | pmichaud: I completely fail to imagine how someone mey be relying on having two chunks of source code and one being ignored. | ||
| kid51 | (I haven't been involved in any downstream projects, so I don't have the user's perspective.) | 16:56 | |
| pmichaud | NotFound: because pmc2c now dies where previously it succeeded. | ||
| NotFound: in other words, when I type "make" for Rakudo, it no longer gets to a running perl 6 executable. | |||
| it now stops with an error | |||
| NotFound | Because there is an error. | 16:57 | |
| pmichaud | an error that previously wasn't one. | ||
| it may have been poor coding style, but it wasn't a fatal error. | |||
| kid51: sometimes we do know that we're relying on certain bugs, yes. | 16:58 | ||
| when that happens, I try (but often fail) to add a test for the buggy behavior so that someone else knows we're relying on it | |||
| tcurtis | Speaking of deprecation, was the charset/encoding distinction at all user-facing? | 16:59 | |
| pmichaud | tcurtis: very. | ||
| at least at the opcode level it certainly is. | |||
| at the PMC level I suspect it could be user-facing as well, especially for users that create their own String PMC types (such as Rakudo does) | 17:00 | ||
| kid51: but many times it's hard to know if a given feature is in fact a bug or "working as designed" | |||
| NotFound | In fact is hard to know is it was designed. | 17:01 | |
| s/is/if | |||
| pmichaud | NotFound: agreed. | ||
| in the case of the segfault example, we've already declared that "Parrot should never segfault", so any user that relies on a segfault is in fact relying on an explicitly deprecated feature. | 17:03 | ||
| tcurtis | Did the charset_massacre merge affect the user-visible behavior of strings? | ||
| NotFound | Good point ;) | ||
| kid51 | IIRC, our next *supported* release is Sept 21. | ||
| pmichaud | kid51: Oct 21 | 17:04 | |
| kid51 | k | ||
| pmichaud | Jan, Apr, Jul, Oct | ||
| NotFound | I'm having this failure during the build with --optimize=-O3 | ||
| builtins_gen.pir compilers/pge/PGE/builtins.pg | |||
| NULL current PMC at 0 in visit_loop_todo_list - thaw | |||
| current instr.: 'parrot;PGE;Perl6Grammar;Compiler;__onload' pc 24 (runtime/parrot/library/PGE/Perl6Grammar.pir:75) | |||
| kid51 | CAn we put in a deprecation notice today such that it will take effect after Oct 19 ... and revert the commit, changing die to warn? | ||
| pmichaud | kid51: that would be the normal procedure, yes. | 17:05 | |
| in rakudo's case it won't matter in about 10 minutes, as I'm fixing the rakudo bug (at least the one we've found) | |||
| NotFound | The error message comes from r48931, previously it was a NULL PMC accessed. | ||
| pmichaud | NotFound: line 75 is load_bytecode 'PGE.pbc' | 17:07 | |
| kid51 | NotFound: I think we could live until Oct 19 with a deprecation notice, and a revert of r48932, and a change from 'die' to 'warn' at line 74 of lib/Parrot/Pmc2c/PMC.pm | ||
| pmichaud | so it does sound like a thaw issue | ||
| NotFound | kid51: As I said, I don't oppose to do it, but I'm not going to do it myself. | ||
| kid51 | Then I'll do it. | 17:08 | |
| NotFound | Fine | ||
| jnthn | plobsing: I just blogged something roadmap-ish. 6guts.wordpress.com/2010/09/11/a-ro...x-changes/ | 17:12 | |
| as I mentioned I would last night. | |||
| :-) | |||
| pmichaud | kid51++ | 17:19 | |
| plobsing | jnthn++ # roadmap | 17:25 | |
| jnthn | :-) | ||
| jnthn afk for noms | |||
|
17:28
chromatic joined
|
|||
| dalek | TT #1785 created by jkeenan++: src/pmc/oplib.pmc, src/pmc/resizeablestringarr.pmc: Deprecate duplicated ... | 17:29 | |
| TT #1785: trac.parrot.org/parrot/ticket/1785 | |||
| chromatic | Testing a fix for TT #1783. | 17:33 | |
| pmichaud | kid51++ # because one karma wasn't enough | ||
| chromatic | The warning is my preference for now as well. | 17:34 | |
|
17:35
sjn joined
17:36
sjn left
|
|||
| dalek | kudo: 085920f | pmichaud++ | src/pmc/perl6multisub.pmc: Remove extra (unused) VTABLE get_pmc_keyed_int from perl6multisub. Discovered by NotFound++ (Parrot r48932) and masak++. |
17:37 | |
|
17:38
nwellnhof joined,
sjn joined,
hudnix left
17:39
hudnix joined
|
|||
| plobsing | NotFound: I can't reproduce your --optimize=-O3 error. what compiler/system are you on? | 17:39 | |
| NotFound | plobsing: amd64 debian gcc 4.3.2 | ||
|
17:41
patspam1 joined,
patspam1 left
|
|||
| nwellnhof | chromatic: TT #1783 might be caused by something on the stack that looks like a PMC pointer, but isn't. | 17:41 | |
| chromatic | Yeah, I found what should be an easy fix. | 17:42 | |
| nopaste | "nwellnhof" at 192.168.1.3 pasted "--- a/src/gc/system.c +++ b/sr" (12 lines) at nopaste.snit.ch/23299 | 17:44 | |
| nwellnhof | Something like that? | ||
| chromatic | That was my first thought, but I found something better. | 17:45 | |
| dalek | TT #1786 created by jkeenan++: Trac: 'Milestone' drop-down needs to display 2.10 and 2.11 | 17:46 | |
| TT #1786: trac.parrot.org/parrot/ticket/1786 | |||
| chromatic | kid51, can you test r48936? | 17:49 | |
| dalek | rrot: r48935 | jkeenan++ | trunk (4 files): TT #1785: partially revert r48932 to conform to deprecation policy. |
17:55 | |
| rrot: r48936 | chromatic++ | trunk/src/gc/system.c: [GC] Made is_pmc_ptr() much more accurate. |
|||
| kid51 | chromatic in progress | 17:56 | |
| nwellnhof | chromatic: i'm not sure your patch is safe. it can access random memory between pmc_min and pmc_max which might be unmapped. | 17:59 | |
| chromatic | Is the check better after contained_in_pool? | 18:00 | |
| nwellnhof | yes, that should be safe. | ||
| kid51 | chromatic: Got: make: *** [compilers/opsc/gen/Ops/Emitter.pir] Segmentation fault | 18:04 | |
|
18:04
luben joined
18:07
kid51 left
18:08
patspam joined
|
|||
| dalek | nxed: r628 | NotFound++ | trunk/winxedst1.winxed: fix a mistake in keyed base classes |
18:09 | |
| nxed: r629 | NotFound++ | trunk/ (3 files): Error for no program specified in installable driver |
18:14 | ||
|
18:28
jhelwig left
|
|||
| dalek | rrot: r48937 | chromatic++ | trunk/src/gc/system.c: [GC] Inverted the condition of r48936 for safety. not be a PMC could read unmapped memory. Kablammo. |
18:29 | |
|
18:52
M_o_C joined
|
|||
| plobsing | NotFound: it appears this is another victim of -finline-functions. | 18:52 | |
| NotFound | plobsing: some function in particular? | 18:53 | |
| plobsing | not sure yet, but I can get it to fail with -O2 -finline-functions but not with only -O2 | 18:54 | |
| I'm not certain, but I suspect our stack-scanning code. | |||
| nwellnhof | plobsing: is this with gcc 4.3? | 18:55 | |
| NotFound | I tend to suspect of wrong const casts or lack of NULLOK somewhere | ||
| plobsing | nwellnhof: yes. | 18:56 | |
| NotFound: how could either of those cause only inlined versions to fail? | 18:57 | ||
| NotFound | plobsing: inlining combined with others optimizations may delete checks for NULL | ||
| nwellnhof | i have the suspicion that gcc 4.3 with -finline-functions also inlines functions with __attribute__((noinline)). | 18:58 | |
| NotFound | And const assumptions can make use values on register rather than re-reading memory. | ||
| When the const qualifiers ara lies... Boom | 18:59 | ||
| plobsing | the thing is, that PMC hasn't been alive long. it gets created at src/pmc/imageio.pmc:769 and the failure occurs in the first loop iteration of Parrot_visit_loop_visit called on the next line. | 19:01 | |
| it doesn't appear to be put into any const containers | 19:02 | ||
| dalek | nxed: r630 | NotFound++ | trunk/winxedst0.cpp: start reworking of base class specifiers in stage 0 |
19:08 | |
| NotFound | WTF is the private1 flag in imageio? | 19:09 | |
| plobsing | whether or not we have an external packfile constant table to work from. | 19:10 | |
| we use this knowledge to avoid generating extra PBC headers and also to leverage the existing string constants when available | 19:11 | ||
| I would have given it a better name, but I couldn't get the pre-processor to expand things in the correct order. | |||
| NotFound | Where is the todo attribute initialized? | 19:18 | |
| plobsing | ImageIO.init | 19:20 | |
| NotFound | Empty | ||
| Where is populated? | |||
| plobsing | ImageIO.shift_pmc | 19:21 | |
| NotFound | unused = STATICSELF.shift_pmc(); ? | ||
| plobsing | yes. that is used to populate the first entry in the todo list | ||
| the first being the actual object that will be evenutally returned (ImageIO.get_pmc) | 19:22 | ||
| NotFound | What if the first object is a PMCNULL? | ||
| plobsing | it cannot be NULL. the null PMC is treated separately. also it is not null in this case (otherwise it would fail elsewhere) | 19:24 | |
|
19:27
M_o_C left
19:30
nwellnhof left
|
|||
| NotFound | Unfortunately pbc_dump fails the same way. | 19:32 | |
|
19:35
fperrad left
|
|||
| nopaste | "plobsing" at 192.168.1.3 pasted "PGE.pbc dump" (10005 lines) at nopaste.snit.ch/23300 | 19:35 | |
| NotFound | I don't see anything wrong in a packfile.winxed dump | ||
| plobsing | the packfile is fine. I can read it and manipulate it with my previously installed parrot tools. | 19:36 | |
| NotFound | For me it fails at loading Perl6Grammar.pir | 19:37 | |
| I can compile it to pbc, and looks fine, but executing the pbc gives the failure. | 19:38 | ||
|
19:40
Paul_the_Greek joined
|
|||
| Paul_the_Greek | Good afternoon [here in Massachusetts], folks. | 19:41 | |
| NotFound | At least the pbc_dump backtrace is shorter | 19:43 | |
| plobsing | NotFound: first discrepancy I found - failing case reads a type of 4(UnManagedStruct) for the first PMC, as opposed to 8 (ParrotInterpreter) for the non-failing case | 19:49 | |
|
19:54
pjcj left
|
|||
| NotFound | plobsing: the failure is while thawing the first item inside that, it isn't? | 19:57 | |
| plobsing | yes. and the first PMC constant of any PBC file is a ParrotInterpreter. | ||
| dalek | kudo: 8669d77 | Util++ | build/PARROT_REVISION: Bump PARROT_REVISION to include nwellnhof++ fix for non-ICU Parrots. Fixes RT#77778 part 2. |
19:58 | |
| plobsing | NotFound: it appears the ImageIO is being fed a buffer that is 8 bytes offset from where it should be | 20:06 | |
| NotFound | plobsing: I'm not sure if it's really reading the constant segment | 20:10 | |
| plobsing | It is. If I use image->strstart[8] as the array base in the failing case, it matches up with image->strstart[0] in the non-failing case | 20:11 | |
| I'm currently focused on PF_fetch_buf, which appears to be where the trouble is. | 20:12 | ||
| NotFound | Nice, we just need to look for an 8 that fails when being inlined X-) | ||
| plobsing | I suspect an opcde_t* isn't being incremented properly. | 20:13 | |
| NotFound | Yes, bytecode and fixups gets unpacked without problem. | 20:14 | |
|
20:17
AzureSto_ joined
20:20
AzureStone left
|
|||
| dalek | rrot: r48938 | chromatic++ | trunk/src/string (2 files): [string] Optimized Parrot_str_substr(). source directly. (Hooray for immutable STRINGs!) This optimizes Rakudo slightly by allocating fewer STRING headers. |
20:25 | |
|
20:26
tadzik1 joined
20:27
ash_ left
20:28
tadzik left
|
|||
| plobsing | NotFound: I'm testing a fix. Turns out gcc was breaking pointer aliasing. | 20:28 | |
| NotFound | plobsing: where? | 20:31 | |
| plobsing | in PF_fetch_opcode | ||
| stream wasn't being updated | |||
| at least when called from PF_fetch_buf | |||
|
20:33
Paul_the_Greek left
20:36
tadzik1 left
|
|||
| nopaste | "chromatic" at 192.168.1.3 pasted "Now that trunk works, can I get some review on this patch?" (53 lines) at nopaste.snit.ch/23301 | 20:38 | |
| plobsing | NotFound: should be fixed at r48934 | ||
| NotFound | plobsing: it buils with --optimize='-O2 -finline-functions' Testing now with -O3 | 20:42 | |
| dalek | rrot: r48939 | plobsing++ | trunk/src/packfile/pf_items.c: tidy up PF_fetch_opcode. |
||
| rrot: r48940 | plobsing++ | trunk/src/pmc_freeze.c: eliminate unused variable |
|||
| NotFound | -O3 build and pass tests. plobsing++ | 20:46 | |
| plobsing | chromatic: patch seems to be missing a mark and sweep run that could free up more memory before compact | 20:47 | |
| also the "worthwhile" test for compacting is gone, so the comment is a bit misleading | 20:48 | ||
| chromatic | We could yank the compact there too. | 20:49 | |
| NotFound | chromatic: patch pass tests in amd64 -O3 | ||
| plobsing | benchmarks or gtfo | 20:50 | |
| chromatic | Suggestions for a STRING-heavy benchmark? | ||
| I wrote this patch in response to pmichaud's mail sometime last week about Parrot's GC. | 20:51 | ||
| sorear | micro or macro? | ||
| NotFound | I'm going to install int and build winxed. Not a good benchmark but can give some idea. | ||
|
20:52
patspam left
20:55
nwellnhof joined
|
|||
| NotFound | No noticeable difference | 20:56 | |
| chromatic | It'll have to be something NQP-rx based, I'm sure. | ||
| nwellnhof | chromatic: what's the purpose of the patch? if we skip a GC run there, we will simply run the GC at the next header allocation. | 20:58 | |
| chromatic | It's to decouple allocating new fixed-sized pools from GC runs. | 20:59 | |
| It's much more likely to get into a situation where we've exhausted one fixed-size pool without making any GCables GCable than it is to fill up a GCable pool without making any GCables GCable. | 21:00 | ||
| nwellnhof | the timing of GC runs now depends on a global condition. it is checked in two places: allocation of a memory block for fixed size headers and allocation of a memory block for variable sized buffers. | 21:09 | |
| if remove the check in one of these places, the GC will be run as soon as we reach the other place. | 21:10 | ||
| dalek | nxed: r631 | NotFound++ | trunk/winxedst1.winxed: fix mistake with trans_ops commited when refactored lib loading |
||
| chromatic | Enough other things allocate from pools we don't need to mark/sweep that I'm not sure running a full mark/sweep on exhaustion is useful. | 21:12 | |
| nwellnhof | exhaustion of a pool doesn't really trigger a GC run. it's just a good place to check for the global condition. | 21:16 | |
| we have to change that condition if we want to make a difference. | 21:17 | ||
| taking freed memory into account, for example. | |||
| chromatic | It's not even exhaustion of a pool, just not enough space in a pool for an allocation. | 21:18 | |
|
21:24
pjcj joined
|
|||
| nwellnhof | but that doesn't trigger a GC unconditionally. it's only the place where we check whether to run a GC. we could put that check in as many places as we want. it wouldn't make a difference. | 21:25 | |
| plobsing | nwellnhof: so if we're running the GC too much, then it is because this condition is too often true? | 21:31 | |
| nwellnhof | plobsing: yes | 21:33 | |
| but the condition is easily tunable to avoid GC runs at the expense of memory. | |||
| plobsing | why don't we make the threshold higher then? or make it configurable such that rakudo could 'gcadvise .GONNA_ALLOCATE_A_LOT' | 21:34 | |
| nwellnhof | making it configurable is a good idea, IMO | 21:35 | |
| chromatic | Not everything that allocates a lot of memory from here is visible to Rakudo. | 21:39 | |
| plobsing | such as? | 21:40 | |
| purl | hmmm... such as is done with isgt vs islt now | ||
| plobsing | purl, forget such as | ||
| purl | plobsing: I forgot such as | ||
| chromatic | Resizing storage of hashes and arrays. | ||
| plobsing | resizing an individual array or hash isn't really visible. but rakudo knows that at startup it is going to be populating a lot of such objects. | 21:43 | |
| dalek | izkost: 489e3c7 | NotFound++ | src/pmc/bkmarshal.c: Fix mistake caused by my previous commits, not sure why |
21:47 | |
|
21:51
kid51 joined
|
|||
| plobsing | hmmm... reviewing pmichaud's email, that's not really the problem. rakudo simply has a lot of objects and it is expensive to trace through them all. | 21:55 | |
| pmichaud | I looked at it further, a bit later. | 21:56 | |
| That program resulted in 1700 mark and sweep runs | |||
| inside of the call to .'readall'() | |||
| plobsing | we fixed that part thought, didn't we? | 21:57 | |
| chromatic | This patch gave me a 20% performance improvement ont hat benchmark though. | ||
| pmichaud | plobsing: 'readall' was fixed, yes. That doesn't fix the generic problem that lots of string concats result in a huge number of GC marks. | 21:58 | |
| I can come up with a straightforward Perl 6 program that exhibits the same behavior. | |||
| sub join($sep, *@list) { my $s = ''; for @list { $s = $s ~ $_ }; $s }; .... | 21:59 | ||
| oops, and I need a $sep in there. Anyway, you get the point. | |||
| sub join($sep, *@list) { my $s = shift @list; while @list { $s = $s ~ $sep ~ shift @list }; $s } | 22:00 | ||
| plobsing | understood. so the problem is that GC is triggered to frequently by this common but pathological case? | 22:01 | |
| not that GC costs too much to run? | |||
| pmichaud | plobsing: I think it's both. | ||
| GC costs too much to run, and this case ran it too often. | |||
| simply loading static code shouldn't increase our GC load as much as it did. | 22:02 | ||
| let me put it a different way. | |||
| when perl6.pbc isn't loaded, we have 1740 mark runs. | |||
| when perl6.pbc is loaded, we have a few more mark runs, *and* those runs take a heck of a lot longer. | |||
| enough to make the difference between 2 seconds and 22 seconds. | 22:03 | ||
| and perl6.pbc is static. | |||
| (it's static from the perspective of "it's not doing anything other than sitting in memory") | |||
| plobsing | I think we could squeeze some GC performance out of inlining common mark vtables. good candidates: Sub, FixedIntegerArray, Key, etc | ||
| pmichaud | I think the order-of-magnitude win is to find some way to avoid "mark the world". | 22:04 | |
| chromatic | That's minor optimization though. | ||
| Mark/sweep the world is just too expensive. | |||
| pmichaud | put another way, those optimizations would have likely made zero difference to my example. | ||
| chromatic | Look at it this way: if we *know* we've thawed all Sub attributes from PBC, why do we ever need to mark them? | ||
| Those Sub attributes should never change, if we've designed Sub correctly. | 22:05 | ||
| pmichaud | ...sub attributes aren't static? | ||
| plobsing | they aren't | ||
| pmichaud | they do change, unfortunately. | ||
| (my remark was in answer to chromatic's question... we mark them because they aren't static) | |||
| plobsing | multidispatch, autoclose, various other "features" | ||
| chromatic | They should be static. | ||
| dalek | rrot: r48941 | NotFound++ | trunk/src (4 files): replace several usages of Parrot_str_new_noinit(interp, 0) with CONST_STRING(interp, "") |
||
| pmichaud | chromatic: probably they should be, but several pieces of parrot's design depend on them not being static. | 22:06 | |
| chromatic | Sure, and we need to fix that too. | ||
| The solution to "GC takes too long!" is "Don't mark/sweep things that never change." and "Mark/sweep only what may have changed." | |||
|
22:07
ash_ joined
|
|||
| plobsing | avoiding marking the world is hard. we could make the world smaller though. I doubt most Perl 6 programs actually make use of all of the facilities rakudo provides. If these could be lazily loaded somehow... | 22:07 | |
| dalek | kudo: 9734b29 | chromatic++ | src/pmc/objectref_pmc.template: [PMC] Made ObjectRef's mark() more accurate. |
||
| pmichaud | plobsing: that's actually pretty hard to do (more) | ||
| most of Perl 6's features are built in terms of other Perl 6 features | 22:08 | ||
| I suppose some of them could be autoloaded. But I suspect it doesn't decrease the core working set by a significant amount. | 22:09 | ||
|
22:09
kid51 left
|
|||
| pmichaud | (I could be wrong about that; but that's my guess based on the code I've seen.) | 22:09 | |
| plobsing | every single method, block, hash access, namespace lookup, etc adds more gcables | 22:10 | |
| I imagine those add up quite quickly | |||
| oh, I forgot function and method calls | 22:11 | ||
| pmichaud | from a design perspective, the existence of lots of gcables shouldn't be causing huge performance penalties, though. | ||
| if it does, that's a design flaw. | |||
| We want programs running on Parrot to be able to handle millions of elements, if not more. | 22:12 | ||
| plobsing | It sounds as if we really want a generational gc | ||
| chromatic | We do. | ||
| pmichaud changes his 'm' to a 'b'. | 22:13 | ||
|
22:13
dafrito joined
|
|||
| jnthn | We can avoid making the world every startup by making it once at compile time and serializing it. But that doesn't mean it won't be in memory. | 22:13 | |
| pmichaud | jnthn: did you mean s/making/marking/ ooc? | 22:14 | |
| jnthn | making | ||
| pmichaud | we're talking about "marking" | ||
| (gc) | |||
| jnthn | My point being that without switching to a generational scheme, even doing less work at startup to construct all of those objects isn't going to mean there's any less to mark. | ||
| pmichaud | I think plobsing's point was that by loading less of core Perl 6, there would be less to mark. | 22:15 | |
| i.e., make some parts of the core dynamically loadable | |||
| instead of all-in-one-pbc as we do now. | |||
| jnthn | That's less than trivial. | ||
| If we can find a way to mmap PMCs into memory then we could get it for free out of demand paging by the OS though. :-) | 22:16 | ||
| pmichaud | :-) | ||
| gist.github.com/575618 # a simple experiment | 22:22 | ||
| 99,000 PMCs is not, in the overall scheme of things, a lot of PMCs | |||
| (IMO) | 22:23 | ||
|
22:24
kid51 joined
|
|||
| NotFound | Someone know what is it? CONST { IMCC_INFO(interp)->is_def = 1; } INTC var_or_i '=' any_string | 22:24 | |
| Declaring a .const pmc by number? | 22:25 | ||
| pmichaud | maybe declaring a const int? | 22:27 | |
| e.g., .const int somevalue = 4 | |||
|
22:28
M_o_C joined
|
|||
| NotFound | const int type_enum = atoi(type); switch (type_enum) case enum_class_Sub: .... | 22:28 | |
| pmichaud | or is it the case of | 22:29 | |
| NotFound | Looks like a PMC by number. Isn't that deprecated since long time ago? | ||
| pmichaud | .const 'Sub' xyz = 'somesub' | ||
| ? | |||
| oh yes, it may indeed be the deprecated form | |||
| .const Sub xyz = 'somesub' # iirc | |||
| NotFound | No, that isin the next branch: | CONST { IMCC_INFO(interp)->is_def = 1; } STRINGC var_or_i '=' any_string | 22:30 | |
| pmichaud | aha | ||
| NotFound | There is a unused static function in imc.y used only by this. | ||
| pmichaud | old PGE (parrot 0.4.10) has .const .Sub corou = '%0_corou' | ||
| so I'm guessing it's the one that handled the .Sub | 22:31 | ||
| NotFound | Unused -> uncovered | ||
| pmichaud | looks like PGE switched to the .const 'Sub' form in 0.8.1 | 22:33 | |
| NotFound | Time to kill, then? | ||
| chromatic | Do it. | ||
| pmichaud | I'd try killing it and see what happens. | ||
| I suspect it's just a fossil. | |||
| NotFound | The way to see what happens is to commit it. | 22:34 | |
| pmichaud | if pge/pct survive the change, then I can't imagine anything in rakudo or other HLLs will be affected. | ||
| 0.8.1 was like... a very long time ago. :) | 22:35 | ||
| NotFound | pmichaud: if coverage report says is uncovered, sure pge/pct can survive... or our test suite is a lot worse than I can imagine. | ||
| pmichaud | good point. | ||
| anyway, +1 to kill :) | |||
|
22:38
hudnix left
22:46
nwellnhof left
|
|||
| luben | chromatic, is it time to merge hash-inlined branch? | 22:52 | |
| chromatic | I'm all for it. | 22:53 | |
| luben | by the way, make headerizer spits 2 warnings in compilers/imcc/parser_util.c (try_find_op) | 22:54 | |
| NotFound | luben: I'v seen it, going to fix in a while | ||
|
22:54
kid51 is now known as kid51_at_dinner
|
|||
| luben | ok, I'll wait for the fix in headerizer and the I'll merge the branch into trunc | 22:55 | |
| dalek | rrot: r48942 | NotFound++ | trunk/compilers/imcc (3 files): delete fossil support for the long time ago deprecated form of declaring const PMC in PIR |
22:56 | |
|
22:58
davidfetter left
|
|||
| NotFound | luben: done, r48943 | 23:04 | |
| luben | :) thanks. goint to resolve conflicts now, test and merge | 23:05 | |
| dalek | TT #1783 closed by jkeenan++: t/compilers/pge/p5regex/p5rx.t and t/compilers/pge/perl6regex/01-regex.t: ... | ||
| TT #1783: trac.parrot.org/parrot/ticket/1783 | |||
| NotFound | The better way to improve coverage is to delete unused code :) | 23:07 | |
| luben | Why does Bison generated parsers are checked in the repository? | 23:10 | |
| NotFound | luben: we don't want to require flex/bison install to build parrot. | 23:11 | |
| luben | aha, yes... but requires a lot of hand-work on generated code in branch merges | 23:12 | |
| dalek | rrot: r48943 | NotFound++ | trunk/compilers/imcc (2 files): add can return null decorator to the try_find_op imcc function and make it static |
||
| plobsing | luben: I tend to just regenerate those files when they have a merge conflict. | 23:13 | |
| NotFound | luben: just ignore it, and rebuild after the mergr | ||
| chromatic | Same with headerizing. | 23:14 | |
| luben | aha, yes... nice to know | ||
|
23:14
dafrito left
23:26
M_o_C left
|
|||
| NotFound | The function Parrot_pcc_do_run_ops is never used in the repo. Its pod says "Used in tailcall for updating RetContinuation". Can we consider it covered by the deprecation and deletion of RetContinuation ad kill it? | 23:27 | |
|
23:37
patspam joined
|
|||
| jnthn | Anyone know if the PMC compiler can handle an ATTR that is a function pointer? | 23:41 | |
| tcurtis | jnthn: are you porting your new metamodel back to Parrot? | 23:43 | |
| jnthn | "back"? :-) | ||
| But yes, to :-) | |||
| tcurtis: I blogged a roadmap earlier. | 23:44 | ||
| tcurtis: Figured I'd make the first little steps. :-) | |||
| plobsing | jnthn: probably not a straight function pointer declaration, but a typedef'd thingy should probably work. | 23:45 | |
| luben | hash_inline_func merged :) | ||
| jnthn | plobsing: OK | ||
| dalek | rrot: r48944 | luben++ | trunk (11 files): Merge hash_inlined_func branch |
23:46 | |
| rrot: r48945 | luben++ | trunk (2 files): headerizer run |
|||
| NotFound | But you need to typedef it in a place the generated header can see | ||
| jnthn | ah, hm | ||
| Maybe I'm safer just declaring the struct I want and sorting stuff out manually. | |||
| plobsing | and, last I tried, I couldn't tell pmc2c to put things in the header | 23:47 | |
| jnthn | Probably want it to be a PMC. | ||
| (reprs) | |||
| plobsing | note that nci.pmc skirts the whole issue by using void* | ||
| jnthn | heh | 23:48 | |
|
23:48
hudnix joined
|
|||
| jnthn | oh hmm...GET_ATTR and SET_ATTR also always do "have we been subclassed" checks... | 23:48 | |
| Er, subclassed at PIR level | |||
| Don't really want that. | 23:49 | ||
| plobsing | you can avoid that by getting the attributes struct and doing element lookup directly. | ||
| jnthn | Yeah | ||
| ttbot | Parrot trunk/ r48944 i386-linux-thread-multi make error tt.taptinder.org/file/cmdout/390546.txt ( tt.taptinder.org//buildstatus/pr-Pa.../rp-trunk/ ) | ||
|
23:49
particle left
|
|||
| jnthn | Well, thing is, almost all the usage of the stuff in the struct will be by stuff outside the PMC anyway | 23:49 | |
| The PMC isn't much more than a "holder" | |||
| jnthn is still working out how to map everything to C / Parrot. | 23:50 | ||
|
23:50
particle joined
|
|||
| jnthn | I guess if you squint a struct full of function pointers is a tiny bit like an interface. :-) | 23:51 | |
| NotFound | My god! It's full of function pointers! | 23:52 | |
| jnthn | I accidentally the whole struct. | 23:54 | |
| cotto | In C, we call those "objects". ;) | 23:55 | |
| jnthn | C-ing is believing... | 23:57 | |