> Can you show how `package-alist` changes for `-go-mode` for you?

To reproduce the case we need emacs 29.0.91 and

    ~/.emacs.d/elpa/go-mode-20170726.555/...
    ~/.emacs.d/elpa/go-mode-20220114.2239/...

Run `emacs -Q` and `M-x package-initialize`.

After that `package-alist` contains

   (go-mode #s(package-desc :name go-mode :version
                            (20170726 555)
                            :summary "Major mode for the Go programming language" :reqs nil :kind nil :archive nil :dir "/home/eab/.emacs.d/elpa/go-mode-20170726.555" :extras
                            ((:keywords "languages" "go")
                             (:url . "https://github.com/dominikh/go-mode.el")
                             (:commit . "99b06da201afb91e8db0c525c0f3c3590fd92fa6"))
                            :signed nil)
            #s(package-desc :name go-mode :version
                            (20220114 2239)
                            :summary "Major mode for the Go programming language" :reqs
                            ((emacs
                              (26 1)))
                            :kind nil :archive nil :dir "/home/eab/.emacs.d/elpa/go-mode-20220114.2239" :extras
                            ((:url . "https://github.com/dominikh/go-mode.el")
                             (:keywords "languages" "go")
                             (:maintainer "The go-mode Authors")
                             (:authors
                              ("The go-mode Authors"))
                             (:commit . "fa2693278637f56759480d2bf203bb8aad107230"))
                            :signed nil))

and `load-path` contains

    "/home/eab/.emacs.d/elpa/go-mode-20170726.555"

On Mon, May 29, 2023 at 11:25 PM Stefan Monnier <monnier@iro.umontreal.ca> wrote:
>> In your commit 04c4c578, package directories became NOSORT due to (fourth t
>> argument)
>>     (directory-files dir)
>> replaced by
>>     (directory-files dir t "^[^.]" t)
>>
>> It affects package-alist forming.

Can you show how `package-alist` changes for `-go-mode` for you?

>> For example, there are old and new
>> versions of a package in my elpa directory:
>>
>> go-mode-20170726.555
>> go-mode-20220114.2239
>>
>> After (package-initialize)
>> in emacs 28 (require 'go-mode) gives 2022 version, e.g. the latest version
>> of a package in most cases, directory-files default sorting works.
>> In emacs 29.0.91 I get old 2017

That shouldn't be the case (unless you specifically asked for it via
something like `package-pinned-packages`).

>> version because of NOSORT unpredictable version order in
>> package-alist and hence random paths in load-path

In its, this shouldn't make a difference, because it just changes the
order in which we consult the `<PKG>-pkg.el` descriptors to populate
`package-alist` whereas the *activation* of the `go-mode` package is the
one that should choose the one with the higher version number.

> No, this is not a feature but I think it might have uncovered a bug.
> Relying on the ordering of file names (which IIRC is lexiographic not
> numeric) is not a robust way to decide what packages should be preferred
> when loading descriptors.  Could you submit a bug report to
> bug-gnu-emacs@gnu.org so that this issue can be discussed with the other
> maintainers?

Barring bugs, `package-alist` can be filled in any order (so the `nosort`
option shouldn't make a difference): we apply the proper sorting
(i.e. newest version at the front) in `package-process-define-package`.


        Stefan



--
__________________________

С уважением,
Бойков Евгений Алексеевич
сот. 8-924-202-25-65
e-mail: artscan@list.ru