<jokke>
anyhoo, i'm not sure what the reason for it building so long might be. (it's still building)
<jokke>
is it possible (due to the nature of the crystal compiler) that multithreaded builds won't be possible even if crystal learns true concurrency (not green threads)
<FromGitter>
<Sevensidedmarble> Does anyone know what the status is on documentation for some of the libc stuff like
<FromGitter>
<drosehn> I assume you mean breaking up the work such that the compiler could be using multiple CPU's at the same time. I suspect that'd be tricky to do. There are a few things I compile which were written in rust, and it strikes me that some of those *do* manage to pin all my CPU's at 100% busy.
<FromGitter>
<Sevensidedmarble> I've found little docs at all on these methods but they're in the latest crystal release
<FromGitter>
<drosehn> If you have a writeup of standard C routines (such as the SingleUnixSpecification), and you compare the stubs already written for some of those routines to the routines you want to write stubs for, it's usually not to hard to figure out what's going on.
<FromGitter>
<Sevensidedmarble> True but it'd be nice to include it in the docs still
<FromGitter>
<Sevensidedmarble> Also I want to make a pr for adding an api for waitpid to process.cr, but I'm curious of there's been discussion on why it wasn't done already?
<FromGitter>
<drosehn> I'm not sure what you're looking for. Do you want a description of the `waitpid()` routine itself? That's a routine which exists in the real system "libc" library.
<FromGitter>
<Sevensidedmarble> I think we should just have a page in the docs that lists all those methods in libc with a short blurb
<FromGitter>
<Sevensidedmarble> I know there's a lot of changes coming to the docs though
<oprypin>
Sevensidedmarble, ok but that's not what everyone else thinks
<FromGitter>
<drosehn> Libc is completely outside the control of the crystal compiler. It's hard enough to document the compiler without adding more to that!
<oprypin>
methods inside `lib` is literally impossible to put into API html docs at the moment, and nobody's missing it
<FromGitter>
<Sevensidedmarble> Well that's why I was asking oprypin I wanted to know what others thought
<oprypin>
also do not consider anything inside LibC public
<vivus>
does anybody use a library that has refined user-permissions that I can plug into Amber?
<FromGitter>
<Sevensidedmarble> On that topic, what do you rhink the chances of an issue for process#waitpid garnering any attention is?
<FromGitter>
<Sevensidedmarble> If we have process#wait I don't see why we shouldnt have a public #waitpid as well
<FromGitter>
<drosehn> I could see having a simple writeup that showed a few examples (and in fact that may exist somewhere). Something that said "given the system routine called `waitpid` which is defined as <blah, blah, blah>, here are the lines in crystal which will let you call that external routine. But really makes no sense to write up much more than that.
<FromGitter>
<drosehn> Put another '"' after 'external routine.' 😄
<FromGitter>
<Sevensidedmarble> And yeah that's all I think would be appropriate. It doesnt have to be verbose. Just something.
qard has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<RX14>
my statically compiled crystal omnibus might well work properly now
<FromGitter>
<drosehn> When it comes to these stub or wrapper routines, I think the crystal developers have basically just written the ones they needed as they needed them. My copy of the SingleUnixSpecification lists almost 900 different "standard" unix system routines, and that ignores all the complications which come in for defining various structs or typedefs used by those routines. It's a lot of work to do all of them. It's a
<FromGitter>
... *LOT* of work to do all of them. So if there is no stub/wrapper routine for some routine you need, it may mean nothing more than no one else in the crystal community has needed it.
<FromGitter>
<drosehn> I don't mean to sound cavalier or dismissive about your request. I've also hit several system routines where I needed to write a wrapper in order to use them from crystal.
<FromGitter>
<Sevensidedmarble> Well since we have the libc wrapper around waitpid I think it could be implemented In the process module pretty easily
<FromGitter>
<Sevensidedmarble> But I get what you mean yeah
<FromGitter>
<drosehn> There might be some issues with how `waitpid()` works with the current implementation of fibers in crystal, and and some other issues like that.
<FromGitter>
<Sevensidedmarble> That's kinda what I was worried about
<FromGitter>
<Sevensidedmarble> I'm not familiar with fibers at all yet
<FromGitter>
<Sevensidedmarble> I'm not sure how they work with process#wait
<FromGitter>
<drosehn> neither am I. 😃
<FromGitter>
<Sevensidedmarble> There's also this interesting bit of cod
<FromGitter>
<Sevensidedmarble> Which only uses the word 'terminated'
<FromGitter>
<drosehn> Yeah, I'm not sure what's going on there, and I'm afraid I don't have the time to look into it some more.
<FromGitter>
<Sevensidedmarble> Me either! Lol
<FromGitter>
<Sevensidedmarble> If I figure it out I really wanna write a public method though
<FromGitter>
<drosehn> I'll also say that I have dabbled with signal-handling in crystal, and that's an area where things are a little rough. But the issues can't really be tackled until true multi-processing support is implemented in crystal.
<FromGitter>
<Sevensidedmarble> All yhe problems I have run into so far I think have been my fault
<FromGitter>
<Sevensidedmarble> I was super puzzled for a whIle by spawning processes but not setting them to the foreground with the tty driver
<FromGitter>
<Sevensidedmarble> I'm trying to make a shell if you wanna check it out
<FromGitter>
<drosehn> Cool idea for a project. A long time ago I did some minor work on `bash` and freebsd's `sh`, so I'm aware of some of the many issues that come up with writing a good shell. best of luck!
<FromGitter>
<Sevensidedmarble> Thabks,
<FromGitter>
<Sevensidedmarble> It's been an extremely enjoyable way to learn crystal
<jokke>
how can i allocate a lot (serval gib) of memory?
<Papierkorb>
You don't.
<Papierkorb>
What's the use case?
<jokke>
benchmarks
<jokke>
i bench hashing algos
<jokke>
non-cryptographic
<jokke>
i don't want the disk to be the bottleneck
<jokke>
or /dev/urandom or something
<Papierkorb>
You don't, you allocate a block of data (the size of a block the algo uses), and then call the #update method a few thousand times on that block
<jokke>
i guess the nature of the data (random or not) is irrelevant
<jokke>
since i'm not benching compression algos :P
<Papierkorb>
depends on the implementation style, but usually there are no branches involved and just XORs n stuff, you might as well feed it all zeroes
<jokke>
ok
<Papierkorb>
but if it uses lookup tables (kinda common), then you may want to use a data pattern that triggers as many fields in these tables as possible
<jokke>
hmm yeah
<jokke>
so random data after all
<jokke>
tricky
<Papierkorb>
I mean you can totally allocate a few megs of ram to trigger that case if it's not possible in a single block
<jokke>
but not gigs
<jokke>
:P
<Papierkorb>
pretty much no generic memory allocator would just give you a few gigs in a single call
<jokke>
yeah
<Papierkorb>
if you'd actually need that, use mmap() (If that's bound in Crystal, I think it's not..)
<Papierkorb>
But you shouldn't, as then you're more likely to benchmark your RAM transfer rate instead of the algorithm
<Papierkorb>
a few megs already exhausts most caches easily, a few KiB at best should be good though
<jokke>
ok
<FromGitter>
<exts> is there a good HTML -> PDF shard out there?
<FromGitter>
<exts> alright, crystal shards site needs a better search
<FromGitter>
<exts> i typed 'pdf' and no hits for 'wkhtmltopdf-crystal' :/
ShalokShalom_ has quit [Ping timeout: 268 seconds]
<Groogy>
Morning!
<Groogy>
huh, crystal won't build for me anymore D:
DTZUZO has quit [Quit: WeeChat 1.9]
DTZUZO has joined #crystal-lang
Ryan_ has joined #crystal-lang
<Ryan_>
Hi all, is it possible to use call on a string (or another way of doing it)? I have a function called `message` I would like to call by using `"message".call`
<FromGitter>
<Qwerp-Derp> Just curious (before I post an issue on the Crystal repo), is there a reason as to why `Float#ceil`, `Float#floor` and `Float#round` convert to floats instead of ints, other than "it's easier to implement"? It seems more intuitive to convert to integers, since when executing those functions you're going to be converting to integers anyway.
<Groogy>
no this is still a compiled language, you could do it with macros
<Groogy>
on Ryan_
<FromGitter>
<Qwerp-Derp> Another thing I'm curious about, why does `Array#delete_at` return the deleted value, instead of the list with the item deleted?
<Ryan_>
If I had a macro such as `macro message; "***#{ {{self}} }***"; end`, how would I call that?
faustinoaq has quit [Ping timeout: 268 seconds]
faustinoaq has joined #crystal-lang
<FromGitter>
<bew> {{}}
<FromGitter>
<bew> Oups
<FromGitter>
<bew> Ryan_ what is self here?
<FromGitter>
<bew> What are you trying to do?
DTZUZO has quit [Quit: WeeChat 1.9]
<RX14>
YES
<RX14>
statically compiled omnibus works
<RX14>
finally we can be rid of the terrible --no-debug
<FromGitter>
<monouser7dig> what is this omnibus think precisely? regarding ruby this is something about packaging/ setup/ vm?
<FromGitter>
<monouser7dig> how does this relate to --no-debug?
<RX14>
it's just another way of creating that tar.gz file
<RX14>
that is simpler and better
<FromGitter>
<monouser7dig> but it's not about including dependencies or other own code?
<RX14>
??
qard has quit [Ping timeout: 248 seconds]
<FromGitter>
<monouser7dig> is it just for shipping this tar.gz as a way of distributing the compiler and stdl or is it useful for programmers to ship their apps and not worry about dependencies?
<RX14>
just the former
<Ryan_>
bew, I'm trying to get the user input from the command line (interactive program), which takes the string and compares it against a list of known functions. If it's a match, it will execute that function
<Ryan_>
I could write a switch statement, but I feel there is a better way?
<FromGitter>
<monouser7dig> okay alright congratulations then ;)
saadq has quit [Read error: No route to host]
<FromGitter>
<bew> If you know all the commands in advance, a switch is better, if you don't, you'll have to find another way (e.g a hash of command => proc)
saadq has joined #crystal-lang
gtramontina has joined #crystal-lang
<FromGitter>
<bramhaag> What's the purpose of the src/<project-name>/version.cr file?
<jhass>
to have a defined place to define the recommended ProjectName::VERISON constant
saadq has quit [Read error: Connection reset by peer]
<FromGitter>
<Sevensidedmarble> one weird thing is that if I remove the parenthesis it compiles fine
gtramontina has quit [Quit: WeeChat 1.9.1]
gtramontina has joined #crystal-lang
mbarbar has quit [Ping timeout: 240 seconds]
<oprypin>
Sevensidedmarble, the cause of syntax error is very often unclear and caused by something much earlier in the code. seeing scraps of the code does not help, need the whole file. also please use a pastebin: https://bpaste.net/https://gist.github.com/
* jhass
guesses on the space between spawn_process and (
<FromGitter>
<Sevensidedmarble> yup jhass
<FromGitter>
<Sevensidedmarble> it was the space
<FromGitter>
<Sevensidedmarble> is that a bug? or just unavoidable?
<jhass>
I wouldn't call it a bug
<jhass>
it's terrible to have spaces there
gtramontina has quit [Ping timeout: 248 seconds]
<FromGitter>
<Sevensidedmarble> I'm sure its hard to parse
<jhass>
in puts foo (1+1), 1, how to know whether you meant puts(foo(1+1), 1) or puts(foo((1+1, 1))
<oprypin>
by having a well-defined syntax
<oprypin>
and the definition was made to make it work as `puts(foo(1+1), 1)`
<oprypin>
it was an intentional choice, this is not a bug
<jhass>
I mean also style wise, it's not only the parser that needs to understand it
<FromGitter>
<Sevensidedmarble> I figured yeah, just wasnt sure
gtramontina has joined #crystal-lang
gtramontina has quit [Ping timeout: 240 seconds]
gtramontina has joined #crystal-lang
gtramontina has quit [Ping timeout: 240 seconds]
gtramontina has joined #crystal-lang
gtramontina has quit [Ping timeout: 240 seconds]
gtramontina has joined #crystal-lang
gtramontina has quit [Ping timeout: 240 seconds]
gtramontina has joined #crystal-lang
gtramontina has quit [Ping timeout: 248 seconds]
gtramontina has joined #crystal-lang
<RX14>
gdb is segfaulting
<RX14>
while debugging a segfault
gtramontina has quit [Ping timeout: 240 seconds]
<Papierkorb>
darn free software. doesn't cost anything, can't be anything
gtramontina has joined #crystal-lang
gtramontina has quit [Ping timeout: 240 seconds]
gtramontina has joined #crystal-lang
faustinoaq has quit [Ping timeout: 268 seconds]
gtramontina has quit [Ping timeout: 250 seconds]
<jhass>
makes you wonder, can you attach a gdb to a running gdb?
<RX14>
why not?
<jhass>
can you maybe even do it in a circle?
<RX14>
now thats hillarious
<Papierkorb>
Actually you should not, as ptrace() does a reparent if you attach to a non-child
<RX14>
til
<Papierkorb>
Or, well, maybe it's possible as a parent-less child gets re-parented by PID1
gtramontina has joined #crystal-lang
<RX14>
compiling the entire compiler statically on musl: no bugs
<RX14>
compiling shards: everything broken
alex`` has quit [Quit: WeeChat 1.9.1]
gtramontina has quit [Ping timeout: 240 seconds]
<RX14>
solution: compile the compiler into the shards binary
<RX14>
if this works...
gtramontina has joined #crystal-lang
<RX14>
IT WORKS
<RX14>
IM AN EVIL GENIUS
<RX14>
lets ship it
<RX14>
i just created a file `require "compiler/crystal/**"; if false; Crystal::Command.run; end; require "./src/shards"`
<RX14>
and compiled that
<RX14>
and now whards works 100% fine
gtramontina has quit [Ping timeout: 258 seconds]
<jhass>
probably pure luck in not hitting the bad stack layout that sits somewhere anymore
<RX14>
require "llvm" works
hightower4 has joined #crystal-lang
<RX14>
and because that code is never called
<RX14>
it must be something to do with the linking
<RX14>
but *just* linking llvm isn't enough
<jhass>
I can't imagine it doing anything beyond moving things around so that the garbage it reads doesn't make it crash anymore
<RX14>
adding llcm-config --libs --system-libs --ldflags --link-static to --link-flags doesnt help
<RX14>
jhass, i'll ship it regardless
gtramontina has joined #crystal-lang
<RX14>
at least it's better than the --no-debug hack
hightower3 has quit [Ping timeout: 268 seconds]
alex`` has joined #crystal-lang
<jhass>
if you suspect linking, did you compare the --verbose output yet?
gtramontina has quit [Ping timeout: 248 seconds]
<RX14>
nope
<RX14>
but the linker wont link unless something reffers to the symbols
<FromGitter>
<marksiemers> Any suggestions on naming a repo that extends `Spec`? Is there a convention?
<RX14>
it'll just leave them out
<RX14>
@marksiemers why are you extending spec
<FromGitter>
<marksiemers> To test controllers in amber, it isn't something that should go into `Spec` but it can be used by any web framework to help test http request/response is the idea
<RX14>
cool
<FromGitter>
<marksiemers> I guess `spec-helpers` might be a descriptive name
<RX14>
why does it need to integrate with spec?
<RX14>
does it add extra expects?
<Papierkorb>
1) ^
<Papierkorb>
2) `helpers` for what?
<FromGitter>
<marksiemers> To make it easier to make and check HTTP requests. using methods like `get "/path/"`
<Papierkorb>
I meant, `helpers` isn't descriptive at all
<FromGitter>
<marksiemers> Sure, that's why I'm seeking input. I can't think of a good name
<FromGitter>
<marksiemers> As a side benefit, the `amber-spec` repo used to have a dependency on amber, which we have removed, but at some point the lib or shards folder was committed, so a repo that should be < 100KB was > 33MB ⏎ It is down to 7MB (from filter-branch-ing), but we are thinking of cutting over to a fresh repo - so we need a new name anyway.
<RX14>
you should really find a way to keep that history
<FromGitter>
<marksiemers> We're not deleting the repo
gtramontina has quit [Ping timeout: 240 seconds]
<FromGitter>
<marksiemers> it will remain, with commit hashes. A new version of amber will be released that switches dependencies from `amber-spec` to whatever the new one is
<FromGitter>
<marksiemers> That's the idea right now
<RX14>
anyone around to test an omnibus build?
<FromGitter>
<marksiemers> We've got people who help in countries with really slow internet and really old computers. The large repos are a killer for them on time and space.
<FromGitter>
<marksiemers> `controller-spec` might work, I just don't know if there are plans to have it test other things like views, pipelines, etc.
<jhass>
webserver-spec?
<jhass>
nothing I would ever search for but if it's included into some framework...
<FromGitter>
<marksiemers> `http-spec` maybe, but that seems a little misleading - like it is testing crystal's `HTTP`
<jhass>
and also might expect to have some way to verify client implementations
<FromGitter>
<drujensen> Can we just delete and recreate with the same name?
gtramontina has joined #crystal-lang
<jhass>
you could actually force push a new local repo
<FromGitter>
<marksiemers> Anyone with a shard.lock with `amber-spec` may be unhappy about that.
<RX14>
^
<FromGitter>
<marksiemers> If there was a way to have a redirect (or backup repo) for shards - and put `amber-spec` into `amber-spec-archive` or something like that, that would be a solution. ⏎ But I don't think that's common enough for the shards team to build that in.
<Papierkorb>
`spec-web-helpers` would be good enough to me
gtramontina has quit [Ping timeout: 250 seconds]
<RX14>
can people not on arch linux try https://rx14.co.uk/crystal-0.24.0.tar.gz and report back if it works well for them, compiling their projects, in --release mode without --no-debug
gtramontina has joined #crystal-lang
gtramontina has quit [Ping timeout: 240 seconds]
gtramontina has joined #crystal-lang
<RX14>
ah i see they've already implemented a formal definition of JS promises because they're too confusing to reason about manually
gtramontina has quit [Ping timeout: 240 seconds]
gtramontina has joined #crystal-lang
gtramontina has quit [Ping timeout: 240 seconds]
snsei has joined #crystal-lang
<FromGitter>
<sdogruyol> why not arch?
<FromGitter>
<bew> Maybe because it already works on arch
<FromGitter>
<bew> He may to test other distros
<FromGitter>
<bew> +want
<FromGitter>
<sdogruyol> makes sense
snsei has quit [Remote host closed the connection]
<oprypin>
well i hope that with the `yield` keyword being in js the salvation is near
<FromGitter>
<bew> @marksiemers thats the perfect video x)
<FromGitter>
<marksiemers> If someone put together an actually snippet of JS code that both read like this, and output the dialog - that would be beautiful waste of time.
<FromGitter>
<elorest> Love it.
gtramontina has joined #crystal-lang
snsei has joined #crystal-lang
snsei has quit [Remote host closed the connection]
<vegai>
do you need to crosscompile every time a new OpenBSD version is released, or can you use the previous version of the port?
<jhass>
just do it, LE makes it a piece of cake
<wmoxam>
the port won't use an installed crystal compiler
<wmoxam>
so an object file has to be uploaded for each version
<crystal-gh>
[crystal] akzhan opened pull request #5276: Indtruces real Number normalization for Crystal::Hasher (master...number_normalization) https://git.io/vFwmg
<vegai>
jhass: LE?
<wmoxam>
jhass: tru
<jhass>
letsencrypt
<vegai>
ohh
gtramontina has joined #crystal-lang
qard has joined #crystal-lang
gtramontina has quit [Ping timeout: 268 seconds]
gtramontina has joined #crystal-lang
illyohs has joined #crystal-lang
snsei_ has joined #crystal-lang
gtramontina has quit [Ping timeout: 260 seconds]
snsei has quit [Ping timeout: 248 seconds]
<wmoxam>
maybe I spoke too soon, requires are failing. blerrgg
<jhass>
who needs them, if telegram can have all their code in one file so can we!
snsei has quit [Remote host closed the connection]
snsei has joined #crystal-lang
gtramontina has joined #crystal-lang
gtramontina has quit [Ping timeout: 248 seconds]
alex`` has quit [Ping timeout: 240 seconds]
gtramontina has joined #crystal-lang
gtramontina has quit [Ping timeout: 248 seconds]
gtramontina has joined #crystal-lang
gtramontina has quit [Ping timeout: 248 seconds]
snsei_ has joined #crystal-lang
snsei has quit [Ping timeout: 248 seconds]
gtramontina has joined #crystal-lang
<FromGitter>
<elorest> Is anyone going to rubyconf to spread the good word?
snsei_ has quit [Remote host closed the connection]
gtramontina has quit [Ping timeout: 260 seconds]
<faustinoaq>
I wanna go someday to rubyconf, I went this year to some events here in Panama, Always I'm sharing my experience with Crystal and Amber :)
<faustinoaq>
Just a few people know about new languages like Crystal, Nim and Julia here ;)
gtramontina has joined #crystal-lang
<FromGitter>
<elorest> Yeah. Elm, elixir, python and rust get a lot of air time at ruby confs but not so much crystal, d or nim
<faustinoaq>
Yeah, here in Panama exist a big community about Mozilla and Rust, even Elixir & Elm have many followers here :)
<faustinoaq>
Python is an old competitor, another league XD
<faustinoaq>
@elorest, I read your message about fix dependency to minor release, I thought it was needed to get dependency stability on generated amber projects, however if you think the best option is to don't specify version on shard.yml, go ahead :)
<faustinoaq>
Oh, wrong channel :(
snsei has joined #crystal-lang
snsei has quit [Remote host closed the connection]