ChanServ changed the topic of #crystal-lang to: The Crystal programming language | http://crystal-lang.org | Crystal 0.32.1 | Fund Crystal's development: http://is.gd/X7PRtI | GH: https://github.com/crystal-lang/crystal | Docs: http://crystal-lang.org/docs/ | API: http://crystal-lang.org/api/ | Gitter: https://gitter.im/crystal-lang/crystal
Nicolab has quit [Ping timeout: 240 seconds]
melthelesbian has joined #crystal-lang
Nicolab has joined #crystal-lang
ur5us has joined #crystal-lang
melthelesbian has quit [Read error: Connection reset by peer]
melthelesbian has joined #crystal-lang
<FromGitter> <Nicolab> It works without the ALIAS_MAP :)
<FromGitter> <Nicolab> with `.as(Proc({{ *args.map { |v| "typeof(#{v})".id } }}, Bool))`
<FromGitter> <Blacksmoke16> was the example i gave earlier yea
<FromGitter> <Nicolab> Yes
<FromGitter> <Nicolab> Thank you very much!
<FromGitter> <Blacksmoke16> mhm
<FromGitter> <Nicolab> For the addition of custom validator, if the type is not defined in the lib it's dead. You see a solution to redefine `@@validators = Hash(Symbol | String, ProcTypes).new`? ⏎ Otherwise not too serious, it works, that's the main thing.
<FromGitter> <Blacksmoke16> thats where the map would come in
<FromGitter> <Nicolab> I couldn't redefine it when I tested it.
<FromGitter> <Nicolab> nor added
<FromGitter> <Blacksmoke16> sec
<FromGitter> <Blacksmoke16> https://play.crystal-lang.org/#/r/8eru is what i was thinking
<FromGitter> <Blacksmoke16> but seems there is a but related to using a macro defined in a `macro finished` hook
confact has quit [Ping timeout: 245 seconds]
Liothen has quit [Ping timeout: 260 seconds]
melthelesbian has quit [Ping timeout: 260 seconds]
<FromGitter> <Nicolab> Ok, I'll keep the link handy
<FromGitter> <Nicolab> Well, the main thing is, we're callbacking. For custom validators with types I didn't define, it will be for the future.
issyl0 has quit [Ping timeout: 272 seconds]
OvermindDL1 has quit [Ping timeout: 272 seconds]
jetpack_joe has quit [Ping timeout: 272 seconds]
<FromGitter> <Nicolab> Thank you again for your precious help. I'll show you the result when I'm finished and published.
<FromGitter> <Blacksmoke16> np, im not sold on the implementation yet so ill be interested to see how it turns out
<FromGitter> <Nicolab> Yes, of course. It's a base, which I can work on
<FromGitter> <Nicolab> An essential base
<FromGitter> <Nicolab> :)
<FromGitter> <Blacksmoke16> @tenebrousedge you'll prob have an opinion on this
<FromGitter> <Blacksmoke16> related to the serialization thing i was talking about earlier
<FromGitter> <tenebrousedge> I love having opinions
<FromGitter> <Blacksmoke16> should each format reopen the primitive types to add logic like
<FromGitter> <Blacksmoke16> ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=5e1fb5be51a9c24bafa1823d]
<FromGitter> <Blacksmoke16> or should i define a like struct that would contain the methods for that type
<FromGitter> <Blacksmoke16> im leaning towards the latter
<FromGitter> <tenebrousedge> a module, surely?
<FromGitter> <Blacksmoke16> that would also be one option
<FromGitter> <dscottboggs_gitlab> why not both?
<FromGitter> <dscottboggs_gitlab> ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=5e1fb63f32c2e05ecc4f36c4]
<FromGitter> <Blacksmoke16> hmm
<FromGitter> <tenebrousedge> `builder.number` seems a little odd. It can't detect the type?
<FromGitter> <dscottboggs_gitlab> different serialization formats will represent different types in different ways, it seems easier from an implementation standpoint for them to be separate
<FromGitter> <Blacksmoke16> ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=5e1fb6e18b53f6190abcf7f7]
<FromGitter> <Blacksmoke16> something like that then maybe?
<FromGitter> <dscottboggs_gitlab> I guess its the same either way once it compiles so ¯\\_(ツ)_/¯
<FromGitter> <Blacksmoke16> trying to make things in such a way where the logic is agnostic of the format
<FromGitter> <tenebrousedge> how many formats are you enabling?
<FromGitter> <Blacksmoke16> or at least centralized in a type specific to a given format
<FromGitter> <Blacksmoke16> JSON to start, YAML prob shortly after?
<FromGitter> <tenebrousedge> abstractions can be tricky. There was a line from HN the other day "two points make a line, but three points usually make a triangle"
<FromGitter> <Blacksmoke16> would be easier to only have to define two types per format
<FromGitter> <Blacksmoke16> versus handle probably duplicated logic if you had to reopen types
<FromGitter> <Blacksmoke16> but how would that work for an array, hmm
<FromGitter> <Blacksmoke16> because you wouldnt know the type of each value, but each value knows the type it is
<FromGitter> <tenebrousedge> recursion
<FromGitter> <tenebrousedge> if it's a primitive of some sort, serialize, if not, recurse
<FromGitter> <dscottboggs_gitlab> it could be an array of some `Any` union type that implemnts some interface
<FromGitter> <Blacksmoke16> ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=5e1fb87753fd014bb07c9485]
<FromGitter> <Blacksmoke16> is what the current implementation is
<FromGitter> <tenebrousedge> huh
<FromGitter> <Blacksmoke16> wait no i think it would work
<FromGitter> <Blacksmoke16> would be like
<FromGitter> <tenebrousedge> why not `builder.array self.map &.serialize builder, context`
<FromGitter> <Blacksmoke16> ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=5e1fb9508e073f465ffb7248]
<FromGitter> <Blacksmoke16> dont need to create an intermediate array
<FromGitter> <dscottboggs_gitlab> @tenebrousedge because the visitor only needs to visit each value, the return isn't important
<FromGitter> <Blacksmoke16> the array block just handles like writing the `[` and `]`
<FromGitter> <Blacksmoke16> while each primitive value gets written in the mean time
<FromGitter> <tenebrousedge> k
<FromGitter> <Blacksmoke16> keeping the primitive types clean is appealing to me, leaning towards that approach (names of things tbd)
<FromGitter> <Blacksmoke16> better idea
<FromGitter> <Blacksmoke16> ``` def visit(value : Number) : Nil ⏎ @builder.number value ⏎ end``` [https://gitter.im/crystal-lang/crystal?at=5e1fbacb4c1f9679ecf3136c]
<FromGitter> <Blacksmoke16> 😮
<FromGitter> <tenebrousedge> so then you can do what, something like ⏎ ⏎ `````` [https://gitter.im/crystal-lang/crystal?at=5e1fbb203ea53f0f662f32d5]
<FromGitter> <tenebrousedge> no, that wouldn't work
<FromGitter> <tenebrousedge> nvm me
<FromGitter> <dscottboggs_gitlab> something that's come up for me recently, does your serialization library offer a way to format the output in unique ways? For JSON and simpler formats like that, there are relatively few options, but YAML in particular offers a wide array of formatting, and being able to specify formatting rules that are very varied can be important. For example, what if you want a `to_json` method that produces
<FromGitter> ... something like this ⏎ ⏎ ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=5e1fbbed714883789880da01]
<FromGitter> <Blacksmoke16> https://play.crystal-lang.org/#/r/8esb
<FromGitter> <Blacksmoke16> @dscottboggs_gitlab this approach would allow you to inherit/implement your own visitor to handle that
<FromGitter> <Blacksmoke16> assuming the underlying builder supports that, i.e. `JSON::Builder`
<FromGitter> <Blacksmoke16> now how to handle like field/object
<FromGitter> <Blacksmoke16> make it part of the interface maybe?
<FromGitter> <Blacksmoke16> er new plan
alexherbo2 has quit [Remote host closed the connection]
alex`` has quit [Quit: WeeChat 2.7]
ur5us has quit [Ping timeout: 260 seconds]
<FromGitter> <Blacksmoke16> ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=5e1fce9ead195a0f6716a611]
<FromGitter> <Blacksmoke16> something like that is what im thinking
<FromGitter> <Blacksmoke16> ofc some way to set the visitor/use an IO etc
ur5us has joined #crystal-lang
Nicolab has quit [Quit: Leaving.]
Nicolab has joined #crystal-lang
<FromGitter> <Blacksmoke16> yea this is pretty slick
<FromGitter> <Blacksmoke16> should format be an enum or a module
<FromGitter> <Blacksmoke16> module would make it easier to add custom types since idt you can reopen an enum
Nicolab has quit [Quit: Leaving.]
martinium has joined #crystal-lang
<FromGitter> <Blacksmoke16> oh boy
<FromGitter> <Blacksmoke16> ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=5e1fe3d90dbd9379ed434eb6]
<FromGitter> <watzon> Wooo
<FromGitter> <watzon> You found an Easter egg
<FromGitter> <Blacksmoke16> one of those great ones where it only happens with other stuff going on :/
duane has quit [Ping timeout: 240 seconds]
ur5us has quit [Ping timeout: 260 seconds]
martinium has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
jetpack_joe has joined #crystal-lang
jetpack_joe has quit [Max SendQ exceeded]
jetpack_joe has joined #crystal-lang
jetpack_joe has quit [Ping timeout: 245 seconds]
jetpack_joe has joined #crystal-lang
confact has joined #crystal-lang
Liothen has joined #crystal-lang
issyl0 has joined #crystal-lang
melthelesbian has joined #crystal-lang
ht_ has quit [Quit: ht_]
yukai has quit [Ping timeout: 272 seconds]
fireglow has left #crystal-lang ["puf"]
ur5us has joined #crystal-lang
<repo> wasn't there a list of c deps for crystal stdlib somewhere?
<FromGitter> <watzon> repo go to the install page on the Crystal site, select install from source, and then click on the link to dependencies
<FromGitter> <watzon> It links to the GitHub wiki I believe
<repo> thanks!
<repo> now that (i think) i have installed all deps, i get pthread_start.c:(.text+0x51): undefined reference to `__pthread_register_cancel'
<repo> i'm using the packaged binary release with the bundled static libgc
<repo> (on alpine)
<repo> j8r: any ETA for a 0.32.x alpine image? :)
<repo> ah ic libgc is shipped for the multithreading
<FromGitter> <j8r> I have pinged @jirutka https://github.com/crystal-lang/crystal/issues/8629
<repo> j8r: ic
<repo> made it work like this: https://p.jokke.space/vZwb/
<FromGitter> <j8r> There is already an official Alpine image that does it, which will be available soon
<FromGitter> <j8r> mines would remain as native as possible
Nicolab has joined #crystal-lang
ur5us has quit [Ping timeout: 260 seconds]
<repo> oh nice!
<repo> can't wait!
<FromGitter> <straight-shoota> repo, technically you don't have to wait: `ci-test-dev-alpine` tag is already publicly available.
<FromGitter> <j8r> We can't do more production-ready as a name 😄
<FromGitter> <straight-shoota> xD
SiinaCutie has left #crystal-lang ["The Lounge - https://thelounge.chat"]
duane has joined #crystal-lang
<FromGitter> <j8r> I got an issue with `~/.cache/crystal` with a `libevent-2.1.so.6` not found, so I deleted it and got it compile
<FromGitter> <j8r> I have `libevent-2.1.so.7`
Nicolab has quit [Quit: Leaving.]
flaviodesousa has joined #crystal-lang
Human_G33k has joined #crystal-lang
HumanG33k has quit [Ping timeout: 240 seconds]
duane has quit [Ping timeout: 265 seconds]
alexherbo2 has joined #crystal-lang
alex` has joined #crystal-lang
alex` is now known as Guest49984
alexherbo2 has quit [Quit: The Lounge - https://thelounge.chat]
alexherbo2 has joined #crystal-lang
Nicolab has joined #crystal-lang
Guest49984 is now known as alex``
Nicolab has quit [Quit: Leaving.]
Nicolab has joined #crystal-lang
<FromGitter> <Nicolab> @Blacksmoke16 ⏎ ⏎ Oh shit! I have finally found a simple solution which get the job done ("Is it possible to dynamically call methods from a module?"). ⏎ ⏎ ```code paste, see link``` ... [https://gitter.im/crystal-lang/crystal?at=5e208885a1dfaa3ba12d276d]
<FromGitter> <Blacksmoke16> whats the point of the macro?
<FromGitter> <Blacksmoke16> `hello "It's Gooood!"`
<FromGitter> <Nicolab> dynamically call methods from a module
<FromGitter> <Blacksmoke16> it wont let you do that
<FromGitter> <Blacksmoke16> since macros expand at compile time
<FromGitter> <Nicolab> yes it works
<FromGitter> <Blacksmoke16> mmmm you sure?
<FromGitter> <Nicolab> sure
<FromGitter> <Blacksmoke16> so like if i do a request `POST /run/hello` you could use the `hello` value to run that method?
<FromGitter> <Blacksmoke16> (or some other way of supplying the value at runtime)
<FromGitter> <Nicolab> no
<FromGitter> <Blacksmoke16> right, so its not dynamic
<FromGitter> <Blacksmoke16> would help with your `validate` macro
<FromGitter> <Blacksmoke16> as it could expand the correct method, but would only really be an abstraction of defining the method yourself
<FromGitter> <Nicolab> Oops. I meant yes.
<FromGitter> <Blacksmoke16> im 99% sure that you cant, because thats not how macros work
<FromGitter> <Blacksmoke16> got an example of it working like that?
<FromGitter> <Nicolab> that's what I'd like to do, it doesn't block the possibility of adding validators.
<FromGitter> <Blacksmoke16> not sure i follow
<FromGitter> <Blacksmoke16> like to be clear the `run` macro wouldnt work if you did like
<FromGitter> <Blacksmoke16> ```method = "hello" ⏎ ⏎ run method, "Hello World"``` [https://gitter.im/crystal-lang/crystal?at=5e208a7f0dbd9379ed47fcf3]
<FromGitter> <Blacksmoke16> er that would, but not if the value originates at runtime
OvermindDL1 has joined #crystal-lang
<FromGitter> <Nicolab> It's the same as before, except it's not through hash (no big union, register, etc).
<FromGitter> <Blacksmoke16> maybe im missing something but what is the benefit versus just calling the method on your own?
<FromGitter> <Nicolab> dynamically call methods withe the rule name
<FromGitter> <Blacksmoke16> https://play.crystal-lang.org/#/r/8exx also only works since you hardcode the method names
<FromGitter> <Nicolab> it's for a validator
<FromGitter> <Blacksmoke16> which will be fine for your `validate` macro
<FromGitter> <Blacksmoke16> yea
<FromGitter> <Blacksmoke16> > dynamically call methods withe the rule name ⏎ ⏎ I assuming you're going to add more logic to the `run` macro?
<FromGitter> <Blacksmoke16> like why not just do `add 1,2` or `hello "foo"`
<FromGitter> <Nicolab> Hmm good catch
<FromGitter> <Blacksmoke16> mhm, because in reality you're not dynamically calling them (since the method names are hard coded)
<FromGitter> <Blacksmoke16> in order to truly call them dynamically i think you would have to have to do like
<FromGitter> <Nicolab> > I assuming you're going to add more logic to the run macro? ⏎ Originally I wanted to put out the macro but it's falling apart.
<FromGitter> <Blacksmoke16> ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=5e208f970289c83ba2ab34e4]
<FromGitter> <Nicolab> How to add a validator from outside? Bu inheriting?
<FromGitter> <Nicolab> (with a case)
<FromGitter> <Blacksmoke16> could build out the case using an macro and annotation
<FromGitter> <Blacksmoke16> like annotate the validator methods
<FromGitter> <Blacksmoke16> or just assume every method in the module is one
<FromGitter> <Blacksmoke16> every public one maybe, and can use protected/private for internal helpers
<FromGitter> <Nicolab> annoying not to be able to have the value of the variable passed as an argument of the macro...
<FromGitter> <Blacksmoke16> the variable doesnt exist when you run the macro
<FromGitter> <Blacksmoke16> since macros are compile time while variables are runtime
<FromGitter> <Nicolab> each method in the module is a validator
<FromGitter> <Nicolab> Ok
<FromGitter> <Nicolab> the false joy lol
<FromGitter> <Nicolab> I will try to build the case method from the finished macro.
<FromGitter> <Nicolab> Otherwise I keep the hash and the big union...
<FromGitter> <Blacksmoke16> https://play.crystal-lang.org/#/r/8eyk was the case idea, but seems that has an issue with splats :shrug:
<FromGitter> <Nicolab> yes, indeed. Convention 4 arguments max :D
<FromGitter> <Nicolab> no https://play.crystal-lang.org/#/r/8eym ^^
ht_ has joined #crystal-lang
flaviodesousa has quit [Quit: KVIrc 4.9.3 Aria http://www.kvirc.net/]
duane has joined #crystal-lang
ur5us has joined #crystal-lang
ur5us has quit [Ping timeout: 260 seconds]
JuanMiguel has joined #crystal-lang
<FromGitter> <Blacksmoke16> @j8r / @straight-shoota whats the diff between `ci-test-dev-alpine` and `ci-test-dev-alpine-build`?
ur5us has joined #crystal-lang
<FromGitter> <Blacksmoke16> latter used meant to be used for building static binaries?
<FromGitter> <nothratal> Hello together
<FromGitter> <nothratal> I know how to overload methods, I also know how to "extend" classes (just by defining a class with the same name and adding methods) but can I also do this for structs? ⏎ Short: Extend built-in structs?
<FromGitter> <christopherzimmerman> Yes, you can. I do it for numbers so that I can override arithmetic with custom types.
<FromGitter> <christopherzimmerman> Here is where I do it (https://raw.githubusercontent.com/crystal-data/num.cr/master/src/extensions/number.cr), messy, but works.
<FromGitter> <christopherzimmerman> One problem that you might be running into is trying to extend the types inside a module, which doesn't work AFAIK, since it will treat it as a different type.
<FromGitter> <tenebrousedge> not sure how you tried to do that, but it should be possible
<FromGitter> <tenebrousedge> ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=5e20cd438e073f465f02f2a1]
<FromGitter> <Blacksmoke16> could you not just define it on `Number`?
<FromGitter> <tenebrousedge> what doesn't work is `module A::B; def self.bar; "quux"; end; end`
<FromGitter> <Blacksmoke16> should also be able to do
<FromGitter> <tenebrousedge> not if `B` is a struct
<FromGitter> <Blacksmoke16> ```def A::B.bar ⏎ "quux" ⏎ end``` [https://gitter.im/crystal-lang/crystal?at=5e20cd82dd1429262d39028e]
<FromGitter> <tenebrousedge> o___o
<FromGitter> <tenebrousedge> nope
<FromGitter> <Blacksmoke16> oh?
<FromGitter> <tenebrousedge> ```code paste, see link``` [https://gitter.im/crystal-lang/crystal?at=5e20cde25cd796466060e3fa]
<FromGitter> <tenebrousedge> wait
<FromGitter> <tenebrousedge> okay
<FromGitter> <tenebrousedge> I typed what you typed, but I was using `foo` and you used `bar`
<FromGitter> <Blacksmoke16> oops :p
<FromGitter> <tenebrousedge> nbd
<FromGitter> <tenebrousedge> but interesting
<FromGitter> <Blacksmoke16> easier syntax if you just want to define a single class method on a type
Nicolab has quit [Quit: Leaving.]
<FromGitter> <tenebrousedge> o___o not so far
<FromGitter> <nothratal> Thanks for that fast input! That should make possible what I wanted to try out
<FromGitter> <Blacksmoke16> https://play.crystal-lang.org/#/r/8f0l
<FromGitter> <nothratal> this also works on abstract structs? like Number?
<FromGitter> <Blacksmoke16> yes, and would be available on its children
Nicolab has joined #crystal-lang
<FromGitter> <craysiii> Good day everyone, is it possible to hook into an on_open event for HTTP::Websocket? I’m trying to port over a rubygem I wrote which relies on eventmachine and faye/websocket, and I rely on on_open
<FromGitter> <Nicolab> @craysiii Seems to me there's no on_open in the HTTP::Websocket implementation
<FromGitter> <Nicolab> Maybe in a lower level (to the socket module)
<FromGitter> <tenebrousedge> you could maybe override `run`, throw your event, and call `super`
ur5us has quit [Ping timeout: 260 seconds]
<FromGitter> <Blacksmoke16> yea ⏎ ⏎ ```def run ⏎ on_open ⏎ previous_def ⏎ end``` [https://gitter.im/crystal-lang/crystal?at=5e20da8e714883789888cb92]
<FromGitter> <Blacksmoke16> would prob do it
<FromGitter> <tenebrousedge> or call a callback if you want to handle it that way; that's what `on_message` and `on_close` do
<FromGitter> <Blacksmoke16> er `super`
<FromGitter> <Blacksmoke16> might be worth an issue to add it?
<FromGitter> <Blacksmoke16> i dont really know anything about ws tho...
<FromGitter> <craysiii> I was going to create an issue but I wanted to check here first, didn’t want to waste anyone’s time
<FromGitter> <craysiii> But yeah I feel on_open would be a useful addition
<FromGitter> <tenebrousedge> well, feel free, it should only be a two-line PR
<FromGitter> <craysiii> I’ll check it out this weekend, I just got crystal installed, but excited to use it
<FromGitter> <Blacksmoke16> 👍 seems to be quite a few new faces in here lately :p
<FromGitter> <tenebrousedge> ``` def on_open(&@on_open : String ->); end ⏎ def run ⏎ @on_open.try &.call("") ⏎ ...``` [https://gitter.im/crystal-lang/crystal?at=5e20db7fc7647778a5d62976]
<FromGitter> <craysiii> You can thank a user in our ruby discord for me coming over :P
<FromGitter> <tenebrousedge> @craysiii what excites you about Crystal?
<FromGitter> <craysiii> Speed
<FromGitter> <tenebrousedge> 👍
<FromGitter> <craysiii> I love ruby, but I don’t like the direction that some things are going as well
<FromGitter> <tenebrousedge> example?
<FromGitter> <craysiii> I’m hesitant to upgrade to 2.7 because of how they are now handling named parameters etc
<FromGitter> <craysiii> Anyway, gotta go back to my boring IT job, I’ll be on later and looking to create that PR
<FromGitter> <craysiii> Thanks for the help
<FromGitter> <tenebrousedge> np
JuanMiguel has quit [Quit: This computer has gone to sleep]
<FromGitter> <Nicolab> @craysiii > go back to my boring IT job ⏎ ⏎ crystallizes the IT project :D
<FromGitter> <craysiii> Lol I wish, stuck with powershell at work
ht_ has quit [Ping timeout: 272 seconds]
<FromGitter> <Blacksmoke16> boo
<FromGitter> <tenebrousedge> Ruby's approach to named parameters seems a lot like Crystal
<FromGitter> <Blacksmoke16> what changed?
<FromGitter> <tenebrousedge> more generally: ⏎ https://rubyreferences.github.io/rubychanges/2.7.html
ht_ has joined #crystal-lang
<FromGitter> <Blacksmoke16> ah, yea seems how crystal does it
<FromGitter> <tenebrousedge> similar, maybe more restrictive
<FromGitter> <Blacksmoke16> granted in crystal you cant splat arrays/hashes anyway
ur5us has joined #crystal-lang
<FromGitter> <tenebrousedge> > Deprecations ⏎ $; and $, global variables (Perl ancestry: default split and join separators):
<FromGitter> <tenebrousedge> thank goodness
<FromGitter> <tenebrousedge> I felt bad about even knowing they existed
ht_ has quit [Remote host closed the connection]
<FromGitter> <tenebrousedge> but they're keeping the flip-flop notation. huh.
<FromGitter> <tenebrousedge> > “Safe” and “taint” concepts are deprecated in general
<FromGitter> <tenebrousedge> > Calling a private method with a literal self as the receiver is now allowed.
<FromGitter> <tenebrousedge> good changes
<FromGitter> <tenebrousedge> Refinements and the `method` method play nice now, excellent
<FromGitter> <tenebrousedge> and `irb` is now shinier and more like `pry`
duane has quit [Ping timeout: 268 seconds]
<FromGitter> <straight-shoota> @Blacksmoke16 It's the same as with the Ubuntu-based Docker images. `-build` images contains the necessary libraries for building the compiler, that is, primarily LLVM.
yukai has joined #crystal-lang
martinium has joined #crystal-lang
martinium has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]