ChanServ changed the topic of #crystal-lang to: The Crystal programming language | | Fund Crystal's development: | GH: | Docs: | Gitter:
ur5us has quit [Ping timeout: 264 seconds]
notzmv has quit [Ping timeout: 268 seconds]
<FromGitter> <> But is it up to date and still works?
notzmv has joined #crystal-lang
<FromGitter> <Blacksmoke16> it takes you up to `0.36.1` which should then be able to compile 1.x yes
<FromGitter> <Blacksmoke16> tho whats the reason you need to go from the beginning? might be able to just cross compile
<FromGitter> <> I'd like to package crystal for GNU Guix
<FromGitter> <> In a way that captures the whole bootstrap
<FromGitter> <> It would be packaged in GNU Guile (Scheme)
<FromGitter> <Blacksmoke16> do current linux binaries not work on it?
<FromGitter> <> I had started here a while back:
<FromGitter> <> not sure what you mean
<FromGitter> <> Guix, is a package manager
ur5us has joined #crystal-lang
<FromGitter> <> The goal would be to write the Guile code that packages crystal through all the stages of the bootstrap
<FromGitter> <Blacksmoke16> so that you can install any version?
<FromGitter> <Blacksmoke16> so anytime someone wants to install/upgrade crystal they'd have to go thru the whole bootstrap process again?
<FromGitter> <> nope
<FromGitter> <> They would just install the binary
<FromGitter> <Blacksmoke16> gotcha
<FromGitter> <> But the whole process would be encoded with Guix as a Guile scheme program that is reproducible
<FromGitter> <Blacksmoke16> sounds like a plan, have to see how it turns out
<FromGitter> <> I have to find the time to understand the bootstrap scripts
<FromGitter> <> and then to figure out how/what parts would need to be handled by Guile and how
<FromGitter> <> might be a rabbit hole
<FromGitter> <Blacksmoke16> could you just start off with a pre-built 1.x binary
<FromGitter> <Blacksmoke16> like is it really necessary to go thru the whole bootstrapping process when the existing linux binaries on the GH release would prob work just fine
<FromGitter> <> Not sure what you mean by start off
<FromGitter> <Blacksmoke16> i.e. use that as a fallback if the user doesnt already have crystal installed
<FromGitter> <Blacksmoke16> or the system*
<FromGitter> <> I can use that already yes
<FromGitter> <> It's available
<FromGitter> <Blacksmoke16> so then what do you need the bootstrap script for then?
<FromGitter> <> The idea is to have the whole bootstrap story
<FromGitter> <> In GNU Guix
<FromGitter> <> I don't have to have it
<FromGitter> <> I can just use the binary and not worry about it
<FromGitter> <Blacksmoke16> is prob safe to not worry about pre 1.x versions, in which case you just need a 1.x binary to compile the latest version of the code directly
<FromGitter> <Blacksmoke16> if that makes things easier
<FromGitter> <> Why would it be safe to not worry about pre 1.x versions?
<FromGitter> <Blacksmoke16> just that it prob wouldnt be real common for someone to need to use one of those versions
<FromGitter> <> If there is a source code history for the compiler then Guix wants to capture that
<FromGitter> <> Yup it's not common
<FromGitter> <> most package managers do not go through this level of reproducible detail
<FromGitter> <> Guix wants to eliminate depending on binaries
<FromGitter> <> having to trust binaries
<FromGitter> <Blacksmoke16> kinda the con of self hosted compilers
<FromGitter> <> like chicken scheme?
<FromGitter> <> ya
<FromGitter> <Blacksmoke16> so yea, that bootstrap script prob your best bet then
<FromGitter> <> Yup, it's the starting point for making the Guix package
<FromGitter> <> Not sure if I have the motivation to do it though tbh
<FromGitter> <Blacksmoke16> my understanding is it starts off with a very early crystal version when it was written in Ruby, and slowly works its way up thru the Crystal/llvm versions up until the last pre 1.x release
<FromGitter> <Blacksmoke16> i.e. i imagine it takes quite a long time
<FromGitter> <> Maybe someday
<FromGitter> <> Or someone else will do it
<FromGitter> <Blacksmoke16> :shrug:
<FromGitter> <>
<FromGitter> <Blacksmoke16> this is the first i heard about Guix
<FromGitter> <> This is the early ruby version
<FromGitter> <> I had packaged it in 2021
<FromGitter> <> that was my start at this ha
<FromGitter> <> I haven't worked on it since
<FromGitter> <Blacksmoke16> 162 steps now ;)
<FromGitter> <>
<FromGitter> <> I maintain a Guix channel with some friends:
<FromGitter> <> cool things about Guix versus Nix is that Guix uses a full fledged programming language
<FromGitter> <> So I was able to generate that website with Guix pretty nicely since Guile has a pretty good standard library
<FromGitter> <Blacksmoke16> nice one
<FromGitter> <> 162 steps ha
<FromGitter> <> I might try to run the bootstrap script first
<FromGitter> <> and study those first
<FromGitter> <> just to understand the process
<FromGitter> <Blacksmoke16> 👍
<FromGitter> <Blacksmoke16> sounds like a plan
<FromGitter> <> then once I hack on that without Guix and understand it then I can think about how the heck I can invent a solution with the Guix infrastructure
<FromGitter> <> maybe macros could be used or something to facilitate the process
<FromGitter> <Blacksmoke16> most of it is the same thing over and over, but with certain core updates every while
<FromGitter> <> Have you tried running the bootstrap scripts before?
<FromGitter> <Blacksmoke16> nope
<FromGitter> <> Who maintains them?
<FromGitter> <> I wonder if someone is still maintaining the scripts
<FromGitter> <Blacksmoke16> i dont see why it *wouldnt* work, it seems up to date, at least until the version before 1.x
<FromGitter> <> Why does it matter (
<FromGitter> <Blacksmoke16> unless some of the packages/stuff its doing had breaking changes itself
<FromGitter> <> could be
<FromGitter> <Blacksmoke16> oh, that was you
<FromGitter> <Blacksmoke16> 😅
<FromGitter> <> If those bootstrap script were in the Guix then you wouldn't have the breakages
<FromGitter> <> you'd be able to freeze the state of it more easily
<FromGitter> <> ah ok
<FromGitter> <> ha
<FromGitter> <> I had forgotten about that
<FromGitter> <> also
<FromGitter> <> installing all these dependencies in the readme is a tedious pain:
<FromGitter> <> in Guix it would be automated
<FromGitter> <> `guix build crystal`
<FromGitter> <> The above command would run the whole bootstrap process once encoded in Guile
<FromGitter> <> just a ton of work to do it
<FromGitter> <> it would take many hours I think
<FromGitter> <Blacksmoke16> :shrug: or i can just run `sudo pacman -S crystal` and be done with it :)
<FromGitter> <> and much research that is not coding
<FromGitter> <> Yes or just copy the binary off of GitHub
<FromGitter> <Blacksmoke16> pretty much :P
<FromGitter> <> Or install crystal in a docker container
<FromGitter> <Blacksmoke16> yup
<FromGitter> <Blacksmoke16> are official images provided
<FromGitter> <> But it wouldn't be the bootstrap
<FromGitter> <> but maybe whatevs
<FromGitter> <Blacksmoke16> does the avg user really care?
<FromGitter> <> I think it would still be cool to do
<FromGitter> <Blacksmoke16> yea sounds like a fun (not so little) project
<FromGitter> <> Yup, but I care
<FromGitter> <> But maybe I don't care enough also just like the avg user
<FromGitter> <> That's why I haven't done it yet
<FromGitter> <> because I can just curl the binary and be done with it
<FromGitter> <> so whatevs
<FromGitter> <Blacksmoke16> even if you're porting things to a new system you can just cross compile
<FromGitter> <Blacksmoke16> even if thats starting with `1.0.0` binary
<FromGitter> <> sure
<FromGitter> <> but this is a different goal
<FromGitter> <> it's the idea of capturing the whole bootstrap process in Guix
<FromGitter> <Blacksmoke16> have to keep it on the back burner for when you feel motivated to do it
<FromGitter> <> ya
<FromGitter> <> I've been doing that for a while now
<FromGitter> <> I'd like to package crystal and then mint
<FromGitter> <Blacksmoke16> could you work backwards so you get a more useful product sooner?
<FromGitter> <> I could
<FromGitter> <> I could just package it first in a less ambitious way
<FromGitter> <> and then work backwards
<FromGitter> <> to fill in the missing pieces of the bootstrap history
<FromGitter> <Blacksmoke16> exactly yea
<FromGitter> <Blacksmoke16> could even just kick the bootstrap process off with the `1.0.0` binary and build each version from there
<FromGitter> <Blacksmoke16> aye
<FromGitter> <Blacksmoke16> further you go back the more complex things get
<FromGitter> <> Guix doesn't allow binaries to be included upstream
<FromGitter> <> So I would have to do it in a custom channel
<FromGitter> <> like the one I shared above
<FromGitter> <> They are pretty hard core about that
<FromGitter> <> no binaries
<FromGitter> <> not even in tests
<FromGitter> <> that's what happened here:
<FromGitter> <> With pybare
<FromGitter> <> The test suite uses binaries for testing
ur5us has quit [Ping timeout: 264 seconds]
<FromGitter> <> Guix maintainers want me to compile those too ;()
<FromGitter> <Blacksmoke16> have fun :P
<FromGitter> <Blacksmoke16> anyway i wish you luck, im off to bed o/
<FromGitter> <> They don't care that it's only used for the tests
<FromGitter> <> no vendoring of binaries either
<FromGitter> <> gnight!
<FromGitter> <> nice chatting
<FromGitter> <> we have an irc channel if you ever want to hang out: #whereiseveryone on libera
<FromGitter> <> there's a matrix bridge also
_ht has joined #crystal-lang
walez__ has joined #crystal-lang
walez__ has quit [Remote host closed the connection]
walez__ has joined #crystal-lang
Sankalp has quit [Ping timeout: 252 seconds]
Sankalp has joined #crystal-lang
walez__ has quit [Quit: Leaving]
sagax has quit [Remote host closed the connection]
notzmv has quit [Ping timeout: 268 seconds]
jmdaemon has quit [Ping timeout: 248 seconds]
notzmv has joined #crystal-lang
luna has joined #crystal-lang
Sankalp has quit [Ping timeout: 246 seconds]
luna has left #crystal-lang [#crystal-lang]
Sankalp has joined #crystal-lang
luna has joined #crystal-lang
luna has left #crystal-lang [#crystal-lang]
dmgk has quit [Quit: ZNC -]
dmgk has joined #crystal-lang
<FromGitter> <> Would people be interested in a regular meetup to work on packaging crystal for Guix via the bootstrap?
<FromGitter> <> It would be a Guile Scheme meetup about Crystal essentially
notzmv has quit [Ping timeout: 268 seconds]
jmdaemon has joined #crystal-lang
notzmv has joined #crystal-lang
_ht has quit [Remote host closed the connection]
<FromGitter> <> That should be easy though
<FromGitter> <> Guix is are epic
notzmv has quit [Ping timeout: 250 seconds]
ur5us has joined #crystal-lang
walez__ has joined #crystal-lang
notzmv has joined #crystal-lang
ur5us has quit [Ping timeout: 246 seconds]
walez__ has quit [Ping timeout: 265 seconds]