6.2.11 released! | pugs.blogs.com | pugscode.org | pugs.kwiki.org | paste: sial.org/pbot/perl6 | < audreyt> my fingers juxpatosed
Set by nothingmuch on 24 February 2006.
00:02 jisom joined
pasteling "putter" at 66.30.119.55 pasted "fglock: this works..." (6 lines, 123B) at sial.org/pbot/16206 00:07
00:19 Shachaf joined 00:22 mako132_ joined
TimToady fglock: syntax "rule word rx:perl5{^([_[:alnum:]]+)}" is not legal because :foo{x} interprets {x} as a closure or hash argument to :foo. 00:23
00:24 vborja joined
TimToady (also you can't combing "rule" and "rx" like that. A rule requires a block.) 00:25
putter rule word :perl5 {^([_[:alnum:]]+)} ? 00:39
TimToady That's fine. 00:42
Except we also changed it to :P5... But in any event it doesn't 00:44
take effect till inside the {...}.
Juerd TimToady: Is there a specific reason for having both rx and rule?
TimToady A rule is supposed to look like a declaration in void context, and 00:45
rx// is supposed to look like a quote-like thingie.
the rx form lets you pick delimiters.
Juerd Why could the rule form not let one pick delimiters? 00:46
TimToady The rule form doesn't...
Juerd Note by the way that I like the syntax, but couldn't answer this question when someone asked me today :)
TimToady I dunno--we don't let people pick their delimiters on sub {...} and
such...
Juerd Because those are code, and code is always in { } :) 00:47
TimToady A rule is just a method declaration till you get inside the {...}.
Juerd I see
TimToady Except we also use :foo instead of "is foo".
It's not terribly consistent...
Juerd We could have :foo to mean is foo for methods too, perhaps, for consistency 00:48
TimToady I think that could only lead to great ugliness...
Juerd No uglier than in rules :)
TimToady The only reason we allow it on rules is to look like rx//
Juerd It's the same syntax :) 00:49
But... isn't the point of rule to look *different* than rx?
Otherwise I really don't get it :)
TimToady I'd be more inclined to allow "is P5" on a rule than allow :rw on a method... 00:50
Juerd Hmm; I see
TimToady But as I say, it's not terribly consistent...
Juerd files this under aesthetics :) 00:51
An underused folder in Perl anyway...
TimToady More like anaesthetics... :-)
Juerd I try to use the positive words ;)
Have you seen the Coverity report, by the way? Perl scores quite well :) 00:53
TimToady Whazzat?
Is that the security thing just mentioned on /.?
Juerd Coverity is some closed source lint-like security analysis tool; Probably as a marketing trick, they ran open source projects through it, including Perl. 00:54
Probably; I haven't seen Slashdot.
An overview of the results is posted at scan.coverity.com/
TimToady Yes, official name is "Open Source Hardening Project" by Coverity.
jisom they don't give a perl version 00:55
Juerd I never remember such names if they don't have cute acronyms
jisom: 7
jisom 5.7.0?
Juerd jisom: 7.4.2 00:56
wolverian meh, I can't believe xmms would have that few defects. it's obviously crap. :) 00:57
jisom there's a perl 7.4.2?
Juerd wolverian: That's what they get for forgetting to focus on usability :)
jisom think that openssl has 66....
Juerd jisom: Didn't you know that Perl 6 was obsolete? ;) 00:58
jisom well, it is like four years old?
Juerd jisom: Depends on when you start counting
jisom 0
Juerd When.
jisom like a normal person
oh 00:59
it'd be nice if they did this kind of report for windows, osx, linux, freebsd, openbsd, etc....see how they compare, I hope the DoD can keep a secret 01:00
well, DHS
TimToady What's an "Outstanding Defect Report"?
Juerd TimToady: Well written, I'd say :) 01:01
jisom something their heuristics say is a bug most likely
like a compiler warning :) 01:02
TimToady or passing a null-terminated string to a syscall expecting a null-terminated string. :-)
or use of unicode.
Juerd Use of unicode is particularly scary. 01:03
TimToady or use of C.
Maybe they just count the number of void* occurrences... 01:04
Juerd I'm going to bed (with the comforting thought that PHP has more than twice as many "defects" per kLoC)
TimToady PHP has more than twice as many of just about everything... 01:05
'Nite Juerd. 01:06
FurnaceBoy *cough* users *cough*
Juerd Good night
zzZ
FurnaceBoy: See juerd.nl/perl_php :)
afk
FurnaceBoy heh thx 01:07
TimToady FurnaceBoy: I believe your "ab" keys aren't working consistently.
FurnaceBoy :-)
dduncan Juerd, nice one 01:44
buu Juerd: Cute. 02:34
02:36 drbean_ left 02:40 handon joined, r0nny joined 02:45 Kattana joined 02:48 netgear-h4x3r joined
netgear-h4x3r DCC SEND "string" 0 0 0 02:48
02:48 netgear-h4x3r left, wilx`` joined 03:06 amnesiac joined 03:22 jvictor joined 03:24 jvictor left 03:26 hexmode joined 03:34 handon is now known as vborja 03:43 mako132_ joined 03:59 FurnaceBoy_ joined 04:16 kisu joined
svnbot6 r9335 | putter++ | iterator_engine.p6 - ruleop::greedy_plus fix. I suspect it was an issue of p6 not passing @_ implicitly (which may also arise elsewhere), but the adjacent p5 sample code suggests otherwise, leaving me uncertain why the fix worked. 04:31
04:40 beppu_ is now known as beppu 04:52 kanru2 is now known as kanru 05:18 huhlig joined
huhlig an hash is not destroyed if its reference goes out of scope righ 05:18
right
05:22 vborja joined
huhlig right? 05:22
05:28 justatheory joined 05:30 justatheory joined
jjore-home In what language, huhlig? 05:38
05:39 jjore-home is now known as jjore
huhlig perl 05:57
question, how well does perl do saving stuff to the HDD 05:58
jisom what are you saving?
ayrnieu huhlig - it does this as well as anything.
huhlig I need to prolly stuff 17mb of xml to the HDD 05:59
how long would that take and how bad would the halt to the system be
jisom wonders why he seems to be using windows for a server
huhlig devel only 06:00
It will be running on linux
jisom ok, then it'll take a little bit of time(but that'll happen for even cp), but nothing major to worry about
huhlig well this is running on a game server, 06:02
I want it to do so every few minuites
would there be a way I could point a forked process to a data table 06:05
jisom "perldoc perlipc" comes to mind
huhlig in the main program so the server didnt freeze during a save
or something so that saving 20mb of data doesent suddenly halt the server 06:07
jisom why does it need to be xml?
huhlig easy to use
I suppose I could use binary for the datafile
ayrnieu FSVO easy. But anything is easy to use if you have programs that use it.
huhlig FSVO?
ayrnieu for some value of. 06:08
jisom use Serializable or whatever it's called
huhlig ahh
I basically need to store "<spawn loc="HS" x="0" y="0" z="0" onum="0" quantity="999"/>
or some equivlent
ayrnieu Saving the entire state of the world doesn't seem necessary. The entire world won't change that frequently -- you'll instead of localized mutation, which you ought to be able to serialize seperately. 06:09
instead have localized.
huhlig so I should have a changed flag?
and only save whats changed?
ayrnieu you should have something other than saving the entire world.
huhlig hmmm
ayrnieu with a sufficiently clever VM, you could save the entire world at intervals, and then otherwise save only instructions. 06:10
huhlig instructions?
ayrnieu yes. state-changing commands. 06:11
huhlig isnt understanding
ayrnieu so a restore would simply apply the saved instructions to the saved world.
huhlig what instructions
these are instances of a objects in the world
ayrnieu no.
huhlig no? 06:12
huhlig isnt understanding you
ayrnieu You have the entire state of the world, yes? Well, at some point you want to change the state. Maybe you flag an object as OMG ON FIRE. So, you do that and -- at the same time -- save this instruction. "flag object FOO as OMG ON FIRE"
This is all. At intervals you serialize the entire world, and between world-saves you save instructions that would mutate the last-saved world into the current world. 06:13
huhlig hmmm 06:14
that seems far more complicated
why not simply store the state of changed objects
ayrnieu It depends on your architecture, of course.
huhlig question...
what would be the best way of removing and saving new entries or upating entries
ayrnieu It depends on your architecture, of course.
huhlig without rewriting the entire file
well... you suggested something other then xml 06:15
any suggestions?
ayrnieu I don't know what you're asking.
huhlig on what format to save it as 06:16
so that I can update only small parts of the file rather then the entire thing
jjore A database helps with that kind of thing.
ayrnieu well, databases generally offer this capability.
jisom wishes pack/unpack could be used directly on filehandles 06:17
huhlig yes...
I know
sigh
and I come back to using mysql
jjore jisom, ever try the (...)* format to unpack/pack?
There are plenty of databases that aren't mysql. I'd never use the thing, personally.
huhlig oh?
is there something far lighter that can be distributed as part of the pack 06:18
?
jjore prefers BerkeleyDB and PostgreSQL.
huhlig and would it be best to sync with a DB or to run using the DB
jisom jjore, but the N/a* or whatever format requires you to read that data in first before pulling it out
huhlig I thought BerkeleyDB was a file format
jjore jisom, aya.
BerkeleyDB is a database.
ayrnieu as the name suggests. 06:19
huhlig I hear good things about Postgres but it and I bever seem to get along
jjore So what language have you been asking your many questions about?
Perl 5? Perl 6? Something written in parrot? Against Pugs?
huhlig perl5/6
more I have been picking ayrnieus brain 06:20
ayrnieu hah, you reject every design I suggest.
huhlig no I dont
huhlig has taken quite a few of the ideas
huhlig will probobly move this to a DB if he can get it to work right 06:21
jjore Using a DB means you only write out the parts that change and you delegate all the hard work of storage to someone else.
huhlig true
so the question becomes
do you sync with the DB 06:22
or use the DB as your datasource
jjore synching implies you've taken over caching. That's a task that's already handled by your DB. Usually. 06:23
huhlig so I should just connect to the DB directly 06:24
jjore But you know, it depends on what's appropriate and makes sense.
huhlig and use that as my internal data structure
jjore It's a typical way to use a db.
huhlig basically right now the main program has several data structures that store all the data and will sync it to the HDD
would it be more prudent to sync it to the DB or does the DB handle the sync on its own without a performance hit 06:25
huhlig wonders if a ton of transactions will slow it down too much
without putting this on a huge rack server
jjore You just asked "If I make it do lots of work, will it be slow?" 06:26
Answer that one yourself.
jisom well you have to consider processor speed, hard drive speed, how cluttered the hard drive is and how optimized it is.....those are things beyond the language or database
huhlig well its more of which would be wiser... 06:27
using the DB as the tables, or sync with the tables
jjore You are wasting your time doing all this optimization up front. Make it work, then find out whether it needs to be faster. Profile it to see where and why.
huhlig ok
huhlig goes off to rip out some code
jjore Also, because you are wasting your time, you are also wasting ours.
ayrnieu You actually /want/ to not get all of this exactly right. It'll give you practice with rewriting a functional perl6 program :-) 06:28
huhlig heh
true
jjore Not that these are all null questions, they aren't. You just don't know which one you really want to ask and can't know that til later.
ayrnieu You'll have the pleasure of having a populated world, and wanting to change the program underneath the world.
06:28 FurnaceBoy_ left
huhlig true 06:29
is BDB standalone?
jjore BDB is standalone.
There's no separate process.
huhlig ok
jjore It's one reason to be a fan of it. Heck, Oracle just bought the company that makes it a month or few ago. 06:30
huhlig oh... 06:31
uh ok
uh oh
sleepycat right
jjore I hear it's default caching can often be tweaked for performance gains. Like maybe it's slim by default with little cache.
perrin's written some articles about that on perlmonks
huhlig hmmm 06:32
ok
jjore What is the debian/ directory? 06:33
huhlig the directory that has debian compile information 06:35
and packaging
jjore Can I drop a README in that directory stating that? 06:37
or does that break the packaging?
ayrnieu toplevel SUBDIRS ?
t is for tests, be they pass or fail 06:38
jjore There's no t directory in that.
What is dist/?
ayrnieu oh, not talking about pugs 06:39
jjore What is inc/? 06:42
ayrnieu so... what *do* you speak of?
jjore Root level directories that have no READMEs. 06:43
06:43 TimToady joined
ayrnieu root-level directories of what? 06:43
jjore pugs. Sorry, I thought that was implied.
ayrnieu uh, it was, but then you said that the thing you spoke of did not have a "t directory" 06:44
so, anyway, I suggest a toplevel SUBDIRS file for this basic 'what are all these directories?' documentation, rather than scattered README
jjore I thought there might be more to say about each thing and I know I'd prefer scattered, locally present READMEs to a single file. 06:46
When I responded back about t, I thought you meant the contents of debian/ then. Cuz t/ in the root of pugs or anywhere is perty obvious. 06:47
Not that it'd be bad to have a README saying that tho.
06:47 kerx joined
kerx hi guys, anyone can tell me a bit about Mail::Bulkmail's internals? 06:48
jjore thought Mail::Bulkmail was Juerd's module.
kerx Jim Thomason 06:49
wrote it
(www.jimandkoka.com)
huhlig jjore, what module do you use for using BerkeleyDB, BerkeleyDB-0.27? 06:55
jjore I've used the BerkeleyDB module.
Whatever's been latest.
It's been awhile tho.
huhlig ok 06:56
there are a few
jjore I rarely care about building db and schemas these days.
ayrnieu relating to this conversation: thedailywtf.com/forums/62046/ShowPost.aspx 06:57
huhlig ahh
jjore What do you mean,"there are a few?"
There's the granddaddy and then I guess that ::Lite thing which I wouldn't bother with, probably.
That WTF rox, ary. 06:59
ayrnieu it's the most horrible WTF I have ever seen. 07:00
obra has there been a perl6 wtf yet? 07:01
jjore will port his Data::Postponed to perl6 and *then* there will be a WTF.
07:04 GeJ joined 07:05 drrho joined 07:09 kerx left
Juerd 07:48 * jjore thought Mail::Bulkmail was Juerd's module. 07:16
Huhu?
s/Huhu/Huh/
That's weird.
07:21 vborja joined 07:27 jisom_ joined 07:28 justatheory joined 07:31 nothingmuch joined
jisom_ /help 07:41
07:42 ghenry joined, jisom_ is now known as jisom, Odin- joined 08:01 Aankhen`` joined
nothingmuch jisom: what about? 08:08
purl: .is?
jisom huh?
nothingmuch aaaaaaah! npo purl
jisom: you said "/help"
08:08 iblechbot joined
jisom oh, didn't know my irc client would actually send it to the room 08:08
nothingmuch h 08:09
oh =(
jisom was getting rid of the underscore
nothingmuch =)
oh wait, this is not #catalyst, we have no purl
damnit
jisom #parrot has purl....
but #parrot isn't on freenode
nothingmuch yes 08:10
most irc.perl.org channels have an infobot 08:11
perl channels, that is
we need an infobot clone in perl 6
use perl5:DB_File;
szbalint That would be interesting to implement 08:12
ayrnieu jisom - you had a space in front of the slash, so your client sent it to the channel. A silly feature -- IRC clients ought to ignore /^\s+/, and just make it easy to send messages which ought to begin with a slash. 08:13
easier than /msg #channel /help
szbalint I like how irssi does this 08:14
ayrnieu how does irssi do it?
szbalint The space thing is a good thing to have
jisom seems nothing happens without the space....
szbalint but if you want to send something to the channel
ayrnieu I think it's an undesigned thing that IRC clients happen to have.
szbalint which begins with slash you just use
/ /something 08:15
nothingmuch /say
ayrnieu /something ?
oh, that's a good way :-)
nothingmuch finally off to work... ciao!
ayrnieu has never read irssi documentation.
szbalint I haven't read it thoroughly either :)
ayrnieu irssi distinguishes itself with reasonable defaults; I assume that OpenBSD would have at least patched closed any helpfully default 'sploits :-) 08:16
jisom only if openbsd considers irssi part of their core operating system 08:18
and they don't consider X part of it
avar do they even consider stuff like the kernel part of the core OS?;) 08:19
jisom I hope so 08:20
08:25 ayrnieu joined 08:28 bsb joined 08:30 gaal_ joined 08:31 gaal_ is now known as roo 08:32 roo is now known as foosroo
szbalint you've got a nice ident gaal :) 08:38
azuroth heheh. I guess that's the web-based IRC client on feather? 08:40
Aankhen`` In mIRC, I just press Control + Enter to send a message starting with a slash. 08:43
08:44 nothingmuch joined
foosroo yeah, Juerd++ 08:46
jisom waits for socket support in parrot to write his own irc bot 08:47
pasteling "ayrnieu" at 68.13.103.15 pasted "doo dee doo" (5 lines, 247B) at sial.org/pbot/16211
jisom I like "push @newblock, $i >> (7 - $j << 3) & 0xff;" 08:49
:-D
nothingmuch err 08:51
foosroo subject of a spam message I just got: Make your python work without troubles. Super Viag...
nothingmuch shift right by something shifted left 3 times? isn't that almost always going to be 0 ?
jisom no
order of operations :-p
nothingmuch oh
jisom it's reduced to using the fewest number of parenthesis as possible
nothingmuch & is higher prec than >> ?
jisom I have six lines of comments for that line 08:52
foosroo was trying to parse that as hyperops
ayrnieu jisom - that is normal. Happens every other Tuesday.
jisom well documented and fast is better than poorly documented and slow 08:53
foosroo self-documenting and fast is best 08:54
ayrnieu assumedly self-documenting and fast but in fact multiply encrypted and pathologically slow? This is the worst in all the land. 08:55
08:56 Odin- joined
ayrnieu Such code shall be shamed, event into the tenth generation. 08:56
jisom I do tend to write self documenting code.....but for this instance, I choose six lines of comments instead
szbalint unix.rulez.org/~calver/pictures/curves.jpg 09:16
hahah
jisom what are the x and y axis?
and if I remember right, emacs has so much stuff it's not an editor anymore
szbalint I guess x is time
jisom emacs just needs it's own kernel and it's an os 09:17
szbalint and y is knowledge of capabilities
jisom obviously from someone who prefers vim(not vi), which I do prefer
09:57 KingDiamond joined
nothingmuch jisom: see also emacos 10:27
basically, this was a practical joke someone plaid on someone else 10:28
the someone else was an avid emacs user
the someone replaced the someone else's rc script with something that runs emacs instead of getty
and then ran the rest of the (slightly trimmed) boot process from inside emacs 10:29
rgs ha, ha
10:32 elmex joined 10:38 nnunley joined
szbalint rotfl 10:45
10:45 wilx`` is now known as wilx
nothingmuch E an Egyptian with things from a tomb 10:47
i love edward gorey
btw, happy international women's day, everyone 10:48
rgs esp to women !
nothingmuch aye 10:49
10:50 pdcawley joined
ayrnieu ?eval 1/356 10:58
10:58 evalbot_9314 is now known as evalbot_9335
evalbot_9335 1/356 10:58
ayrnieu ?eval 1/356.0
evalbot_9335 1/356
ayrnieu 1/356.as("%0.0f") 10:59
?eval 1/356.as("%0.0f")
evalbot_9335 2.8089887640449437e-3
nothingmuch ?eval (1 / 356)
ayrnieu yeah, those arguments are ignored.
nothingmuch oh
it's because it's prolly a rat 11:00
evalbot_9335 1/356
ayrnieu oh, right.
?eval (1 / 356).as("%0.7f")
evalbot_9335 \"0.0028090"
11:00 feng joined
nothingmuch ?eval (1 / 10)/2 11:01
evalbot_9335 1/20
rgs hmm rationals
ayrnieu ?eval 1/356.as("%f").as("%0.7f") # distressed that even this does not work.
evalbot_9335 2.8089887640449437e-3 11:02
ayrnieu ?eval ("2.8089887640449437e-3"+2).as("%0.7f") # not a problem with taking the string as a number. 11:03
evalbot_9335 \"2.0028090"
nothingmuch ayrnieu: why do you need a float?
for display? or math? 11:04
ayrnieu nothingmuch - at first, I just wanted to say that we appreciate women THIIIS MUUUCH, but now I'm really puzzled at .as behavior.
nothingmuch ayrnieu++ 11:05
=)
ayrnieu ?eval (1/356.as("%f")+0).as("%0.7f") # OK.
evalbot_9335 \"0.0028090"
nothingmuch eeeeeeeeeeeeeeeeeeeeeek
Juerd ayrnieu: . is tighter than almost anything else, but certainly than / 11:08
ayrnieu: 1/356.as() is 1/(356.as())
?eval (1/356).as("%f")
evalbot_9335 \"0.0028089887640449437"
ayrnieu oh. 11:09
:-)
ayrnieu puts away Rat::as subroutine.
Juerd Awwh
Keep a precedence table around you for reference at all times :) 11:10
Juerd has perlcheat for perl5
11:13 nothingmuch_ joined, nothingmuch_ is now known as nothingmuch 11:15 xern joined 11:20 kane_ joined 11:22 integral joined, feng joined 11:24 feng123 joined 12:06 chris2 joined 12:18 srcmaster joined 12:22 srcmaster is now known as uszr` 12:24 uszr` is now known as srcmaster 12:45 jiing joined, jiing_ joined 13:06 Limbic_Region joined 13:08 kolibrie joined 13:10 Ara4n joined
Limbic_Region audreyt ping 13:16
13:16 iblechbot joined 13:28 fglock joined
fglock putter: why do I have to use 'sub{$alt.(@_)}' when '$alt' should mean the same? 13:36
LeTo Limbic_Region: audreyt is currently travelling to Vienna by train 13:40
nothingmuch no wifi on the train?!!
;-)
LeTo nope
nothingmuch what are your hackathon plans? 13:41
LeTo object space mainly: pugs->parrot
Limbic_Region thanks LeTo
my Pugs has somehow inexplicably become dependent on Cygwin 13:42
Limbic_Region can only imagine it has to do with the zlib stuff
but to confirm - I need another Windows user
and those seem pretty scarce around here
fglock Limbic_Region, nothingmuch: would you help find a name for the p6-to-p5 compiler in pX/iterator_engine? 13:43
rgs "the time machine" 13:44
"the feature trimmer"
fglock rgs: I mean, a short name :) 13:46
nothingmuch fglock: hmmm 13:47
a cute name?
p55t (pronounced pfft) 13:48
fglock psix (too P6-ish) pfix
putz (slang for 'oh sh*t' here) 13:49
Juerd fglock: lrep 13:50
nothingmuch make these into backronyms
ptft - perl 6 to five translator? ;-)
Juerd Lister Rubbish Eclectic Pathologically. 13:51
nothingmuch lrep
that types well
fglock Juerd: ++
rgs Nicholas just started to intergrate MAD 13:52
fglock rgs: not sure what MAD is - is it related to p5-p5? 13:53
rgs yes, larry's p5 to p5 thing
fglock rgs: annotate the parse tree?
rgs yes.
"misc attribute decoration" 13:54
Juerd What kind of attributes?
rgs comments, stuff 13:56
nothingmuch basically it's the extra bits needed to represent a full parse tree
Juerd I see
nothingmuch that perl throws away normally 13:57
Limbic_Region fglock - sorry, I was reading Merlyn's talk on inside-out-objects
Juerd re merlyn - matts really scared the hell out of me on use.perl.org 13:58
use.perl.org/~Matts/journal/ -- On the homepage, saw only the title
Limbic_Region yeah - I guess it should up a few people
fglock Juerd: renamed! 13:59
svnbot6 r9338 | fglock++ | * This is lrep - the Lister Rubbish Eclectic Pathologically (Juerd++)
13:59 Alias_ joined
Alias_ audreyt: ping? 13:59
Limbic_Region fglock - I would probably have suggested Sixon5
[08:40] <LeTo> Limbic_Region: audreyt is currently travelling to Vienna by train
Alias_ darn
rgs hi Alias_ 14:00
Alias_ heya
Limbic_Region so - out of curiosity, is anyone present that's paying attention to the channel using Win32?
Juerd Hm
fglock Limbic_Region: I have win32 (not using right now, but it is on) 14:01
Juerd Does the paying use win32, is it about paying attention-with-win32, or attention to the channel that uses win32? :)
rgs Alias_: quick question while you're here... is it expected that Module::Install installs itself in /usr/lib/perl5 (or whatever PREFIX) both as Module/Install/... and inc/Module/Install/... ?
Alias_ not as such
Limbic_Region heh
Alias_ rgs: Here's the short version
Limbic_Region fglock - 2 questions, 1 - does the box have Cygwin? 2 - how old is the Pugs that is on it? 14:02
rgs I haven't found the Answer in the FM
Alias_ Module install bundles itself into a package within /inc
fglock Pugs 6.2.10, with cygwin
Alias_ So when you load it, you need to load it as C< use inc::Module::Install > to get the bundled one
Limbic_Region grrr
Alias_ (in the Makefile.PL)
rgs yes.
Alias_ ok, step 2
Limbic_Region fglock - you mind trying something for me?
fglock ok 14:03
Alias_ SOME people, authors, will also INSTALL Module::Install, which you don't need to do as a normal user
rgs ...to *build* distros specifically
Limbic_Region del dist\build\src\Data\FastPackedString.*
Alias_ right
Limbic_Region svn up or svk pull
perl Makefile.PL
nmake
Alias_ For that subset of people, when you try to load inc::Module::Install, the @INC search doesn't quite work the same 14:04
14:04 alerim joined
Alias_ Because it only bundles part of itself at dist-time, authors wouldn't have inc::Module::Install resolve to anything useful 14:04
Limbic_Region fglock - if the same thing happens to you that happened to me, your Pugs will become dependent on cygz.dll and cygwin1.dll
which is a "bad thing"
fglock Limbic_Region: sorry, the last time I compiled Pugs in this machine, it took >2hs (Transmeta Crusoe 1000, <256M ram)
Alias_ So when Module::Install installs itself, it adds an EXTRA file at inc/Module/Install.pm 14:05
Limbic_Region fglock - yeah, nevermind
Alias_ The sole purpose of that file is to catch these various edge cases (mostly related to authors) and load in the REAL Module::Install
fglock Limbic_Region: I'll try it on another machine - but it will take some time to setup
rgs ok, and to take precedence over the bundled (and maybe non-present M::I)
Alias_ So it doesn't install to inc/Module/Install.pm as such, it installs a compatibility and edge case load hook 14:06
Limbic_Region ok - well if you can avoid having Cygwin on the machine at all that would be best
Limbic_Region isn't sure how he possibly cross-contaminated things but is sorry he did
Alias_ right, so another edge case (I think, it's related to the 0.58 bug) is that when an author installs a M:I module, the inc/Module/Install.pm on the local system loads, not the bundled one
rgs and there might be version mismatches
Alias_ And THAT situation is what I broke in 0.58 14:07
Because I started synchronising version numbers, so I could add a bit more integrity testing
And it didn't occur to me that inc::Module::Install may need to be back-compatible for when authors install MI modules
So I broke it
Which audrey bandaid patched for 0.59, but I'm trying to understand for 0.60 14:08
rgs ok, thanks for those explanations
14:08 Qiang joined
rgs ships an rpm of M::I for Mandriva, hence the questions 14:08
Alias_ unless they are kept very up to date, operating system packages for MI are problematic 14:09
Because we want authors to be using the newest version in most cases
And to routinely upgrade it each time they do a release
To get the maximum improvement without the need for an extra release 14:10
rgs but we need it in a few cases
Alias_ hmm?
rgs for example Catalyst requires M::I 14:11
Alias_ um... are you sure?
It shouldn't
only authors should ever need to install it
which is the entire point of it's existance 14:12
rgs just look at their Makefile.PL : requires 'Module::Install::Admin' => '0.54';
requires 'Module::Install' => '0.54';
Alias_ weird
That might be a bug
Alias_ chases mst
rgs but catalyst generates boilerplates for modules, and does weird things
14:12 hexmode joined
rgs but that could be a bug right 14:12
Alias_ right 14:13
14:13 robkinyon joined
ingy hi rgs 14:17
nothingmuch hola ingy
ingy hi nothingmuch! 14:18
rgs hi ingy
nothingmuch ingy: where are you in the world?
.tw?
ingy yes
14:18 rgs joined
ingy 14:20
nothingmuch 14:21
!
14:25 vel joined
nothingmuch gaal: ping 14:31
14:32 fglock left, alerim left 14:43 Southen_ joined 14:47 foosroo joined
foosroo nothingmuch: you pang? 14:57
nothingmuch foosroo: yes
svnbot6 r9339 | nothingmuch++ | notes on precompilation cache for Gaal
nothingmuch that
foosroo thanks :)
still not at home, will look asap 14:58
14:59 shmar joined
shmar lo all. 15:01
nothingmuch foosroo: okay 15:03
hi shmar
what's up?
shmar hey nothingmuch... 15:04
nothingmuch: how you doin? recovering from the hackathon yet? 15:12
15:12 kisu joined 15:25 kisu joined 15:27 uszr` joined 15:58 justatheory joined 16:26 FurnaceBoy joined, mako132 joined 16:29 pmurias joined
pmurias are there any (simple) query languages avalible on cpan, for selecting which node of an ast tree to dump? 16:30
Alias_ like XPath? 16:31
pmurias sort of
16:32 justatheory joined
pmurias thanks, I'll try it 16:36
gaal rehi 16:39
pmurias hi
16:54 chris2 joined 16:56 uszr_ joined, uszr_ is now known as uszr`
svnbot6 r9340 | pmurias++ | --print-match prints out the match instead of the ast 17:01
17:08 Aankh|Clone joined 17:09 kanru joined 17:33 nothingmuch joined 17:39 ruz joined
gaal pmurias: read the SYB papers and do it in Haskell :-) 17:46
svnbot6 r9341 | gaal++ | minor golfage
17:46 pdcawley joined
pmurias gall: It would realy be an overkill in this case 17:48
I want something you can you from the command line as an option 17:49
17:55 lisppaste3 joined 18:04 fglock joined
svnbot6 r9342 | fglock++ | lrep - added 'pugs iterator_engine.p6t' to the test list 18:10
fglock pmurias: re walking the ast tree - see 'sub bind_variable' in p6compiler.pl - it is an unused sub that was left there because it could be useful later 18:11
18:14 rantanplan_ joined 18:15 salty-horse joined
pmurias fglock: the ast I get with --print-ast consists of immediate_statements_only, for now I use --print-match dumps more 18:20
i want to add an --xml option to anable dumps in xml 18:22
how should the file for handling different format be called
?
you seem to be much better at thinking file names up :) 18:23
s/format/formats/ 18:24
18:27 jjore_ joined
pmurias is p6dump.pm ok? 18:32
18:37 sandrina_l joined 18:42 rindolf joined
fglock pmurias: I'm not about the complexity (very high, I think) - but it would be real nice to emit something compatible with pugs intermediate language(s) 18:42
s/not/not sure/
rindolf Hi all!
w00t! kane_ has been here 7 hours ago?
w00t! kane_ has been here 7 hours ago!
kane_: here?
fglock hi rindolf!
rindolf fglock: hi! What's up?
nothingmuch: here?
fglock pmurias: audreyt has been talking about having the AST format specified - it would be nice to ask her 18:44
pmurias fglock: emitting code nodes shouldn't be to hard 18:45
fglock re xml: how about YAML, just because that is what Pugs is using mostly 18:46
pmurias: emitting the AST is great, because you can then emit any language, not just perl5 18:47
pmurias fglock: AST == piln | pil 18:48
?
fglock: re yaml: why choose one, we can have both in ~15min 18:49
fglock pmurias: yes, but the new "piln" is a mini language itself
pmurias: sure :) 18:50
pmurias: exponential evolution ++
jjore_ My very insignificant opinion is that yml sucks like a black hole and wouldn't it be nice to get lisp data instead... 18:51
fglock three weeks ago we had 10kb of experimental code
jjore_ Cuz then emacs can see the data nicely.
fglock jjore_: piln is lisp-ish
jjore_ piln sounds like a beer. 18:52
fglock jjore_: so it's a good name :)
jjore_ is on the very low end of understanding what any of the giant #s of acronyms for these languages and subsystems are.
fglock jjore_: there is a glossary in the pugs wiki (which I don't remember the address) 18:53
nothingmuch rindolf: yes 18:54
jjore_ didn't know there was a wiki.
nothingmuch rindolf: also, kane showed up #catalyst
oh wait... i forgot
jjore_: the wiki is actually not that useful =/
18:54 kane__ joined 18:55 Ara4n joined
gaal nothingmuch: moose 18:56
nothingmuch gaal: møøse!
gaal thanks for the edits 18:57
gaal wonders if missingh sports a sha-1 implementation
fglock nothingmuch: about circularity - as I understand, Blondie is about circularity in primitives ?
nothingmuch fglock: not really, that was a stupid trend
what I wanted is:
reference implementation of *everything* that we can referencely implement 18:58
in Perl 6
fglock nothingmuch: lrep (new name for iterator_engine) is about the compiler compiling itself
nothingmuch e.g. sprintf in terms of foo
foo in terms of sprintf
oh
no, blondie had no syntax, ofcourse it couldn't compile ;-)
it was about choosing replacement operations for the backend
so that you write your backend the way you want
if you can X easily, do it
if not, leave it for the reference implementation
all you really need is:
a. primitives to break circular dependencies in the ref implementation 18:59
b. IO stuff, etc
c. bare metal types
fglock nothingmuch: we could use this in lrep - it has barely no runtime yet
nothingmuch okay 19:00
the idea is that you have foreign op nodes
any Code block can be a native code thingy
jjore_ Neither PIL nor PILN are mentioned on pugs.kwiki.org/?Perl6Nomenclature. If you tell tell me a few word description, I'll update the page.
nothingmuch and the compilation strategy is: make an AST
fglock nothingmuch: and with pmurias work, it should be a language-independent compiler
nothingmuch use a rule thingy to match certain code things
and then replace them with native things instead, where possible
fglock nothingmuch: looks quite what we need :) 19:01
19:02 ruz joined
fglock nothingmuch: lrep primitives: misc/pX/Common/lrep/p6primitives.p6 19:03
nothingmuch: only a scrrenful, so it is still easily changeable
s/scrrenful/screenful/ 19:04
nothingmuch fglock: one second 19:05
well, my idea was to not use primitives at all
basically any function can be replaced with a primitive
and any function that cannot be annything but a primitive is just left as a stub in the prelude
fglock nothingmuch: so you have a base prelude, and all you have to do is break the circularity 19:06
nothingmuch well, it doesnn't even have to be circular 19:07
fglock nothingmuch: sure
nothingmuch what I wanted is to generalize the compilation modelo that writing DBI in fast C is using the same mechanism binding + to the native opcode
Alias_ modelo? 19:08
fglock nothingmuch: so adding the primitives is a "linking" phase?
Alias_ I always love coming in this channel, just to remind myself that I need to go back to uni at some point
:)
nothingmuch fglock: exactly
give me 20 mins 19:09
and then i'll have a long chat with you on my wild dreams of compilation and linking
fglock nothingmuch: :)
nothingmuch: are you familiar with BEGIN blocks, INIT and such?
19:09 dduncan joined
nothingmuch fglock: yes, ofcourse 19:09
i have a plan for that too 19:10
look in Hierarchy.pod
fglock nothingmuch: will look
nothingmuch okay 19:11
19:11 justatheory joined
nothingmuch i have to sort out a bit of boring crap and then i'd really love for someone but audreyt to actually listen ;-) 19:11
19:12 marmic joined
fglock boring crap == Hierarchy.pod ? 19:12
nothingmuch no 19:14
god forbid, that's my baby
CV stuff
i want to send out my shiny new CV already
fglock nothingmuch: ok :)
19:15 Alias_ left
rindolf nothingmuch: hi! What's up? 19:17
nothingmuch rindolf: not much
you?
rindolf nothingmuch: would the material of your OSDC presentation about Catalyst be available somwhere? Can you give a re-run of it for during one of the regular Israel.pm meetings.
19:17 Shachaf left
rindolf nothingmuch: I revamped the presentations section of my homepage. 19:17
nothingmuch: is it #catalyst here or #catalyst on MAG-Net? 19:18
nothingmuch rindolf: there was no material 19:19
magnet
i did it completely interactive
fglock nothingmuch: re BEGIN blocks - a 'my $a=1;' outside any blocks behave like a BEGIN block? 19:20
19:24 huhlig joined
huhlig anyone here familier with sqlite and perl? 19:24
or perl6
pmurias does any one know a decent XML emitter? 19:25
huhlig XML::writer?
Limbic_Region huhlig - you would probably be best off keeping your questions targeted to perl6 in this channel
unless of course your sqlite questions have something to do with p6 development (or porting)
19:26 putter joined
Limbic_Region and yes, we know a fair amount about p6 here 19:26
huhlig ok... using DBI::SQLite in perl 6, how do you make it create a SQLite DB
I know that
not a table but the DB itself
I cant seem to find how
Limbic_Region IIRC, SQLite automatically creates a DB file if the file specified doesn't already exist
fglock bbiab 19:27
huhlig hmmm
ok
dduncan in some respects, that is a mis-feature, though 19:28
I prefer to make a separate request to create new or open existing, and have a failure condition if it doesn't do exactly that 19:29
audreyt whew 19:30
finally finally back to tcp/ip land!
Limbic_Region dduncan - I agree, I had to use some fugly magic to make an sqlite app I used work correctly
audreyt (14hr of ssh-over-dns and then 10hr on train)
Limbic_Region welcome audreyt - I think I/we/you b0rk Pugs on Win32
audreyt still the zlib thing or something else?
jjore_ ssh-over-dns? wow.
audreyt jjore_: OzymanDNS
jjore_ didn't think anyone actually used that kind of stuff. 19:31
Limbic_Region well - inexplicably, my pugs will only work now if cygwin1.dll and cygz.dll are in the PATH
19:31 rindolf left
Limbic_Region and the only thing I could think that could have made the cross-contamination is the zlib header files 19:31
but I can't get anyone else on a Win32 system to confirm/deny
audreyt ok, I'll reboot. 19:32
has anyone tackled the END thing in -MTest?
the one that Limbic_Region reported that inhibited the "1..0" display 19:33
Limbic_Region hasn't
Limbic_Region has been amused and amazed and dismayed by the fact that his pugs works with Cygwin in some bastardized weird thing-a-ma-jig 19:34
19:34 justatheory joined
putter flglock: re sub{ $alt(@_) }... sub{ &$alt(@_) } and sub { &$alt } both work in p5, because in the in the latter case, @_ gets passed implicitly. but the @_ argument is required in p6. 19:39
audreyt: re "anyone tackled the END", not that I know of.
audreyt okay, I'll do that tonight. 19:40
<- at the Caf'e of Vienna.pm meeting
will be @ Leo's tomorrow evening
19:41 szabgab joined
pasteling "gaal" at 192.115.25.249 pasted "let's break macros" (132 lines, 4.8K) at sial.org/pbot/16218 19:43
putter audreyt: you might see also
gaal audreyt: I was working with bsb to make macros see arguments as ASTs
this is the bogus result, so far 19:44
audreyt nice
bogus how?
putter my conversation will gaal of colabti.de/irclogger/irclogger_log/...=997#l1452 down to 20:30, in response to colabti.de/irclogger/irclogger_log/...el=72#l104
audreyt ok. I'll do a complete backlog anyway
pasteling "gaal" at 192.115.25.249 pasted "how bogus" (6 lines, 305B) at sial.org/pbot/16219
gaal (hey putter, everyone) 19:45
putter hi gaal :)
gaal can instances be NOINLINEd individually? 19:46
audreyt gaal: I think yes... experiment?
putter oh, but the main point was colabti.de/irclogger/irclogger_log/...=991#l1441 19:47
gaal audreyt: well, it compiled :)
putter (no more url pastes from putter;)
audreyt dives into the main point
got it 19:48
svnbot6 r9343 | pmurias++ | --yaml enables dumping in yaml format
audreyt backlogeth some more
Juerd audreyt: Have you seen my request re feather and ports?
audreyt gaal: why are you NOINLINE'ing castV again? 19:49
19:49 justatheory joined
audreyt Juerd: no... 19:49
Juerd audreyt: Please do not replace services that people use (like https) with services that aren't equivalent (like ssh)
19:49 penk joined
Juerd audreyt: And if you must make such big changes, please inform me by mail 19:50
gaal audreyt: I have an evil unsafePerformIO there 19:51
putter sees "understand how to use p5's sv_compile_2op" on the top of his pugs todo list. wonders how it all came to this. 19:52
audreyt Juerd: I apologize.
Juerd audreyt: Accepted, of course. I try to ignore past and focus on future.
TimToady fglock: re BEGIN blocks - a 'my $a=1;' outside any blocks behave like a BEGIN block? No, the pseudo-assignment to a "my" turns into a real assignment. For instance, happens every time through a loop.
Juerd (All my life.)
audreyt Juerd: okay. I opened 443 for the short period of osdc.il where all non 80/443 ports were blocked, then promptly forgot about it. I'll refrain from doing that without letting you know beforehand. 19:53
Juerd audreyt: Thanks 19:54
audreyt gaal: I see. yet it is a parsefail not a segfault that you are dealing with?
putter fglock: do you backlog? # just making sure you saw the note re rule xxx rx:perl5{...} should be rule xxx :perl5 {...}
gaal yes. I can see where this is going, shall I commit? :) 19:55
audreyt yes ;)
putter lol
fglock putter: backlog - yes (just got back) 19:56
putter :)
Limbic_Region audreyt - your Win32 build finish yet?
Juerd Can anyone patch Apache for me, so that if it doesn't get an HTTP request in 5 seconds from the beginning of a TCP session, it hands the connection over to ssh?
That would be perfect for feather.
audreyt Juerd: wow, great idea.
Limbic_Region that would truly rock
Juerd With HTTP, the client initiates; With SSH, the server does. Perfect solution, I think.
Limbic_Region cause I think I could log on to feather from work if that were the case
audreyt I remember once written something like that (only proxying for telnet) a few years back 19:58
svnbot6 r9344 | gaal++ | * WIP towards making macros see ASTs instead of values as arguments.
r9344 | gaal++ | Broken, and needs a Perl API for manipulating ASTs. bsb++ for the idea
r9344 | gaal++ | and gaal-- for the bogosity.
fglock putter: re sub-ref: how is '$a' different from 'sub{ $alt.(@_) }', which returns a subref too?
19:58 justatheory joined
audreyt by putting a plexor before both httpd and telnetd 19:58
Juerd audreyt: But I think it's necessary to use port 443 too, as 80 is often transproxied
19:58 FurnaceBoy is now known as FB|afk 19:59 gaal is now known as strangeBogonAttr
Juerd While 443, if open, most commonly allows arbitrary streams 19:59
19:59 strangeBogonAttr is now known as gaal
audreyt agreed. 19:59
something like that must already exist
putter fglock: first, let's forget the "." in $alt(@_); it isn't needed. 20:00
20:00 Maddingue joined
gaal seen anatoly_ 20:01
putter so the question is, is $alt equivalent to sub{ $alt(@_) } when you call it? if so, yes.
(sorry about the ".". regretted it the minute I pasted, but didnt have tuits go back and validate the dotless form. sorry for any confusion)
20:01 elmex joined
gaal uh, maybe committing r9344 wasn't a very hot idea, since use/require are now macros 20:02
fglock putter: so if $alt doesn't work, it's just a bug
audreyt Limbic_Region: I'll fix the macro thing first, before I reboot, as without that use/require will be broken anyway
TimToady I could run a smoke to see how much red we get. :)
putter gaal: they can be subs. :) just change "macro" to "sub" in Prelude.pm and they still work.
gaal isn't use supposed to happen at compile time? :) 20:03
fglock re rule syntax: it should be rule xxx :P5 {...} - with a space after '5', right?
audreyt Ara4n: they are hardcoded-compile-time-calls-to-subs iirc 20:04
s/Ara4n/gaal/
TimToady fglock: correct, or the {...} is taken as an argument to :P5.
fglock TimToady: fixing...
gaal audreyt: ACK. even if you fix the r9344, existing macros will still be broken, if they take args 20:05
audreyt understood
gaal I'm a little out of the loop re: macros, do we know how manipulating ASTs from Perl should look like? 20:06
svnbot6 r9345 | fglock++ | iterator_engine.p6 - $alt(@_) - without dot
Limbic_Region audreyt - ok, chances are you have enough memory on your machine not to need several hours to compile - I will be around for the next 1.5 hours to bounce stuff off if you need me 20:07
audreyt gaal: no, that's an ::API thing as well
Limbic_Region is seriously hoping that it is a local problem only
audreyt Limbic_Region: roger.
jjore_ Juerd: there's a nice article about doing that front-end switcher stuff in not-released-yet Perl Hacks book. 20:09
Juerd jjore_: TBH, I'm looking for someone to do the work; I think I could do it myself, but I severely lack tuits. 20:10
jjore_ It's in O'Reilly's Rought Cuts. Suppsedly.
audreyt ok, food is here, and battery is suboptimal. I'll bbiab
Juerd jjore_: But thank you for the pointer
jjore_ suggests it as a ready place to steal some working code fro.
Juerd It doesn't stop at code 20:11
It needs to be tested, and it will fail the first few times, which requires debugging, etc
putter fglock: re $alt, if I understand the code, you are trying to basically set up a circular call. ie, $alt = f($alt); Until laziness works, you can't do that. the sub{$alt} is delaying the $alt lookup.
fglock putter: ok 20:12
putter gaal: yes, and I haven't tested it to be sure, but I suspect the Parser.hs games, which provide for use/require parsing in the absence of a macro "is parsed(/some regexp or other/)", also get you compile time. maybe. 20:15
svnbot6 r9346 | fglock++ | lrep: fixed 'rule :P5'
fglock pmurias: 'Can't locate p6dump.pm'
pmurias: avn add?
s/avn/svn/
gaal putter: yeah, you must be right 20:22
20:24 FB|afk is now known as FurnaceBoy
putter TimToady: could I borrow you for a reality check? I have the PL_regcompp / execp regexp engine intercept hooked into an alternate re engine written in p5 subs. And it's happily working/failing/segfaulting it's way through the p5 t/op/ test files. Next step is to get (??{...}) working. The only way of doing that which I know of is what the current 20:24
nothingmuch fglock: back, sorry
fglock nothingmuch: pong 20:25
20:25 FurnaceBoy is now known as FB|afk
nothingmuch fglock: soooooooooo 20:25
putter engine does, sv_compile_2op. Which trips personal warning flags. I'm not sure how to ask this... "is this still sane?"
nothingmuch did you see the slides for the perl 6 compilation talk?
fglock nothingmuch: link?
nothingmuch what browser are you using? 20:26
TimToady putter: it's not clear it was ever entirely sane...
nothingmuch you can have either the nice, pretty slides
putter lol
nothingmuch or the ones that don't kill firefox ;-)
fglock nothingmuch: Firefox 20:27
putter TimToady: no way comes to mind to get access to lexical variables without "getting down in the mud" with sv_compile_2op-ish op code creation? 20:28
(other than source filters of course)
putter crosses his fingers and hopes for a B::SeeLexicalEnvironment cpan module...;) 20:29
ah well
nothingmuch fglock: nothingmuch.woobling.org/perl6_comp/slides/
putter: PadWalker?
putter looks... 20:30
fglock nothingmuch: thanks - reading 20:31
TimToady That was always the major problem with (?{}) and (??{})--they both escape partway from their lexical scope without giving you a true closure. Someone was going to fix that once...
jjore_ Someone ws still saying they'd fix it as recent as a month ago. 20:32
nothingmuch TimToady: i've heard of several such brave souls going to fix that
ofcourse, it was always in future tense
TimToady I looked at it a couple of years ago and decided it would be Hard. 20:33
20:33 KingDiamond joined
putter my blessings upon you all. 20:35
I'm going to attempt some workarounds first, before descending into the muck. (and your link, and random words which triggered ideas... yay;) 20:37
thank you. 20:38
nothingmuch yay!
jjore_ putter, you could probably do some simple B::XPath on the linked in optree to get the lexicals and their names. 20:39
You have to get chromatic to put B::XPath on CPAN tho. 20:40
putter jjore_: my thanks
svnbot6 r9348 | pmurias++ | added p6dump.pm (forgot in the last commit)
TimToady putter: you might also be able to get away with slapping an extra "sub {...}" around the code and then dereffing at the right place. 20:41
nothingmuch code examples in perlembed
jjore_ Or ask robin to let PadWalker be given a root. 20:42
maybe it does already.
TimToady (assuming you have to go as far as to modify sv_compile_2op...)
fglock re: self hosting Perl6 - what would be the minimal requirements ? (broad question isn't it?)
nothingmuch well 20:43
parser
linker
emitter stuff
definition of ASTs 20:44
ability to embed VM inside parser/linker/emitter stuff
in order to run macros/grammar extensions/whatever
fglock nothingmuch: can lrep be it? It can be made self-hosting in a few days 20:45
TimToady if so, you could rename it to perlrep and have it be a palindrome. :-) 20:54
fglock TimToady: sure :) 20:55
nothingmuch fglock: hopefully =)
fglock cool - we've got a new milestone to get to 20:56
nothingmuch what I'm most concerned about is correct semantics
pugs is a fast bootstrap thing, and it's fun for it
but every time we "correct" things
(separate compilation, cached compilation, add macros, lexical imports...) someone hits a wall 20:57
it's easy to fix, due to haskell's nature
(well, it's not frustrating to fix, at least ;-)
but i think we have already learned a lot, and that Px should try to skip onto 3rd system phase 20:58
the main point of this is that we want the separate phases to be as modular and reusable as possible
so that we can use the parser as a module in an editor with Perl support
and just skip macro support if we have no evaluator
putter indeed more thanks for suggestions. a simple eval_pv from inside PIL_regcompp regrettably does not bind up properly. so off to further exploration...
fglock nothingmuch: please note that I don't have that experience - I've only worked at the run time so far, so I need lots of help 20:59
nothingmuch use the evaluator *or* emitter/vm backend to run macros, etc
okay
keep note of this rant?
another key concept is information preserval
if we alternate between tree translation layers, and tree processing layers things should stay pretty clean, in my experience 21:00
putter nothingmuch: re easy/non-frustrating to fix... *quiet mumble of dissent*
nothingmuch but if we try to short circuit things, like stuff some optimizations into the wrong stage... actually, ask TimToady about this stuff =)
ask him how he would like the perl 6 to perl 7 translator to be written 21:01
fglock nothingmuch: is there something written about the experience with separating roles in the compiler - specific to what has been learning with Pugs? 21:05
nothingmuch fglock: not really 21:06
except my own rants and experimentations
also, remember pesky things like type annotations 21:07
they are hard to glue on post-factum
21:09 whiteg_ joined
fglock re lrep - it is small enough to be easy to be made self-host; as it grows, it may get more difficult - if some lambdafolk could reality check it, maybe? 21:11
fglock thinks he could have been learning Haskell instead 21:12
nothingmuch fglock: please describe it's arch 21:13
fglock sorry, I'm not aware of the Haskell tools, I think they must be really impressive
nothingmuch: there is a match-engine, which handles alternation, backtracking and such 21:14
nothingmuch is it a compiler or evaluator?
fglock sorry?
21:15 Muable joined
nothingmuch fglock: does it run prel 6? 21:16
or does it parse perl 6 and emit perl 5?
fglock nothingmuch: it parses Perl6 and emits Perl5 21:17
nothingmuch okay
so the match engine is written in...?
fglock nothingmuch: but it can eval the code it generates, of course
nothingmuch does it also have a perl 6 in perl 6 evaluator?
fglock we have 2 versions of the match engine - the original is written in p5, and there is another that will be used by the self-hosted compiler, which is written in p6 21:18
nothingmuch okay 21:19
what does it parse into?
fglock the Grammar is almost 100% written in Perl6 - there is no bootstrapping code (it uses the previous compiled Grammar)
the Grammar generates nodes which are 1 element hashes, like { node => [ content ] } 21:20
nothingmuch okay
fglock but that's because the Grammar says so - it could be anything
nothingmuch i know =)
fglock last, there is the emitter, which just... emits 21:21
21:21 robkinyon joined
nothingmuch okay 21:21
what's your objective?
fglock nothingmuch: the objective is "to write a rule engine" - but it has grown a little out of control :) 21:22
nothingmuch aha
would you like to restate your objective? 21:23
i think my previous advice might be missing your plans
fglock sure
nothingmuch i thgouth you were aiming for:
alpha version of *The* canonical Perl 6 system ;-)
21:25 stevan_ joined
nothingmuch oh no! it's him! 21:25
azuroth oh no, it's DEVO
fglock nothingmuch: what's your advice? 21:26
nothingmuch basically:
(now that I know more details):
make the parse tree more "knowlegable"
i.e. every node is an object
with some convenient introspection methods
and the ability to traverse it's children
kind of like HTML::Element
but more "well typed" 21:27
make sure it represents the syntax level well
then compile it into an AST level thing
that represents what the program does, not how it's written 21:28
with all due respect to PIL, PIL^N, and so forth, i actually think that OCaml is the best target so far
it's functional, it's OO, it's well typed
if we make an AST inspired by OCaml's intermediate language, i think we have much to gain 21:29
(including a potentially very cool backend VM - the OCaml compiler toolchain ;-)
make sure you have the hooks to convert to this AST during parsing
and then to run this AST with a generic "run it" api, to evaluate macros and stuff 21:30
as for the "run it" api:
the next logical step is an evaluator for this language
that's usually pretty easy to write
if you make it correct and simple
(doesn't have to be fast)
then convert to an AST that's closer to the target language
as part of the emitter
and have the emitter serialize that as whatever bytecode/sourcecode format the target language is 21:31
make sure emitters are pluggable
runners are pluggable
etc etc
also take care of linkage during parsing, and linkage during compilation, and linkage during emission, and linkage during runtime
each of these for a distinct reason:
parsing: load new grammar thingies
Limbic_Region audreyt - I am out for the evening - please /msg me at the Monastery to let me know your results
nothingmuch run macros 21:32
compilation:
pluggable transformations that are not really on the macro level
like 'use optimizer', and pluggable runloops in Perl 5
emission: we need to know how to respect the backend's preference WRT linking
runtime: we need to also resolve symbols at runtime, in a generic way 21:33
also think of prebound targets
(static linking)
*phew*
(you better still be listening ;-)
fglock nothingmuch: still here 21:34
FB|afk so what are you waiting for? :)
nothingmuch FB|afk: well, i have to quit my job
that's why i'm writing my CV
FB|afk ic
nothingmuch so that i can scale down to part time
and have more time/energy for fun
;-)
21:35 jjore_ joined
fglock nothingmuch: the modularization can be made in p5 land (easy) or p6 land (during or after self-hosting) 21:35
nothingmuch now, the next step:
think of it as a perl 6 program 21:36
don't worry about self hosting yet
run it using pugs
whatever pugs we have so far
i.e. don't optimize for small size, optimize for good code
and then when it's implemented far enough make it self hosting
otherwise keeping the self hosting stuff up to date might turn out to be a PITA 21:37
the next step in our fun monologue is what funky tools we have
FB|afk agree 100% with 'correct first, fast later'
nothingmuch "make it work, make it work right, make it work fast"
fglock nothingmuch: the self hosting grammar we have so far is very nice to work with - it doesn't need anything special to be kept self-hosting - it just "is" 21:38
nothingmuch fglock: the grammar is a small small subset, sadly
OO is probably the most difficult part
and we will need both OO and higher order functions to write a proper compiler
in addition to the grammar stuff 21:39
fglock nothingmuch: we have the tools stevan has been working on
nothingmuch i doubt that can self host very easily
perl 5 tools?
yes, they make perl 5 an easier target backend, but it's still a long way from self hosting
all i'm saying is: if the reason you're using hash nodes is because you don't have OO implemented in pX, then it's not the right reason IMHO 21:40
but i could be wrong
after all, most of my compiler projects were left unfinished, after i realized that what I set out to learn has been learned
21:40 justatheory joined
nothingmuch buut this is something different, this is a practical project, not a learning project 21:40
so take my advice with a grain of salt 21:41
fglock nothingmuch: basic OO is easy to implement (no multiple inheritance, etc) - if we can self-host with the metamodel, better yet
nothingmuch again, i'm not opposed to self hosting at all 21:42
i think it's very valuable
but since perl 6 is a big languauge, limiting the compiler written in Perl 6 to the subset of the language that's currently implemented by itself is a pretty tight restriction 21:43
fglock re reason for no OO - premature optimization (sorry)
21:43 sapper joined 21:44 Ara4n joined
nothingmuch so 21:44
what do you think?
am I full of shit?
or does this make sense? 21:45
fglock nothingmuch: that's the bootstrap cycle - it can evolve by writing more things using itself - this needs more architecture skills than currently available, but I think it is already possible
nothingmuch yes, but you're forgetting one HUGE deduction
you can cheat
because you have pugs
which gives you a ton of Perl 6 features that actually work
including not-so-simple stuff, like proper IO and system calls, pretty complete value and container operations 21:46
(strings, numbers, arrays, hashes, reference semantics, etc)
a fairly working OO system
with multimethods
some of these things are the reason why we didn't write Perl 6 in Perl 5 21:47
you almost need them to easily develop a compilation system
fglock nothingmuch: please note that I've tried it before 21:48
nothingmuch okay
fglock but there were some problems in that I couldn't extend Pugs by using Perl6
nothingmuch ofcourseu
fglock writing from scratch, however crazy, makes for a very flexible result 21:49
nothingmuch but i still think bootstrapping from nothing is harder than bootstrapping from the perl 6 that pugs gives us
fglock how about: have a bootstrapped thing so that you have a working prototype of the bootstrapping process 21:52
bbiab
nothingmuch well, sure, i agree with that
but i don't think it's easy as a begining point
if you can pull it off, please do 21:53
svnbot6 r9349 | pmurias++ | --yaml dumped in favor of --format name
r9349 | pmurias++ | p6dump.pm refactored
pmurias nothingmuch: some think can be in perl5 until lrep is matured enough 21:54
s/think/things/
nothingmuch yes 21:55
i'm jjust pointing out the alternatives
some things can be in perl 6 until it's mature enough
instead of rewriting them as perl 6 once it is mature enough, we run them with pugs until they're mature enough
i think that's less work
and makes it backend-agnostic project 21:56
which is a very important part of organic growth
if people come to rely on perl 5 as a backend then it's easier to cheat and make yuck yucky code
pmurias the most crazy alternative would be to make a limited perl5 frontend :)
nothingmuch ?
explain that please
pmurias basicly make lrep a perl6 *and* perl5 compiler 21:58
21:58 mauke_ joined 21:59 mauke_ is now known as mauke
nothingmuch eep 21:59
that's... err... hard
nothingmuch believes in easily attainable goals for short term rewards
pmurias it would test grammars to *the* limits :) 22:00
and lrep is writen using only a subset of perl5
nothingmuch that would suck
the second thing 22:01
because perl 5 is not good enough for writing heavyweight compilers
pmurias the second thing meaning?
nothingmuch writing lrep in the intersection of perl 5 and perl 6 22:02
pmurias used the present tense on purpose :)
nothingmuch oh
ouch
pmurias np
nothingmuch toying with blondie tought me a lot of what perl 5 is not good enough for 22:03
too much language tax for these things
22:04 Maddingue_ joined
pmurias anyway I'm mostly the grow-sidways guy 22:04
fglock pushes the design futher I refactor a bit and add optional deps 22:06
nothingmuch could you expand on that sideways metaphor?
i am interepreting it in ~3 separate ways =)
pmurias Imagine a tower 22:07
moving things to perl6,adding macros and achiving other goals is making it higher 22:08
adding stuff like options,code cleanup,better debugging support is making the compiler stronger eq. the tower wider 22:10
understood? 22:11
PerlJam I wonder what sources of information they used for www.eweek.com/article2/0,1895,1932126,00.asp 22:13
pmurias nothingmuch: got to go to sleep now, thank you for your design proposal 22:14
nothingmuch++ #for good design 22:15
nothingmuch sorry, back 22:16
putter one thing I haven't seen mentioned yet is flexibility and rapid development. we still don't have a p6 implementation of rules on pugs, nor any on perl5. just getting an ast for a p6 regex is impossible on both platforms. let alone p6 parse trees. in just a few days, fglock etal has gotten close to providing a rules implementation on both p5 and p6. 22:18
fglock back 22:19
putter I also note that things like having rules take simple arguments, which might be easily done in lrep, are not even plausible objectives on pugs or pge (or the non-existant p5 engine). 22:20
nothingmuch putter: yes, i agree about that 22:22
that's a very good point for px
but i think it's slightly orthogonal
if it provides this, it still doesn't have to self host 22:23
fglock nothingmuch: re orthogonal: we already have the infrastructure to implement lrep-for-pugs (putter++) 22:24
nothingmuch define lrep-for-pugs?
i'll try to rephrase 22:25
fglock so writing the compiler in Pugs would not be a problem
nothingmuch i think making lrep run on pugs is more important than making lrep run on lrep
fglock lrep is being rewritten in p6
re "more important" - does it make it a plan? I mean, does it help Pugs to self-host? 22:27
there are other rules backends being written for p6, right?
putter is simply delighted by progress/un-wedge-itude + volunteers + excitement.
22:28 SamB joined
fglock "un-wedge-itude" ? 22:28
putter (un-wedged-itude - the state of not being wedged, aka, stuck, aka unmoving;) 22:29
jjore_ thinks that the action of not receiving a wedgie.
nothingmuch that's an anti action 22:30
jjore_++
jjore_ It means you can walk up behind someone, yell "Atomic Unwedgie" and then avoid giving them a wedgie. 22:32
nothingmuch you mean in front of someone 22:33
this reminds me of the "i'm rubber and you're glue" protocol for insult mutual recursion
and the "order of magnitude" protocol
which always you to add any number of one thousands or infinities to your conjecture's adhesiveness 22:34
thus subsuming the rubbery properties of your oponent
jjore_ I think as llng as you're not giving the person a wedgie you can be anywhere but tradition dictates you're behind theo ther person.
nothingmuch wow
kids are stupid
putter probably would have punted the "better perl5 support for p6 stuff" effort if not for flgock's activity. hmm... wouldn't be staring at p5 opcodes... fglock!%$#@!!
nothingmuch oh
i thought it was making sure you aren't getting a wedgy
like, you are walking in front of someone
and then you yell "atomic unwedgie" and they can't give you one 22:35
fglock re un-wedged-itude: nothingmuch - if we can learn from past "good" decisions, we can just move on
we should try to reuse good decisions 22:36
putter (or cut and paste them)
nothingmuch fglock: yes, i agree 22:37
that's why i brain dumped
because I learned a lot from harroth and blondie
fglock or "can we redo Pugs in P6"?
nothingmuch i don't think we want to reimplement pugs in perl 6
we want something better
avoid ssome of the traps that are setting pugs back 22:38
also, our priority is different:
high quality
vs. fast turnaround
putter (btw, foldoc.org/?wedged )
nothingmuch putter: yes
that's what happens in a wedgie
the underwear is wedged in the receiver's butt crack
putter hmm... the high quality need is not entirely clear to me. low quality but capable of reasonably easy continuous development would be just fine with me. pugs's difficulty isnt optimization for rapid development rather than high turnaround. it's that you can spend a day attempting something very simple, and fail. 22:42
22:42 theorbtwo joined, FB|afk is now known as FurnaceBoy
putter err, s/high turnaround/high quality/ 22:42
nothingmuch well 22:43
IMO the reason pugs has that trait is that some parts were not very well thought out in advance
because pugs is optimized for being written fast
which is unfortunately not good for being maintained fast 22:44
(although we're paying surprisingly little for what we're gaining in terms of new features)
if we optimize this implementation to be simple, and correct, flexible and readable (== high quality by my standards) i think we will have more to gain 22:45
fglock "this implementation" == current Pugs?
nothingmuch no 22:47
the canonical Perl 6 system
potentially what lrep is starting
putter a "simple, correct, flexible and readable" _anything_ associated with p6 (spec, parser, runtime, etc), would be a very nice thing. there's just the minor matter of bootstrapping... 22:48
nothingmuch so, we go back to my argument, which you may or may not agree with
that this is important enough that we should rely on pugs as a bootstrap platform
instead of self-hosting-from-scratch 22:49
or nearly scratch
fglock how about a pluggable compiler core - is this possible? (no implementation, only the plug-in infrastructure) 22:51
written in p6 22:52
it would be potentially slow, if the implementation is not done right
nothingmuch err, what do you mean? 22:53
fuck slow (for now)
22:53 m joined
putter I consider it an open question. (re rely) Building on pugs has costs as well as benefits. And for whatever one is doing, one has to weigh those. Eg, the edit-compile-test cycle time is much more attractive on p5 than p6. So for subprojects which can otherwise be done on both, p5 wins. Similarly for the stability of the object system. I think 22:53
fglock design an API for p6 internals, so that people can work in the modules 22:54
putter I think the "we bootstrap on pugs" is too simplistic. We are bootstrapping on pugs.hs and parrot and pge and pcre and ...
fglock I mean, p6 compiler internals
nothingmuch i think the smartest thing is if we have two bootstraps
obviously we have different priorities
i'm planning on starting something similar too
but....
putter The question is does potential new component foo strategically or tactically help us in making progress.
nothingmuch the twist is that we should aim to share code
and ideas 22:55
does that make sense?
putter In some ways our recent lack of motion helps clarify the question. It's less a matter of which of several currently fruitful avenues do we persue, than a matter of anything that gets us moving and attracts people resources is good. 22:56
nothingmuch yes, i agree
but i think we've had one screwup along the way:
too much code is getting thrown away
so much effort was invested in PIL 22:57
despite the fact that it's considered to be an almost dead project lately
fglock nothingmuch: it was a pioneer - it was needed because that was the best thing to do at that time 22:58
putter somewhat regrets spiking pilrun (hmm... to show _you_ I think, that it was possible), and thus starting us down a pil-based backend path.
nothingmuch yes, i agree
stevan_ blames putter, always has... always will :P
nothingmuch it was important
22:58 stevan_ is now known as stevan
putter sigh 22:59
nothingmuch it's just that we should invest a little more in future proofing because of our so limited resources
fglock doesn't regret showing that lazy arrays were possible
nothingmuch there's no contradiction
putter though I'm still not clear on why pil didnt continue to incrementally evolve.
stevan doesn't regret all his (mostly throwaway) code either :)
nothingmuch neither do i
in fact, that's my specialty
putter And there's the counter argument,
nothingmuch but there's no contradiction 23:00
i'm not saying "don't write code for learning"
i'm saying "also think about whether or not this code can be directly useful in the Perl 6 system, not just indirectly"
stevan putter: PILN withered mostly because neither audreyt or I could pay any attention to it for a bit,.. and it was too undocumented
putter audreyt would have cut back on pugs work last year regardless. so maybe the backend stuff kept people interested and learning at a time when things might otherwise have become quite quiet.
nothingmuch we're beating around the bush a lot
a whole lot
and we're learning much from this
23:00 amnesiac joined
nothingmuch but we have to get around to actually doing the "real thing" at some point 23:01
jjore_ PIL is dead?! dang. I only learned of it uh... last night.
nothingmuch hehe
stevan PIL is dead,.. long live PIL!
nothingmuch i thought PIL is dead because it didn't map objects well enough and that's why PILN was born
integral "we"? if we don't, the TPF folks will implement perl6 anyway; and if we meander more, we might learn more
nothingmuch which is also dying for... err... i forget
stevan integral: yes, that is correct 23:02
nothingmuch integral: uh, okay
stevan nothingmuch: it is dying because it is undocumented and I (and audreyt) are short on time
nothingmuch again, this is just what i've resolved to try to do with my own code
and i'm sharing this new resolution with you
in the hopes that you might agree
jjore_ Where does PIL fall into the categories on pugs.kwiki.org/?Perl6Nomenclature?
stevan missed the resolution part? 23:03
jjore_ Drat. It's on there.
I thought it wasn't
sorry, ignore that.
stevan jjore: PIL (v1) is different from PILN and PIL2 (which does not exist yet)
nothingmuch see, for example WRT PIL and stuff 23:04
putter too has become very conscious lately of "I dont want to spend time debugging code which is about to be thrown away!".
nothingmuch since PIL has not yet materialized, and there are projects to help materialize it properly
but the parts that need PIL to work are stuck until it's ready
i'd like to start them anyway
stevan in OCaml?
nothingmuch but instead of planning to throw them away when PIL is ready, i'm guessing that PIL2 will be close enough to OCaml that targetting OCaml might be a smart move 23:05
stevan chromatic will pitch a fit about that one :P
nothingmuch (one example)
yes
something about javascript running the scheme core of Perl 6
fglock goes port lrep to OCaml
nothingmuch heh
jjore_ What's lrep? 23:06
nothingmuch jjore_: you'll learn when you reach level 931
fglock reverse 'perl'
stevan breaks out the SNOBOL manual and starts on Perl 6 metamodel 3.0
nothingmuch SNOBOL started OO, right?
stevan no, CLU
I got a CLU manual too
nothingmuch CLU??
jjore_ yah, I get that it's scalar( reverse 'perl' ) but that's just the name.
stevan read your history books boy!
nothingmuch jjore_: i'm not 100% sure what it is yet 23:07
or rather, what it's going to be
it's fglock's project
and it implements a basic rule engine
stevan SNOBOL is the text-processing language,.. kinda like Perl but uglier and 20 years ago
nothingmuch and a parse tree
and a grammar for Perl 6
integral stevan: Perl is almost 20 years ago now :)
nothingmuch and an emitter for Perl 5
stevan integral: true :)
nothingmuch 20 + 20?
jjore_ So lrep is another pugs?
nothingmuch jjore_: that's what we're trying to decide 23:08
=)
stevan nothingmuch: CLU was one of the first languages to use ADTs and module systems in a very OO way
it also gave us the keyword 'yeild' IIRC
integral hmm, has any of these things to date reimplemented Pugs.Parser, or have they all been working from pugs parse trees?
nothingmuch aahh! liskov! fear!
integral stevan: that's almost as bad as "referer" 23:09
stevan Referer Madness!!!!
nothingmuch integral: fglock's approach is to replace the pugs.parser code with a grammar for Perl 6 written in Perl 6 rules 23:10
btw, have you considered making it emit Pugs ASTs?
that way you could abuse Pugs to get PIL output
and all the pretty backends
or the pugs evaluator
stevan what about the YAML stuff 23:11
that audreyt and gaal were working on,..
nothingmuch that's basically that
FurnaceBoy composes a limerick involving yaml and camel
nothingmuch FurnaceBoy: we have a wrapper to sing that limerick: mc parsec (stands for monadic combinator)
FurnaceBoy slaps forehead
nothingmuch stevan: so anyway... 23:12
they added a cache feature
that allows pugs to dump parse trees as YAML
and then load YAML instead of reparsing the perl 6 code
stevan yes
fglock nothingmuch: re Pugs ASTs - pmurias is working on that...
nothingmuch yay!
pmurias++
stevan so can't fglock's thing target YAML?
nothingmuch that's exactly what he said pmurias is doing ;-) 23:13
YAML is the serialization format
jjore_ Everytime you parse a YAML document, baby Jebus cries.
nothingmuch jjore_: not with Syck
stevan it only kills kittens
jjore_ Ok, s/parse/write/
nothingmuch jjore_: not with Syck 23:14
;-)
jjore_ Always.
Forever and ever.
nothingmuch we have this funky preprocessor called DriFtT or something like that
which takes haskell data type declarations
jjore_ YAML is the format of extreme pain.
nothingmuch and writes uus YAML emitter thingies for them
jjore_ Which I suppose... makes us all masochists.
stevan suggests XML then :P
jjore_ finds XML less painful than YAML. So uh... yeah. 23:15
fglock stevan: XML is already there (today), afaik
jjore_ is just gawking.
nothingmuch eek!
no awk!
jjore_ for the moment.
nothingmuch awk bad!~
even gnu awk
integral not as a CodeGen backend. You probably just need something modelled along the lines of the YAML backend
nothingmuch integral: who are you replying to? 23:16
integral hmm, appears to be fglock
nothingmuch ah
yes, that's simple to write, theoretically
i think something much cooler to write would be a packed output backend 23:17
similar to the bittorrent serialization format
it's very fast to dump/load
but completely uneditable
(which is OK for caches)
stevan then I can run p6 code from someone elses laptop??
fglock integral: "CodeGen backend" ? 23:18
integral fglock: the things that you pass to -C. Parse-YAML for example
nothingmuch search.cpan.org/~giulienk/Convert-B...code_XS.pm
23:19 macli joined
putter hears "hey, we have something which is working... so let's throw it away and do something different without thinking about whether we need to, or about whether the different will actually work..." ;) 23:22
fglock integral: do you mean, YAML should be used internally by the compiler (sorry, I didn't understand)
nothingmuch i didn't say we should
i just said cooler
;-)
putter lol
integral fglock: oh, no, this was just in response to the XML comments. That even though DrIFT does it, there's not a pugs backend for it atm. 23:23
nothingmuch when I say "cool" there's a 99% chance I won't implement it ;-)
putter :)
fglock integral: ok
putter aerospace engineering has the great line that a paper airplane can always outfly a metal one. 23:24
nothingmuch yes, but it's a matter of scale
putter (where paper airplane == proposal or unimplemented design)
nothingmuch oh 23:25
=)
ooh ooh! i got my dr. mcninja tshirt today 23:26
i'm so much cooler than any of you
putter lol
and, err, what is a dr. mcninja tshirt?
fglock nothingmuch: ooooooh
nothingmuch putter: www.drmcninja.com/
start with archives
dr mcninja vs. mcdonnalds is not as nice as the first "official" episode 23:27
and the second one relies on background info
BOY! Have you been LUMBERJACKING?! 23:30
putter ah, yes. Meet The Doctor And His Friendly Staff is much funnier than the McVsMc. 23:32
back to work...
nothingmuch no!!!!!!! 23:33
dr. mcninja! dr. mcninja!
putter oh, to all who helped with lexical capture - I misunderstood my tests - the very simple approach, eval_pv inside PL_regcompp, did indeed capture. woot. PadWalker works too. many thanks for your help. I might well be loosing and punting if not for it. 23:35
23:35 whiteg_ is now known as whiteg
nothingmuch goes to sleep 23:36
fglock me too
putter contagion!!!!! 23:37
23:38 fglock left 23:52 Limbic_Region joined