Home C++/Castor

Announcing Castor 1.1

August 15th 2010


Pleased to announce the availability of Castor 1.1. You may download it from:


Lots of new stuff! The primary focus of v1.1 is to enrich Castor's support for general purpose programming and enable query expressions.


A two part video presentation of these new features is available at:  


For a comprehensive listing of new features see or in the document "whats new.txt" that is included in the distribution. Reference manual covers all the new features and many of them with examples. Tutorial has been partially revised to cover some of the 1.1 features.


Below is a short summary of the new features in this release: 

  1) New operator >>= : Enables a new category of relations called "TakeLeft relations" (or TLRs).

  2) Take Left Relations: group_by, order, reduce, count, skip etc.

  3) Coroutine support: For defining relations imperatively. (See section 3 in tutorial)

  4) Several new relations: shuffle, max_of, reduce_of, pause, item_map, etc.

  5) New named ILEs: at, call, create, get, id &  mcall.

  6) Several enhancements to existing facilities including lref and ILE.


This release has been verified with the following compilers:

  : Microsoft Visual C++ 2005, 2008 and 2010

  : GCC 4.3.3, 4.4.1 and 4.4.3


- Roshan Naik


About Castor:

Castor is a pure C++ header Library that introduces the Logic paradigm into C++. Castor integrates the Logic Paradigm using a few simple library primitives. This unique approach not only allows a natural and deep integration of declarative code into C++, but also provides the flexibility of combining Logic with other paradigms natively supported by C++ such as OOP, generics etc. STL concepts like iterators, containers and streams can also be used in declarative code.


Castor is distributed under the MIT license (


       ::: Headlines :::
  Version 1.1 is now available for download. See details of what's new.
NEW! Videos on 1.1
See the two part video tutorial covering the new features in 1.1 with examples.
  Understand the concepts behind LP, how to represent them in C++ and how LP blends with the other paradigms in C++.
  Discuss issues, collaborate, consider improvements, share code etc.