Pugs 6.2.9 released | pugscode.org | pugs.kwiki.org | paste: sial.org/pbot/perl6 | www.geeksunite.net
Set by autrijus on 4 August 2005.
nothingmuch makes noises 00:21
buu shoots nothingmuch
Alejandro seen autrijus 01:58
jabbot Alejandro: autrijus was seen 5 hours 51 minutes 55 seconds ago
Alejandro connect elixus.org 02:00
planetcall hello 05:13
when perl6 is out there then why perl5 is continuing ? 05:14
Khisanth because migration doesn't happen overnight 05:18
hexmode perl6 is out?
Khisanth do YOU think you can learn perl6 overnight?
hexmode: note the "when" :)
hexmode ah
got excited for a bit 05:19
I'll go back to throwing coffee cups
planetcall which one would you suggest for a "new to perl" programmer to begin with 05:31
Khisanth ... 05:32
perl6 doesn't quite exists yet
wolverian planetcall, the one that actually has a complete implementation.
(that is, perl5. :) 05:33
if it feels like too old for you, learn ruby and then move to perl6 when it comes out.
(a lot of ruby experience can be directly applied to perl6, which is a bonus.)
Khisanth ruby isn't all that young either :) 05:34
planetcall does ruby has a wide support as perl ? I dont have had much acquaintance with ruby
Khisanth but then you could learn Lisp and apply a lot to perl6 too :)
planetcall it has been very recent I have migrated to the open community driven languages.......I really like perl though never got time to delve into deep 05:36
Khisanth Perl seems like mostly a love it or hate it language :)
planetcall why hate it?
Khisanth beats me 05:37
planetcall surprisingly many languages are moving towards their own virtual machines..... 05:39
even perl
wolverian planetcall, no, ruby isn't quite as well supported. especially things like mod_ruby are either woefully underdocumented or just plain unstable/hard to install.
perl is a _lot_ more mature in that respect.
planetcall was java first to have its own virtual machine and IL code ? 05:41
The vision for Perl 6 is more than simply a rewrite of Perl 5. By separating the parsing from the compilation and the runtime, we're opening the doors for multiple languages to cooperate. You'll be able to write your program in Perl 6, Perl 5, TCL, Python, or any other language that there's a parser written for. Interchangable runtime engines let you interpret your bytecode or convert it to something else (e.g., Java, C, or even back to Perl). 05:42
wolverian I'm pretty sure there are virtual machines from 1960 :) 05:43
and in the end, everything new is old news to LISP.
good morning :) 05:47
autrijus hi :) 05:49
mm old news to LISP.
"Computer Science is merely the post-Turing decline in formal systems theory."
wolverian we need to tear down the establishment and create a more humane science 05:53
(I'm typing randomly. never mind.) 05:54
autrijus :) 06:03
gantrixx anyone here? 06:27
is there anyone here working on Perl6 development?
wolverian yes. I'm not sure if anyone is awake, though. :)
gantrixx When do you think Perl6 will be ready for general use? 06:28
when do you think Perl6 will have good support from the Perl community?
wolverian I don't know. 06:29
buu Christmas.
wolverian right. :)
gantrixx That wouldn't be to bad
here is the problem
wolverian gantrixx, there are too many components that have to be finished, each of them having their own developers and schedules and such
it is not possible to really say when perl6 will be out. 06:30
gantrixx What I worry is that Perl is loosing market share to Python
I'm involved with a situation like this at work right now
wolverian "losing". why does that worry you? python is a fine language.
autrijus yo.
gantrixx There is a lot of automation they are planning to write and they are in the process of choosing if it will be done in Perl or Python 06:31
It worries me because there doesn't need to be Perl, Python, Ruby
there only needs to be one
wolverian what kind of automation are we alking about?
s,alk,talk,
gantrixx corporations like to have standardized technologies
autrijus gantrixx: it's nice that they had not standardized on Cobol already 06:32
er I mean Java.
gantrixx It's for a communication system using satellites and stuff
Well, you see they have been burned in the past by writting things in Ada. Now they have to pay big bucks to the last 2 Ada programmers on the planet to maintain the systems. 06:33
wolverian the world is rarely perfect. just be glad it's not java, as autrijus said.
gantrixx I think it is a great step forward that they realize the value of open-source and open-standards
but now they want a standard "scripting" language
not a free for all
and they want to bet on a winning horse 06:34
wolverian python and perl are both fine languages. don't worry. be adaptive. there is no silver bullet.
gantrixx In some of these meetings they talk about Perl falling by the way side
autrijus gantrixx: fact is... all are winning horses.
gantrixx: once thing that's sort of a central tenet of perl6 is that you can write
use perl5:DBI; 06:35
use jsan:DOM;
gantrixx Can you imagine practicing law if all the laws in the country changed every 5 years
autrijus use python:Zope;
arubin gantrixx: uh
they pretty much do
especially things like tax law
autrijus gantrixx: not all the laws, but new laws, sure :)
arubin at least as much as perl 5 to 6
gantrixx Yes but then every lawyer has to know the old and the new laws 06:36
This is unrealistic
autrijus ...which is the case right now :)
at least the code is open for lawyers ;)
gantrixx It is unrealistic to expect a programmer to be an expert in C/C++, Java, C#, Perl, Python, Ruby, and PHP
to be good you have to focus on a smaller set of skills
arubin yes, skip C# and PHP 06:37
autrijus that's right, so what's why cross-language interop is important and healthy
gantrixx And if you spend a year working on a C/C++ project, your Java skills fall and you aren't familiare with the latest Java stuff
autrijus ...and why we are compiling perl6 to native code, javascript, parrot and perl5. :) 06:38
gantrixx why is it that we waste so much redesigning the tools to do our job only to not be proficient at using them
look, I didn't come here to argue
but if you are a Perl6 developer, you might find it interesting to know what your customers are thinking 06:39
arubin and what would that be?
kill off other languages?
autrijus long-term survival, is what I heard
gantrixx If you are improving Perl simply to make yourself happy then that is fine, but if you truly believe that Perl6 is superior language then you should want to see it adopted and used
arubin autrijus: sounds better than the existing plan of mass suicide in 3 years 06:40
gantrixx If Perl6, Python, and Ruby are pretty much all just as good as one another, why do we need all three
autrijus arubin: I certainly hope so
gantrixx should everyone just use one, then focus on making better software?
arubin gantrixx: you do realize that the Perl people have no control over other languages? 06:41
Khisanth don't know about Ruby but Perl6 and Python definitely doesn't seem equal
autrijus gantrixx: on the other hand, if all libraries from those languages can call each other
gantrixx: so each person can write in a language that fits her brain best
gantrixx I don't program in Python, but it looks like I maybe soon
autrijus gantrixx: then I'd prefer that :)
gantrixx I think you are missing the point. Companies don't want a system that is composed of 10 different syntaxes
wolverian gantrixx, again, there is no single best language. the best we can do is work on interoperability. 06:42
Khisanth besides Perl has always been philosophically different from Python:)
gantrixx they want to pick a couple
autrijus gantrixx: that's true, but there are more than one company out there :)
I mean, Amazon standardizes on Perl, Yahoo on PHP, Google on Python.
Khisanth companies just want to use languages with the most hype, if the wrong person at the company happens to be making that decision :)
autrijus (for their scripting needs, respectively) 06:43
I don't think that's a bad thing for them to do that.
gantrixx again, I think you are failing to see it from the customers point of view. People don't always get to program in the language they want to program in because they like it. They are told what language the system will be built in and that decision is made often by non programmers for different reasons
reasons like, long term maintainability of the system
arubin gantrixx: I think you are completely missing the point
wolverian autrijus, and Yahoo provides API examples for all of those languages, I think.
gantrixx support for the technology it is built in
arubin no one can make anyone else stop developing different languages
autrijus right, so the main takeaway is long-term survival.
in term of support base and install base. 06:44
I assure you that the p6 design is centered on that value. :) it's said at the first synopsis/apocalypse.
gantrixx so when the suits start creating more jobs for Python programmers, that is when Perl becomes simply a hobbyist language
arubin your logic is a little flawed
gantrixx And I'm not the one missing the point, the people making the decisions are
this is a project that will probably employ 300 developers 06:45
for the next 10 years
Khisanth and how exactly is a non programmer well suited to be deciding what is and isn't good for long term maintainability?
gantrixx most will be C/C++ programmers
arubin Ruby, PHP, Python and Perl are all used for professional development now
gantrixx but a portion will be Perl or Python programmers also 06:46
so to work 8 hrs a day for the next 10 years on Python, means much less use for Perl
arubin at your company
gantrixx now I realize this is just one company, but what if other large corporations think the same way
arubin this doesn't signal the end of Perl
guess what, Python is widely used for large projects now 06:47
autrijus gantrixx: *nod*. so, what will help most to influence your managers in favour of perl?
arubin see Google and ILM
Khisanth ugh "what if" can lead all over the place
arubin autrijus: I think he wants a psychic
gantrixx Khisanth: in corporate america many decisions are made by people far removed from the technical task itself. you can argue for utopia, but this is the way it is
Khisanth hardly utopia 06:48
gantrixx autrijus: when will Perl6 be available, when will it have good community support, when will Perl5 loose community support
Khisanth having qualified people do their job is asking for too much? :)
autrijus gantrixx: ok. perl5 won't lose commmunity support in at least another decade.
perl4 enjoyed support for that long, and perl5's base is even larger. 06:49
gantrixx autrijus: OK, my job is now to convince the decision makers of that
wolverian gantrixx, CPAN is a juggernaut that can't be stopped.
autrijus gantrixx: perl6 is available as a prototype now; you can write in it to get a taste of how it looks like; there is a growing body of examples.
wolverian perl5 isn't going away.
gantrixx the decision makers are under the impression that if we went the Perl route, Perl6 may be available in 6 months or so. We could easily rewrite 6 months of Perl5 in Perl6. 06:50
autrijus gantrixx: I estimate it to have reasonable community support with we can compile perl6 to run with existing perl5 modules.
gantrixx And my concern is that they are already leaning toward Python
arubin writing Python is not the end of the world 06:51
you could be writing VB
wolverian gantrixx, perl6 won't be available as a production system in six months.
autrijus gantrixx: you can talk to them that python does not offer a way to statically type your program the way C++ does.
gantrixx I'd hate to see Perl die....or at least be pushed aside for a younger prettier girl....this Perl6 extreme make-over needs to get completed.
arubin autrijus: how does that push them towards Perl?
wolverian maybe you should bring up Haskell with them. 06:52
autrijus arubin: er, if they write perl5 now, then the transition to an incrementally typed perl6 will be less painful?
arubin autrijus: it's possible Python 3 will have some typing as well
autrijus arubin: I'd like to see the spec of the said python 3. 06:53
gantrixx The other thing is that, until Perl6 is bundled with Solaris and RedHat, they are hesitant to accept it. 06:54
arubin autrijus: there is nothing set in stone
autrijus perl6 isn't in any way a mature design, but it's better than a set of mailing list discussions :)
arubin www.python.org/peps/pep-3000.html
I've read a lot of talk of static typing
not that I think static typing is a good thing
gantrixx Otherwise the SA's have to install teh haskel compiler, parrot and all that stuff. It's a hassle
autrijus gantrixx: okay. you can talk to them that my current plan is that perl6 will be cross-compiled to perl5.
gantrixx: so anywhere that runs perl5 can run perl6. 06:55
buu autrijus: Really? How?
autrijus it may become as simple as "use pugs; ...start writing perl6 code ..."
buu: oh, the same way we currently compile perl6 to javascript.
Khisanth heh Python isn't all that much younger or prettier, beauty is in the eye of the beholder afterall 06:56
autrijus buu: build a simple glue that's the runtime and object model in Perl5, then output perl 5 code from perl6.
gantrixx what I really wish some of tehse corporations would do is actually pick a technology that they feel strongly about and donate some developers to work on it.
autrijus buu: svn.openfoundry.org/pugs/docs/notes/plan
gantrixx then maybe they could insure a long life of one particular technology 06:57
rather than hanging back to see what happens
or trying to predict the future
arubin gantrixx: already happens
Khisanth gantrixx: but there ARE companies that do that
gantrixx yes some
autrijus actually, I'd say the majority of CPAN modules are contributed by people who use them in work. 06:58
gantrixx but any modules I write on company time, they don't let me upload to CPAN. They view it as proprietary material
autrijus Acme::* notwithstanding.
Khisanth well that is really between you and your company's lawyers ...
gantrixx what I do is go home and write stuff on my own time 06:59
I leave teh specific stuff for work
then at least I can reuse my own modules on other projects
autrijus gantrixx: you got a CPAN ID?
gantrixx Anyway, they are about 6 months away before they start writing this automation so even if they make a decision now, they still have time to change it before 6 months 07:00
and I will be working at a different company for that 6 months doing development in Perl5
no I don't have a CPAN ID
All the generic modules that I have written I just keep for my personal use 07:01
autrijus ah. I wonder if you'd be interested in playing with porting those generic modules to perl 6
gantrixx Actually yes
autrijus just to see if the new code is cleaner and more suited to your brain
gantrixx I mean, if I don't spend my spare time learning Python 07:02
I've tried to write some stuff in Perl6 the last time I took a look at it
autrijus then you can give an accurate description of how it is to write in p6
gantrixx but I had a hard time getting even the examples to run
autrijus oh. how long ago is this?
gantrixx I could not get the simple code that I wrote to work
maybe 4 months ago 07:03
I have a vested interest in Perl
autrijus ah... running it in parrot or in pugs?
gantrixx hang on, I'll have to refresh my memory
let me check
parrot 07:04
autrijus sure. if you can paste the code to sial.org/pbot/perl6 we can see how it runs now 07:05
also, if you'd like to start porting some of your generic, personal use modules to perl6, I'd like to know your email address so I can send a committer invitation to you
so you can commit some code into pugs's examples/ and ext/ directories, and maybe help on the tests etc.
ah. no wonder ;)
gantrixx OK, let me do this....I'll have to refamiliarize myself with Perl6 07:06
autrijus gantrixx: invitation sent. welcome aboard! you can check out the latest source with "svn co svn.openfoundry.org/pugs" and commit from the same checkout directory.
if you do so, add yourself to the AUTHORS file.
gantrixx after that I can dig up some perl5 modules that I wrote for fun and port them to Perl6
autrijus that'd be great. 07:07
Aankhen`` ?eval class Foo { sub bar (::?CLASS $self: ) { "bar" } }; Foo.new().bar()
evalbot6 'bar'
autrijus I'll brb
gantrixx OK, it's midnight here. I'm going to bed 07:08
Aankhen`` Night.
autrijus see you around here again soon :)
gantrixx rest assured I am fighting for Perl on this project with Gen Dyn
but I have a 6 month project with another company to do first
autrijus nod. I'll try my best to make your life easier :) 07:09
Aankhen`` autrijus: How's the new runcore coming along?
autrijus Aankhen``: lots of dead trees ;) 07:10
Aankhen`` :-o
Aankhen`` rushes off to hug the trees!
autrijus Aankhen``: the current Parser's Exp form is not adequate
I'm working to reformulate it so each special form gets its own node 07:11
not reusing the horribly overloaded Syn node
so I'm branching off src/Pugs/* into src/PIL/*
temporarily you'd need "make pil" and 'make pili" to play with new runcore.
a Syn parser, a type annotator and the metamodel need to work together
Aankhen`` OK. 07:12
autrijus I already got intrinsics and container types figured out.
Aankhen`` Yay!
wolverian autrijus, did you know that "pili" is a childish term for "penis" in finnish? :)
Aankhen`` Hi wolverian. :-P
wolverian hello, Aankhen`` :)
autrijus wolverian: every word is a childish term for genitals in some language
I'm not surprised :)
wolverian autrijus, that's probably true.
svnbot6 r6223 | Aankhen++ | r6288@tef-base: Aankhen | 2005-08-13 12:35:51 +051800 07:40
r6223 | Aankhen++ | * HTTP::Message: don't specify value for $:headers.
r6224 | Aankhen++ | r6289@tef-base: Aankhen | 2005-08-13 12:37:58 +051800
r6224 | Aankhen++ | * HTTP::Message: removed a todo item.
09:05 _jql is now known as jql 10:57 autark is now known as jp-autark
TheMaaaa does anyone know where I can get nmake.exe 7 for compiling Pugs? 11:18
wilx In MS Visual Studio. 11:21
Alternatively it should be possible to use MinGW/MSYS. 11:22
TheMaaaa ok, thank you very much
wolverian nmake is available at microsoft.com downloads as well. 11:24
13:02 Maddingue__ is now known as Maddingue
dudley theory.csail.mit.edu/~iandc/ 13:11
as if I didn't have a long enough reading backlog
back issues of Information and Computation are available (gratis) dating back to 1995 13:12
autrijus is massively yak shaving ;) 14:35
perlbot: seen iblech
jabbot autrijus: iblech was seen 1 days 16 hours 29 minutes 59 seconds ago
autrijus I think I need three more hackathons to make this all happen 15:07
autrijus ponders staying with dconway, iblech and leo for a while respectively
gaal who was that mathematician who traveled to people's places and stayed with them, helping them with their stuff? 15:08
like, stay with someone, helped him write a paper or solve a problem, moved on 15:09
not exactly a hackathon; more like mathathon.
autrijus gaal: I explicitly said I will start Erdƶsing from 2006 :)
gaal ah, erdos, of course 15:10
TheMaaaa autrijus: iblech will be here in 60 minutes or so
autrijus TheMaaaa: oh cool. thanks
TheMaaaa autrijus: (I'm a friend)
autrijus: np
gaal hey, cool, like a reverse jabbot. 15:11
TheMaaaa lol
autrijus lol
TheMaaaa ;)
gaal willsee gaal
gaal will be seen on spetember 4
autrijus gaal: gaal will be here in -0.5 minutes
gaal willsee perl6 # faq 15:12
you: perl 6 will be ready on christmas
autrijus nah, perl6 will appear right away
15:12 autrijus is now known as perl6, perl6 is now known as is
gaal heh 15:12
is here today!
15:13 is is now known as autrijus
autrijus freenode didn't like frequence nick changing tricks ;) 15:13
so the /nick here and /nick today part was forever lost 15:14
oh well. 15:18
autrijus goes back hacking YAML.
gaal: hm, do you think TelAviv.pm can possibly host me for a month or so? 15:20
gaal with great pleasure! 15:21
autrijus good to hear!
autrijus ticks a box on the map
gaal yay! any time in mind? 15:22
autrijus I don't know, when will you folks be most active for long hacking sessions? 15:23
(like, off-school)
gaal YAPC will probably be in february, gabor (and, well, everyone) will be delighted if you could talk there 15:24
autrijus and that'd be a good time for you and others to hack
?
gaal you are very much invited to stay at my place any time you want (after early september), let me check when the academic year starts 15:25
(i haven't been in school in a while, and anyway here it's different every year)
clkao giggles at autrijus 15:27
gaal TAU begins the fall semester on 2005-10-30, other universities may differ by a week or so
any time is good for me to hack :) i do have to work part time though. 15:28
autrijus when does fall semester end?
clkao: Erdosing is fun... come to think about it you did that a couple years ago too 15:29
gaal 2005-02-03
last day of the semester
autrijus 2006 you mean.
clkao autrijus: are you starting?
gaal er, yes
clkao autrijus: sure i did :) and i also draw nice ascii maps 15:30
autrijus clkao: yeah, will first be off 2005-09-22 ~ 2005-11-15
gaal semester 2 starts 2006-03-05
clkao autrijus: where?
gaal so february might be a great choice. 15:31
autrijus and then 2006-02 ~ 2006-06 hopefully
clkao: .es, .fi, .dk, .nl for the first trip -- maybe more
not sure about .uk ;)
clkao you can use london as hub transitting.. lots of cheap flights
autrijus riight.
clkao and i have couchbed 15:32
gaal once in continental europe, trains are probably more fun than planes
autrijus the second trip is maybe .il, .de, .au -- I'd like to visit .se and .fr as well if possible.
clkao you mean .at
autrijus er I mean .at. 15:33
damn similiar country names.
clkao you are planning far ahread. that's very bad for erdosing
autrijus no, I'm merely dreaming far ahead.
big difference.
clkao ..
autrijus (as in, no committments yet except for .es .nl)
but .il sounds like fun
gaal bounces 15:34
clkao come for 2 weeks and we can rewrite svk in perl6
autrijus right.. that could happen right after p6-to-p5vm
gaal: when will www.perl.org.il/YAPC/2006/ go up usually?
as in dates etc 15:35
if it's mid-feb I think I can manage it
gaal i'll talk with gabor about it.
autrijus cool.
gaal++
clkao didn't gabor want to write svk gui 15:36
gaal yes, he's working on it AFAIK
clkao autrijus: you will see shlomi then!
autrijus clkao: well, that'd be cool too 15:37
gaal he helped me make some good pizza
iblech autrijus: pong 15:46
autrijus iblech: yo!
iblech: I'm de-GADTing PIL1
and working on yaml serialization
and PIL2 will use the same schema
iblech Great! :)
autrijus I think I'll use hash for record type
nothingmuch joins the rejoicing 15:47
autrijus and scalar for nullary constructor
and array for basic algebraic types
iblech All fine with me
autrijus good good.
clkao yaml? isn't json the new thing 15:48
nothingmuch clkao: json isa yaml
gaal json is yaml isn't it? :)
autrijus json (<=) yaml
clkao: look, conclusively proved by three-people-makes-a-tiger rule
clkao lol
nothingmuch autrijus: if you come to israel, would you like to see stuff in reality?
like sounds, and landscapes?
autrijus nothingmuch: not terribly interested 15:49
iblech (BTW, manually parsing the PIL takes ~~50% of the total time needed to compile a .pil to .js, so -PYAML will greatly speed up PIL2JS :))
nothingmuch gaal: see?
autrijus but if you are convinced something is particularly good, maybe
iblech: woot
iblech: even more gain if you revamp YAML::Parser::Syck a bit
clkao get a life! hack in beautiful places!
autrijus since we can link against src/syck/
clkao rather then toliet!
autrijus clkao: tamsui isn't ugly either
clkao s/then/than
autrijus iblech: also, you're @ bavaria.de, right? 15:50
iblech autrijus: Unfortunately, I don't have much C-fu and no XS-foo...
autrijus: Right
nothingmuch bavarian hacking works
;-)
autrijus iblech: how close are you to MĆ¼nchen?
iblech autrijus: 60km, 1h 15:51
autrijus oh, pretty close
iblech: so, I wonder whether you'll have some time in 2006 to hack with me to p6 really happen :)
as in, host me for a month 15:52
s/p6/make p6/
iblech I'd have to ask my parents :)
iblech asks
autrijus if I can find someone nearby to host me, that's possible too. 15:53
worst case we'll just fine a conference and stay for a week :)
s/fine/find/ # fruedian slilp
iblech They can't say for sure, but think it might work
:)
putter hi folks
nothingmuch hi putter
iblech Hi :) 15:54
jhorwitz found his own pugs mascot
www.smashing.org/gallery/album01/100_0443
gaal hee
autrijus iblech: cool. I don't really need to commit to anything right now -- but some idea of when (as in which months) is more convenient would be nice
jhorwitz www.smashing.org/gallery/album01/100_0445
autrijus jhorwitz: cool!
iblech: do you make use of PPos currently? 15:55
it's the only existential used in the GADT, so I'm thinking maybe I'll disable it for now
iblech autrijus: Mid June - Mid August would fit best
autrijus: Yep, $?POSITION is updated
autrijus oh ok 15:56
hm.
maybe one different PPos form at each level then.
iblech autrijus: But np if we remove that
autrijus if you can pick one node to annotate
which one would you like?
the Expression level?
(PExp)
iblech PStmt
autrijus ah. right.
okay, PStmt it is.
so still 15:57
PPos pos exp (PStmt ...)
(PStmt pos exp ...) is maybe too unwieldy
iblech Both fine with me
autrijus k 15:58
putter re yaml on p5, for speed, I suggest -CYAMLp5 , which generates p5 code which can simply be eval()ed. The 15:59
autrijus putter: I think we measure speed after benchmarking :) 16:00
putter (oops) p5 path is worth a fastpath. Can also read yaml, just to validate -CYAML. -CPILp5?
autrijus I have a hunch that p5+syck will be no much slower than full eval.
syck is after all lightning fast at what it does. 16:01
putter re benchmark-before-tweak, oh, yesss, please. :)
autrijus a plus is that we can write yaml transformers at binding level
so we get fully blessed objects back.
putter But outputing p5 is likely comparable in difficulty to getting a new non-trivial XS module debugged. 16:02
That's my main observation.
autrijus outputting p5 is trivial. :)
because we are just dealing with fixed types.
otoh, YAML::Parser::Syck is not a new module.
it exists now etc :) 16:03
putter err, putter starts the day confused... there was talk of XS coding...
s/comparable/easier than/ 16:04
autrijus the syck binding needs some tweaking to have it build against src/syck/
that's all :)
putter ah.
svnbot6 r6225 | putter++ | hack.pod: added vcs web browser links. 16:19
autrijus deGADT complete 16:33
svnbot6 r6226 | putter++ | docs/SEEALSO: added link to YAPC Apocalypse_Now on pugscode.org.
autrijus refactoring is really impossibly easy with this language ;)
iblech: 16:34
{ pilMain = (PStmts {pStmt = PNoop, pStmts = PStmts {pStmt = PPos {pPos = (MkPos "-e" 1 1 1 6), pExp = App (Var "&say") Nothing [Pos (MkPos "-e" 1 5 1 6) (Val (VInt 1))], pNode = PStmt {pExpr = PExp {pLV = PApp {pCxt = TTailCall TCxtVoid, pFun = PExp {pLV = PVar {pVarName = "&say"}}, pInv = Nothing, pArgs = [PLit {pLit = PVal {pVal = VInt 1}}]}}}}, pStmts = PNil}})
iblech: I don't think I can push this back in good conscience before I work out an alternative to you :)
iblech: so... your p5 classes are based on the variant tags 16:35
right?
as in, PBind gets a class
but PLvalue does not
iblech autrijus: oooh, nice :) 16:36
Currently, both get a class
but PBind is bless [...] => "PIL::PBind" and
Infinity (e.g.) is bless [] => "PIL::Infinity"
autrijus ooh very clever.
but I take you'd rather work with $bind->{LHS} 16:37
instead of $bind->[0]
right?
autrijus ponders pseudohashes
iblech very much so
autrijus ok.
then install DrIFT :)
I'll take a stab.
you'll be able to use Pugs.CodeGen.Perl5 16:38
but to hack it you'll need DrIFT.
iblech ok
autrijus (and haxml too, while you are at it :D) 16:39
(that's plan B if yaml doesnt work out)
putter makes daily pilgrimige to nothingmuch's smoke, hoping for a real report on rules... but the gods are silent... 16:41
stevan autrijus: what no .us in your travel plans? 16:44
stevan is feeling left out
autrijus stevan: well, if the airport insecurity thing can be fixed... 16:47
then maybe :)
gaal stevan, come to .il! :) 16:48
autrijus doubt the fingerprinting + mugshot + rude search thing will be fixed in the next 2~3 years somehow
stevan: but I'll happily meet you in .ca... or .cu :D 16:49
gaal too bad airport security isn't refactorable haskell.
autrijus yeah, isn't it.
gaal can americans come to .cu ?
...and not guatanamo?
autrijus via nonamerican transport means, I think
rofl
let's _not_ hold a hackathon at guantanamo.cu. 16:50
gaal actually there's part of the bay that's guantanamo*.cu* i think 16:51
jose ...something, i forget, wrote a poem that made it into a famous song..
"hujira ganatanamera" - means country girl from guantanamo.
(jose santiago maybe?) 16:52
autrijus yeah, good song
JosƩ Martƭ
o/~ Yo soy un hombre sincero / De donde crecen las palmas o/~ 16:53
svnbot6 r6227 | putter++ | STATUS: added section on rules. renormalist++ 17:02
autrijus now writing DrIFT instances... 17:12
svnbot6 r6228 | putter++ | STATUS: shorten section on rules.
stevan autrijus: I will try to work on the airport insecurity thing, but since our votes don't really count it is kind of hard ;) 17:18
stevan has long pondered moving to .ca anyway ....
ok, gotta go do real-world stuff & 17:19
gaal autrijus, where will you be arriving to .il from?
autrijus gaal: I don't know yet. 17:23
maybe .tw, maybe .at, maybe other places. 17:24
woot, I accidentally wrote a generic dump-any-haskell-expression-to-perl5-objects thing
should be useful for other projects as well
Aankh|Clone :-o
gaal okay, i'll provide you with travel tips as it becomes closer
hee!
Aankh|Clone I wish I had accidents like that...
17:24 Aankh|Clone is now known as Aankhen``
autrijus Aankhen``: you'll note that most of my pugs development efforts happened by accident :) 17:25
Aankhen`` Heh.
17:37 _SamB_ is now known as SamB
putter lol 17:38
gaal reading through the haskell prelude, i saw this: 18:29
unzip = foldr (\(a,b) ~(as,bs) -> (a:as,b:bs)) ([],[])
what's "~" ?
(the Report implementation, haskell.org/onlinereport/standard-prelude.html )
hmm, better ask on #haskell... 18:30
ods15 ~ is binary NOT 18:50
atleast in C it is :P
gaal ods15, i found my answer in #haskell 18:51
it isn't binary not :)
fwiw, section 4.4 here: www.haskell.org/tutorial/patterns.html
autrijus iblech: ping 19:14
iblech autrijus: pong
autrijus iblech: I have done DrIFTing. may I mercilessly break your code?
iblech autrijus: Sure :)
autrijus ./pugs -CPerl5 -e 'print f(3); sub f { $_ - 10}'
pilMain => bless({pStmt => bless({pPos => bless({posName => "-e",posBeginLine => 1,posBeginColumn => 1,posEndLine => 1,posEndColumn => 11} => 'MkPos'),pExp => (undef),pNode => bless({pExpr => bless({pLV => bless({pCxt => bless(['TCxtVoid'] => 'TTailCall'),pFun => bless({pLV => bless({pVarName => "&print"} => 'PVar')} => 'PExp'),pInv => (undef),pArgs => [bless({pLV => bless({pCxt => bless([bless(["Any"] => 'MkType')] => 'TCxtItem')
etc :)
perl5 likes it. 19:15
I _think_ it's the best form available to you
feel free to tweak the production rules if it isn't
clkao yuck! 19:16
autrijus also you can continue to parse the old "Show" format
but it's now all record types
so you'd need to deal with that
-CPIL still works
as does -CPIR and friends
DrIFT++ # supremely powerful
iblech Right. I'll probably port PIL2JS to -CPerl5 tomorrow then :) 19:17
autrijus iblech++
the class name in particular needs some work
iblech autrijus++ # You did -CPerl5 :)
autrijus but I'm sure you can figure it all out.
:))
iblech Yep :)
autrijus -CPerl5 is faster than -CPIL, amazingly. I wonder how is it possible. 19:22
svnbot6 r6229 | autrijus++ | * de-GADT PIL structure -- likely to break all PIL2JS work
r6230 | autrijus++ | * The "Perl5" code generator backend is upon us!
r6230 | autrijus++ | ./pugs -CPerl5 -e 'say "Hello, World!"' | perl -MO=Deparse -
autrijus and perl5 likes Test.pm
compiled to perl5
hurray.
nb. "compiled to perl5 data structure", not "compiled to perl5 code"
but now a naive perl5 runtime for PIL classes may not be that hard :)
autrijus dreams on 19:23
putter woot! 19:24
autrijus++
autrijus :)
putter: in particular, the naive perl5 runtime you worked on is made much easier 19:25
it takes 0.1sec to load in the compiled Test.pm on perl5 19:26
putter Could someone summarize the difference between tests run under make test and via ./pugs -Iblib6/lib t/foo.t? Does make test check exit code or stderr? I'm getting failures under make test I dont see directly. :/
autrijus same time needed to load the Test::More perl5 module
it checks exit code 19:27
putter ah, thanks.
re runtime, yes. :)
I mostly did my "perl5 runtime in a day" because, well, it was on your (interview) near-term todo list, and I wanted to show that it was easier, and a more immediate option, than some folks were thinking of it as. iblech then went amazing with the JS backend. we didnt need two backends pushing the envelope, so I dropped p5. anyone should feel free to pick it up. and overhaul or toss the existing code. 19:42
svnbot6 r6231 | putter++ | perl5/PIL-Run/TODO: updated.
iblech autrijus: svk add src/Pugs/CodeGen/Perl5.hs? :) 20:08
svnbot6 r6232 | putter++ | t/rules/rules.t: todo'ed many tests. All tests now pass when run standalone, but _not_ when run by make test. The choice of :todo<bug> vs <feature> was semiarbitrary. And some of the tests are no doubt incorrect.
iblech ("Could not find module `Pugs.CodeGen.Perl5'") 20:10
fglock_ hi 20:49
putter hi fglock.
fglock_ hi putter 20:50
i've a few questions on the metamodel
putter oy. three tests in subrule.t are currently failing with embedded parrot, but not with external. a PGE parse failure, unknown rule mumble. so create a pugsbug test. only... the contents of the test documentation _pod_ can toggle the bug on and off. arg! sigh. 20:52
fglock_ the metamodel it is the infrastructure that the runtime will use to create objects, right?
putter is almost certainly not the right person to ask...
fglock_ :) 20:53
i'm a newbie here
integral the metamodel in .../src/PIL/MetaModel.hs for the haskell PIL evaluator at least 20:54
fglock_ integral: I'm writing a runtime library - I'm supposed to use the metamodel to create my objects, right? 20:55
iblech Hm, FWIW, PIL2JS does not use the MetaModel to store the builtin types (Int, Num, Str, etc.) 20:56
integral *a* metamodel :-) You'll need to port it to the target system. eg. there's metamodels written in perl5 and javascript
iblech In PIL2JS, the MetaModel is used only for user-defined methods and for dispatching -- i.e. you can still write a method acting on Num, and your call will be correctly dispatched, even though there're no Num objects 20:57
integral err, is the build broken for others?
iblech It is, apparently autrijus forgot to checkin src/Pugs/CodeGen/Perl5.hs 20:58
integral ah
putter there are a few flavors of metamodel around. describing both how objects should behave, and various ways to bootstrap the object system. obviously, your runtime's behavior should conform, but you can use a different bootstrap if you like. eg, if your runtime is lazy, some things get easier.
fglock_ I mean, is there any use to write a "hash" runtime library to Perl5, for example? 21:00
except for having the object system "right"
putter long term, you should be able to just implement a functional non-oo core, and then just load an oo system written in p6. but that doesnt exist yet.
fglock_ putter: ok, I get it 21:01
so you only implement in the non-oo core the things you don't have natively 21:02
why do I get "::Rat" for floating number refs, instead "::Num" in Pugs? 21:11
iblech ?eval (1/3).ref 21:14
evalbot6 ::Rat
iblech ?eval sqrt(2).ref
evalbot6 ::Num
iblech ?eval (1/3).isa(Num) 21:15
evalbot6 bool::true
fglock_ ok. I guess it takes 1.345 == 1345/1000
iblech yep 21:16
?eval 1.34500000000000000000000000000000000000000001
evalbot6 1.345
iblech ?eval 1.34500000000000000000000000000000000000000001.ref
evalbot6 ::Rat
iblech ?eval 1.345000000000000000000000000000000000000000000000000000000000000000000000000000001.ref
evalbot6 ::Rat
iblech ok :)
fglock_ ?eval int(Inf) 21:19
evalbot6 179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216
fglock_ Pugs has 3 types of values - Item, List, Control - what is "Control"? 21:22
svnbot6 r6233 | putter++ | t/pugsbugs/rules_with_embedded_parrot.t: created. 'Cannot parse PGE: <?once>' errors can result from pods and comments, elsewhere in the file, having or not having random alphanumeric text. But only with embedded, not external, parrot. Parser instablility??? I'm baffled.
putter Creating that test file was like working with magic. Try describing the problem in the pod... without the description making the problem go away. Eeep. 21:25
iblech Control is what, for example, exit returns 21:27
I.e., exit returns a Control, and the runcode calls Haskell's exit if it sees an appropriate Control 21:28
s/runcode/runcore/
coral wtf 21:29
coral looks at "int(Inf)"
out of curiosity what *is* that number
fglock_ coral: I think it is "maxint"
iblech ?eval 2**1024
evalbot6 179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216
coral ok
iblech ?eval int(-Inf) 21:30
evalbot6 -179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137216
coral ?eval int(Inf) == Inf
evalbot6 bool::true
coral ?eval 1+Inf == Inf
evalbot6 bool::true
iblech ?eval 1+int(Inf)
evalbot6 179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137217
coral heh!
iblech hrm 21:31
coral ?eval 1+int(Inf)-Inf
evalbot6 NaN
putter ?eval 3+int(Inf)
evalbot6 179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137219
putter ;)
iblech ?eval int(Inf)*int(Inf)
evalbot6 323170060713110073007148766886699519604441026697154840321303454275246551388678908931972014115229134636887179609218980194941195591504909210950881523864482831206308773673009960917501977503896521067960576383840675682767922186426197561618380943384761704705816458520363050428875758915410658086075523991239303855219143333896683424206849747865645694948561760353263220580778056593310261927084603141502585928641771167259436037184618573575983511523016459044036
fglock_ I guess it uses bigints
coral but not biginfs :) 21:32
putter "I'll see your infinity, and raise you one." ;)
lol
coral ?eval 1+int(Inf) > int(Inf)
evalbot6 bool::true
coral ?eval 1+int(Inf) > Inf
evalbot6 bool::true
fglock_ ?eval +(int(Inf) ~ int(Inf)) 21:33
evalbot6 Inf
coral blinks
?evanl -1+int(Inf)
?eval -1+int(Inf)
evalbot6 179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137215
coral ?eval int(Inf)-1
evalbot6 179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137215
putter ?eval int(Inf-Inf) 21:34
evalbot6 -269653970229347386159395778618353710042696546841345985910145121736599013708251444699062715983611304031680170819807090036488184653221624933739271145959211186566651840137298227914453329401869141179179624428127508653257226023513694322210869665811240855745025766026879447359920868907719574457253034494436336205824
iblech ?eval int(NaN) 21:35
evalbot6 -269653970229347386159395778618353710042696546841345985910145121736599013708251444699062715983611304031680170819807090036488184653221624933739271145959211186566651840137298227914453329401869141179179624428127508653257226023513694322210869665811240855745025766026879447359920868907719574457253034494436336205824
jql interesting 21:37
and, seemingly, wrong
I find is especially fascinating that int(Inf)*int(Inf) > int(Inf) 21:38
putter ?eval NaN.as("%d")
evalbot6 \'-269653970229347386159395778618353710042696546841345985910145121736599013708251444699062715983611304031680170819807090036488184653221624933739271145959211186566651840137298227914453329401869141179179624428127508653257226023513694322210869665811240855745025766026879447359920868907719574457253034494436336205824'
putter ?eval NaN.as("%f") 21:39
evalbot6 \'NaN'
putter ?eval NaN.as("%x")
evalbot6 \pugs: Ix{Integer}.index: Index (-269653970229347386159395778618353710042696546841345985910145121736599013708251444699062715983611304031680170819807090036488184653221624933739271145959211186566651840137298227914453329401869141179179624428127508653257226023513694322210869665811240855745025766026879447359920868907719574457253034494436336205824) out of range ((0,15))
jql chuckles at the idea of C<undef but Inf> 21:40
putter lol 21:41
chr(Inf)
?eval chr(Inf)
evalbot6 '
jql my unicode doesn't go that high, clearly
putter ?eval chr(Inf).bytes
evalbot6 1
putter ?eval ord(chr(Inf))
evalbot6 0 21:42
jql evalbot sent \0 to the server? no wonder the closing quote was lost
?eval Inf > -Inf 21:43
evalbot6 bool::true
jql ?eval 0 > -0
evalbot6 bool::false
jql okay, haskell isn't totally wacked out crazy 21:44
fglock_ see you later 21:51
Aankhen`` Yeesh. 21:53
Crazy spammers. :-P
putter re unicode, looks like 1114111 is the largest $n for which ord(chr($n)) == $n... :) 21:55
Aankhen`` goes to sleep. 21:58
iblech Night :) 21:59
putter g'night!
iblech goes to sleep, too
putter g'night iblech!
Aankhen`` G'night.
putter << >> .pop .push rx:bytes/^(.)(.)(.)/ 22:00
(probably got the shift operators wrong though...)
rx:bytes:3x/(.)/ 22:02
jql not quite the same... ^ 22:47
err
wtf am I saying?
jql kicks himself in the thinking part 22:48
dbrock what do you mean? is it the same? 22:57
putter the only way rx:bytes/(.)/ can fail is if .bytes (ie, length) < 1. in which case rx:bytes/^(.)/ will fail too. 23:00
dbrock oh, right, and if it matches, it will always match at the start of the string 23:02
putter right 23:04
Ok, I have some rules tests which (1) work when run ./pugs -Iblib6/lib t/foo.t, (2) fail in make test and harness, (3) still fail with ok(eval('...')...). Any suggestions other than skip those (200+) tests? 23:28
wilx Yeah, fix the cause of the failures :) 23:30
putter ;) Unfortunately, that's likely to take several people a month or few. 23:32
Well, depends on the people of course. It might just be a few days of intense hack-attack. 23:33
Hmm, I realize I've been potentially unclear about :todo status. for example, the following modified line from rules.t 23:35
is(eval('("a]" ~~ /a]/ && $<>)'), "a]", 're_tests 96/0 (#126)', :todo<bug>); 23:36
shows up TODO when run standalone, but is recorded as a test failure under make test.