The GNU Compact Disc Input and Control library (libcdio) contains a library for CD-ROM and CD image access. Applications wishing to be oblivious of the OS- and device-dependent properties of a CD-ROM or of the specific details of various CD-image formats may benefit from using this library.
Some support for on-disk CD-image types like CDRWIN's BIN/CUE format, cdrdao's TOC format, and Nero's NRG format is available. Therefore, applications that use this library also have the ability to read on-disk CD images as though they were CDs.
A library for working with ISO-9660 filesystems (libiso9660) is included. A generic interface for issuing MMC (multimedia commands) is also part of the libcdio library.
The cdparanoia library and cdparanoia command are included making this the only single-source cdparanoia that works on FreeBSD, NetBSD, OSX, cygwin, Solaris, BSDI as well as GNU/Linux.
This list of projects using libcdio can be consulted for an idea of the range of applications using the library.
With the distribution is an OO interface via C++. (The C routines are also directly callable from C++). Access via Perl is available from CPAN via the Device::Cdio module. An interface from Python and two from Ruby are also available.
Sam May wrote some Haskell bindings; see here.