Kenton: Are the type IDs likely to have collided?

Ian: If not, you might be able to hand-annotate the impacted types
with the *already
generated* IDs and then change the file ID. This offers the possibility of
a clean changeover at the next breaking version change.

Kenton: what *other* IDs will change if the file ID is changed that Ian
might need to consider here?


Jonathan


On Wed, Aug 2, 2023 at 3:37 PM 'Kenton Varda' via Cap'n Proto <
[email protected]> wrote:

> Yes, changing the file ID will change the IDs of all types declared
> within, unless they have explicitly declared their own IDs.
>
> This only really matters if you are using RPC. Type IDs of interfaces are
> part of the wire protocol. Type IDs of structs and enums are not really
> used for anything, unless your application itself is using them. So it's
> usually fine to change the type IDs of structs and enums.
>
> So if you are only using serialization, not RPC, just go ahead and change
> one of the file IDs. If you are using RPC, you will need to manually
> override the IDs of the interface types in the file to keep them consistent
> with what they were originally, and then you can change the file ID.
>
> Of course, if both files happened to declare an interface with the same
> name, those interfaces will have the same ID. In this case you have big
> problems. You will have to make a breaking change to one of those two
> interfaces.
>
> -Kenton
>
> On Tue, Aug 1, 2023 at 3:02 PM 'Ian Wilson' via Cap'n Proto <
> [email protected]> wrote:
>
>> Hi all, apologies for jumping on this thread a few years later.
>>
>> I have a similar question: suppose I have 2 different capnp files with
>> the same file ID.
>>
>> # file foo.capnp
>> 0xabbeabbeabbeabbe;
>>
>> struct Foo {
>>   val @0 : UInt32;
>> };
>>
>> # file bar.capnp
>> 0xabbeabbeabbeabbe;
>>
>> struct Bar {
>>   val @1 : UInt32;
>> };
>>
>> In my project, someone copy/pasted a file leading to two different
>> schemas with the same file ID, 0xabbeabbeabbeabbe.
>> I find a use case where I want to import both of these capnp files and
>> their types into a new one - of course this runs into a compilation error
>> with the duplicate IDs.
>>
>> I'd like to generate a new file ID to replace one of these, but I'm not
>> sure if this would impact the autogenerated type IDs and break other
>> systems.
>>
>> Would merely changing the file ID affect the types that already exist in
>> these files?
>>
>> On Friday, November 27, 2020 at 7:27:09 AM UTC-8 [email protected]
>> wrote:
>>
>>> On Wed, Nov 25, 2020 at 3:43 PM Matt Stern <[email protected]> wrote:
>>>
>>>> When I try to run capnp compile, I get the following:
>>>>
>>>> error: Import failed: /capnp/java.capnp
>>>>
>>>
>>> You will need to specify the same -I flags (import path) that you
>>> normally specify to `capnp compile` when running the Java code generator.
>>>
>>> If I comment out the Java bits and just compile in C++ (which works for
>>>> me), will this have any effect on the unique IDs for the structs in my
>>>> schema file?
>>>>
>>>
>>> No, the auto-generated IDs do not in any way depend on the contents of
>>> other files. Auto-generated IDs are constructed by concatenating the parent
>>> scope ID and the type name, and then taking a hash of that.
>>>
>>> -Kenton
>>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "Cap'n Proto" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/capnproto/2970b31f-a1aa-45ac-bc6b-a95beb0b02b9n%40googlegroups.com
>> <https://groups.google.com/d/msgid/capnproto/2970b31f-a1aa-45ac-bc6b-a95beb0b02b9n%40googlegroups.com?utm_medium=email&utm_source=footer>
>> .
>>
> --
> You received this message because you are subscribed to the Google Groups
> "Cap'n Proto" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/capnproto/CAJouXQnk4s5N2adNTi8OwNG0SA1wzr-jrk8SzjVf3kQY%3DSrNGA%40mail.gmail.com
> <https://groups.google.com/d/msgid/capnproto/CAJouXQnk4s5N2adNTi8OwNG0SA1wzr-jrk8SzjVf3kQY%3DSrNGA%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"Cap'n Proto" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/capnproto/CAJdcQk2OHOawXLvmeQ-uwGotA%2BLuasd%2B7fmCswiJkSHn3AZEzQ%40mail.gmail.com.

Reply via email to