Comment by lifthrasiir

3 months ago

Isn't that a (built-in) package manager if it works for general packages? Or does it work only for selected dependencies?

From what I've seen. The Odin has three package collections: `base`, `core` and `vendor`.

`base` is intrinsically necessary to port Odin. `core` seems to be its standard library, your `libc`, `xml`, etc.

And `vendor` is everything else. So you basically get the Python's '`core` is where packages go to die' approach iff they take backwards compatibility seriously. Otherwise, they have breaking changes mid-language version change.

EDIT: Package collections not packages per gingerBill.

  • Those are library/package collections which contain multiple different packages, not the packages themselves.

    And we will take backwards compatibility seriously when we hit 1.0, and only "break" on major versions.

    • > And we will take backwards compatibility seriously when we hit 1.0, and only "break" on major versions.

      I'm talking about post 1.0 language choices:

      - Choose backwards compatibility. Packages frozen in time, you get "Packages go to std to die." - Choose to break backwards compatibility. The ecosystem is split, some choose to go Odin 2 some are Odin 3.

      6 replies →

  • So they are trying the Linux distribution model of packages, right? (Compare `vendor` with, say, Ubuntu's `universe`.)

It doesn't necessarily "manage" the packages. It just sees them in your project and compiles them. You manage them yourself.

  • If that's what happens, I think in the following claim:

    > Odin's compiler knows what a package is and will compile it into your program automatically.

    ...the word "automatically" should be dropped. Of course compilers compile any supplied dependency "automatically", but it is so obvious that we don't often use the adverb just for that.

    • > Of course compilers compile any supplied dependency "automatically", but it is so obvious that we don't often use the adverb just for that.

      They often don't though. Rust, C, C++ need either long command line invocations or a build system for anything beyond hello world. Zig needs a build file for anything beyond hello world.

      With Odin, you just invoke "odin build ." and all your dependencies are taken in without needing a build system, build file, make file, etc...

      6 replies →