Parrot 3.3.0 released | parrot.org | Log: irclog.perlgeek.de/parrot/today” | Accepted GSoC Students announced! | GSoC student information emails coming out soon
Set by moderator on 26 April 2011.
00:04 Andy joined
soh_cah_toa is back and still frustrated w/ winxed >:( 00:13
whiteknight I've never seen anything like that with winxed, and I regularly run it on a system with 512Meg RAM 00:14
soh_cah_toa: is that the 3.3.0 tag from github, or current HEAD? 00:15
opbots trust soh_cah_toa
slavorg Ok
slavorgn Ok
soh_cah_toa how do i find out? i'm still new to git
whiteknight git describe --tags 00:16
soh_cah_toa RELEASE_3_3_0-72-g06bb92c 00:17
oh wait 00:19
sorry, that's my host os
whiteknight oh, okay
in parrot, do a "git checkout RELEASE_3_3_0", then make and reinstall again 00:20
soh_cah_toa RELEASE_3_3_0-72-g06bb92c
alright
whiteknight I'm only suggesting this to rule out the possibility that you have changes after the release which cause problems
soh_cah_toa okay
whiteknight I always use plumage to install winxed without problems. I've never tried to do it directly
soh_cah_toa to be honest, i've never used plumage 00:21
i'll try it after i reinstall parrot
whiteknight plumage is nice
parrot setup.pir build && parrot setup.pir install && plumage install winxed 00:22
soh_cah_toa i've never quite understood it. why a package manager for a vm? i mean, when i think of a package manager i think of yum or apt-get
benabik soh_cah_toa: For the same reason you use apt-get. To manage libraries. :-D 00:23
whiteknight soh_cah_toa: you'll understand it when you use it
it's worthwhile
soh_cah_toa alright, i'll give it a try 00:24
whiteknight what version of ubuntu?
00:25 lucian_ joined
soh_cah_toa the newest: 11.04. i don't normally use ubuntu though. i'm an rpm kinda guy. i just quick threw it together to get started w/ parrot because it would be quickest to install 00:25
00:25 lucian left
whiteknight I have not been too happy with 11.04 00:25
I haven't updated my laptop to use it, only my one vm 00:26
and of course the vm doesn't have enough muscle to run unity, so I can't test that
and I won't install on my laptop if I can't test it first
soh_cah_toa i really don't notice a difference. but then again i really only use it for parrot stuff and don't really dig around inside. that's my fedora machine's job :) 00:27
wow, frozen. really?
ugh... 00:28
rebuilding... 00:29
whiteknight maybe you just have a problem with that VM 00:31
soh_cah_toa i have a different problem on EVERY system i use
all w/ winxed
it's nuts
whiteknight that's weird 00:33
it's always been extremely stable and usable for me
soh_cah_toa agh...still giving me issues. forget it. let me nopaste what my fedora machine complains about. h/o 00:34
nopaste "soh_cah_toa" at 192.168.1.3 pasted "More Winxed Issues" (35 lines) at nopaste.snit.ch/43087 00:35
soh_cah_toa oh wait, h/o that's not it 00:36
that, i just forgot sudo
it's this: "parrot setup.pir \\n make: parrot: Command not found \\n make: *** [install] Error 127" 00:37
but parrot is installed
that's what i get w/ "sudo make install"
whiteknight make install for winxed? 00:38
soh_cah_toa yeah
i'll try plumage now
whiteknight the winxed makefile does have an install target 00:39
definitely try plumage
soh_cah_toa h/o i think i'm seeing a pattern 00:40
00:40 utsl left 00:41 utsl joined
soh_cah_toa after "sudo parrot setup.pir install" i get "sudo: parrot: command not found" which is similar to what i got when using sudo to install winxed 00:41
oh, that's installing plumage btw
dukeleto soh_cah_toa: parrot is not in the PATH of your root user
benabik Sudo cleans out the path, so if parrot is in a wierd directory, that will fail.
soh_cah_toa dukeleto: that's what i'm thinking 00:42
dukeleto soh_cah_toa: use the full path to the parrot binary
whiteknight soh_cah_toa: where is parrot installed?
try the install without sudo 00:43
dukeleto soh_cah_toa: and why are you needing sudo ?
soh_cah_toa tada!
whiteknight tada!
soh_cah_toa dukeleto: i always need sudo w/ things like make install b/c i use the default directory which is usually something like /usr/local/bin 00:44
wow, plumage is kickass 00:45
whiteknight soh_cah_toa: where is parrot installed on your system?
soh_cah_toa winxed. installed. done. 2 seconds
whiteknight I told you plumage was awesome
soh_cah_toa /usr/local/bin
whiteknight ok 00:46
soh_cah_toa i don't see how plumage installed it any differently from what i was trying to do but whatever. it's done 00:48
whiteknight I'm telling you, it's magic
soh_cah_toa ah...finally lolcode 00:49
whiteknight now your life is complete
dukeleto soh_cah_toa: sudo is no bueno
soh_cah_toa dukeleto: howcome?
whiteknight soh_cah_toa: your homework is to write a lolcode program that calls a module written in Winxed 00:50
dukeleto soh_cah_toa: security issues and other reasons
soh_cah_toa: github.com/leto/Util/blob/master/bin/new_parrot
soh_cah_toa: that script is what I use to compile parrots
soh_cah_toa: and it installs the parrot into the build directory
bubaflub soh_cah_toa: i've found that using sudo once causes me to use it for all future invocations; setting the right permissions can be a pain in the butt but it's worth it
dukeleto soh_cah_toa: and then I add that to my PATH
soh_cah_toa: no sudo needed, ever. For parroty stuff, at least.
soh_cah_toa dukeleto: alright, i'll give that a try 00:51
dukeleto soh_cah_toa: set TEST_JOBS to the number of CPUs you have, plus 1
soh_cah_toa: that script assumes that TEST_JOBS is defined, which is a bug
soh_cah_toa whiteknight: that'd be fun
dukeleto: okay 00:52
whiteknight soh_cah_toa: I actually don't know how lolcode does it. But if it has the ability to load_language and compreg, you can do anything
soh_cah_toa whiteknight: you know, that reminds me...what's compreg? i saw it w/ the imcc_compreg branch and then i saw a pir code example with the compreg opcode but i can't figure out what it stands for 00:53
whiteknight it's a really stupid cntraction of "compiler register"
I think
basically, you use that to register a compiler object with the system, and to retrieve it again laster
later 00:54
so if you want the PIR compiler object, you do "$P0 = compreg 'PIR'"
and then $P1 = $P0.compile_file('my/file/name.pir')
or $P1 = $P0.compile_string("...")
lucian_ whiteknight: you can try unity-qt in the vm i think, if you care
whiteknight lucian_: I might if I get bored 00:55
but probably not
00:55 lucian_ is now known as lucian
soh_cah_toa whiteknight: is that any better/worse than just .include 'foobar.pir'? 00:55
whiteknight soh_cah_toa: .include is a compile-time directive. compiler objects let you compile and load on the fly 00:56
you can create code strings in your program then compile them
you can inline Winxed code in NQP code with the compreg. compile it at runtime and execute it
soh_cah_toa whiteknight: okay. hmm...i actually may be able to use something like that w/ the debugger
whiteknight soh_cah_toa: definitely. I'm sure of it
for things like macros 00:57
the user enters code, you compile it on the fly and execute the resulting subs
soh_cah_toa that's exactly what i was thinking
00:59 ShaneC left
soh_cah_toa whiteknight: how do you suggest implementing the step algorithm? b/c the book i'm reading has the compiler insert a trap instruction at each line and when the program is ran, it simply traps to the debugger at each line. but i don't think i can do that here 00:59
i'm sorry, not the compiler. the debugger inserts the trap instruction at the next address and then replaces the instruction later 01:00
but parrot doesn't even have an eip-like register either
actually, i suppose i could just stop at the next line annotation but then how do i actually stop? there's no trap opcode 01:04
dukeleto soh_cah_toa: have you decided to use Winxed or NQP for your gsoc project? Or are you still researching that?
soh_cah_toa dukeleto: ugh...don't remind me ;) i'm still a little unsure. winxed seems nice but i want to spend the remaining time on gathering ideas not learning a new language 01:05
dukeleto soh_cah_toa: for that reason, I think NQP will suit you better. There will also be less work to do with NQP, in general, because NQP is included in Parrot core 01:06
soh_cah_toa: but the final decision is for you and your mentor
soh_cah_toa dukeleto: yeah, i wanted to talk to him but i think he just got back from lfnw 01:07
dukeleto soh_cah_toa: but I think spendig a few days doing similar things with both is still very useful for you
soh_cah_toa: oh yeah, i forgot that cotto++ was your mentor
soh_cah_toa dukeleto: yup 01:09
dukeleto soh_cah_toa: consider the bonding period a good time to learn everything you can about parrot, in general. Learning some Winxed will surely increase your understanding of Parrot
soh_cah_toa: i think you should write a very simple program, just a toy, really, and implement it in both NQP and Winxed, to see how they differ
soh_cah_toa: and record roughly how much time each took you
soh_cah_toa: for example, a program that computes the sum of the first 100 primes 01:10
soh_cah_toa dukeleto: agh! no math! lalalala can't hear you!
dukeleto soh_cah_toa: lulz
soh_cah_toa: ok. A program that computes the longest substring that is the same between two input strings 01:11
soh_cah_toa: better?
soh_cah_toa dukeleto: much
dukeleto soh_cah_toa: ok. Consider that your homework. This is definitely increase your knowledge of Parrot, NQP and Winxed, and give you a data point for whether to use NQP vs. Winxed 01:12
soh_cah_toa: it is a bucket full of win
s/This is/This will/
soh_cah_toa dukeleto: yeah, simple yet very helpful. i should've thought of that by now 01:13
01:13 bluescreen left
soh_cah_toa dukeleto: what do you think about what i said earlier? how can i actually "stop" the debugee process w/o a trap instruction? 01:14
dukeleto soh_cah_toa: which thing that you said earlier? I haven
haven't backlogged, that is.
soh_cah_toa: have you read the source of the current parrot_debugger ? 01:16
soh_cah_toa dukeleto: a little
yeah, i suppose i should go back to that
i've been caught up in what language to use
dukeleto soh_cah_toa: it is useful as a guide for how things are done now
soh_cah_toa: if you want me to decide for you, I can tell you NQP. But that would rob you of the knowledge acquired by coming to that answer by yourself. 01:17
soh_cah_toa dukeleto: yeah, i was leaning that way for quite a while 01:19
dukeleto soh_cah_toa: so you plan to use parrot-instrument still? 01:20
soh_cah_toa: i don't know if anybody has ever used that from Winxed
or am I mixing up my proposals?
soh_cah_toa dukeleto: oh yeah, i never considered how i'd do that w/ winxed 01:21
dukeleto soh_cah_toa: indeed. 01:22
soh_cah_toa: have you run the parrot-instrument tests ? Do they pass on master?
soh_cah_toa: not enough people use that, and it may have some bitrot 01:23
soh_cah_toa dukeleto: yeah whiteknight found some memory allocation issues
whiteknight parrot-instrument is broked 01:24
dukeleto where does it even live?
it is not in the parrot github repo
whiteknight and I am becoming less and less optimistic that I can fix it
dukeleto whiteknight: sadface mcgee
whiteknight github.com/Whiteknight/parrot-instrument.git
soh_cah_toa oh you've got to be kidding me!!! now nqp-rx won't install! t/nqp/46-charspec.t says "Dubious, test returned 1 (wstat 256, 0x100)"
whiteknight dukeleto: I definitely need more eyes to help debugging it
01:25 bluescreen joined
soh_cah_toa Parse errors: No plan found in TAP output 01:25
dukeleto soh_cah_toa: gist the output of prove -v t/nqp/46-charspec.t
whiteknight: how do you feel about putting parrot-instrument in the parrot github repo? 01:26
whiteknight dukeleto: I'm fine with it. It's in my profile now because I forked it from khairul
he wasn't using it, so I forked it
I'm happy moving it to parrot
or forking it to parrot
whatever we need to do to get more eyes on it 01:27
dukeleto whiteknight: yes, if you could put it into the parrot github, that would be awesome
whiteknight I'll fork it there tonight
dukeleto whiteknight: then I will add it to my jitterbug instance: new.leto.net:3000/
whiteknight++
whiteknight dukeleto: oh great. Jitterbug. That way we can see it fail every time it fails because it's broke
that's what we need, a constant reminder of its brokenness 01:28
dukeleto whiteknight: lulz. Yes.
whiteknight: I will attempt to help fix some bugs in it, but I am deep in M0 territory 01:29
whiteknight github.com/parrot/parrot-instrument
dukeleto: yeah, that's fine
nopaste "soh_cah_toa" at 192.168.1.3 pasted "nqp-rx test failure" (14 lines) at nopaste.snit.ch/43088 01:30
dukeleto whiteknight: but it is easy for me to smoke it from different machines, etc...
soh_cah_toa: looks like the shebang line of that test is wrong 01:31
whiteknight soh_cah_toa: do you have ICU installed?
that nqp test probably requires ICU
if not, don't worry about it. You don't need ICU for most usages
soh_cah_toa whiteknight: never heard of it. nqp-rx won't install w/ test failures though 01:32
whiteknight soh_cah_toa: ICU is the library Parrot uses for unicode. If you want to pass that test, you need to install it, reconfigure and rebuild parrot
Parrot already includes NQP. If you have parot, you have parrot-nqp 01:33
soh_cah_toa whiteknight: oh yeah 01:34
whiteknight: okay. actually it did install. whatever, now at least i can begin comparing languages
dukeleto whiteknight: parrot-instrument has no license file 01:35
whiteknight: you ok with adding the normal parrot license info and all that jazz?
whiteknight dukeleto: sure, whatever
dukeleto whiteknight: hokely dokely
01:37 ShaneC joined
dukeleto whiteknight: dalek should announce commits for parrot-instrument now 01:38
whiteknight w00t
dukeleto whiteknight: I added it to jitterbug, but I have to fix some issues on my server. parrot isn't in the PATH of jitterbug 01:39
01:39 ShaneC left
bacek_at_work ~~ 01:40
dukeleto bacek_at_work: greetings, meat bag 01:41
bacek_at_work dukeleto, aloha, bunch of spare parts
dukeleto bacek_at_work: glad to see you unstuck yourself in the jit prototype 01:42
whiteknight bacek++ 01:43
bacek_at_work dukeleto, just 2 weeks of thinking and playing with LLVM. It's kind of cheating on "type analyses". I'll probably write blogpost about it tonight/tomorrow
whiteknight bacek++
bacek_at_work whiteknight, aloha, magical blogging robot :) 01:44
whiteknight bacek: :) 01:45
dukeleto soh_cah_toa: you can tell cotto++ that I recommend you use NQP, but I still think playing around with some HLLs (like Winxed) will be generally helpful to your parrot knowledge 01:46
dukeleto goes for a run
soh_cah_toa: I still want to see the substring program, though :)
dukeleto really goes
whiteknight goes to dream about running
soh_cah_toa dukeleto: of course, see ya 01:47
01:47 whiteknight left
dalek rrot: c9d66d7 | petdance++ | / (2 files):
fixing arg annotations
02:22
02:34 mikehh left
dalek rrot: e0e46b5 | petdance++ | / (2 files):
fixing arg annotations
02:43
ttbot Parrot e0e46b52 i386-linux-thread-multi make error tt.taptinder.org/cmdinfo/348 02:45
02:49 woosley joined 03:02 bluescreen left 03:05 cotto joined, lucian left
dukeleto msg Andy looks like you broke master with e0e46b5 new.leto.net:3000/project/parrot 03:06
aloha OK. I'll deliver the message.
Andy agh
Hmm, someone's passing NULL instead of STRINGNULL 03:08
Found two places 03:09
dukeleto naughty nellies 03:10
Andy It's existing code 03:13
in Parrot
03:14 bubaflub left
Andy let's see how that goes 03:16
dalek rrot: 7c64447 | petdance++ | src/ (2 files):
pass STRINGNULL to Parrot_io_open_handle, not NULL
03:21 soh_cah_toa left
cotto ~~ 03:22
the system works 03:23
wootsauce
dukeleto cotto: good to hear 03:25
Andy yay looks fixed
dukeleto Andy++ # jitterbug smiles upon your code
Andy++ # fixing obscure bugs
Andy I haven't fixed anything.
I made a bug.
dukeleto Andy: fine. Andy-- 03:27
Andy :-P
I'm just hoping that eventually it will catch actual bugs.
dukeleto is just glad that jitterbug is being useful
at least to me, it is
Andy what's jitterbug
KaeseEs it's a dance, see; you if anyone should be familiar with it :) 03:28
03:32 simcop2387_ joined 03:33 simcop2387 left, simcop2387_ is now known as simcop2387 03:34 mikehh joined
dukeleto Andy: jitterbug is running at new.leto.net:3000/ 03:38
cotto dukeleto, are your slides online?
dukeleto Andy: it lives at github.com/franckcuny/jitterbug 03:39
cotto: yeps
Andy: github.com/leto/presentations/raw/...W/pres.pdf
that is a presentation I just gave yesterday at LinuxFestNW
Andy: it is basically a smoker with a pretty web interface (written in Dancer) 03:42
Andy: but it is unique because it wants to know how to run any languages tests. Jitterbug is language-agnostic, and dare I say, Acmeist.
03:44 hudnix left 03:48 hudnix joined 03:53 Andy left 03:58 particle1 joined, eternaleye_ joined, AzureSto_ left, dalek left, eternaleye left, varta left, arnsholt_ joined 03:59 Maddingu1 joined, dalek joined, perlite_ joined, AzureStone joined, perlite left, perlite_ is now known as perlite, varta_ joined, Maddingue left, arnsholt left, frodwith left, hudnix left 04:00 frodwith joined, hudnix joined, wagle left, wagle joined
dalek rrot: 0e40ecf | dukeleto++ | tools/dev/merge_pull_request.pl:
Make merge_pull_request.pl default to parrot.git, but allow other repos to be specified
04:01
rrot: 49d9591 | dukeleto++ | tools/dev/merge_pull_request.pl:
Remove some suboptimal error handling from merge_pull_request.pl

