Camelia, the Perl 6 bug

IRC log for #parrot, 2011-04-22

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:02 dalek nqp/ctmo: 4e2bed3 | jonathan++ | src/ (2 files):
00:02 dalek nqp/ctmo: Remove magical loading of the NQP meta-objects library, and just do it with a use statement in the setting.
00:02 dalek nqp/ctmo: review: https://github.com/perl6/nqp/commit/4e2bed30f4
00:02 dalek nqp/ctmo: 8147a0f | jonathan++ | src/stage0/ (6 files):
00:02 dalek nqp/ctmo: Update bootstrap, just to be sure the previous works out there too.
00:02 dalek nqp/ctmo: review: https://github.com/perl6/nqp/commit/8147a0fad6
00:29 kid51_at_dinner is now known as kid51
01:12 cotto ~~
01:12 dmalcolm left #parrot
01:25 theory left #parrot
01:33 whiteknight left #parrot
01:36 petdance joined #parrot
01:39 bubaflub left #parrot
01:57 kid51 left #parrot
02:02 mtk left #parrot
02:07 mtk joined #parrot
02:07 dngor left #parrot
02:12 dngor joined #parrot
02:33 ShaneC joined #parrot
02:39 dalek plparrot: 52b996b | leto++ | META.json:
02:39 dalek plparrot: Add a skeleton pgxn meta.json file
02:39 dalek plparrot: review: https://github.com/leto/plparrot/commit/52b996bb91
02:50 dalek plparrot: 5f4d360 | leto++ | META.json:
02:50 dalek plparrot: meta.json wants a semantic version number, so give it one
02:50 dalek plparrot: review: https://github.com/leto/plparrot/commit/5f4d36000a
02:50 dalek plparrot: 65e3360 | leto++ | META.json:
02:50 dalek plparrot: Add repo and bugtracker to meta.json
02:50 dalek plparrot: review: https://github.com/leto/plparrot/commit/65e3360d0b
02:51 bubaflub joined #parrot
03:05 dalek plparrot: c612728 | leto++ | META.json:
03:05 dalek plparrot: Add more details to meta.json
03:05 dalek plparrot: review: https://github.com/leto/plparrot/commit/c6127280dc
03:11 S_Arms left #parrot
03:11 bubaflub left #parrot
03:26 Drossel joined #parrot
03:27 Kulag left #parrot
04:30 Eduardow left #parrot
04:50 dalek parrot: 84a6b3b | petdance++ | src/ops/var.ops:
04:50 dalek parrot: consted a few variables
04:50 dalek parrot: review: https://github.com/parrot/parrot/commit/84a6b3b239
04:50 dalek parrot: 74e2932 | petdance++ | src/ops/set.ops:
04:50 dalek parrot: consted a var
04:50 dalek parrot: review: https://github.com/parrot/parrot/commit/74e29327cc
04:50 dalek parrot: f99d63c | petdance++ | src/ops/object.ops:
04:50 dalek parrot: removed an unnecessary setting of a var
04:50 dalek parrot: review: https://github.com/parrot/parrot/commit/f99d63cbd9
04:50 dalek parrot: 968fcad | petdance++ | src/ops/math.ops:
04:50 dalek parrot: consted a var
04:50 dalek parrot: review: https://github.com/parrot/parrot/commit/968fcad160
04:50 dalek parrot: 8f7ec49 | petdance++ | src/dynoplibs/ (2 files):
04:50 dalek parrot: consted a var
04:50 dalek parrot: review: https://github.com/parrot/parrot/commit/8f7ec49864
04:50 dalek parrot: 9f7969e | petdance++ | src/ops/core.ops:
04:50 dalek parrot: consted a pointer. Undid some unnecessary var setting
04:50 dalek parrot: review: https://github.com/parrot/parrot/commit/9f7969e6fd
05:06 birdwindupbird joined #parrot
05:28 petdance left #parrot
05:33 hudnix left #parrot
05:51 jrt4 joined #parrot
05:55 jrtayloriv left #parrot
06:16 mj41 joined #parrot
06:28 benabik joined #parrot
06:32 dalek plparrot: 3c2246a | leto++ | Makefile:
06:32 dalek plparrot: Get rid of svn-- revision checking junk
06:32 dalek plparrot: review: https://github.com/leto/plparrot/commit/3c2246a146
06:49 birdwindupbird left #parrot
07:09 birdwindupbird joined #parrot
07:47 contingencyplan left #parrot
08:07 ShaneC left #parrot
08:17 jrt4__ joined #parrot
08:21 jrt4 left #parrot
08:26 jrt4 joined #parrot
08:29 jrt4__ left #parrot
08:33 jrt4__ joined #parrot
08:37 jrt4 left #parrot
08:40 jrt4 joined #parrot
08:42 ShaneC1 joined #parrot
08:44 jrt4__ left #parrot
08:49 jrt4__ joined #parrot
08:53 jrt4 left #parrot
08:57 jrt4 joined #parrot
09:01 jrt4__ left #parrot
09:04 jrt4__ joined #parrot
09:08 jrt4 left #parrot
09:11 jrt4 joined #parrot
09:14 SHODAN joined #parrot
09:15 jrt4__ left #parrot
09:18 jrt4__ joined #parrot
09:22 jrt4 left #parrot
09:22 Drossel left #parrot
09:23 Kulag joined #parrot
09:27 Kulag left #parrot
09:27 Kulag joined #parrot
09:30 dodathome joined #parrot
09:34 Kulag left #parrot
09:34 Kulag joined #parrot
09:39 ShaneC1 left #parrot
09:44 ShaneC joined #parrot
09:46 ShaneC left #parrot
09:48 mtk left #parrot
09:51 Kulag left #parrot
09:51 Kulag joined #parrot
09:55 mtk joined #parrot
10:27 birdwindupbird left #parrot
10:33 birdwindupbird joined #parrot
10:34 Kulag left #parrot
10:35 Kulag joined #parrot
10:39 Drossel joined #parrot
10:41 Kulag left #parrot
10:42 alin joined #parrot
11:00 JimmyZ joined #parrot
11:02 lucian joined #parrot
11:06 lucian_ joined #parrot
11:10 lucian left #parrot
11:19 tadzik where does the select pmc live?
11:22 tadzik wasn't it merged?
11:27 tadzik ah, not
11:27 * tadzik sad panda
11:30 tadzik cotto_work: ping
11:35 bacek left #parrot
11:41 JimmyZ left #parrot
11:45 lucian_ left #parrot
11:46 bacek joined #parrot
11:57 Patterner left #parrot
11:57 Psyche^ joined #parrot
11:57 Psyche^ is now known as Patterner
12:04 JimmyZ joined #parrot
12:34 birdwindupbird left #parrot
12:43 mj41 left #parrot
12:52 bubaflub joined #parrot
13:02 hudnix joined #parrot
13:20 Coke left #parrot
13:20 cosimo left #parrot
13:20 Coke joined #parrot
13:24 woosley joined #parrot
13:31 mrwall-e joined #parrot
13:33 contingencyplan joined #parrot
13:35 alin left #parrot
13:35 lucian joined #parrot
13:47 rohit_nsit08 joined #parrot
13:47 rohit_nsit08 hello #parrot
13:49 tadzik hello rohit_nsit08
13:49 rohit_nsit08 tadzik: hi, good morning
13:54 whiteknight joined #parrot
13:54 dalek Rosella: d8321a6 | Whiteknight++ | src/harness/TestFile.winxed:
13:54 dalek Rosella: swap_handles is a utility function, not a method
13:54 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/d8321a6d3f
13:54 dalek Rosella: 2de0727 | Whiteknight++ | src/harness/ (3 files):
13:54 dalek Rosella: start adding debug output to test harness
13:54 dalek Rosella: review: https://github.com/Whiteknig​ht/Rosella/commit/2de07276cc
13:55 whiteknight good morning, #parrot
13:55 tadzik good morning whiteknight
13:56 rohit_nsit08 whiteknight: hello
13:57 whiteknight hello tadzik, rohit_nsit08
13:59 hercynium joined #parrot
14:00 rohit_nsit08 whiteknight: Got surprised by how JavaScript get its dynamic nature :-) check the post http://rohitnsit08.blogspot.com/2​011/04/javascript-internals.html
14:02 tadzik rohit_nsit08: "findout out more about it." Typo?
14:02 rohit_nsit08 tadzik: ya, the main was how execution contexts and scope chain works
14:03 rohit_nsit08 the code execution can only run inside execution contexts and transfer of control with pushing earlier context on stack
14:07 whiteknight http://rubini.us/2011/02/23/introduction-to-fancy/
14:07 whiteknight rohit_nsit08: I'll read that post in a bit
14:08 rohit_nsit08 whitknight: okay
14:09 mrwall-e_ joined #parrot
14:09 mrwall-e left #parrot
14:09 mrwall-e_ is now known as mrwall-e
14:12 mrwall-e left #parrot
14:12 mrwall-e joined #parrot
14:14 jrt4 joined #parrot
14:14 arnsholt rohit_nsit08: Which font are you using for bodytext on your blog, OOC?
14:15 rohit_nsit08 arnsholt: hi, it's google font : Philosopher
14:18 jrt4__ left #parrot
14:19 mrwall-e left #parrot
14:20 mrwall-e joined #parrot
14:20 petdance joined #parrot
14:24 jrt4__ joined #parrot
14:28 jrt4 left #parrot
14:29 lucian rohit_nsit08: i think you may misunderstand how 'this' works in js
14:30 rohit_nsit08 lucian: 'this' simply points to the container object , isn't it?
14:30 lucian rohit_nsit08: usually, yes. but the containing object isn't always clear
14:30 lucian closures are a case where 'this' often gets fucked up
14:31 lucian event callbacks, etc
14:31 rohit_nsit08 lucian: ya that's true, closures happen when there are inner function declarations.
14:32 rohit_nsit08 lucian: my guess is that in that case also , 'this' should point to the object containing that method only
14:32 lucian afaik, 'this' has an odd dynamic scoping, not lexical
14:32 lucian due to its implicit nature
14:32 atrodo i thought in js, this was set to the object the function was called on (or with apply)
14:33 rohit_nsit08 atrodo: agree
14:33 lucian atrodo: there are corner cases where it seems that doesn't happen
14:33 bubaflub rohit_nsit08: as a side note, IE sometimes fails to handle "this" correctly
14:33 atrodo lucian: for instance?
14:33 lucian although it does, in fact
14:34 lucian atrodo: let me see if i can find that article
14:34 rohit_nsit08 IE has its own Js specification, so can't comment on it.
14:35 rohit_nsit08 'this' has some problem with closures, I'll have to test it more i guess
14:35 jrt4 joined #parrot
14:35 rohit_nsit08 I'm testing my js codes on nodejs
14:35 rohit_nsit08 so they should work on chrome
14:35 lucian atrodo: hmm, http://jashkenas.github.com/coffee-script/ search for 'function binding'
14:36 lucian not quite what i was looking for
14:36 lucian rohit_nsit08: yeah, just ignore IE
14:36 lucian closures in JS get lexically scoped, for the most part
14:36 lucian except for this, which is dynamically scoped
14:36 atrodo lucian: right, a function call changes this
14:37 lucian rohit_nsit08: http://www.digital-web.com/a​rticles/scope_in_javascript/ might be helpful
14:37 lucian atrodo: i think where it looks very odd is with nested closures
14:38 lucian if you define a callback inside a closure that itself was a callback
14:38 jrt4__ left #parrot
14:38 atrodo lucian: right, a closure is a function.  Calling that function changes this from what it was when you defined the function
14:40 lucian atrodo: yes, and you would like to get the 'this' at the beginning of the closure chain
14:41 lucian you can do it explicitly with .apply, which is what CoffeeScript does with =>
14:41 dalek parrot-linear-algebra: ab2c7b6 | Whiteknight++ | t/harness:
14:41 dalek parrot-linear-algebra: make sure to run tests inline
14:41 dalek parrot-linear-algebra: review: https://github.com/Whiteknight/parr​ot-linear-algebra/commit/ab2c7b6542
14:41 dalek parrot-linear-algebra: 0340153 | Whiteknight++ | t/ (2 files):
14:41 dalek parrot-linear-algebra: remove debugging garbage from harness. fix typo in set_block.t
14:41 dalek parrot-linear-algebra: review: https://github.com/Whiteknight/parr​ot-linear-algebra/commit/0340153052
14:41 dalek parrot-linear-algebra: a4e1696 | Whiteknight++ | t/methods/complexmatrix2d/c​onvert_to_complex_matrix.t:
14:41 dalek parrot-linear-algebra: fix another typo. All tests run again (but most fail)
14:41 dalek parrot-linear-algebra: review: https://github.com/Whiteknight/parr​ot-linear-algebra/commit/a4e169663d
14:41 dalek parrot-linear-algebra: b9a3697 | Whiteknight++ | t/harness:
14:41 dalek parrot-linear-algebra: fix typo in harness. Start reclaiming tests
14:41 dalek parrot-linear-algebra: review: https://github.com/Whiteknight/parr​ot-linear-algebra/commit/b9a36973a6
14:41 dalek parrot-linear-algebra: bf705ea | Whiteknight++ | t/ (10 files):
14:41 dalek parrot-linear-algebra: update several assertions and other calls to the new architecture. Reclaim a bunch more tests
14:41 dalek parrot-linear-algebra: review: https://github.com/Whiteknight/parr​ot-linear-algebra/commit/bf705eabd3
14:41 dalek parrot-linear-algebra: 32125af | Whiteknight++ | t/ (14 files):
14:41 dalek parrot-linear-algebra: fix references to test factory, a few other fixes. Reclaim several other tests
14:41 dalek parrot-linear-algebra: review: https://github.com/Whiteknight/parr​ot-linear-algebra/commit/32125aff71
14:41 dalek parrot-linear-algebra: 1a76233 | Whiteknight++ | t/testlib/methods/gemm.nqp:
14:41 dalek parrot-linear-algebra: fix gemm tests. methods are all tests, so utilities have to be subs
14:41 dalek parrot-linear-algebra: review: https://github.com/Whiteknight/parr​ot-linear-algebra/commit/1a762332ce
14:41 dalek parrot-linear-algebra: aa5c604 | Whiteknight++ | t/testlib/methods/set_block.nqp:
14:41 dalek parrot-linear-algebra: fix setblock tests
14:41 dalek parrot-linear-algebra: review: https://github.com/Whiteknight/parr​ot-linear-algebra/commit/aa5c604ce3
14:41 dalek parrot-linear-algebra: 8a6dca3 | Whiteknight++ | t/methods/ (45 files):
14:41 dalek parrot-linear-algebra: fix all remaing tests. no more failures
14:41 dalek parrot-linear-algebra: review: https://github.com/Whiteknight/parr​ot-linear-algebra/commit/8a6dca31f4
14:42 whiteknight note to self: Huge rewrites and refactors to your test library means huge rewrites to all test suites which use it
14:42 atrodo whiteknight: note to self, progress is work
14:42 * atrodo hates progress some days
14:43 lucian atrodo: this is also ugly http://jibbering.com/faq/notes/closures/#clAc
14:43 whiteknight the changes are all necessary, and I'm much more happy now with Rosella.Test than I used to be
14:43 atrodo And those are the days i love progress.  We have a love/hate relationship
14:44 whiteknight of course, I have several dozen test files in PLA which basically need identical updates, but which aren't amenable to a quick sedscript
14:44 jrt4__ joined #parrot
14:44 cotto_work ~~
14:44 whiteknight good morning cotto_work
14:44 cotto_work hi whiteknight
14:45 petdance left #parrot
14:45 whiteknight cotto_work: did you get my email last night?
14:46 cotto_work whiteknight: I did.  The part about making the concurrency proxies RO sounded a lot like the ro variant vtables we have.
14:47 whiteknight cotto_work: yes, very similar. The big draw of the proxy is that we can intercept calls and make intelligent decisions about them. Also, open them up for subclassing and hllmapping
14:47 jrt4 left #parrot
14:47 cotto_work Yeah.  It's more fine-grained.
14:47 whiteknight A similar mechanism could be used to cut out ro_variant vtables entirely, which are a huge waste of space
14:48 whiteknight an RO proxy object would be extremely easy to create (Rosella does it now in like 30 lines of winxed code)
14:48 cotto_work Overall it struck me as sensible.  I'd like to take another hour and give it a second more thorough read.
14:48 whiteknight it's a first draft. I expect it to be more the start of the conversation than the end of it
14:50 mrwall-e left #parrot
14:55 rohitnsit08 joined #parrot
14:57 whiteknight what I want to avoid is getting stuck in a trap of providing too much or too little.  We give people sane, safe defaults and let them get into trouble if they want
14:57 whiteknight If somebody says "I want to be able to modify data across threads with no wait and no latency, but I'm going to provide my own implementation of locks" whatever, that's a personal decision
14:58 whiteknight Parrot can warn you loudly, but we shouldn't insert a bunch of costly logic to prevent problems
14:58 rohit_nsit08 left #parrot
14:58 whiteknight one thing I like about the proxy idea is that the proxy can contain a reference to the owner thread of the target PMC, so every PMC in the system doesn't need to be saddled with ownership information
14:59 whiteknight So long as you work through the proxy, everything is safe. If you insist on talking to the target directly, it's on you
15:03 rohitnsit08 left #parrot
15:07 rohitnsit08 joined #parrot
15:10 preflex joined #parrot
15:11 tadzik cotto_work: ping
15:14 cotto_work tadzik: pong
15:19 BloodyCoin joined #parrot
15:23 cotto_work tadzik: you pinged?
15:24 theory joined #parrot
15:26 woosley left #parrot
15:27 moritz \o
15:28 moritz I just noticed that rakudo's perl6.pbc is 11MB, and just 1.3 if gzip-compressed
15:28 moritz what makes those PBC so huge?
15:28 moritz 11004336 / 1288994
15:28 aloha 8.53715067719477
15:28 moritz compressed by a factor 8.5
15:32 rdesfo joined #parrot
15:32 PerlJam run strings on it and see if there is a lot of textual data?
15:33 moritz $ strings perl6.pbc|wc -c
15:33 moritz 247949
15:33 moritz 247949 / 11004336
15:33 aloha 0.0225319365021206
15:33 moritz 2.3%
15:33 aloha 0.023
15:34 moritz not very significant
15:34 tadzik cotto_work: aye
15:34 whiteknight parrot de-duplicates strings internally, I think
15:35 tadzik cotto_work: #2034, you mentioned you want to review the Select PMC once again. Got some spare time to do that?
15:36 PerlJam moritz: I only get a factor of 4.8 compression on my system.  Maybe you've got double wide alignment compared to me  :-)
15:37 moritz PerlJam: do you have a 32bit system?
15:38 cotto_work tadzik: possibly.  I might be slow to respond though.
15:39 PerlJam I don't think this system is 32bit
15:39 moritz PerlJam: if it's linuxoid, uname -a will tell you
15:47 ambs joined #parrot
15:47 rdesfo left #parrot
15:48 whiteknight left #parrot
15:52 simcop2387_ joined #parrot
15:54 simcop2387 left #parrot
15:54 simcop2387_ is now known as simcop2387
15:55 JimmyZ moritz: perl6.pbc is 5.34MB here, on windows 7
15:58 whiteknight joined #parrot
15:58 tadzik 11 MBs, 64bit linux
16:00 JimmyZ 32 bit windows 7 :)
16:01 petdance joined #parrot
16:03 lucian_ joined #parrot
16:06 moritz I just sent an email to parrot-dev, and it bounced with "Recipient address rejected: User unknown in virtual alias table
16:07 moritz "
16:07 petdance left #parrot
16:07 moritz oh
16:07 moritz I sent to @parrot instead of @lists.parrot
16:08 lucian left #parrot
16:08 whiteknight about the bytecode size issue?
16:08 dukeleto whiteknight: ping
16:09 whiteknight pong
16:10 moritz whiteknight: yes
16:30 petdance joined #parrot
16:35 cotto_work tadzik: will you be around tomorrow?
16:35 lucian_ is now known as lucian
16:38 dukeleto ~~
16:41 whiteknight moritz: I haven't gotten that email yet, I don't think
16:44 petdance left #parrot
16:46 moritz whiteknight: I haven't resent it
16:46 moritz whiteknight: I've said everything I have to say here on #parrot too
16:49 JimmyZ left #parrot
16:50 whiteknight ok
16:56 mrwall-e joined #parrot
16:58 ambs left #parrot
17:00 whiteknight now that the biggest portion of the IMCC refactors are done, we can start seriously looking at the serialization changes needed by rakudo
17:00 whiteknight the imcc_compreg_pmc and then the packfile_wrap branches were prerequisites for that work
17:01 whiteknight now we can pass packfiles around as PMCs throughout most of the system instead of structure pointers, manage them with GC, and link between them
17:04 whiteknight rohitnsit08: I read your blog post. It all looks very good
17:05 tadzik cotto_work: yeah, probably
17:05 tadzik cotto_work: I also merged master into tewk/select
17:05 cotto_work ok
17:06 cotto_work I'm afk for the rest of the day.
17:17 cotto_work whiteknight++ for the release streamlining thoughts.  If I weren't going out the door, I'd love to comment.
17:22 lucian_ joined #parrot
17:25 whiteknight there's always more time to talk!
17:26 lucian left #parrot
17:27 jrt4__ left #parrot
17:28 jrt4__ joined #parrot
17:35 mtk left #parrot
17:35 jrt4 joined #parrot
17:37 lucian_ whiteknight: i didn't realised you adhered to this so closely http://www.total-knowledge.com/~ilya/mips/ugt.html
17:37 rohitnsit08 left #parrot
17:37 * lucian_ realises that whiteknight follows standards better
17:38 lucian_ is now known as lucian
17:38 whiteknight lucian: I like it
17:38 whiteknight :)
17:39 jrt4__ left #parrot
17:41 rdesfo joined #parrot
17:41 mtk joined #parrot
17:42 mtk left #parrot
17:48 jrt4__ joined #parrot
17:50 rdesfo left #parrot
17:52 jrt4 left #parrot
17:53 rohitnsit08 joined #parrot
18:06 ShaneC joined #parrot
18:41 whiteknight msg soh_cah_toa Check out this link: http://blog.llvm.org/2011/04/re​gular-expression-commands.html
18:41 aloha OK. I'll deliver the message.
18:43 whiteknight msg soh_cah_toa nothing you need to worry about for your project, but still fun to think about :)
18:43 aloha OK. I'll deliver the message.
19:04 rohitnsit08 left #parrot
19:05 bbatha joined #parrot
19:06 rohitnsit08 joined #parrot
19:11 bbatha left #parrot
19:17 rohitnsit08 left #parrot
19:22 rohitnsit08 joined #parrot
19:31 whiteknight left #parrot
19:45 rdesfo joined #parrot
19:45 plobsing ~~
19:51 rdesfo left #parrot
19:53 Coke left #parrot
19:53 Coke joined #parrot
20:00 ambs joined #parrot
20:03 Coke left #parrot
20:03 Coke joined #parrot
20:07 perlite_ joined #parrot
20:10 perlite left #parrot
20:10 perlite_ is now known as perlite
20:18 dodathome left #parrot
20:21 Coke left #parrot
20:21 Coke joined #parrot
20:27 Coke left #parrot
20:31 AzureSto_ left #parrot
20:33 Coke joined #parrot
20:34 rohitnsit08 left #parrot
20:36 AzureStone joined #parrot
20:43 rohitnsit08 joined #parrot
20:46 bbatha joined #parrot
20:48 dalek Heuristic branch merge: pushed 90 commits to parrot/tt1931-nci-parameters-deprecation by plobsing
20:50 Coke left #parrot
20:50 Coke joined #parrot
21:04 bbatha left #parrot
21:19 bbatha joined #parrot
21:22 jrt4 joined #parrot
21:22 bbatha left #parrot
21:25 jrt4__ left #parrot
21:30 jrt4__ joined #parrot
21:30 ambs left #parrot
21:34 jrt4 left #parrot
21:36 rohitnsit08 left #parrot
21:38 jrt4 joined #parrot
21:41 jrt4__ left #parrot
21:42 bacek left #parrot
21:55 soh_cah_toa joined #parrot
21:56 jrt4 left #parrot
21:57 jrtayloriv joined #parrot
22:07 hercynium left #parrot
22:17 bacek joined #parrot
23:16 lucian left #parrot
23:28 rdesfo joined #parrot
23:28 jrt4 joined #parrot
23:31 bbatha joined #parrot
23:32 jrtayloriv left #parrot
23:40 rdesfo left #parrot
23:41 jrt4__ joined #parrot
23:44 jrt4 left #parrot
23:54 mikehh left #parrot

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

Parrot | source cross referenced