6 Star 49 Fork 13

凌哥/易语言_凌哥E编程模块_易语言模块_部分功能例子

标签名
描述
提交信息
操作

删除:L_内存池(类) 内部我之前用纯易语言代码实现的内存池结构已移除,现在只留下了mimalloc,原有的内存池模式1变为:不使用内存池
重命名为:L_内存池_*() 子程序,不再使用全局变量类,这样可以减少几次寻址,性能提升了一丢丢
新增:L_正则_创建()、L_正则_搜索全部()、L_正则_取匹配数量()、L_正则_取匹配文本_从索引()、L_正则_释放搜索结果()、L_正则_销毁()
封装的pcre2库,支持JIT编译器,通用型函数调用+内部使用纯指针封装模式,接入了模块的全局内存池,高性能,线程安全
新增:L_虚表(类) >>> 创建(UI优先模式) 默认为假=子线程优先, 此时子线程会更快与UI线程抢占数据, 大并发下可能会导致UI卡顿;真=设置内部锁的逻辑以确保UI更新为优先, 此时所有对虚表进行的操作都会优先等待UI刷新, 也就是说如果UI卡住, 虚表的操作速度也会下降
新增:【多线程安全调用窗口组件】超级列表框EX_置项目文本_W、富文本框EX_置光标位置、富文本框EX_取光标位置、富文本框EX_插入文本、富文本框EX_插入文本_W、富文本框EX_置选择文本长度、富文本框EX_置选择区字符格式、富文本框EX_取内容、富文本框EX_置内容
感谢[无昵称]会员为这些新增功能额外赞助288元
新增:编辑框_取内容()、单选框_选中()、选择框_选中()、编辑框EX_取内容()、选择框EX_选中() 这些命令增加了新参数[缓存时间]
单位毫秒;默认为0=不缓存数据;本参数指定读取某个组件后,将状态缓存多久以便下次直接使用(用于降低对组件的直接占用,避免卡窗口)
每个组件的缓存时间互不干扰,多线程下直接就是并发读取的性能
新增:L_运算_计算数组成员地址() 汇编运算;返回值=起始地址 + (成员 - 1) × 成员大小
新增:L_运算_计算对齐数值_整数()、L_运算_计算对齐数值_长整数()、L_运算_计算对齐数值_双精度()、L_运算_计算对齐数值_小数() 汇编版本
新增:L_通用对话框_打开文件(最低支持的文件数量) 本参数是缓冲区数量;默认为100,如果要支持多选非常多的文件时,可以将这个参数调高
新增:L_MMKV(类) >>> 分类_取全部分类() 取出所有分类信息
新增:L_RocksDB(类) >>> 列族_取全部列族() 取出所有列族信息
新增:L_线程池(类) >>> 创建(队列释放事件回调) 设置线程池内部队列数据 在释放之前 将调用的子程序回调(子程序接收1个整数型参数: 队列ID)
你可以在这里释放队列额外的数据,比如压入队列时直接传递数据指针后,需要在中途停止线程池时很有用;每个队列只会执行1次当前回调函数

优化:L_文件读写_写出文本()、L_文件读写_插入文本行()、L_文件读写_插入文本()、L_文件读写_写文本行() 文本型参数改为了通用型,支持传入文本型变量或者指针
优化:L_队列(类) 改进了内部弹出队列时的超时等待逻辑,并且与 L_线程池(类) 解耦合
优化:L_线程池(类) 与 L_队列(类) 交互的地方有改进
优化:L_线程池(类) 在销毁的时候,内部线程退出的速度更快了
优化:L_线程池(类) >>> 创建()、停止并清除所有任务() 注释内容有所修改
优化:L_虚表.查找表项() 速度提升了30%
优化:使用VC-LTL重新编译了mimalloc内存池,使其体积减小了一倍,对不同版本的操作系统兼容性有了极大的提升
优化:L_进程任务池_主进程(类) 内部逻辑重写

