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
Upcoming version problem with the Emacs release #7
Comments
Artur Malabarba notifications@github.com writes:
Indeed, I just realized that as well.
I don't understand how you would do that. what about putting seq.el 2.x into ELPA as well? Then Emacs 25.x users could still get the latest version of seq.el with
Nico |
I'm not sure either. =/
Elpa doesn't know how to advertise multiple versions of the same package. Even if it did, I don't think it would work. Say a package At the heart of this issue is the fact that seq 2.x doesn't necessarily include all the features in seq 1.y, even though it's a higher version. Here's another idea. What if we had a single
This way there is only one version of the seq package. Packages that want some recent functionality added in minor-version 12 can simply depend on 2.12, regardless of the Emacs version. The only issue I can think of is that when |
Artur Malabarba notifications@github.com writes:
Of course, you are right.
I think that would work.
Could we declare these functions, just to get rid of the compilation |
Yes, that should work. |
Actually, there will probably be more problems involved with this byte-compilation. For instance, these two lines will throw errors:
So you would have to wrap them with something like this (I think):
This will prevent any errors, but there'll still be a ton of byte-compiler warnings for various reasons. An alternative would be to prevent the compilation of this file (by adding
The problem is that this last part won't work because |
that's problematic. I think the best thing to do would be to have seq.el require seq-25.el or seq-24.el (as separate ELPA packages) depending on the version of Emacs, but I don't think we can to that today. |
Yeah. Wonder if there's another way to prevent byte-compilation only on some emacs versions. |
Artur Malabarba notifications@github.com writes:
I think I'll explain the issue on emacs-devel. |
Yes, that seems like a good idea! |
What idea? 😮 |
nothing, I answered the to wrong issue :) |
Artur Malabarba notifications@github.com writes:
An ugly solution would be to define the macro, to avoid any (eval-when-compile
(unless (fboundp 'pcase-defmacro)
(defmacro pcase-defmarco (&rest _)))) |
Hm, that might work. Instead of actually defining the macro, it might be more polite to just add it to the variable |
I've never used this variable, can I just add the definition as a list |
Yes, I think something like this should do
(And similarly for any other macros we need to define.) |
Hey Artur and Nicolas, I must be misunderstanding something, but that confusion may be shared with other users: what would be wrong with making sure that the current MELPA IOW, my proposal is to make 2.current equal to 1.current by updating the version bundled with Emacs, and then use a higher number for this library. Would that not work? IIUC no packages would be broken by the update to Emacs 25 (since Emacs 25's Is there something wrong with this? |
@cpitclaudel, IIUC the fundamental issue is that ELPA |
The version of seq that's in Emacs right now uses some new functionality that's part of Emacs 25. If we updated the seq package on Melpa to be the same, then it would have to drop support for Emacs 24. Which is not viable. |
@johnmastro I don't think that's incompatible with the solution I outlined. @Malabarba I was suggesting updating the Emacs package to be the same as the one on Melpa, not the other way around :) My suggestion was to update the Emacs one to be interface-equivalent to the current Melpa one (so that nothing breaks when users update to Emacs 25), then bump the version of the Melpa one to 2.5 or something, so everyone picks it up when updating. |
Oops. My bad.
The Emacs version is already interface-equivalent with the Melpa version. The problem is that the Emacs version offers additional functionality that the Melpa version doesn't offer. Do you see what I mean? So the problems we have are:
Given those three restrictions, the only solution I see is to make the Melpa package provide both versions (the Emacs 25 and the Emacs 24 versions) which then allows it to follow the same versioning scheme as the Emacs 25 version (2.x). But it's possible I misunderstood your suggestions. |
Hmm. Can we implement the defgeneric and pcase functionality in Emacs 24? |
Clément Pit--Claudel notifications@github.com writes:
That's not really required. The only thing that we'll miss in the Emacs |
Hi Nico, I just realised a problem that we're about to face. Once Emacs 25 is released,there'll be a version of seq.el (2.x) in the wild, with a fixed set of features.
Later on, if you add new features to the seq.el that's on Elpa (whose version is 1.y) these features will be impossible to use without issue.
For instance, let's say you add seq-map-indexed on version 1.15, and I want to use it on a package. For that, I would require seq.el version 1.15 on my package.
However, I have no guarantee that I'll get that. If the user is running Emacs 25.1, they'll have a seq.el installed with version 2.something (which satisfies the dependency) but does not contain map indexed.
The same will happen for all newly added features. And seriously reduces the usefulness of seq as dependency package.
I understand that the version number seq.el inside Emacs core is marked as 2.x because it has the new generic functionality that the Elpa version will never have. However, maybe this generic functionality could be made available as a separate package (it could still be part of Emacs core) and the two seq.el packages could be allowed to converge to the same version number (even if their implementation differs).
Cheers
The text was updated successfully, but these errors were encountered: