Features

Other benefits that are not inherent to the core language nevertheless form essential complements to it as a practical development platform.

Libraries

Along with the external library interfaces, the distribution package includes thirteen additional custom written libraries. These contain over 250 functions, combinators, and data structure declarations useful in a variety of applications. Some of these are wrappers or value-added interfaces to library functions linked through the virtual machine, such as GSL integration.

Numeric types

The following types of numbers are primitive in Ursala.

Exact calculations involving naturals and rationals are implemented by purpose written libraries packaged with the compiler. Standard floating point and complex numbers are manipulated natively using the host system's C library routines. Arbitrary precision floating point numbers are handled by the mpfr library, but without need of explicit storage allocation or reclamation at the source level.

Abstract data types

Standard containers such as lists, sets, and trees are supported. There are also some unusual containers such as one representing the kind of lattice structures used in financial derivatives valuation, and one for trees with invariant balancing conditions.

There are extensive facilities for record data types with named fields, including self-initializing "smart records". Self-referential or mutually dependent record type declarations are allowed. Type classes or polymorphic types are expressible by various means, including generic and opaque fields, self-describing fields, or parameterized "higher order" record declarations. Type expressions are first class objects in Ursala that can be passed as parameters or otherwise manipulated at the user's discretion.

Profiling

Quantitative detection of program hotspots can be achieved by built-in profiling facilities of the virtual machine, which are supported at the source level by compiler directives and functions. This information is essential for performance tuning in any production quality application.


Dennis Furey
Last modified: Wed Jan 30 17:54:10 GMT 2008