473,395 Members | 1,539 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,395 software developers and data experts.

Dao language 1.0 beta is release!

Hello,

After a few months' effort, I have finished the implementation of Dao
Virtual Machine(DVM), and released it as 1.0-beta. The DVM is
implemented as a very efficient virtual register machine. This version
has implemented all the features I have planned. Most importantly, the
implementation has been switched from C++ to standard C. As a
consequence, the binary code of DVM is much smaller than before (as
executable 250KB, as dynamic linking library 300KB, linux/gcc4). The
efficiency has also been improved as well. The structure of DVM has
been changed slightly, such that the embedding and extending of DVM
becomes more convinient. In fact, now the mechanism to call internal
functions is exactly the same as the mechanism to call extended
functions. To allow DVM being more freely used, GLPL (GNU Lesser
General Public Licence) has been adopted since this release. The DVM
can be compiled and run in both windows and linux, but so far, it is
tested mainly under linux. As before, the documentation of Dao is not
well prepared yet; and there are only a few extended modules available
for using. These two things will be the prioritized work in the near
future.

links:
website: http://www.xdao.org
documentations: http://www.xdao.org/daoweb.dao?page=document

=========================
Changed or new features
=========================

-----
Multiple lines comment: <<<...>>is changed to #{...#}, which can be
used anywhere in the scripts.

-----
Built-in functions have been organized into some basic libraries:
stdlib, stdio, math, reflect, coroutine, thread etc. So now Built-in
function xyz(...) should be used abc.xyz(...), where "abc" is the
proper library. For convinience and efficiency, one may also do:
xyz = abc.xyz;
xyz(...);

-----
More methods are added for basic data types;

-----
Bit operations |, &, ^, ~, <<, >>;

-----
Typed variables, assignment between variable of different types will
issure an error:

a : 1; # a is a number; not compiled virtual instruction;
a := 1; # a is a number; compiled into assignment instruction;

The right side of : or := must be a const. This kind of syntax is for
consistence with syntax for specifying typed parameters in function
definition;

-----
Similarly class may have typed instance variables. Moreover, "my a :=
1" will also specify the default value for the variable;

-----
Class instance creation by enumeration:
class MyNumber
my value := 0;
end

num1 = MyNumber{ 123 };

num2 = MyNumber {
value @= 456; # may specify the name of variables to be
initialized.
};

Be cautious when enumerating class members without speficying names
to create class instances for derived classes.

-----
Creating multi-dimensional array:

changed from
list = { 2, 3 } : 100;
array = [ 2, 3 ] : 100; # 2 X 3 matrix
to
list = 100 <@{ 2, 3 };
array = 100 <@[ 2, 3 ];

operator <@can be called arrange operator. A<@>B, arrange A or copies
of A into a list or array of shape B. If B is a list, this operator
will create a new list which has shape specified by B, and contains A
or copies of A as elements. If B is a numeric array, this operator will
create a numeric array with shape B; if A is also a numberic array, the
resulting array will contain multiple subarrays that are equal to A.

This new operator is introduce because the previous using colon for
multiple purpose is confusing.

-----
Support coroutines similar to Lua coroutines;

-----
Previous built-in functions sort(),apply(),noapply() have become
methods of list
or numeric array with some changing in syntax:

before:
sort( list, @0 < @1, n );
now:
list.sort( @{ @0 < @1 }, n );
before£º
apply( array[ 1:5, : ], @0 + @1 * @2 );
now:
array.apply( @{ @0 + @1 * @2 }, { 1:5, : } );

Expressions that are used as parameters should be put inside @{ }. The
advantage for this is,
simpler parsing; and moreover, they can be passed to C extending
functions.

===================
Extending modules:
===================
New modules available:
- DaoCGI: CGI web programming;
- DaoFastCGI: FastCGI web programming;allow DVM to run as FastCGI
server;
- DaoSqlite: binding to Sqlite3 database; lighttpd +sqlite +dao could
be a good option
for some websites, since each of them is designed to be
light and efficient.
- DaoOpenGL: 3D graphics; support upto DaoOpenGL1.1£¬including GLU;
- DaoSDL: binding to Single DirectMedia Layer, partially finished;
- DaoCamellia: binding to camellia image processing library;

The previous modules DaoMySQL, DaoBLAS and DaoPython are not yet
upgraded accordingly for this release.

Have fun!

Limin Fu
phoolimin[AT]gmail[DOT]com

Nov 20 '06 #1
0 840

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

0
by: Anthony Baxter | last post by:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On behalf of the Python development team and the Python community, I'm happy to announce the first beta of Python 2.4. Python 2.4b1 is an beta...
0
by: Anthony Baxter | last post by:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On behalf of the Python development team and the Python community, I'm happy to announce the second beta of Python 2.4. Python 2.4b2 is a beta...
48
by: ik | last post by:
ERROR after uninstalling SQL Server 2005 Express I get this message, SQLDMO has not been registered. Please re-run your setupand contact your system administrator. GREAT!!! ReInstalled SQL...
6
by: Eddie Paz | last post by:
I have a program written in MFC. I'm at the point where I need to start working on the major release (tons of new features needed - new fiscal year budget and all-). I'm looking into vc++.net...
10
by: Flare | last post by:
Hi We are starting our implementation of a medium scale web application. The delivery is set to last february so it is "close" the release of Net 2.0. Would it be both legal and wise to develope...
8
by: clintonG | last post by:
Membership is broken and who knows what else. Does anybody have any referrals to current documents that explain what was changed and how one might respond? <%= Clinton Gallagher...
8
by: Marc G. Fournier | last post by:
After almost 9 months of development, the PostgreSQL Global Development Group is proud to announce that development on PostgreSQL 8.0.0 has now finished, and is ready for some serious testing. ...
0
by: Marc G. Fournier | last post by:
After 4 weeks of work, involving alot of bug fixes, and documentation improvements, to the source tree, we have just released our 4th Beta of 8.0.0. Most of the items on Bruce's Open Items list...
0
by: Marc G. Fournier | last post by:
Its been almost 4 weeks since Beta4, and alot of work, involving alot of bug fixes, and documentation improvements, to the source tree, we have just released our 5th Beta of 8.0.0. All of our...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
by: ryjfgjl | last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
0
by: emmanuelkatto | last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud. Please let me know. Thanks! Emmanuel
0
by: Hystou | last post by:
There are some requirements for setting up RAID: 1. The motherboard and BIOS support RAID configuration. 2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
by: Hystou | last post by:
Overview: Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
0
tracyyun
by: tracyyun | last post by:
Dear forum friends, With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.