宣布发行面向C++开发的Visindigo版本0.11.0

针对C++ Qt5.15开发者,我们今天向您宣布发行Visindigo 0.11版本。
此版本和上个正式版本有大量更改,在您从0.10更新之前,请务必注意如下变化:
新功能和重要修复
引入了VIUJ模块。此模块适用于从JSON脚本动态生成窗体,并且可以和C++代码绑定以为窗体增加逻辑。VIUJ和QML的思路大体是一样的,但VIUJ规定了一系列解析JSON的标准以供用户自行拓展。使用VIUJ意味着在动态生成窗体这件事上不必像QML那样大规模的引入动态链接库,从而能够在获得便利的同时不必增加太多程序发行文件大小。
初步引入VIWave模块。此模块适用于操作WAVE音频。例如变更音量、音频合成等。此模块目前处于技术预览阶段,暂时不可靠,请不要用于生产环境。目前已知的问题是此模块对于样本宽度64Bit的音频不兼容,并且占用内存不合理,这些问题会在后续版本修复。
针对刻主机的增强:对于刻主机,现在引入了主机暂停和手动运行模式,并修复了部分问题
针对Visindigo JS主机的修复:修复了VIECMA中在执行JS脚本前挂载到引擎作为JS模块的C++对象的内部初始化策略不正确的问题
针对VISettings的增强:VISettings弃用CES作为内部存取键值对的方案,现在已经改为JSON
针对Visindigo Translator的增强:VITranslationHost弃用了原来的调用模式,现在需要翻译的对象应该声明实现VITranslatableObject接口。并且现在实际保存翻译数据的为各抽象包,不再使用全局翻译主机。这样一来各抽象包对翻译有更强的掌控能力。这项更改为将来的Visindigo JSPlugin和Visindigo DLLPlugin做准备。
其他更改、修复和弃用详见下文
Project Config & Visindigo Template
修复了一个Visual Studio 项目编译配置Debug的行为不正确的问题。
新增适用于Visual Studio C++中开发Visindigo程序的VS项目模板和项模板(文件模板)。项目模板由PyTools的PackMake自动管理,跟随最新的Visindigo C++代码更新,可用于Visindigo桌面应用程序开发和动态链接库开发。项模板(文件模板)目前可用于快速创建VIBasicBehavior、VIAnimationBehavior、VIObject派生类的定义文件。
支持以动态链接方式使用Visindigo
引入新的组件VIUJ,允许您以JSON声明窗体结构,并在C++中绑定窗体以添加功能
在默认的Debug和Release编译方案(称为Everywhere方案)上新增DllDebug和DllRelease编译方案(称为Developer方案)。相关方案控制部分Visindigo宏关键字的映射行为。
Visindigo PyTools & VICore
按计划弃用了0.10版本中的部分宏和API。
新增Visindigo Deployer部署程序Python源代码,可用于编译为Visindigo部署器。
新增Visindigo PackMake打包程序Python源代码,可用于从VSC++项目生成Visindigo C++库。也可用于其他Visindigo C++项目的库生成
新增Visindigo Installer部署程序Python源代码,可用于生成随PackMake一起发布的Visindigo部署程序,以便在目标计算机上部署Visindigo。
重新整理了VIECMAScripts的源代码,并修复了一个内建模块由于初始化时间错误而导致VIJS上不可用的问题。
编译版本信息现在固定为Visindigo编译信息,而非用户编译信息
VISettings被重构为VIDocument::VIJSON。
VIPackageInfo被重命名为VIPackageMeta。
修复了VIPackage和VIPackageMeta单例初始化位置错误导致的单例冲突问题。
在VIPackageMeta中内建了一个VIJSON实例,可用于存取包配置。
调整了VI_Singleton_Init宏的用法——从初始化static变量变更为类内初始化判断。针对原用法新增VI_Singleton_StaticInit宏。
修复了定量刻在特殊情况下可能暴毙的问题,此问题发生在当前刻实际用时恰好是定量时间的两倍时。
修改了若干枚举量的位置,现在统一位于Visindigo命名空间下
在定量刻主机中引入主机的暂停模式和手动跑刻接口
引入若干有关颜色的辅助函数
调整定量刻初始化行为
完善VIECMA报错信息
Framework被剥离为CoreFramework和Framework,与其对应的,也有CoreProgram和Program的剥离
翻译系统已经重构,由原来的全局三文档改为每包双文档的模式
拓展抽象包的内容和接口
对部分VIException异常增加检查宏和起爆宏
新增快速缩写标记“静态类”、“必须派生”、“已经继承”等、允许VI_NULLPTR缩写为VI_NULL
跨平台统一接口提供类不再是VIObject派生类
原VIDocument现在称为VIPathInfo,现在VIDocument是命名空间,其中包含所有Visindigo自定义格式文档的读取方法
移除全部远古Behavior残余
新增Visindigo Core抽象包,用于承载部分Core内部需求
VIWidgets
旧版本的VIPalette和VIPaletteGroup已经全部重构,并完全不兼容
更改了VIPalette中内建颜色的字符串名称。
VIPalette中的静态函数getDefaultColorName从私有变为公开。
补充了VIPaletteGroup中缺失的通过内建颜色名设置颜色的setColorToPalette重载函数。
VIPaletteGroup现在会在内部初始化时内建一个名为Default的颜色板并设置为当前颜色板,其中提供一个由内建颜色名VIPalette::DefaultColorName::Foreground定义的内建颜色紫色作为Visindigo程序的默认主题色
新增Visindigo Widget抽象包,用于承载部分Widget内部需求
移除VIMainWindow
新增PSOD(Purple Screen of Death)作为默认的异常捕获显示器
初步新增一个WinUI3逻辑的IOButton(SwitchButton)
此更新已经于两周前在Github发布,经过测试后认为符合公开发布的要求,故今日宣布更新。
此更新在Github中附带可用于Windows_x86(64)开发的Visindigo 动态链接库和部署程序包。您也可以克隆仓库之后手动编译并生成 Visindigo 动态链接库和部署程序包。
Visindigo开发组
23年8月27日