Parrot 3.2.0 released | parrot.org | Log: irclog.perlgeek.de/parrot/today | Parrot is accepted for GSoC 2011! Student application deadline is Apr 8
Set by moderator on 27 March 2011.
00:01 bbatha_ left 00:02 bbatha joined
soh_cah_toa i got a question about gsoc: how many hours a week should be spent dedicated to the project? the reason i ask is b/c i just got an offer for a paid intership at a previous employer and need to figure out if i can juggle both 00:04
i figured that gsoc was a 40 hr/week project. is that about right? 00:06
bubaflub soh_cah_toa: both previous GSoC's i've done either concurent with work or school, though i don't recommend it
tcurtis That reminds me. Piece of advice for anyone applying to GSoC: when planning your schedule, don't forget that there are weekends. 00:07
bubaflub soh_cah_toa: according to the GSoC page it should be a full time job
soh_cah_toa: it's up to how much of a life do you want to have? and how fast can you do this stuff?
tcurtis And that you will probably want to spend at least some of those weekends relaxing from the stresses of GSoC.
soh_cah_toa hmmm...yeah that's the thing. this is my first gsoc and i really want to make it work
dalek rrot/whiteknight/imcc_compreg_pmc: 3e3a89c | petdance++ | src/io/api.c:
removed unused var
00:08
rrot/whiteknight/imcc_compreg_pmc: 8345f96 | petdance++ | / (2 files):
arg_sig and return_sig are both actually ARGOUT, not ARGMOD
soh_cah_toa i decided not to take any summer classes to i could dedicate as much time as necessary but now i have to consider this. ugh...
bubaflub soh_cah_toa: my second GSoC i did not finish what i proposed but i still "passed" 00:09
soh_cah_toa: sometimes the monster is bigger than you think
soh_cah_toa yeah, i know. that's why i think it might be best to just focus on gsoc. it's very important to me. i've been waiting a year for this 00:10
bubaflub soh_cah_toa: just curious, what's the internship?
soh_cah_toa: also, most employers will understand working for Google > working for ____
soh_cah_toa: and it looks great on a resume 00:11
soh_cah_toa i don't even know. when i worked there i was a technician working on digital signage equipment. i assume that's what they want
but i did tell them last time they contacted me that i'm a computer science major and they do have an engineering dept. but i don't want to get my hopes up
bubaflub soh_cah_toa: i'd say if you have to do only one, then do the GSoC - it's what you're more excited about 00:12
soh_cah_toa: and it seems if they are contacting you they need you
soh_cah_toa: and will be around for a while
just my half pence
soh_cah_toa that's true
plus you guys would be much more fun to work w/ :) 00:13
bubaflub aw shucks. i've enjoyed GSoC, and if you aren't crunched on money, i'd say try it 00:14
GSoC (and the code being public) does a lot to show a potential employer that you don't suck
soh_cah_toa it's not even the money. it's the experience i want the most. my parents help out w/ school so i'm that poor 00:15
bubaflub soh_cah_toa: i meant if you can afford to not take the internship i'd recommend you skip it
soh_cah_toa well, that is the case and you seem to be thinking the same thing i'm thinking 00:16
i'd be so disappointed if i didn't finished my gsoc goals b/c of work 00:17
bubaflub yes, like i said there is still redemption if you don't finish (i.e. continue working on it) but it'd be best to have it all wrapped up on time 00:18
soh_cah_toa of course. plus i definitely plan to stick around afterwards to maintain it among other parrot stuff
bubaflub that's how i got started. i did my first GSoC on Perl and dukeleto introduced me to parrot
soh_cah_toa neat 00:19
how many gsoc's have you done?
bubaflub 2, aiming for my 3rd 00:20
first one was with Perl, wrote Math::Primality
second one was trying to port Parrot to RTEMS, a real-time embedded linux-esque OS
soh_cah_toa oh, second one sounds pretty kick ass 00:21
whiteknight soh_cah_toa: when I was a GSoC student, I was working at a beer store part-time
it's not impossible to do, but it's a big project, and if you don't want to devote lots of time to it, you aren't having enough fun 00:22
soh_cah_toa yeah, i'm so excited
i think it's cool that other people will get to use my code besides just me 00:23
tcurtis Having other people actually use your code to try to do actual work is an awesome feeling. 00:26
tcurtis discovered this last summer.
moritz++
bubaflub soh_cah_toa: i got an email about Math::Primality - some guy wanted me to clarify some of the docs and implement new stuff
soh_cah_toa: i was blown away. somebody uses this stuff?
soh_cah_toa oh man, that's awesome!
that's the beauty of open source
bubaflub soh_cah_toa: yep. i got started doing some of that when somebody had a blog post about helping out with CGI.pm 00:27
soh_cah_toa: i submitted a couple patches via github and it was pretty cool 00:28
soh_cah_toa that's cool. i have a book on that module "CGI Programming with Perl"
bubaflub soh_cah_toa: yeah, it's pretty old but still used heavily. part of the core, too 00:29
davidfetter CGI.pm was fun
soh_cah_toa davidfetter: you worked on it too? 00:30
davidfetter no. used it a lot, back in the day
petdance whiteknight: I don't see any new warnings in here.
davidfetter i think i may have found a bug or two, but don't recall reporting them. didn't quite understand how important that was at the time :P
whiteknight petdance: that's...surprising. I wrote a lot of code, and I'm not so good as to avoid generating new warnings 00:31
I can barely avoid debilitating errors
petdance oh, wiat, here's one
src/extend.c:251:12: Null storage returned as non-null: ((PMC *)NUL
whiteknight see? that's more my speed 00:32
petdance ok, there are a few
BUT
we're pretty crappy at defining what can be NULL and what can't
whiteknight let me look at extend.c
petdance I think we do checks for NULL pointers when we shouldn't, just out of laziness
00:33 benabik joined
whiteknight src/extend.c:251 is ot code I've touched, and doesn't look like it is returning null, or that it shouldn't be 00:33
petdance see, some could be stuff that I've fixed on origin/master since you branched 00:34
when do you see merging back?
whiteknight soon. I can update branch from master tonight maybe
dalek rrot/whiteknight/imcc_compreg_pmc: 33cc337 | petdance++ | src/spf_render.c:
Removed unused var. Consted a local var.
00:35
whiteknight blah. merge conflicts 00:36
I'll update from master tomorrow
00:37 kid51_at_dinner is now known as kid51
bubaflub whiteknight: can you do rebase to avoid em? 00:39
(merge conflicts, that is)
00:39 davidfetter left
whiteknight bubaflub: I can try. This branch is pretty big and convoluted. The last few times I've rebased things have gone very very badly 00:40
petdance I'm going to merge up some of my individual commits 00:41
see how things go with splint warnigns 00:42
bubaflub whiteknight: same... i rebased something pretty poorly at work and got a talking-to
petdance OK, how do merge just one commit? 00:43
benabik whiteknight: What is the imcc_compreg_pmc branch? It sounds like turning IMCC into a HLL that can be called by anyone... And that would be awesome for my GSoC proposal.
cotto ~~~~~ 00:44
whiteknight benabik: the branch does a lot of cleanups inside IMCC, improves encapsulation between libparrot and IMCC, and starts preparations for breaking IMCC out of libparrot entirely
benabik whiteknight: Ah. Merging that sounds both awesome and painful. 00:45
whiteknight benabik: maybe. I've been keeping the branch up to date with master 00:46
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#13871) fulltest) at 3_2_0-132-gf64d532 - Ubuntu 11.04 beta i386 (gcc --optimize --gc-gms) 00:53
dalek rrot/whiteknight/imcc_compreg_pmc: 3523252 | petdance++ | src/spf_render.c:
Cleaned up canonicalize_exponent:

  * consted SpfInfo pointer arg
  * Reformatted POD docs
  * Normalized variable declarations.
00:55
kid51 whiteknight: Is there any reason to think one would get different testing results from imcc_compreg_pmc branch when using g++ versus gcc? 00:56
whiteknight kid51: I don't know. I would hope not 00:57
I don't know if I've tested it with g++ in a while
dalek rrot/whiteknight/imcc_compreg_pmc: 309e663 | petdance++ | src/hash.c:
consted a pointer
01:00
rrot/whiteknight/imcc_compreg_pmc: 12ec8e5 | petdance++ | / (2 files):
flagging args as not nullable
rrot/whiteknight/imcc_compreg_pmc: ab32727 | petdance++ | src/debug.c:
Properly added headerizer annotations. Consted some vars.
petdance whiteknight: I ONLY build with g++
I mean, I onnly do g++, not gcc 01:03
I do other compilers, too
whiteknight my default compiler is clang. I do tests with other compilers, but maybe not as often as I should 01:04
petdance How do you install clang?
That's "how do you", not "how does one"
whiteknight I just do the lazy way. apt-get install clang 01:06
I don't have the patience to build my compilers from source.
petdance yum doesnt' have one
whiteknight you on redhat? 01:07
petdance centos, yes
whiteknight oh, okay. Why centos, if you don't mind me asking? 01:08
petdance It's what we have at work.
whiteknight okay
petdance and I like to minmize cognitive dissonance. :-)
whiteknight that's the reason I use win7 sometimes :)
petdance: I really appreciate you taking time to look at this branch 01:11
petdance++
petdance You're welcome. I'm sort of at a stopping point on master anyway
whiteknight I shudder to think where we would be without your efforts 01:14
petdance oh my, i hadn't seen clang-analyzer.llvm.org/ 01:15
whiteknight: I don't know that my work has found much.
whiteknight not finding problems is a valuable result in itself. It's good for us to stay honest 01:18
petdance heh 01:20
Tene fwiw, fedora has clang packages. 01:21
I expect if you wanted to obtain it, you could figure it out on your own, though. :)
petdance I saw RHEL package, but it's for CentOS 6, and I'm on 5
and i'm gonna build from source anyway
plus I want that clang-analyzer
01:22 plobsing joined 01:23 contingencyplan joined 01:32 hercynium joined 01:35 spinclad joined 01:43 bubaflub left
petdance aw shoot, I screwed up my splint history. :-( 01:44
dalek sella: bae72a8 | Whiteknight++ | t/event/Event (2 files):
add in some stub tests for Event and EventManager
01:58
sella: 6e300fe | Whiteknight++ | / (5 files):
Refactor indirect method call logic to an invoke_method. Use this in Event to handle the case of String as method. Add tests for EventManager
sella: 97d18fe | Whiteknight++ | t/core/Rosella.t:
Add in a new stub test method for invoke_method. Also, add some not-implemented notices to empty test methods
01:59
01:59 whiteknight left
dalek rrot/whiteknight/imcc_compreg_pmc: 56ed7c5 | jkeenan++ | docs/ (4 files):
[codingstd] Correct POD syntax errors. Example: '=begin PIR_INVALID' must be matched by '-end PIR_INVALID'.
02:02
02:16 hercynium left 02:24 bacek left 02:30 bbatha left
kid51 msg whiteknight re whiteknight/imcc_compreg_pmc branch: 2 codingstd files still have fails (c_arg_assert & c_function_docs); otherwise make fulltest good on linux/i386; on Darwin/PPC: only fail is in t/perl/Parrot_Test.t as previously discussed 02:31
aloha OK. I'll deliver the message.
dalek rrot/whiteknight/imcc_compreg_pmc: 38e5177 | petdance++ | src/embed/api.c:
Use STREQ() for string comparisons, instead of incorrectly using strcmp as a boolean
02:33
rrot/whiteknight/imcc_compreg_pmc: 8e097e4 | petdance++ | config/gen/makefiles/root.in:
Don't use curly brackets
rrot/whiteknight/imcc_compreg_pmc: 1acf5be | petdance++ | src/gc/gc_gms.c:
Fixed PARROT_CAN_RETURN_NULL annotations
02:34
02:39 kid51 left 02:56 simcop2387_ joined 02:57 soh_cah_toa left 02:58 simcop2387 left, simcop2387_ is now known as simcop2387
dalek rrot/whiteknight/imcc_compreg_pmc: c3686b8 | petdance++ | src/dynext.c:
allow some STRING * to be NULLOK
03:06
rrot/whiteknight/imcc_compreg_pmc: 0c08c8a | petdance++ | / (2 files):
Fixing splint flags re: nulls
rrot/whiteknight/imcc_compreg_pmc: 4cd9ae7 | petdance++ | / (8 files):
added splint annotations and re-headerized
rrot/whiteknight/imcc_compreg_pmc: 54cb25e | petdance++ | compilers/imcc/cfg. (2 files):
Made blocks_are_connected be static, and localized a variable
03:19
03:20 particle left 04:04 treed joined 04:05 treed left
dalek rrot/whiteknight/imcc_compreg_pmc: 4146678 | util++ | MANIFEST.generated:
Re-sort and add files to MANIFEST.generated
04:36
rrot: d5248c2 | petdance++ | src/exceptions.c:
note an unignorable result
04:48
rrot: fa331ee | petdance++ | frontend/parrot/main.c:
removed unnecessary scope
04:51 treed joined, treed left 05:08 particle joined 05:23 bacek joined
bacek_at_work hmm... 05:31
dalek rrot/m0-spec: 87e98b7 | cotto++ | docs/pdds/draft/pdd32_m0.pod:
change get_var to load_var
05:41
05:44 petdance left 06:09 theory left
dalek rrot/lorito: b364ee2 | cotto++ | runtime/parrot/include/m0proto_names.pir:
better macro name
06:21
rrot/lorito: 85d4ed0 | cotto++ | / (2 files):
switch to m0ctx, push ugliness there
rrot/lorito: de2304e | cotto++ | / (4 files):
use m0ctx's variables table for variables
rrot/lorito: 146d730 | cotto++ | / (2 files):
rename get_var to load_var
rrot/lorito: 64379ad | cotto++ | / (3 files):
add m0_alloc and m0_free, plus minimal test
06:29 Eduardow left 06:39 Eduardow joined
dalek rrot/m0-spec: 753ee2f | cotto++ | docs/pdds/draft/pdd32_m0.pod:
use $1-$3 instead of $0-$2 to be consistent with .ops files
06:41
06:42 NotFound left 06:46 UltraDM joined
dukeleto ~~ 06:48
dalek spers: 54c019c | dukeleto++ | README.md:
Add a link to Sputnik in the README
06:52
06:55 UltraDM left, UltraDM joined
dukeleto UltraDM: welcome to our corner of the interwebs 06:56
UltraDM :) 06:57
dukeleto UltraDM: are you interesting in GSoC? What brings you to these parts? 06:59
dalek rrot/lorito: 818c7ee | cotto++ | src/dynoplibs/m0proto.ops:
add some ops whic may or may not prove useful for memory manipulation
cotto dukeleto, feel free to poke around there and add to or comment on what's there in your cft. 07:00
cotto sleeps
UltraDM dukeleto, nope, just lurking, I'm watching parrot for quite some years
not doing anything active
cotto UltraDM, it's seldom a bad time to start as far as we're concerned. 07:01
cotto really sleeps
dukeleto UltraDM: ok. I am the "community manager", so if you want guidance on how to get involved or anything like that, let me know 07:02
UltraDM: what makes Parrot interesting to you? 07:03
UltraDM cotto, true
dukeleto, thanks for the info
perl6 makes it interesting to me
I'm more into perl, less interested in C/C++, so I cannot code anything useful for parrot 07:04
dukeleto UltraDM: yep, that is how I found Parrot too. I found bugs in the Perl 6 test suite that ended up being parrot bugs, and I have been here ever since :)
UltraDM :)
dukeleto UltraDM: a lot of parrot tasks can be written in higher level languages, such as NQP or Winxed, etc...
UltraDM I've tried twice to do something in the past years, but always got borred in the maze of urls and links 07:05
dukeleto UltraDM: nqp is quite similar to Perl 6, without the really tasty syntax sugar
UltraDM: well, if you have a specific problem or question, definitely let me know
UltraDM so, I only need a couple of free days and enough patience to follow all links and see if there's something I could really do
dukeleto UltraDM: our docs are always straining to keep up with us :) 07:06
UltraDM I know, it's not easy
dukeleto UltraDM: a good start is running our test suite on your machine to see if it passes
UltraDM: that is how I got involved. I started making things in "make fulltest" pass
UltraDM :) last time I checked all tests passed on my machines - nothing fancy, opensuse 07:07
dukeleto UltraDM: "make test" should pass for you, and if it doesn't, that is a bug. "make fulltest" runs a lot more tests that sometimes fail because that test target takes a lot longer and people don't run it as often
UltraDM mkay :) 07:08
dukeleto UltraDM: what kind of perl stuff do you usually hack on?
UltraDM: perhaps I can recommend something that you would like hacking on
UltraDM catalyst/dbix::class and poe
dukeleto UltraDM: i will keep a look out for things that would interest you 07:09
UltraDM dukeleto, thanks 07:10
if there is a pointer on how to run perl5 code using parrot, I'd be happy to do that
I know that perl6 is the future, but p5 is what I'm doing right now
so, if it's possible to run p5 code with parrot, I could run my test/research code on it to see where it explodes and fill a bug/test case 07:11
dukeleto UltraDM: there is something called blizkost 07:16
UltraDM: which embeds both a perl 5 and rakudo perl 6 interpreter, and lets you talk between them 07:17
UltraDM: github.com/jnthn/blizkost
UltraDM: also, there is a Parrot::Embed CPAN module
UltraDM: which lets you embed Parrot in Perl 5
UltraDM: it comes with the parrot source code
UltraDM: we need help updating Parrot::Embed and releasing it to CPAN as it's own module 07:18
UltraDM: also, you can always look at the tickets on trac.parrot.org for ideas of what to work on
UltraDM: trac.parrot.org/parrot/query?status...changetime 07:19
UltraDM: those are the most recently changed tickets
UltraDM: this is a recent Parrot::Embed ticket: trac.parrot.org/parrot/ticket/1869
UltraDM: if you need wiki access, just ask. we had to disable editing by default because of dumb spammers 07:20
marc unidles 07:27
hi guys
dukeleto: interesting stuff (sorry, i've been lurking)
UltraDM thanks dukeleto, as soon as I find a free time slot I'll have a look 07:36
07:53 jrtayloriv joined 08:12 contingencyplan left 08:30 alin joined 08:43 mikehh left, dod joined
moritz fwiw, make fulltest has a failure here 09:35
$ t/src/extend_vtable.t (Wstat: 256 Tests: 89 Failed: 1) Failed test: 3 Non-zero exit status: 1 09:36
nopaste "moritz" at 192.168.1.3 pasted "test failure" (10 lines) at nopaste.snit.ch/39482 09:37
moritz rakudo on newest parrot spectests cleanly 10:06
(smolder #13907)
10:36 jrtayloriv left 10:42 mtk left 10:43 alin left 11:41 lucian joined 11:55 Patterner left, Psyche^ joined, Psyche^ is now known as Patterner
lucian good day 12:04
if anyone's away, has anyone though of something like Managed C++ for parrot? 12:25
s/away/not away/
cython takes a vaguely similar approach, and it works great 12:28
12:38 whiteknight joined, ambs joined
whiteknight good morning, #parrot 12:39
msg kid51 thanks for the report. I'll work on the codestd failures today 12:45
aloha OK. I'll deliver the message.
lucian whiteknight: hey, what's up? 12:46
whiteknight good morning lucian 12:47
12:48 bubaflub joined
lucian whiteknight: i was thinking about C lib wrappers last night 12:52
i was wondering if after M1 the system language starts getting designed, whether it might make sense to have something like Managed C++ or cython 12:53
12:59 darbelo joined
atrodo lucian> I'd like to see static languages be able to target parrot 13:01
lucian atrodo: they should be. there was this sparse backend to lua, jvm, etc
atrodo: cluecc.sourceforge.net/ 13:02
atrodo lucian> It might be early, but I don't grok
oh, well that sounds cool
lucian waiting is, for grokking in fullness
whiteknight what really is the difference between a static language VM and a dynamic language VM? 13:03
lucian whiteknight: the static one is a subset of the dynamic one
whiteknight built-in dynamic invoke, a dynamic object model, and a dynamic runtime
lucian that's quite a few requirements 13:04
especially the last two
whiteknight well, parrot does have them. Even if they aren't great currently
lucian atrodo: anyway, clue emulates a lot of C features, so it's slow
whiteknight: sure. jvm doesn't though
atrodo: i was thinking of something that isn't quite C/C++, but is close enough to share data structures and calling semantics 13:05
atrodo: and also has access to parrot
comfortable access
atrodo whiteknight> Right, but there are no static languages (or compilers) targeting parrot
lucian> Yep, that's what I'd like to see too
lucian atrodo: managed C++ is quite good in some ways, it's just that their implementation sucked 13:06
cython is even closer
whiteknight atrodo: a big part of that is because Parrot's object model and default runtime are dynamic. The implementation effort for a "good" static language is therefore significantly higher 13:07
lucian atrodo: in fact, even a clue parrot backend might be nice for a start
whiteknight: i don't see that 13:08
whiteknight: statically typed languages get static checks at compilation
atrodo whiteknight> Right. That's the path I started but somehow got sidetracked
whiteknight> Although, with your new embed API, that should help my job since that was my biggest pain point
whiteknight atrodo: I aim to please 13:09
13:11 rohit_nsit08 joined
rohit_nsit08 hello #parrot ! 13:12
Coke good *. 13:14
atrodo whiteknight> It looked good when I skimmed over it. My current plan for draak when I get back to it is to switch to using your new API and winxed 13:15
13:15 JimmyZ joined 13:19 mtk joined
whiteknight atrodo: I like that plan :) 13:22
good morning rohit_nsit08
rohit_nsit08 whiteknight: good morning! . I saw winxed's emit functions today, helped me to think more about how i have to go for that in javascript. I had one doubt what are the predef_ functions there? 13:25
whiteknight rohit_nsit08: those are the built-in functions for Winxed. things like string() or typeof() 13:26
lucian rohit_nsit08: i can't remember if you did, have you looked at narcissus? 13:27
rohit_nsit08 lucian: no what is narcissus? 13:28
lucian: looking at it 13:29
lucian rohit_nsit08: mxr.mozilla.org/mozilla/source/js/narcissus/ 13:30
rohit_nsit08: it's a js interpreter written in js
but it cheats, it uses native js objects directly
may be useful knowledge, though 13:31
rohit_nsit08 lucian: hmm.. seems a good thing 13:32
13:41 mtk left 13:45 mtk joined
rohit_nsit08 lucian: narcissus is using spidermonkey as its host environment and as u said using native js objects directly and leaves the actual work for the spidermonkey. Is there any advantage of using narcissus? 13:47
besides it is written in js, which is cool :-)
lucian rohit_nsit08: no, just educational
rohit_nsit08 hmm.. nice implementation. 13:48
13:54 lucian_ joined, lucian left 13:56 PacoLinux joined
dalek rrot/whiteknight/imcc_compreg_pmc: d5248c2 | petdance++ | src/exceptions.c:
note an unignorable result
13:57
rrot/whiteknight/imcc_compreg_pmc: fa331ee | petdance++ | frontend/parrot/main.c:
removed unnecessary scope
rrot/whiteknight/imcc_compreg_pmc: dc1985e | Whiteknight++ | / (63 files):
merge and fix conflicts
rrot/whiteknight/imcc_compreg_pmc: 2a6b662 | Whiteknight++ | frontend/parrot/main.c:
Changes to the frontend in master cause GC weirdness in this branch. I'm reverting those changes and will look through them in more detail
whiteknight msg NotFound are you planning any kind of release for Winxed following 3.3?
aloha OK. I'll deliver the message.
ttbot Parrot dc1985e5 i386-linux-thread-multi make error tt.taptinder.org/cmdinfo/63826 14:02
Parrot dc1985e5 i386-linux-thread-multi make error tt.taptinder.org/cmdinfo/63807
14:18 NotFound joined
NotFound Hi 14:20
whiteknight: pong
whiteknight ping
NotFound whiteknight: Winxed release? You mean a release number and a package? 14:21
whiteknight NotFound: something like that. I'm planning a stable Rosella release around that time, and wanted to know what version of winxed I should target
If you're doing something special, I'll coordinate. Otherwise it's no big deal
NotFound I think I'm going to do a migration to github, and then use git tags. 14:22
whiteknight oh, okay. Is that going to happen around the 3.3 release?
NotFound I don't do plans. When I do, I always break them ;) 14:23
Probably yes, but don't take it for sure. 14:24
A doubt... There will be some way to target releases in plumage? 14:25
whiteknight I don't know. Maybe not 14:26
dalek sella: d558437 | Whiteknight++ | / (2 files):
Add several tests for Event
tadzik Event, as in Event-driven programming? 14:29
whiteknight sort of
it's not a low-level event handling system like you would have in a GUI toolkit
it's a system for decoupling. Objects can anonymously subscribe to events, and other objects can anonymously publish to them 14:30
atrodo whiteknight> Is it closer to something like POE?
tadzik hmm, I think I alredy asked about that: does Select PMC gives us a bit of async IO?
whiteknight no. The Event library doesn't have a runloop or anything like that
tadzik: yes, Select PMC is sort of async 14:31
atrodo: it's more like an implementation of the Observer pattern
tadzik so one could implement async IO in Rakudo given Select PMC?
atrodo okay, that makes sense
whiteknight en.wikipedia.org/wiki/Publish/subscribe
PerlJam tadzik: Are you formulating a gsoc project based on that? :-) 14:32
tadzik PerlJam: somewhere, at the back of my mind
. o O ( Port AnyEvent to Rakudo Perl 6 )
whiteknight tadzik: do tell!
PerlJam tadzik: careful you don't overload yourself.
tadzik well, when I finish my Physics, Signal Theory and MIPS assembly I may be able to code something out :)
whiteknight Signal Theory was one of my favorite subjects 14:33
tadzik PerlJam: no, I'm not going to take two projects on GSoC
I wish I could afford having fun with that. So far I'm stuck with physics, since the last semester actually. But *. 14:34
I wish one day I'll remember my studies as "I had a few interesting subjects" rather than "I was stuck with some ridicolous &*!$% and didn't have time neither to appreciate the good things, nor to do all my plans after classes" 14:36
oh, don't listen, I'm just tired of this 14:37
moritz tadzik: I can tell from experience that even without classes you don't hav enough time for all pet projects :-)
PerlJam you *never* have enough time. 14:38
atrodo moritz> I can speak from experience that you never have time for pet projects
Yes, what PerlJam said
tadzik moritz: well, that's correct :)
bubaflub my mental demand always outpaces supply
moritz sometimes you just have to *take* time to do things
PerlJam get comfortable with not having enough time, never knowing enough and always being in a state of confusion and you're well on your way to enlightenment ;-) 14:39
tadzik I should look into some zen stuff as soon as I get enough ti... shit
moritz :-) 14:40
atrodo tadzik> I multitask my zen time. It's usually done while i'm asleep
tadzik sleep, that's the enlightenment I could practice every day 14:41
atrodo tadzik> Unfortunately I've reduced my zen time because of all the pet projects I work on at night 14:45
tadzik atrodo: fear not, for that's thy enlightenment 14:48
atrodo tadzik> You are wise beyond your years
tadzik atrodo: and you're wise between your ears 14:49
atrodo tadzik++
tadzik (heh. That didn't sound very zen, but I couldn't resist from the moment I thought about this)
atrodo I thought it was very zen
tadzik it may be. Maybe that's unreachable for my wisdom 14:51
dalek nxed: r931 | NotFound++ | trunk/winxedst (2 files):
improve constructor argument lists, allowing null in all stages and modifiers in
15:02
tadzik how come winxed code generator is so good and pct is not so awesome? 15:03
is anyone working on that, or that's rather low-priority?
NotFound Because Winxed needs to do it, in order to attract some users ;) 15:05
moritz tadzik: the PCT developers are hacking on nqp or rakudo :-) 15:06
NotFound I hate to say it, but that's a lame excuse for team being beaten by one developer }:) 15:11
moritz NotFound: depending on the team size (which is currently ~1) 15:12
cotto_work ~~
NotFound I think the number intersted in having nqp and rakudo get faster is high thatn that. 15:13
whiteknight PCT uses Perl6 semantics, which call for semantics like autovivification, etc
Winxed has no such semantics, so a large amount of autovivifying code can disappear
moritz NotFound: the number of active developers these days that are interested in rakudo, and know PCT enough to hack it, is pretty much 1.
NotFound: if you know somebody apart from jnthn_, I'm very happy to hear about them
whiteknight likewise, NQP follows Perl6 semantics to use exceptions for various bits of control flow. Winxed doesn't
PerlJam moritz: who is the 1? :) 15:14
15:14 Eduardow left
moritz PerlJam: jnthn_ 15:14
NotFound moritz: touchƩ
whiteknight Winxed makes the tradeoff to have less high-level semantics in exchange for code that is closer to the VM 15:15
it's hard to compare the two languages when they have such different goals
NotFound The problem is that that situation gives me even less interest in trying to convert Winxed code generation from pir to past/post whatever. 15:19
PerlJam Rustle up a GSOC student to do it for you! :) 15:22
whiteknight NotFound: that's fine too. The only reason I like PAST/POST is because we're going to be getting PBC generation from POST eventually 15:23
NotFound: What we want the most is to kill PIR. Kill it dead
kill it with a stick and fire
rohit_nsit08 I think i just read "kill PIR" . 15:24
whiteknight rohit_nsit08: not today.
atrodo whiteknight> I hope we have the ability to generate PBC from an API, and not just from POST
rohit_nsit08 who is taking the place than?
NotFound whiteknight: I'd like to be able to kill it, but having a good replacement before.
JimmyZ and NQP abuses find_lex too much.
whiteknight NotFound: right, we're working on the replacements
PerlJam JimmyZ: I don't think that's a fair assessment. 15:25
NotFound whiteknight: just one person knowledgeable with PCT doen't look like too much working.
atrodo "Coming soon to a theater near you, the whiteknight production of 'Kill PIR'. They thought it was dead, but they were wrong"
whiteknight atrodo: :)
moritz NQP/PCT doesn't inline any nested blocks
PerlJam atrodo: as long as we don't have "Kill PIR vol. 2"
whiteknight NotFound: other people are knowledgable about it. bacek and cotto seem to know it well
cotto_work fsvo "well" 15:26
NotFound I stand corrected: just one person knowledgeable with PCT and the main HLL that uses it. 15:29
atrodo would like to see a winxed based past/post like system
whiteknight we've talked in the past about having a good, generalized compiler toolkit library 15:30
PCT was assumed to take that mantle
PCT does do a hell of a lot of work to make compilers easy
JimmyZ PerlJam: I don't know how to define fair assessment, but NQP really needs to be optimized.
NotFound Except maybe document how to use it?
15:31 Eduardow joined
PerlJam JimmyZ: Sure. 15:31
moritz JimmyZ: your patches are very welcome 15:32
JimmyZ well, I must solve my problem of food and clothing first. 15:33
PerlJam JimmyZ: NQP needs to make more/better use of Parrot features, but by the same token, Parrot needs to have features that NQP is likely to use. Part of the "problem" with the current implementation is the impedance mismatch between Parrot's and NQP's respective feature sets.
JimmyZ: thus NQP "abuses" find_lex
whiteknight Parrots implementation of lexical variables is known to be sub-optimal 15:34
arguably we only need to use lexicals at all if we require nested closures, and arguably PCT generates too many nested closures 15:35
NotFound PerlJam: There is no way to declare non lexical variables in nqp?
moritz our $x; 15:36
whiteknight that's a global, not a non-lexical 15:38
NotFound Having function local variables that are promoted to lexical only if needed may be a useful optimization. This is what winxed does. 15:39
whiteknight NotFound: by the way, i've had problems with function parameters not auto-promoting to lexicals
I need to make a ticket for that
NotFound I thought that kind of problem was fixed. 15:40
Now that I think about that, there is no way to make the funcion parameter volatile. 15:41
15:43 Eduardow left
dalek sella/gh-pages: f9934a2 | Whiteknight++ | libraries/event.md:
Add in stub documentation file for the Event library
15:43
sella/gh-pages: 016e62c | Whiteknight++ | / (2 files):
Event is a supported library now. Add it to the documentation in all the correct places
sella/gh-pages: af64b6d | Whiteknight++ | libraries/future.md:
Remove Event from the list of future libraries
whiteknight NotFound: I'll put together a ticket with examples 15:44
NotFound whiteknight: ok
15:49 darbelo left, contingencyplan joined, UltraDM left 15:51 Eduardow joined 15:53 Andy_ joined 15:57 theory joined
Andy_ whiteknight: I merged up a bunch of my changes, fixed some conflicts. 15:59
whiteknight Andy_: Thanks! 16:00
Andy_: I merged from master this morning and had to revert some changes in frontends/parrot/main.c, some of which I think were from you. I am going to go back through the changes and make sure I didn't lose anything important 16:01
Andy_ ok
16:06 janus joined, ambs left, ambs joined
Andy_ whiteknight: Have you pushed the changes back yet? 16:11
dukeleto ~~ 16:17
16:19 lucian joined, lucian_ left, JimmyZ left
tcurtis ~~ 16:20
dalek nxed: r932 | NotFound++ | trunk/winxedst0.cpp:
fix and improve null handling in stage 0 ArgumentList
16:38 davidfetter joined
dalek rrot/lorito: a13aab9 | cotto++ | src/dynoplibs/m0proto.ops:
add op docs
16:39
rrot/lorito: b525721 | cotto++ | / (2 files):
add copy_bytes and set, test writing to allocated memory
cotto_work that should be a little more approachable now 16:40
dalek rrot/whiteknight/imcc_compreg_pmc: 526dfda | petdance++ | frontend/parrot/main.c:
Avoid potential passing of NULL to strchr(). Use strcmp() as compare, not a boolean.
16:41
Andy_ whiteknight: There you go, re-applied my changes to main.c. 16:42
16:47 eternaleye left, eternaleye joined
whiteknight Andy_++ 16:56
dalek rrot/whiteknight/imcc_compreg_pmc: c25ef75 | petdance++ | frontend/parrot/main.c:
Remove unused function write_bytecode_file. Remove an unused local pointer. consted some locals
Andy_ whiteknight: gist.github.com/904007 17:00
17:01 atagar joined
Andy_ That gives you stuff to look ati. 17:01
17:04 atagar left
whiteknight oh beautiful 17:10
the vast majority of these don't seem like they would be specific to my branch 17:11
17:11 darbelo joined
whiteknight Andy_ We should pass that list along to prospective GSoC students. Easy pickings for submitting patches 17:11
dalek rrot/whiteknight/imcc_compreg_pmc: 8c984e0 | petdance++ | / (2 files):
correctly annotate Parrot_set_config_hash_pmc input pointer
rrot: bcce1b3 | petdance++ | / (2 files):
correctly annotate Parrot_set_config_hash_pmc input pointer
17:12
cotto_work That's a nice way to get started.
Andy_ whiteknight: If it was easy pickings, I'd have done them. :-(
Some of them are larger-scale questions
For instance: Should all our string_ fucntions handle NULL string pointers? Some do, some don't. We need to be consistent, I think. 17:13
whiteknight Andy_: that's a good point. Consistency there seems warranted
I haven't dug into that system in a long time 17:14
Andy_ splint is very good at tracking when things can and can't be NULL
That's why we have the PARROT_CANNOT_RETURN_NULL etc all over the place
So splint warns us, but it's not very useful if some can and some can't return NULL, and some can and some can't accept NULLs, etc
I also question whether we can get rid of the STRINGNULL variable. It's apparently a debugging hook, but I wonder if anyone actually uses it. 17:15
cotto_work It was a fairly recent addition.
Andy_ oooh lunch time. 17:16
whiteknight yeah, STRINGNULL is valuable
cotto_work +1
whiteknight Actually, that's probably argument enough that string API functions should not accept NULL
STRINGNULL is the lowest we should ever go
dalek nxed: r933 | NotFound++ | trunk/winxedst0.cpp:
refactor ArgumentList and use it in call a new argument lists in stage 0
17:18
NotFound whiteknight: I think it's a lot better to take NULL than to having to debug all wrong usages.
17:18 rohit_nsit08 left
whiteknight NotFound: What about all the wrong usages of NULL? 17:18
We can't misuse either, and we can test for STRINGNULL as easily as we can test for NULL
NotFound whiteknight: STRING_IS_NULL does both, as long as the function declaration doesn't confuse the compiler. 17:19
Andy_ whiteknight: But isn't STRINGNULL sometimes just a NULL? 17:20
whiteknight NotFound: Right, but we can give splint a lot of help if we are consistant about allowing NULL (which is not a valid STRING) or only allowing STRINGNULL (which is a valid string, and is safe from segfault)
Andy_: In general, it shouldn't be
Andy_ How is STRINGNULL the var used?
NotFound: I'd rather catch the wrong usages now, and have the static analysis tools and the compiler find them. 17:21
NotFound whiteknight: if functions that are supposed to be always called with values from parrot registers, not accepting NULL is fine for me.
Catching the internal wrong usages may be easy (...).
But external API usages, that's a different thing. 17:22
whiteknight The STRING API functions should be consistant. Either they should take NULL or they all should NOT. Since we do have STRINGNULL, my suggestion is "they all should not"
Andy_ whiteknight: but then we don't have splint's help in catching NULLs
whiteknight Andy_: Arguably that's not a problem, since STRINGNULL is usable as a STRING and doesn't lead to segfaults 17:23
and since strings are immutable, there's no real danger that STRINGNULL would become corrupted
or, there shouldn't be (I know the string system plays games internally)
NotFound whiteknight: also, STRINGNULL is a local value in parrotlib. Not so easy to force its usage in all extern and embeding usages. 17:24
whiteknight NotFound: we do the same with PMCNULL. If we need to add new interface fucntions we can do that
Andy_ whiteknight: My point is that if STRINGs that are NULL are actually NULL, then splint can help find the cases when a STRING *NULL gets passed around. If it's a STRINGNULL, then it can't.
NotFound whiteknight: yes, and we already have problems with PMCNULL. 17:25
whiteknight Andy_: yeah, but if we make everything STRINGNULL, passing those around isn't a problem and doesn't need to be tracked in the first place
Andy_ "Isn't a problem" from the compiler and runtime point of view. I'm talking semantically.
whiteknight That is, let's make the guarantee that NULL isn't used by the string API, then everything is "safe" in that regard
STRINGNULL is just a 0-length string, and can be transparently used like other strings in all operations 17:26
it's a safe value at runtime
Andy_ Yes, I realize
17:26 dcolish left
Andy_ If I call Parrot_string_length(NULL), that shouldn't happen, and splint can tell me that. 17:26
If I call Parrot_string_length(STRINGNULL), that also shouldn't happen, but splint can't tell me that. 17:27
whiteknight that second example can happen, and frequently does happen
Andy_ Why?
NotFound Andy_: catching NULL usages at compile time is good. Catching PMCNULL or STRINGNULL is not. It's usages are causes of exceptions, but they don't break the parrot VM.
whiteknight it's maybe wasteful, because STRINGNULL has a length of 0. But it *is* a valid string and can be passed around like that
Andy_ NotFound: OK, I like that distinction.
NotFound Its wrong usages, I mean. 17:28
Andy_ Then STRING_IS_NULL need not check for NULL, only for equality with STRINGNULL 17:29
whiteknight eventually, once we've standardized the system, yes
NotFound Andy_: the optimizer takes care of avoiding the comparaison with NULL when it knows is redundant. 17:30
Andy_ s/takes/can take/
depending on compiler
NotFound Andy_: we don't want to optimize for shit compilers.
Andy_ Heck, STRING_IS_NULL() ought to assert(s != NULL) 17:31
s/ought to/could/
whiteknight yes, that seems like a good idea
Andy_ Really, STRINGNULL might better be called STRINGEMPTY
whiteknight it's going to take us some time to get to that level of standardization
NotFound Not at all.
An empty string is ""
whiteknight "STRINGNULL" was chosen by analogy to "PMCNULL" 17:32
Andy_ Not that I understand PMCNULL
So educate me.
Because we need to do the same thing there.
THAT would be a huge win as far as splint and compiler.
whiteknight what do you mean?
NotFound null $S0 --> STRINGNULL | $S0 = '' --> Empty string
whiteknight STRINGNULL is an empty string that is a singleton and might have some other special properties 17:33
I don't know all the details about how it's implemented
Andy_ ok
NotFound For example, STRINGNULL has no encoding.
whiteknight PMCNULL is a valid PMC type that throws exceptions when we access it instead of segfaulting
NotFound Empty strings have,.
Andy_ Then if we're always going to have STRINGNULL be a singleton, and PMCNULL, then I'm more than happy to plow through them. 17:34
whiteknight so VTABLE_invoke(interp, PMCNULL) is PMCNULL->vtable->invoke(interp, PMCNULL)
Andy_: that's what they are. They're immutable, global singletons
NotFound Please don't use euphemism. They aren't singletons, they are fucking global vars.
whiteknight NotFound: but there's only one of them, and they don't change after the interp is initialized 17:35
Andy_ whiteknight: MANY of the splint warnings are complaining of VTABLE_invoke(pmc) where we know not that the pmc is not NULL.
NotFound: It's not a euphemism.
NotFound whiteknight: I have doubts about that.
whiteknight NotFound: it's technically possible to twiddle PMCNULL, but we don't do it 17:36
NotFound Some people are claiming that we should be able to have independent interpreters and they must not share any data. That may lead to having a PMCNULL and a STRINGNULL for each interpreter.
whiteknight if somebody did, they would get slapped
NotFound: that may be. We don't have a sane threading system right now to worry about
NotFound: and it really doesn't matter whether they be global singletons or interpreter-local singletons 17:37
Andy_ OK, now I'm actually going to lunch. I've added the tasks for STRINGNULL.
whiteknight thanks Andy_++
Andy_ and then, after than, splint flags for the vtable functions
whiteknight: when do you see merging back to master? 17:38
NotFound In fact PMCNULL does not need to be a singleton, the only advantage of being unique is to be able to do something == PMCNULL instead of PMC_is_null(something) 17:39
whiteknight Andy_: I really don't know. I've got some codestd fixes to make still, and I would like to see more tests
Andy_ Today? Next month?
whiteknight Andy_: it will happen by Friday, or it won't happen until after the release
Andy_ ok
whiteknight My money is on sooner, rather than later
but there's a lot of code change in that branch and I don't doubt there are bugs hiding in it 17:40
NotFound And the ability to do that is the reason that I don't think "singleton" is a good description for it, BTW. 17:41
tadzik seen chromatic 17:42
aloha chromatic was last seen in #parrot 52 days 23 hours ago saying "All of the core tests did pass for me, FWIW.".
NotFound whiteknight: the practical reason of allowing NULL in the API is: say you want to call a function that takes an argument that can be STRINGNULL. With NULL you do: something(interp, NULL); Without it you must do something like: snull = Parrot_str_get_null(interp); something(interp, snull); 17:48
whiteknight NotFound: that extra function call doesn't impress me. STRINGNULL would be constant for an interpreter, and we would only need to get it once 17:49
NotFound whiteknight: Where, in a global variable?
whiteknight wherever. I don't know how extensions or embedders will do it
but they can cache that result if they want
NotFound Yes, they can do lot of things. But I don't think we must force them to do that kind of things. 17:51
whiteknight NotFound: so what's your argument? That we should allow people to pass NULL pointers around without regard? 17:53
or that we shouldn't ask people to call interface functions the correct way?
NotFound whiteknight: a C API should be friendly to C programmers. C programmers are not used to have several special purpose kinds of nulls. 17:54
Passing them to the internals, of course not. Converting them to PMCNULL or STRINGNULL inside the api function. 17:55
whiteknight NotFound: Parrot isn't C. Parrot has standards of it's own. Every library enforces standards on the interface 18:05
NotFound whiteknight: yes, and some of them enforce lack of happy users because of unfriendly standards. 18:06
whiteknight NotFound: For years Parrot has not had a defined API of any kind, and our users have been unhappy about that. Moving a little bit in the right direction isn't going to kill us 18:07
NotFound For example, perl XS has standards that I don't think nobody likes.
whiteknight We have a long way to go before our APIs are too strict
Parrot is very very far away from XS
NotFound whiteknight: yes, but I think that we are discusing what is the right direction in this item. 18:09
I think that a policy of being liberal in what we accept and strict in what we give is the more friendly approach here. 18:11
18:21 dodathome joined
Andy_ back 18:29
cotto_work #ps in 120
Andy_ whiteknight: anything else you want me to look for? 18:39
whiteknight Andy_: No, you've been helpful enough already. Now I just need to plug through the remaining failures 18:43
dalek rrot/lorito: 40ebd35 | cotto++ | t/dynoplibs/m0proto.t:
add test for copy_mem
18:45
whiteknight tcurtis: ping 18:50
tcurtis whiteknight: pong
whiteknight tcurtis: I've been planning to add in a text tokenizer library to my Rosella project. If you provide the LALR parser generator, I can provide the lexer 18:51
I can't guarantee a timeframe for it
18:55 bubaflub left
tcurtis whiteknight: Great. 18:55
whiteknight: I'm considering moving the grammar specification parser part to later in the schedule so that I can use the parser generator to generate the parser. 18:57
atrodo Parsers, all the way down 18:58
tcurtis whiteknight: The disadvantage would be that it would take a bit longer after the actual generation was implemented before it would be particularly convenient to use. 18:59
(Although it might not actually be any later in actual time, since even if I wrote a grammar parser in NQP at the beginning, it wouldn't be capable of actually generating parsers for a while. 19:01
19:02 Patterner left, Psyche^ joined, Psyche^ is now known as Patterner
whiteknight tcurtis: A good design for the parser would enable new coders to get involved in the project after GSoC was over 19:02
so separate out the front-end, which takes rules and things, from the backend which generates the parser 19:03
tcurtis: To start, you don't need a friendly DSL like yacc uses. All you need are method calls to add sequences
parser.add_rule("keyword_if", "if") 19:04
or, parser.add_rule("if_statement", "if", "(", "condition", ")", ...)
once you have method calls to add new rules to the parser, you can create your own little language for specifying them in an easy way 19:05
or, not. The fancy language isn't necessary
if we pretend that every "token" object is going to have a type string and the string of the actual contents (or, a list of sub-nodes in the case of a production), we can make matches based on named sequences of tokens 19:07
parser.add_rule(<output type name>, <input sequence of tokens>...) 19:08
(this is just one idea, you can design your own system that doesn't stink as badly)
19:30 bubaflub joined
tcurtis Right. So, friendly DSL becomes it-would-be-nice-if task for near the end. 19:32
dalek tracwiki: v17 | bbatha++ | ParrotGSoC2011Students 19:33
tracwiki: trac.parrot.org/parrot/wiki/ParrotG...ction=diff
cotto_work tcurtis: you should put your proposal on melange 19:35
tcurtis++
tcurtis cotto_work: I need to rip out the lexer bits and flesh out the details of the schedule. So, hopefully I'll get it there sometime tonight. 19:37
cotto_work tcurtis: wfm
whiteknight tcurtis++ 19:40
19:44 whiteknight left
tcurtis Daylight Savings Time always ruins my expectations about the timing of #ps. 19:45
bubaflub tcurtis: same. i just had to run date -u
19:45 whiteknight joined
cotto_work #ps in 44 19:46
atrodo I just wait for cotto_work to remind me
cotto_work atrodo: me too
atrodo cotto_work++ # Boosting confidence
cotto_work gets stuck in an infinite loop waiting for cotto_work
tcurtis Does Winxed have gotos? 19:47
whiteknight yes 19:48
dalek tracwiki: v18 | bubaflub++ | ParrotGSoC2011Students 19:49
tracwiki: trac.parrot.org/parrot/wiki/ParrotG...ction=diff
bubaflub whiteknight: aren't gotos considered harmful?
cotto_work bubaflub: isn't considering gotos harmful considered harmful? 19:50
bubaflub cotto_work: yo dawg, i heard you like considering things harmful, so i put a goto in your goto so you can goto while you goto while you goto while you... 19:51
whiteknight bubaflub: Winxed gives you plenty of rope to hurt yourself with, yes
winxed is a low-level system language. It doesn't protect the user behind too many high-level abstractions 19:53
with a few limited exceptions if PIR can do it, winxed can do it too
at the moment, there is no way to set up multisubs, but I hope that will come soon
tadzik considering harmful is considered harmful 19:56
I have not yet seen any "considered harmful" that didn't have even a tiny bit of fanatism in it
whiteknight it's one thing to say that 19:57
PerlJam "Harmful considered harmful"
whiteknight "goto" is not good practice. It's another thing to outright ban a particular coding construct
dalek rrot: 9230099 | petdance++ | src/spf_render.c:
Removed unused var. Consted a local var.
whiteknight In almost all cases I would remove a "goto" statement if I found it in C code. It would have to be an extraordinary exceptional circumstance for me to leave it be 19:58
tcurtis If one has an acronym that begins with a vowel sounds, but which would begin with a consonant sound if expanded, should one use "a" or "an"?
atrodo A goto should require a signed-in-blood contract stating you know what you're doing. Or a light compiler warning.
Andy_ tcurtis: depends on if you pronounce it.
whiteknight tcurtis: what acronym? 19:59
tadzik whiteknight: what about escaping nested loops? 20:00
tcurtis LALR. Although it actually also depends on whether you say each letter separately or not. 20:01
whiteknight tadzik: the first mistake is writing the nested loops in the first place.
cotto_work "loller"
whiteknight loller!
tadzik: a nested loop is just a disguised cry for refactoring help 20:02
tadzik oh, I wouldn't be so sure. Say you are traversing a 3D array, willing to stop at a certain element
whiteknight tadzik: Again, there are cases where it's permissible if we imagine hard enough 20:03
tadzik that's what I'm saying :)
20:03 soh_cah_toa joined
whiteknight tadzik: and what I'm saying is that those situations are vanishingly rare 20:03
tadzik oh, maybe
whiteknight I've never run into a case where I used a goto, or even considered that a goto might be the best solution to the problem at hand 20:04
soh_cah_toa haha, you guys are still talking about goto's?
whiteknight well, that's not true. I have used them in some cases, especially in parrot-land where higher-level constructs might not always be available
but if there are alternatives, those alternatives are almost always better than goto 20:05
tcurtis soh_cah_toa: I don't think it's related to the previous discussion.
whiteknight: How do you feel about using gotos for cleanup on error in C?
whiteknight tcurtis: what error? what cleanup? 20:06
We do lots of cleanup of variables in Parrot, yet we have extremely few gotos in the whole codebase
soh_cah_toa good
whiteknight (and those that we do have are highly indicative of larger code problems)
soh_cah_toa i avoid goto like the plague 20:07
20:07 kid51 joined
whiteknight for instance, the sprintf implementation has a goto or two in it, but that code is a godforsaken mess 20:07
so it's hard to say "see?!?! it works here!"
benabik I avoid the plague like I avoid goto.
soh_cah_toa the associative property of goto and the plague 20:08
commutive, sorry
tcurtis whiteknight: for a content-less example of what I mean, gist.github.com/902605
benabik Well, I find they both tend to distribute too far if you're not careful.
soh_cah_toa *commutitive
whiteknight tcurtis: Look at the API calls in frontend/main/parrot.c:main
same situation. Each API call might have an error. We cleanup without goto 20:09
I would rewrite that code snippet to not use goto 20:10
tcurtis: gist.github.com/904441 20:15
kid51 #parrotsketch in 15
whiteknight tcurtis: using the "inline" or "static" keywords on those functions would cause the compiler to inline aggressively too
tcurtis: breaking the complicated bits out into named functions increases readability 20:16
tcurtis: That said, I've read the code generated by bison, and I know it makes heavy use of goto. You're going to have to duplicate much of that whether we like it or not
20:20 mikehh joined
tcurtis whiteknight: that example is cleaner. And that it doesn't do the same thing as the original further proves your point about readability. 20:21
dalek rrot/m0-spec: 23ad887 | cotto++ | docs/pdds/draft/pdd32_m0.pod:
update m0 spec to match prototype, note outdatedness
20:22
whiteknight tcurtis: it was a quick translation. I probably got something wrong 20:23
Ah, I'm not calling foo_bar_cleanup when foo_bar_do_it succeeds 20:24
tcurtis: improved: gist.github.com/904441 20:26
the last of the three gotos is completely unneeded, but I left in the branch behavior anyway 20:27
a fill-in the blank situation
tcurtis the last goto was just there so that adding further behavior after foo_bar_do_it() wouldn't require adding it. 20:29
mikehh #ps time 20:30
cotto_work so it would seem
tcurtis The only bug now is that foo_cleanup() gets called even if foo_init() fails.
20:31 whiteknight left 20:34 frodwith left, frodwith joined 20:38 lucian left 20:40 dodathome left, lucian joined
benabik For those not in #ps, I just updated my GSoC proposal for getting PCT to talk PBC: gist.github.com/899867 (Yes, I updated it on Melange too.) 20:53
tadzik oh, I didn't know you can update proposals alredy submitted
benabik I used the button labeled "update". I hope it worked. :-D 20:54
lucian it does work. i've given up the gist version 20:57
benabik lucian: I'm updating the gist version so people not on melange can see it.
lucian benabik: if you make it public, anyone can see it 20:58
benabik lucian: Oh. :-/
Well, I'm writing it in Markdown on my machine anyway so I don't see a reason not to copy-pasta into gist as well as melange. 20:59
tadzik benabik: hehe, your PCT slides look really similar to my Parrot slides :)
lucian benabik: sure, your proposal
benabik tadzik: Which Parrot slides? I was thinking about doing a presentation on Parrot as a whole for a local conference, so a starting point would be useful. 21:01
bacek benabik, I like your updated proposal. 21:02
cotto_work that's a good sign
bacek aloha, melange?
aloha bacek: melange is crapping out
bacek good girl... 21:03
cotto_work aloha: melange is also socghop.appspot.com
aloha cotto_work: Okay.
benabik Crapping out?
cotto_work benabik: historically it hasn't run on the best of hardware. 21:04
tadzik benabik: I hid them somewhere, hold on. They're in Polish though
benabik tadzik: Ah. Polish not so useful to me. I'm a dirty unilingual American. ;)
tadzik benabik: feather.perl6.nl/~tjs/static/#1 21:05
lucian aloha: melange is /google-melange.com
aloha lucian: ... but melange is crapping out or socghop.appspot.com ...
lucian aloha: melange is also /google-melange.com
aloha lucian: Okay.
lucian aloha: botsnack
tadzik benabik: the funniest part was presenting the lolcode compiler
21:11 davidfetter_ joined
benabik tadzik: I should consider that. Something entertaining to show it off instead of just "look, rakudo". 21:15
21:15 davidfetter left, davidfetter_ is now known as davidfetter 21:16 soh_cah_toa left 21:17 soh_cah_toa joined
lucian benabik: brainfuck should get a few giggles too 21:19
benabik Can either of those use random PBCs? It'd be funny to write a class in LOLCODE and run it with BF or similar. :-D 21:21
lucian yeah! and then write unit tests for it in whitespace
NotFound I think BF isn't too oriented to external linkage. 21:22
lucian NotFound: that's a nice way of saying it's very deep in the tarpit
21:23 ambs left
lucian have you seen hello world in bf? you could generate the lolcode source code from bf 21:23
dalek nxed: r934 | NotFound++ | trunk/winxedst1.winxed:
fix a problem in empty argument lists
nxed: r935 | NotFound++ | trunk/winxedst1.winxed:
a hard tab
benabik Use rakudo's eval to run BF to generate LOLCODE and then run it? 21:24
NotFound I'm already enough brain damage, no need exposure to bf.
21:24 mikehh left
benabik This way lies madness. 21:24
lucian benabik: yeah, like that
H.P. Lovecraft would be proud
NotFound benabik: It's called BF for some reason.
lucian i have a warm place in my heart for whitespace 21:25
NotFound lucian: have you seen the proposal for whitespace overriding in C++?
lucian NotFound: no, but it sounds insane already 21:26
NotFound Well, some parts even looks reasonable at the start...
benabik You can write a program that is both valid whitespace and BF, I think.
lucian benabik: hmm
cotto_work lucian: you should get a doctor to look at that. It sounds dangerous. 21:27
lucian after seeing how C++ parsers work (7 passes!) i want nothing to do with it
21:27 ligne joined
NotFound If I remember well, in whitespace all non white is ignored, so you should be able to be a program that is valid in whitespace and in X for any free format X- 21:27
lucian NotFound: yep. sounds as an opportunity for much evil 21:28
21:28 kid51 left
NotFound But with python, that should be fun. 21:29
lucian NotFound: the whitespace propaganda says you could print out a program and no-one would know it's there
but they fail to point out that they can be hidden in existing programming languages
NotFound: yeah, much harder 21:30
NotFound lucian: I can signal an exception. In an old zx-81 computer you can see the difference between whites and nothing.
lucian NotFound: as in many editors. but on paper? 21:31
NotFound On screen, but without software aid, just its hardware.
lucian i see
NotFound Its screen let empty lines empty to avoid wasting memory (it has 1K in the base version), and in the TV output the difference was viewable. 21:32
lucian i see. interesting "laziness" 21:33
i've always wondered if haskell-like laziness could be pushed very, very far
NotFound The amazing thing is there are people programming for that beast even today.
benabik Hm. If lolcode ignores +-<>[],., then it could be lolcode, ws, and bf at the same time.
I should stop.
lucian benabik: no, no. you're on your way to great evil 21:34
a funny polyglot on parrot would be interesting
NotFound lucian: megatokyo.com/strip/1161 21:35
lucian NotFound: i don't quite get it. sorry 21:38
dalek nxed: r936 | NotFound++ | trunk/pir/winxed_compiler.pir:
update installable compiler
21:39
NotFound lucian: that's how you'll look like if you do more BF.
lucian i see. possible, i guess
NotFound Note that I don't say is bad ;) 21:40
22:04 whiteknight joined 22:07 davidfetter_ joined 22:11 davidfetter left, davidfetter_ is now known as davidfetter 22:20 bubaflub left 22:28 lucian left
whiteknight misses #ps 22:36
whiteknight is happy to see GSoC students participating in it 22:37
hate t/pmc/threads.t 22:46
22:50 ligne left
atrodo aloha, insult t/pmc/threads.t 22:52
aloha atrodo: t/pmc/threads.t is nothing but a clapper-clawed thimbleful of unintelligent cold sores.
dukeleto ~~ 23:11
dukeleto backlogs to see what happened in #ps
whiteknight I'm seeing a sane test situation in the imcc_compreg_pmc branch 23:14
I'm not sure I ever believed it would happen
I may attempt a merge as early as tomorrow 23:15
dukeleto whiteknight++ 23:16
cotto_work whiteknight++ 23:17
dukeleto cotto_work: how many GSoC students do you think we can realistically mentor this summer? 23:18
whiteknight: i am building and testing a g++ build of your imcc_compreg_pmc branch right now 23:19
cotto_work "we" being who all?
whiteknight awesome
dukeleto cotto_work: we, the Parrot community 23:20
cotto_work It depends on who's mentoring. Not everyone will be comfortable mentoring every project. 23:21
23:21 bubaflub joined
whiteknight right, that's the kicker. It's about matching good mentors to the right projects 23:21
cotto_work My guess would be 6-8, but that's largely pulling a number out of the air.
whiteknight is it permissible for a mentor to have multiple students? 23:22
cotto_work I'm pretty sure that Google's fine with that.
Tene I expect to be able to provide intermittent or task-specific support to students, but I can't provide reliable or regular support. 23:23
whiteknight I would be willing to do two projects, if necessary
Tene: if you keep offering, we're going to take you up on it :)
Tene :) 23:25
dukeleto mentors can mentor any number of students, but having more than 2 or 3 students is not productive
i think we have roughly 10-15 people that can mentor part-time, so I think we could support roughtly that number of students
whiteknight dukeleto: okay, I wouldn't want more than 2. And I would do 2 under the realization that I would have less time for working on other things
dukeleto whiteknight: some students need very little help. Other require a lot of help. 23:26
whiteknight right
dukeleto whiteknight: it is uneven across mentors and orgs
whiteknight: we have some repeat gsoc students this year. We know they are capable and they have their dev environment under control, and they are more likely to produce good stuff with little help 23:27
whiteknight: it is just something to keep in mind
23:28 darbelo left
whiteknight Right. I don't advocate multiple students per mentor in general. I'm just saying that if we have more students than available/willing mentors, I'll spend more time on it 23:28
dukeleto the reason I ask the question is because Google will award a number of slots soon, based on how many proposals we get
whiteknight: thanks :) 23:29
so if they give us N slots, we then see that we have M good proposals. If M < N, we give slots back, if N > M then we have to make hard decisions (more likely) 23:30
cotto_work dukeleto: do you know when google will start making that decision?
dukeleto my best guess is that we will be awarded somewhere between 5 and 20 slots. it's hard to say. I think there algorithm changes every year.
cotto_work: it is all on their timeline 23:31
cotto_work: i think the week after student proposals are due, roughly
cotto_work All I see is "mentor slots are announced..." on the 12th
dukeleto cotto_work: they base slot assignments on the number of student applications to each org
cotto_work: yes, on the 12th then :)
cotto_work: and, *very* roughly, orgs, on average, seem to get roughly half the number of slots than the number of student applications 23:33
cotto_work: but there is a lot of variability. non-deterministic flavinoids
benabik: i commented on the proposal on Github 23:34
benabik: it looks very good. Just need to add some detail to the timeline to replace "Continue working" and "bugfixes" weeks 23:35
davidfetter dukeleto, are you sure you can't make it to pgcon in ottawa next month? 23:40
dukeleto davidfetter: my talks were not accepted, and have been making other travel plans. why do you ask? 23:42
davidfetter dukeleto, i was hoping for your contribution at the PL summit on 5/17
dukeleto, and if you can't make it in person, i'd like to see what i can do to get your concerns addressed
dukeleto davidfetter: what contribution? does the postgresql community want to hear about PL/Parrot or PL/Perl6? From the talks they chose to accept, it doesn't seem like they want to hear about what I have to talk about. 23:48
cotto_work dukeleto: did your linuxfestnw talks get accepted? 23:49
whiteknight last year google put out a preliminary count of slots early in the process, then refined to an actual count 23:51
dukeleto cotto_work: didn't submit them yet. hopefully, i am not too late 23:52
cotto_work: i will go even if i missed the talk deadline
cotto_work dukeleto: It's getting pretty close if the deadline hasn't passed. It's at the end of the month iirc 23:53
davidfetter dukeleto, don't take it so hard. it's cutting-edge stuff. the PL summit is about looking over the PL infrastructure and seeing what common concerns PL writers and users have, and how to address same 23:55
benabik dukeleto: Thanks for comments. Not sure what to replace those lines with yet, but I have a couple days to think. The "keep working" is because I expect the conversion I'm doing there to take more than a week and I'm not sure of a good mid-task goal. 23:56
davidfetter so the answer is, the community wants to hear about all kinds of PLs. heck, my talk got bounced on the first round, and i only got grandfathered in because somebody couldn't make it and they wanted to hear about this new SQL feature
dukeleto davidfetter: that sounds fine. I can send an email with my concerns about the PL infrastructure 23:58
davidfetter: is there some actual document that describes what will happen at the PL summit?