宣布發(fā)行面向C++開發(fā)的Visindigo版本0.11.0

針對C++ Qt5.15開發(fā)者,我們今天向您宣布發(fā)行Visindigo 0.11版本。
此版本和上個正式版本有大量更改,在您從0.10更新之前,請務(wù)必注意如下變化:
新功能和重要修復(fù)
引入了VIUJ模塊。此模塊適用于從JSON腳本動態(tài)生成窗體,并且可以和C++代碼綁定以為窗體增加邏輯。VIUJ和QML的思路大體是一樣的,但VIUJ規(guī)定了一系列解析JSON的標(biāo)準(zhǔn)以供用戶自行拓展。使用VIUJ意味著在動態(tài)生成窗體這件事上不必像QML那樣大規(guī)模的引入動態(tài)鏈接庫,從而能夠在獲得便利的同時不必增加太多程序發(fā)行文件大小。
初步引入VIWave模塊。此模塊適用于操作WAVE音頻。例如變更音量、音頻合成等。此模塊目前處于技術(shù)預(yù)覽階段,暫時不可靠,請不要用于生產(chǎn)環(huán)境。目前已知的問題是此模塊對于樣本寬度64Bit的音頻不兼容,并且占用內(nèi)存不合理,這些問題會在后續(xù)版本修復(fù)。
針對刻主機的增強:對于刻主機,現(xiàn)在引入了主機暫停和手動運行模式,并修復(fù)了部分問題
針對Visindigo JS主機的修復(fù):修復(fù)了VIECMA中在執(zhí)行JS腳本前掛載到引擎作為JS模塊的C++對象的內(nèi)部初始化策略不正確的問題
針對VISettings的增強:VISettings棄用CES作為內(nèi)部存取鍵值對的方案,現(xiàn)在已經(jīng)改為JSON
針對Visindigo Translator的增強:VITranslationHost棄用了原來的調(diào)用模式,現(xiàn)在需要翻譯的對象應(yīng)該聲明實現(xiàn)VITranslatableObject接口。并且現(xiàn)在實際保存翻譯數(shù)據(jù)的為各抽象包,不再使用全局翻譯主機。這樣一來各抽象包對翻譯有更強的掌控能力。這項更改為將來的Visindigo JSPlugin和Visindigo DLLPlugin做準(zhǔn)備。
其他更改、修復(fù)和棄用詳見下文
Project Config & Visindigo Template
修復(fù)了一個Visual Studio 項目編譯配置Debug的行為不正確的問題。
新增適用于Visual Studio C++中開發(fā)Visindigo程序的VS項目模板和項模板(文件模板)。項目模板由PyTools的PackMake自動管理,跟隨最新的Visindigo C++代碼更新,可用于Visindigo桌面應(yīng)用程序開發(fā)和動態(tài)鏈接庫開發(fā)。項模板(文件模板)目前可用于快速創(chuàng)建VIBasicBehavior、VIAnimationBehavior、VIObject派生類的定義文件。
支持以動態(tài)鏈接方式使用Visindigo
引入新的組件VIUJ,允許您以JSON聲明窗體結(jié)構(gòu),并在C++中綁定窗體以添加功能
在默認(rèn)的Debug和Release編譯方案(稱為Everywhere方案)上新增DllDebug和DllRelease編譯方案(稱為Developer方案)。相關(guān)方案控制部分Visindigo宏關(guān)鍵字的映射行為。
Visindigo PyTools & VICore
按計劃棄用了0.10版本中的部分宏和API。
新增Visindigo Deployer部署程序Python源代碼,可用于編譯為Visindigo部署器。
新增Visindigo PackMake打包程序Python源代碼,可用于從VSC++項目生成Visindigo C++庫。也可用于其他Visindigo C++項目的庫生成
新增Visindigo Installer部署程序Python源代碼,可用于生成隨PackMake一起發(fā)布的Visindigo部署程序,以便在目標(biāo)計算機上部署Visindigo。
重新整理了VIECMAScripts的源代碼,并修復(fù)了一個內(nèi)建模塊由于初始化時間錯誤而導(dǎo)致VIJS上不可用的問題。
編譯版本信息現(xiàn)在固定為Visindigo編譯信息,而非用戶編譯信息
VISettings被重構(gòu)為VIDocument::VIJSON。
VIPackageInfo被重命名為VIPackageMeta。
修復(fù)了VIPackage和VIPackageMeta單例初始化位置錯誤導(dǎo)致的單例沖突問題。
在VIPackageMeta中內(nèi)建了一個VIJSON實例,可用于存取包配置。
調(diào)整了VI_Singleton_Init宏的用法——從初始化static變量變更為類內(nèi)初始化判斷。針對原用法新增VI_Singleton_StaticInit宏。
修復(fù)了定量刻在特殊情況下可能暴斃的問題,此問題發(fā)生在當(dāng)前刻實際用時恰好是定量時間的兩倍時。
修改了若干枚舉量的位置,現(xiàn)在統(tǒng)一位于Visindigo命名空間下
在定量刻主機中引入主機的暫停模式和手動跑刻接口
引入若干有關(guān)顏色的輔助函數(shù)
調(diào)整定量刻初始化行為
完善VIECMA報錯信息
Framework被剝離為CoreFramework和Framework,與其對應(yīng)的,也有CoreProgram和Program的剝離
翻譯系統(tǒng)已經(jīng)重構(gòu),由原來的全局三文檔改為每包雙文檔的模式
拓展抽象包的內(nèi)容和接口
對部分VIException異常增加檢查宏和起爆宏
新增快速縮寫標(biāo)記“靜態(tài)類”、“必須派生”、“已經(jīng)繼承”等、允許VI_NULLPTR縮寫為VI_NULL
跨平臺統(tǒng)一接口提供類不再是VIObject派生類
原VIDocument現(xiàn)在稱為VIPathInfo,現(xiàn)在VIDocument是命名空間,其中包含所有Visindigo自定義格式文檔的讀取方法
移除全部遠(yuǎn)古Behavior殘余
新增Visindigo Core抽象包,用于承載部分Core內(nèi)部需求
VIWidgets
舊版本的VIPalette和VIPaletteGroup已經(jīng)全部重構(gòu),并完全不兼容
更改了VIPalette中內(nèi)建顏色的字符串名稱。
VIPalette中的靜態(tài)函數(shù)getDefaultColorName從私有變?yōu)楣_。
補充了VIPaletteGroup中缺失的通過內(nèi)建顏色名設(shè)置顏色的setColorToPalette重載函數(shù)。
VIPaletteGroup現(xiàn)在會在內(nèi)部初始化時內(nèi)建一個名為Default的顏色板并設(shè)置為當(dāng)前顏色板,其中提供一個由內(nèi)建顏色名VIPalette::DefaultColorName::Foreground定義的內(nèi)建顏色紫色作為Visindigo程序的默認(rèn)主題色
新增Visindigo Widget抽象包,用于承載部分Widget內(nèi)部需求
移除VIMainWindow
新增PSOD(Purple Screen of Death)作為默認(rèn)的異常捕獲顯示器
初步新增一個WinUI3邏輯的IOButton(SwitchButton)
此更新已經(jīng)于兩周前在Github發(fā)布,經(jīng)過測試后認(rèn)為符合公開發(fā)布的要求,故今日宣布更新。
此更新在Github中附帶可用于Windows_x86(64)開發(fā)的Visindigo 動態(tài)鏈接庫和部署程序包。您也可以克隆倉庫之后手動編譯并生成 Visindigo 動態(tài)鏈接庫和部署程序包。
Visindigo開發(fā)組
23年8月27日