savi-lang / savi

A fast language for programmers who are passionate about their craft.
BSD 3-Clause "New" or "Revised" License
155 stars 12 forks source link

Allow `Core` library to managed as dependency #366

Open mneumann opened 1 year ago

mneumann commented 1 year ago

As of now, I need to copy the Core library to /usr/local/core in order to get picked up by other libraries.

Instead, I'd like to have an explicit dependency in manifest.savi about the version of Core (and the Savi compiler version, too).

jemc commented 1 year ago

As of now, I need to copy the Core library to /usr/local/core in order to get picked up by other libraries.

For whatever it's worth (mainly for others reading along) Savi does not require the savi binary or the core library to be installed in any particular place on your system - it can be installed anywhere as long as the relative paths among the pieces of the distribution are maintained relative to one another. So it's only true that you need to put the core library at /usr/local/core if you chose to put the savi binary at /usr/local/bin/savi. I don't recommend this pattern.

Instead I recommend putting the entire distribution of Savi in an isolated folder somewhere, and adding that folder's bin subdirectory to your PATH.

the version of Core (and the Savi compiler version, too).

I think we won't be able to cleanly version the core library version separately from the Savi compiler version because they are fairly entangled (via compiler intrinsics in the internal implementation details of the core library). So I think we need to treat the two as having one version, which represents the version of the language and the core data types available in the language.

I think we should call this the Savi version in the manifest.

jemc commented 1 year ago

Marking this as being part of the 1.0 milestone because we definitely need to answer this question before 1.0 stabilization.