<FromGitter>
<asterite> Interfaces to the rescue? :)
<oprypin>
what interfaces
<oprypin>
there's no interface for []= in stdlib
<oprypin>
might as well hardcode the union then
hightower4 has joined #crystal-lang
hightower3 has quit [Ping timeout: 255 seconds]
wontruef_ has quit [Quit: The Internet needs a break and I need a cookie]
<FromGitter>
<faustinoaq> > I'd love to see Crystal continue moving forward, but sometimes you need a break. @asterite you've done a ton of work, and I love the Crystal language. So thank you for all you've done! ⏎ ⏎ Yes, @asterite Thanks you! I learnt a lot using Crystal, All work done in Crystal is a great effort, I think Manas and this community will make Crystal production ready, we know the limitations but our strengths are
<FromGitter>
... our hope 💪
Creatornator has joined #crystal-lang
Creatornator has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
Creatornator has joined #crystal-lang
_whitelogger has joined #crystal-lang
snsei has joined #crystal-lang
Creatornator has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
snsei has quit [Remote host closed the connection]
snsei has joined #crystal-lang
snsei has quit [Remote host closed the connection]
snsei has joined #crystal-lang
snsei has quit [Remote host closed the connection]
snsei has joined #crystal-lang
snsei has quit [Remote host closed the connection]
Creatornator has joined #crystal-lang
lacour has quit [Quit: Leaving]
tyler569 has joined #crystal-lang
Creatornator has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
tyler569 has quit [Quit: WeeChat 1.9.1]
RickHull has joined #crystal-lang
gcds has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
A124 has quit [Read error: Connection reset by peer]
A124 has joined #crystal-lang
DTZUZO has quit [Ping timeout: 248 seconds]
alex`` has quit [Quit: WeeChat 1.9.1]
alex`` has joined #crystal-lang
alex`` has quit [Client Quit]
alex`` has joined #crystal-lang
rohitpaulk has quit [Ping timeout: 248 seconds]
alex`` has quit [Quit: WeeChat 1.9.1]
alex`` has joined #crystal-lang
rohitpaulk has joined #crystal-lang
<Papierkorb>
Huh, `Dir["/home/.."]` returns empty array, but `Dir["/home"]` returns `["/home"]` as expected
rohitpaulk has quit [Ping timeout: 260 seconds]
<FromGitter>
<bew> `Dir["/home/../*"]` works though
<Papierkorb>
. and .. are fine anywhere except as last element
<Groogy>
huh that has to be a bug
<Papierkorb>
So, my specs are now finding stdlib bugs. nice.
rohitpaulk has joined #crystal-lang
adam12 has left #crystal-lang ["Leaving..."]
<Papierkorb>
And `Dir["/"]` raises
<FromGitter>
<bew> well `Dir[]` is a shortcut for `Dir.glob`, and what is a glob without stars `*` ? what's the point ? (though I agree, it shouldn't do weird things)
<Papierkorb>
bew, to allow the user to give me paths using globs. If the user decides to not use globbing, that's their business.
<FromGitter>
<bew> hmm maybe detect if it's a glob pattern, and if it's not, don't try to use glob?
<Papierkorb>
That doesn't solve anything.
<Papierkorb>
I'm not eager to trash my code to work around an issue everyone has
gcds has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
rohitpaulk has joined #crystal-lang
gcds has joined #crystal-lang
ShalokShalom_ is now known as ShalokShalom
<crystal-gh>
[crystal] asterite closed pull request #5113: Add Math sqrt overloads for Bigs (master...master) https://git.io/vdPZA
<FromGitter>
<asterite> Someone should rewrite Dir.glob from scratch and without regex, but it's a huge task
<FromGitter>
<taylorfinnell> Would a seek method make sense in IO::Sized?
<jhass>
sue why not
<jhass>
*sure
<FromGitter>
<taylorfinnell> Also, in `File`, some how `#read_at` is being called and I'm ending up with a `File::PReader` which does not `#seek` but I can't figure out how I am ending up with the `File::PReader` object
<FromGitter>
<bew> > some how #read_at is being called ⏎ When doing what?
<FromGitter>
<taylorfinnell> awesome! I did not notice this PR, thank you :)
<FromGitter>
<asterite> What are you trying to do?
<FromGitter>
<taylorfinnell> parse a file format where I need to seek around the file to certain chunks
<FromGitter>
<asterite> File has seek
<FromGitter>
<asterite> and if the big is not too big you can read it to memory, it'll be faster
<FromGitter>
<taylorfinnell> Yea, I will not allow any IO and just allow File. I want to support parsing file from http stream so I think I will need to add seek to IO::Sized
<FromGitter>
<asterite> You can't seek an http stream
<FromGitter>
<asterite> not because of a missing method, it's plain impossible
<FromGitter>
<asterite> it's a read only stream
<jhass>
do you truly need to seek btw? Many formats are designed in a way that skipping is enough
<FromGitter>
<taylorfinnell> Hmm I will check, maybe I don't and can just use skip. Thanks everyone
<FromGitter>
<asterite> It's always better if you ask help for "I want to parse file format X" rather than "why IO::Size doesn't have #seek"
<jhass>
got me thinking, wouldn't it be nice to have optionally implementable methods and a way to check for them? Then IO#skip could be implemented in terms of #seek if available and just #read if not
<Papierkorb>
We have optionally implementable methods.
<Papierkorb>
It's called "overriding"
<jhass>
but how do you check at compile time whether it's implemented?
<Papierkorb>
You don't. You provide an implementation, and if a sub-class wants to provide a better one, it simply overrides the previous method
<jhass>
so if there's an optimized implementation that's common to all subclasses that implement it, you have to repeat it in each
<FromGitter>
<taylorfinnell> Trying to parse TIFF images, and from what I understand the IFD chunks may not be ordered.Trying to confirm that though
<Papierkorb>
jhass: No, it just means the inheritance architecture is faulty. If it's not possible through plain-old inheritance, simply move the better implementation into some module, and include that module if you want it
<jhass>
that's still something you can forget to do though
<Papierkorb>
jhass: "is_a?" or "responds_to" style programming should be avoided if possible. It's not clean and can lead to non-obvious behaviour. A parent class suddenly changing its behaviour if a sub-class does something, that's the definition of unexpected behaviour
<Papierkorb>
Then you forgot it.
<Papierkorb>
Then you add it.
<Papierkorb>
Don't try to fix developer laziness through magic
<jhass>
now you can argue if it it's a true behavior change or just an optimization though, in my example anyway
<Papierkorb>
An "optimization" is a huge change and can easily break stuff
<FromGitter>
<asterite> There's TypeNode.overrides? in macros which I added at one point because I needed this, but it's probably not well thought
<Papierkorb>
asterite, I think it's perfectly fine for the macro system to have this feature. There are use-cases for it.
<Papierkorb>
But this one is not one of those
<FromGitter>
<bew> 👍
<FromGitter>
<asterite> Papierkorb: why? You can do `{{ if @type.overrides?(IO, "seek") }}`
<Papierkorb>
You can do it. I'm arguing if that's a good idea in all cases.
<FromGitter>
<asterite> It's probably not. It's a hack I added at one point and I'm not convinced at all about it
<Papierkorb>
That #overrides? function you mean? It's an important feature for certain use-cases (binding generation, RPC)
<Papierkorb>
The macro system is there to solve not-every-day use-cases. I think it's perfectly fine to expose much functionality in there.
<Papierkorb>
I just checked, I haven't used #overrides? yet. Though I could've in bindgen.
<DissonantGuile>
Ah cool, didn't even know about that site heh
rohitpaulk has quit [Quit: Ping timeout (120 seconds)]
gcds has quit [Quit: My MacBook has gone to sleep. ZZZzzz…]
<crystal-gh>
[crystal] MakeNowJust opened pull request #5120: Prevent to type ivar having initializer as nilable on assignment (master...fix/crystal/5112-not-type-ivar-having-initializer-as-nilable) https://git.io/vd138
<FromGitter>
<asterite> Groogy: Cool! I actually have your program running on my machine (Mac OSX). I had to change the config to use an older version of OpenGL (Mac comes with 4.1). Maybe the version can be detected somehow?
<Groogy>
yeah it can
<Groogy>
it is also why I have the config file ^^ it's quite flexible
<FromGitter>
<asterite> Another problem is that when I do `shards build` and then `./dist/main`I get `Error opening file 'test.shader'`. I have to move some files around to get that working
<Groogy>
yeah I have a build script in vscode right now
<Groogy>
will add a proper makefile later
<Groogy>
will shards build invoke a make file if it is inthere?
<FromGitter>
<asterite> Just minor things, really. But I'm really amazed how Crystal can show that on the screen :-) (I know most of that is C bindings, but still...)
<Groogy>
actually not a lot of it is C bindings
<FromGitter>
<asterite> I think not, there's a way to let shard execute something when you install it, but nothing for the build command
<Groogy>
yeah I'll just do that the make script will make sure it install the shards
<Groogy>
gonna push my changes, do some dishes then I'll get on making a makescript
<Groogy>
problem I had before was I didn't have a good way to set the work directory after I had built and wanted to run something
<crystal-gh>
[crystal] RX14 pushed 3 new commits to master: https://git.io/vd1s7
<Papierkorb>
oprypin: No, this is just being reasonable. If you give a shit about $OS, then there are all facilities to make a few changes and it'll work.
<Papierkorb>
I have other things to do than maintain everything for everyone
<Papierkorb>
Like, a real job
<RX14>
cross-platform development is a pile of hacks
<Papierkorb>
Like, life
<RX14>
at least they're hacks in shell scripts not your crystal code
<Papierkorb>
If that is not good enough for someone, then so be it.
<oprypin>
RX14, yes it is, and I don't want to be maintaining the hacks
<RX14>
so make it work for you and make it bail with a nice error message
<RX14>
and be done with it until you get a PR
<Papierkorb>
^
<FromGitter>
<asterite> Yeah... developing a language is nice unless you hit real life with all of the systems and the differences :-P
<FromGitter>
<asterite> unless -> until
<FromGitter>
<asterite> Like, now I have this openssl error and it's because in mac it comes with 0.9.8. I have one from homebrew but pkgcfg still gives me 0.9.8
<FromGitter>
<asterite> I don't care about all of that, I just want things to work... so hard...
<FromGitter>
<bew> wow more PR merging, 0.24 is becoming bigger & bigger ^^
<oprypin>
asterite, arch linux is where things work
<RX14>
0.24 should be released soon...
<RX14>
@asterite the problem with osx is homebrew is a hack
<FromGitter>
<imonmyown> @asterite always had problems with OpenSSL in rust on mac. Like every other time
<FromGitter>
<bew> RX14, good to know!
<RX14>
theres something special about homebrew openssl iirc
<RX14>
best bet is jumping on their irc or whatever
<RX14>
or googling it idk
wontruefree has quit [Quit: The Internet needs a break and I need a cookie]
<FromGitter>
<DRVTiny> Hello, dear All! :) ⏎ How to know all public methods implementted by class "X"?
<FromGitter>
<bew> @DRVTiny why do you need that?
<FromGitter>
<DRVTiny> Because method names and method calls convention in 80% cases give enough info to know what this class can do.
<oprypin>
DRVTiny, or, you know, see that list of methods in documentation
<RX14>
^
<RX14>
please encourage shard authors to host documentation
<oprypin>
if it wasnt so annoying to do
<RX14>
for that matter I should make a public shards doc hosting thingy
<FromGitter>
<DRVTiny> For example, i want to know, how to get unix timestamp from the class Time and i dont want to search that information in web browser. In Julia, for example, i have methods(Class), in perl i can perldoc Class, but what about Crystal?
<RX14>
where its just sharddoc.foo/github.com/foo/bar
<RX14>
@DRVTiny well how else are you going to do it without a web browser?
<oprypin>
RX14, for all of these nice projects, the problem is always sandboxing arbitrary code execution
<RX14>
yes oprypin
<oprypin>
for me, anyway. why does it have to be so extremely hard?
<FromGitter>
<DRVTiny> "In Julia, for example, i have methods(Class), in perl i can perldoc Class"
<RX14>
disregarding kernel bugs docer would be a perfect sandbox
<RX14>
but kernel bugs are a thing
<FromGitter>
<DRVTiny> Julia is not dynamic language too. And what thee problem? :)
<RX14>
with kernel bugs + placing the process into a nobody user you're fairly safe
<FromGitter>
<asterite> Julia is dynamic
<FromGitter>
<asterite> Can you compile Julia to an executable?
<RX14>
then put that whole docker on a VM which only runs other `crystal doc` runs then you're fine
<FromGitter>
<DRVTiny> No, its LLVM-compiled language with strong types
<RX14>
you just need a bit of defence in depth oprypin
gcds has quit [Client Quit]
<oprypin>
RX14, seems like nonsense to me
<RX14>
why oprypin
snsei has joined #crystal-lang
<oprypin>
running unsandboxed code does not sound like a good idea
wontruefree has joined #crystal-lang
<RX14>
note that that article is from 2014 oprypin
<FromGitter>
<DRVTiny> Hmm... I dont know, why i cant get class methods from compiled application? This information is totally lost during compilation?
<RX14>
also that travis uses docker as their sandbox
<FromGitter>
<asterite> Rust, Java, C#, Nim, most compiled languages use online docs. Crystal is the same. We won't add features to the language so you can search for methods. But you can do it with macros, it's just not convenient. Plus with "type.methods" you don't get their docs. We *could* do something like what Elixir does, but that means always keeping doc comments when compiling, which will make things slower and occupy more
<FromGitter>
... memory
<RX14>
as long as you can't get root
<RX14>
which is exactly what I suggested
<FromGitter>
<asterite> DRVTiny: yes, it's lost during compilation
<oprypin>
carc.in does not use docker apparently. what it uses is some kind of "playpen" which is apparently this https://github.com/rust-lang/rust-playpen and apparently deprecated and i have no idea what it does
<FromGitter>
<asterite> there's no runtime reflection in Crystal
<RX14>
whats the worst that happens if the VM gets compromised oprypin
<Papierkorb>
The host gets compromised too
<Papierkorb>
Not unheard of
<RX14>
not my problem
<RX14>
it's amazon's
<RX14>
or whoever you use
<FromGitter>
<DRVTiny> @asterite You can place library classes in standart locations such as @INC and provide utility written in any appropriate language to parse class definitions (or use crystal parser itself - its reasonable)
<RX14>
@DRVTiny is using a web browser really that much harder than using a commandline tool?
<RX14>
if you have docs open already you should just be able to type once we implement fuzzy search
<RX14>
also why don't we provide a crystal doc --all option which docs your code + shards + stdlib
<crystal-gh>
[crystal] asterite pushed 3 new commits to master: https://git.io/vd1cy
<crystal-gh>
crystal/master ddf8a18 Julien Reichardt: Remove the support of the `compile` command
<crystal-gh>
crystal/master 0847c7e Julien REICHARDT: Integrate the if conditions in the case expressions
<RX14>
then add crystal doc --server as well and you just run crystal doc --all --server in your project
<RX14>
and you have a fuzzy searchable documentation of everything you have at your fingertips
<FromGitter>
<DRVTiny> Now i have to download libraries aka shards to every application with crystal dep - that is not conveniently at all, though this methodology can be used with class-definition-parser's in the same way.
<RX14>
am i crazy?
<FromGitter>
<bew> RX14 I like it ;)
<RX14>
@DRVTiny what?
<FromGitter>
<asterite> You can also search for methods inside your project, because `lib` contains that
<RX14>
yeah @asterite but it doesn't give really nice output
<RX14>
you can search for method definitions but you cant search for methods given a class name easilly
<FromGitter>
<asterite> It's true
<RX14>
@DRVTiny i assumed since you want to know the methods of a class you have the shard already
<RX14>
i don't understand your complaint
<RX14>
I really want to remove crystal deps
<FromGitter>
<asterite> Also, given that there's no REPL for crystal, it makes no sense to compile a program just to find out the methods of a type
<RX14>
^
<FromGitter>
<asterite> Me too!
<FromGitter>
<asterite> Let's remove it. `shards` FTW
<RX14>
ddeath to aliases
<oprypin>
mhm
<RX14>
except Int#second...
<FromGitter>
<DRVTiny> @FromIRC Yes, using web-browser is much harder than using icr utility and methods(Class) in commandline - for me, anyway.
<FromGitter>
<bew> and 1.day :p *I'm out*
<RX14>
well icr can do what ICR wants
<RX14>
if ICR wants to provide some kind of methods dumper it can
<RX14>
but ask in the ICR repo
<RX14>
i already suggested they can pre-require some helpers to do this
<oprypin>
maybe crystal play should have something
<RX14>
crystal play could incorporate the doc browser i guess
<FromGitter>
<DRVTiny> @asterite There is ICR - it is very useful to learn Crystal
<RX14>
but it would be nice to be able to ctrl-hover types
<RX14>
and ctrl-click to jump to docs
<RX14>
for types and methods
<RX14>
so much fluff we could do
<FromGitter>
<asterite> ICR is not maintained by Crystal, it's just a separate project. It's not a real REPL
<FromGitter>
<asterite> But yes, this is a really good fit for the playground
<RX14>
i never use icr
<RX14>
i guess im use to just writing code
<RX14>
and testing it
<RX14>
the traditional way
<oprypin>
command line REPLs really suck
<RX14>
as debugger's they['re pretty cool
<RX14>
in interpreted languages
<RX14>
I think an interpreted crystal could work btw
<RX14>
but im too lazy to do that
<FromGitter>
<DRVTiny> Julia is not interpreted language, and it has amazing REPL
<RX14>
it's a JITed language
<FromGitter>
<straight-shoota> the json output from `crystal docs` easily allows to use the docs for other use cases besides a html page.
<oprypin>
is that already in?
<FromGitter>
<straight-shoota> for example a command line docs viewr
<RX14>
@DRVTiny the problem with crystal and repls is the type system
<RX14>
julia's type system is local not global and so it can do things we can't
<RX14>
or something like that
<FromGitter>
<straight-shoota> @oprypin no, but its implemented #4746
<FromGitter>
<asterite> Julia is kind of interpreted
<FromGitter>
<asterite> You get types from a call, instantiate that call and generate code from that, on the fly
<FromGitter>
<asterite> so it's closer to a dynamic language
<FromGitter>
<asterite> plus it has a built-in REPL. And things are not compiled to an executable. `a = ...` will just store that at runtime, together with its type information. That's not how Crystal works
<crystal-gh>
[crystal] RX14 closed pull request #5096: Remove `expect_raises` matcher without type argument (master...jm-remove-expect-raises) https://git.io/vdV3c
<FromGitter>
<asterite> Ah, cool, it seems they finally did it. In any case, the REPL mode was the first thing they did, and how it only worked, so it makes sense to be able to reflect on things at runtime.
<RX14>
perhaps a repl is possible in crystal
<RX14>
but it's sure to require a lot lot lot of resources
<RX14>
and work
<crystal-gh>
[crystal] asterite closed pull request #5061: Regex: support duplicated named captures (master...feature/regexp/duplicated-named-capture) https://git.io/vdGoG
lacour has joined #crystal-lang
<oprypin>
this will be one spicy release :)
<RX14>
wow @asterite remembered the Next milestone for once lol
<FromGitter>
<asterite> :D
<RX14>
btw 'asterite we typically use rebase or squash+rebase merge modes, not merge commits
<Groogy>
gah need to stop working, should eat
<Groogy>
get nourishment
<RX14>
it's just a bit cleaner and ensures the commit log is properly ordered
<RX14>
if only github showed the dag properly instead of a linear list it'd be much nicer
wontruefree has quit [Quit: The Internet needs a break and I need a cookie]
<FromGitter>
<asterite> Ah, right, I sometimes forget about that
<RX14>
we need to automate it
<oprypin>
RX14, ok if docker really is the answer, then why all the complexity?
<RX14>
which is kindof my job with CI
<RX14>
oprypin, defence in depth
<RX14>
just like using a vm requires the hypervisor to not have security bugs, using docker requires the kernel not to have security bugs
<RX14>
so layering unix users on top of docker on top of a VM is much better
<RX14>
and it removes the downsides of a VM as long as you keep the vm running
<RX14>
since starting up docker is much faster than starting up a vm
<RX14>
s/docker/a container/
<RX14>
and that happers for first-load when we need to build uncached docs
<RX14>
s/happers/matters
<RX14>
im so bad at typing
<Papierkorb>
What's the absolute path to cmd.exe on a common windows installation?
<Papierkorb>
C:\WINDOWS\System32\cmd.exe ?
<oprypin>
i think that's correct
<oprypin>
i mean you can look it up
<RX14>
you can probablt use %windor% or some shortcut for system32
<FromGitter>
<bew> Yeah with about 180 issues/PRs in Next milestone
wontruefree has joined #crystal-lang
<RX14>
i looked at commits
<RX14>
its over 250 commits
<FromGitter>
<straight-shoota> it's also been three months since last release
<Groogy>
ugh I am messing up my drag drop somehow :/
<FromGitter>
<OldhamMade> qq, in elixir you can define a function with a keyword list as the last argument, and it's auto expanded. eg: ⏎ ⏎ ```def foo(a, b, opts) do ... end ⏎ foo(1, 2, opt_a: 1, opt_b: 2)``` ⏎ ⏎ Is it possible to do something similar with Crystal? [https://gitter.im/crystal-lang/crystal?at=59e26146f7299e8f53e986f2]
<Groogy>
hmmm why does it reset to like... start all the time
<Papierkorb>
OldhamMade, hard to tell if it's what you're looking for from your description, but sounds like `def foo(**opts)`
<FromGitter>
<jasonrobot> not sure if that's quite what you're looking for
<FromGitter>
<OldhamMade> @jasonrobot I think that's what I'm looking for, thanks (+@papierkorb)
Creatornator has joined #crystal-lang
<FromGitter>
<jasonrobot> I've got a question of my own: How can I call methods defined in a module? The docs make it look possible, but it the compiler says "expecting token 'CONST' not 'foobar'" (where foobar is the method name)
<Papierkorb>
jasonrobot, if you'd show the source yielding that error, that'd help.
<FromGitter>
<jasonrobot> I get " undefined method 'baz' for FooBar:Module"
<Papierkorb>
jasonrobot, `def self.baz`
<Papierkorb>
imonmyown, ?
<FromGitter>
<jasonrobot> that's the key then
<FromGitter>
<imonmyown> I was referring to @jasonrobot 's question
<FromGitter>
<jasonrobot> I've been using classes the same way. Is there any prefrence for using classes vs modues for namespacing like that?
<Papierkorb>
Modules for namespacing
<Papierkorb>
You can nest stuff into a class too, but if it doesn't make sense to instantiate something, make it a module
<FromGitter>
<jasonrobot> sweet. Thanks a ton @Papierkorb ! I thought I was losing it for a sec there. I might look in to helping out by updating the docs tonight (I'm assuming anyone can contribute?)
<oprypin>
anyone is allowed to contribute, anyway
wontruefree has joined #crystal-lang
bmcginty has quit [Ping timeout: 240 seconds]
bmcginty has joined #crystal-lang
<Groogy>
@asterite you were trying the thing out before? I improved the camera controls now so bit easier to move about^^
snsei has quit [Remote host closed the connection]
<RX14>
i started thinking about writing a simple minecraft clone in crystal but I have way too many sideprojects i need to do
<oprypin>
lol
<Groogy>
writing a simple minecraft clone is way easier than you think
<Groogy>
it's kind of embarrassing
<RX14>
yes but so are all of my other projects
<Groogy>
true
<RX14>
im just lazy
<oprypin>
Groogy, i think that doing any 3d project from scratch is extremely difficult, not specific to minecraft clone
<FromGitter>
<iSarCasm> Does commit history matter for a PR or its always merged as 1 commit?
<Papierkorb>
Who comes up with the package names on Ubuntu?
<Papierkorb>
libz.a is in .. zlib1g-dev
<Groogy>
eh depends I mean. As long as you can compile a shader and render vertices
<Groogy>
yo uare pretty much set for the simplest minecraft clone
<oprypin>
iSarCasm, person who merges it can decide. the options are: rebase commits; rebase and squash into 1 commit; merge commits
<oprypin>
iSarCasm, so my opinion on this: if you intend your PR to be merged as one commit, don't bother squashing into one commit. but if you want it to have the commit history, then you keep up the proper commit history
iSarCasm has joined #crystal-lang
<FromGitter>
<iSarCasm> I think all my contributions best fit into single commit rn
<RX14>
i want to write a bot for this
<RX14>
you can specify your intent as to be squashed or keep history as the author
<FromGitter>
<iSarCasm> So I guess I wont bother if my PR would have commit like "plese fkn work already"
<RX14>
and if you use fixup commits it will handle them at merge time
<oprypin>
bypassing github processes doesnt sound like a good idea
<oprypin>
the pull request may even end up looking as unmerged
<iSarCasm>
Hi
<RX14>
well you have to if you want bors-style merges oprypin
<RX14>
and i want bors-style merges
<Yxhuvud>
personally I wish github had a rebase, but please *also* create a merge commit.
DTZUZU has quit [Quit: WeeChat 1.9]
<oprypin>
that's silly
<Yxhuvud>
(button)
gcds has joined #crystal-lang
<oprypin>
it's worst of both worlds
gcds has quit [Client Quit]
<Yxhuvud>
or the best of both worlds, depending on how you see it. (I also interactively rebase my commits so they contain what I want them to contain.
<oprypin>
github doesnt have traceability for what has already been reviewed so it's bad to rewrite history in pull requests
<RX14>
oprypin, I agree that rust's PR merges look really really ugly
<RX14>
but hopefully we can do something about that
DTZUZU has joined #crystal-lang
snsei has joined #crystal-lang
jackivan88 has joined #crystal-lang
<Papierkorb>
Why on earth doesn't dash's echo support the -e switch
<Papierkorb>
Even better, it just acts as if -e was always present
<oprypin>
Papierkorb, echo is not portable
DTZUZU has quit [Ping timeout: 255 seconds]
<oprypin>
use printf in scripts
<RX14>
unix makes me cry
<RX14>
well, posix i guess
<Papierkorb>
Fuck `dash`
<oprypin>
echo "$arbitrary string" is also a bad idea because arbitrary string can be "-n"
DTZUZU has joined #crystal-lang
<Groogy>
does crystal have local constants? Like only available in a function?
<RX14>
local variables
<RX14>
that you just dont modify
<oprypin>
or private constants in a class
<RX14>
if your function is too long to see if you're modifying it or not
<RX14>
refactor
<Papierkorb>
So, bindgen should now work on Ubuntu 16.04 too. Works on my (virtual) machine™.
<crystal-gh>
[crystal] iSarCasm opened pull request #5121: Remove the possibility to require big_*. Leaving only with require "big" (master...master) https://git.io/vd1Ej
DTZUZU has quit [Ping timeout: 260 seconds]
DTZUZU has joined #crystal-lang
iSarCasm has quit [Ping timeout: 260 seconds]
alex`` has quit [Ping timeout: 255 seconds]
<crystal-gh>
[crystal] akzhan opened pull request #5122: Upgrade Unicode to 10.0.0 (master...upgrade-unicode-to-10.0) https://git.io/vd1gB
wontruefree has quit [Quit: The Internet needs a break and I need a cookie]
<watzon>
Ok important question. Is there a way to determine if a crystal program was compiled with the `--release` flag from within the code?
<watzon>
I want to use dotenv in development, but not require it in production