»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, std:, or /msg camelia p6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by moritz on 25 December 2014.
timotimo i once started a bit of work that'd cut down the size of the call graph, but it gave wrong results and that kind of makes the profile itself totally useless 00:00
i have a patch that turns off the code graph completely, which makes it much faster and the result file much much smaller, but it's not as interesting as all the timing info also disappears
so it only gives you allocation info
raydiak yeah I remember you mentioning that around the time you suggested I look into it too 00:01
timotimo oh
raydiak stuff just slipping and falling off my plate all over the place :)
timotimo: have you done anything shiny lately? work on sdl, games, whatnot? 00:03
timotimo no 00:04
i've had very, very little perl6 time for about a month 00:05
raydiak yeah it's been that time of year...I don't personally know anyone who has accomplished much of anything in the past month that I'm aware of 00:06
00:06 adu joined, cognominal joined
timotimo glad to hear it :P 00:07
raydiak glad to hear I'm a friendless recluse? ;) j/k 00:08
timotimo oh
well, that's another possible interpretation of that sentence
raydiak heh nah, I'm just bein silly in this case 00:09
adu hi all 00:13
raydiak heya adu 00:14
adu hey :)
raydiak how goes it?
adu so I think I fixed the typedefs once and for all, and I added a bit to the readme that typedefs are important 00:15
raydiak oh, I see...that makes it nice and clear 00:16
adu raydiak: are you a contributor to Inline::C? 00:22
raydiak nice, cut my failures in that zmq test from 146 to 85 00:23
adu: I don't think I've done anything to it yet, no 00:24
timotimo "that zmq test"? 00:25
adu raydiak: are you not diakopter? 00:26
raydiak adu: nope
timotimo: gist.github.com/raydiak/e268376b2cb6280ad7d3
adu ah n/m then
timotimo oh, i see 00:27
raydiak timotimo: it's just a specially-processed version of zmq.h that I used to find C::Parser failures
00:27 BenGoldberg joined, Woodi joined
raydiak but it hints at what I would like to use C::Parser for: auto-genning bindings 00:27
timotimo sounds good
00:29 ssutch left
raydiak it always kinda blew me away that using pretty much any FFI I've tried so far requires you to get intimate with the C bits...I want to just include the darn thing and use it, like I can from C 00:29
japhb adu: diakopter is off doing a startup. I expect he probably won't be around for quite some time. 00:30
adu "doing a startup" sounds vauge and secretive
japhb adu: I know a (very) few things, but I have no idea how much I'm allowed to say, so I'm keeping it to that. :-) 00:31
adu raydiak: ah, so from AST => Str?
japhb: my philosophy is that you need money to give away free software 00:32
raydiak adu: yeah, I think that describes what I'm talking about...your module will give me the ast, and I'll use it to write out a .pm6 binding for the given header
adu raydiak: or Str => CAST which can be analysed to QAST? 00:33
raydiak: well, I've been mulling over CAST for a while now, and I can't decide to have 1 or 2 00:34
raydiak nah not trying to build it out of qast, writing strings out to a module file will be fine for my purposes
adu: how so?
adu if there are 2 ASTs, then one will correspond to syntax, and one to semantics, if there is 1 AST, then it would be somewhere in between the two, or there would have to be a lot of processing to convert it to the semantics AST 00:35
raydiak: well, for example Arrays, in C, their types are represented as a sequence of DeclarationSpecifier's (which includes type) and a ArrayDeclarator (which includes name and size), but what most people want is just the name by itself, or the combination of (type and size) 00:36
for the syntactic AST, we would have the above, but for the semantic AST we would have (name, complete type), where the complete type for an array would have both the DeclarationSpecifiers and the array size in it 00:37
raydiak ah, I'm getting it... 00:38
adu so any help with the AST would be most appreciated
raydiak why wouldn't you want to provide all information in each node of just one ast? is the tree structure itself different between the two? 00:39
s/ast/cast/
adu so have a coarser granularity with one object that has name, types, size?
raydiak yeah, if I'm thinking about an array, whether I want its name or its type, either way I'm not thinking about whether that's a semantic or syntactic issue, and would generally expect there to just be a method/attribute for what I'm looking for 00:42
why does that enforce coarser granularity? I'm still not sure why its an either/or choice 00:43
adu becuase it requires that all types are complete 00:44
japhb adu: I'm not sure what your point was about 'japhb: my philosophy is that you need money to give away free software'. Can you explain what relation that had to the startup conversation?
adu japhb: hmm, I might have missed a few steps in my logic, or I might be biased, I'm not sure
00:45 Mouq left, tinyblak joined
raydiak adu: even if the type is incomplete, couldn't you just not populate those properties of the cast, or clear a .type.is-complete flag, or something like that? 00:47
00:47 kaare__ left, cognominal left
adu japhb: people do startups for many reasons, one of which is to make money. Money takes care of some of the "Maslow's hierarchy of needs" that is required by anyone who works on free software. 00:48
00:48 kaare__ joined
raydiak adu: you probably have far more thought into this than I, so bear with me if I'm catching on slowly :) 00:48
japhb adu: OIC. I don't think that's why diakopter is working on this particular one. Though I'm sure he wants/expects it to make money. :-) 00:49
adu raydiak: there are only 2 parts to a type: left and right, the left type is composed of things like static const char, and the right type is composed of things like [3] or (double, double)
japhb wonders how many #perl6'ers would work on Perl 6 implementation if they could get a well-compensated job doing that, and how many prefer it to be a hobby 00:50
work on it full-time, I mean
raydiak semi-related to the other convo thread, has anyone here had much experience getting work on any of those freelancing sites? if so, did it work out well for you? any tips? I need to make money too :P
japhb As a freelancer years ago, I found myself to be singularly awful at drumming up business, so no, unfortunately .... 00:51
raydiak me too...should see if I can find a freelancing salesperson or something heh 00:52
adu raydiak: I was thinking of representing the "right types" as functions from Type -> Type, and to make them complete you just call it with the "left type" as an argument 00:53
00:58 timotimo left
raydiak adu: any sane person will tell you not to take my architecture advice, but if I follow correctly, I guess I'd make Type its own little class with suitable properties and methods for handling all this variety 00:58
then use that in your casts where you need to talk about a type 00:59
adu CASTs? 01:00
raydiak thought that was what you're calling the result of your action methods
adu es
yes
raydiak oh, right, cast as in...type...no, CAST is what I meant :) 01:01
adu its just that "casts" means something else in C
:)
raydiak is extra-lazy w/the shift key some days
adu my CAST classes are extra lazy 01:04
they're composed entirely of "has"s
01:05 tinyblak left
raydiak I like those classes...they feel so beautiful and declarative before you muck it up with all that procedural junk :) 01:06
adu lol
01:06 Woodi left
adu raydiak: but how do you return a Type and a Name at the same time? 01:07
01:08 dayangkun joined 01:09 Mso150_y left 01:10 Mso150_y joined
adu raydiak: oooo and I added a method to cdump 01:10
01:13 Woodi joined 01:14 IllvilJa left
raydiak adu: I'm thinking you return a single instance of something along the lines of class CAST::Type { has $.name; has @.decls; has ... }; 01:15
adu ok, that's wierd, but doable 01:16
because $type.name should be the name of the typedef, not the variable
raydiak right
that whole class was just for the cast's .type property 01:17
adu raydiak: but the information becomes available as the name of the variable first, how do I return that from the same action method that the variables "right" type comes from?
actually, there should be a Var class 01:18
raydiak adu: build up the types as you parse, and modify them as you go maybe? e.g. keep an internal %!types as each parse progresses 01:23
adu ok, so how do I parse this: "const char *(*stringer)[2](const char *)[256];" 01:24
raydiak hard to say, the C part of my brain doesn't even know how to parse that :) 01:25
adu according to cdecl.org, it means "declare stringer as pointer to array 2 of function (pointer to const char) returning array 256 of pointer to const char"
01:26 dayangkun left
raydiak oh that's a neat tool, especially for people like me who are just faking it 01:27
adu lol
yeah, I must admit I've used it
raydiak hm lemme see if I can break that down into a tree
adu but almost all C code uses either function or arrays, but the C spec allows both in the same declaration 01:28
raydiak tricky 01:29
adu yeah
hence my deliberations...
01:40 IllvilJa joined
adu what's the difference between str and Str? 01:43
raydiak still looking, but vague thoughts: var, pointer, array, and function here are nouns...I am thinking of types more like adjectives
str is native, probably like a char * or something underneath 01:44
adu adjectives? I know the English meaning, but not the Perl6 meaning of that
raydiak just using it in the english sense
that's why I say "vague thoughts", cuz they aren't tied back to the concreteness of your example yet 01:45
adu well, in my mind there are 6 kinds of types in C: direct, array, function, pointer, struct/union, enum 01:46
direct types are completely specified by a list of DeclarationSpecifiers
things like "unsigned int" 01:47
01:49 tinyblak joined
adu raydiak: well, to translate cdecl.org's response back into Perl6, it would be: PointerType[ArrayType[2, FunctionType[PointerType[Direct[Const, Char]] --> Array[256, PointerType[Direct[Const, Char]]]]]] 01:50
raydiak looks like pretty much what I got out of it...I'm just shuffling it around different ways as a tree, coming up with several half-answers I don't like 01:53
01:55 cognominal joined
adu comming up with any 90% answers? 01:59
02:00 yeahnoob joined
raydiak hm, ya know, most of those 6 types you mentioned are just arrangements of direct types 02:00
02:00 yeahnoob left
adu arrangements? 02:00
raydiak with some extra properties, like names or array lengths
02:00 yeahnoob joined 02:01 yeahnoob left
raydiak eh, I just mean structs and enums and stuff feel more like "compound" entities, built out of direct types 02:01
adu yes
02:01 yeahnoob joined, yeahnoob left 02:02 yeahnoob joined, yeahnoob left 02:03 yeahnoob joined
adu I could see struct and enum being like, a CAST::TypeOp or something 02:03
raydiak so I would start by defining a class for direct types, then the other ones making use of the direct one, then I would stop and look at what I made and see if it gave me ideas or at least better perspective, tbh :) 02:05
adu ok
what should I call it? OpType or TypeOp?
or GType?
or Generic? 02:06
or GenType? 02:08
raydiak I don't think we have any real solid Perl conventions to follow here other than CamelCase, so your C knowledge probably answers this question better than I
raydiak runs outside for a few minutes to hide from scary naming questions :)
adu well, I think QAST is a good inspiration for the goal I should strive for 02:09
most other AST frameworks would have one class for every kind of expression, but QAST only has one class: QAST::Op
02:14 Ben_Goldberg joined 02:15 BenGoldberg left, Ben_Goldberg is now known as BenGoldberg 02:17 BenGoldberg left
raydiak back 02:19
adu also, there are 2 different kinds of blocks 02:20
raydiak hm 02:21
adu one is the standard C block {a; b; c;}, (which evaluate to void), and then the other is GNU expression blocks: ({a; b; c;}), (which evaluate to c)
should both of these be represented with CAST::Stmts? or should they be different classes?
also, what's the difference between QAST::Stmts and QAST::Block? 02:23
02:23 rmgk_ joined, rmgk is now known as Guest97653, Guest97653 left, rmgk_ is now known as rmgk
raydiak I don't really have any experience with QAST, but I would guess that Block has its own lexpad or something like that 02:24
or, well, lexical scope...I don't really know what 'lexpad' means specifically, just something I've seen referred to here
02:25 tinyblak left
raydiak honestly QAST (or AST in any language) isn't smoething I have firsthand experince with 02:25
adu neither do I
what does "pad" stand for?
raydiak well, so answering these things has to do with how you intend to use them...what will make it easier to use them that way? 02:26
adu I'm guessing "lex" stands for lexical
raydiak yeah I assumed it was an analogy to a notepad or something
adu well, Scheme has something called "Environments" 02:27
which are a linked list of hash tables
when you enter into a lexical scope, you push a new hash-table onto the list, and when you leave a lexical scope, you pop a hash-table off the list 02:28
I would imagine it's something like that
raydiak it might help make some of the QAST choices easier to understand if you read about some of the behaviors of the various code-like objects as seen from p6-land 02:29
the stuff in the type graph here: doc.perl6.org/type/Callable.html
adu WhateverCode?
raydiak comes from using a * 02:30
m: say (* + 1).WHAT
camelia rakudo-moar c5dcdf: OUTPUT«(WhateverCode)␤»
adu interesting
raydiak lets you skip {} for simple cases, among other things 02:31
m: (^10).grep(* %% 2).say
camelia rakudo-moar c5dcdf: OUTPUT«0 2 4 6 8␤»
raydiak m: (^10).grep({ $_ %% 2 }).say # as opposed to
camelia rakudo-moar c5dcdf: OUTPUT«0 2 4 6 8␤»
adu my brain just exploded 02:32
raydiak m: (* + *)(1,2).say # also can be used for multiple args
camelia rakudo-moar c5dcdf: OUTPUT«3␤»
raydiak and yes, '* * *' is valid code :) 02:33
adu does that work with map too?
raydiak yeah anything that takes a block
adu m: say (map (* + 1), @(2, 3, 4)).perl
camelia rakudo-moar c5dcdf: OUTPUT«(3, 4, 5).list␤»
raydiak an expression with a * basically becomes a closure automagically
adu well, I think I have enough inspiration to totally rewrite CAST 02:38
02:39 chenryn joined
raydiak nice...do drop by during the busier times if you want some way, WAY more educated opinions :) a large portion of the most knowledgable and active 6ers are in europe 02:40
adu that means the "busy times" are 4am 02:42
02:43 Mouq joined
raydiak seems populated from about midnight to noon 02:44
my time, PST, that is
adu I'm in EST, so maybe 4am to 4pm for me 02:50
02:52 ggoebel111111118 left 02:54 old joined 02:55 old left 02:56 old_camels_frien joined
old_camels_frien what is p6 analog for perl -ne 'print if 5..10' file.txt ? 02:58
colomon m: lines()[5..10] 03:01
camelia ( no output )
colomon m: say lines()[5..10]
camelia rakudo-moar c5dcdf: OUTPUT«Ag taisteal dom amach trí chnoic Ghleann Domhain ’s an Mucais ar mo chúl Ní miste dom ’ rá le brón ’s le crá gur frasach a shíl mise siúl; Go Meiriceá siar a bhí mo thriall i bhfad thar an fharraige mhór; D’fhág mé slán ar feadh seal …»
Mouq old_camels_frien: github.com/sillymoose/Perl6-One-Li...e-printing
03:03 tinyblak joined 03:04 pdcawley left
colomon Mouq: nice, but slightly off 03:05
perl6 -e '.say for lines[4..9]' example.txt
would do the trick 03:06
well, I mean the perl6 -ne '.print if (1..3).any == ++$' example.txt there would work, but seems unnecessarily baroque 03:07
Mouq++ # great resource there, at any rate
adu oh, I wrote a Haskell tool to do that, hackage.haskell.org/package/only
I would imagine it would also be a one-liner if I wrote it in Perl6 03:08
raydiak misses p5's -i...in fact perl -pi -e is about the only thing I use it for any more 03:14
ingy is hungry for some -pi -e 03:16
adu raydiak: I don't miss anything about Perl5, since I've never used it 03:20
raydiak adu: I started with BASIC, started learning C, then picked up perl and pretty much stopped looking at other languages for the next decade 03:24
ingy perl5.18.1 -MIO::All -E 'say for @{io shift}[0..9]' example.txt
adu my programming language learning was different, although, I also started with basic 03:25
ingy I started with basic, then fortran on punchcards 03:26
raydiak adu: but "perl -pi -e s/foo/bar/ *.txt" used to be (still is?) a well-known one-liner among unix geeks of all sorts for changing the contents of a file
the mnemonic was "perl pie"
have to admit I've been cheating on perl a bit in the last few years :) 03:27
adu in the order that I learned them, I think it was GWBASIC, QBASIC, VisualBasic (at which point I switched from Win to Mac), FutureBasic, C, (at which point I switched to Linux), then Scheme, Bash, Python, Haskell, Forth, and Prolog
ingy perl -pi -e 's/\r//' file # dos2unix
adu raydiak: I use sed -i -e for that
ingy sed6 03:28
adu is there a sed6?
raydiak kinda a shame I never learned sed/awk, just for history's sake, but cool that I never felt a need I guess 03:29
adu the ONLY thing I ever do in awk is '{print $2}'
ingy I use sed in my bash programming
which is substantial 03:30
raydiak ugh the syntax in bash scripting is just terrible to my brain
ingy ported test::more to bash and wrote json-bash and have some serious git commands in all modern bash
adu ingy: wow, json-bash, that is serious 03:31
raydiak wow, that's impressive
heh
ingy I did it for this: github.com/ingydotnet/git-hub 03:32
adu I think the most serious thing I ever wrote in bash was a getopt wrapper for something that only accepted files as inputs
but I've written about 5000 oneliners in bash
ingy git hub repos perl6 -r | git hub clone - # clone all perl6 repos in one command :)
adu mostly of the form: "java -jar $SOMETHING" 03:33
ingy the main code is here. it's not perl6 but not as terrible as you might think
adu and it really pisses me off that no bash programmers seem to understand "$@" 03:34
03:34 noganex_ joined
ingy the repo commands are in the repos plugin and they are minimal and poweful code: github.com/ingydotnet/git-hub/blob...t-hub-repo 03:34
but once you do serious bash programming you become really awesome in the shell 03:36
raydiak ingy++ # some of the cleanest shell scripting I've ever seen
I mean...I can read that...it can't be a shell script :)
ingy it has to be the most productive things i've done in 5 years. (learning the shell inside out)
03:36 noganex left
ingy heh, I just wrote it all as if I were writing perl or ruby, and I googled every line :D 03:37
like: "perl array append in bash"
like: "perl array append in bash" 03:38
raydiak hah cool
ingy sorry
raydiak well I'd say *not* starting with existing shell scripts and learning from those, has served you quite well 03:39
ingy I'm working on this one tonight: github.com/ingydotnet/git-subrepo
If I can get this git command working perfectly, I think it will be a game changer
it's been close and usable for about a year, but get's ugly with complicated merges 03:40
but I think I can fix it
adu raydiak: My recent language learning has involved Go, Rust, and Perl6
ingy adu: have you seen github.com/ingydotnet/pig-latin-acme yet? 03:41
github.com/ingydotnet/pig-latin-ac...ted-so-far 03:42
needs rust
:)
raydiak adu: the last new thing I learned was Lua, which was good for me, insofar as it's the opposite of Perl in terms of footprint, performance, and syntactic philosophy
03:43 raiph left, kurahaupo left
ingy needs lua too :) 03:43
raydiak though I have to say sometihng a little less conventional is next...maybe haskell as I don't have a functional language under my belt yet, and lisp calls to me for reasons unknown 03:44
adu raydiak: Lua is pretty amazing, when I got my first Android phone, I had Lua compiled and running on it within a day!
ingy raydiak: have you learned or implemented your own forth yet?
adu raydiak: I was never able to get Ruby of Python compiled on Android, too many dependancies...
s/of/or/
raydiak methinks the lisp interest is mainly because of how so many older programmers talk about it like the long-lost tool of the gods or something :) 03:45
cognominal for people interested in languages, elm is a must see. Haskell like using a reactive model, with a time travelling debugger, targeting js elm-lang.org/ debug.elm-lang.org/
raydiak ingy: I haven't
ingy lisp is just a mindset
cognominal in many ways a polar opposite to Perl 6
ingy a way to think of programming
raydiak adu: hah cool...I saw they have a ps4 port even 03:46
adu raydiak: S-expressions are amazing, Common Lisp has every function ever invented, you just have to spend 20 years figuring out what it's called, and Scheme lets you write try/catch/return/break/continue/yield using only "continuations" which no one understands
ingy TimToady told me that Perl owes tons to Lisp
03:46 kurahaupo joined
cognominal I always thought that Perl was lisp that eventually cared about syntax. 03:47
raydiak yeah I guess part of it is I keep having these circles where I think "X is just a funny-looking Y, and Y is just a special case of Z", and people tell me I'm heading towards lisp
03:47 Ashu_ joined
cognominal so I am expecting a lot from masak macros. 03:47
adu raydiak: my point is that "Lisp" isn't all it's cracked up to be, S-expressions are what everyone is really talking about
ingy TimToady gave a speech early on in Perl days where he said that Lisp has the visual appeal of oatmeal with fingernail clippings 03:48
03:48 Ashu_ left
cognominal bon appétit 03:48
ingy and John McCarthy was in the audience, but TimToady didn't know it
cognominal G a # G grand A petit => J'ai grand appétit :) 03:49
ingy John was displeased
adu This is a relatively recent addition to Lisp syntax: srfi.schemers.org/srfi-110/srfi-110.html
ingy indent,FTW!
adu it looks like it dates back to 2013, but it's one of the first attempts (aside from age-old M-expressions) that are generic and beautiful at the same time
ingy Sweet-expressions == plain oatmeal 03:50
raydiak adu: ah, thanks for the perspective...helps me think about where to start if I sit down to learn it
ingy not Perl's David Wheeler 03:51
adu I'd like to see if it's possible to come up with an S-expression syntax for Perl6
raydiak that's something else about Lua...you can literally learn most of it in like a day...the tradeoff being that it usually requires more hand-holding (and lines of code) than perl asks of you 03:53
adu raydiak: but Scheme has the advantage that it's minimal, you can literally write anything in Scheme 03:54
raydiak: and JavaScript was actually written as a Scheme, with a different syntax patched on as an afterthought
raydiak why does javascript having "patched on as an afterthought" in its origin story not surprise me? :) 03:55
03:56 sirdancealot joined
adu www.crockford.com/javascript/little.html 03:56
raydiak reading stuff like that is neat 03:58
adu "As I’ve often said, and as others at Netscape can confirm, I was recruited to Netscape with the promise of “doing Scheme” in the browser." -- Brendan Eich 04:00
brendaneich.com/2008/04/popularity/
raydiak lemme get this straight...we coulda had lisp in the browser, but ended up with javascript instead? maybe that's where things went wrong... 04:02
raydiak looks at history as an explanation for why things are so screwed up in the present
adu it would have gone wrong at some point anyways, simply because of the law of large numbers
raydiak there is certainly more than no truth to that 04:03
xiaomiao raydiak: we could have had python, but then someone thought java was cooler 04:05
adu raydiak: paulgraham.com/95.html 04:06
04:07 IllvilJa left
raydiak having far less experience with java than javascript, I hate it far less :) 04:07
adu at least JS has closures
Java doesn't have closures or functions or methods, it only has classes 04:08
raydiak granted I didn't really know what I was doing, but I coulda swore I defined some stuff that looked a lot like methods in java before 04:09
04:12 IllvilJa joined
adu raydiak: what I mean is that methods are not first-class objects, you can't assign them to a variable, and you can't pass them as arguments 04:17
\o o/ 04:18
Guest40626 04:19
☺/
04:21 rurban left 04:23 mickcy_ca joined 04:35 kaleem joined
cognominal nice link, adu 04:39
04:44 ggoebel111111118 joined 04:50 adu left, Rounin left 05:01 adu joined 05:03 mickcy_ca left, jack_rabbit left 05:07 konsolebox joined 05:08 kst joined, kaleem left 05:11 chenryn left 05:15 IllvilJa left 05:23 chenryn joined 05:31 yeahnoob left, sqirrel_ joined 05:33 tinyblak_ joined 05:35 tinyblak left 05:38 konsolebox left, IllvilJa joined, tinyblak_ left 05:41 Mouq left 05:42 tinyblak joined, tinyblak left 05:43 tinyblak joined 05:47 mr-foobar left 05:48 yeahnoob joined 05:53 gfldex joined 05:59 konsolebox joined 06:00 konsolebox left 06:01 tinyblak_ joined, konsolebox joined 06:02 tinyblak left, konsolebox left, adu left 06:04 sqirrel_ left 06:10 chenryn left 06:11 Rounin joined 06:22 cognominal left 06:23 [Sno] left, Mso150_y left, Mso150_y joined 06:25 xfix joined, yeahnoob left 06:29 old_camels_frien left 06:35 spider-mario left 06:38 CRM114 joined 06:45 Rounin left 06:47 kaleem joined 06:57 cognominal joined, chenryn joined 07:09 Rounin joined 07:13 chenryn left 07:14 cognominal left, cognominal joined 07:18 gfldex left 07:24 ggoebel111111119 joined 07:25 ggoebel111111118 left 07:29 ggoebel111111111 joined 07:31 ggoebel111111119 left 07:33 Sqirrel left 07:43 CRM114 left, darutoko joined 07:45 bjz joined 07:49 mattp_ left 07:51 bjz left 07:52 tinyblak_ left, tinyblak joined 07:53 mattp_ joined, FROGGS joined 07:55 telex left, pecastro left 07:56 telex joined, zakharyas joined 07:57 [Sno] joined 07:59 abraxxa joined 08:03 tinyblak_ joined, abraxxa left 08:05 bjz joined 08:06 tinyblak left 08:10 xfix left
TimToady rosettacode.org/wiki/Circle_sort#Perl_6 08:21
08:21 kst` joined 08:22 kst left 08:30 rindolf joined 08:37 sirdancealot left 08:49 ggoebel111111111 left 08:50 bjz left 08:51 ggoebel111111111 joined 08:52 brrt joined 08:56 renormalist joined, sqirrel_ joined 09:01 bjz joined 09:03 ggoebel111111111 left, ggoebel111111112 joined
lizmat TimToady++ for circling :-) 09:04
yoleaux 7 Jan 2015 22:40Z <raydiak> lizmat: the cached precomp bug is #122896, the only difference between october and now being that it segfaults instead of giving the reported error message
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=122896
09:05 abraxxa joined
dalek ast: a7bc14d | lizmat++ | S10-packages/precompilation.t:
Make sure tests fail for the right reason
09:08
nwc10 rosettacode.org/wiki/Rosetta_Code/R...ity#Perl_6 09:11
and today, Perl 6 is 6th
5 behind Ruby, 9 behind J
El_Che 77 rue du Ruisseau
75018 PARIS
nwc10 Tcl is still top. So obviously Tcl is best.
El_Che crap
sorry
09:11 virtualsue joined
nwc10 apparently that's the "ibis Styles Paris" 09:12
El_Che hehee :) 09:13
09:14 yeahnoob joined 09:16 fhelmberger joined 09:20 molaf_ joined 09:21 Mso150_y left, rurban joined 09:24 molaf__ left
dalek kudo/newio: 0154f13 | lizmat++ | src/core/CompUnit.pm:
Allow scalar values to be specified with :INC
09:28
kudo/newio: 4c6cfab | TimToady++ | src/Perl6/Actions.nqp:
make << a b c 'x' >>[0] return 'a' not 'a b c'

Fix wrong merge
09:28 dalek left
lizmat sorry dalek 09:28
09:29 dalek joined, ChanServ sets mode: +v dalek 09:33 tinyblak joined, tinyblak_ left 09:37 kjs_ joined 09:39 jack_rabbit joined, donaldh joined 09:46 dakkar joined 09:49 jluis joined 09:50 bjz left, bjz joined 09:51 sqirrel_ left 09:52 ruoso_ left 09:53 ruoso joined 09:56 timo joined, timo is now known as Guest10870 09:57 Guest10870 is now known as timotimo 09:58 ruoso left, ruoso joined 10:00 donaldh left, donaldh joined 10:01 pecastro joined 10:05 bjz left
masak good antenoon, #perl6 10:10
timotimo i hope you're having a pleasant day, masak :) 10:11
timotimo is off
masak starts making a pun about "a ♟ day", but realizes halfway that the piece is called "pawn", not "peasant" 10:13
10:18 kjs__ joined 10:24 bjz joined 10:25 tinyblak left 10:26 tinyblak joined 10:28 yeahnoob left
cognominal Masak, tu est ♗? ♗ in French is "fou and means "mad person", not bishop 10:28
10:28 Psyche^ joined
cognominal I don't know why, maybe it is "fou du roi" : jester. 10:29
en.wikipedia.org/wiki/Bishop_(chess) A nice explanation en.wikipedia.org/wiki/Bishop_(chess) 10:32
10:32 Patterner left
masak cognominal++ # etymology of fools 10:33
ok, on with the hard questions. 10:34
how do we focus on and achieve stability?
let's say the abstract measure of stability is identified as having the biggest impact on the success of Perl 6 in 2015.
what can we do to increase this measure?
is there any literature on this? do we have any stability experts among us? do we know where they graze? 10:35
lizmat masak: get jnthn more Perl 6 time :-) 10:36
10:36 bjz left
masak I'm of two minds about that answer. 10:37
on the one hand, you're absolutely right.
lizmat it did have a :-)
masak yeah.
lizmat it's not the only thing
I know
masak on the other hand, burning out jnthn is a real risk. putting everything on him is one way to achieve that.
I'd rather we somehow empower more people to reach jnthnhood :) 10:38
brrt hmmm
lizmat that works too
brrt yeah
lizmat so maybe jnthn needs to give a MoarVM internals workshop
brrt we could do that 10:39
i could help :-)
masak I was just gonna say.
lizmat and funding for that, we'll get together
masak maybe there's a course could be held to make more people able to help more.
lizmat++
I feel better already :D
lizmat I proposed this to jnthn many months ago 10:40
cognominal to be ♘ed Jonathan, that would be an honour.
lizmat but he had too much $work
even when I tried to make a MoarVM workshop into $work, there was no room for that :-( 10:41
need to be afk again, back in ~ half an hour&
masak I imagine 2015 will be more amenable to such a workshop. 10:42
brrt let us hope so 10:43
masak lizmat: actually, my mind didn't first reach for "MoarVM workshop", but for "tracking down and solving hard software problems workshop"
maybe those are two wholly distinct things. or maybe those can be combined somehow.
like, my idea was "you're facing a difficult software problem. normally you'd give up. but now you go, 'WWJD'? (What Would Jnthn Do)" 10:44
10:44 dj_goku_ joined 10:45 baest left, dj_goku left
masak basically en.wikipedia.org/wiki/Modelling_(psychology) -- we take jnthn's methods (design, implementation, and debugging) and distil them into a course. 10:45
10:45 baest joined 10:53 denis_boyun joined 10:54 bjz joined
donaldh In addition to WWJD, I would also like to learn more about What Has Jnthn Done So Far 10:59
11:01 tinyblak_ joined
donaldh A blocker for me working on JVM backend performance is the task to remove priorInvocation and I just don't grok it yet. 11:01
moritz priori incantatem! 11:03
masak: 'WWJD'? go for a long walk, and ponder the problem! 11:04
11:04 tinyblak left 11:05 bjz left
JimmyZ would do more in MoarVM ... 11:17
11:17 Ugator joined 11:20 bjz joined
masak .oO( WW JimmyZ D ) 11:21
FROGGS WWPmD would also be most inspiring 11:33
masak oh, I'd pay to go to that.
11:34 jluis left 11:35 brrt left 11:37 bjz left 11:44 kaleem left, haroldwu joined 11:45 haroldwu left, haroldwu joined
masak last night before heading to bed, I ran into some design problems with 007. someone here on channel might be interested and/or have an idea: github.com/masak/007/issues/7 11:48
11:49 prime joined
vendethiel masak: that's an issue we have in coffee/xxx as well. we insert IIFEs all over the place to circumvent it 11:51
masak :(
sergot tony-o: I will take a look at this :)
tony-o++
hi #perl6 o/
vendethiel masak: sadly, it breaks down really fast. With generators, with return, with...
11:51 bjz joined
masak sergocie! \o 11:51
vendethiel: I feel I'm missing a solid approach here.
vendethiel and sometimes, something that *should* put an expression (that's actually a statement) as a statement doesn't work.(example: return inside comprehensions won't work, even though it could, because we could unwrap it enough in most cases to have the return at the right place) 11:52
(and return really can't be used as an expression) 11:53
so, yeah, you might need to create a new context/lexical scope "in an expression" to carry around what the macro has 11:54
masak I just added a comment to that effect.
it seems a viable way forward -- my only fear is that it makes the AST "non-portable" in some way. 11:55
vendethiel resumes reading
masak but that fear may be unfounded.
sergot masaku! \o 11:58
karma c
vendethiel you don't have anonymous subs in 007?
11:58 xfix joined, bjz left
masak we don't. 12:00
for two reasons, kind of.
(a) more work, more special cases. 12:01
(b) currently, sub declarations are statements, not expressions.
12:02 jluis joined
12:11 cognominal left
psch .tell japhb 02-lock.t passes on jvm when $l is locked before the final condsignalone and unlocked afterwards (as per stackoverflow.com/questions/15769220) 12:19
yoleaux psch: I'll pass your message to japhb.
psch .tell japhb i don't know if that's how we want condvars to work on nqp though or if that should be abstracted away 12:20
yoleaux psch: I'll pass your message to japhb.
psch also hi #perl6
lizmat psch o/ 12:22
psch lizmat \o
12:28 sqirrel_ joined 12:29 bjz joined, jack_rabbit left
xfix Subroutines are expressions. 12:30
Yes, even named.
r: my &a = sub b { say "Subroutine!" }; a; b
camelia rakudo-{parrot,moar} c5dcdf: OUTPUT«Subroutine!␤Subroutine!␤»
xfix (although this is pointless, so it should be disallowed without `do` in my opinion) 12:31
std: my &a = sub b { say "Subroutine!" }; a; b 12:32
camelia std f9b7f55: OUTPUT«ok 00:01 142m␤»
psch xfix: what makes this pointless? the sub not being anon?
xfix Well, it's more likely that code like this is a bug. 12:33
But I guess it makes sense with `my` behaviour.
while my $a = b() { } is completely fine.
masak xfix: with all due respect, you don't seem to know what you are saying right now. 12:34
xfix Now that I think about it (must have been using too much Python)
12:34 jluis left
xfix masak, yeah, I probably don't. 12:34
I agree.
masak xfix++ # taking criticism well :)
xfix I just realized the mistake while I was talking about it. 12:35
12:35 bjz left
masak xfix: anyway, in 007 subroutine declarations are statements currently, not expressions. 12:35
xfix In Perl 5, my $a = sub b {} is disallowed, but I can see why code like that is allowed in Perl 6. 12:36
Anyway, JavaScript has both function statement and expression.
masak with somewhat differing semantics.
xfix Even if those semantics are different, I somewhat like the behaviour of (function b() {}), which declares anonymous function that can refer to itself. 12:37
masak yes, definitely.
the meme "all anon functions should be given a name" reached me (and I adopted it) sometime last year. 12:38
(in JS)
timotimo that's mui importante
xfix I actually do that so too, because debuggers cannot recognize code like `Something.prototype.doSomething = function () {}` properly.
Which is somewhat annoying. 12:39
(perhaps something has changed lately)
lizmat .tell jnthn in #122896 it becomes evident that wrapping the sub in a traitmod on a Routine, segfaults on trying to run that routine in a precomped version 12:40
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=122896
yoleaux lizmat: I'll pass your message to jnthn.
lizmat .tell jnthn this effectively bars things like "is cached" in the ecosystem
yoleaux lizmat: I'll pass your message to jnthn.
xfix I also think that JavaScript should allow function () {}() as statement without having to use parentheses, instead of shouting SYNTAX ERROR, WRITE BETTER CODE. 12:41
12:41 sqirrel_ left
xfix Oh well, for a language designed in a week, JavaScript is not that bad. 12:41
(although I understand why JavaScript doesn't do that... it would confuse two different meanings of function keyword when named function syntax is involved) 12:42
Could be fixed by determining if the function statement is token by itself, or if there are extra stuff, but it introduces another issue caused by function statements not having semicolons, and function expressions having them. 12:44
`function a() {}(1)` is valid JavaScript syntax, after all. 12:45
Compatibility is hard. Once the language is stable, you cannot really change anything.
But I guess that `let` keyword will fix the situation a bit once web browsers implement it, and there won't be that (function () {})() idiom anymore. 12:46
12:46 mst__ left, mst__ joined 12:47 kaleem joined, mst__ is now known as mst
masak xfix: you might want to try `(function () { console.log("OH HAI") }())` in your Chrome console. 12:48
xfix Which is also somewhat ugly, because now there are two syntaxes to declare variables, `var` and `let`. `var` having function scope, and `let` having block scope. Compatibility is hard.
masak, it prints OH HAI, doesn't it?
(I don't have Chrome installed)
masak yes.
xfix: it's not that putting `()` directly after a function declaration is disallowed, as such. it's just that it only works for the expression form.
xfix I know. 12:49
masak then why do you expect it to work for the statement form?
that makes no sense.
xfix Because it's also an expression, but I guess you are right.
masak no, it is not an expression.
xfix Well, function () {} is an expression or statement depending on whether it's first token in a statement. 12:50
masak for all I care, with hindsight, JavaScript might have been better off wihtout the statement form of function declaration.
xfix: right. and if it's a statement, then it's not an expression. and then you can't add `()` after it.
(because the statement already finished, and statements also can't have an `()` after them like that) 12:51
sjn Huh, seems TimToady's talk at FOSDEM has been moved to the main track.. cool!
oh, and hi, #perl6 :)
xfix Language design is interesting.
tadzik oh hai sjn
xfix Perl 6 has many syntax rules, but there are also simpler languages like Lisp.
lizmat re TimToady at FOSDEM: capacity of room is 1400 :-) 12:53
itz given the average FOSDEM talk has people queueing down the hallway to get it that's probably just as well 12:55
lizmat .tell jnthn re #122896 it feels like the original sub is not being serialized
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=122896
yoleaux lizmat: I'll pass your message to jnthn.
12:56 xfix left 12:58 rindolf left 13:04 bjz joined 13:14 bjz left 13:23 bjz joined 13:42 Rounin left 13:49 pmurias joined
pmurias masak: why such a strong expression/statement seperation in 007 13:50
in my experience when generating code the expression/statement seperation is just an annoyance 13:51
13:52 skids left, jack_rabbit joined 13:53 bjz left 13:54 bjz joined 14:03 kaare__ left 14:04 jack_rabbit left
lizmat is there a reason why we're not allowed to .print .say or .spurt to an IO::Socket ? 14:08
14:08 bjz left
tadzik perhaps to encourage thinking about bytes rather than strings 14:08
lizmat and is there a reason why we cannot .slurp-rest from a socket ?
I think they're all hysterical raisens
lizmat is trying to merge the PIO role also into IO::Socket 14:09
most of the internals already use the same nqp:: functions (except maybe on Parrot)
so from that point of view, I don't see a reason not to merge 14:10
14:16 tinyblak_ left, tinyblak joined 14:25 bjz joined
donaldh lizmat: when I was implementing some of the socket stuff on the JVM backend, the differences looked hysterical. 14:25
14:27 jack_rabbit joined
lizmat donaldh: such as? 14:37
14:38 bjz left
lizmat donaldh: you mean at the nqp level? 14:38
donaldh The differences you have mentioned. Lack of .print, .say or .spurt for example. As long as you can set an encoding and a linesep then I think it makes sense for IO::Socket and PIO to converge on the full set of methods 14:39
14:39 jack_rabbit left
donaldh Does it still make sense to call the implementation IO::Socket? Or should there be a common role, or base class? 14:40
it's been a while since I looked at it at al.
14:41 xfix joined
lizmat in the newio spec branch, I'm trying to do just that: 14:41
all things related to paths are in a IO::Pathy role
all things that work on handles, are in a PIO role
see github.com/perl6/specs/blob/newio/S16-io.pod 14:42
donaldh Ah right, so some of the IO::Socket impl would be replaced by the PIO role?
lizmat just about everything, really 14:44
14:45 rindolf joined, spider-mario joined 14:47 bjz joined
dalek ecs/newio: fbdc909 | lizmat++ | S16-io.pod:
Tweaks
14:47
donaldh lizmat++ 14:48
pmurias masak: or is 007 supposed to compile to javascript? that would be the most valid reason for not having do 14:49
moritz pmurias: iirc masak++ wanted to make problems obvious that Perl 6 often glosses over; the distinction between statements and expressions is just an instance of the more general problem 14:50
pmurias: ... which is that you can't stick every AST everywhere
lizmat pixelscommander.com/en/javascript/n...rformance/ # applies to just about any language I guess 14:52
14:52 kaleem left 14:57 brrt joined 15:01 tinyblak left 15:03 spider-mario left
Ulti m: say .2.nude.join: '/' 15:07
camelia rakudo-moar c5dcdf: OUTPUT«1/5␤»
Ulti just had fun playing with Rat and didn't realise how much stuff was in there CurtisOvidPoe++ 15:08
lizmat #jesuischarlie& 15:09
15:09 spider-mario joined 15:11 tinyblak joined 15:13 mr-foobar joined 15:16 kurahaupo left 15:21 bjz left
donaldh r: 'string' ~> 2 15:25
camelia rakudo-moar c5dcdf: OUTPUT«infix:«~>» not yet implemented. Sorry. ␤ in sub infix:<~>> at src/gen/m-CORE.setting:7510␤ in sub infix:<~>> at src/gen/m-CORE.setting:7510␤ in block <unit> at /tmp/tmpfile:1␤␤»
..rakudo-parrot c5dcdf: OUTPUT«infix:«~>» not yet implemented. Sorry. ␤ in sub infix:<~>> at gen/parrot/CORE.setting:7518␤ in sub infix:<~>> at gen/parrot/CORE.setting:7518␤ in block <unit> at /tmp/tmpfile:1␤␤»
15:26 abraxxa left 15:28 kurahaupo joined 15:29 skids joined 15:33 bjz joined, tinyblak left 15:34 tinyblak joined 15:47 bjz left 15:52 bjz joined
donaldh Golfing the cause of NQPMatch serialization on JVM backend gist.github.com/donaldh/91a212b38725642131be 15:56
arnsholt donaldh: That's an odd one. From the looks of it looks like it has to be a bug in the colonpair action or its call graph, no? 15:58
Er, no 15:59
The fatarrow action, of course
donaldh Yes, but not everywhere. 16:00
16:00 rurban left
donaldh It has to be a toplevel sub or multi sub, not a class method, for example. 16:00
16:00 treehug88 joined
arnsholt Used in a toplevel sub, you mean? 16:01
donaldh The behaviour occurs for 5 uses of X::NYI.new(...).throw in the setting. 16:02
yes, used in a toplevel sub.
arnsholt Very odd 16:03
donaldh I can 'fix' the core setting by using colonpair syntax instead, for these 5 cases. 16:04
arnsholt Yeah, but this is one of those bugs that smell like something that really should be fixed
donaldh indeed.
arnsholt I guess it has to be something funny going on with the "$<key>.Str" call in Actions.fatarrow? 16:05
16:05 bjz left
donaldh Well, it happens in Actions.add_inlining_info_if_possible when it hits a QAST::Want+{QAST::SpecialArg} 16:07
Actions.add_inlining_info_if_possible tries really hard to clear out any unwanted stuff like the $qast.node but in this situation the NQPMatch is leaking through. 16:09
I can't figure out why, for the life of me.
arnsholt Odd
But only for some cases of Want+SpecialArg, presumably
donaldh it seems like all of them. 16:10
PerlJam Is there something wrong with rakudobrew build-panda or is it just me? It gets to '==> Reinstalling' and just sits there 16:11
moritz PerlJam: which backend? 16:12
PerlJam moar
arnsholt donaldh: Oh, if it's all of them I might actually know. I bet you "nqp::istype($node, QAST::Want)" (Actions.nqp:2742) is false, when it has the SpecialArg mixin 16:13
donaldh Yeah, 5 cases of fatarrow results in 10 Want+SpecialArg with NQPMatch serialization. Eliminate those 5 fatarrow and then no Want+SpecialArg. 16:14
arnsholt: nope that's not it. Checked that.
16:14 tinyblak left, tinyblak_ joined, rurban joined
skids notes PANDA_SUBMIT_TESTREPORTS is only docced in blogs. Maybe a howto tab on the reports site and a README.md on the cpandatesters github. 16:15
16:15 denis_boyun left, bjz joined
donaldh I am checking nqp::istype($replacement, QAST::SpecialArg) inside the QAST::Want check and then dumping the $replacement, to get hints of where to find the offending fatarrow. 16:16
pyrimidine PerlJam: I had a very similar problem, same backend. Only happened on my laptop (running Mac OS X, Mavericks)
16:16 jluis joined
pyrimidine PerlJam: Ran it off my imac (also Mavericks) and it worked fine. 16:17
PerlJam I'm running ubuntu 14.04 on a desktop fwiw 16:18
pyrimidine huh
I managed to trace it to IO::Socket::INET, but that's as far as I got. 16:19
16:19 Alina-malina left
pyrimidine If I changed to the old URL (feather) it worked fine, but I think that's hard-coded. 16:19
16:20 Alina-malina joined
brrt fwiw, i mentally think of sockets as byte streams rather than string streams 16:24
wait a minute 16:25
io is reaaaaally complicated 16:27
16:28 zakharyas left
brrt i'll just go back to bitmangling 16:28
donaldh :D 16:29
16:31 salv0 left 16:32 telex left 16:34 telex joined 16:35 H2O1 joined
brrt i don't envy lizmat++ for taking up the task 16:35
consider that a UDP socket is really a Supply of packets (or a Sink, if we have such a concept?) 16:36
and that a TCP socket isn't really a stream but rather a Session
masak pmurias: what moritz++ said. 16:38
pmurias: (personally, I hope 007 never compiles to anything. that'd mean people have started taking it seriously in a way it was never meant to.) 16:39
pmurias: the distinction between statements and expressions seemed to me at the time to make things easier. (notably, if there's no distinction, then everything can interact with everything in some sense. O(n**2) interactions.) 16:40
16:40 jluis left
masak pmurias: it *still* seems easier in that way, even as I am re-evaluating that balance à la github.com/masak/007/issues/7 16:40
16:40 jluis joined
masak pmurias: Lisp seems to me to pull off (very well) the trick of making everything an evaluable expression. but Perl 6 isn't and won't be a language where that's true -- therefore, exploring the distinction is a worthwhile goal of 007. 16:41
tony-o what is 007 16:42
masak fwiw, I liked the idea of "stuttering" as a mechanism, and I hope it survives the realizations about scoping.
tony-o: masak.github.io/007/
moritz my impression is that every statement in Perl 6 can be used as an expression, and the distinction is purely syntactic 16:43
masak yes, I think so.
tony-o interesting
16:44 H2O1 left
masak moritz: but the fact that that is "easier said than done" is evicenced by the fact that RT contains at least half a dozen tickets on the theme "we evaluated this thing, but it contained a next/leave/BEGIN/(other exotic control flow) and caused a Big VM fail" 16:45
grocery store &
16:46 donaldh left 16:50 Ugator left 16:54 tinyblak joined 16:57 rurban left 16:58 tinyblak_ left, virtualsue left 17:03 tinyblak left 17:04 tinyblak joined 17:07 zakharyas joined 17:09 bjz left 17:10 bjz joined 17:15 rurban joined 17:16 tinyblak left, tinyblak joined 17:23 bjz left 17:29 danaj left 17:31 brrt left 17:33 sirdancealot joined, kjs_ left
TimToady statements are just a monadic relationship of expressions; trying to carry the notion of statements any further into the semantic system is just adding complication, not removing it 17:35
I don't know what "part of an expression" means in the chart 17:36
dalek p: f05a5d7 | (Geoffrey Broadwell)++ | t/concurrency/02-lock.t:
Fix 02-lock.t braino that results in a LTA Java error under nqp-j; thanks psch++ for spotting this.
p: f8ba48f | (Geoffrey Broadwell)++ | t/concurrency/01-thread.t:
Reduce chance of interleaved TAP output in 01-thread.t
17:37 Mouq joined, vendethiel- joined
TimToady I think both macros and quasioids should be associated with a syntax category, and those categories should be treated more like types than we do currently 17:37
17:37 kaleem joined
TimToady then your "stuttering" is simply a type conversion 17:37
and if there's no conversion provided, then an error is the natural outcome 17:38
japhb TimToady: I interpreted "part of an expression" as being in a subexpression of a larger expression, as opposed to being at the highest level of expression inside a statement. (Being the 'foo' in 'my x = foo' instead of the 'bar' in 'my y = 2 * bar') 17:39
yoleaux 12:19Z <psch> japhb: 02-lock.t passes on jvm when $l is locked before the final condsignalone and unlocked afterwards (as per stackoverflow.com/questions/15769220)
12:20Z <psch> japhb: i don't know if that's how we want condvars to work on nqp though or if that should be abstracted away
TimToady on the P6 syntax level, 'do' is just an example of such a category converter; it really does nothing else
japhb: those are all just expressions
japhb TimToady: not in a language that does not treat assignment as an expression. 17:40
17:40 vendethiel left 17:41 vendethiel joined
TimToady that sounds more like 'part of a statement' than 'part of an expression' 17:41
17:42 vendethiel- left
japhb psch: As mentioned in the commit description, thanks for the 02-lock.t catch. My feeling is that not having the lock when you signal the condvar indicates a bug in the user code with high probability, so we shouldn't paper over it. However, the Java error is way LTA, so that should be caught and turned into a proper NQP/Perl 6 error. 17:42
17:42 danaj joined 17:43 gfldex joined
japhb TimToady: my point was that in 'my x = foo', 'foo' is a complete expression that is part of a statement, whereas in 'my y = 2 * bar', 'bar' is part of an expression that is itself part of a statement. (In, as I said, a language that treats assignment as a statement and not an expression.) 17:43
At least, that's how I interpreted masak's writing.
TimToady that still sounds like sloppy thinking to me; both of those are still going to be parsed by something like EXPR, it's just that * will do so recursively somehow 17:46
both of them *expect* an expressoin at that point
maybe I just need more coffee
17:49 kaleem left 17:53 bjz joined, mvuets joined 17:55 rurban left 17:56 rurban joined
TimToady Enlish is also a language that makes a syntactic distinction between statements and expressions, and then let's you mush them all back together on the samentic level, as long as the listener can "cast" the return value into an appropriate context 17:58
examples abound, but my favorite:
"I don't like your I-can-use-anything-as-an-adjective attitude."
japhb :-) 17:59
TimToady *semantic
japhb
.oO( semitic )
TimToady how the heck did I get samentic?
japhb It's the same antics you always get into. 18:00
TimToady should become more antic-warian... 18:01
18:03 dakkar left 18:04 treehug88 left
dalek p: 6dfafac | peschwa++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java:
Un-LTA condsignalone on an unlocked condvar.

According to the Javadoc for ReentrantLock signalling only ever throws IllegalMonitorStateException when the Lock is not held.
18:04
18:05 jluis left
psch japhb: the discrepancy between mvm and jvm still puzzles me though 18:05
TimToady lately I've been thinking of ; as just a syntactic operator that makes lists of expressions; it's the block context that turns those into the equivalent of a C comma operator; [] and () instead turn ; into a lol
japhb psch++ # Fast fix -- does condsignalall need the same treatment?
psch: Agreed re: discrepency. Maybe libuv just doesn't try to detect this case? 18:06
psch japhb: uh, yes, it does :)
need the fix that is
japhb nodnod
TimToady: I like that way of thinking. 18:07
18:07 tinyblak left
dalek p: 0713ffd | peschwa++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java:
Un-LTA candsignalall on an unlocked condvar.
18:07
japhb psch++ again. :-) 18:08
TimToady of course, block syntax is also the scaffolding for lexical scoping, and I can argue that this is perfectly natural, since lists of side effects need things to affect
masak TimToady: "part of an expression" means `1 + foo()` where `foo` is the macro.
TimToady still thinks it's meaningless 18:09
18:09 treehug88 joined
TimToady anywhere the parser expects an expression is functionally the same as any other place, to my mind 18:10
18:10 Mso150 joined
TimToady the important thing, I think, is to start regarding slot mismatches as type mismatches 18:11
18:12 pecastro left
psch japhb: logs.nodejs.org/libuv/2013-08-12#17:52:22.912 18:12
18:13 FROGGS_ joined
psch so jvm was right in throwing, and libuv is just lenient 18:13
18:14 treehug88 left
psch s/right/simply more strict/ 18:15
japhb nodnod 18:16
18:17 FROGGS left
japhb The thing is, it makes sense from the outside in a few cases to signal without being locked, but in terms of the low-level implementation, possibly less so. 18:18
18:21 treehug88 joined 18:24 bjz left 18:25 bjz joined 18:27 tinyblak joined
TimToady grammar rules already encode their slot and expected ast type as part of their name; this is why 'macro' as a keyword is kinda wimpy compared to the 'slang token' proposal 18:27
just as a well-typed grammar rule is the interface to the outer text, so too we need well-typed quasis to interface to the inner text
and that probably needs to be declarative, since it will influence what is parsed inside the quasi 18:28
once you have that, poking a typed quasi into a typed slot is a simple matter of type recognition/conversion 18:29
the thing about these typed grammatical slots is that they not only say where the parse will start, but in what state the parse will be stopped 18:30
psch bringing jvm in line with mvm on the condsignal means implementing our own ReentrantLock and Condition... i have no clue if that'd be worth it, i can't judge how common the cases for signalling from the outside are for our async primitives
dalek kudo-star-daily: 0db39de | coke++ | log/ (10 files):
today (automated commit)
18:31
rl6-roast-data: ca0e711 | coke++ | / (5 files):
today (automated commit)
TimToady I view the current macro thinking as kind of a groping forward in the struggle against accidental genericity without compromising intentional genericity 18:32
18:34 tinyblak left
TimToady which maps rather nicely onto type systems that provide a generic/specific continuum 18:34
masak I wish I could be a part of this backlog, but I'm preparing a somewhat late dinner.
18:34 tinyblak joined
masak best I can do is read and reply later :) 18:34
18:36 bjz left 18:38 vendethiel left
TimToady so anyway, I'm thinking we need some classes that reflect infix, prefix, statement, comment, etc. and not just operational how-to-parse info 18:39
18:42 treehug88 left 18:45 treehug88 joined 18:46 sirdancealot left 18:48 treehug88 left
masak yes. me too. 18:48
18:48 treehug88 joined 18:50 treehug88 left 18:51 fhelmberger left, tinyblak left, tinyblak_ joined, treehug88 joined, bjz joined 18:55 brrt joined, rurban left, treehug88 left 18:58 treehug88 joined
pyrimidine moritz, PerlJam: panda issue seems related to nqp::readlinefh and appear moarvm-specific. Testing JVM now. 19:00
Just tried installing Parrot for the first time in a while, and it craps out on icu
FROGGS_ yes, we complain now if icu is not there 19:01
pyrimidine FROGGS_: makes sense. Problem is, OS X 10.9 and up have a system libicu installed which the installer doesn't find (no headers, icu-config). May have to fiddle with a local icu install 19:04
FROGGS_ hmmm :/ 19:05
doing it right for osx is hard these days
pyrimidine FROGGS_: yep. I also thought about using homebrew, but 'brew install icu4c' indicates possible issues if installing a separate icu. fun :) 19:06
19:08 rindolf left 19:11 xfix left, xfix joined
japhb OS X drives me nuts as a developer, because it doesn't even have the excuse of being not-unix. 19:13
19:14 denis_boyun_ joined 19:15 kaare__ joined
japhb TimToady: Interestingly, that type system macro thinking puts some more meat on my nebulous macro idea in which I used grammar rule names in a type-ish fashion. 19:15
b2gills m: say {(^6).roll} ...^ 0
camelia rakudo-moar c5dcdf: OUTPUT«2 1 4 3 4 1 2 4␤»
b2gills m: say join '', ({ ('A'..'Z','a'..'z',0..9,Mu).roll } ...^ !*.defined); # password generator 19:19
camelia rakudo-moar c5dcdf: OUTPUT«fYpGTdo9W7dJvNWas6ALbF9l9nZMH70w4y67SGnfQ0QdXodhRS8pqwjgeEqdtQXopf6DT1M97iCUZK␤»
bartolin hi, #perl6! 19:24
19:25 kjs_ joined
japhb o/ 19:26
bartolin it looks that with commit 79e62b4 there came a 'NO-BREAK SPACE' character in a comment to src/vm/jvm/runtime/org/perl6/rakudo/RakudoJavaInterop.java. since then it's sitting there in line 354 and busted my daily jvm builds :/
before that commit I was able to build jvm with LANG='' 19:29
psch bartolin: whoops. my advent post made me get used to that, sorry 19:31
i can PR that, but i'd say that's a bit silly for replacing a space
bartolin psch: I thought the same :-) maybe someone else can fix it
otherwise psch++ for those commit 19:32
19:33 brrt left
bartolin hmm, looking a second time that commit is a bit older. my builds started to fail three days ago only. but make dies with "src/vm/jvm/runtime/org/perl6/rakudo/RakudoJavaInterop.java:354: error: unmappable character for encoding ASCII 19:35
FROGGS_ hmmm, I dont spot it
psch bartolin: the commits have only been merged a few days ago
FROGGS_ 354 is: // Perl 6' .new creating a new CallFrame or something..? 19:36
bartolin FROGGS_: yes, between 'Perl' and '6' there is a non breaking whitespace
psch: ok, that explains it
FROGGS_ ahh, I see it :o)
bartolin sees it very clearly
dalek kudo/nom: ac9c85e | FROGGS++ | src/vm/jvm/runtime/org/perl6/rakudo/RakudoJavaInterop.java:
replace non breakable space with whitespace

  bartolin++
19:38
bartolin thanks a lot, FROGGS++
jnthn evening, #perl6 19:43
yoleaux 12:40Z <lizmat> jnthn: in #122896 it becomes evident that wrapping the sub in a traitmod on a Routine, segfaults on trying to run that routine in a precomped version
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=122896
yoleaux 12:40Z <lizmat> jnthn: this effectively bars things like "is cached" in the ecosystem
12:55Z <lizmat> jnthn: re #122896 it feels like the original sub is not being serialized
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=122896
bartolin FROGGS_: on another note: did you see that you got some wrongish test reports at testers.perl6.org from my daily smokes on freebsd? ugexe++ found them and helped me to narrow down the problem. i filed a rakudobug (RT #123563). 19:45
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=123563
jnthn lizmat: I'm not immediately sure what's going on, but will but it on my todo list for once I'm back :)
19:46 denis_boyun_ left
bartolin FROGGS_: I stopped to submit reports for now, but I wonder if you want to remove the unreliable reports ... 19:46
19:47 vendethiel joined
jnthn From the backlog, and on stability: while it is obviously an important goal, and also nice that we've improved performance sufficiently that it's no longer a top priority for so many folks, I don't think we've become *less* stable over the last year at the things we've long been able to do well. 19:47
Most of the instability is in concurency stuff - and thus in things that we simply didn't even have a year ago.
vendethiel agrees 19:48
fwiw, when I show benchmarks numbers now, people still say "slow", but it's "slow like ruby", not "slow like a snail"
19:49 tgt joined
jnthn Most other stuff we have wasn't immediately trustworthy either, it's just that it's had chance to mature, and time spent on it. Concurrency has had a lot less time invested in it than it really needs. Once it gets that attention, things will be better. 19:49
jnthn is a bit frustrated that various things kept him from having a good amount of time on that in the latter part of 2014, but happy to report that his 2015 is looking rather better. :) 19:50
19:51 zakharyas left
jnthn And yes, I agree with the sentiment in the backlog that we could do with finding ways I can do more knowledge-sharing to help spread the load. 19:51
19:55 raiph joined 19:57 PZt joined, bcode left 19:58 bcode joined
[Coke] fixes the rakudo-star-daily cronjob and kicks it off again. 20:02
.ask moritz any luck with parrot hang on R*?
yoleaux [Coke]: I'll pass your message to moritz.
FROGGS_ bartolin: I have to find out in what way they are wrong first.... there was something about that in the clogs, right? 20:04
20:04 tinyblak_ left, brrt joined 20:06 darutoko left
bartolin FROGGS_: the bug report has a link to a closed panda issues which has some more informations. apart from that there is a something in the irclogs (skid++ brought the problem up, actually): irclog.perlgeek.de/perl6/2015-01-07#i_9898147 20:06
FROGGS_: in short, the summary (whether for build or tests was not reliable). e.g. some failing builds and tests where marked 'PASS' 20:08
20:09 denis_boyun_ joined 20:10 panchiniak joined 20:12 [Sno] left
japhb jnthn: I meant stability in two senses (this got lost a bit in later discussions): Stability as in "doesn't crash, hang, eat all RAM, gate in Cthulhu, incorrectly execute the code as written, etc." and stability as in "fundamentals of language, such as lists and IO ops, aren't still changing". 20:13
jnthn: Lack of the latter is annoying, because it means building correct idiom habits becomes a bit of a footgun. 20:14
jnthn Yes, agree. 20:15
japhb jnthn: Lack of the former is expected while major implementation bits are changing, but not having that form of stability at any point between major upheavals makes it very difficult to use the compiler in production, because you can't pick a "golden revision" that you lock production compiles to, until the next rock-solid revision comes about. 20:16
So that's part of how it became more important than performance. 20:17
20:17 Mso150 left
japhb (for me) 20:17
20:18 Mso150 joined
japhb The other part is that the major features that I would use to work around straight-line slowness (all the various concurrency related features) are the ones that are least stable in that former sense, so I can't just go "Yeah, 1 thread runs at 10% the speed I need, but I can run a threadpool of 24 threads and be well into safety margin" 20:19
Note: None of this is intended to blame anyone for the situation. I'm just explaining why my priorities got inverted -- not because performance got fast enough for my use cases, but because it didn't improve *enough* for me to just rely on single-threaded performance by itself. 20:21
20:25 denis_boyun_ left
jnthn Sure; good to understand why you're being pushed to the less stable things, though. 20:26
20:33 kjs_ left
moritz [Coke]: no progress :( 20:34
yoleaux 20:02Z <[Coke]> moritz: any luck with parrot hang on R*?
20:38 kjs_ joined 20:39 bjz left 20:40 bjz joined 20:45 molaf_ left 20:52 bjz left, bjz_ joined 20:55 tinyblak joined
muraiki if instability means gating in cthulhu, I'm all for unstable 20:56
tony-o is there a 'prompt' that hides the input?
21:02 kjs_ left
FROGGS_ tony-o: "Update io_operators.pm" is not ideal as a commit message 21:03
tony-o sorry, i got clicky 21:04
fixed
FROGGS_ tony-o: is then :hidden param specced? or is something else in that regard specced? 21:05
tony-o i couldn't find it anywhere
21:09 brrt left, Mso150 left
colomon was looking at a repo the other day that had no commit message more useful than "Update io_operators.pm" 21:10
tony-o i updated the message but closed it 21:11
21:14 Mso150 joined 21:15 denis_boyun_ joined 21:18 bjz_ left
timotimo good * #perl6 o/ 21:19
colomon \o
psch o/ timotimo 21:20
21:30 raiph left 21:36 xfix left 21:42 panchiniak left 21:49 kjs_ joined 21:50 kjs_ left 21:51 raiph joined 21:59 kjs_ joined 22:06 skids left
psch sleep & 22:07
22:11 [Sno] joined
b2gills tony-o: I assume the point of :hidden was to stop the characters from being printed to the console as you type them 22:16
... which is not what that commit does
dalek kudo-star-daily: 19cb037 | coke++ | log/ (10 files):
today (automated commit)
22:18
22:23 Mouq left 22:29 kjs_ left
[Coke] is about to go on business travel somewhere where there is no PM. :( 22:29
22:47 Mouq joined 22:48 virtualsue joined 22:49 ssutch joined
masak TimToady: backlogging now. 22:52
TimToady: in the `1 + foo()` example, the main point was that things wouldn't go well (in 007) if `foo()` inserted an `if` statement.
(say)
TimToady: whereas with `foo()` at the top level of the expression statement, you'd get away with it, with some Q-node stuttering. 22:53
and in fact, you'd *have* to get away with it, because expressions are the only things that can call macros. so if that didn't work, there'd be no way to insert `if` statements.
TimToady: but now that I read your comments about type mismatches, it sounds like you're in support of some things not being insertable in some slots. 22:54
I like the idea about handling that through type matching. will need to think about that a bit further.
22:55 raiph left 22:56 adu joined, rurban joined
masak TimToady: a very concrete example of how parser state and Q node shape interact is in the expression parser. I've written down 007's world view here: github.com/masak/007/blob/master/operators.md 23:01
it's kind of like a reduced version of Perl 6's.
ok, midnight. time for sleep. 23:03
'night, #perl6
adu hi masak 23:04
gnight
I have a ? 23:05
what are the advantages of using EXPR in HLL::Grammar? 23:06
23:08 mvuets left 23:09 telex left 23:10 telex joined
Mouq adu: Compared to? 23:12
adu Mouq: implementing it yourself? 23:19
23:23 denis_boyun_ left
adu why is it that $.HOW.HOW and $x.WHAT.WHAT don't work? 23:26
23:32 cognominal joined
Mouq adu: It may or may not be faster, and is, I assume, pretty robust. cons: pretty much undocumented api, possibly hard to understand 23:32
m: say 1.HOW.HOW 23:33
camelia rakudo-moar c5dcdf: OUTPUT«No such method 'gist' for invocant of type 'NQPClassHOW'␤ in sub say at src/gen/m-CORE.setting:16653␤ in block <unit> at /tmp/aC29oAV2U_:1␤␤»
Mouq m: say 1.HOW.HOW.name
camelia rakudo-moar c5dcdf: OUTPUT«Too few positionals passed; expected 2 arguments but got 1␤ in any name at gen/moar/stage2/nqpmo.nqp:1201␤ in block <unit> at /tmp/ZXhseU7Ora:1␤␤»
Mouq m: say 1.HOW.HOW.^name
camelia rakudo-moar c5dcdf: OUTPUT«NQPClassHOW␤»
adu what does ".^" do?
23:34 treehug88 left
japhb adu: You can roughly think of a.^b as syntactic sugar for a.HOW.b(a) 23:35
adu ok
so it's kind of like a metaclass method invokation 23:36
japhb And the reason 1.HOW.HOW fails is that you cross the border between Perl 6 and NQP implementation, and a lot of the convenience methods one comes to expect in Perl 6 objects don't exist in NQP land. You can usually get what you want with more effort though, as Mouq++ showed.
23:36 cognominal left
japhb adu: Yeah, basically. 23:37
*'say 1.HOW.HOW' fails
23:38 cognominal joined
adu I need to understand Rubyish 23:41
23:43 virtualsue left 23:48 cognominal left 23:49 tgt left 23:56 silug joined 23:58 jack_rabbit joined, Rounin joined