修复:L_进程任务池_主进程(类) 内存重复释放导致崩溃的BUG
修复:L_文件读写_插入文本行() 内部使用多项选择用法错误的问题
修复:L_MMKV(类) 读取数据可能会失败的BUG(没取到内部数据的实际长度,写入的数据还是安全的)
修复:L_增量更新(类) >>> 在某一次更新后 合并差异补丁() 内的代码指针偏移计算错误导致崩溃的问题
修复:L_运算_双精度到文本()、L_运算_双精度到文本2()、L_运算_双精度到文本Ex()、L_运算_双精度到文本Ex2() 有概率返回错误数据的问题
修复:L_通用对话框_打开文件(返回_选择的文件路径) 在多选文件时返回的路径末尾没有""的问题

第三方库 或 模块附带功能/软件的更新:
模块配套支持库:更新至2.2版本,支持库初始化方式更规范了
mmkv:更新至1.3.6版本 (使用VC-LTL编译,支持XP系统)
mimalloc:更新至2.1.7版本 (使用VC-LTL编译,支持XP系统)
Curl:更新至8.9.0_1版本
RocksDB:更新至9.2.1版本
OpenCV4:更新至4.8.0#21版本
flatbuffers:更新至24.3.25版本
libjpeg-turbo:更新至3.0.3版本
openjpeg:更新至2.5.2#1版本
liblzma:更新至5.6.2版本
libpng:更新至1.6.43#2版本
libwebp:更新至1.4.0#1版本
protobuf:更新至4.25.1版本
quirc:更新至1.2版本
tiff:更新至4.6.0#4版本
受其他库更新影响而重编译的库:NCNN

2024-07-24 23:42

新增:L_ncnn_yolo(类) 线程安全;支持darknet框架(yolov3、yolov4)模型推理,带一键转换模型源码,支持GPU等优化
新增:L_MMKV(类) 线程安全;性能比RocksDB高一些;适用于需要将数据存储在硬盘中,并能接受对比哈希表时性能略低一些的场景
新增:L_通用对话框_打开文件夹() 通过Hook的方式创建用于 打开文件夹 的通用对话框
新增:L_打包器_创建()、L_打包器_添加数据()、L_打包器_取打包结果()、L_打包器_销毁()、L_解包器_创建()、L_解包器_销毁()、L_解包器_取数据()
新增:L_校验_Xor运算()、L_校验_Xor运算2() 类似rc4,但是性能更高
新增:L_信号量(类) 以及对应的子程序版本
新增:L_线程池(类) >>> 加入队列通用型()、取任务参数通用型() 避免每次传入参数时都要转换成字节集,效率更高
新增:L_热键_等待指定键() 与注册热键差不多,但 是在当前线程主动去判断的

优化:模块的调试/编译速度加快了一些
优化:L_热键_() 内部原始输入监听将运行在非主线程上,性能更稳定
优化:L_虚表(类) >>> 插入列_批量() 现在 [列宽] 和 [对齐方式] 允许留空了,并且 数组成员数<列标题 也可以
优化:L_虚表(类) >>> 保证显示() 现在可以在插入新表项后直接调用了
优化:L_文件_创建() 目录不存在时将会自动创建它
优化:L_文本_删首尾空() 增加了两个参数(默认为真):删除首部、删除尾部
优化:L_文本_取拼音() 多音字的结果现在与易语言核心库的相同了,并且优化了首次调用时内部初始化的速度,提升显著
优化:L_RocksDB(类) 内部设置调整,解决了日志文件体积无限增加的问题;新增了一些优化设置
优化:L_大数_
() 相关子程序,针对传入空文本的情况做了判断
优化:L_文本_子文本替换从数据指针() 现在对不区分大小写的判断使用了正确的方式
优化:L_内存池(类) 现在默认使用mimalloc单线程模式
优化:编码转换底层方法使用汇编重写+减少内存拷贝,性能提升了1倍
优化:L_wss_连接() 改进了s5代理的握手过程,额外增加了一些连接失败的返回信息

