LibWeb和LibJS都是新的引擎。作者有Qt和WebKit项目的开发历史,所以从中得到了一些灵感,但所有的代码都是新的,浏览器和库用则C++编写。这是当前浏览器堆栈的粗略细分:Ladybird :选项卡式浏览器GUI应用程序LibWeb:Web引擎,多种标准:HTML、DOM、CSS、SVG,……LibJS:ECMAScript语言、运行时库、垃圾收集器LibGfx:2D图形、文本渲染、图像格式(PNG、JPG、GIF,...)LibRegex:正则表达式引擎LibXML :XML解析器LibWasm:WebAssembly解析器和解释器LibUnicode:Unicode支持库LibTextCodec :文本编码转换库LibMarkdown :Markdown解析器LibCore:其他支持功能(I/O、日期时间、MIME数据……)Qt:跨平台GUI和网络LibWeb有一个 Platform 层,Ladybird为事件循环、计时器、系统字体设置等注入Qt支持代码。目前Ladybird使用Qt进行网络任务,因为在SerenityOS之外还没有多进程RequestServer系统。同样,Ladybird目前是单进程的,而SerenityOS浏览器是每个选项卡的进程。构建条件需要Qt6开发包和支持c++20的编译器。在Debian/Ubuntu上,所需的软件包包括但不限于:sudoaptinstallbuild-essentialcmakelibgl1-mesa-devninja-buildqt6-base-devqt6-tools-dev-tools在ArchLinux/Manjaro上:sudopacman-Sbase-develcmakelibglninjaqt6-baseqt6-toolsqt6-wayland对于c++编译器,至少需要gcc-11或clang-13才能支持c++20。对于Ubuntu20.04及更高版本,请确保Qt6Wayland软件包可用:sudoaptinstallqt6-wayland
评论