Activity

239873059

I have added VMAR children support, so it should be user-friendly now.

Attachment
0
239873059

I’ve added VMAR and VMO, but they still require more functionalities to become user-friendly. Anyway, racaOS is now supported to run as a libOS on Linux!

Attachment
Attachment
0
239873059

I am going to support LibOS! This will enable us to test our operating system on linux, and it avoids breaking unit tests.

Attachment
0
239873059

I’ve fixed the problem of LLVM Backend. Now it works normally.

Attachment
0
239873059

We’ve added two kernel objects, process and channel. The next step will to implement more functions, and we will make use of kernel-hal tomorrow.

Attachment
0
239873059

I turned back to rust. Now I am going to implement my design.

Attachment
0
239873059

I’m trying really hard to parse ACPI tables. But the address of the first sdt is invalid for some unknown reasons.

Attachment
0
239873059

Now we no longer need a semicolon after expressions like for and if!

Attachment
0
239873059

The llvm backend is now more robust. More tests will be added in the future to ensure it works well. Now you can use continue and break freely!

Attachment
0
239873059

Cara has break & continue now! But I think I need to wrap the creation of a basic block. The current version requires a lot of testing to avoid bugs.

Attachment
0
239873059

Now you can pass functions as values! And you don’t need to worry if the compiler compiles the function several times.

Attachment
0
239873059

Shipped this project!

This is a compiler which support multiple files and namespace! You can also compile to other platforms. It’s highly inspired by rustc.

239873059

We can build cara for other platforms now! And type inferring will be implemented tomorrow.

Attachment
1

Comments

almartdev
almartdev 26 minutes ago

love your project!

239873059

I have added usize and isize, which involves the support of more targets. Now, in theory, you can build cara for more platforms.

Attachment
0
239873059

To easily support typed AST, I refactored expressions, which allows analyzer to create a HashMap that stores all the type info.

Attachment
0
239873059

After working really hard, I have finally made github actions work. Now we can build releases easily.

Attachment
0
239873059

Cara has a lexer now! This improves the stability of parser, and will allow us to create procedural macros!

Attachment
1

Comments

wenxuanjun
wenxuanjun 15 days ago

that’s so impressive :P

239873059

Now we support multiple files! I will refactor parser and analyzer next, then we can introduce procedural macros and a usable LSP!

Attachment
0
239873059

Now we can access constants in the same namespaces easily, and further support shall be done tomorrow. Also, another analyzer which checks namespaces should be built.

Attachment
0
239873059

After working hard, I have successfully fixed many bugs of the compiler, and we are now able to create functions in a struct, and access them like A::b! We will implement more features such as better namespaces later.

Attachment
0
239873059

Cara has structure support now! But I haven’t used a lexer yet, because I don’t want to drop the parser written in peg I have now.

Attachment
0
239873059

I have tried and tried, but the parser is still broken. Maybe I should create a lexer tomorrow, which should simplify the work.

Attachment
0
239873059

I have finally implemented a good type checker, and I shall start OOP.

Attachment
0
239873059

I have implemented expression type checkers. And more checks will be implemented tomorrow.

Attachment
0
239873059

The basic structure of analyzer is built, and I will implement a full-featured analyzer in the next few days.

Attachment
0
239873059

Now the symbol table is written in a separate crate, so that I don’t need to write so much duplicated code.

Attachment
0
239873059

I have added type cast, which allows the followings:
int -> int
ptr -> ptr
int -> ptr
ptr -> int.
More shall be added in the next days of development.

Attachment
0
239873059

Broke the ExpVisitor trait, since it’s too long. I think methods in visitor traits shall be classified better, and I will do it tomorrow.

Attachment
0
239873059

Added prototypes. This allows cara to extern C functions like printf. Now we can print things freely.

Attachment
0
239873059

Add while, loop and for blocks. Currently they requires ;. I would fix that tomorrow.

Attachment
0