Previously, if a "git stash" failed, this script would still attempt to continue. Now, in true Klingon form, we die() instead of return() in failure.
04:01 particle left
cotto It is a good day to return. 04:27
dukeleto, ping 04:33
04:41 hudnix left 04:46 bubaflub joined 05:28 bubaflub left
dukeleto cotto: pong 05:39
dukeleto had such a good run he is icing his ankle
dalek rrot: cfc4afe | dukeleto++ | tools/dev/merge_pull_request.pl:
Add more docs to merge_pull_request and allow a branch name to be specified
05:51
cotto dukeleto, I think it makes sense in M0's bytecode format to put the constant for each segment before the size. Have you started on that part yet?
dukeleto, also, I see in the spec that I do use chunk names in the binary format. I forgot about that when we were talking earlier. 05:52
dalek rrot/m0-spec: 2abb2f4 | cotto++ | docs/pdds/draft/pdd32_m0.pod:
put the constant for each M0 segment type at the beginning of the segment
05:55
rrot/m0-spec: c40920f | cotto++ | docs/pdds/draft/pdd32_m0.pod:
add values for segment number constants
rrot/m0-spec: f8397af | cotto++ | docs/pdds/draft/pdd32_m0.pod:
make order of chunk dir consistent with the rest of the spec
rrot/m0-spec: 0ec0240 | cotto++ | docs/pdds/draft/pdd32_m0.pod:
be more explicit about the meaning of offsets in the M0 spec
rrot: 8c20c2a | dukeleto++ | tools/dev/ (43 files):
Update tools/dev README and +x executables
dukeleto cotto: do you want to update the hello.m0 ? I don't quite understand what you mean, but if you change hello.m0 to your liking, then I will understand 05:57
cotto dukeleto, deal 05:58
actually, I don't need to. The changes only have an effect on the binary representation. 05:59
dukeleto cotto: ah. well I need to generate the binary representation, so I need to know what you mean.
cotto Interestingly, I find myself implementing a very dumbed-down assembler to test the interp.
06:00 theory left
dukeleto cotto: so what you meant above was that the constant for each segment before the size, in the binary representation ? 06:00
cotto: do you have any binary bytecode crafted yet?
cotto yes
no
I'm writing some tests that'll generate very simple m0b files.
dukeleto cotto: i think i understand everything about parsing M0 source, but there are still some unknowns about generating the binary representation 06:01
cotto fire away
dukeleto cotto: can you change the spec to reflect what you mean by "put the constant for each segment before the size" ?
cotto: perhaps that will enlighten me
cotto dukeleto, I did 06:02
dukeleto, github.com/parrot/parrot/commit/2abb2f4f0f
dukeleto cotto: ah, i am blind, evidently 06:04
06:06 davidfetter left
dukeleto cotto: ok. once I wrap my head around opcode_t, I should be set 06:07
cotto That needs a bit of thought. Originally I thought that it'd be either 4 or 8 bytes, but I'm not sure if there's a good reason not to say it'll always be 4 bytes. 06:10
dalek rdinal: 5b7ce29 | (Kim, Daehyub)++ | Rakefile:
Add new rake tasks

  \t* tags:gen_option # Generate ctags option file
  \t* tags:vi # Generate tags for vim
