<FromGitter>
<foi> Hi! How to set ignore ssl certificate errors for HTTP::Client (like unknown ca, expired)? In ruby - OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE, is crystal have this equivalent?
sz0 has quit [Quit: Connection closed for inactivity]
<FromGitter>
<drosehn> @bararchy : I sent a tweet to RubyMine about crystal support, and they said: *There's an open request. Please add your vote: https://youtrack.jetbrains.com/issue/RUBY-17225 *
<FromGitter>
<bararchy> Nice !!!!!
<FromGitter>
<bararchy> Cool dude
<FromGitter>
<drosehn> Note that that issue was opened in Oct 2015, and the only comment is someone who came along four months later and added some pointers to Crystal support in the Atom editor.
<FromGitter>
<bararchy> I added my comment, and my vote
<FromGitter>
<bararchy> we can Try and get more people voting
<FromGitter>
<bararchy> only 11 votes right now
<FromGitter>
<bararchy> we have 500~ people here in the gitter alone
<FromGitter>
<drosehn> very good :thumbsup:
<FromGitter>
<drosehn> it occurs to me that I should have posted that here sooner! I sent the tweet to them (and got the reply) about a month ago.
<FromGitter>
<bararchy> Oh :) no worries, I guess it only matters to those using there products
<crystal-gh>
[crystal] ysbaddaden opened pull request #4445: Use an Enum for process stdio redirections (master...fix-process-run-stdio-argument) https://git.io/vHTpz
<FromGitter>
<bararchy> @drosehn It seems we got something started, somelse just commented
splitty___ has joined #crystal-lang
splitty__ has quit [Ping timeout: 240 seconds]
<wuehlmaus>
Papierkorb: does your fancy_line have emacs bindings beyond control-a and control-e? didn't work for me in your Samples. do i have to roll my own?
<wuehlmaus>
i am talking about control-f, control-b , word jumping ....
<Papierkorb>
wuehlmaus: i only added those I commonly use for now. adding your own is simple, PRs extending the defaults are also interesting to me
<Papierkorb>
wuehlmaus: all ootb key bindings are listed in the README.md
<wuehlmaus>
fine, cool project that you did!!
<Papierkorb>
wuehlmaus: to me it was priority to 1) get it to a usable state (which it imho is) 2) implement few key bindings correctly instead of all somewhat. E.g., Word jumping, line editors don't seem to agree if it should be Ctrl+ or Alt+cursor by default. Of course, Alt is the correct choice, but maybe those programs I use are in the minority etc.
<Papierkorb>
There's also a commit lying dormant on my laptop adding right-prompt. But for that to work properly we need LibC::ioctl(), which doesn't exist, and ioctl() is so huge that I don't want to bind (and hence, maintain) it myself in the shard.
<Papierkorb>
ioctl() with proper support for all kinds of platforms
<wuehlmaus>
it is a super cool project, i really like it :)
<Papierkorb>
:)
<wuehlmaus>
coming from zsh i find plain readline a bit poor :) sadly zsh doesn't have their awesome readline replacement as a library.
<Papierkorb>
yeah I use zsh myself
<wuehlmaus>
haha :)
<FromGitter>
<bew> zle as library ? would be completly awesome ^^
<wuehlmaus>
totally! but nobody ever did it :(
<FromGitter>
<bew> Would also be awesome to make a CrSH shell in crystal, with configuration in crystal & everything in crystal...
<FromGitter>
<bew> I'm going crazy...
<Papierkorb>
fancylines tutorial will help you get there hehe
<FromGitter>
<molovo> @bew I’ve thought about doing exactly that a few times. I do a lot of ZSH development, but a lot of the stuff in the shell itself is a massive load of unnecessary bloat. It could be so much more performant
<wuehlmaus>
molovo: at least you can load modules or unload them. but i know what you mean.
<FromGitter>
<molovo> I can, but people using my stuff will more often than not be using the default installation, which means I have to support that default configuration
<wuehlmaus>
fish could be an alternative but then other stuff is missing ....
mounibec has joined #crystal-lang
<FromGitter>
<molovo> @wuehlmaus I’ve tried fish, I actually prefer the syntax, but it’s a long way behind ZSH. Being able to use Crystal and OOP in shell scripts would be epic, plus managing plugins/scripts as shards.
<FromGitter>
<bew> the flexibility of zsh + a real language would be :sparkles:
<FromGitter>
<molovo> cash (https://github.com/dthree/cash) was a pretty good start at a cross-platform shell built in node, but it’s kinda stagnated. Not a trivial project by any means
<FromGitter>
<molovo> Works natively on windows too
<wuehlmaus>
bew: and that's the problem: the flexibility of zsh means 25 years of work :)
<wuehlmaus>
and to come up with a replacement means LOTS of work at hand.
<Papierkorb>
Then start today (well, two months ago), than later ;)
<wuehlmaus>
good luck :)
<FromGitter>
<molovo> I don’t think all that flexibility is entirely necessary though. ZSH’s biggest problem is that almost everything it does is done to be compatible with KSH and CSH, which are both completely different. Actually just sticking with ‘The ZSH way’ and dropping all the old compatibility stuff would make it a lot leaner and encourage innovation
<wuehlmaus>
something like neozsh? :)
<wuehlmaus>
[ no, there is not a neozsh project]
<FromGitter>
<molovo> Yeah, perhaps. But you’d run into the same issues - people coming from ZSH would expect backwards compatibility, which means supporting KSH and CSH too. Actually starting completely afresh and using a proper language for the syntax would be a really good idea
<FromGitter>
<bew> I'd say, as crystal takes inspiration from ruby, crsh could take inspiration from zsh :)
<FromGitter>
<molovo> I like the name CrSH too, has a nice ring to it. Or crash, but that might be confusing
<wuehlmaus>
crash is funny :)
<FromGitter>
<bew> or crsh, but pronounced [crash] :P
<FromGitter>
<molovo> And just think how awesome it would be to use exceptions within shell scripts, instead of arbitrary numbers (I tried doing that in zsh, it... sorta works, and is called crash (https://github.com/molovo/crash) too)
<FromGitter>
<bew> oh nice!
<FromGitter>
<molovo> I might give a shell a go. It would be an interesting challenge
<wuehlmaus>
i am not talented enough to program that myself but i would support you!
<Papierkorb>
incidentally, I'll build a control shell thing for daemon controlling. daemons written in crystal, so nothing magical. Probably will use JSON-RPC as transport.
<FromGitter>
<bew> @Papierkorb don't get it, what are you thinking?
<Papierkorb>
bew, I've been writing daemons (services) in Crystal, and all of them have similar requirements. One of them is being able to be controlled from the outside, showing metrics, health checks, etc. I remembered that Asterisk* has a remote "shell", in which you can do all that, so I'll probably copy that idea.
<Papierkorb>
bew, and as you'd need a network transport for this, preferably standarized, easy, optionally stateful and securable, JSON-RPC sounds like a good idea.
<FromGitter>
<bew> nice!
<FromGitter>
<bew> about rpc system, I'm thinking about a msgpack-rpc implementation
<FromGitter>
<bew> (to build a neovim plugin host, allowing to write neovim plugins in crystal)
<FromGitter>
<bew> @Papierkorb I saw that you made cannon, which has a RPC module for your cannon serialization. Do you think it could be worth to take the RPC part, and make a special shard for the service/client, with generic serialization (JSON, cannon, msgpack, ...) from that ?
<Papierkorb>
bew, you mean splitting the rpc stuff from the pure serialization?
<FromGitter>
<bew> simply put, yes
<Papierkorb>
should be really easy. you have to require the rpc part manually already anyway
mounibec has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
Raimondii has joined #crystal-lang
mounibec has joined #crystal-lang
bjz_ has quit [Quit: My MacBook Pro has gone to sleep. ZZZzzz…]
Raimondi has quit [Ping timeout: 268 seconds]
Raimondii is now known as Raimondi
Val has left #crystal-lang [#crystal-lang]
<FromGitter>
<straight-shoota> Is it possible to use `has_constant?`on global scope? I want to check if `JSON::Any` exists (i.e. `json` is required somewhere).
<FromGitter>
<bew> why not simply `require "json"` ?
<FromGitter>
<straight-shoota> Well I don't need to if it is not required anywhere else...
<FromGitter>
<bararchy> It's a good practice to "require" what you need on any file that might need it to avoid dependency issues
<FromGitter>
<bararchy> the compiler will sort it out
<Papierkorb>
Put the json specific stuff into its own .cr file and require that
<Papierkorb>
You can re-open classes and modules as you see fit, so you can keep the non-json code paths completely unaware of the existence. Throwing it out is really easy too if needed. And integrating it is just a copy/paste away.
<FromGitter>
<straight-shoota> :+1:
mounibec has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
mounibec has joined #crystal-lang
Ven has joined #crystal-lang
Ven is now known as Guest7189
yogg-saron has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<Papierkorb>
iirc it doesn't collect everything on a single run. 3 times catches almost everything, 5 should really do it, but I use 10 in my unit tests if I need to test finalizers
<TheGillies>
I wonder if it's how playground handles GC
<TheGillies>
Anyone know if it's possible to infer what class put an object into a channel, or do I explicitly need to add that as meta data in the object?
<Papierkorb>
TheGillies: Send a Tuple with your object
<TheGillies>
like {FooClass, object} ?
* TheGillies
feels like he stepped into erlang :P
<Papierkorb>
Well probably `my_chan << {self, some_object}`
<Papierkorb>
With my_chan = Channel(Tuple(MySelfType, SomeObjectType)).new
<TheGillies>
Yeah righto thats what I meant to convey heh
<TheGillies>
>> would be a cool method for receive heh
Guest56196 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<FromGitter>
<akzhan> btw documentation for vsivility modifiers is outdated. There are only methods mentions. But it is more common technique.
<FromGitter>
<akzhan> I have seen private types, constants and enums afair
<FromGitter>
<mverzilli> thank you! I really like the defaults you chose... I just hope this doesn't result in soon-to-come issues discussing tabstops vs. spaces vs. tabs or how many spaces should go per indentation level
<FromGitter>
<akzhan> it’s just defaults. and crystal tool format also uses ‘em, afaik
monadicDuck has joined #crystal-lang
<FromGitter>
<mverzilli> yeah, I actually agree :)
<TheGillies>
Can you statically link c libs in crystal?
<FromGitter>
<akzhan> it should be easy, Link attribute has Static property. But it need to recompiler compiler itself.
<monadicDuck>
why is crystal so fast >_<!!!
<FromGitter>
<johnjansen> you could slow it down if you like … `sleeeeep` ;-)
<TheGillies>
because it uses llvm
<FromGitter>
<akzhan> btw we need option to compile all statically like golang. Whenever.
<FromGitter>
<akzhan> oops --link-flags -static
Ven_ has joined #crystal-lang
<FromGitter>
<akzhan> @mverzilli btw, #2989 should be merged
<FromGitter>
<akzhan> this is because we need any «not bad" man page on milestone
yogg-saron has joined #crystal-lang
yogg-saron has quit [Client Quit]
<Papierkorb>
a man page would be fantastic to have indeed
<RX14>
there's a PR but it seems to be stalled
<Papierkorb>
yeah akzhan just linked it
<FromGitter>
<mverzilli> yep, I
<FromGitter>
<mverzilli> sorry early enter :P
<FromGitter>
<mverzilli> I think we can merge it, for the reasons RX14 suggested in the comment thread, but someone should take it to a mergeable state again
Ven_ has quit [Ping timeout: 240 seconds]
<RX14>
is it not mergeable?
<TheGillies>
don't know if me or my generation but I never read man pages. I usually just read README in repo or web docs
<RX14>
that's assuming it has a repo
<TheGillies>
what code doesn't have a repo?
<TheGillies>
heh
<RX14>
uhh, everything created before the 90s
<RX14>
they just distributed tarballs
<RX14>
sent patches in lists
<RX14>
the good old way
<RX14>
man pages are very useful for syscalls, commandline tools
<Papierkorb>
Every good tool should have a man page
<RX14>
most people won't read crystal's man page because it has a github presence
Ven has joined #crystal-lang
<Papierkorb>
That's actually what a solid tool sets apart from a hipster tool for me, kid you not
<RX14>
but there is plenty of stuff out there where the man page is the only docs
<FromGitter>
<mverzilli> oh, it is mergeable, not rebaseable
Ven is now known as Guest27595
<FromGitter>
<akzhan> man page required because admins never read GitHub.
<FromGitter>
<mverzilli> ok! I'll merge it as soon as I find the time
<FromGitter>
<drosehn> The man page does not need to be long or exhaustive, but enough to give people a good start. And *NOT* point to some gnu-info document for all the important details!
<RX14>
god i hate those ones
<RX14>
gnu info is confusing to me
<RX14>
just write a darned man page
<Papierkorb>
yeah
<FromGitter>
<drosehn> I used to know how to use `info`, but if I see that now I just mutter under my breath and do a google-search for the documentation.
<RX14>
i just open the info pages in emacs
wontruefree has joined #crystal-lang
<FromGitter>
<drosehn> Ah. I have systems where emacs isn't installed, so I've forgotten about that. (not that I've forgotten about emacs, but I've forgotten about using emacs on gnu-info pages0
<FromGitter>
<drosehn> )
<FromGitter>
<mverzilli> @drosehn, sure. as RX14 said, let's get the ball rolling and work from there :)
<FromGitter>
<drosehn> Yep. I agree completely with that.
<FromGitter>
<drosehn> I just wanted to add a hostile comment towards gnu-info pages...
<FromGitter>
<johnjansen> @drosehn in the current climate, that wasnt at all hostile … ;-)
<FromGitter>
<drosehn> heh
<FromGitter>
<mverzilli> lol, duly noted
TheLemonMan has joined #crystal-lang
<FromGitter>
<johnjansen> you need to try harder
wuehlmaus has quit [Quit: Lost terminal]
<FromGitter>
<akzhan> and go deeper?)
wuehlmaus has joined #crystal-lang
<Papierkorb>
Does anyone know if there's a stance on localized #crystal-lang spinoffs?
<FromGitter>
<johnjansen> personally i think its waaaay early for that kinda thing ;-)
<FromGitter>
<akzhan> ru.crystal-lang.org site has untrusted certificate, so I discard it from the history. I have no information about maintainer
<FromGitter>
<akzhan> Btw, it’s really to early to think about.
<FromGitter>
<akzhan> Language design anyway will be changed.
<TheGillies>
We need esperanto crystal channel
<TheGillies>
kiu parolas esperanton ĉi tie?
<FromGitter>
<johnjansen> also we need to consolidate resources … if we head off on language tangents, then the knowledge is split and so is dev time
<TheGillies>
我也说中文
<RX14>
crystal certainly feels a lot more lively recently which is nice
<FromGitter>
<akzhan> Mi ne parolas la ĉinan aŭ Esperanto.
Guest27595 has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<TheGillies>
:(
wontruefree has quit [Quit: Is gone... Just plain old gone]
Ven_ has joined #crystal-lang
<TheGillies>
I don't speak russian
<Papierkorb>
Schnell, sprecht deutsch während die Moderatoren schlafen
wontruefree has joined #crystal-lang
<FromGitter>
<mverzilli> on the other hand, if there's people who don't speak English it's great if they have places to gather and try to collaborate
<Papierkorb>
johnjansen, those capable of speaking multiple languages are likely to join all of those channels, but those only capable of speaking their non-english mother tongue, can't be helped
<FromGitter>
<mverzilli> exactly!
<FromGitter>
<mverzilli> (btw Ary is an Esperanto teacher :))
<FromGitter>
<akzhan> we can add actualization of localized sites to after 1.0 milestone with minor priority.
<FromGitter>
<johnjansen> i agree with that, however if another language takes off, and becomes dominant, then all those conversations have to move back to all the others IMO … at least if we want to knowledge share … happy to be wrong about this!
Ven_ has quit [Ping timeout: 246 seconds]
<RX14>
i don't think another language is going to become "domainant": the source comments, the issue tracker, and the API docs are all currently english-only
<Papierkorb>
unlikely to happen, as many still speak english and you collaborate in english anyway on Github and the like
<FromGitter>
<mverzilli> I don't think you're wrong, but there's still people who wouldn't *be able* to participate
<FromGitter>
<johnjansen> it all depends on your "level of caring”, personally i really want intensity and focus, this needs to become a huge language for the good of the planet :-)
<TheGillies>
中文会主宰!
<RX14>
in fact I wouldn't know the correct approach to take for localising source comments in the first place
<RX14>
if anything I think the concern would be that the language channels would be too small
<FromGitter>
<johnjansen> @RX14 i agree with that too …
<FromGitter>
<johnjansen> <- very agreeable
<RX14>
haha
<Papierkorb>
dunno what too small is. even 10 active ppl at this time would be amazing in a localized spinoff
<Papierkorb>
Considering that this IRC channel, not counting gitter, has 100 members
<RX14>
active members is a better count
<RX14>
let me see...
<Papierkorb>
And that changes almost daily
<FromGitter>
<johnjansen> from a purely practical point of view, if there is a channel with only 10 people, presumably someone has to be the bridge between languages
* RX14
greps his irc logs
<TheGillies>
that's why they made google translate
<Papierkorb>
Oh god please no TheGillies
<Papierkorb>
Ever tried to help someone who did that?
<TheGillies>
better than nothing
<Papierkorb>
Not fun. the translation software creates a mess far worse than if those would just use their "quite bad" english
<RX14>
wow, i've been in here since 2015-08-21 :)
<Papierkorb>
It's actually not, the software is likely to mess up important aspects
<TheGillies>
like the difference between 中文 and 中国人
<Papierkorb>
In that case, if someone were to come in here, talk in non-english, those who speak their language should tell them to use english, or if they can't, could offer help through PM, if the helper wants to of course
<TheGillies>
is each word interpreted as a method in AST or something?
<RX14>
yes
mounibec has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
<FromGitter>
<molovo> Are there any other dependencies for Crystal on Ubuntu Trusty, other than `build-essential`? I’m getting missing library errors trying to run `crystal spec`
<FromGitter>
<bararchy> What libs are showing missing ?
<FromGitter>
<molovo> `libxml2` is installed by default on trusty, so I’m not sure why that’s appearing there. I installed from the official repository
<TheGillies>
this is why Im a fan of arch
<TheGillies>
sudo pacman -S crystal
<TheGillies>
done
<RX14>
not really
<RX14>
you still need libxml2, it's probably just installed
<RX14>
the difference is because arch includes dev stuff in the normal package
<TheGillies>
yeah
<TheGillies>
I wasn't saying it didn't
<TheGillies>
Im just saying i like it because im lazy
wontruefree has quit [Quit: Is gone... Just plain old gone]
<FromGitter>
<molovo> Ah, I’ll try the dev libraries and see if that gets me somewhere
<FromGitter>
<molovo> Ah! That’s what I’m missing. Thanks @mverzilli. I might make a PR to add that list to the official docs, because it only mentions `build-essential` there.
<FromGitter>
<molovo> Out of interest, does anyone know if all those libs are installed in the crystal community build for travis-ci? I’m having a wierd issue there which is what I’m setting up this Ubuntu to debug
<FromGitter>
<mverzilli> sorry, but are you trying to set up a dev environment for crystal itself or just run specs on a project?
wontruefree has joined #crystal-lang
<FromGitter>
<molovo> Run specs
<FromGitter>
<molovo> It works now, thanks
<FromGitter>
<mverzilli> yeah, but that's much more than what you need then... sorry for that
<FromGitter>
<molovo> No problem - it’s a throwaway Vagrant box, just to try and debug an issue on Travis. Something in that list definitely fixed it though - not sure what
Ven has joined #crystal-lang
Ven is now known as Guest22322
<FromGitter>
<bararchy> @johnjansen make sure your LLVM is 3.8 and up
<FromGitter>
<bararchy> @molovo
<FromGitter>
<molovo> It just installed 3.4, and that worked
<FromGitter>
<akzhan> Lucky
Guest22322 has quit [Client Quit]
<FromGitter>
<bararchy> Hmmm keep in mind that currently officially supported LLVM versions are 3.8-4
<RX14>
crystal won't link with llvm 3.4 so it's not using llvm3.4 even if it's installed
<RX14>
you can find out what it's running if you use `crystal -v`
<FromGitter>
<molovo> Yeah, I usually run on a mac, and that’s got the right version
<FromGitter>
<molovo> That Ubuntu box is actually using 3.5 though, despite having just installed 3.4: `Crystal 0.22.0 [3c71228] (2017-04-20) LLVM 3.5.0`
<RX14>
yes
<RX14>
crystal bundles llvm with it
<FromGitter>
<molovo> Ah, that makes more sense
<FromGitter>
<johnjansen> @bararchy ???
<oprypin>
johnjansen, were you also confused by that way of writing 3.8 - 4.0 ?
<oprypin>
or the random ping
mounibec has joined #crystal-lang
<FromGitter>
<bararchy> @johnjansen mistake in tag , sorry ^^
<FromGitter>
<johnjansen> @oprypin i was confused as to what went on whilst i was eating lunch … does that count?
<oprypin>
i dunno
<FromGitter>
<johnjansen> ;-)
<FromGitter>
<johnjansen> i havent contemplated anything LLVM, so no
zipR4ND has joined #crystal-lang
literal has quit [Ping timeout: 268 seconds]
<TheGillies>
What is a good use case for Atomic?
literal has joined #crystal-lang
mounibec has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
<TheGillies>
It seems kinda like what clojure does for STM but I don't know enough compsci to know when to use it
<FromGitter>
<akzhan> It’s not useful unless multithreading merged
<Papierkorb>
Atomic data types can be changed *atomically* in a multi-threaded environment, usually through the help of CAS
<Papierkorb>
TheGillies: You can tell it to "change to value x, but only if you're y", and you read y prior. This way, you can detect that another CPU changed the same data while you were working on it without using a mutex
<TheGillies>
Right
<TheGillies>
But isn't crystals concurrency paradigm supposed to sidestep that problem all together?
<Papierkorb>
You can e.g. use it to build a concurrent list, like a job stealing queue: Many threads (fibers) are trying to pull a job from a queue, and many other threads are putting jobs into it.
<Papierkorb>
Channels you mean? You can't model everything with only that
abidon has quit [Ping timeout: 260 seconds]
<TheGillies>
yeah so my question is what am i building where channels no longer cut it and i have to use atomic?
<Papierkorb>
job stealing queues
<FromGitter>
<akzhan> Channels very capable for code written in Crystal paradigm only. But what about C bindings etc.
<Papierkorb>
Generally, data structures that are to be changed concurrently by many producers and read by many consumers at once. Frankly, these data structures should end up in the std or in a shard so you won't have to really worry about it too much
<Papierkorb>
You can mess it up real quick
<FromGitter>
<akzhan> Yep, all these details should be hidden be shards. But they will use atomic.
<TheGillies>
by shard you just mean a higher level abstraction library?
<FromGitter>
<akzhan> Yes.
<Papierkorb>
Yes.
<TheGillies>
got it
<Papierkorb>
Maybe we'll also get memory barriers at one point lul
<Papierkorb>
gotta go fast ~
<TheGillies>
i don't even know what that is
<Papierkorb>
Well atomic access plays a role in that. You know how your CPU may reorder instructions internally? You can tell it not to, or differently. You can do that across cores as really low-level synchronisation method
<Papierkorb>
But getting is right is seriously hard.
<FromGitter>
<akzhan> btw atomic.cr is hardly depends on memory barriers, that impemented by LLVM ops.
<FromGitter>
<mverzilli> and if you want to see them in use checkout the `single-msqueue` branch and take a look at `scheduler.cr`
TheLemonMan has quit [Quit: "It's now safe to turn off your computer."]
* TheGillies
is now convinced he won't be using Atomic any time soon :P
<FromGitter>
<akzhan> btw, can i help to promote single-msqueue to merge?
<FromGitter>
<akzhan> this is because multithreading is wanted very much to get crystal everywhere )
<FromGitter>
<akzhan> Btw, compiler can improve itself with multithreading.
<TheGillies>
is multithreading the same thing as parallelism in crystal?
<TheGillies>
or do threads run on single cpu?
<FromGitter>
<akzhan> crystal parallelism is idea that now implemented inside one thread so can use one cpu core. ⏎ ⏎ multithreading extends it to multicore.
<TheGillies>
so multithreading == parallelism?
wontruefree has quit [Quit: Is gone... Just plain old gone]
<FromGitter>
<akzhan> multithreading is implementation of parallelism on multiple threads
<FromGitter>
<akzhan> it’s >=
<FromGitter>
<akzhan> one advantage of fibers that you should do approx. nothing to get all advantages of multithreading when it is arrived
wontruefree has joined #crystal-lang
<FromGitter>
<akzhan> Just like Golang
<wontruefree>
I think I might have disconnected in the last conversation
<wontruefree>
does crystal have parallelism now ?
<TheGillies>
"multithreading is implementation of parallelism on multiple threads" how can you have parallelism on on thread?
<TheGillies>
I'm confused
<TheGillies>
on one*
<FromGitter>
<akzhan> Crystal supports parallelism based on fibers, but doesn’t consume multiple cores.
<TheGillies>
oh
<TheGillies>
When I say parallelism I mean multi core support, not concurrency
<FromGitter>
<akzhan> You got answer :) Multi core support now in development.
<wontruefree>
Ok I always thought parallelism meant execution over multiple cores
<wontruefree>
but that is not the case
<wontruefree>
and crystal is still single core
<FromGitter>
<akzhan> You always can run multiple processes of Server using so_reuseport to utlize all cores.
<FromGitter>
<molovo> @akzhan is that multithreading enabled by default, or does it need ‘activating’ through some syntax? If so, can you point me to some documentation?
<TheGillies>
molovo that looks cool
<FromGitter>
<molovo> @TheGillies there’s nothing to it really, I just don’t like re-writing boilerplate code
<FromGitter>
<akzhan> You should do nothing to do multithreading. All behind the scene.
<FromGitter>
<molovo> @akzhan That’s awesome. I’m gonna have to try that out
<FromGitter>
<akzhan> From end-user point of view.
<TheGillies>
I would use that branch but compiling crystal takes forever heh
<TheGillies>
I wonder how much faster compiling crystal is with multithreading
<FromGitter>
<molovo> Lots, I’d imagine
<FromGitter>
<akzhan> it’s another task anyway :)
<oprypin>
this change would not affect compiling crystal
<oprypin>
semantic phase is hard to parallelize and, well, llvm stuff is probably already parallelized, i would imagine
<FromGitter>
<molovo> @akzhan Any idea when that branch is likely to land in stable? Is it a long way off?
<FromGitter>
<akzhan> Ask @asterite
<Papierkorb>
molovo, it is set to be released until the end of this year
<oprypin>
Papierkorb, i don't think it's useful to throw around that deadline
<TheGillies>
is it gonna be the big 1.0 flagship feature?
<oprypin>
because 1. it's not going to happen and 2. parallelism needs to be in the language for a while before 1.0
<Papierkorb>
it's gonna be the big $VERSION flagship feature TheGillies
<TheGillies>
oh nice it's planned on going in before 1.0
<TheGillies>
I thought I was gonna have to wait
<Papierkorb>
well you can give it a whirl right now
<oprypin>
it could land any day now but there's little communication about it
<TheGillies>
I guess makes sense you can
<FromGitter>
<akzhan> 1) 0 anyway be with multithreading, but there is no warranty to be released until EOY
<FromGitter>
<molovo> It’s compiling as we speak :D
<oprypin>
there's probably a lot of work to make it generally usable
<oprypin>
what with the needed modifications to libgc and stuff
<FromGitter>
<ixti> somehow i didn't even read why it failed and raised issue in bugtracker of funtoo linux... and got response that ebuild was compiled successfully on 48Gb box... So I was a bit confused ;))
<FromGitter>
<ixti> but now, i'm pretty sure I had to at least not try compile multiple things at once :D
<FromGitter>
<bew> @Papierkorb I was talking about having a common methods/service/remote-rpc-executor interface for several (de-)serializers
<Papierkorb>
could work for de/serializers, for RPC, not so much
<Papierkorb>
RPC is highly specific to the protocol and then how it's implemented
<TheGillies>
Whats the difference between a string pool and something like :"this is a string"
<Papierkorb>
The latter is not a string, it's a Symbol
<TheGillies>
Is that ever going to matter?
<FromGitter>
<bew> Hmm I've only looked at your cannon-rpc, json-rpc & msgpack-rpc system.. And they seemed to be a lot of similarities, but I may be wrong (and I'm not even talking about HTML or 0MQ, for which I know I'm wrong, because I don't know them, and I never *used* rpc stuff too..)
<TheGillies>
Like I don't get when I would use a string pool vs just symbol.to_s
<FromGitter>
<bew> TheGillies yes because all symbols are known at compile time
<FromGitter>
<bew> (and replaced by numbers iirc)
<TheGillies>
ah
<FromGitter>
<bew> Also, there is no `Symbol#to_s` atm