Pugs t-shirts www.cafepress.com/pugscode | Pugs 6.2.9 released | pugscode.org | pugs.kwiki.org | paste: sial.org/pbot/perl6 | www.geeksunite.net
Set by stevan on 15 August 2005.
GoCooL what is the difference between pugs and parrot? 00:22
the docs has that parrot consists of - parser, compiler, optimizer and interpreter 00:23
dduncan short answer ...
GoCooL and that
dduncan parrot is a multi-language virtual machine written in C, intended for long-term use 00:24
pugs is written in Haskell, and exists as a functional prototype for Perl 6, which is one language that will run on parrot
GoCooL pugs is an implementation of Perl 6, and I'm not sure what that actually means
dduncan Perl 6 is an interpreted language
it can run under pugs and parrot 00:25
pugs and parrot are different programs that can both interpret the perl 6 language
an analogy is like Mozilla and IE are both programs that can interpret html web pages
GoCooL I read somewhere that the target of pugs is the Parrot VM 00:26
dduncan pugs is currently implemented with multiple targets from which the user can pick
GoCooL now that confuses me further
because 00:27
dduncan think of pugs like a compiler that can target multiple CPUs
think of parrot as one CPU
pugs can compile Perl 6 to either Parrot, or to Haskell, or to Perl 5, or to Javascript
Parrot is expected to perform the best in the long term, or even now to an extent 00:28
GoCooL parrot doc says that the source code is parsed to produce the Abstract Syntax Tree which is them compiled to produce the byte code that is run by the interpreter
dduncan yes, and pugs is doing that source code parsing and AST producing and producing parrot byte code 00:29
but pugs can also execute perl 6 directly, so we can try out perl 6 and test edge cases, improving the design of perl 6, before parrot is complete
think of parrot as a CISC CPU and pugs as a compiler that can target it, with Perl 6 being the high level language that pugs can compile 00:31
GoCooL hmmmm, so is it right to say that the pugs is a part of parrot, the part being the compiler?
dduncan pugs is not a part of parrot, but they are two distinct projects that can work together
they are complementary to each other, but each does not depend on the other 00:32
its like parrot is one of multiple CPUs to choose from, and pugs is one of multiple compilers to choose from
GoCooL ohhhh, ok 00:33
dduncan other Perl 6 compilers were attempted, and abandoned; pugs is the newest and most complete one
xinming dduncan: And the most functional one. :-) 00:35
dduncan yes indeed
you could say, the only fu
nctional one
pugs is complete enough that you can do several types of complete programs in it right now 00:36
xinming But It seems that pugs developement progress is slown down ... :(
GoCooL since I'm still trying to get get my head around Perl 6 some of my questions might not make much sense, I'll try nevertheless 00:37
let's say that
xinming I've just got the laptop, And Just finished installing my Dear-Debian on it... though, many things has to be downloaded. :'( 00:38
dduncan xinming, my impression of the slowdown is that some things are waiting on the completion of the Perl 6 MetaModel
... and/or the complete conversion to the PIL based run mode 00:39
GoCooL lets say I don't want to use Pugs, will I be able to
dduncan I'm doing stuff that requires those to be done-ish before I can have a non-contorted and truly working perl 6 program 00:40
xinming GoCooL: hmm, In fact, Pugs will do the same thing as "official" perl 6 does. Except the speed of your running program....
GoCooL will i be able to compile and run my source using only Parrot? If I am then that means that Parrot has an inbuilt compiler.right? 00:41
xinming Perl 6 will be written in Perl 6, So, Pugs seems to be like the best choice...
GoCooL: You can use parrot "ASM" to do such things
hmm, well, maybe I didn't catch what you mean... 00:43
GoCooL "Autrijus Tang, the lead on the Pugs project, notes that an unoptimized Parrot is already 30% faster than Haskell. Add compiler optimization and a few planned optimizations and Parrot will beat Pugs for speed hands down. " from Parrot FAQ 00:46
so is it right to say that Pugs and Parrot are basically doing the same thing? 00:47
revdiablo pugs can run code itself or run it through parrot 00:48
GoCooL when there is a compiler that is part of Parrot, why and how can one use Pugs as a compiler to produce byte code for Parrot? 00:51
dudley GoCooL: The truth of the matter is, parrot and Pugs are two completely separate and mostly unrelated projects.
also, there isn't a Perl 6 compiler that is a part of parrot 00:52
One was started about a million years ago, but it never got anywhere.
GoCooL maybe I'm not comprehending this right but in the docs here: dev.perl.org/perl6/pdd/pdd01_overview.html 00:53
revdiablo GoCooL: parrot is a general purpose VM
GoCooL what is the compiler part of Parrot that they are talking about?
dudley oh, that's the compiler for PIR 00:54
Parrot Intermediate Representation
which is kind of like an object-oriented assembler
GoCooL ohhhhhh
dudley it's the code that the Perl 6 compiler will eventually emit
and it's what Pugs can emit now 00:55
GoCooL OHHHHHHHHH
!!!
revdiablo pugs compiles perl6 into an intermediate form that parrot then runs
but pugs can also run it directly, without parrot
GoCooL so the source code in the link above is actually PIR, right? and not Perl 6 source code
dudley probably 00:56
GoCooL hmmmm
revdiablo that document looks like it's just a general idea of how parrot is intended to be used
dudley parrot doesn't have anything to do with Perl 6 at the moment
revdiablo it's not necessarily describing what parrot currently does nor saying anything about perl6 00:57
GoCooL godddd, that feels like an eye opener
revdiablo like dudley says, parrot and perl6 are pretty much separate projects. parrot is a VM that will probably work out very nicely for running perl6, and was designed with perl6 in mind, but was also designed not to be perl6 specific 00:59
GoCooL I'm planning on downloading and playing a little bit with Parrot. at this point, will I be able to run Perl code on Parrot? 01:05
dudley GoCooL: Possibly, but if you want to play with Perl 6, you don't need parrot. 01:06
If you want to play with parrot, though, you do. :-)
GoCooL Perl 6 is what I intend to experiment with 01:07
dudley Then all you need is Pugs :)
GoCooL one more thing 01:10
Pugs is a perl 6 compiler written in haskell, but the final design objective is to write the compiler in Perl 6 itself, right? 01:11
QtPlatypus nods to GoCooL "Yes" 01:14
dudley stevan: ping 02:35
spinclad goes back in time 11:30 and applauds nm 02:59
dudley Hey luqui 03:04
luqui hi dudley
dudley When did .meta go away? 03:05
luqui .meta?
oh
right, braino
.meta went away?
you mean in pugs?
I never knew it existed to begin with
dudley In the new metamodel, there's no metaclass 03:06
luqui oh. huh. that's weird
dudley I was wondering if that was an implementation issue, or if it was Decreed
luqui I haven't heard anything, so it's probably implementation
03:06 ods15_ is now known as ods15
luqui Larry's basically pushing the meta stuff off onto autrijus and stevan 03:06
so there is still a "metaclass", but it's probably just "class" these days 03:07
dudley Exactly.
I meant there's no "MetaClass" class
luqui then where is the dispatch logic held? 03:08
dudley the metaclass is now "$::Class" like you said 03:10
luqui well, IIRC, "MetaClass" was just the default metaclass anyway 03:11
so as long as you can change it, it doesn't matter what the default is 03:12
and you have to be an instance of yourself at some point
I think the new metamodel is (wisely) just pulling that point as low as possible
dudley Yes, I definitely think it's an improvement
but Larry seemed so dead set on the Class being a thin candy shell for the MetaClass 03:14
luqui he did?
dudley that was the impression I got from p6l 03:15
luqui now recalls ignoring a big thread about metastuff
luqui goes back and sees if he can find the relevant messages 03:16
plus catching up on that thread...
dudley thread.gmane.org/gmane.comp.lang.pe...guage/4558 03:18
there's one of them
but it can't be the one you ignored, 'cause you replied to this one ;-)
luqui when I "ignore" a message, that basically means I look at the subject and any code examples to see if there's anything that I want to think about 03:19
so I may have been oblivious to most of this conversation 03:20
dudley I often "ignore" p6l threads by reading the entire thing and then completely forgetting everything I just read 03:22
and discovering it a couple of weeks later like it was new
luqui Any lwall statement that starts with "I'm not sure if" can be taken as speculation :-) 03:26
dudley I usually take it that way 03:28
but each time he says something similar, the speculativity of it decreases :)
Anyway, off to bed now. 03:29
sleep &
svnbot6 r7041 | luqui++ | r3456@jabberwock: fibonaci | 2005-09-18 22:50:48 +0000 04:53
r7041 | luqui++ | Added note about when a theory is a role.
gaal Khisanth: the company that purchased IBM's PC division, Lenovo. I wonder how well they'll keep the products. 05:00
(morning!)
Khisanth gaal: I seem to recall the paper saying they have been manufacturing them for IBM for several years already 05:01
gaal good, so they know how to make 'em. I hope they keep making them as good, etc. 05:03
05:05 SM_a1 is now known as SM_ax
nothingmuch ahoy 07:03
luqui ahoy matee 07:07
what be happenin in the lore land of perl 6? 07:16
gaal arrr! me pragmas still be lost at sea 07:20
luqui What pragmas be ye workin' on? 07:21
gaal i ken not whether i'll have time to voyage fer them!
arr, those be any pragmas at all, the ones that the parser be installing
luqui Aye 07:22
I dasn't think swashbucklers like us say "ken". Those be the scurvy scottish! 07:24
gaal I think it be a valid saxon word... I'll check me OED when I get to me cabin 07:25
luqui I be havin' to stop talkin' like a pirate when I be scribin' like a pirate, lest me voice go dry 07:27
nothingmuch hola luqui
luqui hola, me hearty, como estas arrr? 07:28
gaal nothingmuch be a Spaniard pirate! arr!
nothingmuch Thar buxom Blondie is type inferrencing, yarr
luqui Arrrr!
luqui takes a gander 07:29
nothingmuch I tried to be compiling to C, but my mind became groggy like a land lubber at high sea
gaal ...on swill
nothingmuch swill?
www.talklikeapirate.com/howto.html#basic
nothingmuch is trying with that
luqui gaal be a cunning seafarin' hearty 07:31
nothingmuch luqui: did yer get to read some of me Blondie?
gaal nuffin: swill be the cheap grog 07:32
luqui Nay
Blondie be type inferencin' this tide?
nothingmuch arr, gaal!
luqui: aye! it be compiling to a tree that be statically converting types 07:33
(albeit unnecessarily, this being perl and all)
me wanted to compile to C, but alas I was too tired
luqui What algorithm does't use? 07:34
Be't in pugs?
luqui answers his own queries 07:35
nothingmuch aye
algorithm beith silly and dumb
nothingmuch.woobling.org/blondie_ty...tation.png
it hath no generic yet 07:36
luqui It be a start
Odin- Be it talk-like-pirate day again, arr?
luqui Once ye get generics, ye get t'decide between monotypes and their lack
Thar be a hard decision 07:37
nothingmuch luqui: i just wanted the quickest route to type conversion for compiling down to sea
err, C
luqui arr
nothingmuch real inferrence will come later, arr
luqui This be luqui's first TLAP tide 07:38
nothingmuch arr, mine too... yerr a fairly capable buckaneer, luqui 07:39
gaal thank ye, luqui, and yer own speakin' be fine as well
luqui thank ye arr 07:41
G2 Morning, is it acceptable to use Perl6::Export::Attrs in production Modules? 07:55
luqui G2: Aye 07:56
G2 Cool. I thought Perl BP wouldn't have mentioned it otherwise
spinclad arr's a few times, fer good luck 07:57
G2 ;-)
luqui What be Perl BP?
G2 Perl best Practices
luqui laughs
Perl6::Export::Attrs be a Damian Conway module
G2 Of Course!
Ha
Self Promotion book that is 07:58
;-)
luqui Aye
G2 517 Pages of advertisments ;-)
luqui Damian said he scribed ten moduled fer that book alone 07:59
nothingmuch G2: i wouldn't
luqui *modules
G2 Will CPAN accept modules that have Perl6::Export::Attrs?
luqui nothingmuch, why?
G2, CPAN accepts all
nothingmuch due to the handling of attrs
G2 Cool
nothingmuch BEGIN handlers can happen uniformly, but the sub is not yet defined at that point
INIT time is not good though
soif you 'requrie Module::That::Export::Attrs' the export list is not set up 08:00
G2 But you don't, you 'use' it
nothingmuch right, but sometimes you don't have control
nothingmuch avoids attrs due to this instatbility
i thought it's okay, because I use it 08:01
a month later I removed all Export::Simple or whatever that was from my code =(
G2 nothingmuch: Yeah, ok.
luqui nothingmuch, I think P6::E::A sets up an export list and just looks at it from import()
nothingmuch luqui: right, and the way it sets up an export list might not be triggerred under a mod_perl environment, for example
luqui arr, aye, aye 08:02
nothingmuch Exporter::Simple
G2 Noted. Thanks.
nothingmuch it's actually a very nice syntax though... *sniff*
luqui what about Perl6::Export
very simple source filters be not th' devil
G2 Not looked
nothingmuch source filters are, well, source filters 08:03
i guess it is a better choice
but note that loading Filter::Simple is not an easy task
luqui ?
nothingmuch (for perl)
it takes a while
luqui not really
stupidly implemented source filters take a while
nothingmuch oh, okay 08:04
it could have been that then
nothingmuch remembers a *big* performance hit from source filtered code
luqui uses Perl6::Attributes all the time and doesn't percieve a performance hit
P6::A (my module of course) is about as simple as source filters get
:-)
luqui has ceased talkin' like a buckaneer 08:05
luqui hangs his head in shame
spinclad arrk! pieces of eight! pieces of eight!
luqui ? 08:06
spinclad arrk! it's talk like a parrot day! arrk!
nothingmuch ahoy spinclad
wolverian luqui, by the way, the last line in P6::A's DESCRIPTION looks faulty (reading it on CPAN, anyway)
spinclad ahoy matey!
luqui aye 08:07
ahoy spinclad
spinclad ahoy and avast!
spinclad whistles 08:08
spinclad wonders how far he can go with sound FX 08:09
nothingmuch spinclad: did you see recent blondie progress? 08:11
luqui homepages.nildram.co.uk/~gkhs/pirate.mp3
nothingmuch arrr, my speakers beith silent as death 08:12
they be doin it 'ccasionally when me be unplug the cable whilest the laptop sleeps
gaal hath yar soundtrack to Amateur blastin' 08:13
nothingmuch thinks the laptop should use a thief knot (en.wikipedia.org/wiki/Thief_knot) to catch me in the act
spinclad hold hard a jiffy, lemme bring me pugs-hoard up to the runnin tide
acme arr, shiver me timbers 08:14
spinclad i heard yer word of it from the crows nest 08:15
nothingmuch spinclad: Ye might want to heave the revision of example.pl that comes before the head, ter see the first incarnation
acme: arr matey, what has come about?
acme the wind be shifting 08:16
luqui dasn't like the sound of that 08:17
spinclad aye, toss it overboard! make it *walk the plank!* 08:19
nothingmuch spinclad: the buxom blondie is a tasteful lass... she be wanting many pretty modules 08:20
luqui I thinks Blondie be a beauty t' try out me new type inferencin' module 08:21
I best be gettin' me arse in gear writin' thar module 08:22
nothingmuch luqui: ye be read Blondie::TypeSafe
and ye be study thar outline 08:23
it be simple... if yer make a Blondie::TypeSafe::Annotator that is interface compatible but smarter, i be me a happy cutlass
luqui aye aye 08:24
nothingmuch in plain english:
the problems right now are as follows:
1. two level call depths have problems with parameter placeholders 08:25
2. generic types are not yet supported
the things I like:
luqui explain (1)
nothingmuch luqui: i was trying to compile to C yesterday, but instead I chased the bug
i redid the prelude's &print
as App(Sym( 08:26
'&printf'), Sym('$handle'), Val('%s'), Sym('$string'))
to make things easier for the C backend (Since that's what all the hash based replacement is about, after all)
and the type of the call to &say was confused somehow 08:27
&say implemented with a builtin &print works OK with the say(42) program
it amkes it into say(stringify(42))
I'm also thinking of making Thunk a List instead of a Unit 08:28
or maybe even a map with body and params
luqui arr, what type gets say when ye redid &print? 08:29
nothingmuch let me explain how params and syms are resolved
since &say => Thunk( Seq( Param('$string'), App(Sym('&print'), App(Sym('&infix:<~>'), Sym('$string'), Val("\n")))) 08:30
when the &say thunk is traversed Param($string) is noted, and it contains a placeholder type
the dynamic symbol resolution notes that Sym('$string') resolves to that, so it's set to have the type of the placeholder 08:31
&infix:<~> is resolved, and has the type 'PV -> PV -> PV'
Val('\n') has the type PV
the App() has the type 'PV'
Sym has a placeholder type
all that's left is to unify (Placeholder, PV) with (PV, PV)
luqui arr, th' weather be harsh to me modem 08:32
nothingmuch when unifying with a placeholder the expected type fills in the placeholder
luqui goes back and reads from the top
nothingmuch okay, so now we've noted a PV type in Param('$string')
and resolve the App to have a type PV
App(Sym('&print'), Sym('$handle)' 08:33
err
App(Sym('&print'), Sym('$*OUT'), App(...concat...)) relies on $*OUT and &print being provided by the runtime
&print is GV -> PV -> IV
*OUT is GV
the App is PV
so the type of App is IV, and everything unifies correctly 08:34
then we exit the Thunk's reduction
it constructs a new type taking the return value of the Seq (which takes the return value of the last element in the list, in this case IV)
and it finds all the children of the Seq that are Params (no traversal yet, even though it's easy - just stop at the next App) 08:35
and uses their stored types (the ones they got from inferrinf the Syms, not their own type - they have the bottom type since they have no return value)
to construct thde parameter list
since $string was a PV the type of &say is 'PV -> IV'
then App(Sym('&say'), Val(42)) is applies 08:36
*applied
since 42 is an IV Val(42) is also an IV
and the App's type is IV
but it tries to unify a (PV -> IV)'s PV with an IV, which doesn't work
so it says $self->runtime->cast_node_type($annotated_node_that_is_val_42_with_type_info, $de_facto_type_of_val_42, $expected_type_found_in_say's_type_signature); 08:37
a type strict runtime will raise an exception
luqui thinks he understands
nothingmuch Blondie::Backend::Perl constructs an App(Prim(...caster...), Val(42), Val("PV"), Val("IV")) and does a runtime conversion 08:38
that is "42"
but it's moot since that will happen anyway ;-)
hi szabgab
i mean, ahoy szabgab
luqui: any suggestions on what to do? 08:39
what to do (better|next), that is
luqui nothingmuch, what do you mean?
ahh...
um...
nothingmuch my next step is to compile to a static language
then I'll have a look at generic inferrencing 08:40
luqui I'll try to release my inferencing module soon
nothingmuch during the compilation to C i expect to fix the bug with the dually nested thingies
it's probably something stupid
luqui: what process does it do?
luqui it takes a "type equation system" view; so you have a "equation system" object, and as you traverse your tree, you add equations to it 08:41
(asking it for free variable names and whatnot)
then you say, Solve it Stupid!
nothingmuch sounds reusable
=)
luqui and it gives you back the constraints on all your variables
nothingmuch does it know of 'x -> x' types?
luqui uh?
you mean functions?
nothingmuch for example map
yep
luqui can't decide 08:42
Aankhen`` UPS AHOY
nothingmuch how come?
ahoy Aankhen``!
luqui well, what equation would you get for App($a, $b)
Aankhen`` Hiya nothingmuch. :-)
Aankhen`` dances with joy.
luqui it seems like something that the compiler should do to pull apart $a's type
nothingmuch the compiler has $a's type =)
supposedly 08:43
luqui right, and you'd just say $a's type is (a -> b) for variables a and b
and then set up the equations appropriately
nothingmuch for example App('&map', Sym('&say'), Val([qw/a b c/]))
luqui but the inferencer wouldn't know about the type a -> b, just a and b]
nothingmuch this should take the type 'PV -> IV' from say
and the type '[PV]' from the Val 08:44
or '[PV|IV]' if it's mixed
luqui it all comes down to interface. if there is a good equation-based interface to function types, I will add them
but I can't see how to incorporate it
nothingmuch and apply it to &map which has the type '($a -> $b) -> [$a] -> [$b]'
TaPL and adv TaPL should help us, I guess
I hope they arrive quickly
luqui too 08:45
amazon says they're coming today
rather, between today and Oct 1
nothingmuch hah
luqui I always assume the best though so I can be disappointed with maximum efficiency
nothingmuch =)
Delivery estimate: Nov 1, 2005 (More about estimates)
damnit
i should have bought it here... combooks.co.il/details.asp?catalogi...0262162091 08:46
luqui nothingmuch, do you have windows?
nothingmuch nope 08:47
i can have windows within 2-3 minutes
but no proper tools on it
how come?
luqui :-) 08:48
I was just thinking, I could give you my university account information, and you could see TaPL online
it's a bit of a pain to read because of all the security features, but the content is there
oh, wait, I think there's a VPN for mac
duh
nothingmuch what vpn? 08:49
l2tp/ipsec?
luqui has no idea
luqui finds the webpage
nothingmuch those are getting popular lately
luqui www.colorado.edu/its/vpn/
nothingmuch okay, seems like it might work 08:50
luqui well, it was worth a shot 08:54
nothingmuch wow, oreilly's safari is pretty bare 08:59
it's 99% hype books... haven't found anything serious yet 09:00
luqui pretty much oreilly books
?
nothingmuch nothing about haskell
just .net, VB, teach yourself X in 21 days, and oreiily books
luqui eyuck 09:01
gaal i got into unix from an oreilly book
nothingmuch i got into unix from perldoc =)
luqui no, oreilly is great
nothingmuch oreilly is great, but their selection is pretty limited 09:02
luqui just... they're not much for academic material :-)
gaal picked up "unix power tools" years ago and loved the culture, the hackage
in recent years they've published some fluff along with very good books
nothingmuch gaal: did you see my first post to perlmonks?
luqui be ye a hacker before then?
gaal nope
arrr! thank ye fer reminding me how ta speak 09:03
nothingmuch gaal: it be a translation of Oedipus Rex to UNIX IPC
gaal be looking
nothingmuch twas an expression of frustration and loinging, what with me not having UNIX till a year after that
nothingmuch grew up on Macperl
gaal an nothingmuch be mad :)
nothingmuch somewhere half way through perldoc I tried 'fork()' 09:04
and it be say:
"fork()?! I'm not *that* kind of operating system."
luqui where find I this first post?
nothingmuch www.perlmonks.org/?node_id=6364&...ood=Search
although those new posts are emabarracing
www.perlmonks.org/?node_id=177897
gaal luqui, nay, i be a kid before then, who moosed around BBSen
nothingmuch the approximate matching w/o c one was /me trying to show off closures, and getting shouted at by [merlyn] for plagiarising MaPLK 09:05
wolverian hm, is there a syntax to import a classname to the current namespace? Date ::= DateTime::Gregorian?
gaal an fooled with desqview an os/2 ('member that?) 09:06
nothingmuch my ::Date ::= DateTime::Gregorian?
wolverian perhaps. it is a nice idiom, anyway. (letting the code to determine what calendar to use for Dates)
nothingmuch =) 09:07
wolverian oops, that's Date::Gregorian, by the way.
gaal "for (my $i = 1; $i <= 4; $i++){" !? :-)
nothingmuch gaal: i was around 4-5 months into perl... forgive me
luqui giggles
when me matey be learning perl, he writes: "if (!$x) { $x = 10 }" 09:08
nothingmuch =) 09:09
gaal is not wont ta show 'is own old code
luqui I still remembers the look on his face when I showed him "$x ||= 10"
nothingmuch too
luqui Oooh. Ack! Oh. Eep.
nothingmuch salads came crawling out of the bung hole
wolverian hmm, is date() a builtin or a Date::Gregorian export?
nothingmuch i'd say it was an export 09:10
luqui export
nothingmuch i'd say in perl 6 almost everything is an export
wolverian er, rephrase: would it be a good idea to have such a function as a builtin?
nothingmuch nope
wolverian right.
luqui aye, we calls it "time"
wolverian heh. ;)
nothingmuch i think that's also not a "builtin"
wolverian does time() return an object, then?
luqui time.month
nothingmuch it's part of Perl6::Prelude::POSIX
wolverian if it does, it'd be practically the same as Date::*.new()
luqui that be nice
wolverian nothingmuch, I thought the plan was to ditch POSIX :) 09:11
nothingmuch err, right
luqui wolverian, kid ye?
kid ye not?
wolverian I don't know.
nothingmuch Perl6::Prelude::POSIXIAN uses POSIX to give a time object from the epoch time
anyway, i'm off to eat
gaal Prelude.pm is getting big enough fer the build system te assemble from several files, nay?
wolverian right. okay. I'm just wondering how necessary that is
(duplication of interfaces) 09:12
nothingmuch gaal: i thought there were problems with precompilation... do you mean assemble several files into Prelude.pm? or load several Prelude modules
nothingmuch really leaves
gaal aye, and indeed there be problems that may not be worth fixin' 09:13
i needs must go as well now
luqui be alonne 09:14
wolverian arr, I be hungry
Juerd Talk like a pirate day again? Yarrgh. 09:17
rafl_ Juerd: Hm. 09:40
Juerd: The display works for me, but when suspending to ram I get SATA errors after the wakeup.
Juerd rafl_: I be sailing that kubuntu ship. 09:41
What's yer ship?
rafl_ Juerd: There's a patch for that, but if it's applied it suspends/wakes up correctly but shuts down then.
Juerd: Debian sid.
Juerd I don't know what patches are applied to Ubuntu's kernel.
Oh, I had that shutting down too first. It was because I used my power button to wake it up 09:42
And the event doescome through
So use another way to wake it up :)
rafl_ What other ways are there? 09:45
Juerd On my thinkpad, it wakes up when opening the lid (requires closing first, obviously)
And on pressing the Fn key
If you pass s3_mode too, any mouse movement suffices, but then you'restill using a lot of battery. 09:46
rafl_ OK, I'll try that. Thanks.
Juerd I first thought it was Fn+F4, which is the key to sleep
But later I discovered that it's just the Fn key that it responds to.
Funnily enough, Fn+F4 doesn't make it wake up and then sleep again, which you would expect with powerbtn waking up and shutting down. 09:47
Good luck
Time for therapy again :( 09:48
(for my knees, not the mind)
luqui sure
arr, how does pirates say "bye"? 09:49
rafl_ Juerd: I love you! Thanks! 09:50
nothingmuch 's juggling is improving 10:14
eeep.... PBP and CPANTS are making me nervous 10:17
too many people are spending too much time on these things 10:18
they should learn to keep things in mind and try to remember them when it counts
luqui what be CPANTS?
nothingmuch kwalitee
there is a long thread on perl-qa lately
or several, actually
luqui concurs wholeheartedly, arr
nothingmuch with who? 10:19
;-)
luqui avast, too much time be spent worrying about code standards, and not enough on good code 10:20
nothingmuch aye
luqui watches Fear and Loathing in Las Vegas 10:21
b-aye 10:22
nothingmuch nice movie
ciao
heh: cpants.dev.zsi.at/author/NUFFIN 10:24
my kwalitee sucks
damnit, wtf is up with 'has_test_pod' and 'has_test_coverage'
pod_coverage
this is something WRT the act of distribution 10:25
i don't need to test that pod is correct on every platform i install
these people are drunk
why not has_good_pod
and pod_covered
pjcj covers nothingmuch's pod 10:36
(no_pod_errors is there too)
nothingmuch so what does a test have to do with it? 10:37
if I can ship pod without errors what do they care how I do it?
pjcj what does pugs do wrt order of evaluation and stuff like $i = $i++ ?
nothingmuch stuff like?
pjcj things that would cause undefined behaviour in C 10:38
nothingmuch oh
i would expect it to work just like $x = foo($x);
sub &postfix:<++> ($i is rw) { my $j = $i; ++$i; return $j };
so it increments $i in place in the ($i++) expr 10:39
and then sets it to $j
&prefix:<++> ($i is rw) { $i += 1 }
pjcj so, $i = 2; $i = $i++; say $i gives what? 10:40
evalbot_7041: $i = 2; $i = $i++; say $i
nothingmuch ?eval my $i = 2; $i = $i++; $i 10:41
evalbot_7041 \2
Juerd I'm in my car
nothingmuch Juerd: cellphone?
Juerd Waiting for the wegenwacht (people in yellow cars fixing cars)
I left my lights on. The battery is empty now :(
nothingmuch oi
can't you flag some bypasser to start you up? 10:42
Juerd I was planning on using EDGE (cell phone using technique, 240 kb/s)
nothingmuch: I'm not that good with people
nothingmuch Juerd: aren't the people in yellow cars people?
Juerd Anyway, I found free internet via wifi, only 40 meters from my own home
nothingmuch hehe
Juerd nothingmuch: Yes, but them I pay. 10:43
They're strangers with a function
That's always easier
nothingmuch fairy nuff
Juerd Let's see what kind of an internet connection I get here 10:44
Oh, it's quick
It reaches 5 Mbit/s
nothingmuch ooh
Juerd Which probably means wifi is the bottleneck, and the connection is relaly 8 Mbit/s
nothingmuch get closer 10:45
Juerd I can't
My car ain't moving
nothingmuch ah
Juerd Can't even open a window for some fresh air
So I opened a door 10:46
nothingmuch 5 is usually the limit imposed when it's throttled down for reliability
Juerd The rate is 11
But I'm used to getting no more than 5 over an 11 Mbit/s connection
10:46 Aankh|Clone is now known as Aankhen``
Juerd nmapping... :) 10:48
(I feel responsible for telling these people their wifi is open)
But I first need to know who they are
Usually, this can be found out by watching their holiday pictures 10:49
Aankhen`` Anyone here taken the new (2005) SAT?
Juerd Which are often on passwordless smb shares
I'm the only station on at the moment. Too bad.
rafl_ Juerd: What do you use for suspend to disk? 10:50
Juerd rafl_: On what level?
rafl_ Juerd: Kernel level. swsusp2? 10:51
Juerd Whatever is in ubuntu's default kernel
I think it's old swsusp
rafl_ :-(
Juerd: Can you upload the kernel config for me, please?
Juerd Sure. Whereto? 10:52
rafl_: Alternatively, just install ubuntu's kernel package
rafl_ I don't know. A webserver, a nopaste site..
Juerd It's linux-image-2.6.12-8-686
rafl_ Juerd: No, I need a self-compiled kernel. 10:53
Juerd The sources are available too :)
nothingmuch Juerd: zcat /proc/config.gz | pbotutil -m "my kernel config" -u "Juerd" 10:54
rafl_ Yes. I thought it would be easier for you to upload the config than for me to download the whole src package and extract the config.
Juerd rafl_: tnx.nl/4154OBFV 10:55
nothingmuch: Ubuntu has the configs right there in /boot/config-`uname -r`
rafl_ Juerd: Thank you.
Juerd: You don't have your swap partition on LVM2, do you? 10:56
Juerd rafl_: No
Why would I?
nothingmuch so that it can be resized
Juerd Who the hell needs to resize swap partitions?
You can add as many swap partitions as you like 10:57
rafl_ Because LVM is cool. Unfortunately I didn't get suspend to disk working on a swap partition on LVM.
Juerd It stripes them automatically too (little known feature)
rafl_ Juerd: It's not about the swap partition. I have everything but /boot on lvm.
Juerd Make it everything but /boot and swap
rafl_ That's a problem now (without any data loss) 10:58
nothingmuch stripping of partitions on the same physical drive doesn't make sense... are you sure it does that if they're on the same disk?
Juerd rafl_: Real flexible, that lvm thing ;)
nothingmuch: No, I don't think it will.
rafl_ Juerd: Much more than without LVM.
Juerd closes the door again
nothingmuch Juerd: LVM is a tradeoff... it's good for some things, but bad for others 10:59
Juerd Some fire department people moving car is driving around in circles
nothingmuch it pays off if you have two disks
Juerd I've seen it pass me four times already
(I'm parked next to the fire brigade)
nothingmuch maybe they're patrolling for smoke
Juerd The building next to me says, in large neon letters: "Eerst redden, dan blussen" (rescue first, then extuinguish) 11:00
Hehe, sure
QtPlatypus Juerd: Your lucky, i live next to a hospital.
Juerd I think they think I'm a terorrist :P
QtPlatypus: Oh, but ambulances make much less noise
Here at least
QtPlatypus Juerd: Not when there helicopters.
Juerd Haha
Right :)
nothingmuch wonders why Damian's modules can't stay simple
nwc10 larry++ # good answer 11:01
Juerd What the...
karmaspammer!
nothingmuch search.cpan.org/~dconway/IO-Prompt-.../Prompt.pm (includes a clustered option switch parser just for fun)
Juerd nothingmuch: He's an academic programmer
That's just how they work and think
nothingmuch =( 11:02
Juerd there 11:04
car works
bye!
nothingmuch huraah
ciao
the perl debugger sucks 11:10
gaal nothingmuch, have ye seen Devel::ebug? Did I mention it in yer ears already? 11:11
nothingmuch yes, I have
nothingmuch upgrades it 11:12
it didn't work last time, i forgot why
btw, did MJD ever do that perl debugger thing on the TPF grant page? 11:13
gaal i think not, but he's got a few good points there (as usual) 11:15
pjcj ?eval $i = 2; @a[$i++] = $i++; @a
evalbot_7041 Error: Undeclared variable: "$i"
nothingmuch ?eval my $i = 2; @a[$i++] = $i++; @a
pjcj ?eval my $i = 2; my @a; @a[$i++] = $i++; @a
evalbot_7041 Error: Undeclared variable: "@a"
[undef, undef, 3]
gaal ?eval me $i = 2; @a[$i++] = $i++; @a
evalbot_7041 Error: No compatible subroutine found: "&me"
gaal arr, evalbot must be patched! (eyepatched that is)
nothingmuch search.cpan.org/~emartin/Acme-Lingu...te/Perl.pm
BilgeRat sounds like a bignum implementation ;-) 11:16
nothingmuch ponders a 'use bignum' that can only count to 4 or so 11:17
pjcj pugs' behaviour there seems pretty much undefined
nothingmuch and then in multiples of barrels
pjcj: i'd expect it to do this:
gaal keelhaul be a bit excessive..
nothingmuch allocate $i, assign 2 to it
increment i, return 2 from "$i++"
increment i return 3 from $i++ in the postcircumfix [] 11:18
?eval my $i = 2; my @a; @a[$i++] = $i++; @a
evalbot_7041 [undef, undef, 3]
nothingmuch hmm
fair enough
the lvalue is first resolved down to it's container atom
then the rvalue
this actually makes more sense
pjcj: you'd be surprised, but autrijus invested some thought into these things 11:19
pugs' execution semantics are actually less grudgy than they seem most of the time
pjcj I'm sure he did, I just don't want to have to specify too much - I rather leave things as undefined, or implementation defined 11:20
nothingmuch why? then portability is hindered 11:21
pjcj C is pretty portable ...
nothingmuch except for the nitty details
and also keep in mind that C is far simpler than perl
and it's not really portable, it just has facilities for portability 11:22
the same C code won't just run anywhere, even when you disregard headers and libraries and all that
due to bytebex, bitwidth, for starters.
pjcj I'm not sure what the difference is - if you stay away from undefined behaviour you are fine 11:23
nothingmuch so why allow there to be any undefined behavior at all?
why not disallow undefined behavior?
@a[$i++] = $i++; # compile time death: "multiple assignments to single container in expression causes undefined execution order" 11:24
pjcj then you have to specify everything - which is fine too, Java does that, I think
compile time death is fine too - C just calls it undefined behaviour
it would be nice to do something better that Perl 5 does 11:25
than
nothingmuch not everything, but execution order is an important thing to specify 11:26
btw, if assignment is really MMD &infix:<=> then the current behavior is correct 11:27
?eval m @a; @a[die "first"] = die "second";
evalbot_7041 Error: unexpected "a" expecting term postfix, operator, postfix conditional, postfix loop, postfix iteration, ";" or end of input
nothingmuch ?eval my @a; @a[die "first"] = die "second";
evalbot_7041 Error: first
nothingmuch sub &infix:<=> ($x is rw, $y) { variable($x).set($y) } 11:28
it makes sense - $x is evaluated first, then $y
just like
?eval foo(die "first", die "Second");
evalbot_7041 Error: No compatible subroutine found: "&foo"
nothingmuch hah
?eval say(die "First", die "Second"); 11:29
evalbot_7041 Error: Second
nothingmuch that was unintuitive
pjcj oops ;-)
nothingmuch writes a test
pjcj ?eval my $i = 1; say(@a[$i++] = 1, @a[$i++] = 2); @a 11:31
evalbot_7041 Error: Undeclared variable: "@a"
pjcj ?eval my $i = 1; my @a; say(@a[$i++] = 1, @a[$i++] = 2); @a
evalbot_7041 12 [undef, 1, 2]
pjcj hmmm 11:32
anyway, lumchtime - thanks, nothingmuch
nothingmuch ciao! 11:33
pjcj: comitted 11:37
svnbot6 r7042 | nothingmuch++ | r8167@syeeda: nothingmuch | 2005-09-19 14:37:45 +0300 11:40
r7042 | nothingmuch++ | test for evaluation order when semantics are grudgy
luqui ... 11:58
what the hell was that movie about?
more precisely, what the hell just happened?
nothingmuch hehe
luqui er, arr
uh oh, hard drive failure 12:17
I hear it
might be awhile before I'm in here again
nothingmuch =( 12:18
Juerd Back up your data NOW then :) 12:21
commit all open changes, run unison, pray
webmind- prays to the flying spaghetti monster for luqui 12:22
dudley cringes, wishes luqui good luck, and runs rsync 12:27
gaal hola! since i'm playing army tag again, and may not be able to complete the lexical pragma stuff, here's the current status: 13:34
the install_pragma_value does put pragmas somewhere. but not in the correct place.
when i install, from the parser, in the current env instead of the caller's 13:35
(that is, without the line saying "let env'' = envCaller env' -- not sure about this.") 13:36
then the following:
./pugs -e 'BEGIN { Pugs::Internals::install_pragma_value("moose", 42) } say Pugs::Internals::current_pragma_value("moose")' 13:37
prints 42.
and indeed,
./pugs -e 'BEGIN { Pugs::Internals::install_pragma_value("moose", 42) Pugs::Internals::install_pragma_value("moose", 44) } say Pugs::Internals::current_pragma_value("moose")'
prints 44, which is correct.
however!
that's not the way it's meant to be used:
it's the code that *called* the pragmatic module that ought to see the pragma values 13:38
that's why i install in the caller env
except that that doesn't work.
so: if i'm freed to work on this, i will, but there's a chance i won't be able to soon. i'd love it if someone picked this up :) 13:39
14:46 rafl_ is now known as rafl
coke_ hio. I wanna steal the smoke scripts from pugs for parrot. anyone here familiar with how they work? 15:37
nothingmuch yes 15:42
util/yaml_harness is like prove
but it spits our yaml and can run in parallel
util/test_graph.pl uses Test::TAP::HTMLMatrix to graph the YAML
util/smokeserv/smokeserv-{client,server} - arranges for community displays of the graphed output 15:43
util/runsmoke.pl - runs yaml harness and then testgraph
make smoke - runs runsmoke
coke_ so the pretty html displayed from the server is actually generated on the client? 15:44
nothingmuch yes
although theoreticall we could send the YAML over
coke_ eh. if the client has the horsepower to run the test suite.... 15:45
nothingmuch i think that the problem is that it takes about a full minute to dump or load the YAML
YAML.pm is very very slow
the best thing to start with is Test::TAP::Model and Test::TAP::HTMLMatrix 15:46
use the example script in ::HTMLMatrix
run the parrot test suite with that
and then plug to smokeserv if applicable
if parallel runs and yaml archiving are important, then you should look into yaml_harness.pl 15:47
coke_ by parallel, do you mean simutaneously? or merely multiple runs on the same svn revision?
nothingmuch parallel like N procs at a time 15:48
(i have SMP, so i pressured gaal to hack it in ;-)
coke_ That's not a current requirement, methinks.
nothingmuch nothingmuch.woobling.org/Test-TAP-Model/ 15:49
gaal but you get it for free if you like :-)
nothingmuch nothingmuch.woobling.org/Test-TAP-HTMLMatrix/
coke_ what is "yaml archiving"?
gaal (hi! bye!)
nothingmuch ciao
coke_ (I presume, saving a test run asyaml for regenerating the report later)
nothingmuch yes
it's a serialized Test::TAP::Model
gaal: ping. 15:50
gaal pong, but not fer long
nothingmuch i think we should "upgrade" yaml_harness to use Data::Serializer
coke_ (for free) yes, that makes it more compelling.
nothingmuch that way it's the user's choice
and storable is *much* faster
coke_ nothingmuch: I don't suppose you'd be interested in "porting" these to parrot? =-) 15:51
nothingmuch coke_: uh, tell you what, i'll help you and you'll help me
i am going to compile Blondie to parrot sometime this week
and I'll be asking idiot newbie questions because humans have a better response time than google ;-)
and you'll have to help
gaal nm: feel free, feel free
coke_ nothingmuch: Sold. 15:52
nothingmuch gaal: i'll possibly consider maybe doing that
gaal but i'm going away for (1 .. 30).pick days
nothingmuch coke_: okay, let's get started... I'll make sure my parrot is compiled and start reading make test
coke_ (I am going to a con T+W, but am available most of the week.)
nothingmuch oh shit, it's tuesday already
coke_ no, monday.
nothingmuch good luck!
coke_ (at least, in EST)
nothingmuch no, i mean it's tuesday soon
gaal has reserve duty on tuesday =( 15:53
gaal gotta run. later! &
nothingmuch ciao
coke_: do you know the parrot makefile? 15:54
rafl The parrot build system should be reworked anyway. It's really painful for distributors trying to make a package out of it. 15:55
coke_ nothingmuch: yup. 15:58
nothingmuch /invite coke_ #parrot 15:59
coke_ see you there. 16:00
17:44 Amnesiac_ is now known as Amnesiac
Juerd Is there a type "List"? 20:09
Aankh|Clone goes to sleep. 20:19
wolverian Juerd, way back on p6l Larry replied to me there is, but it can not be assigned
Aankh|Clone G'night.
wolverian Juerd, that is, bound to a name
Juerd That's exceptional and weird 20:20
wolverian I might be remembering it wrong. I think he meant that "not to the user, who knows about the implementation" 20:21
Juerd wonders why he constantly disagrees with TSa 20:23
To the point that I'm actually sigh before reading the message.
s/'m//
wolverian I share some of his quesitons 20:24
questions
if not necessarily answers
Juerd I think he lacks Perl background. 20:25
And misses concepts like references, context and lists completely 20:26
Which combined can lead to the illusion that it's possible to have a reference to a list 20:27
wolverian I like that someone thinks analytically of them. ignorance and misunderstandings sometimes enlighten me.
PerlJam Juerd: I too sigh before reading his email. Though I often just skip them these days.
Juerd PerlJam: It's good to know that I'm not the only one 20:28
wolverian maybe I'm just too ignorant as well to understand how ignorant he is :) 20:29
Juerd He has all kinds of wrong assumptions about Perl 6, that he doesn't confirm and doesn't state 20:31
That makes reading and understanding what he says very hard.
beppu who is this person? (out of curiosity) 20:32
Juerd TSa, or: Thomas Sandlass
wolverian or SandlaƟ for the unicode people 20:35
Khisanth isn't that a requirement for this channel? :) 20:36
PerlJam wolverian: I sometimes find his email confusing and not because I don't understand the words but because he version of the world is so completely alien to me.
Juerd Khisanth: Hell no.
dduncan Juerd, regarding the List type, I heard several months ago that it is now gone, and replaced with Array 20:38
wolverian PerlJam, right. I just gloss over his mails and look at the replies to him.
nothingmuch woobling.org:8080/ 21:07
wolverian wow, nice! 21:10
kolibrie nothingmuch: woot!
nothingmuch hola kolibrie!
nice photo from toronto
kolibrie hola
thanks
nothingmuch got more?
kolibrie not online, most aren't that good 21:11
how did yours come out?
nothingmuch haven't finished the roll yet
kolibrie :(
nothingmuch didn't go out much since
and 120 format is something you tend to be cheap about 21:12
kolibrie you got that parrot smoke report up fast, four hours or so?
nothingmuch well, iblech did most of the work 21:13
i hacked their harness
and i hacked his CGI
and most of my time was actually spent on house stuff
cooking, eating, cleaning up, picking up my sister, etc. 21:14
kolibrie sounds like life
I've just ben $working
s/ben/been/
nothingmuch what on? 21:16
kolibrie nothingmuch: nothing interesting today 21:20
last week I was working on data extraction
nothingmuch and in general? how goeth that DB storage backend?
and did you see DBIx::Class? it's much more flexible than Class::DBI
what kind of extraction? 21:21
kolibrie I modified MJD tokens function to allow for extraction, rather than full lexing
then I tried to port to Perl 6 and got stuck 21:22
the Class::Inflate is on CPAN (old copy)
I need to release again
It's pretty stable for readonly
no writes yet
stevan pointed me at DBIx::Class, but I haven't tried it yet 21:23
nothingmuch: darcs get graystudios.org/software/Class-Inflate 21:25
nothingmuch darcs! huraah 21:27
that seems a little heavy for my present mental condition 21:28
kolibrie till tomorrow & 21:35
21:40 knewt_ is now known as knewt 22:33 whiteg_ is now known as whiteg
stevan hey luqui 23:11
luqui hi stevan
luqui just realized something very cool about theory theory
stevan much pirate talk in the backlog today
luqui aye
justatheory coughs 23:12
luqui P-)
stevan :) 23:13
ok, time to take the dog out &
luqui do I have to pay for graffle? 23:15
nothingmuch luqui: there's a beta 23:36
and you can get an unlimited amount of trial licenses, too
and download pro, it can export better
luqui oh, well, I'l half-way done using the standard version 23:37
*I'm
nothingmuch en.wikipedia.org/wiki/Speculative_execution
oops
luqui oh, TaPL came today!
the earliest possible expected date
graffle is really smart about alignment :-) 23:39
nothingmuch yes, it's very nice that way 23:40
i like it because you can forget about being pretty, it does all that for you
congrats on TaPL... i hope mine gets here eventually too ;-)
perhaps an inter library loan from tel aviv will be faster... /me will ask mom ;-) 23:41
luqui points everyone to his use.perl entry where the cooolest thing just jumped out at him
turns out that data constructors and classes are pretty much exact opposites!
they are precisely dual from a formal perspective 23:42