jhass changed the topic of #crystal-lang to: The Crystal programming language | http://crystal-lang.org | Crystal 0.18.7 | Fund Crystals development: http://is.gd/X7PRtI | Paste > 3 lines of text to https://gist.github.com | GH: https://github.com/crystal-lang/crystal | Docs: http://crystal-lang.org/docs/ | API: http://crystal-lang.org/api/ | Logs: http://irclog.whitequark.org/crystal-lang
Oliphaunte has quit [Remote host closed the connection]
Oliphaunte has joined #crystal-lang
willl has quit [Ping timeout: 258 seconds]
willl has joined #crystal-lang
matp has joined #crystal-lang
Oliphaunte has quit [Remote host closed the connection]
ponga has quit []
Oliphaunte has joined #crystal-lang
Oliphaunte has quit [Remote host closed the connection]
Oliphaunte has joined #crystal-lang
Oliphaun_ has joined #crystal-lang
Oliphaunte has quit [Ping timeout: 260 seconds]
Oliphaunte has joined #crystal-lang
matp has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
Oliphaun_ has quit [Ping timeout: 265 seconds]
Kuatr_main has joined #crystal-lang
<Kuatr_main> This comment made me sad :-( "There are lots of new languages, but unless they have a large company behind them they are doomed to obscurity. No matter how good. Go, Rust, Elixir have a bright future. Nim, Crystal and a bunch of others have a very low chance of getting any serious traction."
<havenwood> Kuatr_main: What's the large company behind Elixir? There was no large company in particular behind Ruby, for example. There's more than one way to flourish.
<rkeene> Tcl has been going great for decades :-)
<Kuatr_main> That's true, I think that Manas is a great company that supported with many effort Crystal at early early stage.
<Kuatr_main> Another comment "It does not have to be developed by a large company. It just needs to be used/promoted by a large company. This gives it enough clout and attention. Because people think, "well if company X is using it, then it must be pretty good and maybe I can get a job there". "
<rkeene> Tons of people use Tcl, but no companies do as the core business :-D
<havenwood> Kuatr_main: Or it can just be good enough to garner enough independent momentum to carry itself forward. Granted, funding a project's development helps. It'd be great to get more funding for Crystal: https://is.gd/X7PRtI
<Kuatr_main> Funding is great, thanks for share!!!, The main objective is the community :-)
Kuatr_main has quit [Quit: Page closed]
Oliphaunte has quit [Remote host closed the connection]
Kuatr_main has joined #crystal-lang
Kuatr_main has quit [Client Quit]
Oliphaunte has joined #crystal-lang
pawnbox has quit [Ping timeout: 250 seconds]
Philpax has quit [Ping timeout: 244 seconds]
Philpax has joined #crystal-lang
soveran has joined #crystal-lang
soveran has quit [Remote host closed the connection]
pawnbox has joined #crystal-lang
Philpax has quit [Ping timeout: 244 seconds]
pawnbox has quit [Remote host closed the connection]
Philpax has joined #crystal-lang
the_drow has joined #crystal-lang
<the_drow> Hi guys I'm getting expected named argument not k for @_subclasses.select { |k| defined?(k::VALUE) }
<the_drow> Any idea why?
pawnbox has joined #crystal-lang
snsei has joined #crystal-lang
<the_drow> Probably because of k::VALUE. But I'm not sure why. It works in Ruby
<adam12> What is k::VALUE in Ruby? Ruby !== Crystal.
<the_drow> adam12, Yeh I figured it out by now
<adam12> What was it?
<the_drow> I'm trying to see how easy it will be to port https://github.com/ruby-amqp/amq-protocol
<adam12> Interesting. I've never ever seen ::VALUE used in Ruby code before.
<the_drow> It's a constant on a class
<adam12> Yeah - I opened up irb to check :)
<the_drow> So far I'm missing the pack method on arrays and endianness logic which only exists for IO streams but I'm unable to make it work
<adam12> Well I'm off - good luck to ya.
<the_drow> thanks
snsei has quit [Remote host closed the connection]
Oliphaunte has quit [Remote host closed the connection]
nickc has joined #crystal-lang
pawnbox has quit [Remote host closed the connection]
<txdv> are there splats for arrays?
Oliphaunte has joined #crystal-lang
Oliphaunte has quit [Ping timeout: 250 seconds]
pawnbox has joined #crystal-lang
triangles has quit [Ping timeout: 240 seconds]
<txdv> Can I have a default value AND specify the type of the argument?
<txdv> a = nil : String | Nil
<txdv> ok, it is a : String | Nil = nil
<txdv> makes sense, placing the type with the variable name
<willl> as an aside, if you're doing a union with nil you can do String?
pawnbox has quit [Remote host closed the connection]
Philpax has quit [Ping timeout: 244 seconds]
<txdv> do you mean that String just accepts nil too?
pawnbox has joined #crystal-lang
Oliphaunte has joined #crystal-lang
pawnbox has quit [Remote host closed the connection]
Oliphaunte has quit [Ping timeout: 260 seconds]
pawnbox has joined #crystal-lang
Philpax has joined #crystal-lang
Philpax has quit [Ping timeout: 244 seconds]
pawnbox_ has joined #crystal-lang
pawnbox has quit [Ping timeout: 240 seconds]
pawnbox_ has quit [Remote host closed the connection]
<jhass> txdv: no, "String?" is the same as "String|Nil"
<jhass> and no, there aren't splats for arrays and it's rather unlikely there ever will be
<jhass> you have to convert the array into a tuple first, Tuple.from/Tuple#from provides a fairly easy way
Oliphaunte has joined #crystal-lang
Oliphaunte has quit [Ping timeout: 240 seconds]
<crystal-gh> [crystal] jhass closed pull request #3089: HTTP::Headers{} expects Hash-literal syntax, e.g. `=>` (master...correct-http-header-documentation) https://git.io/v6LVe
bjz has joined #crystal-lang
<travis-ci> crystal-lang/crystal#2c39a4c (master - Merge pull request #3089 from barisbalic/correct-http-header-documentation): The build passed. https://travis-ci.org/crystal-lang/crystal/builds/149691261
mark_66 has joined #crystal-lang
onethirtyfive has joined #crystal-lang
pawnbox has joined #crystal-lang
the_drow has quit [Quit: This computer has gone to sleep]
the_drow has joined #crystal-lang
pawnbox has quit [Remote host closed the connection]
mark_66 has quit [Remote host closed the connection]
mark_66 has joined #crystal-lang
pawnbox has joined #crystal-lang
tomchapi_ has joined #crystal-lang
tomchapin has quit [Ping timeout: 240 seconds]
onethirtyfive has quit [Remote host closed the connection]
mounibec has joined #crystal-lang
mounibec has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
bjz has quit [Ping timeout: 260 seconds]
bjz has joined #crystal-lang
<crystal-gh> [crystal] asterite closed pull request #3079: Process improvements (master...process_improvements) https://git.io/v6Uqk
<crystal-gh> [crystal] asterite closed pull request #3087: Add Indexable (master...feature/random_access) https://git.io/v6IHS
mounibec has joined #crystal-lang
Philpax has joined #crystal-lang
pawnbox has quit [Remote host closed the connection]
pawnbox has joined #crystal-lang
pawnbox has quit [Remote host closed the connection]
pawnbox has joined #crystal-lang
pawnbox has quit [Remote host closed the connection]
<travis-ci> crystal-lang/crystal#681bca3 (master - Merge pull request #3079 from jhass/process_improvements): The build passed. https://travis-ci.org/crystal-lang/crystal/builds/149742055
pawnbox has joined #crystal-lang
pawnbox has quit [Remote host closed the connection]
pawnbox has joined #crystal-lang
test has joined #crystal-lang
test is now known as Guest39192
soveran has joined #crystal-lang
soveran_ has joined #crystal-lang
soveran has quit [Ping timeout: 240 seconds]
<crystal-gh> [crystal] asterite pushed 4 new commits to master: https://git.io/v6tDa
<crystal-gh> crystal/master 11416be Ary Borenszweig: Indexable: added optional offset argument to `rindex`, plus docs
<crystal-gh> crystal/master 25ff44b Ary Borenszweig: String: optimize `index` and `rindex` for ascii char case (delegating to slice)
<crystal-gh> crystal/master ebe9b7d Ary Borenszweig: Indexable: added `index` overloads that accept an offset
<travis-ci> crystal-lang/crystal#ed0e47b (master - Merge pull request #3087 from crystal-lang/feature/random_access): The build passed. https://travis-ci.org/crystal-lang/crystal/builds/149742469
Guest39192 has quit [Quit: Page closed]
pawnbox has quit [Remote host closed the connection]
pawnbox has joined #crystal-lang
oddmunds has joined #crystal-lang
davidklsn has joined #crystal-lang
<travis-ci> crystal-lang/crystal#f104e7a (master - Added `Char#ascii?` and use it in a few places): The build was broken. https://travis-ci.org/crystal-lang/crystal/builds/149752012
pawnbox has quit [Remote host closed the connection]
pawnbox has joined #crystal-lang
matp has joined #crystal-lang
<crystal-gh> [crystal] asterite pushed 1 new commit to master: https://git.io/v6tQ3
<crystal-gh> crystal/master 4db88ed Ary Borenszweig: Indexable: fixed a few issues
<crystal-gh> [crystal] ReadmeCritic opened pull request #3094: Update README URLs based on HTTP redirects (master...master) https://git.io/v6tQQ
Oliphaunte has joined #crystal-lang
Oliphaunte has quit [Remote host closed the connection]
Oliphaunte has joined #crystal-lang
Oliphaunte has quit [Ping timeout: 260 seconds]
Philpax has quit [Ping timeout: 258 seconds]
<crystal-gh> [crystal] asterite pushed 1 new commit to master: https://git.io/v6tdf
<crystal-gh> crystal/master db70dee Ary Borenszweig: YAML: fixed problem line/column number
the_drow_ has joined #crystal-lang
the_drow has quit [Ping timeout: 240 seconds]
pawnbox has quit [Remote host closed the connection]
<asterite> wmoxam: you can't compare an array with an int, so the compiler is right in this case
<wmoxam> asterite: oh, so array responds to >
<wmoxam> I didn't think about that one
<wmoxam> hrmm
<crystal-gh> [crystal] jhass pushed 2 new commits to master: https://git.io/v6tb4
<crystal-gh> crystal/master efac37f ReadmeCritic: Update README URLs based on HTTP redirects
<crystal-gh> crystal/master 5736f0b Jonne Haß: Merge pull request #3094 from ReadmeCritic/master...
soveran_ is now known as soveran
soveran has quit [Changing host]
soveran has joined #crystal-lang
Oliphaunte has joined #crystal-lang
<travis-ci> crystal-lang/crystal#db70dee (master - YAML: fixed problem line/column number): The build was fixed. https://travis-ci.org/crystal-lang/crystal/builds/149765658
dunpeal has joined #crystal-lang
<dunpeal> Hi. How did Crystal get a large stdlib so fast?
<travis-ci> crystal-lang/crystal#5736f0b (master - Merge pull request #3094 from ReadmeCritic/master): The build was fixed. https://travis-ci.org/crystal-lang/crystal/builds/149769454
<jhass> dunpeal: perhaps it's too fun and easy to code in Crystal ;)
<FromGitter> <Svenskunganka> dunpeal: lots of goodies in the [awesome-crystal](https://github.com/veelenga/awesome-crystal) repo
<jhass> dunpeal: but if we're honest (and we should), it's less a "how" but more of a "who" question ;) https://github.com/crystal-lang/crystal/graphs/contributors
<dunpeal> jhass: interesting! I obviously came from the HN article, and the Crystal's story seems almost too good to be true: how do you make a language like Ruby match the performance claims?
<dunpeal> do you have any non-trivial (i.e. fibonacci) performance stats?
<jhass> dunpeal: well, it really isn't Ruby (anymore)
<jhass> and various "let me point wrk at a hello world HTTP server" clock in at up to 70k req/s
<FromGitter> <Svenskunganka> Is it possible to somehow implement an upgrading mechanism to a running process? The reason I'm asking is because I want to enable automatic updates of my program, which for the most part spawns other processes so restarting the process would kill those (which is not ideal in my case). I can imagine it's non-trivial to implement such a feature.
davidklsn has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
<jhass> it is, especially since Crystal's type representations aren't stable across complications. Your best bet is to fork off a new process, share a pipe with it and then push any open FDs + state (serialized to JSON or so) over it to the new process which takes it over, then terminate the parent
<RX14> killing a process doesnt kill it's children iirc
<jhass> systemd does something alike at systemctl daemon-reexec, reading about it might be worthwhile
<dunpeal> jhass: what major features of Ruby is Crystal lacking?
<jhass> RX14: uh, not sure, I think there was something weird depending on the children setting their pgid to the parent or not and stuff like that
<RX14> in compiled programs online upgrade is usually done by serialising state and transferring it over a pipe
<RX14> i think you can reparent processes anyway
<jhass> dunpeal: runtime reflection probably, which it compensates with compile time reflection and compile time code generation
<dunpeal> jhass: what specifically would be an example of "runtime reflection"?
<RX14> huh you can't reparent processed
<FromGitter> <Svenskunganka> RX14: but if killing a process that spawns other processes using `Process.new` doesn't kill those child processes, how can the "restarted" process regain control of those child processes? The way the main program works is that it mainly reads & writes from their respective stdout and stdin, and kills them on demand. These child processes are long-running.
<jhass> dunpeal: well, in Ruby you can consider class, def, etc just syntax sugar, you always start of with a empty program and then build up your type hierarchy at runtime by executing code
<RX14> you don't need processes to be explicitly your children to control them
<jhass> dunpeal: following that include/extend/prepend are just method calls in Ruby for example, you can define_method at any point, reopen a type at any point etc.
davidklsn has joined #crystal-lang
<RX14> you can pass their input and output file descriptors through a pipe, and you can control them by sending signals regardless of whether they are your children
soveran has quit [Remote host closed the connection]
<dunpeal> jhass: right, but if you can do it all at compile time with Crystal, I'm not totally sure how different it is?
<dunpeal> What's an example of something you can't do due to this difference in Crystal?
<jhass> dunpeal: the difference is that you can conditionally do it depending on values only available at runtime, take the gir_ffi gem for example, which can use gobject introspection to generate library bindings with the library actually available on the users system as they start the program
<jhass> whereas with crystal that generation has to happen at compile time and thus with what's available on the developers machine
<dunpeal> jhass: thanks, that makes sense, although it seems like a rarely-used feature.
<jhass> it interestingly comes up often enough if you try to transfer ruby idioms
<FromGitter> <Svenskunganka> That makes it a lot easier! Not sure how I would implement this though, do you have any pointers? Doesn't `Process.new` start the process as a child though?
<jhass> yes, sure it does
<jhass> if the parent dies pid 1 should inherit them
<dunpeal> jhass: oh, right, I guess with libraries like ActiveRecord for example.
<jhass> yes, we can autogenerate missing methods but we can't decide to not do the generation based on what a database table actually has at runtime for example
soveran has joined #crystal-lang
soveran has quit [Changing host]
soveran has joined #crystal-lang
davidklsn has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
<dunpeal> jhass: how about general method_missing? I assume that's supported?
<FromGitter> <Svenskunganka> jhass: that makes sense! How would one go about opening a stdout of a process after the I/O to it has been lost due to program restart? (Originally the process was spawned in the program)
<jhass> at compile time, yes, if you define a macro method_missing it'll be called at compile time on missing method definitions
<jhass> Svenskunganka: never tried, but I would expect IO::FileDescriptor.new(fd) to just work
<jhass> you don't really open it again, you just use it
<dunpeal> OK, apparently method_missing exists at compile time: https://crystal-lang.org/docs/syntax_and_semantics/macros/hooks.html
Oliphaunte has quit [Remote host closed the connection]
<dunpeal> but yeah, this is a fairly large different from Ruby
<dunpeal> s/different/difference/
pawnbox has joined #crystal-lang
<FromGitter> <Svenskunganka> @jhass @RX14 thank you guys so much for your help!
Oliphaunte has joined #crystal-lang
pawnbox has quit [Ping timeout: 252 seconds]
<FromGitter> <Svenskunganka> Btw did you see this yet? https://github.com/costajob/app-servers#benchmarks
<RX14> BlaXpirit, I wrote that power assertions RFC: https://aww.moe/jdvzqq.png
<RX14> what do you think of it?
<jhass> we should get https://github.com/crystal-lang/crystal/wiki/Used-in-production filled up a bit, asterite perhaps you can add Manas? @sdogruyol want to add Protel?
<BlaXpirit> RX14, "power_asser"
<BlaXpirit> RX14, first example is way too busy, may be seen as detrimental
<BlaXpirit> should show a normal example of writing assert obj.method(arg) == "asdf"
<RX14> yeah i guess
Ladrone has joined #crystal-lang
<Ladrone> hello guys
<jhass> hi
<jhass> dunpeal: oh, I've forgotten the most obvious example, no .send
<dunpeal> jhass: OK, yeah, that's a pretty big difference as well
<dunpeal> although I guess that's expected from a static language.
pawnbox has joined #crystal-lang
mark_66 has quit [Quit: Leaving.]
<BlaXpirit> RX14, I wonder about raising the point "The currently used spec DSL seems to be inspired by Ruby, but perhaps in Ruby it's a necessity, and Crystal's macros can get the same, or even better, diagnostic information without having to be so specific."
<BlaXpirit> not sure about starting the point with groovy :p
<BlaXpirit> regardless of the starting example, please write out the actual code for it (before + after) and only then the output
<BlaXpirit> so uh obj.method(arg).should.eq "asdf" and then that one
<BlaXpirit> "gist here" seems to have no link
Ladrone has left #crystal-lang [#crystal-lang]
<RX14> BlaXpirit, thanks
mounibec has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
libman has joined #crystal-lang
<libman> What I find most disappointing about Crystal is that it doesn't fit my definition of free software (see copyfree.org)
<FromGitter> <sdogruyol> @jhass sure
<jhass> libman: yes, it's open source software intentionally
<jhass> can you name a successful programming language that is free software?
<libman> I know it's open source, it's hard to find a programming language these days that isn't. But some licenses are freer than others. Apache license has restrictions to which I have (purely philosophical, impractical) objections. See copyfree.org/standard/rejected
<jhass> I take that as a no ;)
<jhass> can't you think of why that is?
<jhass> free software has its place, programming languages is not it
<libman> Most popular copyfree languages: C, C++, arguably C#, JS, shell (ex. zsh, mksh), Ruby, Go, Lua, Tcl, Haskell, Lisp (ex. SBCL, Chicken Scheme) etc.
pawnbox has quit [Remote host closed the connection]
<libman> Does Crystal have a reason for using the Apache license over something like MIT, BSD, CC0, Unlicense, etc?
<jhass> I think it's the patent waiver, which all of these lack
<libman> Ideally the patent waiver shouldn't be a part of the license (ex. Golang, C#)
<jhass> though if you have a real world issue at hand on which we can discuss a relicensing, that's surely on the table from my side
<libman> "Condition 3 of both the Apache License 1.0 and Apache License 1.1 violates point 3. Free Modification and Derivation of the Copyfree Standard Definition by specifying conditions (beyond licensing) that must apply to modifications."
<jhass> but at this point I'm not sure if it's worth it on purely philosophical standpoints
<libman> "Section 4, subsections 2 and 4 of the Apache License 2.0 violate point 3. Free Modification and Derivation of the Copyfree Standard Definition by specifying conditions (beyond licensing) that must apply to modifications."
<libman> "Alternatives: COIL, MS-PL"
<BlaXpirit> RX14, mmm great example
<RX14> BlaXpirit, should I submit it?
pawnbox has joined #crystal-lang
<libman> I agree that Apache license is not AGPLv9, but you have to draw a line somewhere, and I think the Copyfree Standard (which I didn't come up with) is a good one.
<BlaXpirit> RX14, ok
<RX14> done
<jhass> libman: again, I'm curios to learn about a real world usecase which our license makes impossible, but in the lack thereof I don't see much value in the discussion
<libman> I know I only speak for a small minority of people, but Crystal is still "alpha" as the Web-site says - it would be easier to change the license now than later.
<jhass> and most ideally a real world usecase you're actually facing
<jhass> libman: I can only repeat myself, I don't see discussion on mere philosophical standpoints as possibly constructive in this area of things, I'm happy to discuss it on real world challenges though
apotheon has joined #crystal-lang
soveran has quit [Remote host closed the connection]
<libman> Please pardon my ignorance: does Crystal have a BDFL? Who chose the Apache License?
pawnbox has quit [Remote host closed the connection]
<RX14> libman, i think asterite is pretty much the de facto project lead
* libman bows to asterite
pawnbox has joined #crystal-lang
<RX14> asterite and waj were there from the beginning, but waj isnt around as much any more and i think it was asterite's idea
pawnbox has quit [Remote host closed the connection]
<libman> The choice of license says a lot about a project - its psychology, its culture
<jhass> what does choosing apache 2.0 say then?
<jhass> let's take this out of the abstract already
<libman> Pretty much all new languages use the BSD or MIT license (Go, Nim, etc - and now C#). It's clean and efficient.
<jhass> good, you continue to ignore my questions, I think until then I'll ignore you too ;)
pawnbox has joined #crystal-lang
soveran has joined #crystal-lang
soveran has quit [Changing host]
soveran has joined #crystal-lang
<apotheon> When I see a project using ALv2, I think it's probably a project whose "owners" (maintainers, whatever) wanted certain license characteristics and heard ALv2 has those characteristics -- usually "permissive" and "patent clause".
<apotheon> It also suggests to me one of two things: either run by developers who don't like to think too much about licensing (and who can blame them?) or run by an organization with a lot of lawyers who fear too much permissiveness in legal documents.
<apotheon> . . . but I have no idea what libman might think about the culture suggested by ALv2.
<jhass> before you joined I asked libman what real world impacts choosing ALv2 has, which real world usecases are prevented by it, I think that's the level where a fruitful discussion about this topic is possible, else I'm not sure it's worth to pursue
<apotheon> Oh, by the way -- hi. Crystal looks interesting. I'm a professional developer who spends a lot of time in Ruby.
<apotheon> Ah, the biggest problems I could imagine for ALv2 are related to license compatibility and other legal complications.
<apotheon> Maybe I could imagine more if I tried really hard, but that's what comes to mind now, anyway.
<libman> To be honest, I don't know much about what Crystal can do. I'm a Nim fan. Nim switched to MIT license due to concerns about embedded code - which, to be honest, I do not fully understand.
<libman> These "known unknowns" about license issues are a practical matter in of themselves.
soveran has quit [Remote host closed the connection]
<apotheon> I can think of two ways license compatibility could cause problems for "embedded code". One is a restrictive license on libraries, so that you could have problems with certain licensing conflicts when compiling or when writing strictly dependent/deritivative code.
<apotheon> The other is when embedding the runtime itself, or when the runtime has to compile in some runtime support for metaprogramming purposes or something like that, which can create exactly the same problems.
<jhass> my concern is that we have many contributors already, so relicensing is at this point too quite some effort already. So I'd like to be very confident that's very necessary
<BlaXpirit> apache license is just too complex, that's the problem
<BlaXpirit> but, what jhass says
<dunpeal> What's the problem with Apache 2?
<apotheon> Balance the difficulty of relicensing now against your certainty you won't need to relicense in the future, I guess. If you're sure your license choice won't ever cause problems in the future, you don't have to worry about (making up numbers here) whether it's hard to relicense now when there are thirty contributors.
<apotheon> If you're not certain about that, though, you have to consider whether you'll have to deal with the same problem with 500 contributors several years later.
<apotheon> dunpeal: There are several problems with ALv2, key among them being license incompatibility issues and some weird legal requirements that are easy to accidentally violate.
dunpeal has left #crystal-lang [#crystal-lang]
<apotheon> jhass: I actually found Crystal pretty interesting some time ago when I first stumbled across it, but moved on when I saw the license. It swam into my field of vision again in the last few days, though.
<apotheon> libman: COBOL . . . ? Ouch.
<jhass> apotheon: given your background I'm not sure that's something we can generalize from though :)
<apotheon> My background . . . ?
<apotheon> I think you lost me.
<jhass> copyfree/founder/
<apotheon> ah
<apotheon> Well . . . much of the reason I hold the opinions I hold is that I actually started paying attention to the licenses on the software I use, to which I contribute, and so on, and realized I could accidentally get myself in a lot of legal trouble working with much of the software out there without even realizing it.
cgt has joined #crystal-lang
<apotheon> It's not like I reject everything that doesn't have a copyfree license for my own use. If there's some piece of software that is clearly superior to anything else I've had time to try, I might just use it, even if it has a license I don't like. I don't want to expose myself to legal issues or throw my code into a black hole of license restrictions, though.
<apotheon> Take that for what it's worth, I guess.
<jhass> anyway, IRC might be a bit too transient for this discussion, if you feel strong enough about it I would recommend to open a github issue with a summary of the why, where to and why there
<apotheon> That's reasonable.
<apotheon> I might do that if I remember after work. I should go back to writing Ruby for my employer for a while. . . .
<apotheon> jhass: Nice to "meet" you. I take it you're pretty involved in the Crystal project, somehow.
<jhass> one could say that, yeah :) Nice to meet you too
<apotheon> jhass: How are you involved? Do you have a commit bit? Are you Lord High Executioner for the IRC community? I'm curious about your involvement.
<FromGitter> <mverzilli> see: https://github.com/crystal-lang, he's one of 5 core Crystal team members
<jhass> yes, I do have the commit bit, mostly catering about stdlib related issues, taking part in the discussions on where we should move, a bit evangelizing perhaps. And I guess you could say yes for the latter too ;)
<apotheon> FromGitter: thanks
<FromGitter> apotheon, I'm a bot, *bleep, bloop*. I relay messages between here and https://gitter.im/crystal-lang/crystal
<apotheon> Bots aren't as polite as they once were. It didn't even say "You're welcome."
<apotheon> Kids these days.
<jhass> complain to BlaXpirit :P
<apotheon> heh
Oliphaunte has quit [Remote host closed the connection]
<apotheon> I'm overdue for telling someone to get off my lawn. I think I need to do that a few times a year to maintain my curmudgeon status.
<FromGitter> <6ewis> I'm impressed how far you guys came. I remember when crystal got started and the irc channel was a few people
<jhass> or better yet make a pull request I guess :P https://github.com/BlaXpirit/critter/blob/master/critter.cr#L52
<apotheon> nice
<apotheon> Are you a developer in Real Life?
<FromGitter> <6ewis> any production app ?
<jhass> finished studies, looking for a job
<jhass> 6ewis a couple, mostly internal tools or small glue things
<FromGitter> <6ewis> @jhass you're looking for a job?
<jhass> yes
<FromGitter> <6ewis> @jhass you should be fine, your ruby is not too bad and there are gazillions of ror jobs
<jhass> but still a bit picky, I'd like something not remote in berlin if possible ;)
<FromGitter> <6ewis> How does crystal compare to GO in terms of strengths and weaknesses
<apotheon> Oh, Berlin. I can't help you there.
<jhass> uh, that's a rather broad question
<jhass> I guess one weakness is not being backed by Google
<apotheon> I'm curious about memory management in Crystal.
<jhass> one strength is non terrible syntax :P
<FromGitter> <6ewis> concurrency?
<jhass> basically same approach
<FromGitter> <6ewis> functional paradigm?
<jhass> apotheon: GC'd and it's likely here to stay. Currently just bdwgc but mid-term goal is something precise and custom
<apotheon> If I can get some memory management guarantees related to clearing RAM and preventing memory swapping in some cases, I might use it for some projects I was thinking of writing in Rust, Go, or C instead.
<jhass> well, it's in theory possible to go back to manual memory management, it's just nothing the language tries to make easy or help you with in any way
<apotheon> jhass: Go is GCed, but there are apparently ways to get some memory management guarantees almost equivalent to what C and Rust can offer, bypassing the dynamic memory handling issues normally associated with GC.
<jhass> 6ewis not any more than ruby, but also not any less
<apotheon> jhass: Nim, on the other hand, doesn't seem to offer any way to force those guarantees, so it's not suitable to some use cases involving sensitive data.
<FromGitter> <6ewis> jhass any plans to work on a framework like phoenix or rails?
<jhass> there are many projects experimenting with webframeworks, most popularly currently kemal, which mimics sinatra, perhaps a bit more than that
<jhass> there are two rails like approaches, let me dig them up
<apotheon> Ruby is *really* well-suited to a lot of functional paradigm work, so that's pretty good. I usually end up writing a lot of methods in a functional style in Ruby, and Ruby blocks as callbacks are pretty awesome convenience benefits for a functional style.
<FromGitter> <6ewis> very very interesting
<jhass> I think https://github.com/Codcore/amethyst is dead
<jhass> https://github.com/startram/startram never has seen much development I guess
pawnbox has quit [Remote host closed the connection]
soveran has joined #crystal-lang
soveran has quit [Changing host]
soveran has joined #crystal-lang
pawnbox has joined #crystal-lang
<FromGitter> <sdogruyol> @6ewis I can guarantee that @jhass is a great developer
<FromGitter> <sdogruyol> @jhass you were talking about this page right? https://github.com/crystal-lang/crystal/wiki/Used-in-production
<jhass> yes!
<RX14> hmm
<RX14> i'm wondering how power assert could be sped up
<RX14> i have a feeling that reducing the amount of code generated would help quite a lot
<FromGitter> <sdogruyol> I will add Protel when I get home
<jhass> great
<RX14> and type analasis takes quite a time with asterite's microbenchmark
<FromGitter> <sdogruyol> And soon there will be great news about Protel and Crystal :)
<jhass> if you remember anybody else that could be listed there it would be great if you could mention it to them ;)
<RX14> so i think if there was some way to serialise the AST to json then performance could be improved a lot
<FromGitter> <sdogruyol> I have at least 2 more for that list @FromIRC
<jhass> nice
<RX14> @sdogruyol, are you hinting about a big announcement from protel about crystal?
pawnbox has quit [Read error: Connection reset by peer]
pawnbox has joined #crystal-lang
Oliphaunte has joined #crystal-lang
<libman> Go isn't really backed by Google - not in the sense that Java and .NET were once backed by their corporate sugar-daddies. (Apple's backing of Swift remains to be seen.)
Oliphaunte has quit [Ping timeout: 250 seconds]
* BlaXpirit rolls eyes
<libman> I guess eating your own dogfood isn't hip anymore.
<apotheon> libman: Google just has a strong tradition of being very lukewarm about its own products.
<libman> apotheon: You remember my rant about finding out that Google is making heavy use of TypeScript. In Japan of two generations ago the Dart Team would cut their stomachs open over this.
<FromGitter> <6ewis> Google use TypeScript?
<FromGitter> <6ewis> oh ya the angular team
<FromGitter> <6ewis> can't wait to see crystal two years from now
<FromGitter> <6ewis> it's going places
soveran has quit [Remote host closed the connection]
onethirtyfive has joined #crystal-lang
aarongodin has joined #crystal-lang
soveran has joined #crystal-lang
soveran has quit [Ping timeout: 258 seconds]
<libman> Crystal did a number of things better than Nim, but the license is a deal-breaker for me. Also, I never liked Ruby's syntax. Too much "end" lines eating away vertical screen-space.
<libman> Purely as a thought experiment, I sometimes think about making a few tweaks to the Ruby syntax from Python and Perl.
<libman> No quotes around require arguments, default interator names, and off-side-rule for blocks.
<Papierkorb> the end's are useful as visual indicator to quickly skip whole blocks while reading
<Papierkorb> libman: what's wrong with the Apache license? It's not proprietary and nothing invented on their own
Oliphaunte has joined #crystal-lang
<libman> There are some restrictions that create legal uncertainties - see http://copyfree.org/standard/rejected - many businesses comparing Crystal to say Go or Nim will need to waste a bit of money understanding if those restrictions would affect them. Just one more thing to worry about.
pawnbox has quit [Ping timeout: 276 seconds]
pawnbox has joined #crystal-lang
<FromGitter> <jwoertink> Hey, got a question about private shards
<FromGitter> <jwoertink> I have a shard I'm using in a project, and both the project and the shard are private git repos
<FromGitter> <jwoertink> When I push the project up to cirlcle-ci, it fails because it doesn't know how to fetch the private shard
<FromGitter> <jwoertink> This isn't a bug or anything, because I have the same issues in ruby. I'm just curious if anyone else has run in to this, and thoughts on solutions
<FromGitter> <sdogruyol> Just add your private key to circle ci
<FromGitter> <sdogruyol> I mean it needs to access the repo with a valid key pair
<FromGitter> <jwoertink> like my `id_rsa` private key?
<jhass> well I would create a separate deploy key, but yeah
<FromGitter> <sdogruyol> Yeah
<FromGitter> <sdogruyol> And definitely having a circlecikey
<FromGitter> <sdogruyol> Would be easier to manage and meaningful
<FromGitter> <jwoertink> That's a good point. I've never done that, so I'll need to look in to that
<FromGitter> <sdogruyol> We do use that setup at work
<FromGitter> <jwoertink> nice! Thanks :D
<FromGitter> <sdogruyol> @jhass I have updated the wiki
<jhass> awesome, thank you
<FromGitter> <jwoertink> Sweet! That worked. Thanks, guys!
<FromGitter> <sdogruyol> You're welcome
pawnbox has quit [Ping timeout: 276 seconds]
<FromGitter> <sdogruyol> I am gonna ask my friend tomorrow they are also using Crystal in production
<FromGitter> <sdogruyol> Doing VOIP stuff pretty cool
<jhass> nice
<FromGitter> <sdogruyol> Wow Crystal is on Github trending list
<FromGitter> <sdogruyol> Awesome
matp_ has joined #crystal-lang
matp has quit [Ping timeout: 258 seconds]
_kfpratt has joined #crystal-lang
kfpratt has quit [Ping timeout: 258 seconds]
the_drow_ has quit [Quit: This computer has gone to sleep]
mkl0501 has joined #crystal-lang
<FromGitter> <jwoertink> I saw some talk about how JSON::Any#select doesn't really work if the object is more like `{"a": 1}` since it only yields the keys. Has there been any talk about this issue with `YAML::Any`?
<FromGitter> <jwoertink> I didn't see any issues posted
<mkl0501> Hello. Does anyone know if there is a way to web scraping in crystal? Anything similar to the mechanize library in Ruby?
<jhass> XML in the standard library is a libxml2 binding, so should parse HTML too
<jhass> HTTP::Client doesn't support session tracking (yet), so that's something you'd need to do by hand if necessary
<BlaXpirit> mkl0501, honestly seems like crystal is not a good bet for scraping
<BlaXpirit> no performance advantage and seems like nobody's done it
<mkl0501> Ok. Thank you both. I want to use crystal for my next project, but I need to interact with an external site. But I may still play around with crystal for fun!
<RX14> there would be a performance advantage
<RX14> but it might not be worth it for having to use libxml2 :P
onethirtyfive has quit [Remote host closed the connection]
<jhass> I'm trying to get Yorick to port Oga to Crystal but he won't budge :P
scottj has joined #crystal-lang
<mkl0501> bummer
Oliphaunte has quit []
<RX14> jhass, why does he say no?
<jhass> More interested in Rust I guess
<RX14> oh it uses ragel
<BlaXpirit> i can only imagine how much fun xml is in rust
<BlaXpirit> travis ci makes me sad though. still no proper support for ubuntu 14.04, and they even outright denied the possibility of supporting 16.04 in the near future
<jhass> Yeah, I guess it's best to do the gitlab CI approach and just run everything inside docker if you need anything recent or complex
garbaz has joined #crystal-lang
<BlaXpirit> you make it sound so east
<BlaXpirit> y
<BlaXpirit> i don't mind running on my server if i can ensure security and it's not too complicated
<BlaXpirit> if you have any good links for a beginner, I'd appreciate it
<BlaXpirit> is gitlab ci tied to gitlab?
libman has left #crystal-lang [#crystal-lang]
<jhass> Not sure how much
<jhass> On my phone, so can't be bothered to look it up
<jhass> But I think I've seen one or two solutions more with the same approach
<jhass> which definitely were not
<jhass> buildbot or so? I think the powerdns folks use it
<jhass> Note you can run docker on travis too
<RX14> yeah but the vms take longer to start
<RX14> i really wish concourse ci was easier to deploy
<RX14> last time i tried to deploy a concourse ci worker it unmounted /proc
<BlaXpirit> I don't know docker anyway, and there is no straightforward information
<RX14> which broke everything
<RX14> at least it was a VM
<RX14> BlaXpirit, straightforward info about docker? or on travis?
<BlaXpirit> how to simply run a different OS on travis and keep the rest the same
<jhass> You can inspect how I set it up for the crystal repo
<RX14> well
<RX14> you wouldn't really be running a whole OS
<jhass> The dockerfiles are on my Gihub
<RX14> you should really learn docker its quite useful
<BlaXpirit> i get it but it makes no difference
<BlaXpirit> jhass, i had a glance but it made no sense, without knowing docker
<RX14> well if you want to use it for your CI you should learn it
<BlaXpirit> probably
<RX14> i mean its pretty wide spread these days you're going to have to use it sooner or later
<BlaXpirit> i mean all i want is a recent OS
<jhass> Do you know containers, lxc or systemd-nspawn?
<BlaXpirit> i get the concept but know nothing at all about these
<jhass> Docker is just a fancy wrapper and image/chroot builder and manager around that
<RX14> it also does networking and clustering and nice stuff like that
<BlaXpirit> good to confirm the guess i had
<jhass> Well it doesn't do it itself either
<RX14> docker is pretty much a monolithic deployment platform these days
<jhass> Again just configures lxc to do it
<RX14> no it doesnt
<RX14> docker hasnt used lxc since before 1.0
<RX14> also lxc doesn't touch multi-host networking
<FromGitter> <jwoertink> Just cloned the crystal language, and following the contributing guide. When running `bin/crystal spec/std_spec.cr`, I get an error `in ./src/fiber.cr:26: this 'initialize' doesn't explicitly initialize instance variable '@stack_top' of Fiber, rendering it nilable`.
<FromGitter> <jwoertink> Am I possibly missing something, or is this a real error?
<RX14> does bin/crystal say it's using the system crystal install?
<BlaXpirit> are you compiling latest master with latest release?
<jhass> You have 0.18.7 installed system wide?
<FromGitter> <jwoertink> yes, yes, yes
<RX14> bin/crystal -v ?
<FromGitter> <jwoertink> hmm.. interesting...
<FromGitter> <jwoertink> ```[15:38PM] lang (master)$ bin/crystal -v ⏎ Crystal 0.18.6 (2016-06-29)``` [https://gitter.im/crystal-lang/crystal?at=57a3c4c01c2bf6621bbd0797]
<RX14> and crystal -v?
<RX14> is 18.7?
<jhass> Using crenv?
<jhass> Run a make clean for good measure
<FromGitter> <jwoertink> I used homebrew to install
<FromGitter> <jwoertink> weird. I thought I was on 18.7, but looks like it's 18.6 on system wide
<FromGitter> <jwoertink> ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=57a3c5329e85d3e82687de55]
<FromGitter> <jwoertink> ah, there we go
<FromGitter> <jwoertink> ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=57a3c6b900663f5b1b4c01b1]
<FromGitter> <jwoertink> ```Finished in 4.84 seconds ⏎ 4257 examples, 0 failures, 0 errors, 2 pending``` [https://gitter.im/crystal-lang/crystal?at=57a3c7401c2bf6621bbd0daf]
<FromGitter> <jwoertink> wow! Great job, guys!
mounibec has joined #crystal-lang
Philpax has joined #crystal-lang
garbaz has left #crystal-lang [#crystal-lang]
mounibec has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
mounibec has joined #crystal-lang
<crystal-gh> [crystal] asterite pushed 1 new commit to master: https://git.io/v6msB
<crystal-gh> crystal/master a7aa936 Ary Borenszweig: Fixed #3096: compiler crash involving NoReturn on a method marked as returning Nil
mounibec has quit [Client Quit]
onethirtyfive has joined #crystal-lang
onethirtyfive has quit [Ping timeout: 260 seconds]
<FromGitter> <trishume> Just wanted to pop in and say I love the Crystal compiler code! Super clean, well-commented and easy to understand.
enygmata has joined #crystal-lang
<FromGitter> <jwoertink> When I try to convert YAML to a hash, then assign to an instance variable, it throws this error:
<FromGitter> <jwoertink> ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=57a3d23747659bfb108fb70a]
<FromGitter> <jwoertink> If I add to that line `@data = YAML.parse("a: 1").as_h as Hash(YAML::Type, YAML::Type)` then it works fine
<FromGitter> <jwoertink> but that method is already specified as `def as_h : Hash(Type, Type) `. Shouldn't that be enough?
<FromGitter> <jwoertink> I'm sort of itching to contribute back to the language, but my main issue is I never know which errors are by design, and which ones are actually bugs >_<
<travis-ci> crystal-lang/crystal#a7aa936 (master - Fixed #3096: compiler crash involving NoReturn on a method marked as returning Nil): The build passed. https://travis-ci.org/crystal-lang/crystal/builds/149904252
<enygmata> guys i noticed you have special syntax for libraries and saw that you need some annotations, is there a way to use the 'lib' thing with a dlopen()ed library?
onethirtyfive has joined #crystal-lang
pawnbox has joined #crystal-lang
onethirtyfive has quit [Remote host closed the connection]
pawnbox has quit [Ping timeout: 252 seconds]
<FromGitter> <trishume> @jwoertink As it happens I was just reading the "Type Inference" section of the language docs. That behaviour is specified, there's a list of cases it can infer the type of an instance variable.
<FromGitter> <trishume> It can infer annotated class methods but not instance methods, it doesn't give a specific reason why not annotated instance methods though.
<FromGitter> <jwoertink> Yeah, but the method signature already says that it returns a `Hash(Type, Type)`. I would think that I shouldn't have to re-specify that
<FromGitter> <jwoertink> Assigning that same exact line to a local variable works as expected though
<FromGitter> <jwoertink> `data = YAML.parse("a: 1").as_h` works fine