Comments (3)
As a package developer I would comment that this seems a bit too intimidating and my mental model just does not work on the provided code snippets. Not talking for everyone, but it just does not feel intuitive and instead brings some complex mental exercise. It's quite difficult to keep in mind potentially different API of one dependency.
Currently, because the view of exported symbols is
consistent for all packages, I would need to update my other dependency to the new
Graphs version before I could use the unrelated new feature.
Why is it a big problem? It is annoying for sure, but this proposal suggests to create a universe of madness in the API's of dependencies. Just fixing your package to a new version of some dependency seems mentally easier than tracking potentially different versions of API of the same dependency. I'm not even saying that proper IDE integration of this proposal might be quite difficult as well.
from julia.
I am not sure if this is a good proposal since I do not fully understand the following two points:
- What is the "version" or "version range" here?
- julia, package, or API (more loosely coupled with the implementation)?
- When is the version determined and when are the version ranges evaluated?
- Depending on the timing of the evaluation, it does not seem to be very compatible with existing
isdefined
switches, precompilation caches, etc.
- Depending on the timing of the evaluation, it does not seem to be very compatible with existing
My underlying concern is that this may not be very compatible with the SemVer management of packages and stdlibs.
Edit: This seems to be a problem of my poor comprehension skills.
from julia.
One additional worry I have with this is that this yet again doesn't handle "small" API changes relating to a single signature/method. For an already exported name, it's impossible to communicate that a new signature is now supported API from a given version onwards. Is the intended solution to use a new name so that it can be versioned? That seems backwards to me.
from julia.
Related Issues (20)
- `@test`'s use of kwargs is confusing and limits extensibility HOT 1
- Julia fails to build on a clean system due to memory error (in curl?) HOT 5
- Allow uplo='F' for Symmetric and Hermitian wrappers? HOT 2
- Shipped Windows binaries with new codesigning need `.ji` checksums updated HOT 3
- Emit OSC 9;9 escape sequences on Windows HOT 1
- Ambiguous behavior of Tuple constructor with mismatched array length HOT 2
- RetentionParameterEstimator hits incorrect assert in emit_masked_bits_compare
- Monorepo Packages via Submodules/Subpackages: Support in Pkg and Julia Compiler HOT 14
- Circular dependency detected for Symbolics.jl on Julia 1.11.0-rc2 HOT 7
- [REPL] Autocompletion of `ModuleName.@macro_name` is broken
- [REPL] Autocompletion of `@benchmark A .= A setup=(A=` is broken
- Deadlock doing I/O on a foreign thread while the main thread is blocked HOT 5
- `Conditional` lattice element is semantically broken in the presence of SSAValues HOT 1
- `Base.summarysize(::Symbol)` returns zero
- Mention accuracy of `Base.summarysize` in docstring
- `__init__` side effects order is not defined, such that any global effects from `__init__` are a data race HOT 3
- Extension cycles are problematic (long `precompile` times, difficult to understand/resolve) HOT 4
- Add tests about layout of Int128
- Defining `sum(f, ::MyArray; dims)` breaks `sum(::MyArray)`
- Choose number of OpenBLAS threads based on process affinity HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from julia.