Although wire-interoperability is the main goal of the TAS3 project, we recognize that interoperability at software interface level, i.e. interchangeable implementations of an API, is valuable as well. Standardization of APIs, in addition to wire protocols, helps to promote building a culture and community of programmers catering for the TAS3 platform. Such community fosters adoption through mutual self help and shared knowledge base. Supporting full constellation of APIs for all programming languages and platforms is fairly expensive business, but is necessary to address the present fragmented market.
The TAS3 API described herein is meant to have multiple implementations. Each implementation provides
The interface files described herein, such as tas3.h
Libraries or implementation files that provide the symbols described by the interface files. In as far as possible, these will be called libtas3.so, libtas3.dll, or other appropriate and similar name. However a concrete implementation may choose to incorporate the TAS3 API interface in its own library, or may require its own library to be included in addition to the libtas3.* library. Such additional requirements shall be conspicuously described in the implementation documentation.
The official TAS3 API is not meant to exclude other wire-protocol compatible implementations of TAS3. Thus, while there is only one official API, other APIs can be equally TAS3 compatible on the wire.
The particular API in use is chosen by the programmer by including the appropriate header file or interface description. The particular API implementation in use is chosen by the system administrator or the programmer by linking against a particular library providing the TAS3 binary interface, or by dynamically loading a module implementing the said binary interface. This leaves great implementation flexibility while accurately describing the TAS3 interface and implementation at source code (API) and binary (ABI) level.