[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.

Generated at Wed Feb 07 21:59:12 UTC 2024 using Jira 9.7.1#970001-sha1:2222b88b221c4928ef0de3161136cc90c8356a66.