代码 > 魔改了v8go,实现了long live引擎

2026-01-12

https://github.com/rogchap/v8go

最后是搞定了FinalizationRegistry释放go里的资源了。

首先一同魔改,

auto default_platform = platform::NewDefaultPlatform(0,v8::platform::IdleTaskSupport::kEnabled);

创建platform时加入idletask支持。

然后把PumpMessageLoop和RunIdleTasks extend给go。

通过写了多个snapshot在chrome里分析,具体的gc过程是这样的。

首先,Context Release变量,这时候,变量本身会释放

然后PumpMessageLoop,这时候,变量会从FinalizationRegistry里消失

然后再PumpMessageLoop return true时RunIdleTasks一下,这时候held value会从FinalizationRegistry里消失

这时候要再执行一次RunIdleTasks,才会制定回调。

也就是一次释放,要至少经过3次空闲。

这个问题终于被我搞定了,我都会觉得自己是v8小能手了

代码 > 还是放弃双重gc了

2026-01-10

昨天重新折腾一下我go里封装的v8引擎。

最后已经完全放弃通过set finalizer来控制v8变量的释放了

模仿v8本身的风格,加了一层轻的抽象层Local,通过Local申请的变量在Local中同一释放

通过Export暴露出长期非Local的变量

加上对v8go的 FuctionCall和Value/Context Release的Patch

暂时很稳定。

代码 > 盘点一下2025的技术账,展望2026

2026-01-04

2025是蛋疼的一年。

但怎么说呢,撇开糟心事,猛刷的暗黑2原版和重置,25年我居然还是做了不少事。

1.在 mud客户端硬怼了v8。 go的v8 binding 离可用还是差的不少的,居然自己写了一点c++ 代码

2.做了ts项目,还编译到lua

3.做了C#的gui程序

怎么说呢,也算超额完成25年初的规划吧。

目前手头的技术栈是这样的

1. js/ts 用作脚本

2.go 网络库/部署/运维

3.c# 复杂/gui项目

4.dart/flutter apk

本质和25年差不多,顺序有所调整

26年的话,技术栈方面没什么想法,可能看看ai 的coding/生图这一块。

工地 > 博客托管到大善人cf家

2026-01-04

由于某些原因,博客迁移到大善人CF家,先看看国内网络稳定性。

代码 > 发现Avalonia/Flutter在windows下的一个限制

2025-12-13

用Avalonia(dotnet)或者Flutter 在windows下发布 桌面aot程序需要ms build tool

ms build tool需要有效的Visual Studio 许可证

在企业环境(>250电脑或者>250wusd营收)的情况下,不能使用Visual Studio社区版。

虽然到了这个规模,订阅vs也算九牛一毛

但这个的确和完全free的方案相比,法务问题多很多。

代码 > 开始写c#的minimal API

2025-12-05

怎么说呢,除了C#一贯的一堆引用外,还是和express/go差不多的洋葱模型。

够轻,容易处理,总体来说还是不错的,如果要在C#桌面程序中嵌入的话,完全够用了。

代码 > 服了苹果了

2025-11-26

给玩具项目整了一波大更新,开打包专用的mac mini,然后噩梦开始了。

真,无语。

苹果是怎么做到,一个只用来打包上架的机器,重新发布要种系统到文件权限到IDE全部需要升级折腾一遍的?

怎么做到的?

为啥我为爱发电贴打包机贴开发者账号还要受苹果这样的折磨。

叹气啊。

Linux > 暂时切换到kde6

2025-11-24

这一阵gnome的现实设置崩了,多屏设置不能起效,提醒是因为硬件错误,切换回老的linux-image也没用。

于是切到了kde。

怎么说呢,一段时间没用后,kde完善了不少的样子。

代码 > 桌面应用程序盘点2025版

2025-11-12

例行盘点下目前使用的桌面应用程序

浏览器:chrome/edge,基本不用火狐了

代码编辑:vscode,这个基本已经是行业老大了

图片变加:gimp/krita

git客户端:sourcegit

团队协作:飞书

游戏:steam

IM:微信

办公软件:wps

邮件客户端:雷鸟

发现用的应用数量也开始逐渐减少了。

代码 > 觉得还是要把对最终用户的开发语言换成csharp

2025-11-04

疯玩一段时间暗黑2重置后,还是思考了下代码。

语言不能脱离生态。

Go语言本质上最大的优势是他的大标准库及其衍生库。

就是基础互联网服务器这一块。

真的到真刀真枪在桌面用户/商业用户这块,第三方库就有点捉襟见肘了。

csharp相应的库是真多,go的第三方库开发浪潮也已经过了,在几年里看来是很难有起色。

人生苦短,没必要为难自己。