[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Changing a cl-defstruct definition in a published package
From: |
Clément Pit-Claudel |
Subject: |
Changing a cl-defstruct definition in a published package |
Date: |
Thu, 12 Jul 2018 16:12:54 -0400 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.8.0 |
Hi all,
I'm sure this has already been discussed, but I couldn't find the relevant
discussion. I'm running into issues trying to update a package without
breaking other packages that depend on it. Advice would be very welcome.
I maintain package A, which contains this:
(cl-defstruct aaa-info
line message)
(provide 'aaa)
Someone else wrote a package B that contains this:
(require 'aaa)
(defun bbb-print-message (info)
(message (aaa-info-message info)))
(provide 'bbb)
Users have installed both packages through package.el. I update A by adding a
new field to the definition of aaa-info, and push the update to ELPA or MELPA:
(cl-defstruct aaa-info
line column message)
Users update using package.el, but this does not cause b to be recompiled.
From this point on, any subsequent call to bbb-print-message to
bbb-print-message fails: for example, (bbb-print-message (make-aaa-info :line 1
:column 2 :message "XYZ")) prints this:
Debugger entered--Lisp error: (wrong-type-argument stringp 2)
message(2)
bbb-print-message(#s(aaa-info :line 1 :column 2 :message "XYZ"))
Similarly, if I update the constructor of aaa-info to give the new 'column'
field a default value, instances created by the previously-compiled B will
still be missing the 'column' slot, leading to all sorts of errors.
What is the recommended way to change a cl-defstruct definition without running
into these issues?
Thanks!
Clément.
- Changing a cl-defstruct definition in a published package,
Clément Pit-Claudel <=
- Re: Changing a cl-defstruct definition in a published package, João Távora, 2018/07/13
- Re: Changing a cl-defstruct definition in a published package, Basil L. Contovounesios, 2018/07/13
- Re: Changing a cl-defstruct definition in a published package, Clément Pit-Claudel, 2018/07/13
- Re: Changing a cl-defstruct definition in a published package, João Távora, 2018/07/13
- Re: Changing a cl-defstruct definition in a published package, Clément Pit-Claudel, 2018/07/13
- Re: Changing a cl-defstruct definition in a published package, Stefan Monnier, 2018/07/13
- Re: Changing a cl-defstruct definition in a published package, Clément Pit-Claudel, 2018/07/13
- Re: Changing a cl-defstruct definition in a published package, Stefan Monnier, 2018/07/13
- Re: Changing a cl-defstruct definition in a published package, Clément Pit-Claudel, 2018/07/15