clojure

timo 2026-01-10T12:28:00.080539Z

I am asking for a friend: When the domain for an artifact of a lib is lost under which it is published. How bad is it and what needs to be done if it is not possible to get the domain back? New domain, change artifact domain and change all the namespaces? I could leave the namespace as it is, right?

borkdude 2026-01-10T13:24:51.680419Z

#clojars question? you don't have to re-verify the domain right?

borkdude 2026-01-10T13:26:21.132269Z

note that republishing a library with new coordinates may end up in multiple versions of the same dependency on the classpath if other libraries still use the old version (happened to me with SCI)

πŸ™ 1
seancorfield 2026-01-10T15:41:50.554369Z

Yeah, if you publish under a new group/artifact, you'll need to change the nses as well to avoid conflicts.

βž• 1
πŸ™ 1
timo 2026-01-13T10:21:10.722789Z

@borkdude no don't have to verify the domain again... do you think i can leave it like that even if i don't have the domain anymore?

timo 2026-01-13T10:21:24.777459Z

I will ask in #clojars

borkdude 2026-01-13T10:22:07.594979Z

it would be the least intrusive for all people, but good you asked

Ertugrul Cetin 2026-01-10T18:14:44.180369Z

It’s been a while since I worked with deftype. I need to change fields in place/mutate them, but I get this error. I know I can introduce a defprotocol with get and set methods, but I would prefer not to if possible. Is there any way to achieve this?

(deftype Foo [^:unsynchronized-mutable x])
=> examples.bunny2.Foo
(def ff (->Foo 1))
=> #'examples.bunny2/ff
(set! (.-x ff) 42)
Execution error (IllegalArgumentException) at examples.bunny2/eval732 (bunny2.clj:1).
No matching field found: x for class examples.bunny2.Foo

Alex Miller (Clojure team) 2026-01-10T18:24:10.647709Z

No, this is the intent - once You make mutable fields, they are private and you should declare an interface around that mutability.

Ertugrul Cetin 2026-01-10T18:38:45.599559Z

Thanks for the info!

oyakushev 2026-01-10T19:14:55.634569Z

You can use definterface for a more lightweight workaround.

πŸ‘ 1