================================================================================ Derelict ================================================================================ -------------------------------------------------------------------------------- INFO -------------------------------------------------------------------------------- Derelict is (or will be) a collection of D packages which provide access to several C libraries useful to multimedia/graphic applications (games, image editors, video playback software, etc...). Each individual package is designed to stand alone without introducing any extra dependencies other than those of D's Phobos library and the shared library the package interfaces with. In fact, Derelict completely eliminates the dependency on import libraries for each package by loading the shared libraries dynamically. Unfortuantely, there is one tiny drawback that prevents Derelict from loading shared libraries automatically (something I would ultimately like it to do). While it is possible in D to make use of module constructors to load system resources automatically, DerelictGL does not do this at present. The reason is that it is currently not possible to catch exceptions thrown from a module constructor when your application entry point is the main() method. For Win32 GUI apps this is not a problem, since D requires you to manually initialize the module constructors yourself when using WinMain as an entry point, thereby allowing you to catch any exceptions thrown from a module constructor. When you have a main() entry point however, the module constructors are initialized by the runtime, giving you no chance to catch any exceptions they throw. If the Derelict packages loaded the shared libs in their module contructors, applications with a main() entry point would not be able to handle the case of missing or corrupted shared libs in an application-specific manner. This would defeat the whole purpose of Derelict's creation. So each Derelict package requires you to manually call a load function (named accordingly for the package) which loads the shared lib and all exported functions. If there ever becomes a way to handle exceptions thrown by module constructors when using a main() entry point, then this requirement will be eliminated. Note that there is no equivalent requirement to unload shared libs in Derelict, as this is handled automatically with module destructors. Derelict packages may be used independently of each other, or collectively. -------------------------------------------------------------------------------- DERELICT 1.0 GOALS -------------------------------------------------------------------------------- For a 1.0 release, Derelict will include the following packages: DerelictGL - OpenGL interface DerelictGLU - GLU interface DerelictSDL - SDL interface DerelictAL - OpenAL interface DerelictDX - DirectX 5 ~ 9 intefaces DerelictOGG - libogg interface DerelictVorbis -libvorbis interface DerelictPNG - libpng interface DerelictJPEG - libjpeg interface I am sure that after 1.0, Derelict will continue to grow with new packages. -------------------------------------------------------------------------------- LICENSE -------------------------------------------------------------------------------- Each individual package in Derelict is released under the same license as the library it interfaces with. -- Mike Parker (Aldacron)