修复:L_线程池(类) >>> 加入队列() 时填写超时时间后会导致句柄泄漏的问题
修复:L_线程池(类) >>> 加入队列() 传入空字节集队列参数导致的死循环问题
修复:L_文本_取文本字符类型() L_文本_取特定文本() 中对全角标点与中文进行了区分
修复:L_异常捕获(类) 使用后在易语言调试状态下,调试运行结束后可能会导致易语言崩溃的问题(很奇怪)
修复:L_RocksDB(类) >>> Flush() 多线程调用会崩溃的问题
修复:动态数据类型(生成器) 规避了易语言全局变量引用为0导致的销毁问题

第三方库 或 模块附带功能/软件的更新:
微软mimalloc内存池:
升级至2.1.6版本
Curl:
DLL升级至8.8.0_1版本

2024-05-23 14:13
  • 新增:L_Curl_http2winhttp(类) >>> SetUploadDHead() 设置上传数据时的请求头格式
    默认为假=使用【Content-Length: 数据长度】; 为真=使用【Transfer-Encoding: chunked】
    避免出现对某些HTTP服务端POST/PUT数据时,由于目标服务器对HTTP协议的封装不完善
    导致完全无法识别 Transfer-Encoding: chunked 请求头从而获取不到上传数据的问题 (比如E2EE)
    所以做了这个开关以确保兼容性(写死的担心有些服务端强制要 Transfer-Encoding: chunked)

  • 新增:L_文本类型_添加数据从文件() L_文本类型_写到文件(); L_字节集类型_添加数据从文件() L_字节集类型_写到文件() 快速导入导出文件数据

  • 新增:L_虚表(类) >>> 事件_当前表项被改变() 回调接收3个整数型参数:hwnd, 表项索引, 项目数值

  • 新增:L_wss_连接() 增加新参数:返回_连接错误信息,在连接失败时可以通过本参数判断具体是在哪个阶段出错的

  • 优化:模块内部的代码封装针对这个问题进行了修改,以前是从来没触发过这个BUG,但是为了安全起见还是改了
    https://github.com/OpenEpl/TextECode/issues/10

  • 优化:L_虚表(类) >>> 取标题源指针() 补全了注释,方便理解该命令的行为

  • 优化:模块内自定义窗口/线程消息值 现在按系统规范使用 RegisterWindowMessage 函数注册,而不是自己随便定义一个值来判定
    此项改动受影响的代码有:L_虚表(类)、L_热键_*(子程序)

  • 优化:重写了 L_整数型数组_*(),乘法运算的部分变少了,代码逻辑更加合理

  • 优化:模块内的 文本/字节集 寻找/倒找 汇编代码有调整,影响范围:几乎整个模块

  • 优化:现在 L_wss_连接() 失败时,不会触发连接断开事件了

  • 优化:L_字节集类型_添加数据从字节集() 增加了返回值,返回内部数据长度

  • 修复:L_字节集类型_添加数据从字节集()、L_字节集类型_置数据从字节集() 传入空字节集变量会崩溃的问题(用汇编重写后忘记判断0了)

  • 修复:L_DC截图(类)、L_位图_截图(子程序) 在部分情况下返回的位图数据不标准的问题,整个易语言社区内开源过的截图功能都不标准
    起因是我将截图结果传递给Opencv的时候发现会报错,在调试过程中发现微软的文件管理器也没办法正确显示缩略图
    最离谱的是一些图片查看器完全不报错,之前写完觉得就没问题了,这次我上外网查了半天资料,终于修好了...

  • 修复:L_运算_计算对齐数值() 中如果 输入值=对齐值 则 返回值=输入值+对齐值 的BUG,正常应该是 返回值=输入值

  • 修复:L_wss_连接() 对服务器返回的HTTP状态码判断出错导致 主动断开TCP连接的问题(原因是hpsocket的2字节返回值我读了4字节)

第三方库 或 模块附带功能/软件的更新:

  • Curl:
    DLL升级至8.6.0_4版本
  • hpsocket:
    DLL升级至6.0.1.6版本
2024-03-06 14:33
易语言
1
https://gitee.com/a1027663760/EC.git
git@gitee.com:a1027663760/EC.git
a1027663760
EC
易语言_凌哥E编程模块_易语言模块_部分功能例子

搜索帮助

Cb406eda 1850385 E526c682 1850385