Please don’t register it! This would make for 3rd way to define public
, with similar downsides, I also think I found a 4th way, that’s near-ideal.
Right now you can:
- Use
public
as (originally, at least) intended for 1.11+ throw LTS users under the bus.
- Use Compat.jl
- Use your Public.jl, and explain it, why not 2.
- [Well, not right now, I’m proposing it.] Add an
Julia_LTS
env variable. It would work as 1. for package developers, use the most natural syntax, and need no explaining, except for (some) LTS users, those forward-looking, see below.
I know people don’t want new features (backported) in 1.10, and that may include in JuliaSyntax.jl. But semver does allow non-exported new features, i.e. when not part of API(?)
So could JuliaSyntax.jl, not be backported in whole to 1.10, but only (possibly) the public
keyword, if simpler, while off by default?
Then it’s an invisible “new feature” (as if not existing), but if you run into trouble with newer packages (you will most likely if you try, not restrict yourself to older), then you can run Julia with that env set, and it fixes in all cases working with the more recent (public
-using without Compat.jl or similar) packages.
Is JuliaSyntax.jl an upgradable standard library? I.e. it has its own version number, and it can be upgraded to 1.11 independently of Julia 1.10? Maybe the env var could do that, not just add one new syntax i.e. public
? If it is upgradable then how would that work, all packages would have to declare using it as 1.11? I want to avoid that, why I think an ENV var is better, as much as I hate adding to many ENV vars…
Would it make any difference? It’s not too late to add to 1.11 (but please don’t until all other options explored), but like the keyword public
if not backported, then has all the same problems. It’s still a hassle, plus you need to explain why one keyword in Julia is special and shouldn’t be used rather its substitute macro…
[I don’t understand this … + eval, for users, (seemingly even worse) alternative to Compat.jl or Public.jl?]
There are at least two classes of LTS users/developers. Those that want to run some already existing software (most likely would work in 1.9, so 1.9 LTS could be done right away), say for FDA approved purposes, and I know the conformance requirements are very high. What I think Matt had in mind. Right now with a new LTS you would be good for say the next three years.
Then there are forward-looking developers, that want to put their software in production for e.g. up to 3 years (not just ca. 1 and need to upgrade regularly), but that software isn’t yet finished. I.e. I want to build new software, or I’m in the middle of it, let’s say it’s ready in one year. Then 1.9 or 1.10 (without public) will be a bad option for LTS, such only works for backward-looking, i.e. the old package ecosystem.
Who are using the LTS, and what for? Can you name some example software used with it? I would love to hear more about Julia in production with or without LTS.
If people are very strict about 1.x+1.y, then I just checked if there’s a workaround, if e.g. 1.10b.1 could be used, but I (probably) discovered a bug? And this should be fixed to not parse (rather than make it ok?)
julia> v"1.10LTS.1"
v"1.10.0-LTS.1"