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