»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend! Set by sorear on 25 June 2013. |
|||
00:05
aindilis joined
00:07
dmol1 left
00:20
vky left
|
|||
dalek | kudo-star-daily: ba94777 | coke++ | log/ (5 files): today (automated commit) |
00:23 | |
kudo-star-daily: c4b207d | coke++ | log/ (5 files): today (automated commit) |
|||
rl6-roast-data: 62607f6 | coke++ | / (3 files): today (automated commit) |
|||
rl6-roast-data: d05faaa | coke++ | p (2 files): today (automated commit) |
|||
00:24
rurban1 left
|
|||
[Coke] | logs broken? | 00:32 | |
ah, somethign just slow. | |||
00:33
_ilbot joined
00:37
FROGGS left
00:38
roboticus joined,
rurban1 joined
00:40
beastd left
00:53
thou left
|
|||
[Coke] | I am finally free from work for a few days, have a few hours to kill... and have no desire to sixperl. :( | 01:01 | |
timotimo | take all the time you need | 01:03 | |
diakopter | [Coke]: sounds like your "list of things I could do" needs attention | 01:04 | |
01:24
felher joined
|
|||
TimToady | p: "=date col1 col2 col3" ~~ m:s/^ '=date' (\S+)+ % \s /; say @().join(':'); | 01:27 | |
camelia | rakudo-parrot e5fd34: OUTPUT«col1:col2:col3» | ||
TimToady | @() is slightly prettier thatn @$/ | ||
japhb is looking at several different serialization/wire formats at the moment | 01:28 | ||
TimToady | p: "=date col1 col2 col3" ~~ m:s/^ '=date' (\S+)+ % \s /; say $/.join(':'); | ||
camelia | rakudo-parrot e5fd34: OUTPUT«=date col1 col2 col3» | ||
TimToady | arguably .join should prefer the list nature of $/ | ||
japhb | Is there any value in carving out a top-level namespace for data formats? | ||
Just to make them easy for users to find, I mean. | 01:29 | ||
I suppose we'd need one for protocols as well, though Net:: worked decently for that in the early Perl 5 days. | |||
Data:: ? | 01:30 | ||
TimToady | if it's critical for users to keep the identities straight, it would seem reasonable to give them names that are guaranteed unique *somewhere* | ||
Data seems a bit general as a term, and not very "meta" | 01:31 | ||
Haskell usage of the term notwithstanding :) | |||
japhb | Yeah, and it does get used elsewhere for similar purposes, but I agree it's a bit weak | 01:32 | |
diakopter | waa | ||
01:32
fridim__ joined
|
|||
TimToady | "data format" is not much of an improvement though in specificity... | 01:33 | |
japhb | Format:: would probably make people think of text or visual formatting | ||
(or e.g. Format::Time:: , which is just the wrong direction) | 01:34 | ||
diakopter | use formats; | ||
TimToady | and "form" is like what you fill in | ||
and "serial" implies that you're serializing it | 01:35 | ||
japhb | Well, often you are serializing to/from it. | ||
.oO( Wire:: ) |
|||
TimToady | obviously the right thing is to use the URL of the definitional specification for the format :) | 01:36 | |
01:38
xenoterracide joined
|
|||
japhb | *bill-the-cat-akpth* | 01:38 | |
TimToady | O_o | 01:39 | |
diakopter | eek-the-cat | 01:43 | |
colomon | o/ | 01:48 | |
lue | japhb: how's about DataSpec or something? [ thinking of the phrase "data storage specification", which a lot of data formats tend to be :) ] | 01:52 | |
TimToady | ⊙⨀ | 01:53 | |
🔵🔵 | 01:54 | ||
lue | .u 🔵🔵 | ||
r: say "🔵🔵".names # :) | |||
camelia | rakudo-jvm e5fd34: OUTPUT«No such method 'names' for invocant of type 'Str' in block at /tmp/gxs19LSBT8:1 in any eval at gen/jvm/stage2/NQPHLL.nqp:1086 in any evalfiles at gen/jvm/stage2/NQPHLL.nqp:1292 in any command_eval at gen/jvm/stage2/NQPHLL.nqp:1196 in an…» | ||
..rakudo-parrot e5fd34: OUTPUT«No such method 'names' for invocant of type 'Str' in block at /tmp/99rLfEun4P:1 in any at /tmp/99rLfEun4P:1 in any at gen/parrot/stage2/NQPHLL.nqp:1146 in any eval at gen/parrot/stage2/NQPHLL.nqp:1133 in any evalfiles at gen/parrot…» | |||
TimToady | ⧁⧀ | 01:57 | |
02:00
raiph left
|
|||
TimToady | ⊙⨀ | 02:03 | |
⧁°⧀ | |||
hmm, shoulda used a non-breaking space for the logfile, which removes initial spaces | 02:06 | ||
02:10
prevost left
|
|||
japhb | Exchange:: # Sigh | 02:13 | |
02:15
tgt left,
colomon left
|
|||
japhb | RW:: | 02:17 | |
Binary:: | 02:18 | ||
(Of course, that leaves out all the text data formats, for which Text:: is misleading. Plus, Binary:: is misleading by itself.) | |||
TimToady | .oO(Doormats) |
02:19 | |
Coding | 02:20 | ||
Code | |||
japhb | Encoding? | ||
TimToady | Code::YAML2 | 02:21 | |
japhb | Encoding::BSON, Encoding::MessagePack, Encoding::ProtocolBuffers (or Encoding::PB), Encoding::BERT, .... | ||
Code:: feels like source code manipulation or cryptography | |||
TimToady | Coding saves 2 lettres | 02:22 | |
and En is only one direction :) | |||
japhb | Not enough win for the confusion | ||
Codec:: | |||
TimToady | Encoding means "Unicode" to a lot of folks | ||
japhb | Although more often used for audio and video | 02:23 | |
TimToady | Deco :) | ||
japhb | Although I kinda like the symmetry of using Codec:: for any arbitrary data format | ||
TimToady | Patois | ||
Lingo | |||
japhb | Heh | 02:24 | |
TimToady | Pidgin | ||
boy belong dog | 02:25 | ||
japhb | .oO( Net::RPC::Thrift using Codec::Thrift ) |
||
.oO( Net::RPC::Thrift using Lingo::Thrift ) |
|||
TimToady | anyway, the idea is some kind of language shared by different cultures | ||
japhb | Yeah, I see that | 02:26 | |
TimToady | then there's all the bridge metaphors... | ||
connections... | 02:27 | ||
not to mention Net(work) | |||
02:27
raiph joined
|
|||
japhb | Seems best to limit Net:: to actual networking protocols | 02:27 | |
TimToady | define "network" | 02:28 | |
TimToady notes the stack doesn't stop at any particular level | |||
02:29
mattp_ joined
|
|||
TimToady | Layer::ProtocolBuffers | 02:30 | |
Via::ProtocolBuffers | 02:33 | ||
raiph | use std::XXX # XXX is normalized version of the title of a standard's wikipedia page | 02:37 | |
02:39
Bill__ joined
|
|||
japhb_ | Hmmm, Layer:: and Via:: are interesting, though the latter feels like it belongs inside another namespace defining a higher-level protocol | 02:40 | |
raiph: use IETF::RFC1149; | 02:41 | ||
So far, Data::, Encoding::, Codec::, Lingo::, Layer:: have passed my initial sniff test | 02:45 | ||
None is ideal, mind you. | 02:46 | ||
TimToady doesn't like the cultural overloading of the first three | |||
japhb_ | My favorite is probably Lingo::, I'm just not entirely sure why. | ||
perigrin | Viva::Le::ProtocolBuffers! | ||
japhb_: it reminds you that you're just a small turtle being told where to go? | 02:47 | ||
japhb_ | obBikeShed:: | ||
perigrin | oh wait no that's logo. | ||
japhb_ | .oO( Logo::WithSwooshAndBall ) |
||
.oO( A thousand junior graphic designers suddenly cried out and were silenced ) |
02:48 | ||
02:49
Bill__ left
|
|||
TimToady is not sure whether japhb_ is more disturbed or disturbing... | 02:49 | ||
japhb_ | heh | ||
perigrin | TimToady: those are in any way exclusive? | 02:50 | |
dalek | osystem: 5f98d12 | colomon++ | META.list: Update META.list Add Math::ChebyshevPolynomial. |
||
japhb_ | perigrin: It's a matter of degree, you see. | 02:51 | |
02:51
colomon joined,
benabik joined
|
|||
TimToady | in fact, asking which one is more implies some amount of overlap | 02:52 | |
japhb_ wonders if Lingo:: is overbroad, despite really starting to like it | 02:54 | ||
I especially like that it is short and implies that data formats are just another form of language. | 02:55 | ||
(As TimToady++ sorta said earlier) | |||
ingy | is Ingy:: taken? | 02:56 | |
japhb_ | Ingy, I think you've earned your own namespace. ;-) | 02:57 | |
raiph | I liked Format:: -- is anyone really going to be confused (that it's about p5 formats) for more than a second? | 02:58 | |
japhb_ | :auth<ingy:...> | ||
ingy | I hereby offer it to the highest bidder at the next Perl6 auction | ||
japhb_ | raiph: No, but they might be confused by Format::DateTime or Format::Currency or suchlike | 02:59 | |
ingy | I actually own perl5i.org and tried to auction it at oscon, but nobody took it | ||
or maybe it was perlster.org | |||
02:59
btyler joined
|
|||
ingy | anyone want perl11.org | 03:00 | |
or pyrl.org? | |||
japhb_ | ingy, DNS auctioneer ... | ||
ingy | jujudot.com | ||
bpan.org | |||
I think I have about 60 | |||
it's a sickness | |||
japhb_ | Sheesh | ||
ingy | I even have döt.net | 03:01 | |
and ingydotnet.{com,net,org} | |||
:{ | 03:02 | ||
japhb_ | .oO( Domain Hoarders Anonymous ) |
||
03:02
dayangkun left
|
|||
ingy | dha++ | 03:02 | |
japhb_ | raiph: Of course, perhaps we say that my examples above belong in Text:: or Text::Format:: instead | 03:05 | |
But if we want people to think in terms of languages, maybe everything that has a grammar and/or can be parsed is a Lingo | 03:06 | ||
The line blurs with traditional Net:: spaces | |||
Lingo::SSH2 | 03:07 | ||
... and that brings me back to overbroad | |||
lue | japhb_: I kinda like Lingo:: . But if nothing works, you could always just make up a word :) | ||
japhb_ | ... but culture defines the word | ||
Zlort:: | 03:08 | ||
Enthalpy: | |||
lue | .oO(STRUctured Data Organizational Format → STRUDOF:: :D) |
03:09 | |
raiph | presumably the key characteristic is lack of ambiguity of where things go | ||
as far as possible | |||
hmm. i retract that. | 03:10 | ||
japhb_ wonders if Lingo:: falls prey to YTICN | 03:12 | ||
Will people be confused by Lingo:: versus slang? | 03:13 | ||
diakopter | In the face of expansive proliferation, names shouldn't be descriptive, but instead otherwise memorable | ||
japhb_ | diakopter: [zoom in] | 03:14 | |
diakopter | *prospective expansive proliferation | ||
raiph | does anyone see merit in a std:: namespace? | ||
japhb_ | PEP, for short | ||
diakopter | japhb_: P, for short | ||
lue | raiph: that feels very risky for Perl 6 — | 03:15 | |
japhb_ | std:: feels ... C++ | ||
lue | std: say "hi" | ||
camelia | std 3b262af: OUTPUT«ok 00:01 122m» | ||
japhb_ | diakopter: Dang, Python joke fell flat | ||
diakopter | since when did Ranch+mayo taste so good? | ||
oh yeah, since I haven't eaten all day. | |||
japhb_ | Heh | ||
raiph | or something like it (Standard:: etc.) | 03:16 | |
japhb_ | raiph: My feeling is that it's on the rare side for people to thing about something in terms of the name of the standard (Ecmascript, anyone?), and then there's the question of how we encode standard release version implementation version | 03:17 | |
lue | .oO(BIT Stream Interpretation Scheme -> BITSIS:: ; Agreed-upon Structure Manipulator -> ASM or AUSM::) |
03:18 | |
japhb_ | Handshake | ||
perigrin | ingy: OSCON really seems like the wrong place to auction a perl5i.org domain ... | ||
japhb_ | Treaty | 03:19 | |
raiph | lue: that's why i suggested canonicalizing via wikipedia | ||
lue | raiph: I don't see what that has to do with figuring out a top-level namespace. | ||
japhb_ | wikipedia is mutable in a way I think we don't want. | ||
And what lue said, of course. | |||
raiph | japhb_: not in practice | ||
lue: i thought you were raising the issue that it wouldn't be obvious what to call standards | 03:20 | ||
japhb_ | raiph: It only takes one article name change to open that can of worms | ||
perigrin | see also the recent edit wars on the article about Cans of Worms. | 03:21 | |
japhb_ | :-D | ||
lue | raiph: No. I'm scratching for a TLN :) | ||
STNDRD:: and FileSpec:: also come to mind. | 03:22 | ||
.oO(I can't be the only one who really dislikes the look of BNF) |
03:25 | ||
japhb_ | lue: Yeah, I never liked classic BNF | 03:26 | |
raiph | japhb_: I don't (yet) agree about the impact of a name change. | ||
japhb_ | Bad application of waterbed complexity | ||
raiph: Noted. :-) | 03:27 | ||
raiph | japhb_: anyhoo, if you don't see the merit of a standard namespace the canonicality of WP is moot | ||
japhb_ | raiph: I think part of the problem is that "standard" means a lot of different things, while pretending to be just one. | 03:28 | |
Ooop, bus stop coming up. | |||
lue | japhb_: for context (:P), I'm having a really hard time convincing myself that it is possible to read the grammar in www.unicode.org/Public/UCD/latest/u...List.html, purely because BNF looks awful. | ||
diakopter | lue: could it be simpler or something? | 03:43 | |
lue | diakopter: I think it may be just that I prefer the Perl 6 way of defining a grammar :) Although that doesn't seem like the only reason... | 03:44 | |
My biggest issue seems to be that the <rule name> ::= stuff format doesn't feel right. Too... "line oriented" perhaps | 03:45 | ||
(not helping is the fact that the particular use of BNF I'm looking at appears to be incomplete :/) | 03:46 | ||
Perhaps it's the stuffy language used to describe BNF ("terminal" v. "nonterminal") and the typical stuffiness of surrounding texts. Or how it lends itself to being wall-of-text-ish. Again, hard to say, I just don't like it. | 03:49 | ||
ingy | perigrin: true. but I just remembered the actual domain. not perl5i.org… | 03:56 | |
foocamp.com | |||
anyway, in 2009, ORA asked me to sell it to them | 03:57 | ||
I was like well sure, I've been trying to give it to you for 6 years | 03:58 | ||
I sold it for $75 and a foocamp ticket :) | |||
$75 was the current expenditure on the name | |||
japhb_: btw, what are you guys trying to decide on? | 04:03 | ||
04:03
kaleem joined
|
|||
ingy | naming stuff is my favorite pasttime | 04:03 | |
anyone else can answer for japhb_ :) | 04:04 | ||
he seems to have been busstopped | |||
lue | ingy: what top level namespace would be most appropriate for file-format-manipulating modules? | ||
ingy | example? | 04:05 | |
lue | ingy: <japhb> Is there any value in carving out a top-level namespace for data formats? | ||
ingy | i see | 04:06 | |
lue | I don't have specific formats at hand, but there are plenty of TLN:: suggestions above already :) | ||
ingy | pod2md, json2yaml, etc? | ||
lue | ingy: at least I was thinking of modules that focus on a particular format. So TLN::Netstring, TLN::HTML, TLN::GIF, so on. | 04:08 | |
[ no clue what japhb was thinking about :) ] | |||
ingy | :) | ||
I've always been of the opinion that namespacing should not be strictly (or even unstrictly) enforced. it is just one way of categorizing things. | 04:10 | ||
as the creator of too many p5 tln-s… | 04:11 | ||
a framework for instance, should almost always have a tln | |||
imho | |||
because you are planning for world domination | 04:12 | ||
it would be like calling perl6 Programming::Language::Perl::Version::Six | |||
or somesuch | |||
unfortunately other languages like python and ruby have no respect for namespacing | 04:13 | ||
and I think that's to their detriment | |||
lue | ingy: I'm thinking of the TLN not as something to be enforced, but as something module writers could use if they don't have a better place to put it under. It'd be nice to not suggest a terrible TLN. | ||
ingy | noted | 04:14 | |
lue | (i.e. I'd prefer people to flock to FileSpec::MyFormat instead of, say Format::MyFormat or other terribly generic TLNs) | ||
ingy | It would be hard to imagine what TLN::HTML would do though | ||
I'd look for HTML::thinger | 04:15 | ||
BenGoldberg | Well, FileSpec::HTML would likely be a parser which checks if your html follows the spec ;) | ||
lue | Of course you should be a bit more specific: InetData::Netstring, Markup::HTML, and Image::GIF for my initial examples. | ||
ingy | *or*!!! I'd look for the intersection in the tag cloud of HTML and Thinger | ||
BenGoldberg: so would HTML::FileSpec :) | 04:16 | ||
lue | HTML::Tidy::NoNotThatOne | ||
ingy | in a sense A::B::C is 3 tags: A, B, C | 04:17 | |
C::B::A is probably similar | 04:18 | ||
ingy ♥'s the symlink | |||
lue | ingy: all of a sudden I got the idea for alternate namespace syntax: anywhere you can do A::B, you could do B.A or similar :P. class foothing::perl6::org, or class org.perl6.foothing >:P | 04:19 | |
04:20
MikeFair joined
|
|||
lue | ingy: agreed, many problems would be easier if we didn't have to consider Certain Operating Systems™ that don't posess symlinks :) | 04:20 | |
*sses rather | |||
ingy | lue: RSN! | ||
one can hope anyway | |||
lue | Reverse... Something Names? | 04:21 | |
ingy | Real Soon Now | ||
M$ WILL DIE! | |||
one would think that OS has outlived its niche | 04:22 | ||
sorry diakopter | |||
sorry jnthn | |||
shit, I'm in the wrong place to show that sentiment | |||
lue | .oO(Transforming a BNF grammar, that which does not posses quantifiers, to Perl 6, which does, is interesting.) |
04:23 | |
ingy | I ♥♥♥ Windows. MMMMMM. SOOOO GOOOD! | ||
lue | ingy: Windows need not die. Just accept the awesome magic of ln -s :) | ||
ingy | BNF has no quantifiers? | 04:24 | |
lue | ingy: nope. Well, not formally, but people who write out BNF syntax do tend to use them. | ||
ingy | btw, wtf are windows shortcuts anyway | ||
lue | See www.unicode.org/Public/UCD/latest/u...sList.html . The first BNF rule (named NAMELIST) uses the * quantifier, but just below that you'll see recursive rule calling in place of quantifiers | 04:25 | |
ingy | lue: Markup::{Pod,Markdown} Data::{YAML,JSON} | 04:26 | |
I would use those TLNs | |||
I hope P6 is not first squat, first p0wn on the naming | |||
lue | ingy: I feel some would object to Data::, but I do lean towards specialized-er TLNs anyway. | 04:27 | |
diakopter | ingy: windows shortcuts are like old mac aliases | ||
ingy | diakopter: expound | ||
lue | I get the sense that the One True Rule at this stage is to avoid the really generic terms for TLNs as much as possible. | ||
diakopter | windows shortcuts are simply single-line scripts | 04:28 | |
lue | .oO( Module:: ) |
||
diakopter | shell scripts | ||
ingy | huh | ||
interesting | |||
diakopter | typically simply paths to other executables | ||
raydiak | diakopter: are you sure? all my .lnk files are binary gibberish | 04:29 | |
lue kinda wants to see ACME:: -> Ofun:: for Perl 6, because that would be more, well, -Ofun :) | |||
ingy | instead of symlinks, let's use something that can embed a virus | ||
diakopter | raydiak: yes... I didn't say it was human readable... .lnk files have their own editor | ||
ingy | Ofun::++ | ||
raydiak | hmmm...so if I paste the contents into a command prompt, it'll run? | 04:30 | |
diakopter | raydiak: my point was it has the same functionality as a single-line shell script. but it can do other things like control aspects of the terminal | ||
raydiak: what? | |||
raydiak | ah, I see...I misunderstood your point. my bad :) | ||
diakopter | I guess | 04:31 | |
raydiak | diakopter: was just thinking if they in fact were single-line shell scripts, then you should be able to paste the contents into a shell and execute it, but I see that wasn't quite what you meant | 04:32 | |
diakopter | yes, you can paste its contents, if you copy the contents from an editor that can read it.\ | ||
raydiak | just used type on the command line (windows version of cat) | 04:33 | |
ingy | I had a brilliant idea this morning… | ||
Long running computer jokes need test suites to ensure they remain funny | |||
because when computing is no longer funny, we all lose | 04:34 | ||
Tfun:: | |||
maybe | |||
diakopter | raydiak: I'm having trouble discerning your intent | ||
ingy | diakopter: I think raydiak didn't understand you and now she does | 04:35 | |
raydiak | diakopter: I was just exploring your assertion that "windows shortcuts are simply single-line scripts". it wasn't congruent with my understanding, and I was checking to see if there was something more I could learn, is all. | 04:36 | |
diakopter | sorry, I was assuming you'd seen the .lnk editor before | 04:37 | |
raydiak | unless you mean the properties dialog, nope | 04:38 | |
ingy soaks in the awkwardness :D | |||
diakopter | yes, the properties dialog is what I meant | ||
bonsaikitten | ingy: just don't run your tests in germany ;) | ||
ingy needs some sour cream and onion corn puffs | |||
diakopter | I can't possibly imagine what else I could have meant | 04:39 | |
<- now needs to learn something | |||
ingy | bonsaikitten: every test repo would (obviously) have a German branch | ||
/nick bonsaingy | 04:40 | ||
hrmm, nah | |||
lue | diakopter: to be fair, "Link Editor" make me think of some small program called LINKEDIT.EXE :) | 04:41 | |
diakopter | if anything that makes it less fair | 04:42 | |
04:43
djanatyn left
|
|||
raydiak | I am not sure what is unfair or awkward here, but I apoligize for the interruption. I seem to have had a (very unintended) chaotic effect on conversation in this instance. | 04:43 | |
ingy | raydiak: *hugs* | ||
diakopter | no need to apologize, I was being touchy and troll-paranoid/overreactive; I'm sorry | 04:44 | |
04:44
kaleem left
04:45
colomon left
|
|||
diakopter | not to mention pedantic. | 04:45 | |
ingy | see we even scared off colomon :( | ||
raydiak | it's all good :) I know I'm new around here, and expect people to be taken a little aback when I jump into their conversations | ||
diakopter | ingy: colomon usually signs off at night :P | 04:46 | |
ingy shuts tfu and writes some code :) | 04:47 | ||
diakopter shuts tfu and writes some business plan | 04:50 | ||
04:51
xenoterracide left
|
|||
raydiak shuts tfu and makes some pictures of shiny spheres | 04:53 | ||
04:57
BenGoldberg left
04:58
billy__ joined
|
|||
billy__ | hey everyone | 04:58 | |
i'm new to perl, perl6, and irc in general | |||
TimToady | howdy | ||
04:59
preflex_ joined,
preflex left,
ChanServ sets mode: +v preflex_,
Entonian joined
|
|||
TimToady | this is probably the quietest time in the 24-hour cycle, since most of our .eu folk are asleep | 05:00 | |
05:00
preflex_ is now known as preflex
|
|||
diakopter | vicious felonies are members of an elite squad | 05:00 | |
05:00
billy__ left
|
|||
diakopter | er | 05:01 | |
TimToady | planning to become elite? | 05:04 | |
diakopter | no i was quoting the law and order voiceover intro, wrong window, never mind | 05:05 | |
TimToady | whew! :) | ||
05:05
berekuk joined
05:06
btyler left
05:11
araujo left
05:16
Entonian left
05:26
berekuk left
05:29
raiph left,
xenoterracide joined
|
|||
lue | .oO[ converting that BNF grammar, I've for the first time felt that 'emacs pinky' issue. I need to stop soon :) ] | 05:34 | |
(although it's only because I like the ALL_CAPS look of the original grammar's rule names, and I staunchly refuse to use caps lock :P) | 05:36 | ||
05:41
SamuraiJack_ joined
05:44
dwoldrich joined
05:59
fridim__ left
06:07
rurban1 left
06:14
zamolxes joined
06:16
Tene joined
06:21
dwoldrich left
|
|||
raydiak | can anyone tell me what the state of garbage collection is in rakudo, and if there's anything I can do in my code to help it along? | 06:21 | |
06:23
FROGGS[mobile] joined
06:30
MikeFair left
06:36
xinming left,
xinming joined
06:38
rurban1 joined
06:40
rurban2 joined,
MikeFair joined
06:42
rurban1 left
06:44
rurban2 left
|
|||
moritz | raydiak: allocate fewer objects :-) | 06:57 | |
raydiak | moritz: thanks :) ...but everything is an object :P | 07:00 | |
07:01
xinming left
07:02
xinming joined
|
|||
raydiak | iow, from my testing, even a simple "my $foo = []" in a loop will eventually run out of memory. is there nothing I can do about it? I've been trying to roll with the punches, but this may be a fatal blow to my current project for the time being. | 07:18 | |
07:25
xenoterracide left
07:27
SamuraiJack_ left
07:33
SamuraiJack_ joined
07:36
FROGGS[mobile] left
07:39
MikeFair left
07:43
kaleem joined
07:48
FROGGS joined
|
|||
FROGGS | a very nice morning to you all O/ | 07:50 | |
err, o/ | 07:51 | ||
raydiak | good morning \o | ||
07:52
xinming left,
denisboyun joined
|
|||
FROGGS | hi raydiak | 07:52 | |
07:52
xinming joined,
ssutch left
|
|||
raydiak | hello | 07:52 | |
07:53
ssutch joined
|
|||
moritz | raydiak: well, that's a bug, and the best thing you can do is write a bug report | 07:59 | |
08:01
xinming left
|
|||
raydiak | moritz: thanks, will do. so no way to manually release an object? | 08:01 | |
08:02
xinming joined
|
|||
jnthn | morning o/ | 08:02 | |
FROGGS | hi jnthn | ||
raydiak | g'morning | ||
moritz | raydiak: you can try with $foo = Any at the end of the loop | 08:04 | |
raydiak: no idea if it'll do any good | |||
08:06
zakharyas joined
|
|||
raydiak | moritz: thanks, giving it a shot. failing that, I suppose I can just write a wrapper script that calls the real one repeatedly for smaller portions of the dataset and assembles the files at the end | 08:06 | |
08:07
xinming left,
xinming joined
|
|||
raydiak | moritz: nope, no luck. but thanks for the help in either case :) | 08:07 | |
FROGGS | raydiak: maybe you could use map() to transform the list? | ||
(sorry if that doesn't fit, I don't know your problem) | 08:08 | ||
raydiak | I appreciate it, but that was just an example, the real app is far more complex...doing lots of vector math in nested loops and writing the results out to a file as it goes, but it doesn't seem to release memory, usage just balloons until it's done or it crashes OOM | 08:10 | |
jnthn | A my $x = [] in a loop can indeed swallow lots of memory if not in sink context... | 08:13 | |
'cus then for works like a map... | 08:14 | ||
You can tell if it's that by shoving Nil; at the end of the loop | |||
08:14
nnunley left
|
|||
jnthn | And yes, this will be fixec | 08:14 | |
raydiak | jnthn: thanks! trying that out... | 08:15 | |
08:15
kurahaupo joined
|
|||
raydiak | jnthn: curious: how does putting Nil at the end of the loop change the context of a "my" somewhere else in the loop? | 08:16 | |
FROGGS | raydiak: the last thing in the loop will be returned, like in map | 08:17 | |
jnthn | raydiak: Oh, I assumed that the my was the only thing in there... :) | ||
raydiak: And you had reduced the problem to that. | |||
FROGGS | so in order to return something, it must keep it | ||
moritz | r: my @x = do for ^10 { $_ ** 2 }; say @x.perl | ||
camelia | rakudo-parrot e5fd34, rakudo-jvm e5fd34: OUTPUT«Array.new(0, 1, 4, 9, 16, 25, 36, 49, 64, 81)» | ||
raydiak | okay, I get it...thanks guys | ||
the Nil didn't fix it | 08:18 | ||
FROGGS | I think we could help better if you had a "working" snippet to show | 08:19 | |
raydiak | I have a working test. The "real" code is hundreds of lines and a dozen or two files. | 08:20 | |
(so I don't know which part I would even show you) | 08:21 | ||
my test: pastebin.com/3tAjCSPr (sorry for the trailing whitespace, I get lazy after midnight) | 08:23 | ||
moritz | oh yes, that leaks like hell | 08:26 | |
08:26
djanatyn joined
|
|||
moritz | doesn't leak on perl6-j | 08:27 | |
raydiak: so if that's an option for you, try the JVM backend | |||
FROGGS | it it the qqx? | ||
is it* | |||
moritz | no | ||
if I remove the my $a = []; $a = Any; it stops leaking so badly | 08:28 | ||
raydiak | that's the part that I'm testing though...creating objects in a loop | ||
FROGGS | what about 'my $a = Any'? | ||
or just the = [] | |||
moritz | FROGGS: my $a = Any doesn't leak | 08:29 | |
FROGGS | so it is the list... | ||
moritz | FROGGS: just my $a = []; leaks | 08:30 | |
FROGGS | k | ||
FROGGS heats up valgrind | |||
moritz | []; also leaks | ||
08:30
kurahaupo left
|
|||
raydiak | {} leaks a lot less, but more than none | 08:31 | |
moritz | raydiak: I've submitted a bug report for you | 08:34 | |
raydiak | moritz: thanks, I'll discard the one I was writing. I always agonize over the verbiage | 08:35 | |
08:39
dmol joined
|
|||
moritz | raydiak: rt.perl.org/Public/Bug/Display.html?id=120638 | 08:40 | |
pratise helps a lot :-) | 08:41 | ||
08:42
nnunley joined
|
|||
raydiak | wow, the leaks are HUGE for you...mine only jumps a few dozen megs per line | 08:42 | |
FROGGS | ==6371== 1,115,200,000 bytes in 1,394 blocks are still reachable in loss record 2,271 of 2,271 | 08:46 | |
==6371== by 0x9212F4A: Parrot_QRPA_set_integer_native (qrpa.c:827) | |||
08:47
nnunley left
|
|||
FROGGS | that is a lot IMO: 1,115,200,000 bytes | 08:48 | |
moritz | oh, and it doesn't even say "from malloc" or so \o/ | 08:50 | |
FROGGS | it does | 08:51 | |
just reduced the output | |||
these go in between: | 08:52 | ||
==6371== at 0x4C2A2DB: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) | |||
==6371== by 0x4EBD66B: gc_gms_allocate_memory_chunk (gc_gms.c:1947) | |||
moritz | ok | ||
who knows QRPA? :-) | |||
raydiak | are there any serious limitations in the JVM backend that I should know about before spending hours compiling it? | 08:58 | |
moritz | raydiak: it doesn't have a native call interface, and thus no support for database connnectivity, for example | ||
raydiak | moritz: if I don't know precisely what that means, does it mean I don't need to worry about it? | 08:59 | |
moritz | raydiak: if you don't use any external modules, no | ||
FROGGS | or C libraries | ||
JVM is better anyway if you have large datasets or longer running things | 09:00 | ||
expect if you do a lot of string split and concat, this is rather slow on jvm atm | |||
raydiak | nope, but heavy numeric ops, including trig functions, sqrt, etc | 09:01 | |
FROGGS | that just do well on jvm | ||
s/just/should/ | |||
moritz | qrpa.pmc | 09:02 | |
raydiak | neat, maybe I can make more shinier spheres with this JVM magic you speak of | ||
moritz | slots = (slots) | ||
? mem_gc_realloc_n_typed(INTERP, slots, ssize, PMC *) | |||
: mem_gc_allocate_n_typed(INTERP, ssize, PMC *); | |||
that's what seems to leak | |||
I wonder if auto_attrs and having a custom destroy vtable goes together well | 09:03 | ||
FROGGS | I added a debug statement to see if destroy is called at all | 09:05 | |
I see calls to it when compiling nqp, but we'll see if my snippet shows calls to it too | |||
hmmm, destroy does not get called for: perl6-p -e 'for ^500 { my $a = []; 1 }' | 09:19 | ||
so, the gc does not collect it? | |||
09:27
pjcj joined
09:32
REPLeffect left
09:38
dakkar joined
09:40
darutoko joined
09:45
ssutch left
|
|||
timotimo | o/ | 09:46 | |
FROGGS | hi timotimo | 09:47 | |
09:49
fhelmberger joined
09:51
hummeleB1 joined
|
|||
timotimo | wow, the gc not collecting qrpa is *bad* | 09:54 | |
09:54
REPLeffect joined
|
|||
FROGGS | it feels like as if that only happens in userland | 09:54 | |
timotimo | weird. | 09:55 | |
timotimo generates some pir | |||
(well, gotta get rakudo-p built first | |||
so ... will take a while) | |||
FROGGS | I added a debug stmt now to see if VMArray->destroy gets called | ||
09:57
fhelmberger_ joined
|
|||
timotimo | raydiak: it's a good catch in any case! :) | 09:57 | |
thanks for the report | |||
09:58
fhelmberger left
|
|||
FROGGS | yes, that needs fixing :o) | 09:58 | |
I wanna have Perl 6 now at work :o( | 09:59 | ||
I wanna pass named args as :$folder, now! | |||
timotimo | :) | 10:00 | |
i feel you :( | |||
FROGGS | it doesn't call VMArray->destroy either, | 10:02 | |
masak | good antenoon, #perl6 | 10:06 | |
FROGGS | hi masak | ||
tadzik | masak! | 10:10 | |
timotimo | i've got an idea | 10:11 | |
when an empty qrpa is built | |||
it doesn't seem to call PObj_custom_mark_destroy_SETALL(SELF) | |||
it only does that as soon as it's resized once | |||
could that be the cause of the problem? | |||
timotimo attempts a patch | |||
er, i'm not sure how to give it a custom init method | 10:12 | ||
FROGGS | VTABLE void init() { ? | 10:13 | |
timotimo | oh, just VTABLE ... yeah | ||
FROGGS | nqp/src/vm/parrot/pmc/nqplexinfo.pmc:31: VTABLE void init() { | ||
timotimo | i looked at a different pmc and only saw VTABLE void init_int(int ...) { ... } | 10:14 | |
and i wasn't sure what that meant | |||
FROGGS | timotimo: btw, that Parrot_QRPA_set_integer_native is called | ||
timotimo | with what argument? | ||
FROGGS | no idea | ||
timotimo | it may return too early | 10:15 | |
if there's already enough slots in the array | |||
FROGGS | ahh, now I see it too! | ||
timotimo++ | |||
timotimo | first thing in the morning: a GC bug (possibly) fixed. | 10:16 | |
what a nice start to a day :) | |||
FROGGS | that'd be cool, yes :o) | ||
though it is not what I would call "morning" | |||
timotimo | I haven't even had breakfast or read my RSS's yet, so it's morning for me :P | ||
FROGGS | I am awake for 4.6 hours now :/ | 10:17 | |
10:17
REPLeffect left
10:18
denisboyun left
|
|||
timotimo | i know, i'm a bloody student :| | 10:18 | |
masak | I love the smell of a GC bug (possible) fixed in the morning. | 10:19 | |
possibly* | |||
10:20
REPLeffect joined
|
|||
moritz harvests some web spammer's IP addresses, and wonders if there's any use in contacting the abuse address of their providers | 10:23 | ||
timotimo | perl6-p -e 'loop { my @a = []; Nil }' - this still grows about 1 MB/s | ||
but it shouldn't grow at all, right? | |||
FROGGS | maybe it is producing a list of Nils? | 10:24 | |
timotimo | but but but sink context? | 10:25 | |
FROGGS | a meg per second is not what I see for the snippet I posted, that was about a gig within two seconds | ||
masak | hehe, Go has a web framework called "Gadget" :P | ||
timotimo | well, the process starts out at about 4gb | ||
which is crazy to me | |||
FROGGS | go go! | ||
uhh | |||
tadzik | that's innovative naming for Golang's world | 10:26 | |
timotimo | actually ... no, it starts at like 300 and then ridiculously fastly grows up to 4gb and then starts growing very slowly | ||
tadzik | a nice change from the beaten to death "Let's Go x" line | ||
timotimo | so i guess i didn't fix it. | ||
FROGGS | timotimo: no, that patch does not change anything, still in use at exit: 750M for: for ^500 { my $a = []; 1 } | 10:27 | |
timotimo | right. | ||
it would seem like the custom mark_destroy only needs to happen if there's anything at all in slots that points to other stuff | 10:28 | ||
so perhaps it was entirely legit before. | |||
so it would also be correct if it didn't call the custom destroy in that case. | 10:30 | ||
it would *not*, however, be correct if it didn't free up the qrpa at all | |||
but pm wrote this code, so i'm kind of doubting that he didn't know how to use the gc ... | |||
10:41
cognominal left
10:46
REPLeffect left
|
|||
moritz | argument by authority is the weakest form of argument (according to Wikipedia) | 10:49 | |
timotimo | well, i'm weak minded, so ... :) | 10:50 | |
timotimo is trying to get fcitx set up so he can type unicode emoji comfortably and fails to understand how to work the thing | 10:51 | ||
i have figured out the unicode input mode where i can just type the hex and get the character | |||
except it doesn't seem to work in this terminal for some reason | |||
fwiw, it also happens if the list has an item in it | 11:14 | ||
11:37
cognominal joined
11:40
electricface joined
11:41
electricface left
11:43
rindolf joined
11:46
colomon joined
11:54
SmokeMachine left
12:08
fhelmberger_ left,
kaare_ joined
12:09
fhelmberger joined
12:12
denisboyun joined
12:13
fhelmberger left
|
|||
moritz | mortoray.com/2013/11/27/the-string-...is-broken/ somebody here wants grapheme-level strings | 12:14 | |
FROGGS | +1 | ||
:o) | |||
12:15
tgt joined
|
|||
FROGGS | moritz: are you going to comment? | 12:16 | |
moritz | nope | 12:18 | |
12:21
salv0 left
12:27
salv0 joined
12:37
aborazmeh joined
12:43
rindolf left
12:45
sivoais joined
|
|||
pmichaud_ | question on RT #120638 --- does for/sink context now properly throw away intermediate values? | 13:00 | |
synopsebot | Link: rt.perl.org/rt3//Public/Bug/Displa...?id=120638 | ||
13:00
SamuraiJack_ left
|
|||
moritz | pmichaud_: I don't know, but since the []; isn't part of the return value, that's not the problem in this context | 13:01 | |
pmichaud_ | well, we still end up with a list of Nil's | 13:02 | |
moritz | we might, that doesn't account for much | ||
FROGGS | pmichaud: \o/ | ||
moritz | if I remove the []; I see just a few extra MB allocated once in a while | ||
pmichaud | agreed, that shouldn't make the difference | 13:03 | |
I wonder if something is keeping closures alive somewhere | |||
moritz | that might be possible, yes | ||
13:03
aborazmeh left
|
|||
FROGGS | I end up with more that 1GB for 500 iterations over { []; 1 } | 13:03 | |
moritz | though the []; isn't even in a variable | ||
so nothing should close over it | 13:04 | ||
pmichaud | well, it'd at least be in a temporary register | ||
so as long as the closure is alive, the temporary is alive and it doesn't get gc'd | |||
13:04
denis_boyun_ joined
|
|||
pmichaud | FROGGS -- that doesn't surprise me... Parrot's allocation model is not that great. | 13:05 | |
moritz | on the upside, the jvm backend doesn't leak :-) | ||
FROGGS | well, it does a great job when allocating mem :o) | ||
13:05
denisboyun left
|
|||
pmichaud | see, for exmaple, github.com/parrot/parrot/issues/795 where a program that has only one live RPA causes an out of memory panic | 13:07 | |
indeed, I wonder if 120638 is just a manifestation of #795 | 13:08 | ||
13:09
denis_boyun_ left
|
|||
pmichaud | Indeed, now that I think about it, I bet it is. | 13:11 | |
13:12
atroxaper joined
|
|||
FROGGS | :/ | 13:13 | |
pmichaud adds a note to the RT ticket | |||
13:16
kaleem left
13:17
Guest48784 joined
|
|||
timotimo | hi pm :) | 13:19 | |
pmichaud | hola, timotimo | ||
and good morning, #perl6 | |||
timotimo | so, the bug has been around for 1 year, leto said the behavior is "not acceptable", but we didn't pour power into fixing it? :( | 13:22 | |
8 months ago the pull request from rurban++ was opened and then not merged apparently | |||
pmichaud | I'm not sure that pull request actually fixed the underlying bug. | 13:23 | |
moritz | fwiw I'm not sure if that pull request actually fixes it | 13:26 | |
what it does is incorporating memory limits (ulimit) into calculation of available memory | 13:27 | ||
timotimo | ah, hm. | ||
pmichaud | is there a ulimit in place when running the code in 120638 ? | ||
timotimo | so is the calculation off, so that it tries to malloc, fails, then doesn't have enough memory to run the gc? | ||
moritz | pmichaud: I don't think I set one | ||
pmichaud | moritz: I'm a little surprised you ran out of memory then, unless there's no swap. | 13:28 | |
moritz | pmichaud: I have disabled swap on most of my machines | ||
pmichaud | okay, that makes it much more likely. | ||
moritz | I find that when all memory is used up, something is usually very wrong, and then swapping just delays the OOM killer | 13:29 | |
pmichaud | I wonder what Parrot is calculating as the memory limit, then. | ||
nwc10 | oooh, good UGT, pM | 13:30 | |
moritz | iirc total memory * $constant_less_than_1 | 13:31 | |
nwc10 | er, Pm | ||
naughty fingers. | |||
13:31
ggoebel110 joined
13:34
denis_boyun joined
13:41
ajr joined,
ajr is now known as Guest93198,
Guest93198 is now known as ajr_
13:49
rindolf joined
13:52
tgt left
13:56
tgt joined
|
|||
jnthn | oh wow, a pmichaud! | 13:56 | |
pmichaud | ...WHERE? | ||
jnthn | Darn, just a mirage! | 13:57 | |
:) | |||
jnthn waves from $teaching | |||
pmichaud waves from $Texas | |||
FROGGS | $!teaching, or is it public? | 13:58 | |
nwc10 | bet it's not snowing in Texas | ||
(not that it's snowing here, today) | |||
pmichaud | currently -2degC now | ||
timotimo | pmichaud: would you be fine with having "is nodal" merged in rakudo separately from putting "is nodal" on the appropriate classes and methods? | ||
jnthn | Well, anybody coulda signed up if they were willing to pay... :P | ||
nwc10 | pmichaud: you what? It's probably warmer here | ||
timotimo | i feel the latter task is scaring me away from going ahead and re-basing the is nodal branch | ||
pmichaud | timotimo: I'm not familiar with "is nodal" at the moment, sorry. Could just be that I haven't completely awoken yet. | 13:59 | |
nwc10: yes, it's been coldish here. We had ice and sleet earlier this week, but no snow yet this year. | |||
timotimo | ah. it's the unary hyperops thing that makes methods like .elems on lists-of-lists only run over the lists in the list instead of every element in the lists in the list | ||
pmichaud | actually, freezing temperatures in November have been somewhat rare here the past several years, so it's a nice change | 14:00 | |
jnthn | it's freezing here but no snow :( | 14:01 | |
pmichaud | timotimo: oh yes, I remember now, vaguely. I don't have an immediate answer. If you're asking if it's okay to do things in stages, I generally prefer that. | ||
masak is happy about the "no snow" part | |||
timotimo | doing it in stages would in this case mean pushing the first stage into rakudo-nom | ||
pmichaud | timotimo: I'm way out of date on the current codebase, so I'd defer to others opinions at the moment until I catch up again | 14:02 | |
timotimo | OK :) | ||
moritz | we had some snow yesterday | 14:03 | |
like, 3mm :-) | |||
pmichaud | we're in the thick of robotics competition season here so it may be a couple of weeks | ||
jnthn | Affirmative. | 14:04 | |
Hm, in a couple of weeks Rakudo may fully build on Moar :) | |||
lizmat waves from Echt, on her way to Newcastle, and then to London | |||
nwc10 | what's in Newcastle? (presume "on Tyne") | 14:05 | |
pmichaud waves to lizmat | |||
jnthn | Impossible to understand people! | ||
timotimo | so, should i put an implementation of is nodal that passes some tests where methods and classes specifically made to be nodal will be nodally evaluated, but not patch the setting to include "is nodal" wherever it's necessary? | ||
lizmat | pmichaud o/ | ||
timotimo | jnthn: would you like to give me the green lights? :) | ||
(there are four green lights!) | |||
jnthn | timotimo: Got a link tot eh branch ocmpate? | ||
ffs | |||
14:05
lizmat left
|
|||
jnthn | got a link to the branch compare? | 14:05 | |
pmichaud | I have to run off now... got a busy day ahead :-/ | 14:06 | |
will check in again soon | |||
timotimo | a second | ||
jnthn | pmichaud: Good luck... o/ | ||
timotimo | i'll probably need to touch it up still. it's not tested sufficiently and probably subtly wrong in places | 14:07 | |
jnthn | ok, get back to me when there's something to merge | ||
In theory I sorta kinda took care of most $dayjob stuff besides teaching and will have tuits tonight | |||
In practice I'm tired and seem to be getting a cold... | |||
timotimo | jnthn: github.com/timo/rakudo/compare/nodal it'll look somewhat like this | 14:09 | |
i had some different code somewhere that individually resolves nodality on a per-item basis | |||
14:15
woolfy left
14:18
kaleem joined
14:19
benabik left
|
|||
jnthn | If you "is nodal" a class and compose a role into it, are the methods composed in meant to also get the nodality? | 14:22 | |
colomon | moritz: I was thinking a perl 6 response to mortoray.com/2013/11/27/the-string-...is-broken/ might make a decent advent calendar post. | 14:23 | |
r: say "noexCCx88l".flip | |||
camelia | rakudo-parrot e5fd34, rakudo-jvm e5fd34: OUTPUT«l̈eon» | ||
colomon | r: say "😸😾" | 14:24 | |
camelia | rakudo-parrot e5fd34, rakudo-jvm e5fd34: OUTPUT«😸😾» | ||
colomon | r: say "baffle".uc | ||
camelia | rakudo-parrot e5fd34, rakudo-jvm e5fd34: OUTPUT«BAFFLE» | ||
14:28
nnunley joined
|
|||
moritz | colomon: even better if grapheme strings actually worked :-) | 14:28 | |
nwc10 | yes, I think it better to wait until at least some of NFG works | 14:29 | |
"we've got X" is far harder to whine about than "we plan to do X" | 14:30 | ||
even if that means missing the boat on commenting, if the site refuses comments after a few weeks | 14:31 | ||
timotimo | jnthn: good q. | ||
14:32
bluescreen__ joined
|
|||
jnthn | somebody else will talk about it soon enough... :) | 14:33 | |
timotimo | my gut instinct tells me it could be a WAT if it was infectious | ||
14:34
jnap joined
|
|||
jnthn | timotimo: I ask 'cus at the moment it will "is nodal" composed-in methods | 14:34 | |
I think it may be what we want? | |||
Like the of from Positional wants to be nodal? | |||
I guess worth getting an opinion from le TimToady++ | |||
timotimo | agreed | ||
14:35
bluescreen100 left
14:41
araujo joined
14:51
benabik joined
15:00
TimK1 joined
15:01
FROGGS[mobile] joined,
FROGGS left
15:02
PacoAir joined
15:03
spider-mario joined
15:06
TimK1 left
15:07
kivutar joined
|
|||
masak | so, I have a pretty specific request. | 15:13 | |
I want to build a custom meta-class such that (a) someone creating a class can choose to use it, and (b) the meta-class overrides the standard accessors with its own. | 15:14 | ||
i.e. | |||
15:15
Guest48784 left
|
|||
masak | #`[some code here]; class MyClass is meta(SpecialMetaClass) { has $.x is rw }; my $o = MyClass.new; $o.x = 42; # outputs "'x' set to 42" or something | 15:15 | |
currently reading S12 for hints on how possible this is. | |||
I don't believe I've ever seen class-specific metaclass overridings, for example. | 15:16 | ||
nor have I seen someone making a cutpoint in the default accessors. | |||
ooh, S12:2566 has an example that feels pretty close. | 15:17 | ||
synopsebot | Link: perlcabal.org/syn/S12.html#line_2566 | ||
masak | hm, technically I guess I only have to override find_method, not the accessors themselves. | 15:18 | |
p: my module EXPORTHOW::COMPOSE { role class { method find_method($obj, $name) { say "Calling $name"; nextsame } } }; class A { method foo { say "OH HAI" } }; A.new.foo | 15:26 | ||
camelia | rakudo-parrot e5fd34: OUTPUT«OH HAI» | ||
masak | aww. | ||
jnthn: ping. | |||
15:27
arnsholt joined
15:29
rurban1 joined
|
|||
jnthn | masak: ::COMPOSE is only spec'd, not implemented yet :( | 15:31 | |
15:32
thou joined
|
|||
jnthn | masak: I think if you find my slides on this from GPW you can see how I did simple AOP and it'll give you a godo hint how to do it. | 15:35 | |
*good | |||
masak | thanks for the tip. | ||
I will do that. | |||
jnthn | Note though that if you want to just do it for a specific class, then you probably want to introduce a trait to say so | 15:36 | |
masak | ah; jnthn.net/papers/2012-gpw-meta-programming.pdf | ||
trait -- gotcha. | 15:37 | ||
yes, that sounds like exactly what I want. | |||
arnsholt | jnthn: Do you have a minute to chat about nqp::readlinefh stuff? | ||
(I've a bugfix more or less planned mentally, but I'd like to clear it with you in case I'm missing something) | |||
15:41
benabik left
|
|||
jnthn | p: multi sub trait_mod:<is>(Mu:U $class, :$logged!) { $class.HOW does role { method find_method($, $name, |) { my $meth = callsame; -> |c { say "calling $name"; $meth(|c) } }; method publish_method_cache(|) { }; } }; class C is logged { method m() { say 42 } }; C.m | 15:41 | |
camelia | rakudo-parrot e5fd34: OUTPUT«calling m42» | ||
jnthn | masak: ^^ | ||
arnsholt: moment, gotta go help... | |||
15:43
silug joined
|
|||
masak | jnthn: nice. | 15:43 | |
jnthn: I had already gotten halfway there in another terminal window ;) | |||
yeah, that's all I need. | |||
jnthn++ | |||
15:45
zakharyas left
15:46
ajr_ left
|
|||
jnthn | masak: If you don't mind false positives you dont' need the closure in there | 15:46 | |
masak: Trouble is that then you get the lookups for things asking "can" rather than intending to call. | |||
Depends what you care to intercept really. | |||
masak | yeah, I'm pondering that now. | 15:47 | |
jnthn | arnsholt: ok, now is fine, though can get called away at any time :) | ||
masak | what I really want to do is closer to a Proxy, actually. | ||
because the accessor will return a container, and assignment will happen to that container. | |||
and it's the assignment I want to intercept. | 15:48 | ||
jnthn | oh | ||
Then, yeah :) | |||
15:48
zakharyas joined
|
|||
jnthn | With sufficient cunning you can override accessor method generation of attributes. | 15:49 | |
I *think* japhb may be doing that in his PeanutButter^WProtoBuffer module, but not quite sure... | |||
15:51
FROGGS joined
|
|||
FROGGS | hehe | 15:51 | |
arnsholt | jnthn: It should be quick | 15:53 | |
So, the problem is that readlinefh, according to the tests, should handle \r, \n and \r\n lineendings properly in the same file | 15:54 | ||
But there's also an op to set the lineending | |||
So my idea is to handle \n, \r and \r\n automagically if no terminator has been set explicitly, and accept only the set terminator without any magic if it has been set | 15:55 | ||
jnthn | I guess that overrides the default "handle all the things" behavior? | ||
yeah, at first blush that sounds sane | |||
arnsholt | Cool. Then I'll implement that | ||
masak | jnthn: yeah, I need something to return the Proxy instead of the attribute. | 15:59 | |
I'll have a look at the PeanutButter. | |||
hm, I don't see it on github. | 16:02 | ||
nor on modules.perl6.org | |||
oh, found it. github.com/samuraisam/p6-pb | 16:04 | ||
FROGGS | arnsholt: IIRC the setinputlinesep is NYI on moar, not sure if you care though :o) | 16:05 | |
masak | yes, this is instructive. | 16:06 | |
japhb++ | |||
jnthn | yes, that module may well be the best use of MOP stuff so far :) | 16:07 | |
Clearly I need to write more modules :D | |||
arnsholt | FROGGS: This is on JVM, so not entirely irrelevant but mostly =) | 16:09 | |
16:12
denis_boyun left
|
|||
FROGGS | :o) | 16:15 | |
16:16
Alina-malina joined
|
|||
jnthn | Time to decommute...bbl & | 16:18 | |
16:41
kaleem left
|
|||
dalek | p: eafa953 | (Arne Skjærholt)++ | / (2 files): Handle \n, \r and \r\n lineendings properly on JVM. This closes #148. |
16:53 | |
p: dd9c94a | (Arne Skjærholt)++ | src/vm/jvm/runtime/org/perl6/nqp/io/SyncHandle.java: White space cleanup in src/vm/jvm/runtime/org/perl6/nqp/io/SyncHandle.java. |
|||
16:53
silug left
|
|||
FROGGS[mobile] | arnsholt++ | 16:55 | |
16:55
zakharyas left
17:03
Suhosin left
17:07
atroxaper left,
Woodi joined
17:08
silug joined
|
|||
arnsholt | timotimo: You were working on NQP #122 (for loop with optional arguments) at some point, weren't you? | 17:09 | |
17:11
berekuk joined
17:12
Suhosin joined
|
|||
prammer | /msg camelia r: say "hi" | 17:13 | |
segomos | The biggest challenge faced by many software development projects is unforeseen complexity. | 17:17 | |
moritz | Perl 6 on the other hand faces lots of forseen complexity | 17:18 | |
TimToady | we're still turning most of it into hindseen complexity :) | 17:19 | |
segomos | i found that on kickstarter, thought you guys might like to know what you've gotten yourselves into | ||
TimToady | segomos: seriously, you want a language that scales up more than you expected to need to scale up at the beginning, for sure | ||
segomos: we noticed a lot of people hitting the limits of Perl 5, which is why Perl 6 is different in many ways | 17:20 | ||
segomos | i prefer perl 6 over 5 for a lot of things | ||
TimToady would like to prefer it for speed one of these days :) | 17:21 | ||
spider-mario | :D | ||
segomos | me too, haha | ||
i wrote some modules for it like 5 months ago, i started running into threading and socket issues that were in the process of being resolved | |||
TimToady | threading is largely resolved now on the jvm | 17:22 | |
sockets are somewhat healthier | |||
segomos | i'll pick it back up again and see where i'm at :-) | 17:23 | |
TimToady | it is unlikely that parrot will support good threading any time soon | ||
segomos | yea i had given up on parrot, i'm excited about moarvm and i started only compiling jvm | ||
17:23
berekuk left
|
|||
segomos | the other thing i had worked on was another package manager to handle versioning, that was mostly working until we ran into unknowns about how perl 6 was going to handle different module versions | 17:24 | |
or if it was going to stay in scope for perl 6 | |||
TimToady | several people have been working that issue lately | 17:25 | |
mostly from the library loader end | 17:26 | ||
we're still pretty handwavey on the subject of using different versions in the same process; doubtless we'll need a better understanding of which resources can be shared, and which can't | 17:27 | ||
and the more we can push it toward an Erlangish model, the less needs to be shared, I suspect | |||
(or doesn't matter if it's shared, in the case of immutables) | 17:28 | ||
but two versions will probably never be able to share, say, your average database handle | |||
in such a case we need to break the shared resource into a different module with its own versioning, I expect | 17:29 | ||
</handwaving> | |||
segomos | i had started working on it in a way where classes would be assigned to a variable and all of that would happen from the variable and on the 'use' you'd specify a version so you could have 2 or 3 different versions of something, the calls and syntax would look funny | 17:30 | |
17:31
fhelmberger joined
|
|||
segomos | but it was similar to the way nodejs does versioning for modules | 17:32 | |
syntax wise | |||
17:35
SamuraiJack_ joined
|
|||
TimToady | in practice any given unit will generally only use a single version, so can rely on the unversioned alias that 'use' allows, if I take you correctly | 17:35 | |
but certainly everything can be "anonymous" underneath in a referential sense | |||
but I don't see a large need to make that infrastructure easy on the eyes :) | 17:36 | ||
much like the MOP is more verbose than "directly" accessing attributes | 17:37 | ||
17:40
fhelmberger left,
fhelmberger joined
|
|||
segomos | the other option i was liking, since you mentioned it, is installing the modules to the local directory or into the user's home directory so that you could use different versions of a module with different programs or at least be reasonably sure your old stuff will still work after upgrading modules, etc. | 17:42 | |
it requires the extra use lib './lib' or setting the environment variable but it was convenient during testing | 17:43 | ||
TimToady | yes, we're aiming for an old-stuff-is-permantently-there model | ||
which is why a new version is considered to have a completely different identity | 17:44 | ||
so you can still ask for the old one | |||
it's like git ids | |||
segomos | iirc it's compounded with author/name/version | ||
TimToady | possibly with a cryptochecksum too | ||
17:45
fhelmberger left
|
|||
TimToady | s/author/authority/ but yeah | 17:45 | |
segomos | that's how i handled it too | ||
TimToady | I think it's FROGGS++ doing most of that kind of stuff lately | 17:49 | |
FROGGS | correct :o) | ||
TimToady | so maybe you folks can compare notes | ||
segomos | FROGGS is the guy that helped me out X months ago :-) | 17:50 | |
FROGGS likes to play the first level guy :o) | |||
17:53
sqirrel joined
|
|||
FROGGS | segomos: see the second code block here: github.com/FROGGS/p6-S11Versioning...rent-state | 17:54 | |
it can load modules that way (even different versions of the same module), but the installer hook is still missing | 17:55 | ||
segomos | does it always just append the -# to the file names? | 17:56 | |
FROGGS | that is up to the installer | 17:57 | |
if it write the modules as files to disk, it might just do that, yes | |||
if it will write installed modules to a database, the there is no filename :o) | 17:58 | ||
segomos | so does the loader just run through all of the files in Module/Name to find anything that provides Module::Name ? | 17:59 | |
assuming it's written to disk | |||
FROGGS | no, that wouldn't work | ||
there are json file that specify every installed distribution, along with the module names it provides | 18:00 | ||
and a mapping to the storage location for that compilation unit | |||
segomos | ah - nice | 18:02 | |
TimToady | a handy place to do Unicode name mangling if necessary, among other things | ||
FROGGS | this mapping must be provided by the distribution when it is going to be installed, there is no sane way to determine that | ||
TimToady: that is exactly why I did it that way | |||
segomos | where does that json eventually end up? | ||
FROGGS | somewhere on your disk, and there is a libraries.cfg file that specify where these json files are | 18:03 | |
this is the only file the compiler must know about | 18:04 | ||
so this one will likely be in your install/bin or so | |||
(or install/lib) | |||
18:05
zakharyas joined
|
|||
FROGGS | if you are on a debian system, then the debian folks will provide their own json file of modules that are under apt's control, and your libraries.cfg just point to that json file (or not) | 18:05 | |
so in the end, you never need to be root when you want to install modules, since you an install to your home, and you just point to that json file *too* | 18:06 | ||
and when you load a module, it either loads the best module of all installation paths | 18:07 | ||
well, scratch that "either" | |||
masak has some small progress on t4 | 18:12 | ||
I've realized that any analysis of the problem and the solutions has to be example-focused. | 18:13 | ||
18:13
silug left
18:14
silug joined,
SamuraiJack_ left
|
|||
TimToady | jnthn: re 'is nodal', the specs mainly only envisage dealing with derivitives of Iterable, since that is the API for visiting children. I'm not sure we have to solve the general case right now, or evar. | 18:14 | |
segomos | FROGGS: that is pretty awesome and what we were working towards with our pkg manager, now we're obsolete before being useful :-) | 18:15 | |
FROGGS | *g* | ||
jnthn | TimToady: So, "don't worry about that"? :) | ||
18:17
PacoAir left
18:18
stevan_ left,
Gwyxx joined
18:19
Gwyxx is now known as SL-RHanson
18:22
stevan_ joined
18:23
stevan__ joined
18:24
PacoAir joined
18:26
vky joined,
dakkar left,
vky left,
stevan_ left
18:28
Rotwang joined,
FROGGS[mobile] left
|
|||
Juerd | Downtime announcement: feather will be down from Friday 22:00 UTC till approximately Saturday 1:00 UTC | 18:30 | |
jnthn | dinner & | 18:32 | |
18:32
rurban1 left
18:35
PacoAir left
18:36
zakharyas left
18:37
ssutch joined
|
|||
timotimo | arnsholt: yes, i was | 18:39 | |
segomos | what is feather | 18:42 | |
moritz | the machine behind perlcabal.org/syn/ for example | 18:43 | |
also a shared development server that some Perl 6 folks use | |||
generously provided by Juerd++ | |||
18:44
stevan__ left,
colomon_windows joined
|
|||
colomon_windows | where does the windows MSI install perl6? | 18:44 | |
colomon_windows is trying to get something p6ish done while his son watches Wallace and Gromit on colomon's MBP | 18:45 | ||
moritz | C:\Rakudo iirc | ||
FROGGS | lowercase, but yes | 18:47 | |
Juerd | \R is anything but \r, right? :) | ||
FROGGS | that is the idea, yes :o) | 18:48 | |
"C:\rakudo" would show up as "akudo" though :/ | |||
Juerd | :) | 18:49 | |
colomon_windows | moritz++ FROGGS++ | ||
whoever made the MSI++ | |||
FROGGS | \o/ karma for talking rubbish \o/ | ||
moritz | that was FROGGS++, and originally pmichaud++ | 18:50 | |
FROGGS | :o) | ||
18:50
denis_boyun joined
|
|||
FROGGS | I lit the candle the last time, yeah | 18:50 | |
18:51
rurban1 joined
18:52
stevan_ joined
|
|||
arnsholt | timotimo: If progress stopped, could you add a comment to #122 giving a short explanation of what a solution needs to tackle, what you did, and why it failed? | 18:53 | |
timotimo | oh | ||
arnsholt | Just a paragraph or two, so that what you learned gets attached to the bug | 18:54 | |
timotimo | yeah, it's still about the retry handling | ||
18:55
darutoko left
|
|||
arnsholt | Ok? | 18:55 | |
18:55
vky joined
18:58
denis_boyun left
|
|||
timotimo | arnsholt: i documented my findings | 19:03 | |
19:16
rurban left
19:17
lue joined
|
|||
arnsholt | timotimo++ | 19:19 | |
Cheers! | |||
timotimo | got any comments to make my job easier? :) | ||
arnsholt | No deep ineffable wisdowm right off the bat I'm afraid | 19:20 | |
timotimo | that's all right | ||
19:20
denis_boyun joined
|
|||
arnsholt | But it's one of the bugs on my list of things to look into, so I might add to it once I look into the code-gen more deeply | 19:20 | |
timotimo | i found code-gen surprisingly approachable | 19:21 | |
i've had my hands in the regex code-gen, too | |||
19:26
ajr joined
19:27
ajr is now known as Guest56624,
Guest56624 is now known as ajr_
19:28
denis_boyun left
19:31
stevan_ left
|
|||
timotimo | how hard would it be to make the moarvm GC aware of swapping? that is, if memory runs out and it begins to swap (or just in general) it should put the data it needs to go through for a marking phase into a smaller region of the ram? | 19:38 | |
like, store pointers from objects to other objects in a separate place and the rest of the memory of the object doesn't need to be touched to mark? | |||
(and possibly also not to sweep? i guess?) | |||
rurban1 | libsigsegv is usually used to catch those events | ||
timotimo | oh no, we copy all of the marked things into a new semispace anyway | 19:39 | |
19:40
rurban joined,
sqirrel left
19:41
kivutar left
19:46
stevan_ joined
19:47
hummeleB1 left
19:53
thou left
19:59
xenoterracide joined
20:11
ggoebel110 left
|
|||
jnthn | Most of an object is pointers, in many cases... | 20:16 | |
preflex | jnthn: you have 3 new messages. '/msg preflex messages' to read them. | ||
timotimo | mhm | 20:17 | |
itz_ | /last state | 20:23 | |
jnthn | missing variable name :P | ||
dalek | p: 6cd6c06 | dwarring++ | examples/rubyish/ (3 files): rubyish package vars: Math::PI=3.1415 |
20:27 | |
20:34
sricloud joined
20:38
sqirrel joined
20:40
vky left
|
|||
dalek | p: dd33635 | jonathan++ | src/vm/moar/QAST/QASTOperationsMAST.nqp: Map openpipe on MoarVM. |
20:44 | |
20:48
sqirrel left,
silug left
20:50
xenoterracide left
|
|||
raydiak | how can I pass the "-Xms500m -Xmx2g" to java in the configure step, so it uses it while building nqp? readme only says how to pass it for the make step, unless I'm mistaken | 20:55 | |
dalek | p: 0b611f8 | (Tobias Leich)++ | src/vm/moar/QAST/QASTOperationsMAST.nqp: implement nqp::xor |
20:58 | |
raydiak | moritz++ FROGGS++ jnthn++ thanks for helping me last night, guys...forgot the karma before I fell asleep :) | 21:02 | |
FROGGS | raydiak: building nqp is the make step, no? | ||
:o) | |||
timotimo | FROGGS: not if you --gen-nqp | ||
raydiak | FROGGS: I thought Configure.pl --gen-nqp was the building nqp step...???...\ | ||
timotimo beat me to it :) | 21:03 | ||
timotimo | raydiak: feel free to just cd nqp && perl Configure.pl --stuff && make install | ||
raydiak | thanks! timotimo++ | ||
21:04
silug joined
|
|||
timotimo | you may want to --prefix=../install in nqp/ | 21:04 | |
raydiak | ah, thanks again...I usually spend half an hour or more trying to figure stuff like that out before I ask :) | ||
21:11
logie joined
21:15
rindolf left
|
|||
dalek | kudo/moar-support: b6741f2 | (Tobias Leich)++ | src/vm/moar/ (2 files): stub p6stateinit |
21:18 | |
21:22
[Sno] left,
[Sno] joined
21:30
szbalint joined
21:32
vky joined
21:37
benabik joined
21:43
ssutch left
21:54
kaare_ left
22:04
bluescreen100 joined
22:06
bluescreen10 joined
22:07
bluescreen__ left
22:09
bluescreen100 left
|
|||
dalek | p: b177fd8 | (Tobias Leich)++ | src/vm/moar/QAST/QASTOperationsMAST.nqp: map nqp::backtrace |
22:25 | |
22:26
dmol left
22:28
colomon_windows left
22:40
rurban1 left
22:43
ajr_ left
22:45
spider-mario left
|
|||
lue | how do I specify the author(ity) in META.info? | 22:45 | |
FROGGS | as author | 22:46 | |
dalek | p: 3517621 | (Tobias Leich)++ | src/vm/moar/QAST/QASTOperationsMAST.nqp: map nqp::symlink and nqp::link |
22:48 | |
lue | FROGGS: Thanks. [ It was hard to tell because I couldn't find a single module that even had the field, in a random sampling :) ] | 22:50 | |
FROGGS | ummm | 22:51 | |
lue: name it auth | |||
lue | alright | ||
FROGGS | it is not used yet, not even in panda | ||
so lets stick to what "use" gets | 22:52 | ||
lue | agreed. Especially considering use's :auth is specifically not just 'author' | ||
FROGGS | right | 22:53 | |
though I an imagine that we will accept auth, author and authority in META.info once we care about it | 22:54 | ||
can* | |||
22:54
Rotwang left
|
|||
lue | .oO(but why would anyone type more characters than 'auth' ?) |
22:54 | |
FROGGS | ohh, you have no idea :o) | 22:55 | |
22:56
vky left
|
|||
lue just found the preliminary datafiles for Unicode *7* : www.unicode.org/Public/7.0.0/ | 22:59 | ||
FROGGS | ahh, I wish we had NFGs already, would be even more fun :o) | 23:00 | |
dalek | kudo/moar-support: 8398e8d | (Tobias Leich)++ | src/vm/moar/ (2 files): stub p6decodelocaltime |
23:01 | |
lue | Quick! Let's create that NIH-ish libicu replacement and boast Unicode 7 support before anyone else! | 23:02 | |
23:02
denis_boyun joined
|
|||
FROGGS .oO( libnfg.so ) | 23:02 | ||
lue | I remember TimToady talking about replacing ICU with our own library, for various "be awesomer at Unicode" reasons. I kinda like the sound of libNFG :) [considering it's apparently a P6-invented term] | 23:04 | |
23:08
denis_boyun left
|
|||
dalek | kudo/moar-support: 9364cc2 | (Tobias Leich)++ | src/vm/moar/ (2 files): stub p6listitems |
23:10 | |
kudo/moar-support: 2833281 | (Tobias Leich)++ | src/vm/moar/ops/perl6_ops.c: fix type of epoch |
|||
23:11
denis_boyun joined
23:18
BenGoldberg joined
23:19
denis_boyun left
23:21
silug left
|
|||
dalek | p: 7a203f4 | (Tobias Leich)++ | src/vm/moar/QAST/QASTOperationsMAST.nqp: map nqp::gethostname |
23:25 | |
23:31
rurban1 joined
|
|||
tadzik | FROGGS: github.com/tadzik/panda/pull/62 this one? | 23:34 | |
FROGGS | yes | ||
tadzik | "We need to cleanup the path, because the returned elems are too" | ||
did you accidentally an adjective? | |||
FROGGS | are cleaned up too | 23:35 | |
tadzik | ok, what exactly does that fix/improve? | 23:36 | |
FROGGS | we had a problem where $from was "./foo", and the elems in that dir get returned as "foo/bar", "foo/baz" | ||
tadzik | oh | ||
23:42
sftp left
|
|||
BenGoldberg | If I wanted to make a request for a change to the perl6 spec, is there a web site or email to send the request to? Or would I just ask here? | 23:44 | |
diakopter | BenGoldberg: traditionally people have emailed the p6-language list, but you can also create an issue on the github specs repo, or even just message TimToady here. | 23:45 | |
depends on how much peanut gallery and faux-ivory-tower commentary you're willing to stomach from the mailing list | |||
BenGoldberg: but since you brought it up here, just ask here :) | 23:46 | ||
23:46
sftp joined
|
|||
BenGoldberg | Right... it's a simple request, really: Replace the Iterator.infinite method with Iterator.finite | 23:46 | |
diakopter | rename of the same function[ality]? or replace with the converse functionality? | 23:47 | |
masak: .oO( or is that inverse??!? ) | 23:48 | ||
BenGoldberg | It would return True if the Iterator is finite, False if the Iterator is infinite, and Mu if the iterator is not known to be either finite or infinite. | ||
23:48
denisboyun joined
|
|||
BenGoldberg | If someone doesn't check if the return value of .finite is Mu, then they'll confuse an infinite list with a list of unknown length... which is a good thing, since, in my opinion, lists of unknown lenghth should be treated as infinite lists. | 23:48 | |
diakopter | sounds like a TimToady/liz decision | 23:50 | |
BenGoldberg | With the current interface (having a .infinite method), Iterators of unknown length can be confused with finite Iterators, which is what leads to the following rakudobug: | 23:51 | |
rn: for (gather { .take for 1..5; say 'oy' }) { .say; last } | |||
camelia | niecza v24-98-g473bd20: OUTPUT«1» | ||
..rakudo-parrot e5fd34, rakudo-jvm e5fd34: OUTPUT«oy1» | |||
BenGoldberg | For some reason, for() sees the gather as Finite, and decides to reify the whole thing... before any calls to the block are made. | 23:52 | |
23:53
rurban1 left,
denisboyun left
|
|||
lue | BenGoldberg: I feel as though unknown(≈indefinite) length is not the same as infinite length. (Supeset of infinite at best.) | 23:54 | |
BenGoldberg | I know it's not the same -- .finite would return Mu if the Iterator's length is unknown. | 23:55 | |
But if the person who called .finite merely tests for the truthfulness of it's return value, then they would perceive False and Mu identically | 23:56 | ||
And thus avoid the temptation to reify the Iterator | 23:57 | ||
lue | Ah, I see. Although I can't help but wonder if .(in)definite would be a better test operator in that situation. | ||
s/operator/method/ | |||
Assuming infinite ⊂ indefinite, it would do what you want without muddying the meaning of .(in)finite (esp. if that method is supposed to return only Bool values) | 23:58 | ||
BenGoldberg | Actually, I think it would be better to have Infinite and Finite roles, and remove the .(in)finite method entirely... but that might be asking to much | 23:59 |