Exode is our new programming languages in development. During development of Cloudium OS we saw the need for another language than only pure ASM. Because we didn't want to lose the fine-grained acces ASM provided us, we decided not to go with an existing language like C or C++, but to make our own. This also gives us the opportunity to create a languages specifically tailored to Cloudium OS, to incorporate new ideas and have a much more modern language at the core of the OS, which still allows the low level control of plain old ASM.
Simplified implementation of PersistentObject:
class PersistenObject : Object {
on System.shutdown {
self.serialize.save(id:self.hash)
}
}
Example of inline ASM:
operator Int + Int {
mov ax, #1
mov bx, #2
add ax, bx
return ax
}
You can mix high-level and low-level code:
use System.CPU
fn main() {
ax, bx, cx = 1, 2, 3
for register: value in registers {
println "\(register): \(value)"
}
}
/*
* AX: 0x0001
* BX: 0x0002
* CX: 0x0003
* DX: 0xFD31
* CS: 0x7D23
* FS: 0x81D3
* ...
*/
~~~~
Queries:
numbers = [2, 3, 10, -1, 0, 5, -3]
for x in numbers where x <= 0 {
print x .. ", "
}
// -1, 0, -3
Not convinced?
// No need for for-in: Exode is an array language
display (Image in User.fotoAlbum[selectedAlbum] where width > 800 px & height > 600 px)
// Equivalent SQL: "select image from userPictures where album = (selectedAlbum) and width > 800 and height > 600"
~~~~