|
Parrot 1.1.0 Released | parrot.org/ | 325 RTs left | Weekly Priority: Remove Deprecated Items Set by moderator on 28 April 2009. |
|||
|
00:09
AndyA joined
00:25
bobke joined
00:52
leto_ joined
01:08
tetragon joined
|
|||
| cotto | ooh shiny | 01:10 | |
|
01:16
rdice joined
|
|||
| Whiteknight | bacek++ | 01:17 | |
| davidfetter | ? | 01:24 | |
| davidfetter scrolls up | 01:25 | ||
| oh, cool :) | |||
|
01:27
eternaleye joined
|
|||
| cotto | bacek++ | 01:38 | |
|
02:11
leto_ joined
|
|||
| cotto | msg bacek what are your plans for having the pmc compiler store persistent information (i.e. for attr inheritance) | 02:12 | |
| purl | Message for bacek stored. | ||
|
02:13
kid51 joined
|
|||
| cotto | kid51, ping | 02:13 | |
| kid51 | cotto pong | 02:14 | |
| cotto | Could you take a look at the tests in the pmc_pct branch (compilers/pmc) and give me a clue about how to make the work with specifying the parrot binary's absolute path? | ||
| s/absolute/relative/ | 02:15 | ||
| kid51 | I'll try ... but I've never poked around in that area before. | ||
| Is there a particular ticket this pertains to? | |||
| cotto | nope. | 02:16 | |
| If you don't feel particularly qualified, don't bother. I just thought you might know where to go from other test-related work. | |||
| kid51 | BTW, is Smolder down again? | 02:18 | |
| I started a run in a screen session about 5 hours ago and just checked the result now: | |||
| Could not upload report to Smolder at smolder.plusthree.com | |||
| HTTP CODE: 500 (read failed: Connection reset by peer) | |||
| make: *** [smolder_test] Error 104 | |||
| ... which is about the 4th time this week. | 02:19 | ||
| cotto | wtf? | ||
| That's not good for such an important part of our testing infrastructure. | 02:20 | ||
| kid51 | And the Smolder home page is not coming up. | ||
| Smolder was down all last weekend. | |||
| What is focus of pmc_pct branch? | 02:22 | ||
| Should I add any options to Configure.pl? (I usually don't on Linux) | |||
| cotto | to make a pct-based PMC compiler to replace the perl-based code we have now | 02:23 | |
| no special configure options | |||
| kid51 | And are you concerned with 'make test' in general or some specific subset? | 02:24 | |
| cotto | make test in general | 02:25 | |
| (although there are only 6 test files) | |||
|
02:32
bacek joined
|
|||
| bacek | hi again | 02:38 | |
| purl | oh, you're back! | ||
| bacek | cotto: around? | 02:39 | |
| purl: msg cotto I have no ideas about storing persistent info. But current PMC implementation of attributes volatiles encapsulation... | 02:44 | ||
| purl | Message for cotto stored. | ||
| kid51 | msg cotto Just ran 'make coretest' in pmc_pct branch. All tests passed. So where is the problem? | 02:46 | |
| purl | Message for cotto stored. | ||
|
02:48
janus joined
|
|||
| bacek | kid51: "make coretest" in pmc_pct probably doesn't test "compilers/pmc". | 02:49 | |
| kid51 | Yes, I just spotted that. | 02:50 | |
| compilers/pmc/ doesn't exist in trunk. | |||
| bacek | kid51: of cause :) | 02:51 | |
| kid51 | Here is a guess. | 02:55 | |
| In trunk, we have a target 'make nqp_test', which runs tests found in compilers/nqp/t/*.t. | |||
| i.e., same number of directories down from top-level as compilers/pmc/t/. | 02:56 | ||
| Opening up the very first file in that t/ dir, 01-literals.t, I see: | |||
| #!./parrot nqp.pbc | |||
| Would there be anything equivalent for your goal? | |||
| bacek | kid51: yes. | 02:57 | |
| But there is semi-hardcoded paths in test files. | 02:58 | ||
| kid51 | But is that the *only* problem. When I call 'prove compilers/pmc/t/*.t', *all* tests in that dir fail. | 02:59 | |
| with: Non-zero exit status: 13 | |||
| Parse errors: No plan found in TAP output | |||
| bacek | try "cd compilers/pmc; make test" | 03:00 | |
| kid51 | okay, tests are running. | 03:01 | |
| Well, I have paid little attention to testing of PIR, so I don't have any quick answers. Sorry | 03:03 | ||
| Could any of those t/*.t files be stripped down such that any test passes? | 03:04 | ||
| cotto | bacek, back | ||
| bacek | kid51: I didn't understand last question... :/ | 03:05 | |
| kid51 | If the problem is a semi-hardcoded path in a test file, could you strip out all the tests from a particular file except one that does not include such a path? | 03:06 | |
| bacek | hmm... We can probably pass "path_prefix" to those tests. | 03:08 | |
|
03:08
leto_ joined
|
|||
| bacek | cotto: any suggestions? | 03:08 | |
| purl | any suggestions are welcome. (including ripping it out entirely :)) | ||
| kid51 | i.e., Could we place a test file in that directory that did nothing but 'say 'Hello world'' in PIR? What would we have to do to get that to run? | 03:10 | |
| bacek | wow. Useful bot :) | ||
| kid51: hm. Just run them. Using "prove" or "parrot" | 03:11 | ||
| you can run "prove t/01-parse.t" within compilers/pmc. | |||
| kid51 | But what cotto was asking me about (I think) was how to get them to run from top-level directory. | 03:12 | |
| cotto | I'm trying to make the tests work from either svn root or compilers/pmc, or at make them work from compilers/pmc without specifying the path to parrot. | 03:15 | |
| bacek | cotto: there is #!../../parrot in tests... | 03:16 | |
| cotto | although the nqp tests don't work from parrot's root, so that may not be reasonable or necessary | ||
| bacek | I've made simple '_get_path_prefix' but it doesn't help. | ||
| easiest solution: pmc_test:\\n\\t$(MAKE) -C compilers/pmc test | |||
| (In to-level Makefile) | 03:17 | ||
| cotto: we need "failing" tests... Like for adding second class_init, etc | 03:20 | ||
| cotto | It'd be smart to make test_parse_one return a value. | 03:22 | |
| I think I'll leave the tests alone for now wrt the path to parrot. | 03:29 | ||
| bacek, would it be a good time for me to make test_parse_one return a value and refactor the tests to use it? | 03:30 | ||
| bacek | cotto: agreed. | ||
| cotto | I'll start then. | 03:31 | |
| Does the current code care about multiple class_inits? | 03:35 | ||
| *init_class | |||
| nm. I give up | |||
| ;) | |||
|
03:36
starscream joined
|
|||
| bacek | cotto: I slightly refactored it :) | 03:37 | |
| cotto | bacek, should I not be working on the tests then? | 03:40 | |
| nm. different topic | |||
| bacek | :) | ||
| It was about "class_init". | 03:41 | ||
| cotto | yup | ||
| dalek | rrot: r38434 | bacek++ | branches/pmc_pct/compilers/pmc (4 files): Add (totally incomplete) class_init generating |
03:42 | |
|
03:44
japhb joined
|
|||
| bacek | No single pmc in parrot marked with "is_ro", "has_ro" or "is_shared"... | 03:55 | |
| cotto | are you going to be at the next #ps? | 03:57 | |
|
03:58
starscream joined
|
|||
| bacek | cotto: no... It's at 4:30. AM. | 04:00 | |
| davidfetter | hrm | ||
| cotto | ok. I'll mention that (and method attributes) then. | ||
| davidfetter | should #ps's move around a bit?/ | 04:01 | |
| cotto | davidfetter, why? | ||
| bacek | davidfetter: then it will be inconvenient for all other people. Australia is far-far-away from other world :) | ||
| davidfetter | spreading the inconvenience a bit | ||
| dalek | rrot: r38435 | cotto++ | branches/pmc_pct/compilers/pmc/t (3 files): [t] refactor test_parse_one to return a value rather than running ok() directly |
||
| davidfetter | where is everybody? | 04:02 | |
| purl | rumour has it everybody is depraved | ||
| davidfetter | www.timeanddate.com/worldclock/meeting.html <-- handy tool | 04:03 | |
| cotto | eu and us for the most part, although there are people from all over | ||
| bacek | www.ohloh.net/p/parrot/map | ||
| cotto | including New Caledonia | 04:04 | |
| (hi GeJ) | |||
| bacek, you're in Australia? I thought you were in Russia. | 04:05 | ||
| bacek | I was in Russia. 3+ year ago | ||
| davidfetter | hrm | 04:06 | |
| i don't see new caledonia | |||
| cotto | The map doesn't include everyone who contributes. You may need to register. | ||
|
04:09
davidfetter joined
|
|||
| davidfetter | it's probably not good that control-a and control-q are so close together :P | 04:10 | |
|
04:11
mikehh_ joined
|
|||
| cotto | I really should know better than to drink and watch Whose Line clips. | 04:14 | |
| bacek wishes to have inheritance and multi-methods in NQP... | 04:15 | ||
| cotto | see also: Pony | 04:16 | |
| bacek | :) | 04:17 | |
| ok. Time to brake stuff. I'm going to "reimplement" src/emitter/pmc in NQP. | 04:20 | ||
| cotto | (breaking stuff)++ | 04:21 | |
| bacek | cotto: if you'll switch "test_parse_one" from returning string to returning parse tree it will be helpful. | 04:31 | |
| "check_one_file" in 05-header and 06-body are almost identical... | 04:32 | ||
| cotto | bacek, I'll move it into t/common.t | 04:34 | |
| bacek | cotto: agreed. | 04:35 | |
| cotto | are you thinking that test_parse_one should return either a parse tree or an exception? | ||
|
04:38
Andy joined
|
|||
| cotto | What does the 'compile' method return? | 04:45 | |
|
04:49
rakudohudson joined
|
|||
| Infinoid (probably) breaks dalek again | 04:52 | ||
|
04:52
dalek joined
|
|||
| Infinoid | If that worked, dalek should now automatically be tracking all of the github projects mentioned on the Languages page on the wiki | 04:54 | |
| it'll poll that page once every 4 hours to look for new stuff. Won't detect deletions tho | |||
| eternaleye | Infinoid++ | 04:55 | |
| cotto | Infinoid++ | ||
|
04:56
leto_ joined
|
|||
| Infinoid | Now I just need someone to commit something and test it for me. :) | 04:56 | |
| Preferably rakudo; that's a little hackier than the rest because it's supposed to output to 2 channels | 04:57 | ||
| github.com/Infinoid/dalek-plugins/b...utofeed.pm | 04:59 | ||
| next up, googlecode, then trac, then bitbucket | |||
| bacek | cotto: "compile" returns result of last step. For "parse" it will be parse tree. For "past" - PAST | 05:15 | |
| dalek | rrot: r38436 | cotto++ | branches/pmc_pct/compilers/pmc/t (3 files): [t] factor out some common code between a couple tests |
05:17 | |
| cotto | bacek, feel free to rename the new function in this upcoming commit, then. | ||
| rrot: r38437 | bacek++ | branches/pmc_pct (4 files): Extract C emitter from PMC emitter |
|||
| bacek | cotto: Who cares about names? :) | 05:18 | |
| cotto | people who try to figure out what the code is doing | 05:19 | |
| dalek | rrot: r38438 | bacek++ | branches/pmc_pct/compilers/pmc (4 files): Start moving stuff from emitter/pmc.pir into emitter/pmc.pm |
05:21 | |
| bacek | cotto: English is my forth language :) I'm not very good at naming. | ||
| cotto | That's fine. It's easy to rename variables. | 05:22 | |
|
05:27
frodwith joined
|
|||
| bacek | cotto: can we temporary disable 02-parse-all? It takes too long to process all tests... | 05:38 | |
| cotto | heh. feel free to do that | 05:39 | |
| dalek | rrot: r38439 | bacek++ | branches/pmc_pct/compilers/pmc/src/emitter (2 files): Reimplement generate_h_file in NQP |
||
| bacek | here we go | 05:59 | |
| dalek | rrot: r38440 | bacek++ | branches/pmc_pct/compilers/pmc/src (4 files): Move emitting C code to pmc.pm |
06:01 | |
| rrot: r38441 | bacek++ | branches/pmc_pct/compilers/pmc/src/emitter/pmc.pm: Resurrect TODO comment |
|||
| cotto | bacek, where can I jump in? | 06:04 | |
| bacek | cotto: now | 06:05 | |
| cotto | what needs implementing that you don't feel like working on? | ||
| bacek | It's probably good idea to start stealing code from lib/Parrot/Pmc2c | 06:06 | |
| cotto: check my last commit :) | |||
| cotto | ah. vtables | ||
| bacek | indeed. | ||
| I've got PMC::VtableInfo::vtables_list and vtable_hash. | 06:07 | ||
| cotto | it'll be nicer working in nqp than in raw pir. bacek++ for that | ||
| bacek | It was main idea :) | ||
| We can extract few helper functions for generating signatures. Like mk_full_name, etc. | 06:08 | ||
| Anyway. Movies time. Kids waiting. | |||
| afk # for couple of hours | |||
| dalek | rrot: r38442 | cotto++ | branches/pmc_pct/compilers/pmc/t/02-parse-all-pmcs.t: [t] speed up the test by only testing the 10 smallest PMCs |
06:14 | |
| cotto | Hmmm. I wonder what'd happen if we called class_init lazily | 06:27 | |
|
06:32
leto_ joined
06:54
japhb joined
|
|||
| dalek | rrot: r38443 | chromatic++ | trunk/docs/book/ch01_introduction.pod: [book] Edited chapter 1 for clarity, flow, and style. |
07:00 | |
| cotto | msg bacek the PMC compiler will need to have some kind of persistence mechanism before class_init can be implemented. We could put it off by implementing chromatic's suggestion in TT #528, but we'll still eventually need it. | 08:12 | |
| purl | Message for bacek stored. | ||
| cotto | msg bacek compilers/json looks like it might work. | 08:15 | |
| purl | Message for bacek stored. | ||
|
09:04
bacek joined
09:06
iblechbot joined
|
|||
| bacek | hi again | 09:32 | |
| purl | oh, you're back! | ||
| bacek | cotto: ping | 09:34 | |
| cotto | bacek, pong | 09:46 | |
| bacek | cotto: I'm not yet convinced to any approach for class_init... | ||
| chromatic's idea is very good, but it's slightly out of scope for pmc_pct branch. | 09:47 | ||
| cotto | no, but any approach will need persistence (or a bunch of repeated parsing) | ||
| completely agree | |||
| I'm just thinking that if his idea can be implemented, the PMC compiler won't need to persist as much information. | 09:48 | ||
| bacek | AFAIU chromatic's suggestion we will not require repeated parsing. | ||
| cotto | no | ||
| bacek | If we'll factor out Parrot_Foo_get_vtable function we can simplify things a lot | ||
| cotto | It's not hard to get a vtable. It's just interp->vtables[type] | 09:49 | |
| bacek | Like Parrot_Derived_get_vtable() { vtable * res = Parrot_Base_get_vtable(); res[1] = Parrot_Derived_blah; return res; } | 09:50 | |
| (hard to get) But we have to build interp->vtables first :) | |||
| cotto | default is a special case, then everything copies that and adds its own stuff | 09:51 | |
| bacek | Yes. Default is exception. | ||
| cotto | istr that it's that way in the pmc2c code | ||
| bacek | But everyone else will call Parrot_default_get_vtable, fill it with own methods and return | ||
| no. pmc2c builds whole vtable | 09:52 | ||
| so, it require to export all vtable methods | |||
| cotto | or use its first parent's vtable, fill in other parents' stuff, then fill in its own | ||
| bacek | With this approach we have to export only 2 methods for each pmc: get_vtable and class_init | 09:53 | |
| cotto: exactly | |||
| cotto | I'm certain that I'm missing something, but this seems like it'll cut out the need for persistent information in the PMC compiler. | 09:54 | |
| bacek | It will cut all requirements for persistence | ||
| cotto | It sounds much more elegant. | 09:55 | |
| bacek | agreed :) | ||
| purl: seen chromatic | 09:56 | ||
| purl | chromatic was last seen on #parrot 2 days, 9 hours, 27 minutes and 29 seconds ago, saying: I thought he was assistant TO the project manager. [Apr 30 00:26:16 2009] | ||
| cotto | working with generated code can be confusing | 09:58 | |
| bacek | cotto: very | 10:02 | |
| cotto | bacek, I think we'll still need persistent information to deal with the case when a PMC has two immediate parents. | ||
| we can copy the vtable from the first parent directly, but we have to selectively update it with entries from the second. | 10:03 | ||
| (this is something the current code supports, as long as only one parent has ATTRs) | 10:04 | ||
|
10:04
cognominal joined
|
|||
| cotto | I guess we could check which function pointers differ between the second parent (P2) and P2's parent, but that rubs me the wrong way. | 10:06 | |
| bacek | one note: there is no CorePMC with multiple parents | ||
| cotto | right. I know partcl has a couple and Lua may also. | 10:07 | |
| we have to either support it or get a declaration from allison that such behavior is deprecated. | 10:08 | ||
| and I think partcl's taken enough beating | |||
| I guess pointer comparisons would be ok, since it's such a rare use case. We'll need to be sure to test whatever solution we use, though. | 10:10 | ||
| bacek | agreed... | 10:12 | |
| purl | Just kidding! | ||
| cotto | < purl-- > | 10:13 | |
| bacek | Looks like current Pmc2c doesn't handle conflicts between parent's vtables | ||
| cotto | orly? | ||
| purl | YA RLY. | ||
| cotto | purl++ | ||
| bacek | first encounter wins | ||
| cotto | That's bad. | ||
| It shouldn't even allow multiple inheritance in that case. | |||
| cotto goes off to verify | 10:14 | ||
| oh. conflicts. | 10:16 | ||
| purl | conflicts are conflicts | ||
| cotto | That's the behavior I'd expect. | ||
| bacek | it is... And it's bad... | 10:18 | |
| ok, current behaviour can be implemented with little help of functional approach. | 10:21 | ||
| get_vtable(VTABLE * parent) ftw | |||
| cotto | um... return parent; ? | ||
| bacek | Derived_class_init() { VTABLE * t = Derived_get_vtable(Parent2_get_vtable(Parent1_get_vtable(Default_get_vtable()))) | 10:23 | |
| :) | |||
| cotto | I'm getting lisp flashbacks. | 10:24 | |
| oic | 10:25 | ||
| v shiny | |||
| bacek | oic? | ||
| purl | oic is Oh, \\ see or Office of the Independent Counsel or yet another example of kickable k3wlt01k | ||
| bacek | ah, ok | ||
| cotto | So Foo_get_vtable takes a VTABLE* and adds its own function pointers. | 10:26 | |
| bacek | exactly | ||
| It's probably better to name it "build_vtable" | |||
| cotto | I'd call it Foo_update_vtable, but I'm liking the idea. | 10:27 | |
|
10:27
rdice joined
|
|||
| bacek | * :) | 10:27 | |
| cotto | It'd have to be PARROT_EXPORT for dynpmcs, but one symbol per PMC is better than one per VTABLE function. | ||
| s/EXPORT/EXPORT,/ | 10:28 | ||
| bacek | we'll need 2. | ||
| cotto | O(number of PMCs) vs O(number of PMC VTABLE functions) | 10:29 | |
| bacek | :) | ||
| ok. we'll need 3 functions. Exportable get_vtable and class_init (or init_mro). Non exportable build_vtable(VTABLE*parent) which will be called only from get_vtable | 10:34 | ||
| bacek updated TT#518 with suggestions. | 10:44 | ||
| bacek-- # forgot to mention cotto++ in ticket comment... | 10:45 | ||
| afk #kids time | |||
| cotto | have fun | 10:48 | |
| dalek | rrot: r38444 | cotto++ | branches/tt528_vtinit: creating a branch to address TT #528 and simplify PMC VTABLE initialization |
10:56 | |
| cotto | yay. my first branch | ||
|
11:01
rdice joined
11:03
jan joined
|
|||
| cotto | rdice, ping | 11:10 | |
|
11:38
Ron joined
|
|||
| dalek | rrot: r38445 | cotto++ | branches/tt528_vtinit/lib/Parrot/Pmc2c/PMCEmitter.pm: [pmc2c] generate an (unused) update_vtable function for each PMC |
11:40 | |
| cotto | sleep | 11:42 | |
|
11:59
Whiteknight joined
12:16
kid51 joined
12:31
bsdz joined
12:40
HG` joined
|
|||
| dalek | rrot: r38446 | jkeenan++ | trunk (2 files): Corrected the faulty logic described in Replaced $_ with named lexicals in many locations. Removed pirc and pirc.exe from MANIFEST.generated. Removed one comment which referred to a ticket which was earlier rejected. Moved the POD to the end of the file so that you don't have to scroll down 5 screens to get to the code. |
12:48 | |
| purl | i heard trac.parrot.org/parrot/ticket/586 was the reason for kid51's Win32 question. | ||
|
13:25
Casan joined
13:26
jhorwitz joined
|
|||
| mikehh | Coke: you available | 13:46 | |
| Coke | nope. | 13:48 | |
| mikehh | Is that - I am busy on something else or what? | 13:49 | |
|
14:02
fperrad joined
|
|||
| dalek | rrot: r38447 | fperrad++ | trunk/config/gen/makefiles/pirc.in: [pirc] remove some useless variables in Makefile |
14:06 | |
|
14:30
dalek joined
14:45
whoppix joined
14:56
fperrad left
|
|||
| mikehh | I was a little worried by the sentence starting -> Its architecture is fundamentally different than existing virtual machines | 16:11 | |
| The "than" does'nt read right to me | 16:12 | ||
| doesn; | 16:13 | ||
| doesn't - ARGH | |||
|
16:17
kid51 joined
|
|||
| pmichaud | s/than/from/ | 16:22 | |
| mikehh | that's what I thought | 16:23 | |
| pmichaud | also, "existing virtual machines" reads too temporally, since Parrot itself is an existing virtual machine, and there might be other vms that now have an architecture closer to parrot. | ||
|
16:30
Theory joined
16:54
tetragon joined
|
|||
| Infinoid | Coke: Do you mind if I use you as a guinea pig for a dalek feature I'm hacking on? | 16:57 | |
| mikehh | post configure tests fail at r38448 | 17:03 | |
| Failed 4/37 test programs. 6/996 subtests failed. | 17:04 | ||
|
17:23
Theory joined
|
|||
| mikehh | smolder don't seem to be talking to me again | 17:35 | |
|
17:59
Ron joined
|
|||
| kid51 | mikehh: Could not reproduce your failure. | 18:00 | |
| mikehh | kid51: which one? | 18:04 | |
| dalek | kudo: cacc976 | pmichaud++ | src/setting/Any-list.pm: Rewrite Any.join() to avoid the "Cannot reduce() empty list" error. |
18:09 | |
| kudo: 06f0ae8 | pmichaud++ | : Merge branch 'master' of git@github.com:rakudo/rakudo |
18:37 | ||
| kudo: d4a0b3b | pmichaud++ | docs/spectest-progress.csv: spectest-progress.csv update: 378 files, 10991 passing, 0 failing |
|||
| jonathan | Awww...nearly 11,000. | 19:27 | |
|
19:32
Theory joined
19:59
leto_ joined
20:28
amoc joined
20:51
Whiteknight joined
20:52
HG` joined
21:04
tetragon joined
21:09
dukeleto joined
|
|||
| cotto | msg bacek The PMC compiler will still need to persist information about ATTRs. | 21:12 | |
| purl | Message for bacek stored. | ||
|
21:20
PacoLinux joined
|
|||
| cotto | bacek, this is interesting. Apparently the default VTABLE is never initialized. | 21:25 | |
| nor is it even a usable PMC | 21:28 | ||
| (which makes sense) | 21:29 | ||
|
21:32
dduncan joined
|
|||
| Whiteknight | that is pretty interesting actually | 21:32 | |
| cotto | default is a very special case | 21:42 | |
|
21:47
rhall joined
21:51
rhall left
21:53
s1n joined
22:17
ingy joined
22:21
MariachiElf joined
|
|||
| bacek | good morning | 22:51 | |
| MariachiElf | good afternoon :) | ||
| cotto | hi | 22:52 | |
| seen darbelo | |||
| purl | darbelo was last seen on #parrot 2 days, 1 hours, 23 minutes and 24 seconds ago, saying: I'm not PAST, the parser errors out on me ;) [Apr 30 21:26:59 2009] | ||
| bacek | cotto: (default) We can still provide Default.build_vtable. Just don't register it in interp->vtables | 22:54 | |
| cotto: (ATTR) Attributes are not perfect in parrot. Imagine pmclass B1 { ATTR INTVAL foo }; pmclass B2 { ATTR STRING * foo }; pmclass D extends B1 extends B2 { ATTR NUMVAL foo }; | 22:56 | ||
| cotto | Currently, the pmc2c code catches that ATTR situation and refuses to build. | 22:57 | |
| It's not the way we want to do things long-term, but allison said it's ok for now. | 22:58 | ||
| bacek | Probably it's time to reinvent C++ wheel with virtual inheritance... | 22:59 | |
| MariachiElf | Which reminds me of the xTalk project I'm working on | 23:01 | |
| bacek | xTalk? | ||
| MariachiElf | One of the things that's always annoyed me about the xTalk's I've used is that "add-on" functions don't look like native functions | ||
| bacek: Have you ever heard of HyperCard, SuperCard, MetaCard, or Revolution? Maybe seen some AppleScript? | 23:02 | ||
| bacek | I heard about it. Nothing apart general concepts | 23:03 | |
| MariachiElf | It's a very "English like" scripting language which I really enjoyed for developing GUI apps | ||
| bacek | oh. Sounds bad... | 23:04 | |
| MariachiElf | Instead of something like x.label = "SomeLabel"; | ||
| You'd use: set the label of field x to "SomeLabel" | |||
| bacek | cotto: we can use Hash.freeze/thaw for persistence. | 23:05 | |
| MariachiElf: It's weird. Too noisy. | |||
| MariachiElf | After years of C++ and Perl I thought I'd feel really constrained using it, however I was pleasantly surprised to find myself more productive | ||
| bacek: However, the target audience isn't "real developers" (though I'd argue real developers could learn a lot from using it) but more the "average person" | 23:06 | ||
| cotto | bacek, good idea. It'll be lower-overhead than json, although more opaque too. | 23:07 | |
| MariachiElf | It's extremely popular amongst the teachers and graphic artists crowd -- think of it as a better version of what Visual Basic wanted to be | ||
| bacek | MariachiElf: every language has own niche. Even PHP :) | ||
| cotto: we can even freeze whole PMC::Class. | 23:08 | ||
| MariachiElf | bacek: Check out: en.wikipedia.org/wiki/XTalk for a super brief 'what does it look like' | 23:09 | |
| But back to the problem I'm hoping to solve is the extensible part of the language | 23:10 | ||
| For instance, let's say there's a builtin command "move" that will move an object on screen from one position to another | 23:11 | ||
| It'd probably be used: move button "x" to 100,300 in 5 seconds | |||
| You can imagine that will use up "5 seconds" to reposition button "x" to the new location | 23:12 | ||
| bacek | no. I think it will kill kittens and eat my lunch! :) | 23:13 | |
| MariachiElf | Now if you write your own "move" command that works differently (for instance, instead of a simple straight line movement at a constant speed it uses acceleration at each end of the movement) | ||
| You can't use the cool syntax | 23:14 | ||
| You need to do something like: move(x, (100,300), 5, useAccel= "yes") | 23:15 | ||
| bacek | Use Perl6 for implementing xTalk. Then everything will be extremely cool :) | 23:16 | |
| MariachiElf | bacek: That's actually what I was thinking | ||
| I was trying to decide if xTalk on top of Perl6 would be better than xTalk on top of Parrot | |||
| The part I'm not sure how to cope with at the moment is the introduction of my new "move" command and the new syntax | 23:17 | ||
| How do I add a command that replaces the existing behavior, but still have a way to access the native command if that's what I want | 23:19 | ||
| bacek | MariachiElf: (In bright future) Perl6 allows dynamic syntax constructions. Unfortunately only STD.pm supports it ATM. | ||
| MariachiElf | I'd love to just leave this kind of thing up to the experts, but unfortunately I don't think the experts would take much interest in the xTalk family | ||
| bacek | And you don't need to replace existing behaviour. MMD ftw | 23:20 | |
| MariachiElf | MMD ftw? | ||
| bacek | MultiMethodDispatch | ||
| class Accel{}; multi sub move(Object $o, Point $p, Time $i) {...}; multi sub move(Object $o, Point $p, Time $i, Accel $a) { ... } | 23:22 | ||
| MariachiElf starts reading "What the heck is MMD" | |||
| bacek | Then parser will just emit "move(...)" and MMD will dispatch it to proper function | ||
| MariachiElf | Oh signature based | ||
| bacek | yes | ||
| MariachiElf | But that's only if the signatures can be identified | 23:23 | |
| The example I gave happens to have different signatures | |||
| bacek | You are really doesn't want signature clashing. | ||
| MariachiElf | But depending on whether or not the optional parameter useAccel is provided you can't tell the difference between the signatures | 23:24 | |
|
23:24
Theory joined
|
|||
| MariachiElf | Well it's useful in this language to rewrite existing "verbs" | 23:24 | |
| bacek | Without "useAccell" it will use "old" version | ||
| MariachiElf | There's use cases for replacing the "native" functionality | 23:25 | |
| I just don't want to lose all access to it... | 23:26 | ||
| For instance perhaps an optional qualifier would force the command to come from a particular namespace? | |||
| native.move button x to 100, 300 | 23:27 | ||
| bacek | How you can distinguish calling "built-in" from recursive calling to self? (BTW, there is no "built-ins" in Perl6. All functions are first-class citizens) | ||
| rakudo: say "hi" | |||
| no evalbot? | |||
| MariachiElf | bacek: Well in the xTalks I've used you have a "start using" clause which sucks in a namespace and your call goes to which was loaded last | 23:28 | |
| bacek | anyway. package Core { sub foo() is export {} }; package Plugin { sub foo is export { Core::foo() } } | 23:29 | |
| MariachiElf | Yeah that's what I was thinking | ||
| Perl6 is pretty much exactly what I want... I just want to use a different parser | 23:30 | ||
| bacek | join #perl6 at freenode and say "rakudo: say 'hi'" :) | ||
| Parser isn't "built-in" in Perl6. | |||
|
23:32
MariachiElf joined
|
|||
| MariachiElf is feeling rather Pidgin incompetent atm | 23:33 | ||
| So what output am I looking at here | 23:34 | ||
| bacek | use xchat-gnome | ||
| MariachiElf is on Vista | |||
| bacek | ouch.... | ||
| purl | ouch is www2.epscylonb.com/image001.gif | ||
| MariachiElf | lol | ||
| I can't watch | 23:35 | ||
| bacek | bad girl | ||
| MariachiElf | Yes, that's worse than using Vista | ||
| bacek | purl: bad girl | ||
| purl | bacek: huh? | ||
| bacek | Last time I used Vista 2 years ago. AFAIR it was much better than XP. | 23:36 | |
| MariachiElf | I'd rather be using KDE4, but anyway my kid's school tuition, health insurance, and my mortgage are based on my Windows experience - so Vista stays for now | 23:37 | |
| I am hoping very much to get some kind of free and extensible xTalk implementation going though | 23:38 | ||
| The xTalks are about more than just the scripting language, there's a whole GUI metaphor that goes with it | 23:39 | ||
| It's a very high level abstraction great for doing cool GUI apps | 23:40 | ||
|
23:40
Limbic_Region joined
|
|||
| MariachiElf | Then you tie it into shared libraries to do any real computational work and expose those shared libraries as new commands in the language | 23:41 | |
|
23:56
dukeleto joined
|
|||