My favorites | Sign in
Logo
                
Search
for
Updated Jun 23, 2009 by ptwobrussell
CajaLexicon  
Loose definitions for some of the core terminology that will facilitate getting up to speed with Caja

Introduction

Caja is a fairly intricate and complex project with a lot of very specialized aspects. As such, it can be especially useful to understand some of the key terminology that you'll commonly find in the source code and existing documentation. This page is an attempt at getting a simple lexicon started that will facilitate learning for newcomers to the project as well as help the existing project team communicate important changes to central aspects of the project as it evolves.

Details

  • Cajita - An object-capability language that is a very strict subset of Valija. Perhaps the most central difference between Valija and Cajita is that Cajita does not allow the magic keyword "this". It is preferred that Cajita be used to write new code, while Valija is often used to port existing code because it's usually very difficult or impossible to remove all references to "this" from complex code bases.
  • Taming - The act of exposing a safe interface to uncajoled code, usually because it is not feasible to transform the code to Valija.
  • Object Capabilities Language - A language that protects the outside world from objects. Objects cannot act on one another without somehow being passed an explicit reference in an object capabilities language. Objects cannot cause effects outside of themselves without these references. See also the Wikipedia article on Object-Capability Models
  • Innocent Code - Code that is assumed to be ignorant of Caja. Innocent code is not considered to be actively malicious, but may be buggy, and therefore, accidentally harmful or exploitable. Innocent code is often legacy code such as libraries that end up being run tamed or otherwise untranslated into Valija or Cajita.

Sign in to add a comment