It also allows for non-backward-compatible API changes in non-major releases.

On Fri, Jun 15, 2018 at 12:38 PM, Walt Karas <wka...@oath.com> wrote:
> It potentially could allow moving to a new major release without the
> need to immediately update all one's plugins.
>
> Are there any TS users that continuously deploy from master and don't
> wait for releases?
>
> On Fri, Jun 15, 2018 at 12:04 PM, Leif Hedstrom <zw...@apache.org> wrote:
>> Hmmm, this sounds awful :). What is the intent  / problem solved here?
>>
>> We can break APIs between major versions, so why do we need this?
>>
>> — leif
>>
>>
>>> On Jun 15, 2018, at 11:00 AM, Walt Karas <wka...@oath.com.INVALID> wrote:
>>>
>>> We could have a ts2.h include file that included ts.h.  It would
>>> contain stuff like:
>>>
>>> #define TSExistingStructType TSExistingStructTypeVer2
>>>
>>> typedef struct
>>> {
>>>  ... fields ...
>>> } TSExistingStructTypeVer2;
>>>
>>> #define TSExistingAPIFunc TSExistingAPIFuncVer2
>>>
>>> void TSExistingAPIFuncVer2(... formal parameter list ...);
>>>
>>> As well as new declarations / definitions.  Once all plugins were
>>> using ts2.h, then ts.h could be revised to be equivalent to ts2.h.
>>> ts2.h would become a symbolic link to ts.h.  Once all plugins were
>>> changed back to including ts.h, the symbolic link could be removed.
>>>
>>> There could hypothetically be multiple layers using this approach.
>>> There could be a ts3.h include file that includes ts2.h.  I could
>>> contain stuff like
>>>
>>> #undef TSExistingAPIFunc
>>> #define TSExistingAPIFuncVer3
>>>
>>> void TSExistingAPIFuncVer3(... formal parameter list ...);
>>>
>>> Clearly there are some API changes where this approach would not work,
>>> but many where it would work.
>>>
>>> One way I'm thinking I would like to use this approach is to
>>> substitute multiple, more specific types for the TSMLoc type.  The
>>> goal is to have more compile time checking.  Currently we rely on run
>>> time checks, and there are also cases where a coding error could
>>> result in undefined run time behavior (memory corruption).
>>

Reply via email to