Summer of Perl | 6.2.12 released! | paste: sial.org/pbot/perl6 | pugs.blogs.com | pugscode.org | pugs.kwiki.org
Set by ingy on 4 July 2006.
ivanfrey unobe: thanks, I'll be talking to you later. 00:00
unobe ivanfrey: from Pugs::Doc::Hack: svn co svn.openfoundry.org/pugs.
lambdabot Title: "Revision 11252: /"
00:01 ZenoP joined
unobe ivanfrey: i'm gonna go eat too. :) 00:01
kolibrie audreyt: purging my old /usr/local copy seems to have fixed the fps error. Thank you. 00:03
justatheory audreyt: Gotta a SVN::Notify::Config question for you when you have a few.
audreyt kolibrie: yay. 00:04
justatheory: would you like comaint on that?
ivanfrey unobe: oh! there is a svn plugin for the Finder.
justatheory audreyt: No, but I think that John Peacock would. 00:05
He says he emailed you.
And there was a change in SVN::Notify 2.60 that broke SVN::Notify::Config.
kolibrie audreyt: um, oops, now I get this error: src/DrIFT/YAML.hs:1:0:ghc-6.4.1: unknown package:fps-0.7
audreyt kolibrie: rm -rf dist/build
kolibrie is getting used to rm-ing things tonight 00:06
audreyt I don't see an email, hm
justatheory: can you tell jpeacock that he is now comaint and please carry on?
justatheory audreyt: Does he know where?
audreyt I'm giving away CPAN modules that I don't use myself anymore :)
justatheory Oh, no svn, just pause? 00:07
sure
audreyt yeah
justatheory ok
audreyt thx
justatheory np
audreyt putter: still @home?
kolibrie audreyt: same error 00:08
kolibrie must go out and paint while it is still light
I'll tackle this again later, or tomorrow 00:09
audreyt k 00:10
vsoni audreyt: could there be two threads running IMCC in Parrot 00:26
meppl gute nacht 00:27
vsoni seen audreyt 00:32
jabbot vsoni: audreyt was seen 22 minutes 14 seconds ago
00:33 lampus_ is now known as lampus 00:48 marksto1 joined 00:49 marksto1 is now known as markstos_ 00:50 hikozaemon joined
svnbot6 r11253 | audreyt++ | * mmd-draft.txt - introduce the idea of punnitude and seriousness. 00:57
01:02 nxu7 joined
audreyt (those ideas was going away the second putter touches the keyboard) 01:06
ivanfrey how do I come back from away 02:03
lumi I think /away 02:04
02:16 bpphillips joined 02:21 bpphillips left
ivanfrey lumi: so it's a toggle. 02:32
02:33 stephanepayrard_ joined 02:45 ruoso joined 02:48 ivanfrey joined 03:07 b00t joined
gaal hello from nyc! 03:40
svnbot6 r11254 | gaal++ | * WIP Internals: more convention updates 03:42
audreyt gaal: hi! 03:46
03:47 putter joined
putter hi gaal! :) 03:48
what time is your flight?
gaal hello :) my flight isn't till the 9th 03:49
putter ahhhhh.
gaal Amtrak++ # 110 volt in coach 03:50
svnbot6 r11255 | gaal++ | * oops, r11254 mistakenly checked in a bogus "fix" into a file
r11255 | gaal++ | that shouldn't have been touched.
audreyt putter: I've drawn the stack on whiteboard tonight as pugs.blogs.com/photos/visiolization...astack.png 03:56
gaal why is it called visiolization when you are graffling with the ideas? 03:57
oh sorry, I forgot it was truce
ivanfrey anyone here use the scplugin in mac os x 04:04
? 04:05
putter audreyt: I might rename the layers Syntax/Semantics/Infrastructure/Augmentation 04:06
04:07 Yaakov joined
putter (syntax and augmentation are unchanged. i think of idioms as meaning something different. and that layer is where most p6 semantics are. the layer currently called semantics... oh, drat 04:08
mop and mc are infrastructure. the others more semantics.
as in, one can use mop to create a very non-p6 thing. or am I confused? mc at least seems infrastruct. 04:09
04:10 mumumu joined
putter aside: I'd order the Augmentation list by popular familiarity and stability. So its quickly clear what the layer is. 04:11
audreyt ok. the idea is that you get p6 semantics using the semantics layer 04:16
and the idioms layer is merely sugar -- but still perl5 instead of relying on module::compile -- to make it idiomatic
I agree it seems there is a layer between Semantics and Augmentation 04:17
and let's call it Infrastructure.
vsoni audreyt: I have made some progress on the Exception manangement in IMCC...You should see a patch in couple of days 04:18
putter err, maybe. maybe rename Semantics -> Infrastructure (non-p6-specific but not low level grunge), Idioms -> Sematics (p6 semantics), and move Data::Bind and Pugs::Runtime up to Semantics. sound plausible?
PerlJam "Idioms" is a weird name for something that's "sugar" :) 04:19
audreyt vsoni: yay
gaal lolipops?
I'm off to sleep, good night :) & 04:20
audreyt ok, let's try again
Data::Bind implements the Perl 6 calling convention
vsoni audreyt: I ran some tests and Static globals in IMCC are NOT causing things to fail
audreyt Pugs::Compiler::Regex implements Perl 6 regexes
putter basically, core, core patches, generally useful p5 packages, stuff which does p6 semantics, stuff which does p6 syntax.
audreyt Class::MOP implements Perl 6 metaobject protocol
putter having the toolchain their seems a bit odd 04:21
s/their/there
audreyt however, there can be a layer between v6.pm and D::B, P::C::R and C::MOP
putter good night gaal
audreyt that lets Perl 5 users use those Perl 6 semantics, but with shorthands that gives a p6 "look and feed" in perl5
yet does not rely on a Perl 6 grammar
04:22 guaumiau joined
putter C-MOP, I believe... implements an api for manipulating p5. you can use that manipulation to do non p6-ish things. but if its api is p6-ish, I suppose its ambiguous where it goes. 04:22
audreyt C-MOP implements an api for manipulating an object space
its API is wholesale equivalent to the .meta API in perl 6
for example, the C-MOP ::Package and ::Module metaobjects 04:23
treats the symbol table as if it's storing mappings from idents to container
and the perl5 "glob" concept does not appear there
putter And the p5 object space is a subset of the p6 object space, so there is nothing you can do with MOP which is not p6-compatable?
audreyt indeed.
putter hmm... 04:24
audreyt Moose introduces helpers like
has 'foo' => (is => 'rw')
it is not perl 6
it looks like perl 6
but is actually just perl5 helper functions
the idea is that you can use Moose to simplify calls to C-MOP
without depending on the rapidly changing v6.pm surface syntax 04:25
putter right
audreyt we need a similar set of idiomatic wrapper for Data::Bind
putter and the argument for module::compile being p6-ish?
audreyt there is no argument. 04:26
(refresh, the picture changed.) 04:27
putter ah, ok, so Idioms is sort of "Psuedo Syntax"? p5 code tweaked to look vaguely p6-ish?
pugs runtime is infrastruct rather than semantics?
audreyt refresh 04:29
yes, it's pseudo syntax. the use is twofold 04:30
one is to let CPAN authors test p6 semantics easily
another is to let the p5 code generated by v6.pm look "idiomatic" 04:31
i.e. like human written code.
without that layer it's going to look like machine code.
which is, well, bad.
putter ok, "Idioms". tend to be individual things. hmm... "Look and Feel?" ;) um... 04:34
flavor, style, ui,
"Perl6 Idioms" 04:35
TimToady looks kinda like a Model to me. 04:36
putter "Perl6 Syntax", "Perl6 Idioms", "Perl6 Semantics"? else the p6/p5 transition wont be clear to those less familiar with the packages. 04:37
or wrap Syn, Id, Sem in a p6 box? 04:38
audreyt putter: the Toolchain means "updating all these to deal with p6 syntax in regular .pm files" 04:39
putter ahhh,
audreyt which does depend on v6.pm
(otherwise they can't parse any of it)
putter I completely didnt get that. toolchain adaptation? update? compatibility? 04:40
toolchain compatability, and put a right side line from there down to Sem saying P6? 04:41
dduncan oh, something I was going to bring up ... 04:42
while file name shouldn't really matter, what is the canonical file name extension for perl main programs?
audreyt .pl ?
dduncan eg, is it .pl or .p6 or something else?
we seem to have a bunch of .p6 files in the Pugs distro ... can they be renamed to .pl? 04:43
audreyt I remember TimToady saying "BCPL is the ancestor of B"
and it implies B->C->PL
that is, the successor of B is C, and the successor of C is Perl, instead of (say) C++ or ObjC 04:44
the D people will probably beg to differ, though...
dduncan so, is there a reason for Perl 6 main programs to be named .p6 instead of .pl, when the .pm is unchanged, as well as extensions for other file types? 04:45
my impression was that .p6 was used to be cute, but isn't necessary ...
in particular, when we have a Perl 6 runtime being sugar over the Perl 5 one, and Perl 6 being able to run Perl 5, and the contents of the files are supposed to be what is important, I suggest renaming all the .p6 to .pl 04:46
unless there is an objection, I will go and do that now
audreyt I have an objection :) 04:47
if they are to be named .pl, then they need the correct "use v6-alpha;" incantatio over them
and the #! lines for them needs to be removed
currently being .p6 means that they can be free to omit the "use v6" line
dduncan so then those changes should be done too
audreyt but if they are going to be .pl, the "use v6-alpha" is neccessary
also, all tests in t/ as well as ext/* should adopt the same change 04:48
instead of "use v6-pugs" and "use v6", all should be updated to "use v6-alpha" without #! line.
if those changes are done, I'm completely fine with .p6->.pl.
dduncan regardless of the changes of .p6 ... the various .t files will need to be changed from "use v6-pugs;" to "use v6-alpha;" anyway, right? 04:49
audreyt yes. 04:50
dduncan I could do that first
are you aware of anything in such a change that would break the test/smoke system ... eg, would some harness need to be updated too?
changes to the .t specifically? 04:51
well, I'll try changing just the .t and see what happens 04:52
04:52 sanug joined 04:57 bsb joined
dduncan okay, 539 t/* files had one "use v6-pugs;" line changed to "use v6-alpha;" ... the beginning of make test checks out such that the alteration didn't cause problems ... will assume the rest of the tests work too 05:00
committing momentarily ... 05:01
audreyt it won't cause problems :)
05:01 justatheory joined
TimToady I'm about to smoke it, so we can know in about 30 minutes. 05:02
dduncan commit is in progress ...
I still have about 4 other similar commits to do, outside of t/*.t ... they will maybe take 10-15 minutes 05:03
for the editing
TimToady I can hold off. 05:04
audreyt pugs.blogs.com/photos/visiolization...astack.png updated again.
dduncan that would work best, unless you want to do a second smoke afterwards
TimToady or just run an intermediate make test while you're doing that.
dduncan though its probably 1am-ish over there
yes
the t/ one would be the largest commit by file count
... still going ... 05:05
TimToady it's only 10pm here...
dduncan where are you?
TimToady Mountain View
dduncan its 10pm here too, near Victoria BC
some how I thought you were still around Chicago ... my bad 05:06
like some others staying there or Boston for hackathon the second
TimToady nice butterflies in Victoria.
I like the museum too.
dduncan when were you last here? 05:07
TimToady must be five or six years ago at least by now...
dduncan well, if any of you guys are out this way in the future, then the small but existant Victoria.pm could probably setup a greeting
small meaning 4-10 people ... though maybe a lot of places are like that ... unlike London et al 05:08
TimToady was there several times while growing up, since I lived in Bremerton and Seattle.
still checking in? 05:09
dduncan besides me, probably the most well known Perl person in Victoria.pm is Peter Scott, who started it about 3-4 years ago
yes, still checking in
its about 500 files, at about 2KB/sec in bandwidth 05:10
or maybe right now its just trying to merge, as data received is about the same also
but I am on high-speed
I'm not sure how long this will take ... should be any minute now, but if you want to start the smoke without waiting, your call 05:11
05:12 kane_ joined, putter joined 05:17 justatheory joined
putter re v6alphastack.png, I'd be tempted to punt the VM column, rename the p6 column to just "Perl 6", and extend it up to include toolchain. ie, the toolchain upgrade is for p6. the meaning of the lower stuff should be self-evident. calling it vm just makes me squint and try to figure out what that means. :) 05:17
With the p6 column to provide context, I'd be happy with Model going back to Idiom. Or Idioms. "language X idioms" is a phrase I know. model could mean anything. 05:18
dduncan oh oh, something's happening ... 05:20
try pulling it now
svnbot6 r11256 | Darren_Duncan++ | updated all 539 t/*.t files so that they 'use v6-alpha;' rather than 'use v6-pugs;'
TimToady it's coming.
there's only one ext/ that uses v6-pugs 05:22
bunch of stuff in perl5/
I'll go ahead and smoke it now. 05:23
dduncan searching the rest of the Pugs distro, my editor says there are 45 occurrences of v6-pugs in 28 files ... half are probably generated and won't be touched ... 05:24
the README has it in 2 places 05:25
TimToady I noticed that t/README needs to have #! advice fixed
dduncan er, the README in question is in Pugs-Compiler-Perl6, not the main one ... 05:26
can I assume that there is no circumstance in which v6-pugs is still useful?
TimToady I doubt anything is actually paying attention to the -pugs
dduncan okay, will replace all
audreyt putter: pugs.blogs.com/photos/visiolization...astack.png ? 05:27
dduncan I will assume that references in historical documentation like talk archives will not get updated 05:29
as they are snapshots in time 05:30
TimToady that's what I've generally done.
dduncan well, I am an archivist at heart
TimToady notes are usually fair game though, I think. 05:31
well, yes, I have tendencies that way too, which is why the A's and E's are full of [Update:] sections.
putter what do we use Parse::Yapp for.../
err, s{/}{?} 05:32
TimToady and how do we do continuations?
dduncan how about /docs/talks/deploy.xul ... that one I was going to leave unchanged
TimToady up to audreyt
dduncan actually, that note was specific to Pugs 6.2.2, so I should hope so
in the timeline 05:33
er, thats 1 of 17 occurrances in that file
audreyt dduncan: change too 05:34
putter audreyt: nice. I think I'm down to: do we really use parse::yapp? is the "..." in infrastructure real? ie, their some packages which could hypothetically go there. let's, see...
05:34 shachaf joined
dduncan you want that historical document changed? ... I'll leave the version-specific line regardless though 05:35
audreyt putter: it's what Pugs::Compiler::Precedence etc uses
putter ok
audreyt the ... is real
maybe I should put some gray fonts there
to stands for the things to come.
putter I much prefer Idioms to Model. "Model" is so generic, it doesnt really tell me anything. 05:36
audreyt TimToady: we use the same trick PIL2Js uses
putter when in doubt, simplicity... ;)
audreyt Felleisen et al's encoding
www.cs.brown.edu/~sk/Publications/P...tack-insp/
lambdabot Title: "Continuations from Generalized Stack Inspection"
audreyt then encoded it on CLR using exceptions alone
dduncan if it is useful, we may want to have a clear deliniation between documentation that is meant to be kept up to date, and that which is meant to be a snapshot in time ... ignoring that Subversion provides other kinds of snapshots in time 05:37
audreyt perl5 is certaily rich enough.
dduncan I know that some of my Rosetta docs were meant to be snapshots ... the copy of the lightning talk for example
audreyt oh. not for me
dduncan okay then, will update the xul 05:38
putter "Evolving"... rapidly evolving? something about the bare evolving there has been bugging me. but maybe that's just me.
and last I think... is there nothing which goes in Syntax but v6? surely some things, a p6 grammar, are not something you would use from p5 except in the context of v6.pm and Syntax. no? 05:41
Evolving -> Ferment :)
audreyt you mean the p6 grammar for p6
TimToady I thought of that one. 05:42
svnbot6 r11257 | sanug++ | Updated the perl6_compilation diagrams
r11257 | sanug++ | Pulled out Helvetica oblique that caused the PDF file to loose a font. Put in Helvetica Bold in
r11257 | sanug++ | Purple to make the input language stand out. Graffle outputs all canvases for HTML with one step
r11257 | sanug++ | by just using HTML export, for whole document - creates the basename as a directory name and
r11257 | sanug++ | puts all of the output in that directory. Used Acrobat to read in PDF and write out as Acrobat 7.0
TimToady I suppose it would end up in CPAN
svnbot6 r11257 | sanug++ | file - this saved about 1.5 MB in file size - crucial because this file slows down checkout.
r11256 | Darren_Duncan++ | updated all 539 t/*.t files so that they 'use v6-alpha;' rather than 'use v6-pugs;'
putter yes, re p6 g for p6.
dduncan huh?
putter or even p5 grammar for p6
dduncan a duplicate svnbot message 05:43
putter anything whose only role in life is simply to give us p6 syntax.
svnbot6 r11258 | Darren_Duncan++ | likewise replaced 'use v6-pugs;' with 'use v6-alpha;' in 10 other distro files
putter didnt like "Ferment"? :) 05:44
audreyt pugs.blogs.com/photos/visiolization...astack.png updated again 05:45
putter "rapidly evolving" is so... wide. you didn't like "Ferment"? :) 05:46
dduncan now, how about the pile of "use v6;" ... should those be left as-is, or changed to "use v6-alpha;"?
this is what most /ext do, I think
Test.pm being a notable exceptoin 05:47
putter If "Rapidly Evolving" -> "Ferment", and "Model" -> "Idioms", then I'd be psyched.
;)
TimToady I don't think Idioms is quite right. 05:48
putter yeah
dduncan since plain "use v6;" doesn't mention Pugs and logically should work, I'm going to leave them alone unless you say they should gain a -alpha 05:49
vsoni audreyt: quick question
PerlJam s/Idioms/Models/
putter my understanding is its the box for things which permit pseudo perl6-like p5 code. class, and has, and such. 05:50
05:50 fordinal joined
PerlJam or even "Meta Models" :) 05:50
putter phrases
utterances ;) 05:51
TimToady It's more like the semantics is the model, and the P5 and P6 layers are views.
putter ahhh
PerlJam Stable/Evolving --> low entropy/high entropy :-) 05:53
or solid/liquid/gas
TimToady Stable --> Psycho
putter oh no...
PerlJam except gas evoke the vaporware meme
TimToady Stable --> Racetrack
:) 05:54
Stable --> Rampaging
Tumultuous
dduncan skipping plain "use v6;" for now ... now removing pugs-invoking shebang lines ...
TimToady apres moi les Deluge 05:55
putter Style?
PerlJam What's the difference between a toolchain and a toolbox?
putter Syntax/Style/Semantics
05:55 shachaf_ joined
TimToady smoke done, no differences, yay! 05:56
dduncan sounds good
audreyt yay!
putter: ok. I removed the perl6 box
putter oh, good point, re toolchain. that should be Tools shouldnt it.
audreyt in pugs.blogs.com/photos/visiolization...astack.png
dduncan I'm finding lots of pugs shebang lines
TimToady Syntax/Semantics/Pragmatics
PerlJam to me a toolchain are things that *must* be linked together to get a useful result. A toolbox, has many tools to chose from that *may* be linked together or used independently.
dduncan about 195 with at least a blank line after them 05:57
putter err... I liked the "views" comment when it was said because it offered new perspective... but I dont think it really flies, does it?
"Perl5 Syntax" is trying to mean "Perl6 Phrases Expressed in Perl5", but... not a chance of that actually coming across to users. 05:58
audreyt s/syntax/sugar/ already 05:59
refresh again?
PerlJam "cpan stack"?
putter ahhh 06:00
TimToady maybe "Perl 5 Paraphrase"
PerlJam pidgin perl6
putter lol
TimToady don't like Rapidly
PerlJam I think Stable --- Evolving was just fine 06:01
putter perl core isnt evolving?
PerlJam putter: not so much compared to CPAN
TimToady It's life, putter, but not life as we know it... 06:02
putter fine. just me.
TimToady I'd say perl core is adapting rather than evolving. :)
ingy obra: ping
putter how about Syntax/Pidgin/Semantics?
PerlJam the stack is collapsing :)
putter no, just names 06:03
audreyt what's wrong with "Perl 5 idioms" :)
putter they are perl _6_ idioms expressed in perl5
TimToady they aren't particularly idiomatic
they're just translations. 06:04
obra ingy: pongy
TimToady circumlocutions
putter Syntax/Sugar/Sematics would be fine too
TimToady more like Starch than Sugar
audreyt ok, I prefer Sugar :) 06:05
putter for whatever reason (excessive familiarity?) I'm not feeling too strongly on the p6/not-p6(infra,aug,core) any more...
sweeter sourd 06:06
PerlJam putter: still works for me.
putter so, where are we at. punt rapidly, and remove Perl X clutter, and see what it looks like?
TimToady but it goes against the metaphor: v6 is desugaring Perl 6 into...Sugar? 06:07
PerlJam I still think "Perl 5 Sugar" should just be "Pidgin Perl6"
putter Sugar'ed MOP et al.
TimToady maybe it's the syrup layer. 06:08
putter what's a word for one level down from syntax. sentence structure kinds of things.
PerlJam everyone knows that syrup goes on top
putter: grammar :)
putter ouch 06:09
TimToady Cream Filling
one level in which continuum?
putter moving away from surface, towards... anywhere.
sanug What about Perl 5 Sugar -> Perl 6 MOP? 06:10
PerlJam What is "tools upgrade" supposed to convey?
putter I am so not making progress writing the mmd spec at the moment.
dialect, accent, style, phrase, 06:11
06:11 Aankhen`` joined
TimToady it's the denotation 06:11
putter form, formulation, 06:12
TimToady which is why it feels idiomatic, because it's really a declarative semantics layer rather than imperative
putter manner, mode, fasion,
parlance, 06:13
TimToady denotation
putter no one knows what denotation means
TimToady sounds like a match
putter sigh
is the tool upgrade really unstable, or just... active? 06:14
PerlJam I liked "Evolving"
putter whatever. evolving is fine.
PerlJam like anything else, the tools have a stable core with changing fringes. 06:15
putter Syntax/Style/Semantics would leave me happy.
putter's vote, and then I'll get back to mmd so I can get to sleep, is 06:16
dduncan committing about 172 files with shebang removals ... 06:17
if that last test commit was any indication, this should take 5-10 minutes ... 06:18
DebolazX audreyt: Hopefully I'll have some time to look into that issue today.
dduncan the other took 15+ and was 3X the file count
PerlJam sleep & 06:19
putter Evolving (weak), not Unstable (weak), Ferment (moderate); remove the Perl X stuff from the titles (bigtime tufte avoid unnecessary ink and clutter violation) (strong); Style (moderate), not Model (very strong), Sugar (ok).
TimToady Style does little for me. These are domain specific languages. 06:20
putter oh, and broader perspective - a very nice diagram audrey, good work :) 06:22
TimToady Stable --> Exciting :) 06:24
Stable --> Fun :)
audreyt I had "Fun" originally
TimToady heh
Stable --> Berserk :) 06:25
svnbot6 r11259 | Darren_Duncan++ | updated about 172 files in [examples/,ext/,t_disabled/] to remove pugs-invoking shebang lines
audreyt ok, refreshed one last time 06:26
for today
TimToady resmoking
audreyt # pugs.blogs.com/photos/visiolization...astack.png
putter *clap* *clap* 06:27
TimToady I like Experimental
it's the right size
putter I like it (the diagram)
happy audrey? 06:28
dduncan yes, nice stack you've got there 06:29
TimToady let's just hope we don't have to move it to anohter peg any time soon. 06:30
*another
audreyt whew :)
putter++ TimToady++ #perl6++ 06:31
06:34 sanug left
audreyt zzz & 06:38
putter me too. good night all &
svnbot6 r11260 | putter++ | mmd-draft: regresses from first-draft, past zeroth-draft, to negative-first-draft. The algorithm not-quite described is better, even quite possibly the Right Thing. But the quality of the description has regressed. I expect to fix it in the morning.
putter don't read it audreyt, go to sleep. it will still be there in the morning. :) 06:40
lost cause? &
06:42 shachaf joined 06:49 mdiep joined
audreyt journal up. zzz & 06:51
06:54 elmex joined
svnbot6 r11261 | Darren_Duncan++ | about another hundred files had pugs-invoking shebang lines removed 06:56
TimToady last smoke was fine, resmoking again and zzz & 07:04
07:05 mdiep joined
svnbot6 r11262 | Darren_Duncan++ | updated a few more files to remove pugs shebangs ... in this commit and several previous, also updated some documentation concerning shebangs 07:18
dduncan I think thats about it for shebang lines ... I also updated some docs concerning them as encountered
now I'll just rename the .p6 files and that's probably it for today
ingy obra: did you get my msgs? 07:32
07:37 iblechbot joined
svnbot6 r11263 | Darren_Duncan++ | renamed about 23 example Perl 6 scripts from *.p6 to *.pl ... there are many yet to do 07:42
r11264 | Darren_Duncan++ | renamed about 44 more Perl 6 scripts from *.p6 to *.pl ... there are maybe 50-100 more that still need doing 08:12
dduncan but I won't be doing them today ... takers welcome 08:15
08:15 renormalist joined
dduncan note that any corresponding .p5 had been renamed to -p5.pl as well 08:15
08:41 drrho joined 08:52 mdiep joined 09:01 szbalint joined 09:58 mdiep joined 10:21 tup joined 10:36 mdiep joined
gaal morning! any nyc hackers about? 10:58
11:00 elmex joined 11:08 ludan joined
dduncan hell no! 11:08
but its 4am here
and I am off 11:09
&
11:09 dduncan left
ivanfrey audreyt: I feel rather stupid, after seeing this: developer.apple.com/releasenotes/De.../Perl.html 11:21
lambdabot Title: "Perl 5.8.1 Release Notes"
11:22 tup joined
ivanfrey what's the command to update my local subversion copy? just svn co again? 11:55
gaal svn up
svn update # for long
12:03 yango joined
gaal audreyt: I just heard Taipei is deploying VoIP in its metro wifi area 12:06
12:27 diotalevi joined 12:28 bpphillips joined, bpphillips left, bpphillips joined 12:29 xdg joined
ivanfrey perl Makefile.PL is giving me "Could not find module `Data.ByteString': 12:32
use -v to see a list of the files searched for
(imported from pugs-tmp-17193.hs)
ghc-pkg: cannot find package plugins"
12:37 ludan joined 13:03 bernhard joined 13:35 variables joined
diotalevi Module::Compile used to be in the pugs tree. Where did it go? I have two failing tests to commit to it. 13:38
13:42 ivanfrey joined 13:47 chris2 joined 13:59 sahadev joined
particle_ points to the CPAN: search.cpan.org/~ingy/Module-Compile-0.17/ 14:04
lambdabot Title: "Ingy döt Net / Module-Compile-0.17 - search.cpan.org"
ivanfrey make is telling me to run ranlib on files I've already run ranlib on.
Ahhh, my bad they're in a different directory. 14:06
diotalevi particle_: yeah, I know there's a dist on CPAN. I was looking for where the svn moved to. 14:08
particle_ ah, my mistake. 14:09
diotalevi Cuz see, I found out that empty M::C blocks are an error as are any use of the << operator. 14:10
14:14 justatheory joined 14:21 fglock_ joined
fglock_ hi! 14:23
14:27 cmcavoy joined
cmcavoy PUGS: mfrost.typepad.com/cute_overload/20...of_ch.html 14:27
14:28 nothingmuch joined
fglock_ everybody zzzing 14:32
ajs_ I know this is a strange question, but does "constant Type foo = 1" really just define a "macro term:foo() {q:code{1}}"? It matters for some documentation I'm writing.... 14:39
14:42 vel joined
fglock_ ajs_: that's implementation-dependent - depends on what level of optimization you have 14:45
14:48 xinming joined 14:53 pmurias joined
pmurias hi fglock, you were complaining that everybody is sleeping? 14:53
fglock_ pmurias: hi! 14:54
sorry to wake you up :)
PerlJam isn't sleeping 14:56
fglock_ let's see what's on the fridge 14:57
pmurias it's the middle of the day in Poland, and to hot to sleep anyway 14:58
fglock_ exactly midday here
I'm installing Vanilla Perl 14:59
14:59 ruoso joined
ajs_ fglock_: Vanilla Perl? Perl, Perl, Baby? 14:59
fglock_ win32.perl.org/wiki/index.php?title=Vanilla_Perl 15:00
ajs_ Ah.
PerlJam fglock_: I'm sorry for your trouble
fglock_: (anyone using windows must have some trouble ;-) 15:01
fglock_ :)
PerlJam The first things I do when I must use a windows box is install gvim and ActivePerl. I look forward to the day when I can install StrawberryPerl instead of ActivePerl 15:02
xinming Juerd: ping
ajs_ What's wrong with ActivePerl... I thought it was fairly full-featured. 15:03
fglock_ ajs_: it doesn't provide compilation of XS modules
PerlJam ajs_: Have you ever tried to use POE on ActivePerl? Have you ever had to deal with ppm and realize that you just can't install any old module from CPAN like you would under a sane OS?
fglock_ ajs_: otherwise, it is quite good 15:04
PerlJam The main thing that ActivePerl brings to the table is the Win32 stuff.
bpphillips PerlJam: agreed, I installed the CamelPack win32 perl installer (camelpack.sourceforge.net/index.php/Main_Page) and used it with some success but I was just attempting to install Moose::Autobox and the autobox distro refuses to install :-( 15:06
lambdabot Title: "Main Page - CamelPack"
pmurias where does the new AST live?
src/Pugs/AST presumably 15:07
PerlJam pmurias: the AST lives in the code ;) 15:08
pmurias unfortunatly 15:09
15:10 cjeris joined
fglock_ pmurias: I think the current one is svn.openfoundry.org/pugs/misc/pX/au...t/p6ast.hs 15:10
15:11 FurnaceBoy joined
pmurias i seen p6ast.hs before, i understood from what gaal said that it's just rough notes 15:12
15:12 josh___ joined 15:13 rafl_ joined
fglock_ bbiab & 15:13
rafl_ Hello there 15:14
Could someone with sudo access on feather (audreyt?) maybe make the sshd listen to a port like 8080 in addition to 22? 15:15
15:17 vel joined
rafl_ Or a login on a random machine where the sshd listens to a non-standard high port, so I could use it as an ssh proxy, would also help. I'm currently in a very restricted environment and would like to get some work done. 15:20
audreyt done at 8080 15:23
rafl_ audreyt: Thanks! 15:26
audreyt np
josh___ Oh hey, audreyt, you're listed on Module::Compile's page as an author. Where'd the snv for it go to? It used to be in the pugs repository. 15:27
15:27 josh___ is now known as diotalevi, mdiep joined
audreyt svn.kwiki.org/ingy/Module-Compile 15:27
lambdabot Title: "Revision 2870: /Module-Compile"
rafl_ audreyt: Could we try an other port as well, please? Somehow 8080 seems to be blocked as well, whereas svk pull and friends work, so some high ports seem to be open..
diotalevi Thanks. I had some failing tests to commit. 15:28
Well... I had a pugs commit bit. I suppose ingy's perms won't have copied from pugs. :-/
audreyt diotalevi: ask ingy for commit bit in that place, or just send it to him
rafl_: there's one on 110 I noticed 15:29
(I didn't open it)
so try 110
rafl_ OK
audreyt I've removed the 8080 one
diotalevi ja. thanks. 15:30
rafl_ audreyt: That works well! :-)
audreyt woot.
TimToady audreyt++ 15:31
rafl_++
audreyt g'morning TimToady :)
TimToady good almost afternoon, AudreyT! 15:32
audreyt lol
rgs++ # "p5p awaits your desires and contributions"
rafl has his irssi back, yay!
audreyt perl is indeed desirable...
TimToady is there an easy way to make irssi do pagedown on a spacebar if it's the first thing on the command line? 15:33
audreyt # pugs.blogs.com/pugs/2006/07/diagram...t-19398614
TimToady: you mean <space><enter> to scroll?
TimToady
yes, only without the <enter> :)
PerlJam TimToady: What's wrong with hitting the Page Up/Down keys? 15:34
TimToady It's a teeny-tiny key, and I have to reach further.
and I'm trained to spacebar for next page 15:35
even have my vim set up that way.
and I rarely want to begin an utterance with space.
particle_ maybe you should change your keyboard driver 15:36
TimToady lol
seems like it has to be doing single-char input at some point, or it wouldn't be catching function keys. 15:37
audreyt yup. it is possible I think with Irssi.pm
since irssi plugins are just perl5 modules
but I've never gone there
audreyt wonders if #irssi may help 15:38
TimToady Yes, which is why I asked whether it was "easy" rather than "possible". :p
audreyt ok. it's a hard and possible thing. :)
TimToady but I knew that already. :)
szbalint #irssi on IRCNet is an excellent channel, I think most core irssi developers idle there...
ivanfrey audreyt: I checked out the latest version, but I'm getting some errors when I try to build. 15:47
audreyt ivanfrey: nopaste? 15:48
ivanfrey audreyt: it's coming. I'm just a total newbie when it comes to hackerdom. 15:49
audreyt: Could not find module `Data.ByteString': 15:50
use -v to see a list of the files searched for
(imported from src/Pugs/AST/Internals/Instances.hs)
Build failed: 256 at util/build_pugs.pl line 126.
make: *** [pugs] Error 2
audreyt ivanfrey: *nod* that means "make" fails to build Data.ByteString on an earlier stage.
try this 15:51
make >1 2>2
and paste the log at sial.org/pbot/perl6
obra kidnaps audreyt to the office
audreyt (the erros will go to the "2" file and outputs to the "1" file)
obra: ok, ok, coming downstairs now 15:52
obra :)
ivanfrey audreyt: I'm getting connection refused at sial.org/pbot/perl6 15:55
audreyt: gotta run. I'll talk to you later. 15:56
15:57 rzoz joined
szbalint Stupid question: What is the P6 equivalent of this Perl5 snippet: Foo::Bar::method($variable) ? 15:58
ingy morning
pmurias morning 15:59
szbalint ah never mind
stupid question indeed.
pmurias szbalint: with !$variable.isa(Foo::Bar)
?
szbalint I had a typo in my code, so I thought I was doing something wrong about invoking a perl5 method... 16:01
audreyt ivanfrey: nopaste.snit.ch is an alternative 16:02
ingy hi audreyt 16:03
TimToady szbalint: I don't think it's a stupid question, if what you're asking is how to call it non-virtually. 16:05
Foo::Bar::method($variable) is still virtual (via one-arg is a method rule)
to devirtualize it you'd have to say
&Foo::Bar::method($variable) 16:06
or Foo::Bar::<&method>($variable)
isa should also work, since it returns &method
but might return you a different one than you were expecting...
er, not .isa 16:07
that would be .can
hmm
and that doesn't devirtualize, according to spec.
so you probably need a & in there somewhere... 16:08
course, even Foo::Bar::<&method> is not necessarily unique if you've got multi methods in that class. 16:10
wandering off &
16:19 snowstalker joined 16:24 prefiks joined
szbalint audreyt: pm? 16:39
audreyt you registered to nickserv? 16:40
(i.e. I don't see pm from you) 16:42
szbalint oh 16:43
I was asking for permission to do that :)
It was supposed to be short for "can I message you?" 16:44
merlyn this notion of asking in public if someone can message you in private seems odd 16:45
maybe it's just me
TimToady maybe he wants to talk about you. :)
audreyt szbalint: well, I've prefer #perl6 :)
FurnaceBoy lol
TimToady (or me...)
audreyt s/ve/d/
but yeah, if you want to talk about me, or TimToady, in _private_.... sure :)
FurnaceBoy "on irc, nobody can read your T-shirt..."
audreyt "but on my T-shirt you can read all about IRC..." 16:46
szbalint to be honest it seems weird for me too, merlyn.
FurnaceBoy hehe
szbalint But I'm on multiple networks and on some it is considered polite to ask, on some you just message away.
FurnaceBoy yeah, they can always block pm's if they are... pms'ing
szbalint I didn't know what is acceptable here, so I erred on the side of caution. 16:47
audreyt szbalint: ok. feel free, though I still prefer public discussion
szbalint Okay, let's stick to #perl6 then. 16:48
TimToady plugs his ears...
audreyt mm pluggable ears 16:49
FurnaceBoy plugs his T-shirt
plugs ... isn't there a pun there somewhere? 16:50
you plug pugs
TimToady plugs is optimized for flun?
FurnaceBoy hahahahaha
szbalint I'm still having problems perl5<-->Pugs communication-wise. I'm not even sure it is worth fixing, so I just wanted to ask you if you want to spend time with it at all, as I can use the 'eval in perl5 land' workaround.
FurnaceBoy read that as 'evil in Perl5 land...'
FurnaceBoy ... 'where the shadows lie...'
szbalint I'm using Inline::Java, and it basically sets $@ to be a reference to the Throwable Java object 16:51
when handling exceptions.
audreyt I see. you run into the triruntime problem we were discussin with putter last night
16:51 kanru joined
audreyt a double boxed object doesn't know its original owner, and stringification kills that 16:51
s/that/the original link/ 16:52
so you want instead of stringificated $@, a true ref to the javaland Throwable
szbalint Yeah. So basically what I get back from P5 is a string, which is kind of useless when I want to use that to access error details...
audreyt I understood. fortunately, there is a workaround. 16:53
let me code it up...
szbalint lights up like a christmas tree.
audreyt "When Perl 6 is here, everyone will be like a christmas tree"
FurnaceBoy laughs
well, it will be Christmas time 16:54
snowstalker Hey all, is anybody able to install Devel::Caller via CPAN? After reading the v6.pm announcement mail, I wanted to try Data::Bind module which depends on this module, but I get a 404 Not Found 16:55
audreyt snowstalker: slow CPAN indexer?
search.cpan.org/dist/Devel-Caller/
lambdabot Title: "Richard Clamp / Devel-Caller - search.cpan.org"
audreyt or slow mirror
audreyt hax0rs PAUSE to force reindexing 16:56
16:56 putter joined
fglock audreyt: hi! 16:56
audreyt hm, seems it's indexed alright
fglock: hi! stack diagram makes sense to you?
snowstalker audreyt, I guess the mirror is the problem because I'm able to download via the browser, so a little perl6-off-topic question, how do I change the CPAN mirror ? 16:57
16:57 lollan joined
audreyt depends on what you're using 16:57
if it's CPAN.pm shell
fglock audreyt: looking again...
snowstalker 'sudo cpan' :)
audreyt o conf urllist unshift URL 16:58
then
o conf commit
TimToady transparency suffers... 16:59
16:59 justatheory joined
audreyt fglock: also, were you able to get vanillaperl working on your machine? 17:00
(vanillaperl.com if not)
fglock audreyt: I'm testing it right now - I'll tell you in a few minutes 17:01
snowstalker audreyt, It worked like a charm, thanks :)
fglock Tools upgrade - means rewriting tools in p6? 17:02
audreyt fglock: no... upgrading tools to support p6 17:05
for example "perldoc" doesn't grok kwid yet
and perltidy can't reformat p6 code
PAUSE can't index "module Foo"
et cetera.
fglock ok
I think Pugs::Compiler belongs to Syntax; 17:10
audreyt true, if you think Rules as a p6 sublanguage
instead of something usable independently 17:11
fglock how about moving Tools upgrade, Infrastructure, Augmentation to a second stack?
audreyt as in "not #perl6"?
ajs_ The pugs.blogs.com/pugs/2006/07/diagram_for_per.html mentions Moose::Meta... CPAN should probably know about Moose::Meta so as not to confuse those who try to "cpan" something they see in the diagram...
audreyt I'll change it to "Moose" 17:12
fglock: what would you call that stack?
ajs_ Or that ;)
fglock they are "perl as a VM", I think
maybe move to "core"
some things could be side-by-side 17:13
audreyt yes, like infrasturecure vs augmentation
fglock like in "CPAN is the language" 17:14
audreyt "CPAN is the language, perl is the VM, v6 is a better syntax"
ruoso audreyt++ 17:15
17:17 rzoz joined
fglock how about 3 columns: Tools (new CPAN over old CPAN), Semantics (Moose over MOP), and Syntax (v6 over Rules/Module::Compile/Yapp) 17:18
audreyt (but there is a dependency) 17:20
i.e. the tools is going to depend on the syntax layer for actually working with p6 source
and the syntax layer demends on the semantics for the output to work
and the dependency is one-way
fglock how about moving Semantics/Infra/XS side by side - they don't depend on each other 17:22
audreyt the semantics would depend on infra+xs
but I agree infra and xs has no dependency
I'll move those two side by side
fglock ok! 17:23
audreyt fglock++ 17:24
fglock Data::Bind installation says "Can't locate Devel::Caller" - I'll try to install separately 17:25
audreyt fglock: yeah, install from search.cpan.org/dist/Devel-Caller/ 17:26
lambdabot Title: "Richard Clamp / Devel-Caller - search.cpan.org"
audreyt (is this still win32?)
fglock audreyt: yes
audreyt ok 17:27
fglock "Module::Build not configured with C_support" - I've seen this before - fixing
audreyt install ExtUtils::ParseXS
then force M::B again
theorbtwo (Module::Build)-- 17:29
What, we should ./configure --enable-foo ?
putter given \(2,3) even :(Int;;Any) :(Int;Int) is ambiguous, yes? 17:30
svnbot6 r11265 | audreyt++ | * v6.pm - Makefile.PL now supports Win32 as well in its ENV/PERL6LIB
r11265 | audreyt++ | line, so 08-test.t also passes on VanillaPerl.
putter hi audreyt, everyone 17:31
audreyt putter: why? Int;Int wins
fglock putter: hi!
audreyt fglock: v6.pm just passed all tests on vanillaperl for me as of r11265
putter ponders...
audreyt without r11265 test.t would fail
putter hi fglock!
audreyt putter: :(Int;;Any) is no different from :(Int;Any)
I mean 17:32
putter: :(Int;;Any) is no different from :(Int;Any;;)
fglock audreyt: great! I'm still installing here
"syntax error at -e line 1, next char )" making ExtUtils-ParseXS 17:34
putter so ;; means "I have nothing more to say", rather than "I assert we need to have been done by now". right.
audreyt putter: right. 17:35
fglock trying dmake instead of nmake
audreyt fglock: always use dmake with vanillaperl 17:36
I just cp'ed it to make.exe
17:36 cognominal joined
audreyt and nmake.exe 17:36
i.e.
cd \vanilla-perl\util\
copy dmake.exe make.exe
copy dmake.exe mnake.exe
fglock audreyt: ok
audreyt s/mnake/nmake/
szbalint: try again 17:41
svnbot6 r11266 | audreyt++ | * szbalint++ requested that Perl5-land errors should be
r11266 | audreyt++ | propagated as full SVs, not strings, in Perl6-land.
r11266 | audreyt++ | Implement this by making an instance of (MonadError Eval Val)
r11266 | audreyt++ | and make throwError the Val-throwing variant of the
r11266 | audreyt++ | String-throwing "fail"
szbalint audreyt: ok
fglock audreyt: do you think the p5 files should be optimized for readability - so it would be better not to emit compiled rules into compiled p6?
audreyt fglock: I think there should be an idiom layer that makes use of P::C::R easy 17:42
esp for grammars
s/idiom/sugar/
the current *foo = P::C::R->...->>code way is a bit verbose 17:43
same for Data::Bind
fglock broquaint implemented a 'install' command in PCR
audreyt maybe move to use Attributes
sub moose :signature(...) {...}
and I think v6 should emit things with those sugars
because that's how we show people the "p5 equiv meaning" of their v6 programs 17:44
so yeah, I think precompiling rules at this point is microoptimization
though it does remove the P::C::R from the runtime dependency 17:45
maybe a flag that defaults to "not precompile" ?
17:45 larsen joined
fglock inlined code would be able to run without PadWalker, because it's inside the user code 17:46
svnbot6 r11267 | Sage++ | m// now properly applied (instead of //m, my mistake). length(foo) -> foo.chars is in the code, but not properly tested.
17:47 nothingmuch joined, fitzzz joined
audreyt fglock: but inlined code destroys readability if you really _inline_ them 17:47
fglock but that's a solved problem, so it's not a good reason
ok
audreyt is it possible to put inlined code at bottom
and then call to them at user code 17:48
and user code would be identical to P::C::R
except the ->install actually looks up inlined precompiled code first
and if it's there, instead of compiling the rules, simply return the closures?
17:48 cjeris left
audreyt that's like the best of both worlds 17:48
fglock I'll investigate that. 17:49
I'll try to recompile PCR grammar to :ratchet, so maybe it will be fast enough
audreyt cool 17:50
fitzzz is it possible that fork() dont work on win32 ?
oops wrong chan
audreyt fitzzz: yeah. and short answer: it works
but doens't work the same way as on unix.
"perldoc perlfork" for details
buubot Type 'perldoc perlfork' in your shell or go to perldoc.perl.org/perlfork.html
lambdabot Title: "perlfork - perldoc.perl.org"
fitzzz any docs on that ?
ok thanks
fglock currently all of v6 is still slow backtracking code
audreyt fglock: yup. you need to pull the same predictive-parsing fix as I did in Parsec-land :) 17:51
fglock tokens and regexes in PCR cannot call each other - so I need to either fix that, or convert the whole compiler at once 17:52
17:53 fitzzz left 17:54 aufrank joined
audreyt fix that = better idea 17:55
fglock "make test" in Devel::Caller kills perl after failing 3 tests
audreyt known. force install
investigating that with #p5p
it's a ithreads thing
v6 doesn't uses the failing parts
fglock audreyt: I've been working around all kinds of bugs in order to finish the compiler :) 17:56
audreyt fglock: which is why we need the porters
and why it's a stack :) 17:57
fglock I mean, my own bugs
audreyt ah.
fglock and refactoring after it works :)
audreyt that's the agile way :)
arguably that's also what the language spec is doing too... 17:58
18:00 Daveman joined
fglock it's been a tight schedule so far: parser=1 month; rules=2 months; compiler=2 months 18:01
audreyt "schedule"? :) 18:02
I'd say it's been an amazing velocity so far
spinclad seconded
bpphillips fglock++ 18:03
fglock Data::Bind installed!
audreyt woot. now let's see if v6.pm passes tests... 18:04
fglock++ # indeed -- in #perl6, such velocity has only been matched by iblech++ in the past
fglock installing from CPAN...
audreyt: :)
how about a javascript version of Rules? then we can port the compiler easily 18:05
spinclad fglock++ # <aol/>
audreyt fglock: that'd be so cool. 18:06
I kind of still want librules in C and convince spidermonkey to link it in
fglock we could make the Rule emitter to emit Perl6, and the run the compiled grammar in javascript...
audreyt yes, but, "eval" 18:07
fglock librules in C would be nice for all backends
audreyt "eval" needs full stack on the target
unless you want "eval" to be an XmlHttpRequest
which... is sane
fglock eval() will work once you have the compiler
running in javascript
18:08 DaGo joined
audreyt yup 18:08
fglock seeing eval() work for the first time in p5 was amazing :)
installation proceeds smoothly ... 18:09
18:11 joples joined
fglock audreyt: re perl6 stack - there is a layer for circular things, like the rule grammar, which is written in p6 18:13
audreyt fglock: from user perspective there's no such thing
from the dev perspective there's a lot of metacircularity
fglock ok 18:14
audreyt sanug says he's working on one that fully explores the v6.pm magick
bbiab
spinclad "Otherwise, it plays a card game (Mutual Assured Destruction) with the other side." specificity++ :) 18:35
fglock bbiab 18:37
svnbot6 r11268 | audreyt++ | * mmd-draft: double-semi must occur after single-semi. 18:41
18:42 lollan joined 18:45 lollan joined 18:46 lollan joined, sahadev left 18:50 buetow joined
putter audreyt: remind me why the card came discards the roles and tries again? 18:54
spinclad so that you always have better, worse, equal, or incomparable? 18:57
18:59 penk joined
spinclad since the roles float, and don't speak to specific places in the hierarchy. 19:02
audreyt putter: it doesn't try again 19:05
putter: it's just discard the roles and see if both loses or both wins
19:07 rindolf joined
rindolf Hi all. 19:07
audreyt i.e. with (Storable Animal Moose) vs (Readable Moose) 19:08
it's a mutual win, not Animal Moose win
so you don't really play the game again
rindolf Hi audreyt 19:09
audreyt rindolf: hi
audreyt sings mad praises at kudra, our new summarizer
rindolf audreyt: Can you (and others) tell me what you think about eskimo.shlomifish.org/Files/files/t...-grant.txt ? 19:10
audreyt (a backlog summary will be posted in a few days)
19:10 mauke_ joined
putter hi spinclad, audreyt 19:10
rindolf audreyt: summariser for the IRC channel?
audreyt rindolf: no, for perl6-*
you know, the "Perl 6 Summary" that has been missing since, oh, February
rindolf audreyt: oh, I see.
audreyt: ah OK.
Maybe I'll start one for perl-qa and module-authors. 19:11
TreyHarris audreyt: oh, cool, where's the summary? i didn't get it on p6-l
audreyt TreyHarris: I'm going to review+polish it a bit during this weekend
so expect it to be posted on p6-a and/or use.perl early next week
TreyHarris ah, ok, so it's not a mistake that i haven't seen it yet :-)
audreyt it is not :) but I'm very happy :)
TreyHarris is happy vicariously 19:12
audreyt rindolf: it's quite well written 19:14
spinclad kudra++
rindolf audreyt: OK, thanks.
audreyt should probably become part of HTML::Widget::NavMenu's TODO
or part of its POD
rindolf audreyt: yes, I guess I can put some of the stuff there.
audreyt but the "Who uses it" section seems to indicate that TPF is not likely to fund the development, as it would only improve live for a few people 19:15
putter ah, so I was wrong I think. the ruledrop means we havent integreated the spinclad's objection to heterogeneous prefixes. (R1) and (R2) are still comparable and equiv. 19:16
rindolf audreyt: OK. 19:17
audreyt: so you think I should completely remove it.
?
Well, it is a generic module and can be used anywhere Perl can.
putter Does a parameter type list with redundant roles trump one without? R1 does R2. (R1) (R1 R2) 19:18
audreyt nope 19:19
R1 can be written out as R1 R2
so they are wholly equiv
rindolf: I think it's fine as a piece of documentation, call-for-help, etc, for the module docs
and on your use.perl jjournal too
and mentioning TPF there would likely confuse things
I think Alias's Strawberry proposal is done after he gets a TPF grant 19:20
or a promise for a grant
putter so I think... the function of role drop is exactly to (what spinclad objected to) permit unrelated roles, not associated with a listed class, to be comparable. 19:21
audreyt and so is more like relaying for TPF, instead of encouraging others to submit to TPF
putter: it is.
and I think Storable and Readable should indeed both advance... 19:22
spinclad i think i have a case of instability. first, stability: for variants U, V, W, if U > V (U wins against V) and U > W but U !> V + W, this is unstable.
audreyt right.
putter Junctive types are treated as their narrowest alternative, yes? 19:24
spinclad the case: U = (Int; Int, Num) V = (Int, Num; Int) W = (Int, Int, Num)
putter ah, I'll just leave it flagged. final pass and checking in
putter reads spinclad's example
19:25 mauke_ is now known as mauke
audreyt putter: yes. 19:25
19:26 FurnaceBoy_ joined
spinclad sorry, W = (Num, Int, Int) 19:26
19:26 vel joined
putter i thought i knew what puzzle you were going for (one is flagged in the new draft), but that's not it. 19:26
let me proof and check in, and then i'll be back
spinclad U beats V by V's semi U beats W by U's semi but V keeps W alive as spoiler where it beats U at the end. 19:27
audreyt spinclad: yes. it's unstable
spinclad interleaving semis are bad news 19:28
*sigh*
audreyt is reminded of Arrow's paradox somehow 19:29
spinclad or circular electoral preference
audreyt spinclad: it can be made stable if we s/all/any/
spinclad (though not exactly)
audreyt but I like the "all" semantic better, honestly 19:30
and I think unstability in face of interleaving semis is... fine.
spinclad kill all spoilers every time we pass any semi?
audreyt spinclad: kill all spoilers when any of the contenders has a semi
instead of all
TimToady one wonders if semis must be specified by proto only...
audreyt spinclad: because "any" essentially make all semi align 19:31
rindolf audreyt: I see.
audreyt TimToady: you mean, textually the first multi with semi dominates the rest
TimToady: or you mean that proto is neccessary whenever you want to use semis 19:32
spinclad I'm starting to think spoilerhood is a binary relation, which ends for a pair when either passes a semi
audreyt both are a bit weird
TimToady the latter is what I meant
audreyt spinclad: that gets us stability too
rindolf audreyt: well, I originally sent two drafts of a proposal for strawberry perl after I saw Adam Kennedy's entry about it.
audreyt oh! cool
rindolf audreyt: that was before I started working for Oleh.
Hi TimToady 19:33
TimToady hi!
audreyt spinclad: but see TimToady's suggestion
essentially, the semi set is prearranged so all candidates must agree
this is weird because of differing arity 19:34
TimToady "can always relax it later"...
rindolf TimToady: what's the status of your p5->p5 compiler? Is it in the core already?
audreyt as multis with varying arities can't really conform to a proto that lists semis for them
so I'm not sure how this flies
TimToady it's mostly there, but there has been some bitrot.
svnbot6 r11269 | putter++ | mmd-draft.txt: now cleanly reflects current understanding.
rindolf TimToady: do you have unit tests for it?
TimToady: or any kind of tests? 19:35
TimToady not really. there were tests involving copying t/ ext/ and lib/ and then roundtripping every .pm or .t in them.
but nothing test-harnessy 19:36
spinclad i could see a subproto that only applies once you've decided at the first semi which main variant to take
putter re the interleaved colon issue,
TimToady Sage is just working off my pre-core version of it. 19:37
19:37 shachaf joined
TimToady the version that spits out yaml 19:37
but I need to de-bitrot the core version one of these years... 19:38
rindolf TimToady: I'm sorry that you missed my Test-Run presentation.
spinclad at each successive semi, all variants in consideration must agree. i would very much favor this. 19:39
putter the thing is I think you want the spoilers (now "active noncontenders") to be made weak refs, prevented from being gc'ed only by the continued contenderedness of the dissenters which prevented them from being exterminated at a otherwise consensus colon.
rindolf TimToady: it was placed in the Python track in the middle of two other longer presentations in the two other tracks.
spinclad actually, that's what i don't want: it makes for instability. 19:40
unless we're talking past each other
putter ie, a contender lacks a semi, preventing spoilers from being zapped. the affected spoilers should be tagged "zapped but temporarily spared by request of contender x". when the dissenter goes away, so do those now "not important" spoilers.
spinclad i think i can still find an unstable case... 19:41
putter talking past I think. i believe this provides stability, while still allowing interleaving.
spinclad (if we want interleaving... different issue)
putter or not. (stable)
spinclad U = (Int; Num, Num) V = (Int, Num; Any) W = (Num, Num, Int) 19:44
19:44 FurnaceBoy joined
spinclad U > V, U > W, but interleaved semis keeps W alive. U not > W till too late. 19:45
putter hmm. it might be that woundedness has to be a relation, rather than a predicate. "the spoilers would be gone but for the dissenters. every wound they inflict is only -relative to the dissenter-. they do not affect the relative woundedness of the nondissenters who wanted those spoilers gone. only if the dissenter is in
the final contender set do those potential wounds (disqualifications) become real." which is perhaps a bit nightmareish to implement when you then hit a few more semis? i'm brainstorming here. 19:46
spinclad i agree, i think that brings stability. 19:47
(if i've read you right.) 19:48
U's spoilers get cleared out whenever U has a semi; so V keeping W alive against V doesn't keep W alive against U. U wins. 19:49
putter so let's see. there is a set of tripples, <n,x,y> at position n, x disqualified y
that is independent of semis 19:50
doublesemi is easy. clear out all <n,x,*> for n > pos.
spinclad i'll try to harvest these to a test file before i go on vacation for a week this sunday. 19:51
but enforcing aligned semis by proto is seriously appealing and much simpler, both to explain and implement. 19:55
putter the key question is what "less important" means. we think we understand one case of it. when all contenders think the right is less important than the left, variant disqualified on the left, on the important stuff, are felt to have nothing worth listening to say about handling of the right. 19:56
s/variant dis/variants dis/
spinclad (different issue again)
putter ?
so the question is how to play "less important" when not everyone agrees. 19:57
spinclad (what i last said, not what you said next)
putter ah, ok 19:58
audreyt spinclad: try Test::LectroTest
(or Test.QuickCheck)
spinclad looking
audreyt which seems like perfect for property-based stuff like "stability"
as you can magickally tell it to "find a counterexample"
TimToady: so, with 20:00
proto range ($x, $y; :$by, *%)
TimToady you'd make multi range ($x; $y) illegal 20:01
audreyt all variants must have exactly two positionals
and they have to be all mandatory?
or can I still have
multi range ($x, $y, $z, :$by)
?
or multi range ($x, $y, ?$z, :$by) ? 20:02
sure, I understand under that we'll just outlaw semicolons in multis
saying that it's a proto-only syntax
but my concern is that it may fail to express varying arities
each with perhaps different cutpoints 20:03
($x) ($x, $y; $z) ($x, $y; $z, $w)
cannot be unified by a proto, can it?
TimToady I'm not sure it would disallow semis elsewhere, just that they'd have to be consistent in some sense.
audreyt yet it seems to be to be a sane case
TimToady something like, only a proto is allowed to specify where the next semi is. 20:04
audreyt so is there a proto that can unify the three variants above?
(and put a semi after $y)
TimToady ($x, $y?; $z?, $w?) maybe 20:05
audreyt but then it's a closed world again; a proto can't simply use
*@ *% 20:06
to allow extensibility
PerlJam Fully 50% of the time I pay attention to this channel it's like you all are speaking some foreign language that is familiar but not quite enough. 20:07
spinclad i don't see Test.QuickCheck, looking at Test-LectroTest
audreyt Test.QuickCheck is haskell
lextro is perl
spinclad ($x, $y?; *@, *%) 20:08
ah, already said
audreyt ($x, $?; *@, *%) 20:09
the "close world" means you can't then introduce a 5-arg variant that cuts at 4th
even though it'd be consistent and stable with regard to all the existing 1/3/4 arg variants
TimToady I'm very worried about explainability, after watching this discussion go by... 20:10
audreyt I am too... but really, so far it's just reiterating criteria set forth in S12... 20:11
TimToady And I always hated playing double-deck cancellation Hearts...
20:11 alexander joined
audreyt though the card game we have to play no matter what the semicolon situation is 20:11
as it's about pairwise type closeness comparison 20:12
PerlJam refresh my memory ... : is the "stop word" for invocant parameters, and ; is the "stop word" for those that participate in MMD ?
audreyt PerlJam: yes, though there is at most one invocant 20:13
TimToady: it's a bit like explaining preferential voting to people -- you know that it will produce a better government, but highest-score-wins is easier to explain and therefore is deployed to detrimental effects...
spinclad i don't know what an optional positional before a semi with a required positional after would mean 20:15
PerlJam okay, so colon is the "invocant suffix".
audreyt spinclad: it means invalid syntax because optionals always come after required
spinclad (in fact, semi is irrelevant there)
good
but ($?; *@) i could see 20:16
TimToady multi-protos, anyone? 20:17
audreyt aw...
ajs_ I'm confused. I thought (according to S06) that the semi was dead, and we were relying strictly on * and ? for optionality in prototypes...
TimToady different semi
ajs_ ...? 20:18
TimToady * and ? are still optionality
audreyt ajs_: what used to be "multi f ($a : $b)" is now "multi f ($a ; $b)"
TimToady reserving colon only for invocant.
so "multi method" can unambiguously either specify $self or not.
audreyt and "multi method f () {}" is no longer syntax error. 20:19
ajs_ hurg... ok... I need to go back and unbreak some stuff in S29. I think I learned this lesson before, but it's been a bit
TimToady the s/:/;/ is very recent
Chicago hackathon, in fact.
PerlJam so ... multi f (Int $a: Str $b) { ... } multi f (Int $a, Str $b:) { ... } is valid? 20:20
TimToady neither is valid any more 20:21
audreyt only if you change the colons to semicolons
TimToady must use ;
audreyt and the semi at the end is redundant
PerlJam is trying to figure out what "invocant" means in this context.
audreyt there is no invocant to a multi sub 20:22
invocant is always the thing that is bound to "self"
TimToady: putter proposed "multi f (Int $a ;; Str $b)"
purely syntactic
ajs_ So, the part before the semi is just what you do MMD on, right?
PerlJam ajs_: that's how I understand it. 20:23
audreyt so that we can say "there is an implicit ;; at the end if there's none"
TimToady audreyt: yes, I saw that earlier. still trying to decide if I like it...
audreyt the use case here is trying to tell people that (Int, Str) means (Int, Str ; )' 20:24
but (Int ; Str) is different from (Int ; Str ;)
becomes kinda awkeard
TimToady yes, I understand the motivation
ajs_ So, what is (Int; Str;)?
audreyt ajs_: it means try to tiebreak with Int first if it can 20:25
ajs_ Ok
audreyt but if there are still ambiguitiy remains, then try to use Str as well
see svn.openfoundry.org/pugs/misc/pX/Co...-draft.txt
rindolf Bleh, chromatic still insists on thinking that I should immediately re-license my original Test::Run code to GPL+Artistic : www.mail-archive.com/perl-qa%40perl...06085.html
lambdabot Title: "Re: [Slightly OT] Understanding Software Licences [was Re: Proposal Sugg"
rindolf audreyt: how is the PDification of Pugs progressing? 20:26
PerlJam how common would it be to NOT want to do that? i.e., (Int, Str;) instead of (Int; Str;) ?
audreyt rindolf: chromatic likes copyleft... so he is entited to that
rindolf audreyt: BTW, I started refactoring my Graham's Function script (expert QOTW 8) in perl 5, which as you recall a perl 6 version of it is under examples. 20:27
audreyt rindolf: PD is not valid in .eu, so we went to MITX instead, and then only for the Haskell/Perl6 code in src/
rindolf audreyt: yes.
audreyt: OK.
audreyt: MITX is a sound choice.
rindolf is using it.
audreyt well, same for my CPAN modules. *shrug*
rindolf audreyt: of course a German used my PD code in KDE's Kpat. 20:28
audreyt: I see.
audreyt it is true that to create a copyleft fork requires lots of time, and so you discourage chromatic from forking your code.
may be contrued as good idea.
TimToady another easy-to-teach-but-maybe-suboptimal approach is that every variant assumes semicolon everywhere that *any* variant requests one.
rindolf But a copyleft licence does not prevent forking.
I think I won't reply to his message. I don't have anything too wise to say, either. 20:29
audreyt rindolf: that is wise. let's drop that.
PerlJam TimToady: action-at-a-distancey
rindolf audreyt: yes.
audreyt TimToady: yeah, that is the "any" approach
TimToady yes.
multi range ($x; $y) is evil under that scenario
rindolf audreyt: but I'll need to revamp my Test::Run meta-proposal a bit to avoid such problems.
Well, maybe I'll try to install Lisp-in-a-box now. 20:30
audreyt TimToady: yeah. we've explored that space yesterday... still like "all" better, and pairwise stability can be preserved; easy-to-teach I think mostly relies on wordsmithing :)
TimToady: mostly trying to approach the intent as worded inS12 20:31
TimToady yeah, just looking for easy ways to trim out the dwimmy bits temporarily. carry on..
TimToady feels his brain asymptotically approaching stupid from lack of nutrients, so lunch & 20:33
audreyt :D
Daveman oh, TimToady lives near me? 20:35
20:35 cognominal joined
Daveman shrugs 20:35
rindolf TimToady: how old is your oldest kid? 20:36
20:37 nxu7 joined
spinclad audreyt: where can i find Test.QuickCheck? i don't to have the equivalent of a CPAN webpage bookmarked... 20:37
Daveman pokes shlomi 20:38
20:38 bpphillips left
rindolf Hi Daveman 20:39
Well I'd better go do something productive like cleaning up my inbox.
spinclad or i'll look for it again after vacation (it'll be a _looooong_ backlog). 20:40
audreyt spinclad: it's GHC core 20:41
www.cs.chalmers.se/~rjmh/QuickCheck/
lambdabot Title: "QuickCheck: An Automatic Testing Tool for Haskell"
spinclad thanks
audreyt www.haskell.org/ghc/docs/6.4.2/html...Check.html 20:42
fglock audreyt: v6.pm is working on vanilla-perl :) 20:43
spinclad ah, there's the library pages, tx again
audreyt fglock: ooooh 20:44
fglock: good :)
people using ActivePerl needs to wait for Devel::Caller being fixed, and the activeperl ppm cluster pickup
which is a week at least
alternatively, they'd need Visual C++ 6.0
but vanillaperl works today :) 20:45
Alias++
dagolden++
spinclad (gonout baxoon) & 20:47
fglock Limbic_Region: ping 20:53
audreyt encoding-warnings 0.10 released and made lexical pragma 21:07
ajs_ S03 suggests "constant $foo". Mailing list has suggested "constant foo". S29 as re-written by Larry suggested "constant foo". Are we generally expecting "constant foo"?
audreyt goes back to the porters crowd after, wow, nearly 2 years of absence
ajs_ porters++ 21:08
audreyt ajs_: good question.
constant $foo is definitely in.
"constant foo" can be construed in building a nullary constant macro function
as in
macro foo () { ...value... }
I think we should keep both.
ajs_ Ok, so it's roughly what I thought. So if I say "constant foo" I shouldn't be shocked (though perhaps apauled) to see "foo()" 21:09
21:09 penk joined
fglock Limbic_Region: sent a simple exp evaluator in p5-Rules 21:09
audreyt aye. ditto p5.
ajs_ Thankee
audreyt np
actually, S04 has the function form. 21:10
gaal meows
audreyt so it's both a scope declarator _and_ a code declator
ajs_ Ok, thanks for the pointer
audreyt very curious, that.
kolibrie throws gaal some yarn
gaal chases, unfurls, ties and twirls 21:12
fglock audreyt: what is the recommended way to create inc/ and META.yml? 21:13
gaal pmurias: src/Pugs/AST/CapInternals.hs, which is not yet compiled (it's just a disabled version of Internals.hs)
audreyt fglock: copy the entire path somewhere off the pugs tree 21:16
cp perl5/Pugs-Compiler-Perl6 /tmp
cd /tmp/Pugs-Compiler-Perl6
rm -rf inc
perl Makefile.PL
make dist
you need Module::Install installed
also, currently you need to copy Test.pm by hand into t/
fglock thanks! 21:17
21:18 penk joined 21:20 FurnaceBoy_ joined, dduncan joined 21:21 alexande2 joined
gaal audreyt: how is returned type expressed in data Capt ? 21:21
does every "type" have a Class?
what is the definition of a return type constraint in Perl 6? One simple idea is either (a) some Class (b) some junction of (a) or (b). 21:23
audreyt it is a Sig 21:24
gaal ISTR luqui stipulating that on the surface level, defining item + slurpy context return vals is done with a junction, but that didn't make sense to me at the time
audreyt: so a Sig includes a Sig field?
audreyt no
{ c_signature :: Sig
needs a field after it
c_returns :: Sig
gaal hmmm, so to mmd you need two Sigs? 21:25
and does method f ($x --> Int $b) put the same thing in c_returns as does method f ($x) returns Int $b ? 21:27
is there any sense at all to the invocant slot of a c_returns? 21:28
rindolf Hi gaal 21:29
gaal: did nothingmuch and you agree to MITXify your code? 21:30
gaal "our code"?
rindolf gaal: in Pugs. 21:31
audreyt gaal: yes there is some sense at all
not much, but some 21:32
gaal so only a 2-disjunction
?
audreyt not sure what you mean 21:33
gaal audreyt: the return valur can ony be simple-type, or simple-type | simple-type?
oh sorry
you're responding to sometihng else 21:34
audreyt the return value can be whatever
gaal okay, what does a return type inocant mean?
audreyt a full Capt
putter ok, have story, seek audience
audreyt f([,] g())
if g has an inv ret
then that inv gets f meth
hm, it's more convincing before when we used *g() 21:35
21:37 Entonian joined
putter each variant maintains its own world view. it's own two sets of "who's qualified?", and "who's alive?". (aka contender and active; aka unwounded and alive). 21:38
fglock sent Pugs-Compiler-Rule-0.09 to cpan - only minor fixes
putter at each position, the process cries out "everyone who thinks x is alive should mark y as disqualified!". 21:39
gaal rindolf: you have permission to use my code.
putter individual variants notice when they pass their own semis, and do the usual, the disqualified cease to be alive. 21:40
gaal audreyt: I'm not sure I'm following... is that a function call syntax that gets dispatched to a method?
audreyt gaal: it is
svnbot6 r11270 | fglock++ | Pugs-Compiler-Rule 0.09
putter after running all the positions, if everyone agrees that a unique qualified variant exists, it is chosen. else ambiguity.
audreyt gaal: the [,] makes it oh-so-non-convincing
so maybe we kill that. 21:41
in which case, the return sig is just a SigSubSingle .
gaal: since the idea of [,] is that it expands syntactically as arg,arg,arg
but inv needs to be
inv:arg,arg
so it's natural that [,] can't put it there
gaal uh, and named and slurpies 21:42
audreyt and so it's natural that return($pos, :$named) is fine
gaal yeah
audreyt since return($inv: $pos) is probably not calling return anyway
but instead invoking a meth called return
putter oops, no. that's if everyone _who thinks they are qualified_ agrees...
audreyt so all ties together now
good.
putter: yup, that condition is needed. 21:43
putter the "all qualified have simultaneous semi" is an obvious subcase
audreyt and yes, that makes the whole process pairwise.
gaal steps back to avoid crosstalk 21:44
putter so what am i missing?
or rather, what have I missed?
audreyt "the process" plays the card game for the variants 21:45
right?
putter yes
audreyt good. write it down in mmd-draft.txt? I think it's sane.
putter hmm. I'm still doubtful of it. was hoping for someone to take some potshots at it. :) 21:46
fglock t/08-test.t - # Test 1 got: "ARRAY(0x814bd54)" (same in windows and linux) 21:48
it may be loading p5's Test.pm? 21:49
ajs_ Can anyone think of a good reason why Trig functions would have to live in Math::Trig *and* Num namespaces? 21:50
TreyHarris ugh, ridiculous javascript footprint though... just opening it ate up 200MB more memory in my firefox process 21:51
oops, wrong pane, pardon me
fglock & 21:52
audreyt fglock: the CPAN release of v6.pm has a bug in Makefile.PL 21:53
fglock: I fixed it in the trunk.
pugs trunk, that is 21:54
fglock: so maybe I'll cut a new v6.pm release tonight
so that it can pass all tests on win32
fglock: (the Makefile.PL magick was setting PERL6LIB environment so that it sees t/Test.pm first)
rindolf gaal: no, I'm not interested in using your code (at least not until I find one that I need to use). I'm just asking about the Pugs conversion to MIT X11. 21:55
fglock audreyt: btw, the Changelog says Parse::Yapp is no longer used, but it is still used for precedence - see changelog for v0.003 21:56
rindolf Because audreyt wants to relicense it.
audreyt fglock: it's no longer used on v6 level 21:57
only indirectly on PCR
fglock oh, right
going home & 21:59
22:00 fglock left
TreyHarris audreyt: why relicense? 22:03
audreyt: nevermind, i found pugs.blogs.com/pugs/2006/04/licensing_clari.html 22:08
22:14 alexande2 is now known as alexander
gaal rindolf: I'm very whatever about licensing; sqlite blessing is what I'm happy with, attitude wise; and I'd prefer not to waste my energy debating that. For practical reasons it seems MIT license is the way to go, and I'm fine with that too (on the one pugs module that has my name on it explicitly, that license is in fact given explicitly as well). 22:17
rindolf gaal: I see. 22:18
gaal It's my personal feeling that we have enough open source licenses as it is, and that consumers of code can be content with MIT license, but if they aren't, that's all good too.
rindolf gaal: yes. 22:19
gaal: there was something that the Open Source Foundation saying that they wanted to reduce the number of licences.
gaal: due to possible incompatibility between licence X and licence Y. 22:20
gaal "wake me when they're done"
rindolf gaal: :-) 22:22
szbalint audreyt: How can I use the perl5 objects then? When I try to do $!.method it dies with: 22:31
*** {obj-perl5} at (...)
audreyt szbalint: write a test?
szbalint audreyt: sure.
audreyt or extend t/perl5/exception_handling.t 22:32
szbalint yeah, thats what I was thinking. :) 22:33
22:45 alexander left
szbalint audreyt: commited. 22:57
svnbot6 r11271 | szbalint++ | Adding test, to check that when $@ is passed from perl5 land,
r11271 | szbalint++ | in case it is an object, it's methods can be accessed.
r11270 | fglock++ | Pugs-Compiler-Rule 0.09
22:59 gaal joined
svnbot6 r11272 | audreyt++ | * exception_handling.t - make it more canonical 23:06
r11273 | putter++ | mmd-draft.txt: New story - each variant gets its own world view. It looks more stable, but I don't have the warm fuzzies of full understanding yet. 23:09
putter spinclad, audreyt, anyone: new rev in. feedback encouraged.
audreyt ok. 23:10
23:13 lollan joined
szbalint audreyt: Hopefully I'm catching up slowly on the style guide of doing tests... 23:16
putter spinclad: your earlier instability example now does the right thing. need more problematic cases now. :) 23:17
TimToady rindolf: 24 23:18
putter anyone have any favorite collections of signatures for mmd? 23:19
TimToady ajs: yes, I intended anything to be declarable as constant that might make sense, and perhaps a few things that don't. 23:20
audreyt constant class Foo { ... }
look, closed classes! 23:21
TimToady shh!
audreyt =)
TimToady actually, that's arguably just a role then.
if we take role/class to be divided on the immutable/mutable scale 23:22
audreyt szbalint: it's a GC mismatch
TimToady but the main point of s/my/constant/ is to force the = to BEGIN time.
[,] $capture is already gone, I think 23:23
S03 has =$capture for that.
putter (Int,Int) (Int;Int) (Int,Num) (Int;Num) 1/2->amb; 2/3->2; 2/4->2; 1/4->1
TimToady though that has its own problems.
audreyt no. you need both.
[,]=$cap
is the full form. 23:24
TimToady right.
szbalint audreyt: I don't understand, sorry.
audreyt szbalint: that's ok, I'm fixing
upshot is that $err considers itself unreferenced
gaal perks up his ears
audreyt and so GC itself away from p5 land
leaving the Hs land pointing to a RV that's no longer there 23:25
problem is, Hs land is not refcounting
so we have to force it to have Refcnt++
and basically leak it madly
by never free any object thrown at us across $! boundary
(I know I'm not making sense. a sec. :)) 23:26
SamB what? no finalizers in HS land?
TimToady I've been wondering how to hijack P5's GC mechanism...
audreyt SamB: PerlSV currently has no finalizer
it's possible to add one that then refcnt-- it
SamB wouldn't that improve things?
audreyt uhm. maybe. 23:27
SamB or would it never get run?
audreyt consistently do a ref++ for all wrapped SV
and then ref-- on finalization
it does get run when GHC is not busy
or upon program exit
TimToady distinguish finalization that can STM from finalization that can't? 23:28
audreyt but the GHC rts doesn't let us say
"these ForeignPtr needs timely destruction, so pleasr performGC but only walk paths leading to them"
it's either stop-the-world-and-count performGC
SamB because it does not have psychic powers?
audreyt or free-as-you-are-not-busy
SamB: no, I mean 23:29
SamB well, I mean, how would it know what paths lead to ForeignPtrs?
audreyt performSpecificGC :: Weak a
performSpecificGC :: Weak a -> IO ()
SamB: presumably by refcounting over them 23:30
enableRefCountingFor :: Weak a -> IO ()
SamB that sounds... complicated... and likely slow, too...
audreyt that sounds like IDisposable. 23:32
SamB isn't that a ... COM interface?
those are hardly the same sort of thing as objects on GHC's heap 23:33
audreyt I understand.
all I'm saying is, GHC has no such interface
SamB its true
audreyt and so the usual timely-destruction guarantee in p5
is not possible when we cross to p6 land.
even with finalizers. 23:34
SamB what is "timely destruction"?
audreyt { open my $fh, "/etc/passwd"; }
TimToady Haskell doesn't quite actually believe in this thing called "time".
SamB hopefully they will make it so that finalization is at least a bit more timely in the future...
audreyt SamB: by the time the block finishes
p5 guarantees that the filehandle will be closed immediately
SamB but that wouldn't be a guarentee, really
audreyt TimToady: "the RealWorld is just another function argument" 23:35
TimToady from an STM perspective we merely need to keep it looking like things happened in the right order.
audreyt yes.
TimToady so we just look in the world object to see if anyone else intends to open the file in the meanwhile... :)
SamB Haskell does not disbelieve in time -- it merely transends it much of the time 23:36
gaal TBH strict slurp saddens me
audreyt my @x = =<file>; unlink 'file';
SamB what in the world is "strict slurp"?
audreyt SamB: deepSeq readFile
SamB it sounds like a contradiction in terms
audreyt TimToady: is it okay that @x is empty? :) 23:37
constrast: my $x = =<file>; unlink 'file';
TimToady er, I think a certain segment of the population would find it surprising.
audreyt contrast also: my @x = slurp('file'); unlink 'file';
TimToady: but you can't get
for =<file> -> $line { ... }
to be lazy
without getting the surprising unlink
gaal understands the reasoning, but is sorry there's no magic to make it DWIM 23:38
audreyt those two are the same thing
unless perl6-land "unlink" somehow flushes
SamB wait a moment
audreyt but then, system("rm") will still trip you
TimToady are you saying you can't even open the file till first ref?
SamB does not unlink merely remove a directory entry from the directory ?
TimToady unix at least will do lazy unlink because it refcnts
gaal samb: on unix fss yes 23:39
TimToady I understand windows is not so enlightened.
audreyt not on win32
on unix though, you can truncate()
SamB and windows won't error because you tried to delete a file that is open?
gaal on win32 you'll probably get a persmission denied error.
SamB so don't truncate()
audreyt ok. try again
my @lines = =<file>; ...then somehow write/append to file... 23:40
that affects the not-yet-fully-evaluated lines of @lines
and that's fine, right?
TimToady yes.
audreyt but once you ask @lines of its size
the magick stops
and you can't then go back and change it 23:41
TimToady copenhagen, yes.
gaal the magic is gathered and refuses to be dispersed again
SamB well... the same thing happens in Haskell...
and it doesn't even count as impurity ;-)
audreyt it counts as unsafe ;)
TimToady: so slurp() in list context 23:42
and =<> in list context
is the same?
SamB I think the formal argument is essentially "IO is crazy"
audreyt or slurp() should be the strict version?
TimToady slurp is always eager
SamB that sounds more like gulp()
audreyt and readline() is lazy like prefix:<=>? 23:43
i.e. synonyms on IO handles?
TimToady I think so.
audreyt ok, restoring laziness 23:44
gaal (A Scanner Darkly) & 23:45
ingy hi gaal 23:49
meppl gute nacht 23:51