Comments (3)
Are you thinking about compatibility of serialized data?
For binary formats names don't matter, so changing a name is not a breaking change.
Obviously changing names may be a breaking change for text protocols like JSON and Xml. Struct names usually don't matter (an exception is Xml with namespaces) but renaming a field is always a breaking change. SimpleJSON protocol allows you to remap field names using JsonName
attribute, e.g.:
struct Record2
{
[JsonName("Name")]
0: string FirstName;
}
from bond.
Thank you.
Yes, I was thinking about the compatibility of serialized data.
I was also thinking about what facilities are available for dealing with changes in schema.
From reading the "Young Person’s Guide to C# Bond" I noticed there is:
- polymorphism (if new fields are added)
- converters (for changing the data type of a field)
Are there any other facilities for compatibility / conversion as schema is modified over time?
from bond.
The best practice is to only make non-breaking schema changes (adding/removing optional fields) and then, in general, you don't have to do anything to handle schema changes. This is because with non-breaking changes Bond is forward and backward compatible, i.e. old code can read new data and new code can read old data.
Changes which are breaking and thus should be avoided are adding/removing required fields and changing changing type or default value of an existing field. Also adding additional bases to existing inheritance hierarchy is a breaking change (you can of course derive additional schemas from existing ones w/o breaking anything).
from bond.
Related Issues (20)
- [ci] CI image Dockerfile needs to be paramatarized on FROM registry
- This repo is missing important files
- c#: Add ToString() implementations for compiled bond objects HOT 1
- Merge API support for C#? HOT 2
- Bond generated headers don't work for clang in c++20 HOT 2
- Include enums in Bond runtime schema HOT 1
- cmake/Config.cmake looks for the EOLed Python-2.7 HOT 1
- Deserialization/serialization under Linux is 7x-10x slower than Windows HOT 2
- [C#] gbc.exe: Exec format error inside mcr.microsoft.com/dotnet/sdk:latest docker image. HOT 3
- "openFile: does not exist (No such file or directory)" on Linux HOT 3
- [C#] Deserializing bond-like strings into dynamic type HOT 2
- Linux build error - ghc: panic! HOT 4
- Support dotnet trimming HOT 5
- Target `netstandard2.0` for c# HOT 1
- C++: GCC: Double/Float comparison warning HOT 2
- Is this project still being maintained? HOT 2
- emit #nullable enable pragma in generated C# code
- bond on aarch64 is failing with unsupported LLVM
- [msvc][cpplatest] bond failed to build with msvc option /std:c++latest due to error C2027 and error C2061
- Upgrade to Stack lts-22.12 for aarch64 support
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from bond.