06:11
rdinal: 2a2e98f | (Kim, Daehyub)++ | .gitignore:
Ignore tags and ctags_opt
rdinal: a845a97 | (Kim, Daehyub)++ | README:
convert to rdoc format and modify some examples
rdinal: f200ead | (Kim, Daehyub)++ | README (2 files):
convert to rdoc format and modify some examples
rdinal: c4f4a68 | (Kim, Daehyub)++ | /:
Merge branch 'master' of github.com:lateau/cardinal
rdinal: 7ac6cd1 | (Kim, Daehyub)++ | README.rdoc:
typo
rdinal: a2000f5 | (Kim, Daehyub)++ | README.rdoc:
typo
rdinal: 6b60c2c | (Daehyub Kim)++ | README.rdoc:
modify build section
rdinal: 9ce1198 | (Daehyub Kim)++ | Rakefile:
block in top error in ruby1.9

   * a block tried to return false in top level Rakefile:276
   * it can be running with 1.8 but it will be aborted with 1.9
   Fix:
   * modify 'return' to 'abort'
   * add some config error messages
   * some paths is in $location hash now for easy maintenance
cotto oh my
rdinal: 2737c76 | dukeleto++ | / (4 files):
Merge pull request #4 from lateau/master.

Add rake tasks and convert README to rdoc
dukeleto well, then.
cotto I guess we can call cardinal "not dead". 06:12
dukeleto cotto: indeed.
cotto: now I can get to M0 hacking :) 06:13
cotto woot 06:14
dukeleto, I'm realizing that the dependency between the offsets in the directory segment and those in the chunk directory make the binary format a little trickier to generate than it needs to be. Thoughts? 06:15
The information in the chunk directory is redundant. If it doesn't make someone's life easier, there's no reason for it to exist. 06:17
dukeleto cotto: i say we kill the redundancy, then.
cotto wfm
dukeleto cotto: also, i think we need an "m0 bytecode version" 06:18
cotto: even if it only changes 1, ever, it would be nice to know which M0 code is version 0 and which is version 1
cotto: for instance, if we add an op in a year or two
cotto: it would be nice to differentiate between the old M0 and the new M0
s/changes 1/changes once/ 06:19
cotto: thoughts?
cotto gone
dalek rrot/m0-spec: 0e933dc | cotto++ | docs/pdds/draft/pdd32_m0.pod:
nuke chunk directory segment from m0 spec
cotto dukeleto, I'm resistant to the idea, but only because it implies that we expect M0 to change. If we enforce that it'll only do so under unusual circumstances, it doesn't sound like a bad idea. 06:21
s/enforce/emphasize/
06:23 birdwindupbird joined
dukeleto cotto: sure. I don't *want* to add an op to M0 unless there is a really good reason. 06:23
cotto: but adding a version gives us insurance against it, and is seemingly free.
cotto: not insurance against it, but insurance for dealing with it properly
cotto dukeleto, you're quite correct. We don't want to be up a creek if adding an op becomes a really good idea. 06:24
dukeleto cotto: that is what I am thinking
cotto: adding a version takes up one byte and is essentially free. It could save us a lot of trouble in the future.
cotto: i assume that things like the GC or JIT may want an op in the future, for performance reasons. But we should only do that if the WIN is quite big. 06:25
cotto dukeleto, go for it!
sorear how certain are you that the current design of m0 is correct?
dukeleto cotto: hokey dokey
sorear: define correct
sorear is there any chance that when you try to actually use it, you'll discover a critical flaw that requires a change? 06:26
dukeleto sorear: can one say that the design of perl 6 is correct? Can you say that the design of any language is correct?
sorear: well, we are deep into a series of prototypes
cotto sorear, that's what we're starting to do now, for just that purpose
dukeleto sorear: each prototype solves more of that problem you speak of
sorear: our current prototype will actually parse M0 source code and generate binary bytecode 06:27
cotto well, continuing
dukeleto sorear: so if anything is cattywompus, we should know soon.
sorear: you ask a good question, I just like to get all meta and crap
cotto: i am thinking of adding something like ".version 0" before the first chunk, and that will be represented by a single byte, perhaps the initial byte, in the binary representation 06:29
cotto: sound reasonable?
cotto: i don't quite care where that info goes in the binary representation
cotto: is there a better place other than the initial byte? Seems reasonable. Then you can just parse the first byte and know which version you are dealing with 06:30
cotto dukeleto, I'd put it after the magic number, but that sounds fine
dukeleto cotto: sure, I was thinking about the magic number. Do we have one?
cotto I was just going to copy/tweak what we use for pbc 06:31
haven't done it yet
dalek rrot: 2d5cedf | dukeleto++ | tools/dev/merge_pull_request.pl:
Fix a braino in merge_pull_request.pl
06:32
cotto those brainographical errors are rough 06:33
06:34 mtk left
dukeleto yeah, that bug was subtle because it was syntactically correct, but I accidentally overwrote the wrong variable 06:35
brainographical is a great word
06:39 UltraDM joined
dukeleto UltraDM: howdy 06:40
06:40 mtk joined
dukeleto cotto: is there a bug in the "metadata segment" section of M0? should line 465 read : "line" is 23 06:42
cotto: instead of: "line" is 3
UltraDM hi dukeleto 06:43
cotto dukeleto, good catch 06:44
dukeleto++ 06:45
06:45 mj41 joined, woosley left
dukeleto UltraDM: welcome to #parrot. What can we help you with? 06:46
UltraDM dukeleto, thanks, nothing for the moment, I'm just lurking
dukeleto UltraDM: sounds good. Let me know if you want to unlurk :)
UltraDM sure, thanks :P 06:47
06:48 jsut_ joined
cotto We encourage unlurking. 06:48
06:52 jsut left
dalek rrot/m0-prototype: d29c900 | cotto++ | t/m0/m0bgen.t:
add a minimal m0b generation framework

