Skip to content
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

Determine how to handle system transcode from Ion 1.0 to Ion 1.1 #1002

Open
tgregg opened this issue Nov 26, 2024 · 1 comment
Open

Determine how to handle system transcode from Ion 1.0 to Ion 1.1 #1002

tgregg opened this issue Nov 26, 2024 · 1 comment

Comments

@tgregg
Copy link
Contributor

tgregg commented Nov 26, 2024

We've decided not to support Ion 1.0-style symbol table syntax in Ion 1.1. This means that doing a system-level transcode from Ion 1.0 to Ion 1.1 cannot maintain that syntax. I see a few options:

  1. The library prohibits system-level transcoding from Ion 1.0 to Ion 1.1. That way an Ion 1.0 symbol table cannot be transcoded verbatim to an Ion 1.1 stream, which could result in symbol IDs that cannot be resolved because the symbol table is no longer a system value.
  2. The library intercepts Ion 1.0 symbol tables when transcoded to an Ion 1.1 writer, converting them to Ion 1.1 encoding directives.

Option 2 may be nice to have, but it requires a fair amount of code. It should be noted that system-level transcoding is a private API that should only be leveraged in tooling authored by Ion developers. I'd lean toward Option 1 until we identify a clear need for Option 2.

@tgregg
Copy link
Contributor Author

tgregg commented Nov 26, 2024

Another option we just discussed is that we could support Ion 1.0-style symbol tables in Ion 1.1, and that encountering one would prefix the resulting symbol table with the Ion 1.0 system symbols. This would make it possible to do a system-level transcode from Ion 1.0 to Ion 1.1 without transforming symbol IDs.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant