Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update installation.md #57156

Closed
wants to merge 1 commit into from
Closed

Update installation.md #57156

wants to merge 1 commit into from

Conversation

yVieta
Copy link

@yVieta yVieta commented Jan 24, 2025

Adding Nix package manager: There are much more options with Nix but the basic commands are in this commit.

Adding Nix package manager: There are much more options with Nix but the basic commands are in this commit.
@LilithHafner
Copy link
Member

Thanks for offering this. We typically recommend that folks use the official binaries rather than custom builds of Julia so that results are more reproducible across platforms and any bugs that are found can be reproduced and fixed. Looking at the docs here, I'd guess that the nix package is a custom build, but I'm not sure. Do you happen to know weather these commands will

  1. install Juliaup which will let the user select their preferred Julia version and provide official binaries
  2. download official Julia binaries, or
  3. build custom binaries
    ?

@yVieta
Copy link
Author

yVieta commented Jan 26, 2025

  1. Juliaup on home user in declarative systems (NixOs, GNU Guix System, etc. ) which also having the feature immutable home files. Tools like Juliaup, rustup, rye, etc. do not work properly on default because of the dynamic vs. static .
  2. The Julia packages on Nix are build from source through pulling from the original Julia versions. See here
  3. Custom Binaries can be achieved through Nix Flake which is a feature to make an own revision by pulling existing custom binaries or building custom ones.
    I can work on an official Julia nix flake that by creating a flake for the official Julia build. It can also improve workflows where all the tools are in the development environment of nix flake for building Julia. It can also saving time when a flake of Juliaup is there where existing builds can be pulled from the cache system of Nix. The build of the Binaries there have to be reproducible bit by bit to be equivalent to the regular Juliaup.

@LilithHafner
Copy link
Member

Thank you for bringing Julia to Nix in a way that is more native for Nix folks. Building Julia is a fairly tricky and involved process. Starting with a copy of the official source code is a good start, but by no means guarantees that the result will be a functional julia binary. The documentation of this Nix package seems to indicate that it does not provide a julia binary that passes tests:

You are very likely to need to use the test suite to locate and address issues and in the end passing it, while only disabling a minimal set of broken or incompatible tests you think you have a good reason to disable, is your best bet at arriving at a solid derivation.

Consequently, it seems likely that users of this binary will run into bugs attributable to that julia binary. In that event, they may report those bugs to https://github.com/JuliaLang/julia where they will be disjointed to find out that their bug reports will not be accepted because we typically only accept and fix bugs that can be reproduced on an official julia binary.

It seems irresponsible for us at JuliaLang/julia to recommend an instillation method on our docs that, if followed, will result in bugs that we won't attempt to fix.

I'm certainly willing to consider adding additional ways to install Julia to this list, including via Nix, but do not want to include this particular approach. I'm closing this PR to indicate my assessment that it is unlikely to be merged but am still willing to continue discussion. I'm also not the only maintainer here, so someone else may have other opinions.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants