Camelia, the Perl 6 bug

IRC log for #parrot, 2011-08-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:04 whiteknight soh_cah_toa: no. The Sub PMC will contain some basics, like the arity and the flags for arguments, but not the values themselves
00:04 whiteknight the values are stored in the CallContext, which you can play with if you get a reference to it
00:05 cognominal joined #parrot
00:07 Coke dafrito++ dafrito++ # docs work
00:09 dalek rakudo/nom: 2542366 | jonathan++ | tools/build/NQP_REVISION:
00:09 dalek rakudo/nom: Another NQP revision bump, to get a fix for a segfault reported by tadzik++.
00:09 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/2542366a2a
00:11 dalek rakudo/nom: 30b59b1 | Coke++ | tools/build/Makefile.in:
00:11 dalek rakudo/nom: Fix dynext build targets
00:11 dalek rakudo/nom: This avoids continual re-builds on win32.
00:11 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/30b59b1445
00:14 kurahaupo joined #parrot
00:14 whiteknight dafrito++ indeed
00:18 cotto ~~
00:55 daniel-s joined #parrot
00:58 dalek parrot/whiteknight/frontend_parrot2: 6c59d7b | Whiteknight++ | frontend/parrot2/ (2 files):
00:58 dalek parrot/whiteknight/frontend_parrot2: Flesh out more logic in prt0.pir, and move the help and version messages there because it's much easier to do with heredocs
00:58 dalek parrot/whiteknight/frontend_parrot2: review: https://github.com/parrot/parrot/commit/6c59d7bd8b
00:58 dalek parrot/whiteknight/frontend_parrot2: 5a2e3dd | Whiteknight++ | frontend/parrot2/main.c:
00:59 dalek parrot/whiteknight/frontend_parrot2: Rip stuff out of parrot2/main.c that doesn't need to be there anymore. Start rearranging some of the logic. It's much cleaner now.
00:59 dalek parrot/whiteknight/frontend_parrot2: review: https://github.com/parrot/parrot/commit/5a2e3dd1b1
01:08 cotto seen nbrown?
01:08 aloha nbrown was last seen in #perl6 1 days 1 hours ago joining the channel.
01:09 cotto nbrown++
01:10 dalek rakudo/nom: d0475ef | jonathan++ | src/Perl6/Module/ (3 files):
01:10 dalek rakudo/nom: Remove no longer used module-related code to avoid confusion.
01:10 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/d0475effb7
01:10 dalek rakudo/nom: 851a48b | jonathan++ | src/Perl6/ModuleLoader.pm:
01:10 dalek rakudo/nom: First cut of being able to use a module without pre-compilation. Still uses PIR or PBC if it finds it along the way; need to put back timestamp checks. Also factored in preparation for auth and version handling going back in later.
01:10 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/851a48b429
01:22 woosley joined #parrot
02:11 dalek parrot/m0-prototype: ae9cdc9 | nbrown++ | / (4 files):
02:11 dalek parrot/m0-prototype: make sure m0 perl code and tests are treating bytecode files as binary files on Windows
02:11 dalek parrot/m0-prototype: review: https://github.com/parrot/parrot/commit/ae9cdc926c
02:11 dalek parrot/m0-prototype: dd6e84a | nbrown++ | src/m0/c/m0_mob.c:
02:11 dalek parrot/m0-prototype: Make m0 c code treat m0b files as binary on Windows
02:11 dalek parrot/m0-prototype: review: https://github.com/parrot/parrot/commit/dd6e84a88a
02:11 dalek parrot/m0-prototype: 24bd618 | cotto++ | / (5 files):
02:11 dalek parrot/m0-prototype: Merge pull request #149 from nbrown/m0-prototype-binary-files
02:11 dalek parrot/m0-prototype:
02:11 dalek parrot/m0-prototype: make M0 tests pass on platforms where binmode is necessary
02:11 dalek parrot/m0-prototype: review: https://github.com/parrot/parrot/commit/24bd6188af
03:27 jsut_ joined #parrot
04:23 bubaflub joined #parrot
05:50 dalek parrot/nqp_pct: 1f8cc82 | benabik++ | compilers/pct/src/PAST/Compiler.p (2 files):
05:50 dalek parrot/nqp_pct: Avoid deep-cloning symtable in PAST::Compiler.
05:50 dalek parrot/nqp_pct:
05:50 dalek parrot/nqp_pct: From:1f0d63c3ee8925f3c80a76cdd99569799c051286
05:50 dalek parrot/nqp_pct: Author:Jonathan Worthington <jnthn@jnthn.net>
05:50 dalek parrot/nqp_pct: review: https://github.com/parrot/parrot/commit/1f8cc82952
05:50 dalek parrot/nqp_pct: ce40b04 | benabik++ | compilers/pct/src/P (25 files):
05:50 dalek parrot/nqp_pct: Re-bootstrap PCT
05:50 dalek parrot/nqp_pct:
05:50 dalek parrot/nqp_pct: Preparing for a merge with master and want to be sure all changes made
05:50 dalek parrot/nqp_pct: it into the bootstrap.
05:50 dalek parrot/nqp_pct: review: https://github.com/parrot/parrot/commit/ce40b046c6
05:53 dalek parrot/nqp_pct: fa4951a | benabik++ | / (24 files):
05:53 dalek parrot/nqp_pct: Merge branch 'master' into nqp_pct
05:53 dalek parrot/nqp_pct:
05:53 dalek parrot/nqp_pct: Conflicts:
05:53 dalek parrot/nqp_pct: compilers/pct/src/PAST/Compiler.pir
05:53 dalek parrot/nqp_pct: review: https://github.com/parrot/parrot/commit/fa4951ace7
05:53 benabik tadzik++ # pointing out that I needed to merge
06:16 fperrad joined #parrot
07:03 Kulag joined #parrot
07:08 Kulag joined #parrot
07:24 Kulag joined #parrot
07:50 woosley joined #parrot
08:21 dalek parrot: 66f52e4 | fperrad++ | runtime/parrot/library/distutils.pir:
08:21 dalek parrot: [distutils] don't gzip on MSWin32
08:21 dalek parrot: review: https://github.com/parrot/parrot/commit/66f52e4e05
08:31 SHODAN joined #parrot
09:45 whiteknight joined #parrot
09:57 lucian joined #parrot
10:03 whiteknight good morning, #parrot
10:04 cotto aloha, clock?
10:04 aloha cotto: LAX: Sun, 03:04 PDT / CHI: Sun, 05:04 CDT / NYC: Sun, 06:04 EDT / UTC: Sun, 10:04 UTC / LON: Sun, 11:04 BST / BER: Sun, 12:04 CEST / TOK: Sun, 19:04 JST / SYD: Sun, 20:04 EST
10:04 cotto ENOTMORNING
10:11 contingencyplan joined #parrot
10:17 dafrito cotto, some sketchy thoughts about m0, mole. It's poorly edited atm and woefully incomplete, but: https://gist.github.com/1130268
10:18 mj41 joined #parrot
10:18 dafrito I got some thoughts on how to do call frames and pointers, but they're not in there yet
10:19 cotto dafrito, great
10:19 cotto dafrito++
10:19 cotto that's more than I expected
10:23 dafrito I mostly switch between the m0 spec and some random snippet of code and try to think about how it'd look in mole
10:24 dafrito though the doc kind-of mixes m0 ideas and mole ideas together, like the discussion on opcodes
10:24 cotto dafrito, are you thinking of a C-family syntax?
10:28 dafrito cotto, not really. I guess I imagine mole being closer conceptually to pir than C
10:28 dafrito which I understand may seem a little backwards ;)
10:29 cotto dafrito, that's the opposite of what I've been thinking, but I'm not married to anything.  I do want to be sure that Mole is very approachable for people used to hacking in C.
10:31 cotto dafrito, the closer it is to C, the easier it'll be to translate existing C code.
10:33 dafrito cotto, true. I'll have to think about it more
10:35 jlaire joined #parrot
10:39 cotto dafrito, I don't want to have to think about registers very much when writing Mole, similar to how I don't have to think about registers when writing C.
10:43 dafrito cotto, what would be some good candidate files in parrot for porting to mole? I'd like to look at those for syntax inspiration
10:43 dafrito it's okay if you don't really have any off-hand
10:46 cotto dafrito, anything written in C apart from the GC, really
10:49 * cotto sleeps
10:49 dafrito cotto, gnight!
10:49 cotto dafrito, PMCs wouldn't be bad
10:49 * cotto really sleeps
11:18 woosley left #parrot
11:24 dalek rakudo/nom: c1fdc43 | jonathan++ | src/Perl6/M (2 files):
11:24 dalek rakudo/nom: Fix usage of @*INC for locating modules.
11:24 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/c1fdc4368e
11:25 dalek rakudo/nom: 065f220 | tadzik++ | src/Perl6/ModuleLoader.pm:
11:25 dalek rakudo/nom: [ModuleLoader] Load pirs or pbcs only if they aren't older than the pm file
11:25 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/065f220d49
11:30 dalek rakudo/nom: a31ca33 | jonathan++ | NOMMAP.markdown:
11:30 dalek rakudo/nom: Remove a completed item from nommap.
11:30 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/a31ca33bff
11:53 JimmyZ joined #parrot
12:07 JimmyZ joined #parrot
12:09 dalek parrot/whiteknight/frontend_parrot2: c731039 | Whiteknight++ | frontend/parrot2/prt0.pir:
12:09 dalek parrot/whiteknight/frontend_parrot2: fix prt0 so it compiles and runs
12:09 dalek parrot/whiteknight/frontend_parrot2: review: https://github.com/parrot/parrot/commit/c7310397bd
12:09 dalek parrot/whiteknight/frontend_parrot2: 655ca07 | Whiteknight++ | / (8 files):
12:09 dalek parrot/whiteknight/frontend_parrot2: Change the makefile to build parrot from frontend/parrot2. Miniparrot is still built from frontend/parrot/ and prt0.pir needs to be built manually
12:09 dalek parrot/whiteknight/frontend_parrot2: review: https://github.com/parrot/parrot/commit/655ca07d62
12:09 dalek parrot/whiteknight/frontend_parrot2: 7b940f9 | Whiteknight++ | config/gen/makefiles/root.in:
12:09 dalek parrot/whiteknight/frontend_parrot2: miniparrot can built prt0.pbc. Add that to the makefile
12:09 dalek parrot/whiteknight/frontend_parrot2: review: https://github.com/parrot/parrot/commit/7b940f974a
12:09 dalek parrot/whiteknight/frontend_parrot2: b4d7917 | Whiteknight++ | tools/dev/pbc_to_exe.pir:
12:09 dalek parrot/whiteknight/frontend_parrot2: fix pbc_to_exe.pir, the build now completes, but many tests fail
12:09 dalek parrot/whiteknight/frontend_parrot2: review: https://github.com/parrot/parrot/commit/b4d79170f5
12:09 dalek parrot/whiteknight/frontend_parrot2: eae2c1b | Whiteknight++ | frontend/parrot2/prt0.pir:
12:09 dalek parrot/whiteknight/frontend_parrot2: Several fixes. We run and pass most tests, we fail some tests involving backtraces and a few other weird failures
12:09 dalek parrot/whiteknight/frontend_parrot2: review: https://github.com/parrot/parrot/commit/eae2c1bd55
12:28 rdesfo joined #parrot
12:44 woosley joined #parrot
12:45 PacoLinux_ joined #parrot
12:45 PacoLinux_ joined #parrot
12:50 ambs joined #parrot
13:04 kid51 joined #parrot
13:13 dalek parrot/NotFound/nci_as_string_ready: 0d2eb63 | jkeenan++ | src/nci_test.c:
13:13 dalek parrot/NotFound/nci_as_string_ready: [codingstd] Correct POD formatting error.
13:13 dalek parrot/NotFound/nci_as_string_ready: review: https://github.com/parrot/parrot/commit/0d2eb634f8
13:15 gerd joined #parrot
13:15 gerd hi
13:15 gerd some comments on the m0 instruction set: http://paste.pocoo.org/show/6JTrvUMhN8p1Z7p44uzZ/
13:17 kid51 gerd++ These comments reflect careful study of M0
13:21 kid51 gerd: As a veteran release manager, I want to ask you some questions about the release process.
13:21 kid51 Specifically, were you able to get ./parrot tools/release/crow.pir to work?
13:23 gerd kid51: I think you're mistaking me for some other gerd - this is the first time I used this nick on this server...
13:24 kid51 I guess you're right!
13:24 kid51 Gerd Pokorra has served as monthly Release Manager more than anyone else.
13:26 not_gerd that's definitely not me - my gerd is short for Gerhard
13:28 dalek parrot: 2ff2d27 | jkeenan++ | src/pmc/packfileview.pmc:
13:28 dalek parrot: [codingstd] Insert placeholders for documentation of 'find_called_tag' and 'add_called_tag'.
13:28 dalek parrot: review: https://github.com/parrot/parrot/commit/2ff2d2736c
13:28 kid51 msg whiteknight Can you add function-level documentation for find_called_tag and add_called_tag in src/pmc/packfileview.pmc?  Thanks.
13:29 aloha OK. I'll deliver the message.
13:29 dalek rakudo/nom: d438bdd | jonathan++ | src/Perl6/ModuleLoader.pm:
13:29 dalek rakudo/nom: Tweak setting loading to avoid running into issues post-installation where we sometimes loaded two different versions of the setting.
13:29 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/d438bdd562
13:31 whiteknight kid51: I did, but I did it in the wrong branch
13:31 whiteknight I'll move it to master soon
13:31 kid51 thx
13:31 kid51 I made the codingstd test pass and inserted 'TK' where the real doc needs to go
13:36 whiteknight okay, thanks
13:38 kid51 whiteknight: Does a39491c178b address concerns you raised in http://trac.parrot.org/parrot/ticket/2171 re Archive::Zip?
13:40 dalek parrot/whiteknight/frontend_parrot2: d0b907d | Whiteknight++ | / (2 files):
13:40 dalek parrot/whiteknight/frontend_parrot2: fix exit code handling. On EXCEPT_EXIT we jump directly out using the exception exit code. Otherwise, we force a non-zero exit, taking hints from the exception if possible. Also, fix the -V option to pull values out of the config hash
13:40 dalek parrot/whiteknight/frontend_parrot2: review: https://github.com/parrot/parrot/commit/d0b907dbd5
13:40 whiteknight kid51: I'm signing off now, I'll look at it later. can you msg it to me so I don't forget?
13:42 kid51 msg whiteknight Review status of TT #2171 at HEAED
13:42 aloha OK. I'll deliver the message.
13:49 nbrown joined #parrot
14:06 dalek rakudo/nom: 1349b46 | jonathan++ | / (6 files):
14:06 dalek rakudo/nom: Move Test.pm and Pod/To/Text.pm into lib directory.
14:06 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/1349b46747
14:06 dalek rakudo/nom: 0ad2d79 | jonathan++ | src/core/terms.pm:
14:06 dalek rakudo/nom: Add lib to default @*INC, ahead of installed paths. Avoids hitting stuff in the CWD ahead of installed things, but still gives a way for module developers to try development versions, and also for us to find the non-installed pre-compiled Test.pm.
14:06 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/0ad2d794a0
14:11 bubaflub joined #parrot
14:16 NotFound Uh... you've fixed in an already merged branch.
14:23 dalek parrot: 557292f | jkeenan++ | src/nci_test.c:
14:23 dalek parrot: [codingstd] Correct POD formatting error.
14:23 dalek parrot: review: https://github.com/parrot/parrot/commit/557292fefa
14:23 NotFound cherry-picked to master
14:29 rdesfo joined #parrot
14:30 kid51 Can you then delete the branch?
14:31 NotFound Yes, looks like it's time.
14:31 kid51 I generally delete a branch immediately upon merge into master.  That forestalls anyone trying to "fix" the branch again.
14:32 NotFound Done
14:32 kid51 thx
14:43 dalek TT #2170 closed by NotFound++: as_string method to get strings from NCI results
14:43 dalek TT #2170: http://trac.parrot.org/parrot/ticket/2170
14:49 dukeleto ~~
15:01 mj41 joined #parrot
15:09 dalek website: NotFound++ | strings, encodings, and NCI
15:09 dalek website: http://www.parrot.org/conten​t/strings-encodings-and-nci
15:50 dodathome joined #parrot
15:53 JimmyZ joined #parrot
16:10 not_gerd joined #parrot
16:34 nbrown joined #parrot
16:35 rdesfo joined #parrot
16:53 pmichaud From Parrot 1.4.0 to Parrot 2.6.0, hash keys would tend to come out unordered by default.  Starting with Parrot 2.9.1, they seem to be ordered by default again.  Why is this?
16:53 pmichaud http://gist.github.com/1130529
16:59 pmichaud "ordered" means "in the order in which the hash entries are created" here.
17:01 particle1 joined #parrot
17:02 dalek rakudo/nom: d0f04e9 | jonathan++ | src/Perl6/ModuleLoader.pm:
17:02 dalek rakudo/nom: Corrections and enhancements to GLOBAL handling on module usage.
17:02 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/d0f04e9bcc
17:02 dalek rakudo/nom: 5cb58be | jonathan++ | src/ (3 files):
17:02 dalek rakudo/nom: Implement various basic cases of the handles trait. Gets us the first 33 tests of delegation.t.
17:02 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/5cb58be2d8
17:05 cotto ~~
17:07 * pmichaud posts a message to parrot-dev about key ordering.
17:08 cotto pmichaud, is it necessary to provide a guarantee about hash key ordering?
17:08 pmichaud No.
17:08 pmichaud But it's odd that they're ordered.
17:09 pmichaud In fact, 1.4.0 was a major pain point for Rakudo because of the hash key ordering issue.
17:09 pmichaud So I'm very surprised that Parrot has gone back to ordered keys.
17:10 lucian pmichaud: parrot's hashes are ordered?
17:10 pmichaud lucian: see http://gist.github.com/1130529
17:12 lucian pmichaud: that's very odd
17:12 pmichaud lucian: yes, thus my question as to why it's happening.  :)
17:48 not_gerd cotto: you're the go-to guy for m0?
17:48 cotto not_gerd, yup
17:49 not_gerd this is what I posted earlier today: http://paste.pocoo.org/show/6JTrvUMhN8p1Z7p44uzZ/
17:49 not_gerd and this is how I would do memory access: http://paste.pocoo.org/show/UYJDiaeqCph6aducMi95/
17:50 cotto not_gerd, thanks.  I'm heading out the door, but I'll look forward to reading those when I get back.
17:51 not_gerd ok, I'll check the logs if I'm no longer around when you get to it
18:06 dalek parrot/tt2007/html_links: df18c04 | jkeenan++ | docs/glossary.pod:
18:06 dalek parrot/tt2007/html_links: Fix links to point to docs.parrot.org.
18:06 dalek parrot/tt2007/html_links: review: https://github.com/parrot/parrot/commit/df18c04bc6
18:06 dalek parrot/tt2007/html_links: 14cd84a | jkeenan++ | docs/glossary.pod:
18:06 dalek parrot/tt2007/html_links: Clean up two links (somewhat).
18:06 dalek parrot/tt2007/html_links: review: https://github.com/parrot/parrot/commit/14cd84a2c4
18:06 dalek parrot/tt2007/html_links: c22867e | jkeenan++ | docs/pct/gettingstarted.pod:
18:06 dalek parrot/tt2007/html_links: Correct link.
18:06 dalek parrot/tt2007/html_links: review: https://github.com/parrot/parrot/commit/c22867e5bf
18:13 dalek rakudo/nom: 795f6a6 | pmichaud++ | src/core/metaops.pm:
18:13 dalek rakudo/nom: Add hyper metaops for hash arguments.
18:13 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/795f6a6dad
18:19 not_gerd cotto: simplified ops for memory access: http://paste.pocoo.org/show/ox7Tu38sHwlekeOTi2RE/
18:23 dalek parrot: b9e1949 | Felipe++ | NEWS:
18:23 dalek parrot: - Added a NEWS entry for mem_sys_strndup
18:23 dalek parrot: review: https://github.com/parrot/parrot/commit/b9e194936c
18:36 rdesfo joined #parrot
18:37 pmichaud if I write
18:37 pmichaud .const 'Sub' $P999 = 'abc'
18:37 pmichaud is that actually allocating a register slot?
18:37 pmichaud More to the point, does $P999 participate in the register allocation algorithems?
18:37 pmichaud *algorithms?
18:39 dalek rakudo/nom: 7d55a9f | pmichaud++ | src/core/Parcel.pm:
18:39 dalek rakudo/nom: ?() should return False (jnthn++).
18:39 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/7d55a9f1f3
18:39 jnthn__ pmichaud: given its semantics, almost certainly yes
18:40 jnthn__ pmichaud: You can do:
18:40 jnthn__ .const 'Sub' $P999 = 'abc'
18:40 jnthn__ $P999()
18:40 jnthn__ .const 'Sub' $P999 = 'def'
18:40 jnthn__ $P999()
18:40 pmichaud yeah, I've noticed. :)
18:40 benabik I'd want to say yes.  But that would imply I have some idea what's going on inside IMCC.
18:40 benabik (Hint: I don't.)
18:40 pmichaud http://gist.github.com/1130630
18:41 pmichaud (interestingly, the example that jnthn++ created is *exactly* the example I used to test before mentioning this on-chan :)
18:41 jnthn__ o.O
18:41 jnthn__ Spooky
18:41 pmichaud well, I printed the sub instead of invoking it.  :)
18:41 pmichaud perhaps your example was colored by mine above, though.
18:41 pmichaud so, "given its semantics" really means "given the way it works now"
18:41 jnthn__ Yes :)
18:42 pmichaud I'm not sure what the defined semantics for .const are supposed to be.
18:42 benabik .const isn't?
18:42 benabik pmichaud: I'm not sure PIR has defined semantics so much as "the way it works right now"
18:43 pmichaud oh, I'm certain it has defined semantics.  Sometimes they even match "the way it works right now"  :-)
18:43 pmichaud pdd19
18:43 * benabik doesn't trust PDDs
18:44 benabik I suppose I should just add "revise PDD22" to my TODO list.
18:44 benabik Or to trac...
18:44 pmichaud :q!
18:44 pmichaud ww
18:44 pmichaud pdd22?  IO?
18:45 benabik Yes.  I was trying to find unlink.  PDD22 implies it's an opcode, but someone is "seriously considering moving [it] to methods on the ParrotIO object."
18:45 NotFound pmichaud: last time I tested, it does.
18:45 NotFound Lag...
18:46 pmichaud would it be bad if we switched a few things so that .const registers get re-used?
18:46 pmichaud (in PCT/nqp/rakudo)
18:46 pmichaud rephrase
18:46 NotFound I'd like better to be not used at all.
18:47 benabik Other than the fact that I only have a week left in GSoC to put serious work into PCT and I don't want it changing more?  ;-)
18:47 benabik (tongue firmly in cheek, there)
18:47 pmichaud NotFound: you mean don't use .const at all?  How would that work?
18:47 NotFound Pass the const to the usages, instead of copying it to a register.
18:48 pmichaud I don't understand.  Can you give an example?
18:49 NotFound Just like keys already do: use the pmc from the constant segment directly, not assigning its value to a rgeister and using the register.
18:49 benabik NotFound: Does PIR support this right now, or are you suggesting additional syntax?
18:49 pmichaud NotFound: currently I have:
18:49 pmichaud .const 'Sub' $P999 = 'abc'
18:49 pmichaud $P999()
18:50 sorear pmichaud: I suspect what's happening is that '$P999' is being rebound by imcc
18:50 NotFound Probably imcc, and even the ops, will need some addition.
18:50 sorear pmichaud: try putting your example in a loop
18:50 pmichaud what would this be in your version?
18:50 pmichaud sorear: I suspect that's what is happening also.
18:51 NotFound Same as already, but the more natural usage will be with a name, instead of a register.
18:51 pmichaud you mean an imcc symbol that isn't mapped to a register?
18:51 pmichaud .const 'Sub' abcsub = 'abc'
18:51 pmichaud abcsub()
18:51 NotFound Yes, map it to the constant.
18:51 pmichaud like that?
18:52 pmichaud what about something like:
18:52 pmichaud .const 'Sub' abcsub = 'abc'
18:52 pmichaud $P0 = newclosure abcsub
18:53 pmichaud the <newclosure> opcode expects a PMC register.
18:53 pmichaud I guess we'd need a _pc form of that opcode.
18:53 NotFound That will be the problem, some opcodes may lack the constant variant.
18:53 pmichaud okay, so none of this is going to be fixed prior to december.
18:54 NotFound I don't think so.
18:54 pmichaud so, given that as the case...
18:55 pmichaud would it be bad if we switched a few things in pct/nqp/rakudo so that .const registers can be re-used ?
18:55 NotFound I don't see any problem.
18:56 benabik Only me having to spend time on porting it to my branch.  And I really don't mind that too much.
19:13 soh_cah_toa joined #parrot
19:18 whiteknight joined #parrot
19:21 Felipe hello whiteknight
19:25 whiteknight hello Felipe
19:33 not_gerd joined #parrot
19:36 dalek rakudo/nom: b999db7 | kboga++ | t/spectest.data:
19:36 dalek rakudo/nom: enable passing testfiles: S11-modules/lexical.t, integration/advent2009-day12.t and track some failure messages
19:36 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/b999db707e
19:36 dalek rakudo/nom: 4b0bc18 | kboga++ | t/spectest.data:
19:36 dalek rakudo/nom: enable passing test: S02-builtin_data_types/instants-and-durations.t
19:36 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/4b0bc184ac
19:36 dalek rakudo/nom: 4b66f8a | Coke++ | t/spectest.data:
19:36 dalek rakudo/nom: track failure modes & run fudged test.
19:36 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/4b66f8aad5
19:37 soh_cah_toa cotto: ping
19:44 whiteknight msg kid51 I created TT #2171 for Eclesia, who was having a trouble creating a ticket. I don't know what the current status is. Eclesia or fperrad might know better
19:44 aloha OK. I'll deliver the message.
20:01 cotto soh_cah_toa, pong
20:02 contingencyplan joined #parrot
20:02 soh_cah_toa cotto: i have two suggestions regarding m0/mole
20:02 soh_cah_toa then i wanna talk about hbdb :)
20:02 cotto soh_cah_toa, fire at will
20:03 soh_cah_toa cotto: once the vm internals are actually starting to be written, i think it would be a great idea to use a document generator like doxygen. perldoc just doesn't cut it for reference documentation
20:03 soh_cah_toa cotto: i mean, look how gorgeous llvm's developer reference is w/ doxygen: http://llvm.org/doxygen/cl​assllvm_1_1ARMMCExpr.html
20:03 soh_cah_toa cotto: the only reason i bring it up now is that i'm seeing first hand this summer just how frightening parrot's c internals are. sure, m0/mole design is still in its early stages but do you think something like that is a good idea? i hardly see any disadvantages
20:06 soh_cah_toa and plus, i want parrot to be better than llvm ;)
20:06 tadzik wait for Pod 6 :)
20:07 cotto soh_cah_toa, that'll require some thought.  I'm not eager to try to change an established convention and to add extra (and less familiar) dependencies to the build for M0, and to have a separate documentation system for M0.
20:08 NotFound I disagree. I think doxygen in most cases is used to avoid to write documentation.
20:08 whiteknight I've been struck on more than one occasion by the inadequacies of POD to really document C-level code
20:08 soh_cah_toa NotFound: yeah
20:08 NotFound Lack of documentation? See, we have tons of doxygen generated pages!
20:08 cotto That said, it's not out of the realm of possibility.
20:08 whiteknight There is no built-in allowance for things like function parameters, constraints, return values or possible exception behavior
20:09 whiteknight I'm not saying doxygen or any other particular solution is any better
20:09 dalek rakudo/nom: 703b1ef | jonathan++ | src/Perl6/Metamodel/ (3 files):
20:09 dalek rakudo/nom: Add a way for adding dispatch fallbacks to a class, for use in implementing handles.
20:09 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/703b1ef9fb
20:09 dalek rakudo/nom: 705ae4b | jonathan++ | src/core/traits.pm:
20:09 dalek rakudo/nom: Implement package RHS case of handles.
20:09 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/705ae4bfe0
20:09 NotFound doxygen, javadoc, whatever.
20:10 soh_cah_toa if we had documentation comparable to llvm's, i could've save a lot of time this summer :)
20:10 soh_cah_toa plus, it wouldn't really be a dependency. it'd just be what we use for docs.parrot.org
20:13 cotto It's a dependency if you want to update the docs and make sure that your changes are correct.
20:13 cotto Hopefully that's most developers.
20:13 soh_cah_toa ah, right
20:15 soh_cah_toa well, dependencies aren't always a bad thing. especially if it would mean we'd have an totally awesome api reference. but anyway, that's still down the road quite a bit. i just thought i'd mention it now since m0/mole is really like a clean slate for us
20:16 soh_cah_toa my second thought:
20:17 soh_cah_toa i've been reading a lot of the llvm documentation (obviously). i'm no expert but i think their multi-stage approach to optimizations is really clever
20:17 dalek rakudo/nom: 9ce5cf1 | jonathan++ | src/core/traits.pm:
20:17 dalek rakudo/nom: Match case of delegation.
20:17 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/9ce5cf1acd
20:17 soh_cah_toa it performs your traditional link time optimizations but not only does it generate the optimized machine code, it also includes a copy of the llvm bytecode for later runtime optimizations
20:17 soh_cah_toa the nice thing about this is that when the runtime optimizer sees that it can perform some translation, it can either directly modify the optimized machine code or generate new code from the attached llvm bytecode
20:17 cotto GCC recently added link-time optimization
20:18 soh_cah_toa yeah, i saw
20:18 soh_cah_toa it also uses an offline optimizer for transformations that are too expensive at runtime. when idle time is detected, the offline optimizer is run to perform more aggressive profile-driven optimizations
20:18 soh_cah_toa i thought that was pretty neat. there's a lot more at http://llvm.org/pubs/2002-12-LattnerMSThesis.html
20:19 cotto At this point in M0, the primary goal is to make that kind of optimization not be impossible.
20:19 NotFound Nice idea, wasting cpu looking for opprtunities to generate bugs ;)
20:19 soh_cah_toa i think we could really benefit from looking at what makes llvm a success
20:19 soh_cah_toa actually, i guess that's kinda the purpose of llvm ;)
20:19 NotFound soh_cah_toa: mmmmmm.... Apple money? ;)
20:19 cotto soh_cah_toa, apple?
20:20 soh_cah_toa llvm is made by apple? really?
20:20 benabik Yeah, they hired the main devs.
20:20 tadzik mostly, yes
20:20 soh_cah_toa wow, didn't know that
20:20 benabik llvm's syntax parsing powers Xcode now, and gcc-llvm is the default compiler.
20:20 sorear soh_cah_toa: apple pounced on llvm because they needed something to replace gcc and its annoying GPL
20:20 benabik They use llvm to do some fun things with refcounting.
20:21 soh_cah_toa ah, ok
20:21 benabik (ObjC used to require explicit retain/release calls to maintain the refcounts.  They can now automatically insert them into the code.)
20:22 benabik sorear: That's a marvelously pessimistic way to view it, but they're also really using LLVM to do some good things for their IDE, language, and runtime.
20:22 benabik sorear: And releasing most of it back into the wild.
20:22 soh_cah_toa interesting. never thought i'd ever advocate an apple product :)
20:22 benabik Just BSD instead of GPL.
20:22 benabik gcc's internals are… not as externally useful as LLVM/clang
20:22 sorear benabik: yeah, in it probably has more to do with avoiding that annoying anti-corporate git, rms
20:23 benabik soh_cah_toa: I really want to take LLVM's parsing strategies and co-opt them for PCT.
20:23 soh_cah_toa ha! that's probably the most accurate
20:23 soh_cah_toa benabik: nice
20:23 benabik integrate tree-optimizer, separate the stages out into easily manipulatable objects...
20:24 * benabik has a dream...
20:24 tadzik -        :my $*DOC := $*DECLARATOR_DOCS;
20:24 tadzik -        { $*DECLARATOR_DOCS := '' }
20:24 tadzik oops, sorry
20:24 tadzik weechat--
20:24 benabik weechat > wiichat?
20:24 tadzik what do you mean?
20:25 dalek rakudo/nom: 69b45a2 | jonathan++ | src/core/traits.pm:
20:25 dalek rakudo/nom: Should not enforce ro-ness on things we delegate to.
20:25 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/69b45a2deb
20:25 mj41 joined #parrot
20:25 benabik tadzik: Feel free to ignore me, I'm a little strange from lack of sleep.
20:26 cotto soh_cah_toa, did you want to talk about GSoC?
20:26 soh_cah_toa cotto: anyway, on a non-"look at llvm" note, i want to write more tests for hbdb but it seems that i'm never getting any output to compare. could you help?
20:26 dalek rakudo/nom: b6c6e5b | moritz++ | src/core/ (2 files):
20:26 dalek rakudo/nom: allow Str.match(Str), which in turn also restores Str.subst(Str)
20:26 soh_cah_toa yeah :)
20:26 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/b6c6e5ba03
20:26 dalek rakudo/nom: 516a34d | moritz++ | src/core/Match.pm:
20:26 dalek rakudo/nom: add Match.gist
20:26 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/516a34df20
20:26 soh_cah_toa let me push first
20:28 dalek parrot/soh-cah-toa/hbdb: c4b1151 | soh_cah_toa++ | src/hbdb.c:
20:28 dalek parrot/soh-cah-toa/hbdb: Fix for 'list' command where numbers less than 5 were underflowing. It's a bit hacky but it works. :P
20:28 dalek parrot/soh-cah-toa/hbdb: review: https://github.com/parrot/parrot/commit/c4b11519e8
20:28 dalek parrot/soh-cah-toa/hbdb: ca5f93a | soh_cah_toa++ | lib/Parrot/Test/HBDB.pm:
20:28 dalek parrot/soh-cah-toa/hbdb: Removed some *really* unnecessary inline comments in Parrot::Test::HBDB.
20:28 dalek parrot/soh-cah-toa/hbdb: review: https://github.com/parrot/parrot/commit/ca5f93a3d0
20:28 dalek parrot/soh-cah-toa/hbdb: 4b4ed0b | soh_cah_toa++ | lib/Parrot/Test/HBDB.pm:
20:28 dalek parrot/soh-cah-toa/hbdb: Tried to fix null output in tests. I don't think it works though.
20:28 dalek parrot/soh-cah-toa/hbdb: review: https://github.com/parrot/parrot/commit/4b4ed0bf15
20:29 soh_cah_toa_ joined #parrot
20:29 soh_cah_toa_ cotto: agh, did that push go through?
20:30 cotto soh_cah_toa_, dalek seems to think so
20:30 soh_cah_toa_ ok, got disconnected right when i pushed
20:30 cotto ah
20:32 soh_cah_toa_ at first, i was always getting '' as the actual output. w/ that last commit, now i only get the first thing output by hbdb "HBDB: The Honey Bee Debugger"
20:33 dalek winxed: fcb47ca | NotFound++ | examples/Mysql.winxed:
20:33 dalek winxed: update example Mysql to use ByteBuffer, StructView and the as_string method
20:33 dalek winxed: review: https://github.com/NotFoun​d/winxed/commit/fcb47cafd5
20:35 cotto btw soh_cah_toa, there's some unnecessary duplicate code in HBDB.pm
20:35 soh_cah_toa yeah, a whole lot
20:35 soh_cah_toa i still have to refactor that
20:36 cotto ok
20:36 soh_cah_toa actually, if i can get this output problem fixed, i can do that next
20:39 ambs joined #parrot
20:39 dalek rakudo/nom: 4c1dbaf | masak++ | NOMMAP.markdown:
20:39 dalek rakudo/nom: [NOMMAP.markdown] fixed faulty markdown
20:39 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/4c1dbafa13
20:40 cotto soh_cah_toa, it looks like cmd_output_like tries to match against the first line of output from hbdb
20:40 soh_cah_toa cotto: yeah, i tried removing the index and comparing the entire array but that doesn't seem to help
20:43 cotto soh_cah_toa, I'm not sure why you'd want like inside the foreach loop
20:44 cotto shouldn't you get all lines from a fd and then try to match against that?
20:44 cotto with a join
20:45 soh_cah_toa hm, that would obviously make more sense. don't know why i had it like that
20:45 dalek rakudo/nom: 7cf8457 | jonathan++ | t/spectest.data:
20:45 dalek rakudo/nom: We now pass delegation.t.
20:45 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/7cf845732f
20:45 dalek rakudo/nom: ea9929d | jonathan++ | NOMMAP.markdown:
20:45 dalek rakudo/nom: Remove delegation from punchcard.
20:45 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/ea9929da84
20:45 cotto soh_cah_toa, that approach gets the first test passing for me
20:45 cotto should I nopaste?
20:46 soh_cah_toa cotto: i got it working to
20:46 cotto soh_cah_toa, great
20:47 soh_cah_toa except, now the 'help' test is back to '' output
20:47 cotto soh_cah_toa, can you push what you've got?
20:47 soh_cah_toa yeah
20:49 dalek parrot/soh-cah-toa/hbdb: 9c79dfd | soh_cah_toa++ | lib/Parrot/Test/HBDB.pm:
20:49 dalek parrot/soh-cah-toa/hbdb: Moved call to like() in cmd_output_like() to outside the foreach loop. First test in cmds.t passes but still not the second.
20:49 dalek parrot/soh-cah-toa/hbdb: review: https://github.com/parrot/parrot/commit/9c79dfd765
20:50 cotto soh_cah_toa, why use an array at all?
20:51 soh_cah_toa cotto: oh yeah. i was using an array b/c i had to use $line[0] but now i guess i can just use a scalar
20:52 cotto When I did that, I got some (though incorrect) output for the second test.
20:52 soh_cah_toa progress, good
20:53 cotto whee
20:54 cotto soh_cah_toa, http://dailypicksandflicks.com/wp-conten​t/uploads/2011/04/Push-it-real-good.jpg
20:55 soh_cah_toa cotto: ha! are you suggesting i should push the changes? real good?
20:57 cotto perhaps
20:58 soh_cah_toa now that the comparison is outside the foreach loop, i can pull out a lot of this duplicate code into a separate function. let me get that first
20:59 cotto wfm
21:12 dalek rakudo/nom: f7e3377 | pmichaud++ | NOMMAP.markdown:
21:12 dalek rakudo/nom: Remove hyperoperators from the punch list.
21:12 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/f7e3377588
21:13 dalek rakudo/nom: f27ddd0 | pmichaud++ | NOMMAP.markdown:
21:13 dalek rakudo/nom: Add "augment" to the punch list.
21:13 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/f27ddd0fbe
21:15 soh_cah_toa cotto: agh, i borked it. let me push so you can see
21:16 dalek parrot/soh-cah-toa/hbdb: d3752da | soh_cah_toa++ | lib/Parrot/Test/HBDB.pm:
21:16 dalek parrot/soh-cah-toa/hbdb: Refactored duplicate code into _select(). Also made @lines into a scalar. Doesn't quite work yet.
21:16 dalek parrot/soh-cah-toa/hbdb: review: https://github.com/parrot/parrot/commit/d3752da601
21:22 dalek rakudo/nom: b0f733e | moritz++ | src/core/Str.pm:
21:22 dalek rakudo/nom: Str.trim-leading - more efficient than in master
21:22 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/b0f733e8a6
21:23 cotto soh_cah_toa, can you revert that if it breaks?  I want to get the tests passing.
21:25 soh_cah_toa cotto: yeah, i'll revert cmd_output_like()
21:25 cotto Ugly working code is better than well-factored broken code.
21:26 soh_cah_toa that's true
21:29 whiteknight depends how easy it is to fix
21:29 dalek parrot/soh-cah-toa/hbdb: 63864d0 | soh_cah_toa++ | lib/Parrot/Test/HBDB.pm:
21:29 dalek parrot/soh-cah-toa/hbdb: Reverted previous changes to work on passing 'help' test first, then refactor duplication.
21:29 dalek parrot/soh-cah-toa/hbdb: review: https://github.com/parrot/parrot/commit/63864d02fd
21:30 * soh_cah_toa will brb
21:30 whiteknight cotto: Have you seen the work I've been doing in whiteknight/frontend_parrot2 this morning?
21:31 cotto whiteknight, not yet
21:31 benabik Hm.  PAST::Compiler is not designed to be used more than once.
21:31 whiteknight cotto: I've got the new frontend running, though it's not perfect. It passes most tests
21:32 whiteknight the tests that fail are tests for verbatim backtraces, the new PIR-based entry function messes those up
21:32 whiteknight I want to try to find a way to fix that
21:32 benabik whiteknight: Can you add a exception handler that removes the new layers?
21:33 benabik (from the backtrace, if that wasn't obvious.)
21:33 whiteknight benabik: I don't know what I am going to do about it. I can either try to use some continuation magic, or play with the context graph to make the function disappear
21:34 cotto whiteknight, do they really need to disappear?
21:36 whiteknight cotto: to preserve behavior of the tests
21:37 benabik Arg. The fact that the PCT tests were written in perl and called a new parrot for each test hid the fact that the compilers are non-reentrant.
21:37 benabik Wrong term.
21:37 benabik non-reusable.
21:37 jnthn__ benabik: Really?
21:38 rdesfo joined #parrot
21:38 benabik jnthn__: I suppose it could be mistakes I made while converting PAST::Compiler to NQP…  but it seemed to use a _lot_ of globals.
21:38 jnthn__ benabik: I know we were using them in a re-entrant/re-usable way in Rakudo master and I don't remember jumping through hoops.
21:39 benabik jnthn__: PAST::Compiler seems to collect all subs it encounters and returns them all, even across multiple invocations.  I'll check with master, but I don't think I changed it that much when converting.
21:39 cotto whiteknight, can we update the tests?
21:39 jnthn__ benabik: hmm, curious
21:42 whiteknight cotto: I suppose we can. That's a decision above my pay grade :)
21:42 whiteknight I want to try to fix things first, before I go monkeying with tests
21:44 Psyche^ joined #parrot
21:45 whiteknight the new frontend parses several command-line options in pure PIR, and I think we can expand that number
21:46 whiteknight -c -o -r -E -v and -h, I think
21:46 whiteknight -L -I and -X can almost certainly be ported to PIR without much issue
21:52 cotto not_gerd++
21:53 whiteknight I'm less sure, but I think we can probably move -t and -d options too, but that might be some work if the opcodes don't do exactly what the frontend is doing
21:53 whiteknight not_gerd?
21:54 cotto I guess it's the antimatter version of gerd.
21:54 * soh_cah_toa is back
21:55 dalek parrot/m0-spec: ebb4243 | cotto++ | docs/pdds/draft/pdd32_m0.pod:
21:55 dalek parrot/m0-spec: fix a couple of typos in the goto* op descriptions found by not_gerd++
21:55 dalek parrot/m0-spec: review: https://github.com/parrot/parrot/commit/ebb42434ed
21:56 benabik jnthn__: Okay, never mind.  I implemented something _else_ idiotically.
21:57 benabik I still dislike the pervasive use of globals, but that's for another day.
21:57 jnthn__ benabik: They've tended to become contextuals of late.
21:59 cotto not_gerd, ping
21:59 benabik jnthn__: That still doesn't make me happy, to some extent.  Contextuals sometimes seem a bit like globals that are defined in the middle of blocks.
22:00 not_gerd cotto, pong
22:00 benabik It's better because it doesn't outlast the sub it's defined in, but it can affect things you call in unknown ways.
22:00 cotto not_gerd, are you on parrot-dev?  I'd like to comment on your thoughts by quoting/replying there.
22:01 cotto also, are you just gerd with a "not_" prefixed or actually someone different?
22:01 not_gerd cotto: someone different, therefore _not_ gerd
22:01 jnthn__ benabik: Contextuals have dynamic scope, which means they tend to sync up with the lexical scopes of the thing you're compiling, which tends to fit.
22:01 not_gerd I'm not on parrot-de, but I read the logs in the past
22:02 cotto actually, I may just respond here if it's a good time for you.
22:02 not_gerd I'm around for a bit, so go ahead
22:03 benabik jnthn__: It gets messier with subclassing.
22:03 jnthn__ benabik: I'd mostly seen those as orthogonal so far.
22:03 cotto First, thanks for catching the typo in the goto* ops.  The non-chunk versions of those ops should use the register numbers as immediate values.
22:04 benabik jnthn__: But if I call from the subclass into the superclass, which can end up calling my subclass…  How can I be sure my contextuals are what both classes expect them to be.
22:04 benabik jnthn__: I tried using object attributes, but the current design of PCT reuses the objects so they don't get cleared.
22:05 cotto not_gerd, one of the key goals of M0 is to keep a minimal instruction set.  Having two different conditional goto ops goes against that, especially since most M0 will be generated.
22:07 PacoLinux_ joined #parrot
22:08 PacoLinux__ joined #parrot
22:08 cotto Bitwise NOT is the same as $x ^ 0xFFFFFFFF (for a 32-bit words).  Its omission is intentional.
22:09 not_gerd cotto: what's the reason for a minimal instruction set?
22:10 not_gerd a larger instruction is probably better for raw interpreters
22:10 cotto not_gerd, simplicity and ease of implementation (especially jitting)
22:10 cotto not_gerd, "raw"?
22:11 not_gerd ie non-optimizing/jitting
22:11 cotto ok
22:14 not_gerd the reason why I wanted to introduce an additional goto was so things like while/do..while/repat...until could all desugar to the same number of instructions for primitive cases
22:14 not_gerd a single branch instruction favors certain conditions over others
22:15 not_gerd (if it's not symmetric in itsel like LLVM's br)
22:16 cotto On the one hand it feels like bloat to have two ops that are so similar, but on the other hand you're correct.
22:16 not_gerd also, you need to decide how branching and numeric comparison should interact
22:16 not_gerd eg, LLVM has a cmp op and a branch op
22:17 not_gerd other ssemblies have jmp_less, jmp_less_equal,jmp_zero, hmp_nonzero,...
22:17 not_gerd I didn't find anything about that in the spec
22:17 rdesfo left #parrot
22:18 cotto You can emulate cmp with the math ops.  I'm on the fence as to whether that should be the way it has to be done in M0.
22:19 not_gerd cotto: perhaps a silly question: how do you do comparisons with basic math?
22:20 cotto not_gerd, inelegantly
22:21 benabik A cup B is similar to A - B for numeric A & B
22:21 benabik *cmp
22:21 not_gerd benabik: only if you can compare the result against 0, and how do you do that if there's no < ?
22:22 benabik not_gerd: By making your branch instructions jump on positive/negative/zero
22:22 benabik not_gerd: Inelegant, but possible.
22:22 soh_cah_toa eh, that's true but making the distinction between a math operation and comparison would help reduce much confusion
22:22 not_gerd sure, but we currently don't have such an instruction ;)
22:23 cotto soh_cah_toa, yes.
22:23 soh_cah_toa though i do agree w/ a minimalist approach
22:23 benabik I didn't say it was a good idea, just that you can do it that way.  :-D
22:23 soh_cah_toa finding a balance is the hard part ;)
22:23 cotto minimalist is good, though not for its own sake
22:24 benabik multiplication can be replaced by shift and addition.
22:24 benabik But why?
22:24 cotto otherwise we'd have a one instruction instruction set
22:24 soh_cah_toa exactly
22:24 benabik cotto: dwim?
22:24 lucian joined #parrot
22:25 cotto subleq
22:25 soh_cah_toa cotto: anyway, when you're done talking to not_gerd i'm still a little confused by how the first test can pass but the second gets null output. it's weird
22:25 not_gerd cotto: I still would like to see bitwise-not so I can invert values without having to know the width of I registers
22:26 cotto soh_cah_toa, I can split my attention for a bit
22:26 benabik not_gerd: +1
22:26 benabik (I think.)
22:26 cotto not_gerd, I'm  becoming less adverse to that
22:26 benabik +0.5?
22:26 benabik +0.9.  I like it, but haven't thought it through all the way.  :-D
22:26 * soh_cah_toa dittos benabik
22:29 soh_cah_toa cotto: btw, i'm aware the regex to match is wrong in the 'help' test b/c i changed the output format for that command. though right now the '' output is the real problem
22:29 not_gerd also, there need to be comparison ops for floating point values, so I'd be in favor of introducing integer comparison for purely aesthetic reasons
22:30 not_gerd (comparing floats shouldn't be easier than comparing ints)
22:30 cotto agreed
22:31 soh_cah_toa isn't it a bad idea to compare floats though?
22:31 cotto only if you don't know how
22:31 soh_cah_toa w/ limited precision and all
22:32 benabik soh_cah_toa: floats at user level should usually be compared with a delta…  but even that eventually needs a raw comparison:  delta < expected
22:32 not_gerd well, expected < delta most likely, but yeah (SCNR)
22:33 soh_cah_toa well, regardless of whether it's bad practice i suppose making it possible for hll's should not be out of question
22:34 not_gerd also, now that's clear that goto uses immediate values, I'd like to see a non-immediate version (ie assigned aka computed goto)
22:34 not_gerd among other things, this allows implementing fast interpreters ;)
22:35 benabik M0le if( x < y ) {} ->  M0 cmp temp, x, y; cmp temp, temp, -1; goto_if (LABEL), temp  ??
22:37 cotto not_gerd, what's a use case for computed gotos?
22:37 benabik Probably need compare integer registers, compare integer register to constant, then ditto s/integer/float/
22:38 not_gerd benabik: you can always load constants into registers...
22:39 benabik not_gerd: I guess so.  That appears to be how M0 currently does math with constants too.
22:39 not_gerd cotto: as I said, fast interpreters - I think Parrot actually makes use/used to make use of that in one of its runcores...
22:39 benabik And {in,de}crement…  :-P
22:39 cotto not_gerd, ah.  You're talking about implementing an interpreter in M0.
22:40 cotto That was the use case that came to mind when you mentioned assigned/computed gotos.
22:40 cotto I thought you were saying that it'd make M0 faster.
22:41 not_gerd yes, that's what I meant
22:41 cotto soh_cah_toa, I'm not seeing null output for that second test.
22:42 nopaste "soh_cah_toa" at 192.168.1.3 pasted "Output for cmds.t" (23 lines) at http://nopaste.snit.ch/68482
22:42 soh_cah_toa cotto: you don't get that?
22:43 cotto local changes
22:44 soh_cah_toa i didn't change anything in Parrot::Test::HBDB
22:45 cotto soh_cah_toa, shouldn't you be concatenating on the foreach loops in cmd_output_* ?
22:46 soh_cah_toa cotto: hmm, ok. i think i see what you mean
22:46 not_gerd what I like about computed goto is that you can use addresses instead of opcodes as in-memory representation of instructions
22:46 not_gerd you can't get faster than taht without a jit
22:50 cotto It seems like an overly-specialized use case to me, and it'll be something that every implementation would need to support.
22:54 nopaste "soh_cah_toa" at 192.168.1.3 pasted "Foreach with join()" (12 lines) at http://nopaste.snit.ch/68483
22:54 soh_cah_toa cotto: you mean like that? b/c although it seems right, it doesn't help
22:56 cotto soh_cah_toa, .=
22:56 cotto otherwise you only get the last line
22:56 soh_cah_toa agh, duh
22:57 whiteknight if we have a reduced instruction set like M0, cgoto is a great dispatch mechanism
22:58 cotto whiteknight, I agree, but that's below what M0 needs to care about.
22:58 whiteknight eventually we are going to need to implement it
22:59 cotto whiteknight, what do you mean?  A C implementation of M0 using cgoto?
22:59 whiteknight yeah, I don't see why not
22:59 whiteknight well, for portability we could probably do it all with a big switch statement. cgoto is a hassle on win32
23:00 dalek rakudo/nom: f279a51 | jonathan++ | src/Perl6/Grammar.pm:
23:00 dalek rakudo/nom: First cut of augment support. Seems to work for augmenting trivial classes, but any of the built-in ones seem to have issues post-augment. Also, this will need a re-visit when we get real serialization.
23:00 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/f279a51e98
23:00 dalek rakudo/nom: e15779c | jonathan++ | src/Perl6/Metamodel/MultiMethodContainer.pm:
23:00 dalek rakudo/nom: Clear the list of multi methods to incorporate once we've done so, otherwise we'll hit problems if we come to augment.
23:00 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/e15779c380
23:00 dalek rakudo/nom: 113da42 | jonathan++ | t/spectest.data:
23:00 dalek rakudo/nom: Three more test files passing.
23:00 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/113da4271e
23:00 dalek rakudo/nom: c7b6534 | jonathan++ | NOMMAP.markdown:
23:00 dalek rakudo/nom: Implemented augment; remove from punch card list.
23:00 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/c7b65345b1
23:00 cotto I expect multiple implementations, including platform-specific C.
23:00 cotto (and portable C)
23:02 whiteknight when we have high-level PIR ops, the majority of execution time happens inside the ops and the API methods they call
23:02 whiteknight with M0, execution time will start to be dominated by op dispatch time
23:02 whiteknight more ops, each doing less work, etc
23:02 cotto yes
23:02 whiteknight without a JIT, Parrot is going to get substantially slower with M0, likely
23:03 cotto a jit will be a big win at that point
23:03 whiteknight same logic to do, more dispatch costs
23:03 whiteknight cgoto will help minimize that, while we scramble to make jit
23:03 cotto without some kind of compilation
23:03 not_gerd just as a side note: as of last year (don't know about today) luajit2 in interpreter mode beat the V8 JIT
23:03 cotto If we can output C, op dispatch goes away too.
23:04 whiteknight cotto: true
23:04 cotto luajit is impressibe
23:04 cotto *impressive
23:05 not_gerd well, take a look at the interepreter code: http://repo.or.cz/w/luajit-2.0.gi​t/blob/HEAD:/src/buildvm_x86.dasc
23:05 not_gerd who wants to do the same for Parrot?
23:07 cotto http://www.reddit.com/r/programmin​g/comments/badl2/luajit_2_beta_3_i​s_out_support_both_x32_x64/c0lrus0
23:07 PacoLinux_ joined #parrot
23:08 dalek parrot/soh-cah-toa/hbdb: 3915e52 | soh_cah_toa++ | lib/Parrot/Test/HBDB.pm:
23:08 dalek parrot/soh-cah-toa/hbdb: Concatenate $lines for each iteration in HBDB.pm. Test 2 in cmds.t now has output but just the first line.
23:08 dalek parrot/soh-cah-toa/hbdb: review: https://github.com/parrot/parrot/commit/3915e523e4
23:08 cotto not_gerd, thanks for your M0 thoughts.  It'll take me a while to digest and integrate them, but you mention some important things I've omitted so far.
23:08 soh_cah_toa cotto: now atleast i get output but it's just the first line
23:09 not_gerd cotto: did you see the proposal for load/store?
23:14 cotto not_gerd, why do those ops need to care about types?
23:14 soh_cah_toa ugh, this test is pissing me off. i'm taking a break
23:14 * soh_cah_toa will brb
23:14 cotto not_gerd, it sounds like that op is trying to do more than one thing
23:16 not_gerd cotto: m0 only has a single integer and floating-point type, but if you want memory-efficient storage and/or communicate with the outside world, you need a way to read/write integers/floats of different width/precision
23:17 not_gerd I first speculated about having separate ops for load/store and conversion, but decided to roll them into one
23:17 jsut joined #parrot
23:17 not_gerd you should only ever need the conversions when accessing memory
23:19 cotto It's preferable to have two simpler ops.
23:20 not_gerd not if one of the ops is never used on its own
23:20 not_gerd also, the ccall_arg/_ret ops need to do the same thing
23:20 not_gerd only that it's never explicitly mentioned
23:21 cotto The ffi ops haven't gotten much love because I haven't found a good Perl ffi library.  Once we start on the C implementation, I expect that they'll change.
23:30 not_gerd the ffi ops is ok, imo - but the arg/ret ops lack an argument to specify which call one deals with
23:30 not_gerd luckily, $3 is unused ;)
23:31 not_gerd ^are ok
23:32 not_gerd as-is, they'll introduce a dependency on libffi or libjit if you don't want to write asm for all supported platforms yourself, though
23:44 cotto I'd like to abstract that out, but it'll be workable as-is.
23:49 preflex joined #parrot
23:53 PacoLinux_ joined #parrot
23:58 jsut_ joined #parrot

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

Parrot | source cross referenced