Zen API

- Home
- Topics
- Types
- Files

All Classes Files Functions Variables Typedefs Friends Macros Modules Pages
FAQ

What platforms are supported?

Windows | Zen is tested and supported on Windows 7/8/10. We no longer test Zen with Windows XP or Vista, but we don't know of any reason why it would not be compatible. Project files are provided to build Zen using recent versions of Visual Studio. MinGW is not officially supported, but Zen has been reported to work with this environment. On MinGW the following command-line arguments must be passed to GCC: -DUNICODE -DWINVER=0x5001
Linux | Zen is tested and supported on the most recent version of Ubuntu Linux. We expect that Zen is compatible with other Linux distributions, but Ubuntu is the only distribution that we use for testing. A GNU makefile is provided to build Zen.
Mac OS X | Some portions of Zen are ported to Mac OS X, but this port is not routinely tested and is not supported. The makefile provided for Linux may be of use in getting Zen to compile for OS X, or the Zen sources can be imported into a new Xcode library project. If you make improvements to the OS X port, we will gladly accept a patch.
VxWorks | Zen can be used to build VxWorks kernel applications and is routinely tested on VxWorks 6.9. To use Zen with VxWorks, create a new kernel library project and import the Zen sources.
QNX Neutrino | Some portions of Zen are ported to QNX Neutrino, but this port is not routinely tested and is not supported. The makefile provided for Linux may be of use in getting Zen to compile for Neutrino. If you make improvements to the Neutrino port, we will gladly accept a patch.
DSP/BIOS | Zen is routinely tested on TI DSP/BIOS 5.42 (NDK 2.x). To use Zen with DSP/BIOS, create a new static library project and import the Zen sources.

Are 64-bit platforms supported?
Yes. If you received 32-bit binaries, 64-bit versions can be created by recompiling the Zen library (use the 'x64' build configuration for Windows).

Where is the 'include' folder?
Zen does not segregate source files and include files into separate folders. Add [install-location]/Platform/kApi to your include path to access Zen header files.

What is the difference between '.h' header files and 'x.h' header files?
Zen classes are usually implemented using two header files and one source file. The '.h' file is the public header. This file contains declarations that are intended to be used from within other libraries or applications. The '.x.h' header file is the internal header file. This file contains declarations that should only be used from within the Zen library.

Why is Zen written in C?
The Zen library began in 2005 as an initiative to create a portable middleware layer that would enable applications to run on both embedded and host platforms. At the time, C was the obvious choice due to the wide availability of high quality C compilers and standard library implementations for embedded platforms. Today, C++ support in the embedded community has improved, mostly due to the increasing use of GCC and clang, but it remains true that C is ubiquitous while C++ support must be evaluated on a case-by-case basis. That said, we are fans of C++. If we were to start over today, it's possible that we would make a different choice.

Wasn't there a version of the Zen library that used a 'z' prefix instead of 'k'?
In 2009, a lightweight, open-source version of the Zen library was created that used a 'z' prefix for function and data structure declarations. However, maintaining two separate versions of the Zen library proved impractical, and the lightweight version has since been discontinued. The MIT license is now used for the full version of Zen, enabling it to serve as a foundation for both proprietary embedded applications and open-source SDKs.