# ANN: Dao Language v.0.9.6-beta is release!

**URL:** <https://www.ruby-forum.com/t/ann-dao-language-v-0-9-6-beta-is-release/48990>\
**Category:** Ruby\
**Created:** [November 28, 2005, 12:10pm UTC](https://www.ruby-forum.com/t/ann-dao-language-v-0-9-6-beta-is-release/48990 "2005-11-28T12:10:32Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![phoolimin](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/p/838e76/32.png) [@phoolimin](https://www.ruby-forum.com/u/phoolimin)\
**Post date:** [November 28, 2005, 12:10pm UTC](https://www.ruby-forum.com/t/ann-dao-language-v-0-9-6-beta-is-release/48990/1 "2005-11-28T12:10:32Z")

</div>

Dear all,

This is just to let you know that the lastest version Dao language is  
released.  
This Dao was previously called Tao, and now is changed to Dao to avoid  
confusion  
with another Tao langauge. There are a number of new features  
implemented in  
this version, of which the most important one is the supporting for  
multi-threaded  
programming. A new concurrent garbage collector is also implemented to  
for the  
multi-threaded interpreter. Now unicode is also supported for string  
manipulation  
and regular expression (regex) matching etc. The algorithm for regex  
matching  
is enhanced with fixing of a few bugs which prevent finding the most  
reasonable  
matching in some case, and allowing reverse matching from the end of  
string.  
The interface for creating Dao plugin in C++ is further simplified and  
matured.  
Of course, many bugs are also fixed. For more information,  
please visite: [http://www.xdao.org](http://www.xdao.org).

By the way, a console named DaoConsole with graphical user interface is  
also released.

With best regards,

Limin Fu

* * *

## ChangLog for this release:

- : added  
! : changed

- : fixed

- : removed

MULTITHREADING:

- Multi-threaded programming is supported as a kernel feature of  
Dao language. Posix thread library is used in the implementation.  
And the thread API in Dao is similar to that in Posix thread.  
Parts of the Dao interpreter is re-structured for multithreading.
- A novel concurrent garbage collector based on reference counting  
is implemented to support multithreading.
- A upper bound for GC amount is applied to prevent memory “avalanche”,  
where mutators generate garbage faster than GC can collect them.  
gcmin(), gcmax().

UNICODE:

- UNICODE is supported. String quotated with double quotation symbol  
is internally represented as Wide Character String(WCS), while string  
quotated with single quotation symbol is internally represented  
Multi Bytes String(MBS). Corresponding operations on WCS is also  
supported.

REGEX:

- Regex reverse matching is supported.
- Now internal representation of Regex uses both MBS and WCS for both  
efficiency and proper matching character class for unicode. When a  
regex is applied to MBS or WCS, the corresponding representation is  
used.
- Regex datatype is added, a regex pattern can be compiled and stored  
for later use, by using: define regex: rgx = /\d+\w/;  
or, rgx = regex( “\d+\w” );
- New character class abbreviations \u and \U are added for unicode.
- Customized character class abbreviations are support. Users can  
define  
their own character class abbreviations by:  
define regex: \2 = [WhateverChars];  
! Algorithm for regex matching is modified to extend matching when  
possible, and is also modified to match regex group correctly.

NUMERIC ARRAY:

- Specification of precision in numeric array enumeration is supported:  
num=[@{numtype} array];  
! Transpose operator(right operator) is changed from ’ to ~.

- Function convolute() for numeric arrays is removed.

EXTENDING AND EMBEDDING:

- Some abstract classes are added for supporting easy embedding  
of Dao interpreter ( the daoMain.cpp source file is an example  
for embedding ).
- Some wrapper classes for Dao data objects are provide in daoType.h  
to faciliate the using of Dao data objects in plugins or other  
programs in which Dao is embedded.  
! A new technique is implemented to allow more tranparent passing  
data between Dao interpreter and C++ modules. Creation of shadow  
classes is also supported by the way.

IO:

- Instead of using STL stream classes, new DaoStream classes are  
added mainly for handling unicode in many places.
- For file IO, more open modes such as “rwat” are supported, and  
more methods such as eof(), seek(), tell() … are implemented.  
read() is enhanced such that it can read until meeting EOF.

OTHERS:

- Multi inheritance is supported for OOP. And the passing parameters  
and calling to parent constructor is simplified.
- Negative subindex is supported for string.
- Added a feature that allows using Alternate KeyWord (\*.akw) to  
write Dao scripts in non-english languages. The only requirement  
is the character encoding for the .akw file must be the same as the  
script files.  
! Variable scope specification keyword “global” is added; keyword  
“extern” is remove; keyword “share” is changed to “shared”  
! Data states are added for constant and frozen data. Now a const  
data is a really const, and can not be modified anymore. Function  
freeze() is added to freeze some data structures as well as those  
are reachable from them, to prevent them from being modified;  
And defreeze() is added to defreeze them.  
! The using namespace is simplified(compile(),eval(),source()).