The code generates superficially valid M0 bytecode, but doesn't contain any meaningful code. The purpose of this code is to have a reliable way of generating verifiable M0 bytecode without having to hand-hack binary files. Hopefully this will be a better alternative once it's working.
06:56
rrot: 5ca66d3 | fperrad++ | t/pmc/boolean.t:
[PMC] add test for is_equal for Boolean PMC
cotto fperrad++ 06:58
and dukeleto++ for agitating
06:58 fperrad joined
dalek rrot/m0-prototype: 5bba114 | cotto++ | t/m0/m0bgen.t:
add TODOs for some of the more gaping holes in m0b generation tests
07:02
cotto dukeleto, before I pass out, do you think it's a good idea to use 4-byte values on all platforms or should we do what pbc does and be more platform-specific? 07:03
dukeleto cotto: hmmm. hard to say. what are we trying to optimize for? 07:04
cotto dukeleto, not crippling performance on some platforms 07:05
dukeleto cotto: what exactly does PBC do to help that? 07:06
cotto I think opcode_t is different on x86 and x86_64
dukeleto cotto: i think we should think about this a bit more, and probably ask on parrot-dev for enlightening comments 07:07
cotto: i would need to sleep on it
dalek rrot/m0-spec: 7510a95 | dukeleto++ | docs/pdds/draft/pdd32_m0.pod:
Fix an error in the example about M0 metadata
07:08
cotto dukeleto, that's exactly what I'll do. 07:11
dukeleto, don't forget to add a version number
'night
07:11 SHODAN joined
dukeleto cotto: on it 07:12
dalek rrot/m0-prototype: 3ccfae3 | dukeleto++ | src/m0/m0_assembler.pl:
Add the current list of m0 opcode numbers to the DATA section of the assembler
07:13
cotto bam 07:16
dalek rrot/m0-spec: ef39d4b | dukeleto++ | docs/pdds/draft/pdd32_m0.pod:
Add a description of the M0 version number and add info to the implementation section
07:20
07:53 jrt4__ left
ingy dukeleto++ # Acmeist 08:12
08:14 ShaneC joined
dukeleto ingy: ;) 08:15
ingy dukeleto: does jitterbug crossever with testml at all? 08:17
*crossover 08:18
bacek ~~ 08:24
08:25 birdwindupbird left 08:57 UltraDM left 09:36 rhebus joined 09:41 contingencyplan left 10:05 Coke left, PacoLinux left, ambs joined, Coke joined 10:18 fperrad_ joined 10:22 fperrad left, fperrad_ is now known as fperrad
moritz trac doesn't know about version 3.3.0 10:25
could somebody please fix that? KTHXBYE 10:26
dalek TT #2104 created by moritz++: recent parrot changes broke rakudo 10:27
TT #2104: trac.parrot.org/parrot/ticket/2104
10:34 woosley joined 10:44 PacoLinux joined 11:24 fperrad_ joined 11:27 fperrad left, fperrad_ is now known as fperrad 11:36 UltraDM joined
moritz trac.parrot.org/parrot/ticket/2104 <-- does that mean that rakudo is using NULL instead of PMCNULL in its C source files? 11:52
11:57 Patterner left, Psyche^ joined, Psyche^ is now known as Patterner 11:58 lucian joined 12:01 lateau joined 12:21 lucian_ joined 12:26 lucian left 12:34 bubaflub joined 12:47 whiteknight joined
whiteknight good morning, #parrot 12:49
moritz good morning whiteknight 12:50
whiteknight: in case you haven't backlogged, trac.parrot.org/parrot/ticket/2104 describes the cause or trigger for the rakudo bugs 12:51
13:00 hudnix joined 13:01 bluescreen joined 13:10 ambs left 13:16 lateau left 13:20 rhebus left
whiteknight moritz: yes, I saw that 13:34
moritz: I need to research that commit to figure out why it would be so troublesome for Rakudo
I have to suspect that somewhere Rakudo is relying on NULL instead of PMCNULL/STRINGNULL 13:35
moritz I've found some instances of that 13:36
PerlJam whiteknight: could be. There are lots of places in Rakudo that use NULL
moritz not too many
PerlJam (only some of which deal with PMCs)
moritz oh 13:37
whiteknight in terms of PMCs, you should always be using the PMC_IS_NULL macro instead of "if (foo == NULL)"
moritz src/binder/bind.c has lots of
whiteknight again I'm not certain that's the problem, but I suspect it
moritz static STRING *ACCEPTS = NULL;
but you can't change that to STRINGNULL
whiteknight why not?
moritz because then the compiler complains that the initialization is not constant
whiteknight oh right. 13:38
13:38 woosley left
whiteknight bummer 13:38
I have no problem pulling that commit back out. We can work on it later 13:39
If anybody with a commit bit wants to pull it out into a branch for further testing, that would be great. I can't do it myself right now
moritz you mean revert in master, and re-apply in a branch? 13:43
whiteknight if that's not too hard, yes 13:46
moritz not hard at all
whiteknight We don't want that commit to disappear, we just want it somewhere besides master so we can study it more 13:47
13:47 lucian_ left
moritz pushed to pmcnull_annotations 13:47
13:48 benabik left
whiteknight awesome. moritz++ 13:48
moritz I'll comment on the ticket, and write a mail to the mailinglist 13:49
whiteknight thanks!
dalek rrot: 1149c70 | moritz++ | / (2 files):
Revert "now that PMCNULL is not NULL, we can update function annotations"

