Lambdas are not independent objects. They must have a context to function properly. Each copy of Analytic Information Server may open one or more Lambda contexts in which any number of Lambdas may operate. When an Lambda context is opened, a request is made for workspace memory and stack memory. The Lambda context is the environment in which the individual Lambdas will operate.
While Analytic Information Server is primarily an Lambda-oriented database, there is a significant memory management component in every Analytic Information Server application. Often, hundreds of megabytes of RAM memory is required to run the Lambda context of a complex application. So while the disk component often involves many gigabytes of Lambda repositories, the memory management component is often not insignificant. Analytic Information Server uses the latest in advanced memory management strategies, supporting full garbage collection, freeing the Lambdas from such concerns.
The complete contents of an Lambda context's RAM memory, known as its Workspace, can be saved and loaded (see the loadWorkspace and saveWorkspace built-in functions). The Workspace can be cleared to start loading fresh new Lambdas, and certain global variables, in the Lambda context, can be locked to protect them from inadvertent clearing.
At context startup, Analytic Information Server loads all of its built-in functions into RAM memory. This includes the Lisp compiler, the Virtual Machine, the Memory Manager, the core Repository Manager, etc. Each built-in function is made available in one or more global symbols.
All of the basic building blocks of Lambda Information Server are contained in its global symbols. In addition, Lambda Information Server supports user defined global symbols, allowing the user to assign any valid Analytic Information Server object to the newly created global symbol. User defined global symbols behave just like their built-in cousins; however, Analytic Information Server even allows the user to redefine any of the Analytic Information Server built-in Function symbols.
System variables always begin with the underscore character _ to distinguish them from standard built-in functions or user defined global symbols. Many system variables contain important system configuration information. Other system variables are delivered empty, and are provided, by convention, for the server side Lambdas to store important coordinating information.