mona

23. AVL tree - WebKit porting to Mona OS

Finally stack trace problem was fixed by writing AVL tree. We also expanded kernel heap region to store huge map file. We get a correct stack trace. ================================================================================ Killed ML…

Mona 作業メモ

あまりに時間がないので日本語でメモ。 WebKit の libwebcore をリンクしたアプリを作った どこかで落ちる stack trace を有効にする カーネルが落ちる stack trace の backend に使っている BST が naive な実装のため imbalanced になってる カーネルスタ…

22. stack trace problem - WebKit porting to Mona OS

I'm trying an application which uses libwebcore. As we expected, it crashes. We want to know exact where it crashes. So enabled stack trace function on Mona which was introduced by Mr.A. The stack trace function uses a map file which is ge…

21. No undefined references - WebKit porting to Mona OS

With a great help from notImplemented() function, there's no undefined references on MonaLauncher whose source code is following. #include <config.h> #include <Page.h> int main(int argc, char* argv[]) { WebCore::Page::PageClients pageClients; } Size of MLAU</page.h></config.h>…

20. Ported libcurl - WebKit porting to Mona OS

About 10 days passed after the last article. I was sick in bed with a bad cold. I'm getting better. Ported libcurl which is used internally on WebKit and offers HTTP protocol (and other many protocols). ToDo - Dependencies DragImageRef at …

19. Ported cairo partially and pixman - WebKit porting to Mona OS

Built cairo for Mona without any surface. I will add cairo-mona-surface.cpp later when necessary. And also ported pixman library which is used intenrally in cairo. ToDo - Dependencies DragImageRef at Source/WebCore/platform/DragImage.h Nat…

18. Start porting cairo - WebKit porting to Mona OS

cairo functions used in WebKit are follwing 133 functions. We should support them on Mona. cairo_append_path cairo_arc cairo_arc_negative cairo_clip cairo_clip_extents cairo_close_path cairo_context_get_font_options cairo_create cairo_crea…

17. Building page, accessibility and editing and porting libxml2 are done. - WebKit porting to Mona OS

There are more sub or subsub directories to build, but I'm not sure what is necessary or not. As jsc on JavaScriptCore, we need to build an application which uses WebCore(libwebcore). It seems that Tools/xxxLauncher is good sample applicat…

16. Building WebCore/html, css, loader, rendering and dom directory is done - WebKit porting to Mona OS

Let's build WebKit on OSX, and see what's happening. % Tools/Scripts/build-webkit --debug --no-svg 2>&1|tee webkit.build.osx.log The build process is going as following. ANGLE (necessary?) JavaScriptCore (done) JavaScriptGlue (not yet) Web…

15. Building WebCore - WebKit porting to Mona OS

Let's build WebKit on OSX, and see what's happening. % Tools/Scripts/build-webkit --debug --no-svg 2>&1|tee webkit.build.osx.log The build process is going as following. ANGLE (necessary?) JavaScriptCore (done) JavaScriptGlue (not yet) Web…

14. SunSpider - WebKit porting to Mona OS

The next thing I have to do is trying more complex JavaScript programs than "Hello, World". At first tried string-base64.js for this purpose. Yay it runs without an error. And tests some other SunSpider programs. All of them run without an…

13. jsc.exe works! - WebKit porting to Mona OS

Previously on porting Webkit to Mona, jsc.exe is killed. After a long long printf debug, I concluded that malloc(dlmalloc) on Mona seems to have a bug. Since it re-allocates a region which is not free-ed yet. So two objects are allocated o…

12. Debugging jsc.exe - WebKit porting to Mona OS

jsc.exe is killed on GlobalObject* globalObject = GlobalObject::create(*globalData, GlobalObject::createStructure(*globalData, jsNull()), options.arguments) at jscmain. After some printf debug, I found m_structure member of m_functionProto…

11. Build ICU 4.4.2 using mingw cross compiler - WebKit porting to Mona OS

Porting ICU is a hard and tough work? No I'm busy myself with other things :D ICU 4.4.2 is what we are looking for which doen't depend on C++ RTTI. Let's build it for our OS. Since Unicode data files should be generated on compilation time…

10. Gave up C++ RTTI and exceptions - WebKit porting to Mona OS

Where are we? building JavaScriptCore on Mona OS needs ICU ICU needs RTTI support Have to build libsupc++ to support RTTI On the last article 9. How to support C++ RTTI and exceptions on your hobby OS, I wrote C++ RTTI and exceptions worke…

続 C++ と libc の関係など

ちと深入りしすぎでは。と忠告を受けたので冷静に考えなおしていくつか検証をして結論を出した。 時間が多くあるならばやるべき正攻法 Mingw ではなく純粋なクロスコンパイラ i586-pe または i586-elf を作り開発する。そうすれば多くの問題は自動的に解決さ…