This reverts commit c1f77f7eb90041468c3b13f5b48ae2ca1d1c37a5. It broke several rakudo spectests, see TT #2104
13:51
moritz who can add version tags to trac? 3.3.0 is missing
13:55 lucian joined
whiteknight moritz: I'll look at it 14:11
moritz ++whiteknight
whiteknight under the milestone heading? 14:12
moritz ticket, 'Change Properties', the "Version:' field 14:13
whiteknight fixed 14:15
moritz whiteknight++
14:19 mtk0 joined, mtk left 14:33 bubaflub left 14:35 lucian_ joined 14:39 lucian left 14:41 Andy joined 14:59 benabik joined 15:01 bubaflub joined 15:07 contingencyplan joined, theory joined
moritz is there an easy way to create function in src/binder/bind.c in rakudo that's called on startup? 15:10
whiteknight what do you mean, like a C-level function? 15:11
moritz yes
whiteknight in your compiler driver, make an NCI wrapper PMC for it. then invoke that 15:12
that's the best I can think about
moritz abandons the idea
whiteknight alternative would be a custom dynop that calls that function 15:13
15:13 rhebus joined
whiteknight we have things like exit handlers, though they aren't used often and are probably broken 15:14
we don't have anything like startup handlers 15:15
although if you aren't afraid of C and don't mind writing your own fakecutable fronend, you could probably insert some custom logic to run after the interp is created but before code is executed
moritz is afraid of C 15:16
I was looking for a quick-ish fix for this STRINGNULL initialization thing
dukeleto ~~
startup handlers sound pleasant
moritz: why did the STRINGNULL commit need to be reverted? 15:17
whiteknight dukeleto: broke rakudo
moritz dukeleto: please read the ticket and the mail to the mailing list 15:18
and the commit message (it refers to the ticket)
dukeleto moritz: ah. I just woke up and haven't seen the trail of blood. 15:19
15:20 rohit_nsit08 joined
rohit_nsit08 hello #parrot 15:20
dukeleto rohit_nsit08: greetings
rohit_nsit08 dukeleto: hi
moritz swings his battle axe 15:21
hi rohit_nsit08
rohit_nsit08 coke_: ping
moritz: hi
15:24 UltraDM left
dukeleto gets on a train 15:30
plobsing_ moritz: parrot has a mechanism for running functions at loadtime of a dynamic library. if Parrot_lib_${libname}_load and/or Parrot_lib_${libname}_init exist, they will be executed. 15:31
15:32 rohit_nsit08 left, bluescreen left 15:41 rohit_nsit08 joined 15:49 lateau joined, lateau left, lateau joined 15:56 dod left 16:23 bubaflub left
cotto_work ~~ 16:24
dukeleto plobsing_: is that documented anywhere? 16:28
16:36 mj41 left 16:37 benabik left 16:38 dodathome joined
coke_ . 16:46
16:47 rohit_nsit08 left 16:48 davidfetter joined
coke_ msg rohit_nsit08 sorry I missed you - if you can't find me on IRC, ping me on email. (I can give you my googlevoice # also for texts.) 16:50
aloha OK. I'll deliver the message.
16:51 lucian joined, dmalcolm joined 16:53 lateau left 16:54 lucian_ left
coke_ #ifdef HAVE_USR_INCLUDE_MALLOC_H 17:02
# include "/usr/include/malloc.h"
#else
from src/gc/malloc.c - that should be include <>, not include "", methinks.
whiteknight no, <> is for standard library only 17:05
that looks like a mechanism to allow a custom malloc replacement
coke_ how is "/usr/include" not stdlib?
whiteknight is that where stdlib includes are on all unixy systems? 17:06
PerlJam all the unixy systems I've ever used.
17:07 rohit_nsit08 joined
PerlJam Though I suppose there are some that look in /opt/include or something 17:07
coke_ one wonders why we're putting the path in at all there, and not just getting whatever the default malloc.h is. In any case, it came up because checkdepend.t is trying to find that header so it can scan it for deps.
whiteknight parrot used to ship with a custom version of malloc in src/gc
coke_ (and it's failing)
whiteknight I'm certain that line is somehow related to that
sorear whiteknight: bzzzt, fixincludes 17:08
whiteknight sorear: ?
sorear sometimes the correct stdlib headers are in /usr/local/lib/gcc/4.x.y/include
17:08 benabik joined
NotFound ~~ 17:09
sorear generally when /usr/include/whatever uses gcc-incompatible syntax on "real" Unix systems with a vendor-specific cc
17:22 lucian left 17:23 bubaflub joined
dalek p/ctmo: 5e5c46f | jonathan++ | src/stage0/ (6 files):
Update bootstrap with latest changes.
17:34
p/ctmo: d2f7759 | jonathan++ | src/pmc/dispatchersub.pmc:
Ensure DispatcherSub is properly initialized.
17:39 davidfetter left
cotto_work www.fructoselang.org/ - compile a subset of Ruby to PHP 17:40
17:44 rohit_nsit08 left, rohit_nsit08 joined 17:46 ShaneC left 17:54 rohit_nsit08 left 18:00 benabik left 18:04 rohit_nsit08 joined 18:05 benabik joined
dalek nxed: r967 | NotFound++ | trunk/winxedst1.winxed:
fix a problem when using multi return syntax and function arguments, Issue 23,
18:11
whiteknight NotFound++
NotFound whiteknight: Can you check the .* operator? I don't have any relevant example at hand. 18:12
whiteknight NotFound: I can when I get home. 18:13
NotFound: yesterday soh_cah_toa was having some troubles with "make install" for Winxed 18:19
the command was failing for him, I don't remember how
cotto_work That's no good. 18:20
NotFound It works for me right now, 18:21
18:22 ShaneC joined
NotFound Out of mem? Amazing. 18:23
18:28 mj41 joined 18:34 hercynium joined 18:48 Maddingu1 is now known as Maddingue
whiteknight I'm not sure I understand why people still work on GNU Hurd 18:49
benabik whiteknight: AFAICT, people still _argue_ about HURD. 18:50
I'm not sure any work has been done on it in a long time.
coke_ whiteknight: that is a hilarious statement coming from someone on the parrot team. just fyi. 18:53
whiteknight I wouldn't consider the TODO list for parrot quite so monumental, and I wouldn't call our workforce quite so small in comparison to it 18:54
benabik: apparently a bounty system was set up for Hurd, so people can donate money to facilitate development
benabik: I have to assume there are developers who intend to receive money
PerlJam I'll take any money you want to throw my way ;) 18:55
whiteknight and it looks like GNU Hurd is participating in GSoC
benabik whiteknight: I guess they abandoned the L4/Cyotos ideas? When last I checked, they had gotten caught up in arguing about security and what kernel was better.
I was fascinated by Hurd for a while... Then I found MINIX. Then I decided I don't have enough free time to make either really worth while. 18:56
whiteknight benabik: it looks to me like one guy is talking about moving it to viengoos, and the rest of people are still working on Mach 18:57
18:59 Coke left
PerlJam coke_: Are you saying that parrot is the new hurd? 18:59
18:59 Coke joined 19:01 ShaneC left 19:05 Coke__ joined, Coke left
whiteknight Hurd is an interesting concept but it doesn't really do much differently from linux, and has no hopes of ever catching up to the state of linux 19:07
And I know RMS would love nothing more than to bury linux and dance on the grave, but that hardly seems like motivation
19:11 TiMBuS left 19:12 davidfetter joined
coke_ PerlJam: I was referring more to number of years under development without widespread adoption. 19:16
PerlJam coke_: as long as you don't think we're doomed to repeat history or something. 19:19
coke_ I refuse to speculate the exact nature of our doom. 19:20
cotto_work We have a number of options to choose from. 19:21
cotto_work goes out for noms
dukeleto who groks set_hll_global ? 19:29
Rakudo uses it to set their $*PROGRAM_NAME (which is equivalent to $0 in Perl 5) 19:30
atrodo whiteknight> hurd is a nice concept, and if someone sat down and really wrote out a well performing base, it could probably catch on some more
But, it appears no one cares about it enough to do anything 19:31
tadzik would you say that about Perl 6 too?
you actually could: a nice concept, but no one really wrote a well performing base 19:32
dukeleto seemingly, set_hll_global only creates read-only values
which is suboptimal
so I guess what I am asking is: how do I create writable global HLL variables?
19:35 TiMBuS joined, bubaflub left 19:37 benabik left
dukeleto feels a little dirty every time he reads the source of the Namespace PMC 19:42
seems like the set_hll_global finally boils down to set_pmc_keyed_str on the Namespace PMC, where everything gets cattywompus
whiteknight yeah, we really need to "fix" that with fire 19:43
NameSpace is a travesty 19:44
dukeleto a travesty of travesties 19:47
whiteknight it really is as bad as can be. I can't think of a worse way to store that kind of information 19:49
I don't want to put in a deprecation notice for it until we have a superior design lined up. 19:51
coke_ \\o/
whiteknight And I suspect it's not just a matter of superior design, but we might actually have to change the PIR interface, which I'm sure people will not be happy about
jnthn__ whiteknight: new nqp has stopped using NameSpace. Rakudo will very soon. 19:52
coke_ dukeleto: do you have a small PIR file that demonstrates the readonly problem?
jnthn__: are you rolling your own namespace?
jnthn__ coke_: "namespace"
whiteknight jnthn__: I don't know if that's one fewer thing to worry about, or whether it's depressing that our biggest user has been driven away from it
jnthn__ The long story short is that Perl 6 doesn't really have a concept of global packages. 19:53
Every time you start compiling a new compilation unit it needs a completely fresh view
Anyway, we don't actually need namespaces per se in Perl 6. The stash just hangs off the package. 19:54
where by package I mean type object
The other issue is that Perl 6 wants to have lexical packages
19:55 eternaleye_ is now known as eternaleye
jnthn__ It wasn't so much that Parrot's NameSpace PMC drove me away. It was more that trying to do the semantics Perl 6 actually wants using it woulda been more code and hassle than just hanging a hash off the type object. 19:55
And then things like lexical packages just Magically Work because the type object is installed as a lexical rather than in some other package. 19:56
Anyway, I didn't mean it as criticism of Parrot, I meant it in the "one less thing to worry about". 19:57
whiteknight jnthn__: I *do* mean it as a criticism of Parrot. Our NameSpace PMCs are hideous 19:58
jnthn__ whiteknight: I did end up inside there some times before, and yes, there's some nastiness there for sure.
19:59 rohit_nsit08 left
whiteknight they're another component which has never been designed. They've been tweaked and added to organically over the years, and the result is quite discouraging 19:59
jnthn__ whiteknight: But that wasn't why I moved away from using it. If it was a case of "just needs some fixing up" I would have been inclined to try and do so. 20:00
whiteknight oaky
so that's good to know that it's not actively driving away users
jnthn__ I suspect the model Parrot uses for namespaces is probably fine for many language's needs. 20:01
Even if the implementation is crufty.
whiteknight Even the model needs major fixing. It's too magical
jnthn__ I think the way that classes and namespaces mix in Parrot just needs to die, but I"ve said that many times before. :)
whiteknight jnthn__: On a related note, I wanted to talk to you about 6model. 20:02
jnthn__ whiteknight: OK :)
Any particular aspect of it?
whiteknight The task that was next up on my todo list has been shelved, so the next big thing in my sights is to get 6model into Parrot
jnthn__ Aha
whiteknight I was thinking I had a few months before that, but the schedule has changed and I don't have anything else ready for immediate coding 20:03
jnthn__: So is now a good time to begin that work?
I wouldn't want to be chasing it around if 6model were still in a big state of flux 20:04
jnthn__ It's slushy, more so in some places than others. 20:05
Some things haven't changed in months.
Some things are still kinda missing or need tweaking.
I don't expect the underlying design to change. 20:06
20:06 jrt4__ joined
jnthn__ But I know that the Rakudo-on-6model effort that I'm going to be starting on this week will drive some changes. 20:06
I expect that to for the large part be extension though.
whiteknight: I think now is probably fine to start planning out the work and working out the various stages that it would go through. 20:08
whiteknight jnthn__: okay, so Rakudo is moving to 6model starting this week?
jnthn__ The *hard* transition will be how PMCs and 6model go together. At the moment 6model is encapsulated inside some PMCs. But really it wants to be more primitive than them.
whiteknight: I'm starting the work on moving it to 6model this week, yes.
I'm just about done in NQP. 20:09
whiteknight jnthn__: okay, I'm going to start digging into the code and putting a real plan together
jnthn__ whiteknight: OK, sounds good.
whiteknight I won't start actual coding for some time
jnthn__ whiteknight: First is probably to understand what 6model is/does and, more importantly, doesn't do.
whiteknight: The core is *really* minimal. 20:10
whiteknight yeah
I suspect we are going to need some major deprecation boundaries, especially for bits of the object model that we do not want to cargo cult into the new system 20:11
jnthn__ I suspect you're going to want to write some "default" meta-objects for Parrot users too.
whiteknight I'm planning to get 6model in to Parrot in parallel with our current mop. That implementation likely will disallow inheritance from built-in PMC types until we can get that mechanism sorted out correctly 20:12
jnthn__: yes. I'm hoping to do some of that work in parallel with the JS and Python3 compiler projects for GSoC
jnthn__ OK
Because in the core 6model doesn't know what, e.g. a class is. :)
whiteknight right
jnthn__ I stand by my feeling that languages really should expect to write their own meta-objects at some point, out of the 6model building blocks. Just like we provide them a bunch of building blocks to do their grammar. 20:13
whiteknight in the general case that's not a bad idea, but Parrot can offer at least a handful of reasonable defaults
jnthn__ Right. :)
For its own internal stuff too.
whiteknight are meta-classes wrapped up in PMCs?
if so, that provides a very natural way to subclass and provide a custom implementation 20:14
As much as possible I like to insulate our users from C.
We do the C so our users shouldn't have to :)
jnthn__ Yes, meta-classes are, but only because they're objects and objects are.
whiteknight okay 20:15
jnthn__ There's no "meta-class PMC"
whiteknight okay
jnthn__ There's just SixModelObject. That's the only thing that should ever be held in userspace
whiteknight one other question I want to ask you is about code synchronization. I think it would be a big shame if our implementation diverged too far from the Rakudo/NQP implementation of it 20:16
jnthn__ There are STable and REPR PMCs but they're infrastructural/internals.
whiteknight but I'm not sure what kind of reasonable mechanism we could use to keep them together
coke_ same thing we do today with nqp-rx^W2^W ? 20:17
jnthn__ whiteknight: I'd hope that the end result of this is that all that's in the NQP and Rakudo repo are meta-objects.
whiteknight: If you want the 6model core in Parrot, then there should be no need for two implementations. 20:18
whiteknight jnthn__: We definitely do want the core of it in Parrot, yes. But don't you need to keep something separate to support your other VM targets?
I don't want to pull the rug out from under you
20:19 rohit_nsit08 joined
whiteknight jnthn__: and that raises another question, if we are going to move it into Parrot and you are going to be using our version directly from NQP/Rakudo, are you going to want to be personally involved in the migration work? 20:19
I would hate to be making design decisions that negatively impact your needs 20:20
jnthn__ whiteknight: Nothing in the core implementation of 6model on Parrot is related to VM interop.
whiteknight okay 20:21
dukeleto coke_: it is a bug in Rakudo : rt.perl.org/rt3/Public/Bug/Display.html?id=89704 20:22
jnthn__ The interop comes because 6model always has a concept of "create a type object" or "make an instance" or "find a method" on whatever VM it runs on.
dukeleto coke_: seemingly when Rakudo binds to a global with ":="
jnthn__ But that's just a "compiler switch"
e.g. the "abstraction layer" vanishes in the process of code generation. 20:23
whiteknight: And yes, I'd like to be involved.
whiteknight jnthn__: What I'm going to do now is read code like a madman, and start coming up with a detailed plan of attack. I'll run it past you before I start doing anything
jnthn__ whiteknight: I'm happy to answer questions, of course. And to explain things.
whiteknight: *The* headache file is knowhow_bootstrapper.c. 20:24
whiteknight We're obviously going to need at least one deprecation boundary before 6model becomes the default. Maybe more than one
jnthn__ *The* helpful file is sixmodelobject.h. :)
whiteknight ok, I'll keep that all in mind
jnthn__ Oh, at the moemnt NQP's multi-dispatcher is tied up in the 6model core. Ignore it. 20:25
whiteknight jnthn__: okay
jnthn__ (e.g. multi_dispatch.c is not really 6model core...)
whiteknight gotcha 20:26
we can replace whatever we don't want
jnthn__ I've been working on starting to distill out what is 6model core and what is not.
whiteknight and make it pluggable
jnthn__ But am only part way there.
whiteknight Eventually I would like the MMD engine to be a pluggable PMC object, similar to how the NCI engine is
and if we can have them selected by HLL namespace, all the better
but that's a ways off
dukeleto coke_: i am actually not exactly where the bug is, but I am leaning towards the glue between parrot and rakudo, not parrot itself 20:27
jnthn__ Well, multi-dispatch is another area where I wonder if Parrot can actually provide a sane default that's useful for any language.
The fact that we have an invoke v-table and anybody can put any candidate selection logic they want in place is already very helpful.
whiteknight jnthn__: we do alright for now. But that's my point. MMD should be easy to plug in a replacement for
we do have MultiSub, but it's a bit of a pain to use and subclass 20:28
20:28 dodathome left
dukeleto jnthn__: i think we just hope to provide a default that gets people 80% of the way there, and then they can tweak 20:28
whiteknight because it's not easy to call the underlying API functions from a subclass written on top of Parrot
anyway, I have to run catch a train. I'll be back later tonight
jnthn__ nice journey o/
dukeleto: If "tweak" means "replace the candidate sorting algorithm", sure. :) 20:29
dukeleto jnthn__: yes :)
jnthn__ dukeleto: But that's the bulk of what MultiSub would do. :)
20:29 whiteknight left 20:37 Andy left
cotto_work sees whiteknight and jnthn talking 20:40
backscrolling time
20:46 rurban joined 20:53 SHODAN left
coke_ as a potential PVM user, tcl (out of the box) doesn't care about objects, but does wish namespaces were better. 20:56
(just as another data point) 20:57
21:03 cogno joined 21:12 rhebus left 21:13 cogno left, fperrad left 21:20 rohit_nsit08 left 21:22 rohit_nsit08 joined 21:24 ambs joined 21:32 ambs left
dalek nxed: r968 | NotFound++ | trunk/pir/winxed_compiler.pir:
update installable compiler
21:44
rrot/jit_prototype: 287cc0f | bacek++ | compilers/opsc/src/Ops/Compiler/Structs.pm:
Add more struct definitions
21:47
rrot/jit_prototype: 271ece1 | bacek++ | compilers/opsc/src/Ops/Compiler/Preprocessor.pm:
Add VTABLE_invoke preprocessing
rrot/jit_prototype: 422545b | bacek++ | compilers/opsc/src/Ops/Compiler/Preprocessor.pm:
Refactor generating of VTABLE macros. Add PMC_data.
21:49 jsut joined 21:50 mj41 left 21:51 Themeruta joined 21:52 NotFound left
cotto_work the robot is back online 21:52
bacek++
21:54 jsut_ left
dalek rrot/jit_prototype: 44dca61 | bacek++ | t/jit/jitted.ops:
Add proper preamble to jitted.ops so LLVM will have a chance to generate more stuff used in jitter.
21:58
rrot/jit_prototype: 749b11c | bacek++ | runtime/parrot/library/LLVM/Builder.pm:
[llvm] Change Builder.call to accept Value instead of Function. This is required for generating pointer-to-function calls.
rrot/jit_prototype: f44ba3e | bacek++ | runtime/parrot/library/LLVM/Type.pm:
[llvm] Init struct.PMC and struct.STRING from LLVM bitcode.
rrot/jit_prototype: accea3a | bacek++ | compilers/opsc/src/Ops/Compiler/Preprocessor.pm:
Remove debug _dumper
rrot/jit_prototype: d57dac0 | bacek++ | runtime/parrot/library/LLVM/Constant.pm:
[llvm] Add Constant.int_to_ptr
rrot/jit_prototype: a805ebc | bacek++ | compilers/opsc/src/Ops/JIT.pm:
Add NULL and NEED_CONTINUATION definisions
rrot/jit_prototype: 66dd433 | bacek++ | compilers/opsc/src/Ops/JIT.pm:
Fix debug output
rrot/jit_prototype: aea9fbe | bacek++ | compilers/opsc/src/Ops/JIT.pm:
Refactor generating of GEP to share common logic with just variable
rrot/jit_prototype: 6716d63 | bacek++ | compilers/opsc/src/Ops/JIT.pm:
Handle 'unnamed' function calls. E.g. 'foo->bar()' is parsed as (call (keyed_arrow 'foo 'bar) ())
rrot/jit_prototype: 0e82ef7 | bacek++ | compilers/opsc/src/Ops/JIT.pm:
More checks and debug in handling pirop<=>
nxed: r969 | NotFound++ | trunk/winxedst1.winxed:
a little cleaning of CallExpr.emit
21:59
22:04 hercynium left 22:36 lucian joined 22:46 davidfetter left 22:47 whiteknight joined
whiteknight Good evening, #parrot 22:51
interesting PHP blog post, for anybody interested: blargh.tommymontgomery.com/2010/07/php-is-dead/
"inflamatory" might be a better word
22:56 jsut_ joined
lucian whiteknight: well, he's right 22:59
sadly, the php core team can't even write a parser
i'm not saying i can, but they really screwed up
whiteknight PHP is an area where I sincerely believe Parrot could do a lot of good 23:01
I mean, we already have integrated unicode support that costs nothing to utilize
that's a huge benefit
23:01 jsut left
whiteknight We offer a much more flexible subroutine dispatch mechanism including invokable objects, callbacks, continuations and coroutines 23:02
lucian and it'd be hard to write a parser that fails as much as PHP does at expressions
whiteknight true
lucian but i don't think PHP on parrot will ever be popular
PHP survives on deep, bug-for-bug compatibility
dalek p/ctmo: 76e0641 | jonathan++ | src/HLL/SerializationContextBuilder.pm:
Start working towards fixup of roles. Gets us back the first two tests, though methods in roles are still totally broken.
p/ctmo: c69b201 | jonathan++ | src/ (2 files):
Fix issues relating to type parametricism of roles and compile time meta-object handling.
bacek_at_work ~~ 23:03
whiteknight lucian: PHP as it is survives that way. If people want to start using something like PHP with more features and (eventually) fewer bugs, Parrot can deliver that 23:04
a fork of PHP that had similar syntax, more features, and a standard library that somebody accidentally put forethought into, we can provide that
without a huge team toiling for years
lucian but does anyone honestly want that?
there are tons of clearly better languages, many of them very similar 23:05
whiteknight lucian: A person who knows PHP syntax better than any other language, but wants other things improved might
lucian: if we build it, they might come
Themeruta I think the better way is to let all languages die, and people switch to winxed ;)
23:06 Themeruta is now known as NotFound
whiteknight Themeruta: :) 23:06
cotto_work looks up from $dayjob to see something relevant.
lucian whiteknight: meh, i think that market is extremely small
whiteknight lucian: I'm sure somebody said the same thing about Ruby. Who needs another general purpose dynamic language when we already have several to choose from 23:07
lucian i don't think you're comparing comparables
whiteknight maybe not
NotFound I'm starting to see a pattern: most scipting languages are born without objects because "we don't need objects for simple programs" and later they add OO in convoluted ways. 23:08
cotto_work I much prefer adding it in convoluted ways from the start.
or even in straightforward ways, but you can't always win
NotFound cotto_work: yeah, that's what I do.
lucian it's much better to have some experience with languages, and be able to decide what might be a better more complex 23:09
s/a//
but that's hard
23:10 davidfetter joined
dalek p/ctmo: df3640c | jonathan++ | src/ (2 files):
Do fixup with the vastly less evil assign rather than copy. Just happens to fix half of the broken multi-sub tests.
23:10
NotFound The "who needs another X" is never a compelling argument. 23:11
lucian NotFound: i think it depends highly on the probable answer 23:12
NotFound A few years ago I wrote "another" free Z80 assembler just because all the other sucked.
lucian then the probable answer was a good argument for doing it 23:13
NotFound lucian: the answer usually is "me".
lucian that's a good answer
cotto_work NotFound++ 23:14
NotFound And later, people that asked the question switched to mine.
lucian my point is that myself, i might find some use in a PHP4 & 5 on parrot, bug-for-bug compatible with zend
but forking PHP as whiteknight suggested? not really 23:15
cotto_work That compatibility will be a bit^H^H^Hproblem though. PHP's test suite is weak.
lucian PHP 6? not really either
cotto_work: indeed. it's extremely unlikely that i'd try to do it :)
NotFound I can't answer that question, I've never seen the reason of php popularity.
cotto_work "We've got our alternative PHP 5.3 implementation passing all core tests. Now for the other 90% of the job." 23:16
Tene People who are really invested in bug-for-bug compatibility wouldn't be the target market for an alternative implementation usually, I'd expect. 23:17
whiteknight lucian: okay, better example for you: would you believe there is a large and growing market for coffeescript, which is basically JavaScript with some improved properties?
lucian Tene: are there others in the PHP world?
whiteknight: yes, because i've seen it 23:18
whiteknight lucian: my point exactly. If we tell people that we can do PHP, but better, there might just be a market for that
lucian Tene: they'll certainly want extensions, which'll be hard too. but that's a more general thing
whiteknight and if not, we're hardly in a worse situation than we are no
now
lucian whiteknight: so you want to fork PHP. just a new language that's similar
seeing PHP6 (and even 5) uptake, i'd be very skeptical of its success 23:19
cotto_work The problem with forking PHP is that you're forking PHP.
NotFound The marke will be all people that uses php as they only language (maybe with a little javascript).
cotto_work It's a one-edged sword.
lucian NotFound: those same people aren't even bothering with php5/6 23:20
whiteknight maybe PHP5 uptake is so low because they aren't fixing any of the warts, and are adding necessary new features at a snail's pace
Tene If you could integrate your existing PHP code base with other languages, however... 23:21
NotFound Looks like these days is easier to start a new language from scratch than to make a significant evolution of a existing one.
Tene That would be very appealing to people who are looking to migrate away from PHP
cotto_work I have to wonder what that guy's thinking when he says that PHP has the best function library of any language. The only axes on which it'd be the best would be straightforwardness and ease of use. 23:22
Tene Fixing a few bugs from incompatibility with original PHP could be far less work than porting an entire codebase.
NotFound lucian: yes, but they may enjoy using other flavour of php for non web server usages.
lucian Tene: but then you'd need compatibility again
cotto_work: i'd contest those as well. it's so incredibly inconsistent, it's not easy to use at all
also broken
Tene Additionally, some companies have extensive test suites of their own. 23:23
lucian Tene: perhaps. this would depend on general uptake of alternative implementations
Tene The company I work for wouldn't have much trouble migrating to an alternative PHP implementation, due to their extensive testing infrastructure.
lucian there are a handful, i don't really know much about them
plobsing_ how much bug-for-bug compat is needed to run wordpress? a lightly massaged wordpress? 23:24
23:24 plobsing_ is now known as plobsing
Tene Additionally, bugs can be fixed as they're discovered. 23:24
lucian shrugs
NotFound It will be funny to file bugs for not having bugs. 23:26
whiteknight I've never understood the "bugs are good and must be maintained" mentality
cotto_work NotFound++
lucian NotFound: you should see wine's bug tracker
whiteknight the perl5 world is absolutely terrible with that sentiment
lucian whiteknight: they all are. but it happens
whiteknight "don't fix anything! Don't take away our precious bugs!"
NotFound whiteknight: is easy, you just need to deny they are bugs. 23:27
lucian wine is a very good example
and windows in general
cotto_work whiteknight: I know. Then they get all mad when you add more.
lucian it's quite clear why the bug are important
whiteknight: important pieces of software often get abandoned
but i don't have to tell you this 23:28
whiteknight lucian: wine is hardly comparable, wine is supposed to be providing windows on linux. You only do that if you have the same behavior
lucian exactly. bug-for-bug
NotFound Given than in win32 there are functions that return BOOL and its documented return values are 0, 1, -1 and -2, is hard to tell what's a bug and what not.
whiteknight Wine has to always be what windows is. It's madness for new versions of PHP to be forced into preserving bugs and misfeaures of older versions 23:29
lucian whiteknight: it's madness for new versions of windows ...
whiteknight you make new versions precisely to remove misfeatures and add new features
lucian: we don't have the ability nor the desire to fork windows
lucian even in the python world where people really like cleanliness, there was a little resistance to py3
whiteknight lucian: I suppose that 2-5 developers could make a workable PHP compiler in two weeks or less with Parot 23:30
NotFound lucian: Little?
whiteknight lucian: with new features too (although without a complete standard library)
lucian NotFound: yeah, most reasonable people were fine with it
23:30 dmalcolm left
NotFound lucian: Reasonable people are usually a small fraction of the user base of anything. 23:30
lucian NotFound: i can proudly say that is not the case with python, mostly 23:31
visiting #python is enlightening. unreasonableness gets hammered out of people
NotFound lucian: I don't know much about the state of pyton but I've seen rants about slow adoption rate. 23:32
lucian whiteknight: if you could get wordpress/facebook on that, it might be interesting
whiteknight lucian: facebook uses their own custom compilers anyway, so that's hardly a worthy target. I bet we could support wordpress in a reasonable amount of time 23:33
lucian NotFound: yes, there were some. and it is somewhat slow, it's an incompatible language. but not too bad
whiteknight the hardest part, I'm sure, is going to be duplicating the necessary standard library and the DB interfaces
lucian whiteknight: facebook still use zend for much of their code. their compiler is for a small subset of php
but wordpress.org (w/e the company is called) might be interested 23:34
cotto_work lucian: last I heard they used hiphop for the majority (if not all) of their php code.
23:34 bubaflub joined
whiteknight lucian: yeah, I think facebook uses hiphop for almost everything 23:34
lucian cotto_work: they do? oh well
whiteknight we need to do a lot of work on our performance. PHP does have decent performance, for all it's syntactic and semantic problems 23:35
lucian wordpress is sufficiently clean, well tested and centralised for something like this to work
depends how you define decent, i guess
if you consider CPython to have "decent" performance, sure
davidfetter would you consider it an indecent performance? 23:38
davidfetter pictures scenes from "the producers" 23:39
lucian :)
it's sufficient for most purposes, but embarrassing 23:40
whiteknight I want to start putting together a team for integrating 6model into Parrot 23:42
It's going to be a collection of tasks, some of which are going to be very large 23:50
cotto_work: you and I are going to have to powwow about that topic sometime soon. If we're going to replace the Parrot MOP, we should take the time to correct some of the bad decisions of the current design 23:51
cotto_work whiteknight: sure. Unfortunately it seems that you're usually offline by the time I get home. 23:52
whiteknight cotto_work: yeah, I'm a total jerk like that 23:53
cotto_work: you around at all this weekend?
Tene whiteknight: I'd love to help with that.
whiteknight Tene: I was hoping you would say that :)
cotto_work whiteknight: Sunday doesn't look bad.
whiteknight cotto_work: okay, I'll do my best to be online most of Sunday. Mosey in whenever you have time 23:54
Tene whiteknight: I say a lot of things. Historically, they haven't been well-correlated with actual work.
cotto_work whiteknight: deal
whiteknight I'll use the remainder of the week to start fleshing out a basic plan
cotto_work whiteknight: ok 23:55
whiteknight: alternatively I could do a weekday morning pretty easily. 23:58
*alternately
whiteknight those are harder for me, but I usually do sign online as soon as I get to work. I get in some mornings around 8AM EST
Tene I'm pretty sure I was somehow mixing levels and had skewed abstractions in my ruby 6model work, is why I was seeing problems there. I need to actually write up a design separately, and then come back to it. 23:59