|
Parrot 2.10.1 Released | parrot.org | Log: irclog.perlgeek.de/parrot/today | Long live Git! github.com/parrot/parrot | git clone git://github.com/parrot/parrot.git | Please test rakudo with bleeding edge parrot! Set by moderator on 28 November 2010. |
|||
| dalek | rrot: ff53eff | mikehh++ | MANIFEST.generated: add files to MANIFEST.generated |
00:00 | |
| rrot: bd48125 | NotFound++ | / (3 files): move Parrot_io_parse_open_flags from io/filehandle.c to io/api.c, TT #1639 |
00:02 | ||
| rrot/nwellnhof/string_unescape: 65c0d24 | nwellnhof++ | / (4 files): [str] Switch Parrot_str_unescape to Parrot_str_unescape_string |
|||
| rrot/nwellnhof/string_unescape: 978a012 | nwellnhof++ | compilers/imcc/pbc.c: [imcc] Switch IMCC back to Parrot_str_unescape |
|||
| rrot/nwellnhof/string_unescape: ae203c2 | nwellnhof++ | / (8 files): [imcc] Don't strdup subid name |
|||
| rrot/nwellnhof/string_unescape: 1377fe5 | nwellnhof++ | / (8 files): [str] Nuke src/string/primitives.c |
|||
| dukeleto | Parrot.org has been updated to drupal 5.23. Please take a look and make sure nothing is broke, please. | 00:04 | |
| nwellnhof | NotFound: ping | 00:10 | |
| NotFound | nwellnhof: pong | 00:19 | |
| nwellnhof | NotFound: have a look at my string_unescape branch. i changed imcc to only use Parrot_str_unescape_string. | 00:21 | |
| i think TT #1628 can be closed | 00:22 | ||
| NotFound | nwellnhof: good! | ||
| nwellnhof | i kept Parrot_str_unescape, but it now calls Parrot_str_unescape_string. | 00:23 | |
| bluescreen | dukeleto I can't see parrot's logo | 00:24 | |
| 404 - parrot.org/files/parrotify_logo.png | |||
| NotFound | nwellnhof: the only problem was some differences with utf8 codepoint escapes, don't know if rakudo or some other HLL can still have problems with that. | ||
| bluescreen | dukeleto: also news pages looks wider than the header | 00:25 | |
| nwellnhof | NotFound: the old unescape code was only used for charset:encoding:"..." escaped which are deprecated now. | ||
| *escapes | |||
| NotFound | nwellnhof: ah, yes, I think it should be safe now. | 00:26 | |
| nwellnhof: is too late for me now, I'll check the branch tomorrow. | 00:27 | ||
| whiteknight | bluescreen: added as a committer to parrot/parrot | 00:32 | |
| congrats | |||
| bluescreen | thanks!!! I hope I don't mess it up :) | 00:33 | |
|
00:34
kid51 joined
|
|||
| whiteknight | bluescreen: We don't have to develop embed_api in my fork now. We can do it right in parrot/parrot:embed_api | 00:34 | |
| bluescreen | sure... btw it passes all tests now | 00:35 | |
| we now have to wrap it up | |||
| but i believe you do now that :D | |||
| whiteknight | we need to bring it up to date with trunk, add documentation, fix codestd tests, and ideally we should add tests for all the new api functions | 00:36 | |
| plus, we need to finish up the error message system so that it works correctly | 00:37 | ||
|
00:37
kid51 is now known as kid51_at_dinner
|
|||
| whiteknight | die_from_exception and PDB_backtrace should not be calling fprintf directly | 00:37 | |
| bluescreen | and don't forget about parrot debugger | ||
| NotFound | whiteknight: fprintf is a last resource measure to try to emit some diagnose in worst cases. | 00:39 | |
| bluescreen | NotFound: we're leaving last resource measure to the embedders | 00:40 | |
| in most exes we will definitely do some printing | |||
| but if you think on embedded devices... there might be no console | |||
| NotFound | bluescreen: if the intepreter is completely fucked up, it may never be able to return. | ||
| bluescreen: but I have one, and I use it to diagnose and fix problems. | 00:42 | ||
| bluescreen | all calls are wrapped, and Parrot_exit longjmps to the api calling funct meanwhile we store the error | ||
| so if you use the api you get control back and can do whatever you want with the error | |||
| parrot.exe parrot-nqp and most tools print's the error to the console | 00:44 | ||
| NotFound | bluescreen: too optimistic view. I added that fprintf for real needs. Kill it, and we lose valuable debugging time. | ||
| Kristaba | Hi whiteknight | ||
| whiteknight | hello Kristaba | ||
| NotFound: libparrot will call fprintf if there is *absolutely* nothing else to do. It will be the last resort | 00:45 | ||
| Kristaba | whiteknight: I need some help for run PLA tests ;) | ||
| NotFound | whiteknight: yes. And it is. | ||
| whiteknight | Kristaba: sure thing. What do you need? | 00:46 | |
| NotFound | whiteknight: unless by last resort you mean to expect until the machine hangs up or segfault, that is. | ||
| Kristaba | whiteknight: I have the "Contextual $*FileSystem not found" problem... Nobody here know exactly how to solve it | ||
| whiteknight | Kristaba: you need to install a special version of Kakapo. github.com/Whiteknight/kakapo.git | 00:47 | |
| you can't use the version on gitorious | |||
| NotFound | whiteknight: I used that fprintf to diagnose and fix some nasty bugs. It's here for a reason. | ||
| whiteknight | NotFound: as a diagnostics tool is one thing. It shouldn't be part of normal production operation | 00:48 | |
| embedders don't want us calling fprintf all the time, they want to control the program output | |||
| Kristaba | whiteknight: Ok, I'll try this, thank you :) | ||
| NotFound | whiteknight: I don't consider throwing exceptions during parrot finalization to be part of normal product operation. | ||
| whiteknight | NotFound: exceptions thrown anywhere should be handled the same and completely recoverable | 00:49 | |
| NotFound | Tryit. | 00:50 | |
|
00:50
lucian_ joined
|
|||
| whiteknight | I am | 00:50 | |
| the embed_api branch solves a lot of problems | |||
| cotto_work | whiteknight: how are the build issues working out? Are you still seeing lots of segfaults? | 00:51 | |
| NotFound | whiteknight: I hope so, but that diagnose ir here for not yet solved and not yet known problems. | ||
| bluescreen | even fprintf should go to a place embbeders can read... | 00:52 | |
| you should be able to specify what STDERR is... which now is hardcoded to the actual STDERR of parrot's proc | 00:53 | ||
| NotFound | You can conditionally compile it depending on platform, non debug builds, whatever, but having it available when needed is useful. | 00:54 | |
| whiteknight | cotto_work: embed_api branch builds and passes all tests | 00:55 | |
|
00:55
lucian left
|
|||
| whiteknight | cotto_work: needs docs, codestd fixes, new tests | 00:55 | |
| cotto_work | Nice. | ||
| It'll be helpful to have options parsing separate from imcc. | 00:57 | ||
| among a great many other things | |||
| NotFound | And it may allow to build a nanoparrot at least. | 00:58 | |
| cotto_work | dukeleto: any idea what it'd take to move parrot.org to drupal 6.x? | ||
| Kristaba | Hum... I need to sleep now, goodbye everyone, and thanks for the help and the welcome :) | 00:59 | |
|
00:59
Kristaba left
|
|||
| whiteknight | Andy: ping | 01:03 | |
| dukeleto | cotto_work: converting themes from 5 to 6, which could be a great GCI task. | 01:05 | |
| dalek | rrot: eac768e | Whiteknight++ | include/parrot/hll.h: add a #define for Parrot_hll_get_ctx_HLL_namespace, to get rakudo building again. We can remove this one after 2.11, or later if needed |
01:06 | |
| dukeleto | whiteknight++ | ||
| whiteknight | I'm still not sure I understand how this helps | 01:10 | |
| If we add in a macro for every function we need to remove, then the HLL just breaks when we remove the macro | |||
| I mean, if people think it will help I'll gladly do it, but it doesn't strike me as a silver bullet | 01:11 | ||
| cotto_work | but now Rakudo can switch to the new function name anytime | ||
| whiteknight | cotto_work: right, but if we make these changes transparently, they don't necessarily know they need to change | ||
| and there's no sense for them to change code that works | |||
| cotto_work | after a while (e.g. 3.0), we can drop the macro | ||
| whiteknight | like I said, I'm happy to put it in, but it smells to me like just delaying the inevitable breakage | 01:12 | |
| dukeleto | whiteknight: along with more work, to boot | ||
| cotto_work | We can add a deprecation notice now and they'll know they need to fix it. | ||
| (yes they already know now, but I'm talking about the general case) | |||
| whiteknight | This TT #443 deprecation is really too large and too vague. It does need to be done, but if we listed every function that needs the treatment it would be larger than the whole DEPRECATED.pod file is now | 01:13 | |
| dukeleto | whiteknight: we need something like Package::DeprecationManager. We need to automate and standardize how we do deprecations and store metadata about them | 01:14 | |
|
01:14
Tommy joined
|
|||
| cotto_work | alternate fix: run this (hypothetical) series of sed commands on your source, though that'll only work for direct renaming | 01:14 | |
| dukeleto: +1 if it's feasible | |||
| cotto_work decommutes | 01:15 | ||
| dukeleto | cotto_work: i think textual output of "these things are deprecated, here are the relevant links to fix them" | ||
| whiteknight | I would definitely provide a list of sed commands if that's what people wanted | ||
| dukeleto | cotto_work: is more feasible | ||
| whiteknight | dukeleto: we have Parrot_warn_deprecated() | ||
| dukeleto | whiteknight: i am talking about HLL code | ||
| whiteknight: something that reads HLL code and then says "you are using these deprecated features" | 01:16 | ||
| whiteknight: then we can generate the sed commands, if we want | 01:17 | ||
| whiteknight | ok | ||
| dukeleto | whiteknight: and sed commands will only work some of the time | ||
| whiteknight: sometimes it is more than just a name change. It is a semantics change. | |||
| but 80% of the time it seems to be a name change or perhaps additional argument to an already existing function | 01:18 | ||
|
01:26
kid51_at_dinner is now known as kid51
|
|||
| dukeleto | whiteknight: i would just like to say thanks for rocking as a GCI mentor | 01:26 | |
| whiteknight | I'm having fun with it | 01:27 | |
| there is a lot to learn though. Will get better as we go | |||
| dukeleto | kid51: i added a section about pull requests to git_workflow.pod that you might like to read. Or you might want to ignore it. Up to you :) | ||
| kid51: it has better docs now | |||
| in any case. | |||
| kid51 | Getting a failure in t/op/string_cs.t in master on Darwin/ppc. | 01:31 | |
| nwellnhof ping | 01:32 | ||
| nwellnhof | kid51: pong | 01:34 | |
| nopaste | "kid51" at 192.168.1.3 pasted "t/op/string_cs.t: test failures on Darwin/PPC at 5f23cc577ecfbbb25b3a6f50d4ce179128feefe4" (69 lines) at nopaste.snit.ch/26328 | ||
| kid51 | nwellnhof Can you take a look at that paste? | 01:35 | |
| nwellnhof | yes, probably related to non-ICU builds | ||
| kid51 | Yes, this is a no-ICU-detected machine | 01:36 | |
|
01:36
whiteknight left
|
|||
| kid51 | IIRC we've had to accommodate no ICU in other tests | 01:36 | |
| nwellnhof | ah, i forgot to adjust the skip count for non-ICU builds. | 01:38 | |
| cotto | dukeleto, wfm | 01:41 | |
| dalek | rrot: fe4a42f | nwellnhof++ | t/op/string_cs.t: [t] Fix skip count for non-ICU builds |
01:43 | |
| Tommy | compiling with visual c++ 2010 and strawberry perl..."nmake" works smooth, but then i "nmake test" i get a fatal error, because of 2 failed tests....any help ? | ||
| t/library/stream.t , tests: 13 and 17 | 01:44 | ||
| dalek | rrot: 2231f2f | jkeenan++ | docs/project/git_workflow.pod: Correct spelling error. |
||
| rrot: 8c09a00 | jkeenan++ | / (2 files): Merge branch 'master' of git@github.com:parrot/parrot |
|||
| kid51 | dukeleto: Yes, there is certainly a lot of documentation there. | ||
| Tommy | any help ? | 01:45 | |
| kid51 | But I can tell it's going to be some time before I'm comfortable with that sequence of git commands to handle pull requests | ||
| dukeleto | kid51: if you already have the patch, it is just 1 command to Sign-off on it | ||
| Tommy: perhaps those are actual bugs on strawberry perl and msvc++ | 01:46 | ||
| Tommy | ok..thanks | ||
| dukeleto | Tommy: can you do a "./parrot examples/io/post.pir" ? | ||
| Tommy: that will pust your test results to our smoke server, without needing to install the perl deps | 01:47 | ||
| s/pust/post/ | |||
| Tommy: it is kind of like "make smoke" | |||
| Tommy: "make smoke" will probably stop at the very end and say "you need this Perl module", which is annoying | |||
| Tommy: thanks for letting us know about the bug! | 01:48 | ||
| Tommy: also, can you nopaste the output of "prove -v t/library/stream.t", if posting the report doesn't work? | 01:49 | ||
| Tommy: that will show the full output of the test, which has more details | |||
| kid51 | dukeleto: Believe it or don't, that's the first time I ever saw: "./parrot examples/io/post.pir" | 01:50 | |
| nwellnhof: Thanks. That last commit makes t/op/string_cs.t PASS again on non-ICU-detected machine. | 01:51 | ||
| Tommy | I`m...a little confused...I`m a student who applied for the google code-in contest...and had a task here about renaming some functions...it`s my first time compiling | 01:52 | |
|
01:52
fbrito left
|
|||
| Tommy | what I need: if "nmake" works fine...does it mean that my edits are working fine? | 01:52 | |
| kid51 | Tommy: No, not necessarily. It can mean different things. | 01:53 | |
| 'make' programs examine complex chains of dependencies among files which need compilation. | 01:54 | ||
| In the most typical case, 'make' determines which .c source code files need to be compiled/linked in what order. | |||
| Tommy | oh...thanks | ||
| hmm...if I try and compile it on linux...does it have a better chance of passing the tests? someone said it could be because of the straberry perl i`m using | |||
| kid51 | But 'make' (of which 'nmake' is an old Windows variant) is actually more general than that. | 01:55 | |
| Tommy: True, we generally have better results on Linux than on Win32. | |||
| But we are committed to getting Parrot built and passing all its tests on Windows. | |||
| And we certainly have contributors who are primarily Win32 and who use Strawberry Perl. | 01:56 | ||
| I myself am not among them, so I have no wisdom to offer on MSVC++ or Strawberry Perl, etc. | |||
| dukeleto | Tommy: run the tests with and without your changes. If the streams tests still fail, then it is not your fault. | ||
| Tommy | ok, thanks...I`ll also try on linux because I have 2 computers | 01:57 | |
| kid51 | Bi-systemal! | ||
| dukeleto | Tommy: i don't use windows either. I imagine you will have fewer issues in general on linux, since more Parrot developers use linux than any other OS, from what I gather. | ||
| kid51: yeah, examples/io/post.pir is a trick to get around stupid "make smoke" dependencies | 01:58 | ||
| kid51 | Tommy: You can also go to smolder.parrot.org/app/projects/smoke_reports/1 and switch the Tag to "MSWin32" to see recent smoke tests submitted from Win32. | 01:59 | |
| And what do I see? All recent smoke tests from Win32 are reporting *some* failures. | |||
| dukeleto | kid51: taptinder isn't around anymore, so no alarms go off | ||
| kid51: i told mj41 how to use the svn mirror on github, but it hasn't been done yet | 02:00 | ||
| kid51 | And the most recent failures are probably just due to the test bug that Nick just corrected. | ||
| Tommy | I see.. | ||
| kid51 | We're actually getting many more smoke reports on Win32 than I would have thought | 02:02 | |
| rblasch++ | |||
| fperrad++ | |||
|
02:08
nwellnhof left
02:22
preflex left
02:25
preflex joined
02:32
fbrito joined
02:45
hercynium joined
|
|||
| plobsing | kid51: (re: "GC for Dummies"). I found blogs.msdn.com/b/abhinaba/archive/2...ement.aspx to be a pretty good overview of the concepts. | 02:48 | |
|
03:03
dmalcolm joined
|
|||
| Tommy | tried compiling the original version on both linux and windows, not working..some tests are failing | 03:03 | |
|
03:07
Tommy left
03:08
fbrito left,
fbrito joined
|
|||
| fbrito | seen whiteknight | 03:08 | |
| aloha | whiteknight was last seen in #parrot 1 hours 41 mins ago saying "there is a lot to learn though. Will get better as we go". | ||
|
03:12
hercynium left
|
|||
| fbrito | hm | 03:13 | |
| msg whiteknight I think have just finished another task. Please take a look when you have time. www.google-melange.com/gci/task/sho...9062052689 | 03:14 | ||
| aloha | OK. I'll deliver the message. | ||
|
03:14
preflex left
03:17
preflex joined
03:18
dmalcolm left
03:21
bluescreen left
|
|||
| dalek | rrot/tt532_headerizer_refactor: 5195fb1 | jkeenan++ | / (3 files): Refactor some code from Parrot::Headerizer::make_function_decls() into Parrot::Headerizer::Functions::handle_modified_args(). Test the new function in 01_functions.t. |
03:21 | |
| kid51 | plobsing: Thanks for the link; I will look it up. | 03:23 | |
| Tommy: If you can paste your 'make' and 'make test' output, someone may be able to help you. | 03:24 | ||
| Also, we'll need to see what changes you've made to the code. | |||
| fbrito | msg whiteknight did you guys discuss how to fix the problem caused by my renaming function GCI task (breaking Rakudo build)? I saw that a MACRO was commited, but should I still write wrapper functions with deprecated warnings, right? | 03:40 | |
| aloha | OK. I'll deliver the message. | ||
| fbrito | wow, today is already 1st December. last month of the year :o | 03:41 | |
| Saturday I will be running a opendataday.org event here in my city and there is still so much to do :~ | 03:43 | ||
|
03:58
kid51 left
04:21
Coke joined
|
|||
| Coke | mj41: ping | 04:21 | |
| do we have taptinder back yet? | 04:23 | ||
|
04:47
preflex left
04:49
preflex joined
04:50
tcurtis left
|
|||
| dukeleto | Coke: nope | 05:17 | |
| fbrito: is that codetest still failing? | 05:21 | ||
| fbrito | yes | 05:22 | |
| and I can't understand it. Parrot_warn_deprecated also has a assert macro and I can't find where it is being used. How come it doesn't fail on the same test? | 05:26 | ||
| dukeleto | fbrito: is the test wrong? Should the assert be used somewhere? | ||
| fbrito: good question | |||
| fbrito: have you done "ack -a Parrot_warn_deprecated" ? | |||
| fbrito: src/warnings.c | |||
| fbrito: an assert is used on it on line 140 | 05:27 | ||
| fbrito: sudo aptitude install ack-grep | |||
| fbrito | oh my god | 05:28 | |
| ok, the pull request was updated | 05:31 | ||
|
05:32
tcurtis joined
|
|||
| dukeleto | fbrito: are you praying to the code elder gods? | 05:38 | |
| fbrito | hahaha, why? | 05:39 | |
| dukeleto | fbrito: you said "oh my god". But now I see why :) | ||
| fbrito: this is why tests are good :) | |||
| fbrito: does "make fulltest" pass for you now? | |||
| fbrito: that runs "make tests and make codetest and a few others" | 05:40 | ||
| fbrito | wait a second... it is still running | ||
| dukeleto | fbrito: yeah, it takes a few minutes, at least | ||
| fbrito: i would just like to say that I did not expect GCI students to be as talented as you and a few others have been. That is a very nice surprise. | 05:41 | ||
| fbrito: i thougt we would need to make very easy non-code tasks, but obviously that was wrong. We need to give you a task that will actually give you a challenge ;) | |||
| fbrito: if you run out of good tasks, just let me know :) | 05:43 | ||
| fbrito | ahha, ok, thank you very much for your compliment | ||
| hm, weird | 05:44 | ||
| make test is failing on t/op/string_cs.t. I though that was fixed. I guess I need to pull some updates from parrot repository | 05:45 | ||
| dukeleto | fbrito: git pull --rebase | 05:50 | |
| fbrito: then try again. Make sure you don't have uncommitted changes first | 05:51 | ||
| fbrito: sometimes you need a "make realclean" | |||
| fbrito | but git pull --rebase would pull from my fork, no? | 06:00 | |
| dukeleto | fbrito: yes | 06:03 | |
| fbrito: you have a fork, i forgot | |||
| fbrito: you should add the main parrot repo as a remote | |||
| fbrito: git remote add upstream URL | |||
| fbrito | yes, I did that | ||
| dukeleto | fbrito: where URL is the read-only git:// mirror of parrot | ||
| fbrito: ok, then do a "git fetch" | |||
| fbrito: git fetch --all | 06:04 | ||
| fbrito: you have a recent git, right? | |||
| --all need git 1.6.x and higher | |||
| fbrito | yes, I also did that :D | ||
| but what later? I could solve my problem, but I think it was not a really nice solution | |||
| dukeleto | fbrito: or you can do "git fetch upstream", i think | ||
| fbrito | yes, thats what I run (git fetch upstream) | 06:05 | |
| dukeleto | fbrito: git checkout master && git rebase upstream/master | ||
| fbrito | ah, you can do it with the rebase command? good to know! | 06:06 | |
| dukeleto | fbrito: git help rebase | 06:07 | |
| fbrito: it is a bit much at first, but then you will be enlightened :) | |||
| fbrito: git pull --rebase = git fetch + git rebase, basically | |||
| fbrito | wow, git rebase does exactly the same thing that I was doing manually | 06:08 | |
| dukeleto | fbrito: yep :) | ||
| fbrito | "The current branch is reset to <upstream>" I was doing that | ||
| dukeleto | fbrito: you now are an "expert git user" | ||
| fbrito | "The commits that were previously saved into the temporary area are" and that | ||
| dukeleto | fbrito: basically, "git fetch" gets the index of each remote you have, and stores it locally | 06:09 | |
| fbrito | "are then reapplied". I was doing that manually git cherry-pick, ahhaha | ||
| dukeleto | fbrito: then rebase uses that to update your working copy and then replay your local commits | ||
| fbrito: !! | |||
| fbrito: cherry-pick is a good thing to know about | |||
| fbrito: but mostly it you use it for "i want commit X on branch Y to be in branch Z too" | 06:10 | ||
| fbrito: rebase is the git chainsaw :) | |||
| fbrito: you can also reorder and change the commit messages + commits of your last N commits with : git rebase -i HEAD~N | 06:11 | ||
| fbrito | thats the bad thing about using GUIs. you do not know what is happening behind the curtains | ||
| dukeleto | fbrito: but remember "Only rebase private history" | ||
| fbrito | dukeleto: wow! | ||
| dukeleto | fbrito: that is, don't rebase stuff that other people have based stuff off of | 06:12 | |
| fbrito: because then everyone is sad | |||
| fbrito: rebase your own personal branches, or rebase anything that you haven't pushed out yet | |||
| fbrito | dukeleto: git rebase -i HEAD~N! I have to memorize that | ||
| I have done it manually lots of times | |||
| dukeleto | fbrito: take a look at progit.org | ||
| fbrito: git is all about doing the hard stuff for you, if you know how to tell it :) | 06:13 | ||
| fbrito: that is one of the best git books around, and it is free online | |||
| fbrito: github.com/leto/Util/blob/master/c....gitconfig | |||
| fbrito: those are some of my git aliases | |||
| fbrito | ok, make fulltest has passed | 06:14 | |
| dukeleto | fbrito: you will like "git plog", it gives you a fancy colored tree of history, in ASCII :) | ||
| fbrito: sweet! | |||
| fbrito | I have always used Git-Cola (GUI) to checking out branch trees | 06:15 | |
| they look really nice there | |||
| dukeleto | fbrito: i've never used that, but have used Gitk and GitX | ||
| fbrito | I have also tried Gitg and Giggle, but preferred Git-Cola | 06:17 | |
| wow, so many GUIs for Git, hahaha | 06:18 | ||
| I still remember when I used CVS for the first time | 06:20 | ||
| then SVN, and now Git | 06:21 | ||
| there is also Mercurial, but I have never used it (beside checking projects out) | |||
| dukeleto | fbrito: it is good to know many version control systems. It will give you more job opportunities. Git is definitely something to put on your resume. | 06:28 | |
| fbrito | but the things that are on top of my "To-Learn" list are: regex and shell script | 06:29 | |
| dukeleto | fbrito: regexen are interesting things. There are many flavors of them. Most people use PCRE (perl compatible regular expressions), which are basically Perl 5 regexen | 06:30 | |
| fbrito: but bash and other shells have their own flavor | 06:31 | ||
| fbrito: POSIXy regexen | |||
| fbrito: then there are Perl 6 grammars, which are Regexen Done Right :) | |||
| fbrito: you should learn about the theory of regexen though, then all those things are just little languages to represent the important ideas | 06:33 | ||
| fbrito: there is an O'Reilly book called "Mastering Regular Expressions" that I remember reading a long time ago | 06:34 | ||
| fbrito | dukeleto: I have learned the basics about regexen over and over again, but after some time without using it I always keep forgetting | ||
| dukeleto | fbrito: yeah, that happens | ||
| cotto | Friedl FTW | 06:35 | |
| fbrito | ouch. there is this guy with 32 points on GCI: www.google-melange.com/gci/program/...le/gci2010 | ||
| 9 tasks writing assembly functions! not bad | 06:36 | ||
| cotto | if you need more than you find in Mastering Regular Expressions, you're either doing it wrong or maintaining a regex engine | ||
| dukeleto | cotto: you made me laugh out loud. I already added it to ParrotQuotes :) | 06:38 | |
| fbrito | haha, this book must quite big | 06:39 | |
| dukeleto | fbrito: it actually is thin, but has some insane stuff | 06:40 | |
| the last page is a regex that matches an RFC-compliant email address, and takes up quite a large space :) | |||
| dalek | tracwiki: v72 | dukeleto++ | ParrotQuotes | ||
| tracwiki: trac.parrot.org/parrot/wiki/ParrotQ...ction=diff | |||
| cotto | There's not that much to regexes as far as what you'll use day-to-day, but it gets really deep if you let it. | ||
| fbrito | I will probably buy it. too bad books are so expensive here in Brazil. I always buy them at Amazon and then I have to wait like 25 days , ahhaha | 06:41 | |
| cotto | fbrito, could you get it from a library? | 06:42 | |
| fbrito | probably not. the only library here on my city with technical books is in an public university and it doesn't have books like those | 06:43 | |
| and believe me or not, I live in a city with 1kk inhabitants | 06:44 | ||
| sorear | 1kk = 1_000_000 ? | 06:45 | |
| fbrito | that's the bad thing about Brazil: education | ||
| there are a lot of other problems, but I believe that education is the root of all of them | |||
| sorear: yes | |||
| when I was an exchange student on Germany I lived in a city with just 30.000 inhabitants and the city library there was almost as good as what I have here -.- | 06:47 | ||
| dukeleto | fbrito: you can read parts of books on books.google.com | 06:48 | |
| fbrito | or you can download it using P2P netwoorks, but that would be illegal :P | 06:50 | |
| s/netwoorks/networks/ | |||
| cotto | I like having a paper copy. I haven't met a PDF yet that I can't alt-tab away from. | 06:51 | |
| fbrito | haha, so true! | ||
| dukeleto | fbrito: i didn't want to taint your young mind with such things, but that was what I was thinking :) | 06:53 | |
| fbrito: i did the same thing when I was your age :) | |||
| what high-schooler can afford tech books? | 06:54 | ||
| fbrito | the ones that have completed 15 tasks on GCI | 06:55 | |
| sorear | opbots trust fbrito | 06:56 | |
| slavorg | Ok | ||
| slavorgn | Ok | ||
| fbrito | oh :o | 06:57 | |
| dukeleto | fbrito++ | ||
| fbrito: i will merge your latest pull request soon, what is the link to your task again? | |||
| fbrito | www.google-melange.com/gci/task/sho...9062052689 | 06:58 | |
| I still can't believe that Google is going to pay a trip to Google Headquarter to the top 10 on GCI | 06:59 | ||
| dukeleto | I lied in my recent Git docs! OH THE HUGE MANATEE | 07:00 | |
| fbrito: huh? I didn't hear that. | |||
| fbrito: where did you read that? | 07:01 | ||
| fbrito | www.google-melange.com/document/sho...2010/rules | ||
| 9. PRIZES FOR GRAND PRIZE WINNERS: | |||
| sorear | fbrito: how much money are we talking about here | ||
| cotto | at least a million | 07:02 | |
| fbrito | oh, you guys didn't know about the prizes? :o | ||
| dukeleto | sorear: GCI students get $USD 50 per task completed, up to 10 tasks, i think | 07:03 | |
| fbrito | actually it is U$ 100 for every three tasks | ||
| up to 15 ($ 500) | |||
| cotto | so at this point you're just going for the gold | 07:04 | |
| nice | |||
| fbrito | but the funny thing is: it doesn't matter if you solve a 1 point or a 4 point task | ||
| sorear | fbrito: I haven't really looked at the GCI rules, it started too late for me | ||
| dukeleto | fbrito: wow. I am very impressed by how hard you are working. | ||
| fbrito | so please, i need more difficult tasks! :P | 07:05 | |
| sorear | round trip air travel from the parts of the world with Internet to California is... not *that* much | ||
| I mean, the SoC program eats $5000 plus tax per student | |||
| dukeleto | fbrito: i will sure to only assign you difficult tasks from now on :) | ||
| sorear | 20 round trip plane tickets? *coach*? nothing | 07:06 | |
| dukeleto | sorear: USD means very different things depending on your home currency | ||
| Google makes $USD *4 billion* per quarter | |||
| fbrito | please, don't think that I am doing that for the money... if it were true, I would just do 1 point tasks (because they are easier and faster) | ||
| dukeleto | They don't know what to do with all the money they have. They could wallpaper google offices with money if they wanted. | 07:07 | |
| fbrito | and don't think that I will stop after the 15th task :) | ||
| cotto | fbrito, no worries. We can see that from your work. | ||
| dukeleto | fbrito: we see what your motivations are, don't worry :) | ||
| fbrito | actually sometimes I fell bad for receiving that much money on such "easy" tasks | 07:08 | |
| s/fell/feel/ | |||
| dukeleto | fbrito: you are actually doing really cool stuff that i never expected someone your age to be able to do. It amazes me. | 07:09 | |
| fbrito: i can't seem to approve your task. Do you need to do a "NeedReview" action ? | 07:10 | ||
| fbrito | ahaha, times are changing. I bet that if you were here on my situation you would probably be doing the same thing :P | ||
| cotto clears out his gci queue | 07:11 | ||
| tcurtis, ping | |||
| sorear | dukeleto: um, google is a public company. doesn't all their income - expenses automatically go to the stockholders? | ||
| fbrito | dukeleto: done. I had to "SubmitWork" | 07:12 | |
| cotto | fbrito, can a student work on more than one task at a time? | 07:13 | |
| fbrito | not really | ||
| cotto | i.e. does waiting for approval block claiming another task | ||
| fbrito | yes | ||
| cotto | ok. I'll have to make sure I don't let that happen again. | ||
| fbrito | no no, don't worry | ||
| dukeleto | sorear: no, it doesn't work like that. | ||
| fbrito | you guys are actually REALLY fast. there were some complains on gci-discuss list about projects that left students waiting for 5 days or so | 07:14 | |
| dukeleto | fbrito: that makes me feel better :) | 07:15 | |
| fbrito: another task under your belt now :) | |||
| fbrito | wow! thank you guys! | 07:16 | |
| dukeleto | cotto: I almost question if Signed-Off-by lines are worth the effort. I need to write something in tools/dev that automates it | ||
| cotto: it is many steps, but very easy to automate | |||
| cotto | laziness is a great virute | ||
| *virtue | |||
| dalek | rrot: f9bb559 | dukeleto++ | / (13 files): [gci] Implement Parrot_warn_experimental fbrito++ |
07:17 | |
| dukeleto | fbrito: you are #2 now! Congrats | ||
| fbrito: and tied at #1 in task count | 07:18 | ||
| sorear | dukeleto: Signed-off-by was created by the lkml people as an alternative the CLAs. They serve an administrative purpose primarily, not a technical one | ||
| dukeleto | sorear: yes | ||
| fbrito | hm, this task seems interesting: Add Read and Readline methods to Socket PMC | 07:20 | |
| sorear | dukeleto: so... how does the divident process work? | ||
| fbrito | sorear: I don't know how it works on USA, but on Brazil you have 2 kind of shares | 07:21 | |
| dalek | rrot: 559ed82 | dukeleto++ | docs/project/git_workflow.pod: [docs] Get rid of lies and add a NOTE about unofficialness |
||
| dukeleto | sorear: it is so complicated that i couldn't explain it. Suffice it to say "the devil is in the details" | 07:22 | |
| sorear: every country and every corporation is different | |||
| fbrito | sorear: one that will give you the right to vote on the meetings (what's the english word? assembly?) | ||
| dukeleto | fbrito: meetings is correct | ||
| sorear | dukeleto: ok :/ | 07:23 | |
| fbrito | sorear: and another one that will give you the rights of dividends | ||
| dukeleto | sorear: there are many tax books written about it. They are very boring :) | ||
| sorear: you have the right idea, but companies can do various nefarious things to operate how they want | |||
| sorear: like having branches in other countries to pay less taxes and all kinds of stuff | 07:24 | ||
| and there are *many* different kinds of corporations, and they all have different rules, which depend on the phase of the moon and the number of roaches farting at any given time | 07:25 | ||
| i.e. world methane production ;) | |||
| dukeleto kids, but it isn't far from the truth | |||
| fbrito | ahah | ||
| on Brazil the companies that are on the stock market have to share at least 25% of their profit | 07:28 | ||
| and usually they reinvest the other 75% on themselves | 07:29 | ||
| dukeleto | fbrito: do you have tasks to work on? I need to think up some good ones for you :) | ||
| fbrito: what programming languages do you know? | |||
| fbrito: are you comfortable with C ? | 07:30 | ||
| fbrito: would you like to learn some PIR ? | |||
| fbrito | dukeleto: the language that I have more experience is Ruby | ||
| dukeleto: not very useful to you, huh? :P | |||
| cotto | You get experience by trying. | 07:31 | |
| dukeleto | fbrito: there is the Ruby on Parrot project, Cardinal | ||
| fbrito: it is somewhat dormant now, waiting for Parrot to improve | |||
| fbrito: but maybe you can fix some stuff in it | |||
| fbrito: i think you would like writing some tests in PIR | |||
|
07:31
NordQ joined
|
|||
| Tene | fbrito: We'd love to see work on Cardinal, but it's stalled until Parrot gets some improvements to its object model. | 07:31 | |
| fbrito | dukeleto: as long as the task you provide me has a good testing coverage, I think bad things won't happen :P | 07:32 | |
| dukeleto | Tene: sure, but does it need some simple stuff done? Is anything not blocked on a new object model? | ||
| fbrito: adding tests is usually safe :) | |||
| Tene | dukeleto: migration to nqp-rx away from PGE | ||
| cotto | Tene, have you documented anywhere what Cardinal needs from the object model? | ||
| dukeleto | Tene: now that sounds fun. | ||
| fbrito | there is still this task here: www.google-melange.com/gci/task/sho...9104923072 | ||
| Tene | cotto: There are several tickets treed opened about it that have not been addressed. | 07:33 | |
| dukeleto | fbrito: it is now yours :) | ||
| fbrito | I think that I also have to fix something on Rakudo because it seems that my renaming function task broke something | ||
| dukeleto | fbrito: i think we took care of it | ||
| fbrito | adding the macro? | 07:34 | |
| dukeleto | fbrito: whiteknight added a macro with the old name | ||
| fbrito: you are off the hook :) | |||
| fbrito: but consider it a badge of honor (don't tell the Rakudo guys) | |||
| fbrito | yes, but he also talked about deprecation warnings and wrappers | ||
| dukeleto | We try really hard not to break Rakudo, but sometimes it happens. It rarely stays broke very long. | 07:35 | |
| fbrito: we will make another task for it, if it needs to get done. | |||
| fbrito | or if it is something not very complicated, don't worry about creating tasks | ||
|
07:36
plobsing left
|
|||
| fbrito | sometimes I think that writing the task description takes longer than actually solving the task :P | 07:36 | |
| sorear | If the documentation doesn't take longer than the code, you're doing it wrong. | 07:37 | |
| Tene | cotto: Hmm, looks like all the tickets I can find opened by treed have been closed. | 07:38 | |
| fbrito | hm, very good point | ||
| Tene | cotto: The big problem he ran into was that you can't instantiate a subclass of Class. | ||
| He had a lot of trouble trying to implement ruby's class hierarchy, where each class his its own metaclass, basically. | 07:39 | ||
| fbrito | I should probably go to bed. See you guys later :) | ||
| dukeleto just approved 2 new gci tasks from whiteknight | |||
| fbrito: night! | |||
| Tene: singleton classes? i learned about that today | 07:40 | ||
| Tene | dukeleto: I don't remember the details. There were metaclasses, and eigenclasses, and something else. You could have methods that were only on the class object, but not on instances of that class. | 07:41 | |
| cotto | fbrito, g'night | ||
| Tene | So if you have class Foo, you can have Foo.frob, and there is not a corresponding Foo.new.frob | ||
| sorear thought treed was nothing more than Tene's trac/svn name | |||
| Tene | So the simple test in PIR is to subclass Class, instantiate it, and then pass that instance of a class subclass to new. | 07:42 | |
| sorear: o.O | |||
| Heh, funny how names get mixed up in mediums like that. | |||
| sorear: I happen to have known treed for a few years, and now work at the same company, but we're different people. I'm 'tene' on trac. | 07:43 | ||
| and on svn. | |||
|
07:45
fbrito left
07:47
NordQ left,
NordQ joined
07:48
NordQ left
|
|||
| dukeleto | Tene: a great example of the shortcomings of our meta-object protocol. Whatever our new MOP is, it needs to support things like that | 07:48 | |
| Tene: which should be fun :) | |||
| Tene: how hard do you think the conversion from PGE to nqp-rx will be? | 07:49 | ||
| Tene: it would be good to document the process, since so many HLLs would like to do that | |||
| Tene | dukeleto: I spent maybe 4-6 hours on it, and abandoned it, iirc. | ||
| Maybe it was a lot less than that; I don't really recall. | |||
| dukeleto | Tene: can you tell us what you learned? What sucks? | ||
| Tene: is stuff documented enough? | |||
| Tene: do we need extra tools to make things easier? | |||
| Tene | gist.github.com/723135 is an example, showing the failure output | 07:50 | |
| cotto | Tene, have you talked with jnthn about Cardinal's object model needs? | ||
| Tene | dukeleto: It was over a year ago. I have no idea what problems I had. | ||
| dukeleto: Cardinal *does* need to be updated to track a few deprecations. There were some dropped vtables that it uses, iirc. That would be a great simple task. | 07:51 | ||
| cotto | He seems to be the originator of such things in the Parrot and Rakudo worlds. | ||
| Tene | cotto: Maybe a little; I don't recall the extent. | ||
| cotto: He's aware of the problems, at least. | |||
| jnthn: gist.github.com/723135 is a minimal example of what Cardinal wanted to do, but couldn't. | 07:52 | ||
| dukeleto | Tene: getting Cardinal to compile on parrot master by fixing deprecations would make a good GCI task | 07:57 | |
| Tene | dukeleto: agreed. I think there were only 3-4 deprecations that affected it, and I think they were all fairly minor. | 07:58 | |
| dukeleto | Tene: i will add that. where is cardinals official home? github? | ||
| Tene | I'd say maybe 4-5 hours, depending on whether they're familiar with parrot languages at all or not. | ||
| dukeleto: yes | |||
| dukeleto: would you like privs to the owning account? | 07:59 | ||
| dukeleto | Tene: do you have an organization for it? | ||
| Tene | dukeleto: No. I think work was stopped before organizations were added. | 08:00 | |
| dukeleto | Tene: just wondering: Are you trying to keep cardinal out of the parrot organization? Would you like for cardinal to be in the parrot org? | ||
| Tene | dukeleto: really, treed is the most-recent major committer. It probably makes more sense to ask him. | 08:01 | |
| dukeleto: I very much expect that if you asked, he'd tell you that you can do whatever you like with it. | |||
| It's probably polite to ask first, but it's OSS, so whatever. I don't actually remember the license it ended up with, though, TBH. | 08:02 | ||
| I don't see a license in the repo. | 08:03 | ||
|
08:03
Sdu joined
|
|||
| Tene | Anyway, I think you have treed's email address. It's more been a "stewardship" than "ownership", as I've seen it. I started work on it when it was still in the parrot repo. Someone else laid the very initial bare bones, like two commits worth or something, and then I filled out most of the grammar and some little start of a stdlib. | 08:04 | |
| I never actually thought about adding a separate license. pmichaud actually was the one who set up that github account, and moved cardinal out of the parrot repo onto github for me. | 08:05 | ||
|
08:05
Sdu left
|
|||
| Tene | treed started working on it a while after I stopped; there was never any formal handoff, I just gave him access as soon as he expressed interest in it. | 08:05 | |
| So that's as much as I've cared about ownership. As far as I'm concerned, any and all contributions are welcome. | 08:07 | ||
| I'll leave treed a note asking him about it. | |||
| dukeleto | Tene: cool, thanks | 08:09 | |
| Tene: the benefit of adding cardinal to the parrot github org is that all parrot core devs will have a commit bit. Hopefully that makes it easier for people to hack on it | 08:10 | ||
| Tene | dukeleto: What's involved with that? Do we need to do anything with the cardinal account, or can you just pull in a fork of the repo? | 08:11 | |
| If the latter, I definitely approve of that. That's as good a place as any to work on it. | |||
| dukeleto | Tene: i saw that Rubinius tries to write most of their code so that it is reusable (in common/) . I wonder if we can take the Ruby part of Rubinius and slam it into Cardinal. Some parrot core changes will probably be needed, but it is a neat though. | ||
| Tene: basically, i just press a few buttons and poof! Cardinal is the parrot org. It is dead simple. | 08:12 | ||
| Tene | dukeleto: That was treed's hope, and mine too. We can't do that without a good object model foundation first, though. | ||
| dukeleto | Tene: awesome! Great minds think alike. | ||
| Tene | dukeleto: Is that the cardinal repo, or the cardinal user, or what? I haven't read up on github orgs yet. | 08:13 | |
| dukeleto | I see a new MOP for Parrot as even more important than Lorito, in the sense that we need a new MOP before Lorito. | ||
| Tene: there is a button "convert this user to an organization" | |||
| Tene: but you don't want that | |||
| Tene | Yeah, I don't think we want that. | 08:14 | |
| dukeleto | Tene: you want to become part of an already existing org. I can make it happen. | ||
| cotto | dukeleto, I'm eagerly reading through 6guts now | ||
| Tene | I mean, when you say "Cardinal is in the parrot org", is that "the github user named 'cardinal'" or "the cardinal repository"? | ||
| dukeleto | cotto: cool! Have any, "aha!" moments? | ||
| Tene: the cardinal repo | |||
| Tene | dukeleto: Yeah, go ahead, that's cool. | 08:15 | |
| dukeleto | Tene: the cardinal github user will not be changed at all | ||
| dukeleto does it | |||
| Tene: is there a cardinal website? | |||
| Tene | dukeleto: No. | 08:16 | |
| dukeleto | Tene: we need to fix that. Another good GCI task. | ||
| Tene | dukeleto: that doesn't sound like a good GCI task to me. | ||
| dukeleto | Tene: we need some non-hardcore tasks, but i hear ya. | ||
| Tene: what about a Cardinal logo? | 08:17 | ||
| cotto | dukeleto, so far mostly "huh?" moments | ||
| Tene | dukeleto: the closest you get to a website is the github wiki, github.com/cardinal/cardinal/wiki/...Guidelines | ||
| dukeleto | cotto: those are good to. | ||
| Tene | cotto, jnthn: Here's a good place to start for Cardinal object model issues: github.com/cardinal/cardinal/issues#issue/33 | 08:18 | |
| dukeleto: you might look here: github.com/cardinal/cardinal/issues | 08:19 | ||
| github.com/cardinal/cardinal/issues#issue/18 looks good | |||
| dukeleto | Tene: github.com/parrot/cardinal | ||
| Tene | once the deprecations are fixed, and the test suite can be run again, that is | ||
| dukeleto | Tene: problem is wiki and issues are still in the old repo. | 08:20 | |
| Tene: we may be able to ask github to copy all that over. | |||
| Tene: actually, the wiki is a git repo, so i can do that. But issues are different | |||
| Tene | dukeleto: Yeah, I'm not sure how much sense it makes for cardinal issues to be tracked in the parrot github org. | 08:21 | |
| dukeleto | Tene: each repo gets their own issues | ||
| Tene | Ah. | ||
| dukeleto: I'd leave that alone for now, until treed expresses an opinion about it. | |||
| dukeleto | Tene: gotcha. I will migrate the wiki now, tho | 08:22 | |
| Tene | I'd say for now it makes the most sense to consider that Parrot's fork of Cardinal, until treed expresses an opinion about whatever. | ||
| That would make an appropriate amount of sense even if treed didn't want to migrate. | |||
| dukeleto | Tene: wiki migrated. | 08:23 | |
| Tene: i agree. | |||
| Tene | It's probably the most-polite solution, at least. | 08:24 | |
| dukeleto | Tene: github.com/parrot/cardinal/wiki | 08:25 | |
| Tene: i added a note that issues are still in the old repo | |||
| Tene | dukeleto: issue 15 may work, issue 25 may work, 24 19 14 all may work | 08:26 | |
| dukeleto | Tene: i just sent a note to parrot-dev | 08:28 | |
|
08:31
tcurtis left
08:40
contingencyplan left
|
|||
| dukeleto goes and does not-coding | 08:41 | ||
| Tene | dukeleto: treed says go ahead on migrating fully into the parrot org; | 08:43 | |
| dukeleto: We just want to make sure to preserve the data in the issue tracker somehow. | |||
| dukeleto | Tene: i will ask github to do it. awesome to hear! | 08:44 | |
| Tene | dukeleto: can issue tracker migration be automated, or does it need to happen manually, ticket by ticket? | ||
| dukeleto: ideally, ticket numbers could be that same too; there are references int he tests and todo annotations referring to specific issue numbers. | 08:45 | ||
|
08:48
treed joined
|
|||
| treed | dukeleto: I'm on board with any plan to merge the cardinal repo into a parrot org. | 08:49 | |
| Tene | treed: any recommendations for CGI contributions? | 08:50 | |
| treed | What's CGI? | ||
| Tene | google code-in. Google is paying bounties on requests from open-source projects. | 08:51 | |
| treed | Ah. | ||
| Tene | high-school students, iirc | ||
| treed | So, Cardinal was in kind of a fucked position. | ||
| Tene | code.google.com/opensource/gci/2010...index.html | ||
| treed | There was a bunch of very low level stuff that needed to be done before the general work opened up. | 08:52 | |
| The easily farmable work is implementind stdlib stuff. | |||
| Which is what I started out doing. | |||
| but I quickly realized that you needed a sane object model to do a lot of it right. | |||
| And Cardinal faltered at that point. | |||
| Tene | srsly | ||
| treed | And I feel like trying to do the farmable work prior to doing the object model and exceptions will be, at least partially, wasted effort. | 08:53 | |
| Tene | gist.github.com/723135 was my demonstration earlier of the basic fail | ||
| treed | Yeah. | ||
| Tene | Exceptions could be brought in pretty easily. I have a branch that needs merging that lets you throw subclassed exceptions. | ||
| treed | I think you and I have discussed my attempts at implementing a workaround for that. | ||
| And it was horrible. | |||
| Tene | That might be a good GCI task. | ||
| treed | Well, exceptions would still kinda rely just a little on the object model. | ||
| Not a lot. | 08:54 | ||
| But some. | |||
| Tene | Yeah. | 08:55 | |
| necessary but not sufficient. | |||
| lucian_ | treed: pynie is in a similar position, but probably worse. without objects, you can't write a stdlib in python | 08:58 | |
| Tene | lucian_: same position with ruby; you need an object model to have a stdlib at all. | 09:01 | |
| treed | Yeah. | ||
| lucian_ | yep | ||
| treed | We were kinda fudging things with cardinal. | ||
| But you couldn't really do correctly. | |||
| lucian_ | treed: i don't know enough about ruby's object model, but python's isn't that hard to implement | ||
| treed | You could have an Array class, but it couldn't derive properly. | ||
| Ruby's isn't that hard either, but you do need subclassing. | |||
| lucian_ | if you have 'object' and a few hooks for creating them, it should just work | 09:02 | |
| treed | So, there are Class objects, which will have a method "new" which creates an object and returns it | ||
| etc | |||
| ruby-doc.org/ruby-1.9/classes/Class.html | 09:03 | ||
| has a diagram | |||
| Just implementing that would go a long way. | 09:04 | ||
| But you can't subclass parrot;Class | |||
| So shit gets weird. | |||
| lucian_ | treed: hmm, ruby's objects look a bit more complicated than python's | 09:05 | |
| but either way, parrot's objects are crap | |||
| treed | Agreed. | ||
| lucian_ | treed: they should be just a set of metaclasses | ||
| that you can use to implement other metaclasses | |||
| treed | I think just being able to subclass Class would probably suffice, honestly. | 09:06 | |
| lucian_ | treed: i'm concerned there may be issues with that | 09:07 | |
| parrot's objects seem too specific | |||
| for example, in python there are no methods as such | |||
| treed | Heh. | 09:08 | |
| lucian_ | they're just attributes that happen to be callable and take self as the first argument | ||
| treed | In Ruby, everything is methods. | ||
| lucian_ | yeah, i know | ||
| treed | Attributes are always private. | ||
| That'll be interesting for HLL interop. | |||
| lucian_ | yep | 09:09 | |
| for example, this works fine in python gist.github.com/723217 | |||
| Tene | Not really. You treat foreign objects according to their API. If you want to wrap or convert them with/to something that looks like a native API, you do that explicitly. | 09:10 | |
| lucian_ | Tene: treed: i was thinking of something similar gist.github.com/720017 | ||
| Tene | All libraries have API requirements; libraries in foreign languages just differ a bit more than native libraries owuld. | ||
| treed | Tene: But if your python object is 100% attributes, how do you call it from Ruby? | 09:11 | |
| lucian_ | and you could write a metaclass that made ruby objects act more pythonic | ||
| treed | Ruby would expect a method. | ||
| Tene | lucian_: I need to write a response to that; haven't had time yet. | ||
| lucian_ | treed: you'd have obj.get_attr('name').call(bla, (a, b, c)) | ||
| Tene: or something | |||
| Tene | treed: ruby does have non-method functions, yes? | ||
| treed | It does, yeah. | ||
| lucian_ | treed: that's what they'd be | 09:12 | |
| treed | But that's still not an attribute. | ||
| foo.stuff | |||
| lucian_ | treed: you'd have to get the attribute specifically | ||
| treed | It's going to say "Call a method on foo, which is called stuff" | ||
| Tene | treed: In the worst interop cases, you eval foreign code to get a code reference that does something appropriate in the foreign language. | ||
| treed | But there's no method. | ||
| lucian_ | method = obj.get_attr('method_name') | ||
| method.call(obj, a, b, c) | |||
| Tene: i think that's a bit evil | 09:13 | ||
| Tene: but it may be a necessary one | |||
| Tene | get_python_attr = eval('sub foo($obj, $attr) { $obj.get_attr($attr) }', :lang('python')); # correct for appropriate syntax | ||
| That works even in the worst language incompatibility cases, as long as you have invocable functions | |||
| then write some sugar around get_python_attr.call(obj, 'foo') | 09:14 | ||
| lucian_ | Tene: how would that work from a java-like language? wrap it in a singleton/static class? | ||
| Tene | Realistically, you'd want to write a python compatibility library that wraps returning objects in something that DTRT | ||
| lucian_ | Tene: whatever interop model there is, there should be a way to add hooks into it | 09:15 | |
| for python's case, foreign objects can be made quite native with metaclasses | |||
| Tene | use method_missing or whatever introspection is appropriate, and generate accessor methods for attributes. | ||
| lucian_ | Tene: yeah | ||
| Tene | Or have a function that uses native parrot introspection to pull the atributes out, etc. | 09:16 | |
| There are a variety of varyingly-evil options. | |||
| lucian_ | Tene: that might not work | ||
| pynie might want to use a dict (hash) for attribute resolution | |||
| at least that's what python does everywhere | |||
| Tene | lucian_: Sure. | 09:17 | |
| lucian_ | on parrot it could perhaps use the pmc vtable and fake the __dict__ attribute | ||
| Tene | lucian_: that would be the polite thing to do, yes. | ||
| lucian_ | Tene: but you see how idiosyncrasies like this could blow up | ||
| Tene: but obj.__dict__ is absolutely necessary for python, a lot of code needs it | |||
| for speed and parrot compat, it might indeed be better to fake it | 09:18 | ||
| sorear | I think in general all you can expect to pass across a language barrier are strings and closures | ||
| Tene | lucian_: I disagree with that phrasing. I see necessary complexity, but trying to push it down and hide it at the parrot level just spreads it out all over the place, as far as I'm able to tell. Different languages are different, and trying to pretend they aren't is going to cause trouble. | ||
| lucian_ | sorear: i don't think you can expect closures at all | ||
| sorear puts on blizkost hat | |||
| lucian_ | Tene: as I said, if pynie used a dict for finding attributes, it'd be rather slow on parrot | 09:19 | |
| Tene: and if another language got a python object and tried to inspect parrot-level attributes, they'd only find implementation details | |||
| Tene | lucian_: That depends on the implementation of their object model. | 09:20 | |
| sorear | lucian_: objects are much worse than closures, ime | ||
| lucian_ | sorear: i know. but unfortunately you can't even expect first-class functions everywhere | ||
| Tene | lucian_: All you're really saying is "If they choose to do X, then X." which is really just a tautology. | ||
| sorear | no, but you can wrap them in objects | ||
| lucian_ | sorear: not quite everywhere | ||
| Tene | and in places where you do have first-class functions but not objects, you can wrap them in closures. | 09:21 | |
| sorear | languages that support neither virtual calls nor function references are not worth my time | ||
| lucian_ | Tene: are there places where you have neither? i bet we could find some examples | ||
| Tene | And in places where you have neither, you just cheat, delegate to a language that does. ;) | ||
| sorear | except for INTERCAL | ||
| lucian_ | sorear: perhaps | ||
| Tene | cheat, *or* delegate | ||
| but, yes, what sorear said applies too. | 09:22 | ||
| lucian_ | i'm trying to keep in mind interop with Forth, Lisp, Ocaml, C, Java | ||
| Tene | If you want to work with a language like that, you're going to have some awkward API decisions | ||
| sorear | Tene: there are deep semantic issues that make it difficult if not impossible to map Perl 6 and Perl 5 hashes, arrays, and objects | ||
|
09:22
theory left
|
|||
| Tene | Again, different languages are different, and that's complexity that you need to actually address. Hiding it doesn't make it go away, just makes it more difficult to engage. | 09:22 | |
| sorear | just because they have the same features doesn't mean stuff can be shared | 09:23 | |
| functions work basically the same everywhere - put values in, get values out | |||
| lucian_ | sorear: even strings are silly | ||
| try to call 'is?' on a python object from ruby, see what happens | |||
| Tene | sorear: the fact that they can't be mapped doesn't mean that you can't use both types of objects somehow. | ||
| lucian_ | sorear: get value out | ||
| that's the only thing you can count on | 09:24 | ||
| sorear: but yeah, we can probably rely on something like a function in general | |||
|
09:24
particle left
|
|||
| lucian_ | sorear: what's a Forth word to other languages? | 09:24 | |
| sorear | lucian_: I am not talking about feature support | ||
| At all. | |||
| Tene | sorear: that's exactly the kind of issues I'm talking about; you *don't* try to transparently map it. If you don't explicitly convert, you get a weird foreign object that behaves weirdly foreign. | ||
| lucian_ | sorear: aren't you talking about what sort of things you can export from your language so that others can use it for interop? | 09:25 | |
| Tene | When engaging across language boundaries, it's your responsibility to address semantic mismatches. | ||
| lucian_ | Tene: yeah, we've established that's a good idea | ||
| Tene | lucian_: I seem to be failing to keep track of what points are under discussion here, and work is finally quiescient again, so I'm going to bed. :) | 09:26 | |
| lucian_ | Tene: but in this model, each language would have to export some primitives to make up the API | ||
| sorear | lucian_: not really | ||
| lucian_ | Tene: ok, good night :) | ||
| sorear | Tene: we need to provide the *capability* to address semantic mismatches | ||
| lucian_ | sorear: i think that's up to the languages that consume libraries | ||
|
09:27
preflex left
|
|||
| sorear | Tene: a weird foreign object that behaves weirdly foreign is one thing, but with anything more complicated than a string or a subref, it tends to turn into "uselessly foreign" | 09:27 | |
| unless I provide object handles a la B::SV | 09:28 | ||
| lucian_ | sorear: B::SV? | ||
| Tene | sorear: within parrot languages, at least, there's usually some amount of common ground. The basic PMC vtables, method calls, etc. | 09:29 | |
| lucian_ | Tene: bzzzt! no method calls :) | ||
| sorear | search.cpan.org/~jesse/perl-5.12.2/...SV_Methods | ||
| Tene | In my (limited) experience with language interop between parrot languages, that's usually enough to get something useful. | ||
| sorear | Tene: don't get me started on the joke that is "common vtables" | ||
| no two PMCs implement get_pmc_keyed in quite the same way | 09:30 | ||
| lucian_ | I've been thinking of CLR/JVM | ||
| Tene | lucian_: You're saying that there are no method calls anywhere? My point was that there's usually *some* accessible API to get useful information out of an object from another language. | 09:31 | |
| lucian_ | they have an established object model and a lot of languages manage to make do with that | ||
|
09:31
preflex joined
|
|||
| lucian_ | Tene: no, i'm saying that some languages don't have the concept of method calls | 09:31 | |
| Tene | sorear: Yes, but they can *respond* to get_pmc_keyed in a way meaningful to that object. | ||
| lucian_ | Tene: but since this is a language compiler, you could hack that in the backwards languages i guess | ||
| sorear | Tene: and to that object alone | ||
|
09:31
lucian_ is now known as lucian
|
|||
| sorear | there's no standardization on the correct way to use any vtable | 09:32 | |
| well | |||
| get_str and invoke have a common interface | |||
| which is why those are the only things implemented in blizkost's P5scalar | 09:33 | ||
| Tene | sorear: Yes, and when you're using *any* API, it's your responsibility to understand what the API is. Across language boundaries, the API just starts to look a little stranger. I agree it's important to have standards of meaningfulness here, and that Parrot has some absurd examples of failure there, but that doesn't mean it's intractable. | ||
| Within parrot, it's a bit difficult to put something in an object that another language *can't* get back out with at most a little cheating. | 09:34 | ||
| It certainly could be that I'm misremembering a degree of trouble, or underestimating problems that I didn't actually face. | 09:35 | ||
| My point was that vtables and methods exist, and can be accessed, even if they end up meaning something different to different languages or objects. | 09:36 | ||
| I definitely agree that those are issues that need to be addressed, but after being the only person driving language interop work for a couple of years, I gave up hope that anyone else cared enough for these things to actually be addressed in a meaningful way. | 09:38 | ||
| lucian | Tene: you're right about pmcs and methods, yeah | 09:39 | |
| a functional language can treat pmcs as the first argument of the method, like python | |||
| not sure about something like forth | |||
| Tene | lucian: If there's no possible way for you get a function to call a parrot method on its arguments in your language, there's something seriously wrong with your language. | 09:40 | |
| At worst, you add some pir to your project, implementing a 'call_method' function. | |||
| lucian | Tene: you could probably implement call-method in many languages | 09:41 | |
| Tene | ... yes, I know, that was part of my point. :) | ||
| lucian | Tene: but all interesting languages? i'm not sure | 09:42 | |
| Tene | lucian: If working with an object can't be construed as meaningful in some way in your language, that's certainly a *fascinating* language, but I question its utility, as well as what you're trying to do there. | 09:43 | |
| I mean, consider BF. BF doesn't have objects, or methods, certainly. | 09:44 | ||
| But it's also not a meaningful statement to try to import a foreign library in BF. | |||
| moritz | neither has qbasic :-) | ||
| lucian | Tene: sure, bf is esoteric | ||
| Tene: but forth is quite useful | |||
| moritz concludes that qbasic is just brainfuck :-) | |||
| lucian | Tene: I think you could do something in Forth, but it'd probably be a hack | 09:45 | |
| Tene | lucian: You can put an object on the stack, and have a word that manipulates it, certainly. | ||
| lucian | Tene: yeah, to some degree that would work | ||
| Tene: don't get me wrong, i think your assumption is mostly corrent | 09:46 | ||
| Tene | lucian: that's the equivalent in forth of functions | ||
| lucian | Tene: i'm just trying to think of counterexamples | ||
| s/corrent/correct/ | |||
| Tene | lucian: To whatever degree you can express a meaningful operation in a language, you can come up with an implementation to match whatever meaning you choose that expression to have. | ||
| If your language has no concept or analogue of calling a function, then no, you're not going to be able to work with objects from foreign libraries, but how are you going to *get* them in the first place, and what would it even mean to *be* able to do anything with them? What does the language do with its native data structures? Can you do something like that instead? | 09:48 | ||
| It's like asking "Are there languages where you can't express this idea?" and then asking what that idea means in that language. | 09:49 | ||
| lucian | Tene: yeah, you're right | ||
| Tene | The issue is in trying to make it useful and simple, and have reasonable non-abusive standards. get_str and invoke and such vtables are good. get_pmc_keyed is... less good. | 09:50 | |
| If we have reasonable standard interfaces, and languages actually *use* them, it makes the easy cases easier. | |||
| We also have cases like rakudo that expect even stricter interfaces on objects, like having .WHAT and friends defined on them. | 09:51 | ||
| Rakudo should either handle foreign objects more-closely, or it should wrap all foreign code invocations with guarding code that wraps the obejcts with the required interface. | |||
| If we had actually followed through with the language interop we had in the past, we'd be in a much better situation today, possibly. | 09:52 | ||
| lucian | Tene: i don't know enough about perl to comment | ||
| Tene | lucian: You can certainly understand a language runtime that expects objects to conform to a particular interface, though, yes? | 09:53 | |
| lucian | Tene: sure | ||
| Tene | That's all it is. | ||
| Surely there are examples of universally-present methods in other languages you're more-familiar with. | |||
| lucian | Tene: yeah, sure | 09:54 | |
|
09:56
luben left
|
|||
| lucian | Tene: so what we need is a standard way for languages to export their libraries | 09:58 | |
| as an API of 'objects' and functions to operate on them | |||
| Tene | lucian: That's exactly what I had working, and defined, in the past. | 10:00 | |
| sorear | Tene: wait, this used to work? | 10:01 | |
| Tene | sorear: Yes! I got HLL interop working successfully three times, after it being broken by other committers. Lemme find one of my blog posts... | ||
| blogs.gurulabs.com/stephen/2009/05/...ading.html | |||
| sorear | Tene: define 'working' | ||
| Tene | sorear: I could write a class in Rakudo, subclass it in Cardinal, and then call methods on it in scheme. | 10:02 | |
| And then load the scheme library that uses that Cardinal class from Rakudo, and call functions from that library. | 10:03 | ||
| Etc. | |||
|
10:04
jjore left
|
|||
| lucian | Tene: that's pretty cool | 10:04 | |
| sorear | "cool", but does anyone actually care? | 10:06 | |
| Tene | sorear: Apparently not, no, nobody cared. | ||
| moritz | Tene: the only way to make sure it's not broken constantly is to write tests | ||
| people will only start to care once there's a significant body of useful libraries in at least one language | 10:07 | ||
|
10:07
luben joined
|
|||
| Tene | sorear: after the third time PCT or similar changes discarded my contributions, I stopped trying, and was bitter and grumpy about it for quite a while. | 10:09 | |
| moritz: Parrot has claimed that HLL interop is one of its significant goals, but that doesn't seem to actually be the case. | 10:10 | ||
|
10:11
bacek left
|
|||
| moritz | Tene: I agree | 10:11 | |
| Tene | That was one of my primary interests in Parrot, and without that, I've been much less interested in contributing anything. | 10:12 | |
| Hmm. I've really tried to avoid being negative like this on the channel. I do think you guys are doing some very great work, and I'm excited to see things coming together a bit nicer these days. | 10:15 | ||
| Sorry for being so down. Going to sleep now. | |||
| moritz | Tene: sleep well. Dream of happy parrots :-) | 10:16 | |
| lucian | moritz: well, there is a significant body of useful libraries in several languages | 10:21 | |
| the only problem is the languages can't run them yet :) | |||
| moritz | so they are not available to us | ||
| which is what I meant | |||
| "obviously" :-) | 10:22 | ||
| re-implement p5 on top of parrot, make all of CPAN available to all languages implement on top of parrot => profit | |||
| though the p5 community would be mad at you, because they'd lose their big killer argument for using Perl 5 :-) | 10:23 | ||
| lucian | moritz: heh | ||
| moritz: wouldn't big parts of rakudo be usable? | |||
|
10:23
bacek joined
|
|||
| lucian | you'd also solve the backwards compat argument between perl5 and perl6 | 10:23 | |
| just treat perl5 as a foreign language that happens to be similar | |||
| moritz | perl 6 has very different guts requirements than perl 5 | 10:24 | |
| perl 6 is gradually typed, and built on a MOP and multi dispatch | 10:25 | ||
| p5 is built on SVs and regexes :-) | |||
| lucian | oh, multi-dispatch | 10:26 | |
| interesting | |||
| moritz: you could still treat perl5 as a foreign language for sweet backwards compat | 10:28 | ||
| moritz | lucian: that's what jnthn and sorear wrote blizkost for | 10:29 | |
| it turned out to be non-trivial :/ | |||
| it can currently marshal strings and closures | |||
|
10:29
particle joined
|
|||
| lucian | moritz: and wouldn't it be easier if perl5 was a parrot language? | 10:30 | |
|
10:31
fperrad joined
|
|||
| Tene | lucian: Only in the sense that if it was a parrot language, a significant part of the work would already be done. | 10:32 | |
| moritz | lucian: it would, but while it's theoretically possible, it would be VERY HARD to do in practise | ||
| Tene | An enormous amount of work, in the case of reimplementing. | ||
| moritz | perl 5 has no specification | ||
| it has a lot of ... idiosyncratic featuers | |||
| and it has XS | |||
| (which is the C extension) | |||
| Tene | So, yes, in the sense of "If you already did most of the work, wouldn't it be easier to finish?" | ||
| Tene really afk sleep now. | |||
| lucian | moritz: oh. so perl5 really is a mess | 10:33 | |
| i always put that down to people hating it for the stupid syntax | |||
| moritz | lucian: I love Perl 5. But reimplementing it is considered quasi impossible by everybody familiar with the internals | 10:34 | |
| lucian | moritz: i see | ||
| moritz | these days there's a very comprehensive test suite that would help, but still no volunteer would do it | 10:35 | |
| lucian | moritz: i'd still love to see Tene's interop thing brough back to life | ||
| moritz too | |||
| lucian | it needs a few languages that work mostly ok for it to take off, i think | ||
| moritz | but I'm too absorbed with p6 projects these days to take care of it | ||
| lucian | rakudo, cardinal, pynie and the scheme thing would probably be enough | 10:36 | |
|
10:39
jjore joined
11:27
particle left
11:32
particle joined
11:41
jjore left
11:46
jjore joined
12:54
mj41_ joined
12:57
mj41 left,
mj41_ is now known as mj41
13:08
Tommy joined
13:39
whiteknight joined
13:40
plobsing joined
13:42
Patterner left
13:52
Tommy left,
Psyche^ joined,
Psyche^ is now known as Patterner,
xuan joined
13:53
xuan left
|
|||
| whiteknight | good morning, #parrot | 14:05 | |
| lucian | i'm trying to figure out why pynie doesn't run | 14:07 | |
| I get this gist.github.com/723523 | 14:08 | ||
| whiteknight | what is on line 41 of include/gen_grammar.pir? | 14:09 | |
| lucian | whiteknight: reload the gist | ||
| it's generated from bitbucket.org/allison/pynie/src/fec...Grammar.pg | |||
| whiteknight | lucian: the :unique_reg flag is gone. Remove all instances of that from the code | 14:10 | |
| lucian | whiteknight: but that's generated code. I have to figure out how it's generated first | ||
| whiteknight | does pynie use NQP/PCT, or TGE? | 14:11 | |
|
14:11
JimmyZ joined
|
|||
| lucian | whiteknight: there's Actions.npq and some PCT references in the code | 14:11 | |
| whiteknight | okay, PCT should not be generating :unique_reg. Do a search and see if it pops up anywhere | 14:12 | |
| at least, PCT should not be using :unique_reg | |||
| lucian | whiteknight: nope, can't find any unique_reg outside generated files | 14:13 | |
| whiteknight | blah. can you do a search in the parrot repo? | ||
| lucian | whiteknight: in a minute | 14:14 | |
| whiteknight | okay, thanks | 14:15 | |
| nothing should be generating it, that's a bug | |||
| (and, IMCC should be ignoring it or something, so that's another bug) | 14:16 | ||
| lucian | whiteknight: nope, nothing in parrot's repo | ||
| whiteknight: oh, and pynie fails to build too apparently | |||
| (now) | |||
| whiteknight: gist.github.com/723535 | 14:17 | ||
| whiteknight: i can't find documentation on TGE | 14:18 | ||
| moritz | lucian: it would be helpful to see the PIR around the line where the error is reported | ||
| lucian: my guess is that there's an op used that has become a dynop in the mean time | 14:19 | ||
| lucian | moritz: in here | ||
| bitbucket.org/allison/pynie/src/fec.../builtins/ | |||
| moritz | lucian: yep, pow seems to be a dynop now | 14:21 | |
|
14:21
JimmyZ left
|
|||
| lucian | for the record, the error message is really opaque | 14:21 | |
| or perhaps python spoilt me | 14:22 | ||
| moritz | lucian: PIR is really an assembly language | ||
| you can't apply the same standards as for high-level languages | |||
| a | |||
| whiteknight | but yes, the error messages IMCC produces are very bad | ||
| moritz | .localdlib 'trans_ops' | ||
| should help | |||
| lucian | moritz: right, thanks | ||
| i keep thinking that it doesn't seem right to be writing assembly | 14:23 | ||
| i think there should be a C-like language instead of pir | |||
| or something | |||
| moritz | like winxed? | ||
| lucian | moritz: that's close, yeah | ||
| oh, and close too | |||
| moritz | you can also use nqp-rx to write compilers :-) | ||
| lucian | moritz: i'm not sure what's more maintanable | ||
| moritz: for me, nqp isn't much help over pir, since I don't know perl | 14:24 | ||
| tadzik | There's almost no Perl in NQP imho | 14:25 | |
| it's just if, else, while and grammars + PIR | |||
| lucian | tadzik: right. then it's probably ok, i'll take another look | 14:26 | |
| hmm, i think parrot gets line numbers wrong. i think it doesn't count doc lines | 14:30 | ||
| moritz: with .localdlib 'trans_ops' i get gist.github.com/723557 | 14:33 | ||
| plobsing | lucian: imcc does get line numbers wrong, mostly in an odd contortion to get heredocs to work | ||
| lucian | plobsing: right. it's quite confusing | ||
| moritz | lucian: just to be clear, the .loadlib needs to be outside of subroutines | ||
| lucian | moritz: it's just after the namespace declaration | 14:34 | |
| moritz | hm | ||
| lucian | moritz: might've mispelled | ||
| moritz: yay! works. thanks a lot | 14:35 | ||
| moritz | \\o/ | ||
| lucian | well, runs as in starts | ||
| moritz | does the whole build work now? | ||
| lucian | Method 'item' not found for invocant of class 'Pynie;Grammar' for anything i type in the repl | ||
| moritz: yeah, no errors | |||
| plobsing | lucian: if you *want* to have a better compiler for this, you could work on pirc or pirate. or you could just consider it a lesson against growing a language organically optimizing for convenience. | 14:36 | |
| lucian | plobsing: right. so for the least effort towards getting pynie done, i have to live with it | 14:37 | |
| plobsing | I consider the effort to get something better to be herculean | ||
| lucian | plobsing: i'm guessing deprecating pir isn't an option? | 14:38 | |
| whiteknight | it's already been done, I think | ||
| moritz | not without alternatives. | ||
| plobsing | I've proposed exactly that | ||
| whiteknight | or, we're talking very strongly about it | ||
| lucian | moritz: even winxed looks better to me | ||
| tadzik | what about nqp? | ||
| lucian | and that's not parrot-centric at all | ||
| moritz | nqp compiles to pir | 14:39 | |
| tadzik | well, right | ||
| lucian | tadzik: i guess i can't comment on that other than it may look too perlish to new parrot people | ||
| tadzik | but it could compile to pasm, no? | ||
| whiteknight | nqp compiles to a slightly bloated PIR, because it has to do things like account for lexicals and clostures | ||
| lucian | moritz: wouldn't it be easier to retarget to pasm than to fix pir? | ||
| whiteknight | if we had a language of similar level that didn't worry about lexicals and closures it would be much faster | ||
| moritz | is pasm better than PIR in any substatial way? | ||
| tadzik | lucian: maybe. I think Parrot may alredy look Perly to new people anyway. Look in what languages can you use the Compiler Toolkit | 14:40 | |
| atrodo | i think, if you seperate PIR from parrot, it has the possibility to be a decent asm-like language | ||
| whiteknight | winxed seems to fit that bill, but winxed doesn't have built-in grammars | ||
| lucian | tadzik: yeah, my point. C is as neutral as it gets | ||
| tadzik: and "0" == false by default? really? | |||
| tadzik | lucian: what do you mean? | ||
| plobsing | whiteknight: do you think that's what winxed needs to become more widely used? | ||
| tadzik | ah, I see | ||
| lucian | tadzik: the default comparison for strings in parrot considers the string "0" false in a boolean context | 14:41 | |
| plobsing | lucian: 0 == false is C | ||
| tadzik | yeah yeah, I got it | ||
| lucian | tadzik: it can be overriden, but it's really weird | ||
| plobsing | boolification of strings is a poorly defined operation | ||
| lucian | and i'm assuming it's slower too | ||
| plobsing: there are a few sane ways to do it, but none evaluate "0" to false | |||
| plobsing: in python anything non-empty is true, so [], "", {} and 0 are false | 14:42 | ||
| in ruby/java/clojure, everything not null/false is true | |||
| anyway, that's a side-issue | |||
| plobsing | lucian: "0" == false falls naturally out of C's "there are no bools, only ints" philosophy. boolification of strings is then logically atoi(). you may not agree with it, but it is simple and consistent. | 14:43 | |
| lucian | plobsing: as I said, it seems very silly to be, but it's non-important | ||
| s/to be/to me/ | 14:44 | ||
| plobsing: what I do think is important is having a blessed language that's not assembly | 14:45 | ||
| plobsing | what blessed language isn't assembly? | 14:46 | |
| nqp? | |||
| lucian | plobsing: nqp, close, winxed | ||
| some system language for parrot | |||
| plobsing | ok. so (choosing my favorite out of those) what are the barriers preventing you from using winxed? | ||
| and can I knock them down? | 14:47 | ||
| lucian | plobsing: right now, legacy code | ||
| plobsing: and the lack of a grammar/compiler toolkit for winxed | |||
|
14:48
davidfetter joined
|
|||
| plobsing | so if I hijacked a js compiler toolkit (probably js/cc, but i've been looking at ragel and ometa too), would that fit the bill? | 14:48 | |
| lucian | plobsing: i guess so | 14:49 | |
| it'd still require rewriting pynie, but its tiny so far anyway | |||
| plobsing: perhaps even reuse Perl 6 Gramar? | |||
| moritz | well, there are other non-tiny parrot based projects | ||
| lucian | plobsing: since a lot of languages use PCT | ||
| moritz | specifically rakudo | ||
| lucian | moritz: of course. i'm assuming rakudo prefers npq to winxed | 14:50 | |
| moritz: but if I were to write a Qt binding for parrot languages, what would I write it in? certainly not pir | |||
| moritz | though deprecating PIR might have the side effect of speeding up the adaption of other VMs as backends for rkaudo | ||
| lucian | plobsing: i'm guessing if people could replace both PIR and NQP in their projects with winxed, they'd like it | 14:51 | |
| moritz | lucian: ideally you'd use whatever HLL you happen to like, and what's implemented on top of parrot | ||
| lucian | moritz: that's a nice way of saying they'd dump parrot, right? | ||
| moritz | lucian: no, that's not the plan at all | ||
| lucian | moritz: oh, ok | ||
| moritz | lucian: the plan is to support CLR and parrot, for a start | 14:52 | |
| lucian | i meant if PIR were to go away | ||
| I see | |||
| moritz | and the less PIR we use, the easier the support for other VMs becomes | ||
| lucian | moritz: yep | ||
| moritz: on that same note, RPython might be a good idea for pynie | |||
| moritz: the only problem is that PyPy generates interpreters with a JIT, so pynie would be an interpreter + PBC jit | 14:53 | ||
| moritz: and that's a bit silly | |||
|
15:01
hercynium joined
15:02
hercynium left
|
|||
| whiteknight | The low-level language to Parrot is going to become Lorito eventually | 15:11 | |
| There will be several middle-level languages that compile down to Lorito: PIR, NQP, Winxed, etc | |||
| and HLL compilers will be able to use any of those if they want, or use something else and compile down to Lorito | 15:12 | ||
| tadzik | Lorito is the new language-language? | ||
| lucian | whiteknight: is there a draft design at least? | ||
| whiteknight | I don't suspect many new projects are going to choose PIR as the middle-level language to build a compiler on, but that's just a guess. I think PIR will remain for backwards compatibility for HLLs that need it | ||
| lucian: lots of ideas. December/January are supposed to be the time to nail down the design and get working on implementation | 15:13 | ||
| tadzik: yes, Lorito will be the native "machine code" language of Parrot | |||
| lucian | whiteknight: i see. good luck then :) | ||
| whiteknight | everything else will compile down to Lorito | ||
| I suspect that Lorito will not be too far different from CLR bytecode, at least not in terms of operations | |||
| organization and metadata structures will be very different | |||
| atrodo | whiteknight> how so? | 15:15 | |
| whiteknight | atrodo: what do you mean? | ||
| atrodo | whiteknight> the Lorito/CLR comparision | 15:16 | |
| lucian | whiteknight: so is lorito supposed to be a bytecode representation? | 15:19 | |
| whiteknight | right. Lorito is the fancy name for our future asm/bytecode | 15:23 | |
| it's going to be much lower-level than PIR/PBC are now | |||
| fewer ops | |||
| lucian | whiteknight: so similar to PASM? | ||
| whiteknight | each op is more primitive | ||
| lower than PASM | |||
| lucian | i see | ||
| whiteknight | PASM has like 1300 ops, Lorito will have like ~50 | ||
| moritz | PASM is pretty close to PIR actually | ||
| whiteknight | add, subtract, pointer dereference, etc | ||
| lucian | whiteknight: then why not just use LLVM IR or something that already exists? | ||
| whiteknight | yeah, PASM and PIR are just different syntaxes over the same idea | 15:24 | |
| lucian: good question. Lorito ops are intended to be at the same level as an LLVM op, and easy to translate into them for JIT | |||
| so a Lorito op will probably be 1:1 with an LLVM op | |||
| that's where JIT becomes insanely easy | |||
| plobsing | lucian: every IR has an underlying set of assumptions. we are probably making slightly different assumptions. | ||
| whiteknight | we are making slightly different assumptions, but keeping open the door that maybe LLVM won't be the only backend we ever support | 15:25 | |
| atrodo | Since Lorito still assumes PMCs at some level, that's the major differance | ||
| lucian | right | ||
| whiteknight | or that we may go to platforms where LLVM is not available (we could be interpreted there, but not JITed) | ||
| lucian | whiteknight: good point | ||
| whiteknight | I do hope that Lorito makes some operations available for easily working with PMCs, but it might be low-level structure access | 15:26 | |
| I really don't know what it will look like at this point | |||
| lucian | whiteknight: right. nice to know more about it, anyway. thanks | ||
| i can't figure this out gist.github.com/723623 | 15:27 | ||
| whiteknight | at that point, to implement a JIT we basically decide what we want to JIT, allocate memory, do a table lookup to convert our ops to LLVM ops, and compile | ||
| (that's the *extremely simple* version, but not too far off) | |||
|
15:27
dmalcolm joined
|
|||
| lucian | whiteknight: have you looked at what ops other jits use? LuaJIT is really interesting | 15:28 | |
| and there are plenty. and some JVM assmeblers too | |||
| whiteknight | yes, I've looked at LuaJIT. I've looked at smalltalk, CLR, JVM, etc | ||
| lucian | whiteknight: ok. sorry, i'm not trying to be condescending. just making sure you're not missing somehting | ||
| NotFound | whiteknight: winxed has lexicals and closures since about two months, and doesn't generated bloated pir. | 15:30 | |
| whiteknight | NotFound: oh, I didn't realize. My apologies | 15:34 | |
| lucian: not at all! Questions are always good | |||
| NotFound | whiteknight: NM, I mention that just to signal that having closures and lexicals is not an excuse for bloating. | 15:35 | |
| Surely the generatiion can be improved. | 15:36 | ||
| lucian | fwiw, i consider lexicals vital for reliable code | 15:37 | |
| NotFound | I like the idea of having some sort of grammar engine in winxed, but haven't worked on such a plan myself. If someone wants to work on it, good! | 15:38 | |
| lucian | NotFound: I'd be fine with just writing PCT actions in winxed. I'll look into what's needed for that | 15:40 | |
| NotFound | lucian: Haven't looked at that, don't know much of PCT. | ||
| lucian | NotFound: me neither :) | 15:41 | |
|
15:41
hercynium joined
|
|||
| moritz | lucian: I don't think nqp requires the actions to be written in nqp | 15:42 | |
| lucian: it just calls them as methods | |||
| lucian | moritz: afaict that's what happens, yes | ||
| whiteknight | lucian: it's not just lexicals that's the issue. There are really two types of lexicals that need to be dealt with | 15:46 | |
| lexicals that operate at compile time, and those that operate at runtime | |||
| Coke | dukeleto: partcl is copyright PaFO (both versions). if you think moving organization to parrot would help, lemme know. | 15:47 | |
| NotFound | Note that one can always use hand-coded lexer and parser, like winxed does. I know most people prefer grammar engines, but TIMTOWTDI | 15:48 | |
| lucian | NotFound: yeah, I'm thinking of using PyPy's | ||
| NotFound: first I have to decide whether it's worth trying to save code from pynie | 15:49 | ||
|
15:49
Infinoid left
|
|||
| Coke | aloha, msg dukeleto: partcl is copyright PaFO (both versions). if you think moving organization to parrot would help, lemme know. | 15:51 | |
| aloha | Coke: OK. I'll deliver the message. | ||
| Coke: Okay. | |||
| whiteknight | I would really like to have an ANTLR backend that generates something that runs on Parrot | 15:53 | |
| an ANTLR backend that generates Winxed code would be amazing | |||
| ANTLR backend to PIR would be good too | |||
| an LALR parser generator that produces Parrotish code would be great too | |||
| NotFound | Today is fashion writing compilers targeting javascript. Maybe some can be easily changed to target winxed. | ||
| whiteknight | yes, that's true | 15:54 | |
| Coke would worry more about parrot running bytecode really fast. | |||
| atrodo | Coke++ | ||
| whiteknight | Coke: there are many things to worry about | ||
| Coke quotes airplane: "You've got to ... concentrate... concentrate... concentrate..." | |||
| NotFound | Don't worry, be happy! | ||
| Do... do-do-do-dooo | |||
| dukeleto | Coke: hokey dokey. It is up to you really. | 15:58 | |
|
15:58
plobsing left,
plobsing joined
16:01
Infinoid joined
16:04
davidfetter left
|
|||
| NotFound | What was the ticket about inheriting from 'Class' | 16:12 | |
|
16:13
fbrito joined
|
|||
| whiteknight | i have no idea | 16:20 | |
| dukeleto | there was a lot of talk about Cardinal in here last night, after I went to bed | ||
| I need to backlog | |||
| whiteknight | really? Then I need to backlog too | ||
| Coke | dukeleto: eh. happy to give out commit bits to people with CLAs already to get bugfixes. | 16:26 | |
| dukeleto | Coke: does partcl use github issues? | ||
|
16:26
Andy joined
|
|||
| NotFound | Ah, not a ticket. gist.github.com/723135 | 16:27 | |
| Coke | dukeleto: there are some, yes. More at googlecode need to be migrated over. | 16:33 | |
| dukeleto | Coke: currently i don't know how to migrate github issues, but Github might be able to do it manually | 16:34 | |
| lucian | NotFound: I think i'll follow www.python.org/dev/peps/pep-0339/ closely for pynie | ||
| dukeleto | Coke: there is an issue API, so we could write a script to do it | ||
| whiteknight backlogs the Cardinal conversation from last night, becomes a little disheartened | 16:36 | ||
| we really really need to upgrade our MOD | |||
| MOP | |||
| dukeleto | whiteknight: let's do it already | ||
| whiteknight | Okay. We need a design. We could go with something like the Piumarta paper, which I think everybody liked | 16:38 | |
| dukeleto | whiteknight: link? I've never heard of that paper. | ||
| whiteknight | or we could "borrow" what jnthn is doing for Rakudo | ||
| dukeleto | whiteknight: chromatic has many ideas that he hasn't gotten written down yet, but I agree. We should probably use what jnthn++ has done as a baseline | 16:39 | |
| whiteknight | dukeleto: citeseerx.ist.psu.edu/viewdoc/downl...p;type=pdf | ||
| dukeleto | Roles are the atoms of a MOP, from what I see. | ||
| whiteknight | reading through the code, jnthn's work is very similar to this Piumarta and Warth paper | ||
| lucian | there's also The Art of the Metaobject Protocol | 16:40 | |
| I can't see a case where something CLOS-like wouldn't work | |||
| whiteknight has to go for a meeting. back later | |||
|
16:41
contingencyplan joined
|
|||
| NotFound | I see two problems in that code: first, it doesn't set a namespace for the newly created Class. Then the logic for finding the namespace doesn't handle 'Object'. | 16:42 | |
| For the first, a way of setting the Namespace for the class must be provided. The second, just add a check for the one provided in the first. | 16:43 | ||
| After doing that... who knows, maybe just works. | |||
| I'll give it a try. | 16:44 | ||
| Coke | dukeleto: in the time it took to write the script, I could probably migrate the interesting ones by hand. | ||
| but if such a conversion tool already exists, I won't complain. | |||
| dukeleto | Coke: the tool doesn't exist yet. How many github issues do you have? Cardinal needs the same thing, and they have 33 issues. | 16:45 | |
| Coke | about that many | 16:46 | |
| many of which aren't worth bringing over, as they reflect the status of partcl-old, not partcl-new | |||
|
16:48
fbrito left,
fbrito joined
|
|||
| fbrito | whiteknight: please, when you have some time take a look at the questions that I wrote on the GCI task: www.google-melange.com/gci/task/sho...9104923072 | 16:52 | |
| dukeleto | fbrito: interesting | 16:54 | |
| fbrito: i would do EXCEPTION_UNIMPLEMENTED for step 4 | 16:55 | ||
| fbrito: i don't think there is a recv test to copy. You will just have to write it, but the test is very similar to others in t/pmc/socket.t | 16:57 | ||
| fbrito: add 2 functions to t/pmc/socket.t : test_read() and test_readline() | 16:58 | ||
| fbrito | ok, thank you! :D | 17:00 | |
| dukeleto | fbrito: examples/pir/ might be helpful for you | 17:04 | |
| NotFound | I have a temptative patch for the subclassing Class problem working. | 17:17 | |
| dukeleto | NotFound: !!! | 17:21 | |
| NotFound: that sounds awesome | |||
| lucian | NotFound: +1! | ||
| dukeleto likes the sound of temptative. It has a nice ring to it. | |||
| lucian | NotFound: btw, I'll probably take your approach and just use PyPy's parser. I'll only change the code generation | 17:22 | |
| NotFound | Let me clean debug proves and nopaste it.... | ||
| nopaste | "NotFound" at 192.168.1.3 pasted "subclass Class" (14 lines) at nopaste.snit.ch/26367 | 17:26 | |
| dukeleto | NotFound: do you have a passing test for that? | 17:30 | |
| NotFound | dukeleto: gist.github.com/723135 | ||
| dukeleto | NotFound: that looks like it is failing | 17:31 | |
| NotFound: or do you need to add another conditional? | |||
| NotFound | dukeleto: it works for me | 17:33 | |
| Let me clean and recompile to be sure... | 17:35 | ||
| Yes, it works. | |||
| Well, it doesn't fail, but the result is not good. The Class object and its instance are somewhat mixed. | 17:39 | ||
| dukeleto | NotFound: i assume that our object model is broken enough that the problem will pop up somewhere else | 17:51 | |
| NotFound | dukeleto: I think the problem, as ususal, is lack of encapsulation. Lots of parts 'know' how Class internals should be. | 17:52 | |
| fbrito | ok, I don't know how I am going to write tests for "read" on sockets :( | 17:53 | |
| NotFound | Surely some hacks can be added, but I think the result will be too fragile. | ||
| I'll give up for this time. | 17:55 | ||
| cotto_work | ~~ | 17:56 | |
| NotFound | fbrito: the task says : "The read method should work the same as recv (feel free to copy the test)." | 17:58 | |
| fbrito | but I couldn't find any recv test :) | ||
| NotFound | Oh, nice. | ||
| fbrito | I don't know much about sockets. if I am going to test "read", I need something to "send", right? and because I am dealing with sockets, I will need a server and a client, right? | 17:59 | |
| NotFound | fbrito: yes | 18:00 | |
| fbrito | (I am reading the documentation on sockets.pmc) | ||
| how can I make the server wait for a connection and make the client try to connect, without threads? the documentation says something about "asynchronous version", but is that working? | 18:02 | ||
| NotFound | Nope | 18:03 | |
| fbrito | (I feel that I am talking non-sense stuff, ahhaha. definitely need to learn more about sockets) | ||
| NotFound | fbrito: I think you need to use threads of fork, and none of that can be done in portable way right now. | 18:04 | |
| fbrito | hm, so any ideas on how should I test read on sockets? :D | 18:08 | |
| moritz | by writing to it | 18:09 | |
| fbrito | moritz: and for that I will need a client and a server, right? or is there a specific way to do it on tests? (faking a socket connect) | 18:12 | |
| moritz | fbrito: you need a client and a server, yes | ||
| NotFound | fbrito: try to open 127.0.0.1 port 25, skip all if failed. | 18:13 | |
| fbrito | moritz: but how can I make the server wait for a connecting and make the client connect to it at the same time? as far as I know, waiting for connections blocks the process | ||
| NotFound | Or you can try ports 7 and 13 for example. | 18:14 | |
| moritz | fbrito: you'll probably need to start a second process | ||
| or use threads | |||
| fbrito | ok, found some interesting things on t/pmc/threads.t | 18:15 | |
| NotFound | If you fix threading while doing socket tests will be awesome ;) | 18:16 | |
| fbrito | what? threading is broken? :S | 18:17 | |
| NotFound | I think soft threads are working, but that shouldn't be enough for this task. | 18:18 | |
| whiteknight | if creating tests for read and readline on sockets is too hard, we can ignore that | 18:19 | |
| I was hoping there were some tests available to model on | |||
| NotFound | whiteknight: is not easy to find a portable and reliable way. | 18:20 | |
| Other than lame ways like trying some well known ports and skip all if that fails. | 18:21 | ||
| whiteknight | fbrito: skip the tests | ||
| NotFound | In heroic times using the echo port was reliable, but no one runs that service these days. | 18:22 | |
| I think killing the echo port was the 13 task of Hercules. | 18:23 | ||
| Tene | fbrito: You could possibly do it by launching another process, but that's kind of a pain. | 18:24 | |
| whiteknight | The purpose was to write the new methods, not to implement a new and shakey mechanism for testing sockets | 18:25 | |
| Tene | whiteknight: Sorry about that. I've tried to avoid griping in the channel, because I don't want to affect morale. | ||
| whiteknight | Tene: Don't worry about it. Griping is fine and it's something we need to fix. | ||
| Tene | Yeah. Really async is the way to way to do it, but NYI. | ||
| whiteknight | I just don't want to waste fbrito's GCI time trying to fix a problem that isn't his | ||
| yes, async is it | 18:26 | ||
| NotFound | Even in that case, we'll want to have a test for sync reads too. | 18:28 | |
| Tene | NotFound: For that, we want reasonable threading support, which we also don't have. | 18:30 | |
| whiteknight | I haven't wanted to start asynch IO until at least a little work gets done on threading | ||
| I do think, if there were interest in it, that we could have a green threads implementation in before 3.0 | 18:31 | ||
| dukeleto | fbrito: you can still test the read method without forking or threads | ||
| Tene | whiteknight: I dunno, as I've said, I haven't seen any evidence that Parrot actually cares about HLL interop. | ||
| dukeleto | fbrito: you can test the error condition it returns | ||
| whiteknight | Tene: we do care. We need to make a way to test it so we don't regress | ||
| Tene | whiteknight: We could always run a simple echo server on parrot.org, and then use the tests as a means of tracking parrot users globally. ;) | 18:32 | |
| dukeleto | fbrito: but other than that, don't worry about forking a server in the tests. That it outside the scope of your gci task | ||
| NotFound | Tene: can of problems: firewalls, proxies... | ||
| whiteknight | Right now, we need to worry about making HLL projects succeed, because too many of them are not succeeding | ||
| dukeleto | I am working on Socket tests in the ipv6 branch | ||
| fbrito | dukeleto: ok, sure | ||
| whiteknight | without HLLs, it doesn't matter if we have HLL interop | ||
| dukeleto | I will fix this stuff, but not now and it isn't fbrito++'s job to do it | ||
| whiteknight | dukeleto++ | ||
| NotFound | dukeleto: I think so | ||
| fbrito++ anyway | 18:33 | ||
| dukeleto | fbrito: just add basic tests that read and readline and make sure you get the expected exception | ||
| fbrito: use 'throws_like' or 'throws_substring' to test the error message | 18:34 | ||
| fbrito: ack for them in t/ and you will get lots of examples | |||
| fbrito: then you will be done with your task :) | |||
| fbrito | yes, examples! thank you :) | ||
| NotFound | dukeleto: we should add a 'throws_type' to avoid depending on messsage text. | 18:35 | |
| dukeleto | fbrito: perldoc ./runtime/parrot/library/Test/More.pir | 18:36 | |
| NotFound: you are right | |||
| Tene | If we get my exceptions fixes branch merged, we could even add 'throws_isa' | 18:37 | |
| NotFound | Hey... that can be a GCI task. | ||
| cotto_work | seen tcurtis | ||
| aloha | tcurtis was last seen in #parrot 13 hours 5 mins ago joining the channel. | ||
| dukeleto | Tene: what would be the difference between throws_isa and throws_type ? | ||
| whiteknight | Tene: where is your exceptions fixes branch? | 18:38 | |
| Tene | dukeleto: parrot exceptions have an integer type code, but in parrot trunk, you can only throw 'Exception' objects, and that's it, no other classes. | ||
| NotFound | Subclassing of Exception? | ||
| whiteknight | Tene: I will merge your branch tonight if it's possible | ||
| Tene | whiteknight: svn.parrot.org/parrot/branches/exc..._refactor/ | 18:39 | |
| NotFound: yes | |||
| whiteknight | (we have too many branches to keep track of all the important ones) | ||
| dukeleto | Tene: a subclass of exception can't be thrown currently ? | ||
| Tene | dukeleto: That's right. | ||
| whiteknight | dukeleto: I doubt it | ||
| NotFound | whiteknight: I ranted about that in a ticket yesterday. | ||
| dukeleto | Tene: wow. | ||
| Tene | I held off on merging it when I finished it, pending on adding more tests. | ||
| whiteknight | NotFound: assign it to me | ||
| dukeleto | We gonna fix that too. That is just insanity. | ||
| whiteknight | Tene: do you know git? | ||
| NotFound | whiteknight: no, ranted in a ticket unrelated to that. | 18:40 | |
| Tene | whiteknight: Oops, I forgot that we migrated. | ||
| whiteknight: Yes, I do. | |||
| whiteknight | Tene: I want to get that branch merged, and soon | ||
| We need to bring it up to date with master and merge it | |||
| Tene | github.com/parrot/parrot/tree/exce...s_refactor | ||
| whiteknight | I don't think a lot has changed since then | ||
| but it's good to update it anyway | |||
| dukeleto | Tene: does "make fulltest" pass in your branch? | ||
| Tene: do you think anything you changed could break HLL code? | 18:41 | ||
| Tene | dukeleto: It did pass, back when I wrote it. | ||
| dukeleto: No, it only added capabilities, didn't change any existing behavior (except crashes if you tried to throw anything but a parrot;Exception) | 18:42 | ||
| I may be able to work on it tonight. Where are we in a release cycle? | |||
| dukeleto | Tene: we have ~3 weeks until next release | 18:43 | |
| moritz | plenty of time to next release | ||
| Tene | I had a second stage of that refactor to do, but I don't remember what it was anymore. | ||
| whiteknight | Tene: I will be happy to help. I will do anything you need me to do | ||
| Tene | jnthn wants a lexical throw variant | 18:44 | |
| dukeleto | Tene: do you have a failing test for throwing a child of Exception? | ||
| Tene | dukeleto: I don't think there's one in Parrot right now. I can write one for you, though. | ||
| whiteknight | I'm not sure subclasses of ExceptionHandler could be used either | ||
| I don't remember that far back | |||
| Tene | They can't. | ||
| whiteknight | awesome </sarcasm> | 18:45 | |
| dukeleto | i think we should concentrate on throwing children of Exception, then add ExceptionHandler in a different branch. That could be a lot more work. | 18:46 | |
| Tene | There are also problems with using a sub as an exception handler, in place of a label. | ||
| dukeleto | Tene: really? Do those bugs have tickets? | ||
| Tene | dukeleto: no idea | 18:47 | |
| too long ago | |||
| dalek | rrot: 05ab1f5 | Coke++ | config/ (2 files): Allow spaces in install dir. TT #1716 |
||
| rrot: a1f5f63 | Whiteknight++ | src/pmc/mappedbytearray.pmc: fix to mappedbytearray.pmc to make it build on my system |
|||
| TT #1716 closed by whiteknight++: Parrot won't install when there's a space in the --prefix path | 18:51 | ||
| TT #1716: trac.parrot.org/parrot/ticket/1716 | |||
| Tene | dukeleto: gist.github.com/724008 | 18:58 | |
|
18:58
theory joined
|
|||
| Tene | dukeleto: note the type and message of the second exception caught. | 18:59 | |
| parrot;Exception, and 'Not a throwable object' | |||
| dukeleto | Tene: ok, that code can be turned into a nice test case | 19:00 | |
| Tene | dukeleto: Just make sure that you distinguish between the actual thrown object, and the exception thrown from trying to throw a non-throwable object. | 19:01 | |
| dukeleto | Tene: yeppers. I don't think i will have time today to work on that. Do you want to do it? Or should we make it a gci task to write some tests using that gist ? | ||
| dukeleto has a date with the dentist today | |||
| Tene | dukeleto: I can't do any work on it until tonight. I'm going to work shortly. | 19:02 | |
| Oh, right, I kind of remember this... I ran into some really weird behavior with subclasses of PMCs, and where they stored their attributes. | 19:04 | ||
| a subclass of Exception would have two different sets of attributes, depending on whether you used getattribute/setattribute, or the get_pmc_keyed_str vtable. | 19:05 | ||
| haha, that test doesn't actually work under the branch, because it can't find a resume continuation, probably because that continuation was put in the wrong attribute store. | 19:06 | ||
| fbrito | dukeleto: if you don't want to go to the medic you can always call them with an excuse... something like: sorry, I can't go today. I am feeling sick! | ||
| dukeleto | Tene: i am actually adding the test now. Should be done in a minute. | 19:07 | |
| Tene | dukeleto: Look at the updated gist | 19:08 | |
| dukeleto | Tene: i am adding this test to master, is that ok? or do you want it on that branch? | ||
| Tene | If you want to resume, you need to fetch ex['resume'], and not use getattribute to fetch the resume continuation. | ||
| dukeleto: Master is fine. | |||
| dukeleto | Tene: ok, will use updated gist. | ||
| Tene: you can cherry-pick it over, if you want | 19:09 | ||
| Tene | 'k | ||
|
19:09
rurban joined
|
|||
| dalek | rrot: e4e4eac | NotFound++ | src/pmc/mappedbytearray.pmc: delete a debug fprintf accidentaly included in the mappedbytearray merge |
19:12 | |
|
19:15
rurban left
|
|||
| dukeleto | I hate the way tests are todo'ed in PIR | 19:19 | |
| whiteknight | dukeleto: AMEN | ||
| dukeleto | I have my test, and now I have to change everything around to TODO it, and it is really pissing me off | ||
| We need to just set a lexical variable, like in Perl 5. | 19:20 | ||
| Tene: i am just going to add the test to your branch, so I don't have to TODO it | |||
| Tene: and you can use it while fiddling with code | |||
| cotto_work | dukeleto: also amen | 19:22 | |
| dalek | rrot: 6e99560 | luben++ | src/pmc/mappedbytearray.pmc: ISO C90 forbids mixed declarations and code |
19:23 | |
| rrot/luben/gc_threshold_adjust: ba88b03 | Whiteknight++ | NEWS: change the NEWS entry. Too many files are having their functions updated to list individually |
|||
| rrot/luben/gc_threshold_adjust: 139944d | Whiteknight++ | / (28 files): Merge branch 'exit_func_rename' |
|||
| rrot/luben/gc_threshold_adjust: 3097140 | Whiteknight++ | docs/project/ (2 files): Merge branch 'master' of github.com:parrot/parrot |
|||
| rrot/luben/gc_threshold_adjust: dcb1b5b | (Matt Rajca)++ | / (16 files): Rename public functions in src/utils.c |
|||
| rrot/luben/gc_threshold_adjust: 153eb84 | mikehh++ | src/exit.c: fix item detail to pass c_function_docs.t |
|||
| rrot/luben/gc_threshold_adjust: 88a1a0c | Whiteknight++ | /: Merge branch 'master' of github.com:parrot/parrot |
|||
| rrot/luben/gc_threshold_adjust: 7ad73bd | dukeleto++ | / (2 files): [t] Add a basic test for the Addrinfo PMC |
|||
| rrot/luben/gc_threshold_adjust: 61d023e | dukeleto++ | / (2 files): Revert "[t] Add a basic test for the Addrinfo PMC" This reverts commit 7ad73bd58ca2a092c67061891b8c4e7f91c1f9bc. This commit should have gone into the tt1798_ipv6 branch. I did not releaze that the Addrinfo PMC was added in that branch. |
|||
| dukeleto | oh boy. | ||
| dalek | rrot/luben/gc_threshold_adjust: a34696c | mikehh++ | / (3 files): add patch (modified) from bacek++ to fix TT #1872 |
||
| rrot/luben/gc_threshold_adjust: 9a7cfab | bacek++ | include/parrot/pointer_array.h: Properly calculate CELL_PER_CHUNK. |
19:24 | ||
| luben | oooo | ||
| dalek | rrot/luben/gc_threshold_adjust: be82239 | bacek++ | src/gc/gc_ms2.c: One more fix of GC MS2 for tracing stack pointers. Strings are stored in different Pointer_Array |
||
| cotto_work | I thought dalek was detecting and avoid those now. | ||
| luben | sorry | ||
| dalek | rrot/luben/gc_threshold_adjust: 0753977 | mikehh++ | t/steps/auto/revision-01.t: fix test to aviod passing TODO's I think this test is redundant at present as it was svn related and should probably be removed from the repository |
||
| rrot/luben/gc_threshold_adjust: 4e441aa | allison++ | ports/debian/ (2 files): Updating Debian packaging files for 2.9.1 supported release. |
|||
| rrot/luben/gc_threshold_adjust: f8989dd | luben++ | / (48 files): Merge branch 'master' into luben/gc_threshold_adjust |
|||
| luben | sorry guys | ||
| Coke | whiteknight: thanks for applying that. | 19:25 | |
| whiteknight | Coke: No problem. Sorry it took me so long | ||
| First I had local changes, then there was a bug because I had a bad rev and forgot to pull, then I used the wrong commands to Configure.pl... | 19:27 | ||
| dukeleto | Tene: ug. Merging master into exceptions_refactor now. Ug. | ||
| whiteknight | it was like a Three Stooges show, except it was just me being stupid at my keyboard | ||
| Tene | dukeleto: You may do better by trying to rebase e-r on top of master. | 19:28 | |
| fbrito | and I am almost done with my task. just waiting for fulltest | 19:29 | |
| whiteknight | I am sincerely starting to believe that we need a new channel to just host commit feeds | ||
| and trac change feeds, and other feeds | |||
| fbrito++ | |||
| Coke | whiteknight: at that point, why bother? just subscribe to the feed via rss? | ||
| (+1 from me on that. ;) | |||
| dalek: give me an RSS feed. | |||
| whiteknight | Coke: because the feed is too high-volume. Dalek's huge vomit list would overwhelm the rest of my content | 19:30 | |
| plus, if I go away from my computer for a day, I already come back to like 100+ RSS entries. I don't need dalek piling on more crap | |||
| Tene | just commit less! | 19:31 | |
| ;) | |||
| Coke | whiteknight: I had that commit already applied in my master. did a git pull --rebase, and it seems to have DTRT. | ||
| yay. | |||
|
19:33
fperrad left
19:34
fperrad joined
|
|||
| cotto_work | luben: it's a shortcoming of dalek | 19:34 | |
| luben | yes. I was not expecting the merge to flood the channel | 19:35 | |
| Coke | anyone mind if I remove trac.parrot.org/parrot/report/30 ? | 19:36 | |
| dukeleto | Tene: ug. I can't go on with this merge. | 19:41 | |
| Tene | dukeleto: It's a pretty huge time difference; I last worked on this stuff over a year ago, iirc. | 19:42 | |
| It's only like six commits or something, though. | |||
| dalek | rrot/exceptions_refactor_merge: 9073bda | dukeleto++ | / (2211 files): Attempt to merge branch 'master' into exceptions_refactor This doesn't compile yet. Conflicts: \tsrc/ops/core.ops \tsrc/pmc/exceptionhandler.pmc \tsrc/scheduler.c |
||
| mikehh | Coke: seems reasonable - did the tickets move out as well? | ||
| dukeleto | I just created a branch for where I am stopping int the merge. | ||
| Coke | mikehh: they've all been closed. | ||
| dukeleto | Tene: perhaps I should have rebased, but i don't have more time to mess with it now. | ||
| Tene | dukeleto: that's fine. I might look at it tonight. | ||
| dukeleto | Tene: the changes were nontrivial to sort out | ||
| Coke kills the report. | |||
| dukeleto | Tene: i probably resolved some stuff incorrectly, but it is close | 19:44 | |
| Tene | afk going to work | ||
| Coke | is #650 worth keeping open? | ||
| sorear | cotto_work: dalek's detection works by counting commits. luben went under the threshold by... 1 | ||
| dalek | rrot/exceptions_refactor_merge: 416e564 | dukeleto++ | t/pmc/exception.t: [t] Add tests for throwing subclasses of Exception, tene++ |
19:47 | |
| dukeleto | Tene: there is a test for you ^^^ | ||
| fbrito | ok, I think I have something: github.com/parrot/parrot/pull/16 | 19:51 | |
| mikehh | Coke: I think we did that didn't we? | ||
| whiteknight | Coke: +1 (remove report #30) | ||
| Coke: Assign ticket #650 to kid51 | 19:52 | ||
| he has a branch open now to refactor headerizer, so this probably works with that | |||
| Coke | kid51 points out that we are dual-hosting perl5's Pod::Simple, but it became core in 5.9.3 - I'm going to open a ticket about bumping our min perl requirement. | 19:53 | |
| whiteknight | fbrito: I will look at it in a minute | ||
| dalek | TT #1878 created by coke++: Increase minimum perl 5 version to 5.9.3 | 19:56 | |
| TT #1878: trac.parrot.org/parrot/ticket/1878 | |||
| fbrito | whiteknight: sure! take your time | ||
| whiteknight | fbrito: The code looks good. I don't think you needed to change src/pmc/socket.pmc:recv, since it was already calling the function it should be, but that's not a big deal | 20:00 | |
| dukeleto | Coke: that effectively makes most people use 5.10 to build parrot, since most people don't use odd-numbered Perls | ||
| Coke: i don't know of a distro that comes with 5.9. It is usually either 5.8.x or 5.10.x | 20:01 | ||
| Coke | dukeleto: whoops, yes. updating ticket. | ||
| whiteknight | dukeleto: I have a copy of fbrito's parrot repo, and I want to push his changes into parrot/parrot | 20:02 | |
| dukeleto | while i think 5.8.x should be dead and buried, i realize that requiring 5.10.x will add another barrier to compiling parrot | ||
| whiteknight | so I git remote add parrot ....parrot/parrot.git, and I had been doing "git push parrot <branch>:<remote branch>" | ||
| dukeleto | whiteknight: ok | ||
| Coke | dukeleto: ticket fixed. | ||
| tadzik | people using 5.8 are probably not adventorous enough to build Parrot anyway | ||
| whiteknight | dukeleto: is there a better way to do that? Is there a way to sign-off on it? | ||
| or does sign-off only work with git am? | 20:03 | ||
| dukeleto | whiteknight: blarg. don't worry about sign-off now. It is a pain. | ||
| Coke | dukeleto: it's possible for us to build with an older perl, but IMO it's not worth our time. | ||
| whiteknight | dukeleto: okay, no big deal. Is what I am doing a reasonable way of doing things? | ||
| dukeleto | whiteknight: yes. | ||
| whiteknight | dukeleto++ # That's all I needed to know! | 20:04 | |
| dukeleto | whiteknight: if branch = remote_branch, then you only need "git push parrot branch" | ||
| whiteknight | ah, even better | ||
| dalek | rrot/gci_read_socket: 93996b1 | fbrito++ | src/pmc/ (2 files): Move read and readline from FileHandle to Handle |
||
| rrot/gci_read_socket: da7f551 | fbrito++ | src/ (2 files): Make recv method call Parrot_io_reads |
|||
| rrot/gci_read_socket: 617ebe6 | fbrito++ | src/io/api.c: Make Parrot_io_readline throw exception on Socket |
|||
| rrot/gci_read_socket: 4af637d | fbrito++ | src/pmc/ (2 files): Remove read and readline from FileHandle (should be inherited from Handle) |
|||
| rrot/gci_read_socket: 35efb35 | fbrito++ | t/pmc/socket.t: [t] Move socket get_fd test to its own method |
|||
| rrot/gci_read_socket: d3bdb44 | fbrito++ | t/pmc/socket.t: [t] Add test to Socket readline (not implemented) |
|||
| rrot/gci_read_socket: 4a2f0c7 | fbrito++ | t/pmc/socket.t: [t] Add test to Socket read |
|||
| dukeleto | whiteknight: and if you do a "[push] default = current" in your ~/.gitconfig, you only need "git push parrot" | ||
| whiteknight: see github.com/leto/Util/blob/master/c....gitconfig for details | |||
| whiteknight: that makes it so your current branch is the default thing to push | |||
| Coke | the pirc_config branch can be deleted now. | 20:16 | |
| whiteknight | I'll do that in a minute, if nobody beats me to it | 20:18 | |
| Coke | what's the point of "mk_manifest_and_skip.pl" in a git world? | 20:19 | |
| (Still supposed to do the same thing? ISTR it was not doing anything when I edited .gitignore, and .gitignore is saying it was generated by mk_manifest, which it isn't anymore, issit?) | 20:21 | ||
| tadzik | btw. I have a patch fixing hello world in bf optimizing compiler, but countdown still doesn't work. Moreover, I'm not sure how that actually works, and whether it's not a coincidence. Is it worth applying? | 20:22 | |
| Coke | MANIFEST.SKIP contains a ref to "lib/DumbLink.pm" which seems to be dead. | ||
| dalek | nxed: r697 | NotFound++ | trunk/winxedst0.cpp: allow more usages of operator =: in stage 0 |
20:23 | |
| dukeleto | Coke: mk_manifest_and_skip.pl regenerates MANIFEST{.SKIP} | 20:26 | |
| Coke: not sure how .gitignore is related | |||
| dalek | rrot: 35efb35 | fbrito++ | t/pmc/socket.t: [t] Move socket get_fd test to its own method |
20:28 | |
| rrot: d3bdb44 | fbrito++ | t/pmc/socket.t: [t] Add test to Socket readline (not implemented) |
|||
| rrot: 4a2f0c7 | fbrito++ | t/pmc/socket.t: [t] Add test to Socket read |
|||
| rrot: 157ac28 | Whiteknight++ | / (6 files): Merge branch 'gci_read_socket' |
|||
| whiteknight | msg fbrito I have merged the sockets code. You need to change the state to NeedsReview on google-melange.com so I can close it. Thanks | 20:33 | |
| aloha | OK. I'll deliver the message. | ||
| dukeleto | fbrito++ | ||
| fbrito | whiteknight: ops! Done! Already the 2nd time that I forget to change the state. | 20:35 | |
| whiteknight | fbrito: it's not showing up for me | 20:37 | |
| fbrito | really? here it is... | 20:38 | |
| I think that GCI website doesn't scale very well :P | |||
| whiteknight | I need to start making more tasks | 20:41 | |
|
20:42
theory left
|
|||
| dukeleto | whiteknight++ | 20:47 | |
|
20:47
fperrad left
|
|||
| dalek | nxed: r698 | NotFound++ | trunk/winxedst1.winxed: mininal refactor and codingstd fixes of Emit and Tokenizer classes |
20:55 | |
|
20:59
bacek left
|
|||
| whiteknight | We've mined all the low-hanging fruit from the IOTaskList | 21:00 | |
| dalek | nxed: r699 | NotFound++ | trunk/token.cpp: fix generated utf8 literals in stage 0 |
21:01 | |
| tracwiki: v18 | whiteknight++ | IOTasklist | |||
| tracwiki: +items which have been done for GCI | |||
| tracwiki: trac.parrot.org/parrot/wiki/IOTaskl...ction=diff | |||
| NotFound | whiteknight: a task about adding throws_type to Test/More.pir will be nice. | 21:02 | |
| Same as throws_like but checking the Exception type instead of the message. | 21:04 | ||
| dukeleto | +1 to that | ||
| NotFound | And bonus points for changing a bunch of test to use it. | 21:05 | |
| dukeleto | the task should include tests and docs for it, and mark it 'Difficult' | ||
| NotFound: that can be a different task | |||
| NotFound | Aye | ||
| dukeleto | changing each test file that uses throw_like can actually be a seperate task | 21:06 | |
| some of them will be more challenging than others | |||
| NotFound | And a few shouldn't be changing, if they look in the message for a class name or something. | 21:07 | |
| cotto_work wonders what a fruit mine looks like | 21:11 | ||
| NotFound | I've tested a modified version of winxed stage 1 that uses MappedByteArray to read the source file and works fine. No speed gain, though, I think parsing time is several order of magnitude bigger than source reading. | 21:13 | |
| dalek | tracwiki: v35 | whiteknight++ | GCTasklist | 21:17 | |
| tracwiki: trac.parrot.org/parrot/wiki/GCTaskl...ction=diff | |||
|
21:25
theory joined
21:26
theory_ joined,
theory left,
theory_ is now known as theory
|
|||
| whiteknight | and now it's time for me to leave. Laterz | 21:28 | |
|
21:28
whiteknight left
21:35
nwellnhof joined
|
|||
| nwellnhof | Parrot_hsh_get? | 21:37 | |
| why not Parrot_hash_get? | |||
| why ruin a perfectly good function name just to save one letter? | 21:39 | ||
| sorear | typo? | ||
| NotFound | Perfectly good? I can't imagine what it does just by the name. | 21:40 | |
| Coke | I assume it was to have consistent 3 letter names for the subsystem. -1 from me. | ||
| NotFound | Is in the hash subsystem and get... something. | ||
| Coke: I think the convention is 3 or 4 letters. | 21:41 | ||
| nwellnhof | github.com/parrot/parrot/pull/17 | ||
| cotto_work | nwellnhof: where's Parrot_hsh_get? That's ugly. | 21:42 | |
| nwellnhof | There seems to be a GCI task to rename parrot_hash_* to Parrot_hsh_* | 21:43 | |
| fbrito | another task completed (that was an easy one) :) github.com/parrot/parrot/pull/18 | 21:57 | |
| cotto_work | -1 to renaming to Parrot_hsh_* | 21:58 | |
| fbrito | oh, wait | 22:03 | |
| GeJ | Bonjour porters. | ||
| cotto_work | hi GeJ | ||
| dalek | rrot: 3bb45c9 | nwellnhof++ | t/op/string (2 files): [t] Change tests to hopefully trigger UCS-4 to UCS-4 conversion |
22:06 | |
| fbrito | when I create a new Socket object | 22:07 | |
| what should is_closed() return? | 22:08 | ||
| 1, right? | 22:09 | ||
| NotFound | fbrito: if it's not open, is closed. | ||
| (Don't ask me why we use is_closed instead of is_open) | |||
| dalek | rrot: 6cde374 | NotFound++ | src/ (6 files): fix a few warnings and standard violations |
22:12 | |
| NotFound | bacek_at_work: ping | 22:24 | |
| msg bacek_at_work Last line of fixed_allocator.c:allocate_new_pool_arena shouldn't have a (char *) cast like the previous line? | 22:28 | ||
| aloha | OK. I'll deliver the message. | ||
|
22:32
davidfetter joined
22:33
contingencyplan left
22:34
contingencyplan joined
|
|||
| dalek | rrot: 5c760ac | NotFound++ | src/gc/fixed_allocator.c: fix a warning, const a var and simplify a bit in function pool_is_owned |
22:37 | |
| bacek_at_work | NotFound, pong. | 22:39 | |
| NotFound | bacek_at_work: see the msg | 22:40 | |
| bacek_at_work | NotFound, yes. Looks like | ||
| NotFound | bacek_at_work: may be a waste of memory, if wrong. | 22:41 | |
| bacek_at_work | NotFound, actually, just waste of time on quick test in pool_is_owned | ||
| NotFound | Ah, right. | 22:42 | |
|
22:45
fbrito1 joined
22:49
fbrito left,
fbrito1 is now known as fbrito
|
|||
| fbrito | msg whiteknight I have just finished another task: github.com/parrot/parrot/pull/19 | 22:50 | |
| aloha | OK. I'll deliver the message. | ||
| dalek | rrot: 4159775 | NotFound++ | src/gc/fixed_allocator.c: minor fix in allocate_new_pool_arena |
22:54 | |
|
22:59
bluescreen joined
|
|||
| bluescreen | greetings parroters | 23:00 | |
|
23:00
davidfetter is now known as parroters
|
|||
| parroters | greetings bluescreen | 23:00 | |
|
23:00
parroters is now known as davidfetter
|
|||
| bluescreen | lol | 23:00 | |
| cotto_work | hello bluescreen | 23:01 | |
| bluescreen | hello cotto_work | 23:04 | |
|
23:17
plobsing left
23:24
whiteknight joined
|
|||
| dalek | TT #1059 closed by NotFound++: Run Parrot through cpplint.py | 23:28 | |
| TT #1059: trac.parrot.org/parrot/ticket/1059 | |||
|
23:32
lucian left
|
|||
| dalek | rrot/gci_hash_func_rename: a8f3fb2 | (Daniel Toma)++ | / (35 files): D |
23:39 | |
|
23:40
nwellnhof left
|
|||
| dalek | rrot/gci_closed_socket: e4b8819 | fbrito++ | src/pmc/socket.pmc: Add is_closed to Socket |
23:41 | |
| rrot/gci_closed_socket: 2a3c7f8 | fbrito++ | t/pmc/socket.t: [t] Add test to Socket is_closed() |
|||
| cotto_work | whiteknight: -1 to renaming parrot_hash_* to Parrot_hsh_*. Why not Parrot_hash_*? | 23:45 | |
| whiteknight | cotto_work: we can do that. | 23:46 | |
| Because of the Rakudo brouhaha, I'm not going to merge this branch until we have it right | 23:47 | ||
| I didn't add that to the task description, so I'm going to add the backwards-compatibility macros myself | 23:50 | ||
| and I can run a sed script over it to fix up the names too | |||
| since the Parrot_hsh_ prefix is unique, it's easy to change | |||
| dalek | rrot: aae1ea9 | Whiteknight++ | / (2 files): Merge branch 'gci_closed_socket' |
23:53 | |
| whiteknight | fbrito: Move that is_closed task to the NeedsReview state please. | 23:54 | |