asterite changed the topic of #crystal-lang to: #crystal-lang The Crystal programming language | http://crystal-lang.org | Crystal 0.6.1 | Paste > 3 lines of text to https://gist.github.com | GH: https://github.com/manastech/crystal - Docs: http://crystal-lang.org/docs/ - API: http://crystal-lang.org/api/ - Logs: http://irclog.whitequark.org/crystal-lang
ismaelga has quit [Remote host closed the connection]
ismaelga has joined #crystal-lang
waterlink has joined #crystal-lang
bcardiff has joined #crystal-lang
<Dreamer3> jhass: did you say there was a way to typecast values?
<jhass> willlll: nice!
<jhass> Dreamer3: yup
<jhass> >> "1" as Int32
<Dreamer3> how?
<DeBot> jhass: Error in line 3: can't cast String to Int32
<Dreamer3> ok
<jhass> >> x = rand(2) == 1 ? "1" : 1; x as Int32
<DeBot> jhass: 1
<jhass> >> x = rand(2) == 1 ? "1" : 1; x as Int32
<DeBot> jhass: 1
<jhass> >> x = rand(2) == 1 ? "1" : 1; x as Int32
<DeBot> jhass: Exception: cast to Int32 failed
ismaelga has quit [Remote host closed the connection]
ismaelga has joined #crystal-lang
<Dreamer3> except method dispatch doesn't seem to work after i typecast a class
<Dreamer3> or at least new doesn't work
<Dreamer3> undefined method 'new' for Moonshine::Middleware::Head
<Dreamer3> it surely is defined because if i call it directly it works just fine
<jhass> feel free to make a minimal example and open an issue ;)
<Dreamer3> yeah
ponga has quit [Quit: Leaving...]
<jhass> you cast the class to an instance of it there I think
<Dreamer3> oh wait
<Dreamer3> yeah
<jhass> I'm surprised that cast doesn't fail
<jhass> IMO it should
<Dreamer3> well before the cast it thinks its an Int32
<Dreamer3> i think the type system is pretty wonky
<jhass> oh weird bug
<jhass> >> a = [] of Tuple; a << {String, nil}; p a.first.class
<DeBot> jhass: collect2: error: ld returned 1 exit status
<jhass> that crashes the object file generation apparently
<Dreamer3> on master it doesn't crash but returns an Int32
<Dreamer3> which can be cast correctly
<Dreamer3> like somehow it loses the type
ismaelga has quit [Remote host closed the connection]
<Dreamer3> is there a way to declare a type of tuple or are you not supposed to need to do that
<jhass> >> a = [] of {Class, Nil}; a << {StringIO, nil}; a.first.first.new
<DeBot> jhass: Error in line 3: no overload matches 'Array({Object+:Class, Nil})#<<' with types {StringIO:Class, Nil}
<jhass> >> a = [] of {Class+, Nil}; a << {StringIO, nil}; a.first.first.new
<DeBot> jhass: Error in line 3: no overload matches 'Array({Object+, Nil})#<<' with types {StringIO:Class, Nil}
<jhass> worth a try
<Dreamer3> yeah that's exactly that i'm trying to do
<jhass> so yes, but not with a class
<jhass> >> a = [] of {Int32, Nil}; a << {1, nil}; a.first.first + 2
<DeBot> jhass: Error in line 3: undefined method '+' for Nil
<jhass> mh
<Dreamer3> if it works with just "Tuple" there should be SOME way to clue Tuple in a little better
<Dreamer3> time for another issue i guess :)
<jhass> nah that's #578, we should just disallow that
<jhass> it makes no sense
<jhass> the reason of x of y is that tracing which types will be added the array is a huge effort
<jhass> and allowing a generic class without a type argument requires that tracing too, and I guess it all falls apart atm because it isn't done
<Dreamer3> shouldn't i still be allowed to add subclsases?
<jhass> well yes, that it doesn't work with Class is because, outside macros, it's all faked
<jhass> Class isn't a true class, class Foo isn't a true object
<Dreamer3> ok this seems to work with arrays
<jhass> so it's incomplete/buggy
bcardiff has quit [Quit: Leaving.]
<jhass> anyway, I gotta grab some sleep now ;)
<Dreamer3> ok this seems to work with arrays
<Dreamer3> grrr, sorry
<Dreamer3> really wish my irc client wouldn't allow repeats
waterlink1 has joined #crystal-lang
<Dreamer3> can i declare an instance variables type and then set it later?
waterlink has quit [Ping timeout: 256 seconds]
<Dreamer3> can i declare an instance variables type and then set it later?
<Dreamer3> really making me appreciate ruby
willlll has quit [Quit: willlll]
ismaelga has joined #crystal-lang
ponga has joined #crystal-lang
willlll has joined #crystal-lang
<Dreamer3> it works if you declare the class in the Tuple and also when you add them
<Dreamer3> @middleware = [] of Tuple(Middleware::Base.class, Nil)
<Dreamer3> @middleware << {middleware as Middleware::Base.class, opts}
<Dreamer3> seems to work great
<Dreamer3> and preverse the subclassing
willlll has quit [Ping timeout: 252 seconds]
waterlink1 has quit [Ping timeout: 240 seconds]
ismaelga has quit [Remote host closed the connection]
bcardiff has joined #crystal-lang
bcardiff has quit [Quit: Leaving.]
r0ast has joined #crystal-lang
<r0ast> Hey Crystal Devs! I have a quick question. I'm the creator of Bunny, https://github.com/samsheff/Bunny - which is a simple Erb-like view tool for frank
<r0ast> Right now, you can only pass in a variable and it will substitute it in the view
<r0ast> And a while ago, I read somewhere about a metaprogramming technique that would let commands also be executed
<r0ast> Can anyone point me in the right direction for a quick way to get up to speed?
shama has quit [Remote host closed the connection]
r0ast has quit []
<Dreamer3> you've seen ECR right?
<ponga> that was sudden
<Dreamer3> indeed
bcardiff has joined #crystal-lang
shama has joined #crystal-lang
bcardiff has quit [Ping timeout: 256 seconds]
shama has quit [Client Quit]
bcardiff has joined #crystal-lang
BlaXpirit has joined #crystal-lang
havenwood has quit [Read error: Connection reset by peer]
havenwood has joined #crystal-lang
DerisiveLogic has quit [Ping timeout: 256 seconds]
vikaton has quit [Quit: Connection closed for inactivity]
HakanD___ has joined #crystal-lang
HakanD____ has joined #crystal-lang
HakanD___ has quit [Ping timeout: 256 seconds]
HakanD____ has quit [Quit: Lingo: www.lingoirc.com]
Liothen has quit [Ping timeout: 245 seconds]
Liothen has joined #crystal-lang
ponga has quit [Remote host closed the connection]
Ven has joined #crystal-lang
havenwood has quit [Remote host closed the connection]
DerisiveLogic has joined #crystal-lang
wanderer_ has joined #crystal-lang
<wanderer_> jhass: hey, do you know how to cast to Void*?
<jhass> as Void* ?
<jhass> >> Pointer(String).new(0) as Void*;
<DeBot> jhass: Error in line 3: no overload matches 'Pointer(String):Class#new' with types Int32
<jhass> >> Pointer(String).null as Void*;
<DeBot> jhass: Pointer(Void).null
<wanderer_> ah, thx
<wanderer_> is something like `0 as LibC::SizeT` possible, too, or just `LibC::SizeT.cast(0)`?
wanderer_ has quit [Ping timeout: 246 seconds]
Ven has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
leafybasil has quit [Remote host closed the connection]
DerisiveLogic has quit [Ping timeout: 256 seconds]
ponga has joined #crystal-lang
Ven has joined #crystal-lang
leafybasil has joined #crystal-lang
ponga has quit [Remote host closed the connection]
ismaelga has joined #crystal-lang
Ven has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
strcmp1 has joined #crystal-lang
vikaton has joined #crystal-lang
ponga has joined #crystal-lang
strcmp1 has quit [Quit: Leaving]
DerisiveLogic has joined #crystal-lang
ismaelga has quit [Remote host closed the connection]
ismaelga has joined #crystal-lang
JBat has joined #crystal-lang
BlaXpirit has quit [Quit: Quit Konversation]
colorados has joined #crystal-lang
ssvb has quit [Ping timeout: 240 seconds]
ponga has quit [Remote host closed the connection]
ponga has joined #crystal-lang
ponga has quit [Remote host closed the connection]
ssvb has joined #crystal-lang
colorisco has joined #crystal-lang
colorados has quit [Read error: Connection reset by peer]
ismaelga has quit [Remote host closed the connection]
colorisco has quit [Read error: Connection reset by peer]
colorados has joined #crystal-lang
strcmp1 has joined #crystal-lang
bcardiff has quit [Quit: Leaving.]
DerisiveLogic has quit [Ping timeout: 256 seconds]
HakanD has joined #crystal-lang
colorados has quit [Read error: Connection reset by peer]
asterite has joined #crystal-lang
havenwood has joined #crystal-lang
Ven has joined #crystal-lang
strcmp1 has quit [Ping timeout: 264 seconds]
colorados has joined #crystal-lang
colorados has left #crystal-lang [#crystal-lang]
Ven has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
strcmp1 has joined #crystal-lang
BlaXpirit has joined #crystal-lang
asterite has quit [Ping timeout: 246 seconds]
bcardiff has joined #crystal-lang
ismaelga has joined #crystal-lang
strcmp1 has quit [Quit: Leaving]
bcardiff has quit [Quit: Leaving.]
bcardiff has joined #crystal-lang
bcardiff has quit [Client Quit]
shama has joined #crystal-lang
HakanD has quit [Quit: Be back later ...]
willlll has joined #crystal-lang
harisamin has joined #crystal-lang
willlll has quit [Quit: willlll]
<fowl> morning all
<fowl> when i try to use the crystal binary wanderer linked yesterday i get this message "unexpected token: DELIMITER_START"
<BlaXpirit> fowl, same thing for every program?
<fowl> yea
willlll has joined #crystal-lang
<BlaXpirit> fowl, have you tried a program without newlines?
<fowl> yea
DerisiveLogic has joined #crystal-lang
willlll has quit [Quit: willlll]
jua_ has joined #crystal-lang
ismaelga has quit [Remote host closed the connection]
leafybasil has quit [Read error: Connection reset by peer]
leafybasil has joined #crystal-lang
HakanD has joined #crystal-lang
willlll has joined #crystal-lang
<Dreamer3> ok what are my options for something like session where i want users to be able to set keys of any value?
DerisiveLogic has quit [Read error: Connection reset by peer]
asterite has joined #crystal-lang
DerisiveLogic has joined #crystal-lang
<Dreamer3> can i do recursive structures? hash within hash within hash?
<asterite> Dreamer3: for the session case, we still need to be able to do [] of Reference or maybe [] of Object so you can store any object there, but when you get it you are forced to cast it to the appropriate type
<asterite> and you can do recursive structures with aliases
<asterite> >> alias Rec = Int32 | Array(Rec); a = [] of Rec; a << a; a
<DeBot> asterite: [[...]]
zipR4ND has joined #crystal-lang
<Dreamer3> can i do recursive structures? hash within hash within hash?
<Dreamer3> sorry
<Dreamer3> and how would i do that with a hash?
<vikaton> asterite: 2 more weeks till next release? :D
<Dreamer3> alias Blah = Symbol => (String | Int32 | Float64 | Blah)
<Dreamer3> a = {} of Blah
<Dreamer3> no go
<asterite> alias Rec = Int32 | Hash(Rec, Rec); h = {} of Rec => Rec; h[h] = h; h
<asterite> >> alias Rec = Int32 | Hash(Rec, Rec); h = {} of Rec => Rec; h[h] = h; h
<DeBot> asterite: {{...} => {...}}
<asterite> vikaton: I hope not, but it's not on my hands
<vikaton> who's hands is it on o.0
<asterite> Well, it's kind of in my hands, but I want to check some things with waj before the release… but he's been very busy lately
<Dreamer3> should this work
<Dreamer3> i get a segmentation fault
<vikaton> ah
<Dreamer3> it works without the cicrular Blah stuff
<crystal-gh> [crystal] asterite pushed 3 new commits to master: http://git.io/vJTDv
<crystal-gh> crystal/master 4200b9e Ary Borenszweig: Fixed #592: `self += ...` didn't give a syntax error
<crystal-gh> crystal/master cfcada6 Ary Borenszweig: Added Time#total_weeks
<crystal-gh> crystal/master 6a731d0 Ary Borenszweig: HTTP::Headers now allow multiple values for a same key. Fixes #581
<Dreamer3> ha just the alias line blows it up
<Dreamer3> asterite: any thoughts? file a bug?
<Dreamer3> release version just freezes
<Dreamer3> vs newer that faults
<asterite> Seems a bug, yes
<asterite> Thanks for reporting :)
<Dreamer3> ok anything like YAML.dump or marshal dump or am i going to have to build my own?
<Dreamer3> json maybe?
<Dreamer3> hmmm so my custom hash doesn't get the to_json method?
<asterite> What's your custom hash?
<Dreamer3> n/m need to require json
<Dreamer3> now i need an io objecT? hmmm
<Dreamer3> ok, that's output :)
<Dreamer3> what's the proper API to turn json back into a hash?
<Dreamer3> looking at all the json lib stuff
waterlink has joined #crystal-lang
<Dreamer3> hmmm now i think the problem is that not all my object types respond to new
<asterite> Why do you want to turn them to a hash?
<Dreamer3> to access the attributes
<Dreamer3> i need to be able to save/restore session
willlll has quit [Quit: willlll]
DerisiveLogic has quit [Ping timeout: 255 seconds]
jua_ has quit [Quit: brb]
<Dreamer3> ROFL
<Dreamer3> JSON.parse
jua_ has joined #crystal-lang
<Dreamer3> ROFLi can't convert a string to a symbol can i?
<Dreamer3> ROFLi can't convert a string to a symbol can i?
<Dreamer3> sorry
<waterlink> Converting string to symbol is really an anti-pattern from ruby world
<waterlink> Particularly I like this explanation: https://news.ycombinator.com/item?id=9197412
<Dreamer3> sure, i just like how they look in my editor because i use them differently than strings
<Dreamer3> :)
<Dreamer3> maybe i should just require the session keys to be strings though
<waterlink> Why not use objects instead of symbols?
<Dreamer3> vs adding HashWithIndifferentAccess :)
<Dreamer3> i'm just use to Rails, Ruby, and symbols
<Dreamer3> and prefer how they look
<Dreamer3> no other reason :)
<Dreamer3> strings may make more sense for Crystal though
<waterlink> Usually, symbol used as a key or it has some special meaning of kind of something. In first case strings are sufficient. In second case you probably want to have multiple classes instead of switching on kind represented by a symbol )
<waterlink> yeah, just ruby-ish preference, I know )
<Dreamer3> i'm working on web framework and just got to session
waterlink has quit [Ping timeout: 256 seconds]
willlll has joined #crystal-lang
wanderer_ has joined #crystal-lang
<wanderer_> asterite: hey
waterlink has joined #crystal-lang
<vikaton> Its growing
<ddfreyne> Is there a way to specify a type based on the methods it implements?
<jhass> specify where?
<ddfreyne> e.g. def transmute(a : #to_gold)
<ddfreyne> jhass: Function/method arguments, mostly.
<jhass> def transmute(a); ... a.to_gold; ...; end
<ddfreyne> jhass: One issue with that approach is that compiler errors tend to surface potentially really deep in other code.
<jhass> IMO if that becomes an issue, it's a sign your method is too big
<ddfreyne> jhass: Oh, it’s not inside the method itself, but rather a few functions/methods deep
<jhass> Crystal should provide a traceback in the error message where the value came from
waterlink has quit [Quit: Leaving.]
<ddfreyne> jhass: For example, I’m writing a game and occasionally I get a compiler error that points deep inside other code
waterlink has joined #crystal-lang
<ddfreyne> jhass: Yes, exactly… but it’s confusing because it almost requires me to read the other library’s source code in order to figure out what types it needs.
<ddfreyne> I can’t give a super concrete example at the moment :(
JBat has quit [Quit: Computer has gone to sleep.]
<jhass> IME it's fairly obvious. anyway if you like the boilerplate you could do stuff like module Goldable; abstract def to_gold; end; def transmute(a : Goldable)
leafybasil has quit [Remote host closed the connection]
<jhass> you have to include Goldable into a's class of course
DerisiveLogic has joined #crystal-lang
<ddfreyne> Yeah, that’s what I’m trying to avoid. It gets pretty close to what I want, though
<jhass> you could also raise ArgumentError.new unless a.respond_to? :to_gold, but that's a runtime error
<ddfreyne> I suppose I’m looking for something like Go’s interfaces (you don’t need to explictly implement them)
<ddfreyne> I’ll think about this a bit more and write up a proposal.
harisamin has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
<fowl> ddfreyne, i just wrote something similar for nim
<wanderer_> where is UInt32#to_i defined?
<fowl> wanderer_, hey there, i'm trying to run your crystal binary but i get error "cant find file prelude"
<wanderer_> put crystal.exe in your crystal-folder with /src/, etc. and then set your working directory to that folder
<wanderer_> fowl: what was this DELIMITER_START about?
<fowl> wanderer_, i didnt have CRYSTAL_PATH set
<wanderer_> for crystal.exe? hm, me neither, haven't had such error
<wanderer_> `raise "expected '\\n' after '\\r'"` doesn't mac use a single \r?
<fowl> yeah i get that error without CRYSTAL_PATH set
<jhass> wanderer_: that would be news to me
<jhass> unix generally uses a single \n
asterite has quit [Quit: Leaving.]
<wanderer_> "CR: Commodore 8-bit machines, Acorn BBC, ZX Spectrum, TRS-80, Apple II family, Mac OS up to version 9 and OS-9"
<wanderer_> up to version 9, dunno how old that one is
<jhass> 2006 or so?
<fowl> os x came out like 1999 i thought
<wanderer_> lol, 2001
<ddfreyne> Mac OS pretty much doesn’t use LF anywhere anymore.
<wanderer_> you mean CR?
<ddfreyne> wanderer_: Sorry, CR.
<wanderer_> mac apparently used to use CR, but uses LF like Linux does
<wanderer_> Windows still uses CRLF like http
<wanderer_> *uses LF nowadays
<wanderer_> was confused by that raise, as I thought Mac would still use CR, and as asterite has a Mac this didn't make much sense
<ddfreyne> CR got pretty much exterminated. Wee! :)
waterlink has quit [Ping timeout: 252 seconds]
<wanderer_> puts "OUTPUT=#{`echo lol && exit 7`}"
<wanderer_> this apparently calls the function ` twice
<wanderer_> is this correct behaviour?
<wanderer_> >> puts "bla #{`echo lol`}"
<DeBot> wanderer_: /bin/sh: line 1: bla: command not found
<jhass> looks like a bug
leafybasil has joined #crystal-lang
HakanD has quit [Quit: Be back later ...]
DerisiveLogic has quit [Ping timeout: 276 seconds]
<wanderer_> jhass: when you write `pkg-config #{libname} --libs`, it does a Process.run("/bin/sh", input: "pkg-config #{libname} --libs"), so it starts /bin/sh and writes the command via pipe
<wanderer_> doesn't it then read the process' whole stdout?
<jhass> it should
<vikaton> >> `echo hi`
<DeBot> vikaton: "hi\n"
<wanderer_> but wouldn't that include command terminal markers and stuff, like "/im/currently/here#> pkg-config..."?
<jhass> no, that doesn't launch an interactive shell
<jhass> it's similar to /bin/sh -c "foo"
<jhass> so yes it would, but it's never written by the shell in that invocation
<wanderer_> but why isn't it interactive? doesn't it start a normal /bin/sh and write to its stdin via pipe?
<jhass> yes, and that makes it non-interactive
<jhass> if stdin is no tty or pty, the shell doesn't go into interactive mode
<wanderer_> so the shell itself has a check if stdin is a tty?
<jhass> yes
<wanderer_> because I'm doing that on windows atm, starting it and writing to its stdin, the output I get is
<wanderer_> OUTPUT=<<Microsoft Windows [Version 6.1.7601] Copyright (c) 2009 Microsoft Corporation. Alle Rechte vorbehalten. C:\bla>echo lol && exit 7 lol>>
<wanderer_> like I would start a normal cmd.exe and write to it via keyboard
<jhass> it does start /bin/sh to use it's $PATH lookup mainly
<wanderer_> I thought so
<jhass> and for parameter expansion I guess
<jhass> >> `ls /**/profile`
<DeBot> jhass: "/etc/profile\n"
<jhass> >> `ls /**/profile | wc -l`
<DeBot> jhass: "1\n"
<jhass> stuff like that
<wanderer_> also I've read somewhere in github's issues that a stdin pipe is used to bypass some command length limit
<jhass> yes
<wanderer_> cmd.exe doesn't check whether stdin is a tty, I could use cmd.exe /c so it's non-interactive, then however I have to pass commands via the commandline instead of using a stdin pipe
<jhass> (nitpick: it's no pipe, it simply writes to stdin)
<wanderer_> because of fork or what do you mean?
<jhass> nvm, not important
<jhass> so, does windows have a limit for argv?
<jhass> consider both, number of arguments and maximum length of each item
<wanderer_> hm, I'm not sure about the limit
<jhass> on linux we hit the limits with the compiler if in a deeply enough nested directory
<wanderer_> simple paths have a limit of 260, \\?\ paths can be 32k bytes long
<jhass> it's not about paths
<wanderer_> as for the commandline I don't know
<jhass> it's about process arguments
<wanderer_> yes, I'm not sure whether it's cohering on windows, though
<wanderer_> probably not
<wanderer_> I'm also using a c api wrapper for CreateProcess
<jhass> if there's a C function that does PATH expansion, by all means use that
<wanderer_> which makes the whole stuff a little more unclear
<jhass> I wonder what Ruby does for ` on windows
<wanderer_> doesn't ` suggest terminal-like behaviour?
<wanderer_> e.g. echo is only valid in cmd.exe, it's not a echo.exe like on linux
<jhass> http://rxr.whitequark.org/mri/source/process.c#2032 looks like MRI includes a minimal shell implementation for windows :D
<jhass> or maybe it just strips that stuff and runs it as a regular command? I'm not sure
<wanderer_> just tested cmd.exe /c and passing the command as argument instead of using a pipe, command.length = ~6000 seems to work
<wanderer_> ah, now I got "Die Befehlszeile ist zu lang." with 12k
<wanderer_> so the limiting factor seems to be cmd.exe here
BlaXpirit has quit [Quit: Quit Konversation]
<wanderer_> >> puts `bla`
<DeBot> wanderer_: /bin/sh: line 1: bla: command not found
<wanderer_> isn't that written to stderr?
<wanderer_> I thought ` would capture only stdout
<wanderer_> jhass: any idea? :P
vikaton has quit []
<jhass> >> puts `bla 2>&1`
<DeBot> jhass: /bin/sh: line 1: bla: command not found
<jhass> dunno, it could be written to stderr, the bot captures (and prefers) that
<wanderer_> why does it capture stderr at all? can't find a redirection in Process.run
ismaelga has joined #crystal-lang
<jhass> the bot
<wanderer_> ah, k
<fowl> wanderer_, any ideas on my problem?
<wanderer_> because I just tested `blabli` and obviously got nothing from stdout, but had "unknown command 'blabli'" written to my console (shared stderr -> stdout)
<wanderer_> fowl: <wanderer_> put crystal.exe in your crystal-folder with /src/, etc. and then set your working directory to that folder
<wanderer_> that didn't work?
<fowl> no it didnt
<fowl> unless you mean put the exe inside src?
<wanderer_> i have it in /bin/
<wanderer_> and working directory is the parent folder
<fowl> hm i dont know if this should have quotes or not: set CRYSTAL_PATH="C:\users\phowl_000\src\crystal\src", when i set it without quotes i get the delimiter error
<fowl> wanderer_, that didnt work either
<wanderer_> ,I'm not using CRYSTAL_PATH
<wanderer_> I have e.g. C:\Crystal, C:\Crystal\bin\crystal.exe, C:\Crystal\src\...
<wanderer_> then I start a cmd, do `cd C:\Crystal` and `bin\crystal.exe ...`
<fowl> ok
<fowl> i have mirrored this, i get this error running bin\crystal build test.cr: unexpected token: DELIMITER_START
<fowl> with --prelude empty i get "expecting token 'EOF', not 'end'"
<wanderer_> don't even know what DELIMITER_START is
<fowl> i couldnt tell, looks like it marked the start of strings
<wanderer_> i could send you another crystal.exe to try
<fowl> alright
<wanderer_> fowl: err, I don't know which exe I gave you, what does crystal.exe --version say?
zipR4ND has quit [Ping timeout: 252 seconds]
<fowl> wanderer_, it says Crystal ? ()
<crystal-gh> [crystal] asterite pushed 9 new commits to master: http://git.io/vJIWC
<crystal-gh> crystal/master bbbe9da Ary Borenszweig: Merge branch 'master' into iterator
<crystal-gh> crystal/master 2527a3e Ary Borenszweig: Merge branch 'master' into iterator
<crystal-gh> crystal/master 457720a Ary Borenszweig: Merge branch 'master' into iterator...
jua_ has quit [Quit: Vision[0.9.7-H-20140108]: i've been blurred!]
bcardiff has joined #crystal-lang
bcardiff has quit [Client Quit]
<travis-ci> manastech/crystal#2268 (master - 22f5c73 : Ary Borenszweig): The build was broken.
<wanderer_> fowl: any better?
DerisiveLogic has joined #crystal-lang
DerisiveLogic has quit [Ping timeout: 245 seconds]
DerisiveLogic has joined #crystal-lang
<crystal-gh> [crystal] asterite pushed 4 new commits to master: http://git.io/vJIrp
<crystal-gh> crystal/master b261536 Ary Borenszweig: Fixed #291: typed splats
<crystal-gh> crystal/master 7ea808b Ary Borenszweig: Allow invoking methods on a union type class as long as all types in the union implement that method. The result is a call to the first match casted to the resulting union type. Useful for #497 and similar cases.
<crystal-gh> crystal/master 57488f4 Ary Borenszweig: Added String::Builder, which is similar to StringIO but optimized for building just one string. Use this for string interpolations and String.build.