[CXX-435] Devise strategy for mongo::driver::options extensions (without ABI break) Created: 26/Nov/14 Updated: 23/Feb/16 Resolved: 23/Feb/16 |
|
| Status: | Closed |
| Project: | C++ Driver |
| Component/s: | Implementation |
| Affects Version/s: | None |
| Fix Version/s: | None |
| Type: | Task | Priority: | Major - P3 |
| Reporter: | Tyler Brock | Assignee: | DO NOT USE - Backlog - Platform Team |
| Resolution: | Won't Fix | Votes: | 0 |
| Labels: | None | ||
| Remaining Estimate: | Not Specified | ||
| Time Spent: | Not Specified | ||
| Original Estimate: | Not Specified | ||
| Comments |
| Comment by Andrew Morrow (Inactive) [ 23/Feb/16 ] |
|
We decided as a group that we would not change options without changing ABI. We will wait and see how much pain that causes, and revisit later if we can't live with it. |
| Comment by Adam Midvidy [ 01/Dec/15 ] |
|
When we discussed this we came up with 2 strategies: Option 1 (advocated by me): Make no effort to support adding option extensions while maintaining ABI compatibility. When people want access to new feature, they should be forced to upgrade to newer versions of the driver. This is the approach taken by the C driver. Option 2 (advocated by Jason): Support versioned option structs. For example, current options::find would become options::find_v32 (or something more clever using inline namespaces). Then we can add options::find_v34 and overloads to existing ABI versions without breaking anything. We agreed to do nothing for now as we won't need to choose between Option 1 or 2 until we actually have stable ABI versions shipped and need to add support for new server features. |