飛漫軟體於 2022 年 1 月 26 日,正式釋出 MiniGUI 5.0.9 版本。
對國內開源軟體的發展稍有了解的人都知道,MiniGUI 的第一個版本釋出於 1999 年。MiniGUI 是中國最早的幾個開源專案之一,是最具代表性的原創國產基礎軟體之一,經歷了開源軟體在國內萌芽、發展、消沉,而後在近幾年隨國內自主可控的春風重灌上陣的整個過程。
MiniGUI 5.0.9 是 MiniGUI 5.0 系列的最新缺陷修正版本。該版本的釋出,意味著經過若干版本迭代後,MiniGUI 5.0 走向成熟,進入了商用推廣階段。
MiniGUI 5.0 是 MiniGUI 發展中的重要里程碑版本。用一句話總結:MiniGUI 5.0 將桌面級的視窗系統功能帶給了嵌入式裝置。我們首先了解一下 MiniGUI 5.0 自目前業界廣泛使用的 MiniGUI 3.0/3.2 版本以來的三個主要技術進步。
三大技術進步
1) 獨立的視窗合成器
自 MiniGUI 5.0 起,MiniGUI 的多程序模式開始支援合成圖式(compositing schema)。合成圖式是現代桌面作業系統和智慧手機作業系統的圖形及視窗系統使用的技術,其基本原理很簡單:系統中所有程序建立的每一個視窗都使用獨立的緩衝區來各自渲染其內容,而系統中有一個扮演合成器(compositor)角色的程序,負責將這些內容根據視窗的 Z 序以及疊加效果(如半透明、模糊等)合成在一起並最終顯示在螢幕上。
合成圖式為視窗系統提供各種視覺效果和新奇互動效果帶來了可能。在合成圖式之前,大部分視窗系統使用共用緩衝區圖式,通過管理和維護視窗的層疊關係以及相互之間的剪下來實現多視窗的管理。傳統的共用緩衝區圖式很難在多程序環境下實現不規則視窗、半透明或模糊疊加效果,而合成圖式則可以輕鬆解決這些問題,而且還可以方便實現視窗切換時的動畫效果。
在不使用合成器的情形下,視窗切換時的動畫效果只能作用於單個程序中的多個視窗,應用開發者要仔細編碼來處理視窗切換動畫的實現細節,這樣,一方面讓單個程序的執行邏輯變得更為複雜,程式更容易出現缺陷,另一方面無法充分利用 Linux 等通用作業系統核心提供的多程序管理能力。而有了合成器之後,每個程序只需建立視窗並在視窗中繪製,無需關心其中的內容是如何被展示到螢幕上的——這項工作由獨立的合成器來完成。這樣,應用開發者不必關心視窗切換動畫的實現細節,於是大大簡化了視窗切換動畫的實現。
經過幾個版本的迭代,MiniGUI 5.0 的合成圖式已然成熟。由飛漫軟體發起的開源作業系統專案 HybridOS 以及 HybridOS Lite 均基於 MiniGUI 5.0 的合成圖式。
開發者可客製化自己的合成器(compositor),並通過載入動態庫的形式裝載自定義合成器或者第三方合成器。在整個系統的不同執行階段,甚至可以在多個合成器之間進行切換。
2) 完整的 Unicode 支援
在 MiniGUI 4.0 的開發中,重構了 MiniGUI 的底層字元集、編碼及字型支援模組:
-
提供了完整的 Unicode 支援介面,符合 Unicode 12.0.0 標準及相關規範。
-
提供了用於支援複雜書寫系統(如阿拉伯文、泰文、印度語、蒙文、藏文等)的相關介面,用於複雜或者混合文字的排版、字型成型和渲染。
-
為支援複雜文字,在保持介面穩定性和相容性的基礎上增強了 MiniGUI 邏輯字型和裝置字型的相關介面。
3) 支援多點觸控式螢幕以及 GPU 加速
-
支援除鍵盤滑鼠之外的其他輸入裝置,如多點觸控式螢幕、手勢、遊戲杆、平板筆等。
-
新增 drm 圖形引擎,可通過全新的 Linux DRI/DRM 圖形棧支援現代的顯示卡或者 GPU,用於實現硬體加速的 2D/3D 圖形渲染。
-
通過組合程式碼,針對 ARM (32 及 64 位)架構提供了基於向量運算指令的優化。
除了以上三個主要的增強之外,MiniGUI 4.0/5.0 還調整了一些底層架構,重構了一些底層模組。有興趣的讀者可以閱讀完整的釋出說明檔案並順手點亮 MiniGUI 倉庫的星星:
-
MiniGUI 5.0 系列:
-
MiniGUI 4.0 系列:
MiniGUI 和 HybridOS、HVML 的關係
簡單而言,這三個專案相互獨立而又相互關聯。
其中,MiniGUI 為嵌入式系統提供桌面級視窗系統的功能,也提供了基於 C 語言的 GUI Toolkit 庫,開發者可獨立使用而開發各類 GUI 應用。
HybridOS 是一個針對智慧裝置的作業系統,架構在 Linux 核心和 MiniGUI (合成圖式)之上。目前,HybridOS 中整合了飛漫增強的 hiWebKit 引擎,可使用 Web 前端技術開發圖形和多媒體應用。另外,通過飛漫開發的資料匯流排 hiBus,應用可以和其他模組完成資料交換及功能呼叫。因此,相比 MiniGUI 只提供視窗管理和 GUI 功能之外,HybridOS 則提供了完整的應用開發框架以及整合系統功能的基礎設施。
HVML 最初是為了解決 MiniGUI 基於 C 語言的介面不利於開發者快速開發 GUI 應用這一問題而提出,最終將成為 HybridOS 的應用程式語言。然而,HVML 可以用於更加通用的場合,比如桌面應用以及雲應用的開發當中。
當 HVML 成熟之後,我們可以在 HybridOS 上使用 HVML 開發應用,此時,MiniGUI 是 HybridOS 的視窗系統以及圖形棧的一部分;我們也可以在 Windows、macOS、Linux 桌面系統上使用 HVML 開發應用,此時,HVML 的執行時環境基於上述桌面作業系統,和 HybridOS、MiniGUI 無關。
要更詳細地瞭解 HVML 的來龍去脈以及開發進展,推薦閱讀 下的文章。
原始碼包下載
最後,附上 MiniGUI 5.0.9 的原始碼包下載頁面:
亦可存取如下用於構建 MiniGUI 的倉庫:
或者
另外,歡迎請,贊助飛漫主持的開源專案 MiniGUI、HybridOS 和 HVML。
附:商標宣告
本文提到的產品、技術或者術語名稱,涉及北京飛漫軟體技術有限公司在中國或其他地區註冊的如下商標:
-
飛漫
-
FMSoft
-
合璧
-
HybridOS
-
HybridRun
-
MiniGUI
-
xGUI
-
miniStudio
-
HVML
-
呼嚕貓
-
Purring Cat
-
PurC