C++ と libc の関係など

Mona の C++ RTTI・例外対応でちょっとハマったので問題を整理。こういうぐちゃぐちゃ思考の過程をまとめるのはまだ英語では書けない。 前提 Mona には core ライブラリとして C++ の MonAPI ライブラリがある。これは libc に依存しない最下層のライブラリ…

9. How to support C++ RTTI and exceptions on your hobby OS - WebKit porting to Mona OS

Where are we? building JavaScriptCore on Mona OS needs ICU ICU needs RTTI support Have to build libsupc++ to support RTTI Requirements and assumptions I explain here how to enable RTTI and exceptions on my hobby OS Mona. We use mingw cross…

8. Build Mingw gcc-4.6.1 - WebKit porting to Mona OS

Where are we? building JavaScriptCore needs ICU ICU needs RTTI support Have to build libsupc++ to support RTTI Have to build mingw to build libsupc++ binutils % mkdir ~/mingw % cd src % wget http://ftp.gnu.org/gnu/binutils/binutils-2.21.1.…

7. ICU required RTTI - WebKit porting to Mona OS

While porting ICU, I found ICU requires C++ rtti. I met a library for the first time which requires C++ rtti. Sigh. Since our OS doesn't support C++ rtti and exceptions, we have two options. support rtti write ICU alternative. Webkit uses …

6. Disabled PLATFORM(QT) - WebKit porting to Mona OS

After walking through JavaScriptCore and jsc.cpp, it seems that we should disable PLATFORM(QT) and remove QT related file from Makfile. Let's start again. ../../../Source/JavaScriptCore/wtf/unicode/icu/UnicodeIcu.h:27:27: error: unicode/uc…

5. libjscore.a - WebKit porting to Mona OS

Finally got libjscore.a. The next thing we should do is to use libjscore.a. jsc command uses libjscore.a. So let's build jsc. Modified WebKit/WebKitBuild/Release/JavaScriptCore/Makefile.jsc to use our cross compiler. "make -f Makefile.jsc"…

4. STL port was done - WebKit porting to Mona OS

The prvious problem we fronted was bootstrap hunging up. I've never imagined I should dive into bootstrap code again! Finally I found what was wrong. The bootstrap sequence is firstboot reads and jumps into secondboot secondboot reads KERN…

3. STL - WebKit porting to Mona OS

Since WebKit/Source/JavaScriptCore/wtf/qt/MainThreadQt.cpp is small, I will visit it later. Commented out the following files on Makefile. Source/JavaScriptCore/wtf/qt/MainThreadQt.cpp Source/JavaScriptCore/wtf/qt/StringQt.cpp Source/JavaS…

2. Where should I start from? - WebKit porting to Mona OS

Okay, let's check the output. 7.0M WebKit/WebKitBuild/Release/JavaScriptCore/release/libjscore.a 56MB WebKit/WebKitBuild/Release/WebCore/release/libwebcore.a As someone said, I think it's better to start from building JavaScriptCore for so…

1. Building WebKit on Linux - WebKit porting to Mona OS

To see what's happening on build process, just tried to build WebKit on my Ubuntu laptop. At first I've tried to build GTK+ WebKit, but it requires GLIB - version >= 2.27.90. My Ubuntu uses glib 2.0.0, and it seems dangerous to upgrade gli…

0. Table of Contents - WebKit porting to Mona OS

I started porting WebKit to my own OS, Mona OS (http://www.monaos.org). Here are some memorandums of the porting process. I wish these would be useful to other OS developers. 1. Building WebKit on Linux 2. Where should I start from? 3. STL…

Mona 0.3.4 リリース

Mona 0.3.4 をリリースしました。 ソースコード QEMU用イメージファイル スクリーンショット 主な変更点 w3m (テキストブラウザ) の改善により Gmail, twitter, Facebook などにアクセスできるようになりました 新シェル GUI 以外は Mosh で書かれています F…

今日の Mona

MonaGUIに WindowEvent::WINDOW_ACTIVATED を追加 これで w3m が起動直後に focus があっていない件に対応。 Gmail on w3m でメールが送れないバグ修正 monapi_file_exists のバグだった遠いね。 STL での raise 時にログを吐くように変更

起動しないアプリはなぜ起動しないのか

リリース目標日が近付いているので Mona で起動しないアプリがなぜ起動しないかを調べている。以前は動いていたはずなのだがいつの間にか動かなくなるものは少なくない。カーネル、ユーザーランドライブラリ、libc、ウィンドウシステムなどに手を入れるとど…