Dova
Introduction
Dova is an experimental application framework written in Vala. It consists of a type system and libraries for application development.
Why Dova?
While writing applications using Vala and GObject works well, there are still some aspects of GLib/GObject that don't fit very well into a higher level programming language such as Vala. The main motivation behind Dova is to create a unified type system with perfect integration into Vala. As a type system without libraries is not very useful, we also aim to create a set of libraries for application development using the Dova type system.
Libraries
Base Library
- dova-core
- Status: in early development, basic functionality can be tested
- dova-base: Type system with basic types
- dova-regex: not started yet
- dova-thread: not started yet
- dova-task: Task
dova-io: Stream, MemoryStream, DataReader, DataWriter, TextReader, TextWriter
dova-file: File, FileStream
dova-net: NetworkStream, TcpEndpoint, TcpClient, TcpServer, UnixEndpoint, UnixClient
dova-model: Iterable, ListModel, SetModel, MapModel, QueueModel, DequeModel, ArrayList, HashSet, HashMap, PriorityQueue
- dova-test: not started yet
Low-level Libraries
- dova-canvas
- Scene graph library
- Status: not started yet
- dova-canvas
- dova-canvas-cairo
- dova-canvas-gl
- dova-dbus
- Status: in very early development
- dova-dbus: DBus, DBusConnection, DBusMessage
- dova-drawing
- Status: not started yet
- dova-http
- Status: in very early development
dova-http: HttpClient, HttpClientRequest, HttpClientResponse, HttpServer, HttpServerRequest, HttpServerResponse
- dova-imaging
- Status: not started yet
- dova-json
- Status: not started yet
- dova-mail
- Status: not started yet
- dova-imap
- dova-mime
- dova-pop3
- dova-smtp
- dova-sparql
- Status: not started yet
- dova-sql
- Status: in very early development
dova-sql: SqlConnection, SqlStatement, SqlCursor
dova-sqlite: SqliteConnection
- dova-tls
- Status: not started yet
- dova-windowing
- Status: not started yet
- dova-x
- X protocol bindings
- Status: not started yet
- dova-xml
- Status: not started yet
High-level Libraries
- dova-data
- High-level Data Framework
- Status: not started yet
- dova-messaging
- High-level Messaging/Remoting Framework
- Status: not started yet
- dova-ui
- UI Application Framework
- Status: not started yet
Todo
- Write (unit) testing framework
- Add tests for already implemented/designed parts
- Add Unicode support (character properties, normalization, collation, line breaking)
- Add mathematical/numeric functions (math.h, random number generator)
- Extend fiber-based event handling to support multi-threading (global/concurrent queue)
- Write basic fiber support in assembler (x86 / x86_64 / ARM / ...) as makecontext/swapcontext are not universally available (and mc/sc is not very fast)
- Add (internal) low-level cross-platform layer to dova-core
Introduce any type as a supertype of Value, Object, Delegate, Pointer, Function, Struct
- Support boxing of value types
- Support module-oriented approach in Vala
Only generate one .c file per module => enables use of static C functions for internal methods
Support something like import MODULE-NAME that combines --pkg and using (allow importing it under any namespace due to possible conflicts)
Add vala tool that compiles and runs application at the same time (maybe using compile cache), support #!/usr/bin/vala
- Design and implement low-level libraries
- Design and implement high-level libraries
License
The Dova libraries are licensed under the LGPL 2.1+
Download
Development is happening on gitorious.
You can check out the current development snapshot of dova-core using:
git clone git://gitorious.org/dova/dova-core.git
Requirements
- Vala 0.9.2 or later
- Linux (cross-platform support planned)
Contact
Jürg Billeter <j at bitron dot ch>