TermiNexus
|
5463fac3d2
|
feat(vipeye-internal): 支持 match-case 内裸 break 与 fallthrough
Validation / Typecheck (push) Has been cancelled
Validation / Style (push) Has been cancelled
Validation / Test macos-latest (push) Has been cancelled
Validation / Test ubuntu-latest (push) Has been cancelled
Validation / Test windows-latest (push) Has been cancelled
Validation / Build (push) Has been cancelled
Validation / Required (push) Has been cancelled
- break:parser 新增 _isInMatchCase(解析 case body 期间置位,与 _isInLoop 同法),_parseBreakStatement 判据放宽为 !_isInLoop && !_isInMatchCase,不再误报 breakOutsideLoop
- fallthrough:新增 ParseNodeType.Fallthrough / FallthroughNode;作为软关键字仅在「viper 方言 + case 体内 + 独占简单语句」时成立,其它位置仍是普通标识符
- 同步 parseTreeWalker 两处 switch 与 visitor、parseNodeUtils 的 ParseNodeTypeMap、binder 流程终止、flowChartBuilder 终止语句、completion 关键字、TextMate 高亮
- 测试 viperMatchBreakFallthrough.test.ts(2 用例),全量 jest 825 -> 827 通过
|
2026-10-02 22:29:53 +08:00 |
|
TermiNexus
|
3fd61c2594
|
feat(vipeye-internal): 支持泛型类型参数带界 class GSList[T: GSListNode]
includes/linkedlist.vp 的 GSList 泛型链表 body 依赖 T 的上界解析成员,原先
共 4 条误报(GSList[T]* 的 Head/Tail 赋值「GSListNode* 不可分配给
rawptr[type[T@GSList]]」+ CPtr[T] 上查 Next「属性 Next 未知」)。补齐三处:
① CPtr 解引用把 TypeVar pointee 具体化为上界(成员访问 / applyAttributeAccess
Override / 下标三处 Viper CPtr 分支):否则 self.Tail.Next(base = CPtr[T])
在 CPtr 上找 Next 失败。
② assignType 新增「泛型类型参数值 → CPtr[T]」放行(紧跟既有「类实例 → CPtr[T]
隐式取地址语义」之后):判据为目标 pointee 与源是同一类型参数
(TypeVarType.getNameWithScope 相等),或把源具体化后按普通规则递归比较。
依据:Viper 中类类型的值本身就是指针,覆盖 self.Head = node / self.Tail = node。
③ 未特化泛型基类上解析出的成员类型会退化成 CPtr[builtins.type 实例]
(即"某个类对象"),按「指针目标未知」放行(与 rawptr/void* 同口径)。
无界(GSList[T])仍报 Next 未知 —— 带界才是修复手段,测试固定该差异。
TransPyC 无需改动(includes/ast/parser.vp 本就跳过 bound)。
新增 viperGenericBound.test.ts 2 用例(带界 0 报错;无界报错行恰为 [20,24])。
jest 823 → 825。
|
2026-09-29 00:32:18 +08:00 |
|
TermiNexus
|
b8101947cf
|
fix(vipeye-internal): 同一继承体系内结构体指针双向转换(放行下转型)
Validation / Typecheck (push) Has been cancelled
Validation / Style (push) Has been cancelled
Validation / Test macos-latest (push) Has been cancelled
Validation / Test ubuntu-latest (push) Has been cancelled
Validation / Test windows-latest (push) Has been cancelled
Validation / Build (push) Has been cancelled
Validation / Required (push) Has been cancelled
指针隐式转换收紧后,结构体分支只认 isDerivedFrom(src, dest) 的**上转型**,
把下转型判为非法,导致 TransPyV 真实代码误报:
TransPyV/App/lib/core/Gen/Call/CallGenDispatch.vp:824
len_arg_node: ast.AST* = cargs.get(0)
self.Gen.CallGenProp._is_list_builtin_receiver(pool, len_val, len_cls_nm,
"__len__", len_arg_node)
形参声明 cl: rawptr[ast.Call](Call 派生自 AST)
→ 无法将"rawptr[AST]"类型的参数分配给函数"_is_list_builtin_receiver"中
类型为"rawptr[Call]"的参数"cl"
Viper 指针运行期不带静态类型(都是 i8*),同一继承体系内的 reinterpret
(含下转型)是既有代码的常规写法,编译器也接受,故改为**继承体系内双向**:
isDerivedFrom(src, dest) || isDerivedFrom(dest, src)(仍在 cloneAsInstantiable
之后比较)。不相关结构体(Node* → Other*)、结构体 ↔ 基本类型仍拒绝。
viperPointerConversion.test.ts 增至 3 用例:新增「AST*↔Call* 放行 + 不相关结构体
报 L28」,既有 2 用例断言([19] / [36,46,49])不变。jest 822 → 823。
|
2026-09-28 17:37:23 +08:00 |
|
TermiNexus
|
bc5bd3a425
|
fix(vipeye-internal): REnum 变体指针与根指针互转放行(修复 llvmlite 误判)
指针隐式转换收紧后,「pointee 必须兼容」把 REnum 变体指针
rawptr[LLVMType.Ptr] 判为与 rawptr[LLVMType] 不兼容,导致 llvmlite 的
build_load(builder, ty: rawptr[LLVMType], ...) 误报「无法将 rawptr[Ptr]
类型的参数分配给类型为 rawptr[LLVMType] 的参数 ty」。
成因:变体类(class LLVMType(t.REnum) 内的 class Ptr / class Int ...)是
**嵌套类**而非根类的子类,isDerivedFrom 判不出关系;而 match 的变体模式收窄
(patternMatching.narrowTypeBasedOnClassPattern)会把 CPtr[LLVMType] 收窄成
CPtr[LLVMType.Ptr],CallGenCall.vp 里的 lb_inner 正是这样被收窄后传回根指针形参。
TransPyV 对二者只 emit bitcast(tagged-union 负载地址 ↔ 联合地址),故放行同一
REnum 家族内的指针双向互转:新增 isViperREnumFamilyPointee(fullName 前缀嵌套
判定 + isViperREnumRootClass 判 mro 含 .REnum),与收窄判据同口径。
跨变体(Ptr* → Int*)与 REnum ↔ 无关结构体仍拒绝。
新增 viperREnumPointer.test.ts 2 用例:嵌套 match 收窄形状 0 报错;转换矩阵
断言报错行恰为 [32,36,37]。jest 820 → 822。
|
2026-09-28 17:17:36 +08:00 |
|
TermiNexus
|
bc500d060f
|
feat(vipeye-internal): 放行 virtual class 方法槽位赋值(vtable)
ViperOS devfs.vp 的 `serial0_file.open = serial0_open` 原先误报
「无法为类"devfs_file"的属性"open"赋值 / 参数名称不匹配 /
额外参数 "flags"」。
根因:devfs_file 是 virtual class,open/close/read/write/ioctl 是虚方法
(vtable 槽)。该赋值写的是 vtable 槽;编译器只把 RHS 函数 bitcast i8*
后 store,不校验签名与 self。而 LSP 走普通成员赋值路径,比较的是
**绑定方法类型**(self 已剥掉),于是 RHS 显式写的 self: rawptr 成了多余参数。
修法:typeEvaluator 的 usage.method === 'set' 分支里,assignType 之前加
isViperVtableMethodSlotAssignment 命中即视为兼容、跳过报错与收窄。判据:
- 类是 virtual class(ClassNode.d.viperClassModifier === 'virtual'
或 @t.CVTable 装饰器);注意传入的 classType 是**实例**形态,必须先转
可实例化形态(第一版没生效的原因)
- 成员在类里声明为方法(FunctionType)
- RHS 的 self 为泛指针(rawptr / t.CPtr / void*)或该类本身/父类的指针
- 其余非变参参数逐个 name + isTypeSame 相同,返回类型 isTypeSame 相同
(*args / **kwargs 不参与比较)
未放行:非 virtual class、self 非指针、参数名/类型/个数不符、返回类型不符。
- 新增 viperVtableMethodAssign.test.ts(3 用例)
- .gitignore:新增 3 个 __viper_vtable_assign_* 产物目录
- CHANGELOG:1.1.426 追加 1 条
|
2026-09-28 15:35:47 +08:00 |
|
TermiNexus
|
d91fc2d67e
|
feat(vipeye-internal): 指针隐式转换收紧为「同级 + pointee 兼容」
原先「同级指针无条件允许转换」,现改为:级数必须相同,且 pointee 必须兼容。
规则(canImplicitlyConvertCType + 新增 isViperCPtrPointeeAssignable):
- 任一侧 pointee 是 void*/未定(rawptr)→ 允许
(裸 rawptr 的实参是类自身的 TypeVar,不是 UnknownType,必须一并认)
- pointee 规范化后相同 → 允许(先剥联合里的 C 修饰符、
再统一实例形态,否则 volatile int / type[ParamNode] 会误报)
- 两侧 pointee 都是基本类型(数值标量)→ 复用 T 的转换规则
- 结构体等非基本类型 → 仅允许上转型(源类派生自目标类,
比较须 cloneAsInstantiable;MemBuddy* → MemManager* 是真实依赖),
不相关结构体 / 向下转型 / 结构体↔基本类型一律拒绝
- 单级指针 ↔ t.CVoid(void*)双向允许;多级(Node** → void*)禁止
要点:CPtr↔CPtr 分支必须放在「同名即允许」快捷判断之前(两 CPtr 的
shared.name 都是 'CPtr',否则 pointee 完全不看)。
`&x` / `*x` 的返回类型本就正确(x: T* → *x: T、&x: T**),本次确认它们
已参与上述拦截:a(&x)(x: T*,T** 传给 void*)仍报错。
- 新增 viperPointerConversion.test.ts(2 用例:一元 &/* 类型 + 拦截;
同级 pointee 兼容矩阵,断言报错行恰为 [36,46,49])
- .gitignore:新增 __viper_ptr_unary__/ __viper_ptr_convert__/
- CHANGELOG:1.1.426 追加 1 条
|
2026-09-28 15:26:51 +08:00 |
|
TermiNexus
|
71cb333549
|
feat(vipeye-internal): __attribute__ 属性名结构化高亮(未声明的也不报错)
`@__attribute__(section(".text.startup"), aligned(16), stackrealign)` 里
`stackrealign` 原先不高亮(白色)且误报「无法访问类"type[attr]"的属性」。
根因:属性名脱糖成 `t.attr.<name>`,高亮完全依赖能否解析到 `class attr`
的声明。而 `stackrealign` 在真实 t.py 与 LSP 存根 t.vpi 的 attr 类里都没有
(两边一致、无缺失),只在 TransPyV 的 codegen 映射(FuncGenBase.vp:181)
里支持,ViperOS main.vp:347 在用。
改法(结构化,不依赖存根声明):
- parseNodes:NameNode.d 新增 isViperAttrMarkerName
- parser._makeViperAttrMarker:给合成的属性名成员名打该标记
- semanticTokenProvider._classifyNameNode:该标记直接按 function 着色
(与 section/aligned/naked 等已声明属性同款)
- typeEvaluator:新增 isViperAttrMarkerMember,与
isViperBracketArraySyntheticMember 一起跳过 memberAccess 诊断
(编译器对未知属性是静默丢弃,不是报错,故这是误报)
- viperAttribute.test.ts:增至 9 用例(新增未声明属性名 stackrealign 的
高亮 + 不报错断言)
- .gitignore:新增 __viper_attribute_unknown__/
- CHANGELOG:1.1.426 追加 1 条
|
2026-09-28 14:59:44 +08:00 |
|
TermiNexus
|
b4808c2821
|
fix(vipeye-internal): [SIZE]T 数组不要求源码 import t(元素成员可解析)
ViperOS 协程调度器里 `coroutines: [8]Coroutine` 字段在**没 import t** 的
文件中,`m.coroutines[prev_cid].rsp` 报「无法解析类型上的成员“rsp”访问」,
`.rsp` 拿不到语义 token(黄标、无法跳转)。
根因:`[SIZE]T` 脱糖出的合成 `t` 名(isViperBracketArraySynthetic)在
typeEvaluator 的 Name 分支里解析不到时直接降级为 Unknown,于是
`t.CArray[Coroutine, 8]` 整条塌成 Unknown → 字段类型 Unknown → 元素成员访问全断。
修法:该分支改为 `getViperImplicitModuleType(node, name) ?? Unknown`,
回退到 builtins 作用域里绑定的 `t` 模块(与 `T*` 的 rawptr 回退、
`__attribute__` 的隐式模块根同口径);仍取不到才静默 Unknown。
- viperBracketArrayAndConstPtr.test.ts:增至 7 用例(新增「无 import t 时
[SIZE]StructT 仍解析元素类型、.rsp 得到 variable(3) 语义 token」)
- .gitignore:新增 __viper_bracket_array_no_import_t__/
- CHANGELOG:1.1.426 追加 1 条
|
2026-09-28 14:22:38 +08:00 |
|
TermiNexus
|
0bc7a7c4d4
|
feat(vipeye-internal): 支持 export/extern 变量声明(extern 禁止初始值)
- export NAME: T [= v] -> T | t.CExport(裸名定义,不加模块 SHA1 头),允许初始值;
extern NAME: T -> T | t.State(= CExtern | CExport 仅声明),不允许初始值:
extern a: int = 1 报「extern 变量声明不能带初始值(符号定义在外部)」
- 与函数形态由第三个 token 区分(`:` 变量 / `(` `[` 函数),与 TPC
_is_export_extern_var 同判据;export def / export f() 形态逐字不变
- 存储类标记按修饰符处理:Struct|CPtr 折叠与联合下标 skip 列表改用
isCModifierType(避免 extern p: t.CPtr 折成 CPtr[State]、str|State 下标误报);
CArray 元素访问快路径放宽到"联合里的 CArray 成员"(gdt[i].access 仍解析)
- typePrinter 增加 CExport->export / State->extern 前缀渲染(hover 显示 export int)
- 新增 viperExportExternVar.test.ts 4 用例,jest 809 -> 813
|
2026-09-27 18:13:37 +08:00 |
|
TermiNexus
|
c8817cacb1
|
fix(vipeye-internal): CArray 元素访问解析出元素类型(成员可高亮)
- kbd_buf: [KBD_BUF_SIZE]usb_kbd_event 的 kbd_buf[i].modifier 原先报
「无法解析类型上的成员“modifier”访问」且该成员拿不到语义 token(纯白)
- 根因:t.vpi 的 CArray 是 Generic[T, N] + __getitem__ -> T,但 Viper 侧
TypeVar(...) 不产出可替换类型变量(类型参数落到合成参数 __P0/__P1),
返回类型永远具体化不了 → 下标恒为 Unknown
- 修法:getTypeOfIndexedObjectOrClass 新增 Viper 分支,按 C 语义直接取
CArray 第一个类型实参(与 CPtr 分支读 priv.typeArgs[0] 同法),
`[SIZE]T` 与显式 t.CArray[T, N] 两种写法都覆盖
- 回归用例 +1(元素类型 + modifier 语义 token),jest 808 -> 809
|
2026-09-27 18:02:53 +08:00 |
|
TermiNexus
|
5808a76b23
|
fix(vipeye-internal): 支持注解内 static 前缀;*args 在未 import t 时仍是 va_list 指针
- `x: static T = v`(ViperOS VKernel/Kernel/drivers/** 全仓写法,如
`buf_head: static uint32 = 0`)脱糖为与语句起始形态相同的 `t.CStatic | T`,
并在声明节点打 isViperStatic,跨模块取参检查同判据;此前 `static` 在注解里
被当普通名引用,误报「"static" is not defined」。软关键字边界不变
(`static: int` / `static = 1` 仍按标识符),tmLanguage 一并高亮注解内 static
- `getViperCPtrType` 增加 builtins `rawptr` 回退:文件没有 `import t` 时
`*args` 不再退回 Python tuple 语义,`viperlib.vsnprintf(&buf, 1024, fmt, args)`
不再误报「tuple 不能赋给参数 ap(str)」(与 T* 注解 / [SIZE]T 同机制)
- 回归用例 +3:注解内 static 解析/展示/跨模块拦截 + 软关键字边界、
未 import t 的 *args 透传;jest 805 -> 808
|
2026-09-27 14:26:42 +08:00 |
|
TermiNexus
|
2a7757e3b7
|
fix(vipeye-internal): 拦截 const 指针下标赋值并放行 const 指针迭代
- const 指针的 p[i] = v 下标赋值与 *p = v 解引用赋值共用
viperConstDerefAssignment 诊断,指向只读数据一律报错;
非 const 指针(buf: str)的下标/解引用赋值仍合法
- 迭代判据改认全 Viper 指针(CPtr / str / bytes):新增
viperTypeContainsPointer 并替换 getTypeOfIterator / getTypeOfIterable
里只认 CPtr 的旧写法,path: const str 的 for ch in path: 不再
误报「“CConst”不可迭代 / 未定义 __iter__」;const int 仍不可迭代
- 补 2 个回归用例(下标读写、const 指针可迭代),jest 803 -> 805
|
2026-09-27 13:49:50 +08:00 |
|
TermiNexus
|
a7a00a23d5
|
fix(vipeye-internal): [SIZE]T 支持整型常量运算;const 指针只读(解引用可读不可写)
- [SIZE]T 的 SIZE 是值表达式,允许任意整型常量运算(如
[MAX_VOLUMES * MAX_PARTITIONS]uint8 / [N - 1]uint8 / [1 << 3]uint8)。
parser:解析 SIZE 期间清除 _isParsingTypeAnnotation,否则 Viper 的
「星号是指针后缀 + 注解中停止解析」分支会吞掉 '*',误报「[ 未关闭」与
「类型表达式中不允许使用解包运算符」。
evaluator:operations 的 TypeExpression 分支新增整型常量算术放行
(isViperIntegerConstantArithmetic),此前注释已写明但代码未实现,
t.CArray[T, MAX_ORDER + 1] 同样受益;类名相加仍报 binaryOperationNotAllowed。
- const 指针(lfn: const str = CConst | str)只读:解引用读允许
(*lfn / lfn[0] → char,getTypeOfViperDeref 跳过 C 修饰符子类型,
不再误报 类型"const str"不支持运算符"*"),解引用赋值报新诊断
viperConstDerefAssignment(*lfn = c);非 const 指针 *buf = c 仍合法。
- 新增 viperBracketArrayAndConstPtr.test.ts(3 用例);全量 jest 800 → 803 通过。
|
2026-09-27 13:44:30 +08:00 |
|
TermiNexus
|
90f4118603
|
feat(vipeye-internal): 支持 static 修饰符(禁止跨模块取参)与 f-string 前缀高亮
- static 是软关键字:`static def f` / `static fn f`(走 virtual 同一机制,记在
FunctionNode.d.viperModifier)与 `static x: T = v`(注解脱糖为 `t.CStatic | T`,
与 TPC _parse_type_ann 同形,展示为 `static int`)。其余位置仍是普通标识符
(`static = 1` / `static: int` / `static(x)` / `def f(static: int)`)。
- 语义 = C 的 internal linkage:跨模块取参报错。两处拦截:模块成员访问
(`mod.name` / `mod.fn()`)与 `from mod import name`;按声明所在文件判定,
同模块自引用/自导入放行。新增诊断 viperStaticUsedOutsideOfModule(zh-cn/en-us)。
判据 parseTreeUtils.isViperStaticDeclarationNode 供两处共用。
- static 并入补全关键字与 TextMate 修饰符高亮。
- f-string 的 r/u/b/f 前缀以 storage.type.string.viper 高亮(默认深色主题下为蓝色),
之前该前缀不在字符串范围内、无任何规则命中,显示为白色。
- 新增 viperStaticModifier.test.ts(4 用例);全量 jest 796 → 800 通过。
|
2026-09-27 13:19:57 +08:00 |
|
TermiNexus
|
4d5a0d203b
|
feat(vipeye-internal): __attribute__ 免 import t/c 与状态栏分析进度
- __attribute__ 脱糖出的 t / c 模块根改为「隐式模块根」(零长度合成名 +
isViperImplicitModule 标记),作用域链取不到时回退 builtins 直接查
symbolTable,故不再要求源码 import t / import c;手写裸 t / c 仍报未定义。
补上 builtins.vpi 缺失的 import c(原先只有 import t,装饰器路径一直报
「未定义 c」)。
- 新增左下角状态栏分析进度:逐文件回调 → 后台线程节流 50ms 回传
analysisProgress 消息 → 前台 sendNotification('viper/analysisStatus')
→ 客户端 StatusBarItem 显示 `C:\xxx\1.vp (4/90) 4.44% loading...`,
分析结束自动隐藏,让用户能区分「插件在忙」与「插件卡死」。
- viperAttribute.test.ts 补回被误删的 hover 用例并新增 2 个回归用例;
jest 794 → 796 通过。
|
2026-09-27 13:03:03 +08:00 |
|
TermiNexus
|
baec16e540
|
feat(vipeye-internal): Viper 1.1.426 语法/语义/补全增强
把 TransPyC 现行语法与 Viper 的类型组合语义补齐到 LSP 侧(编译器 TPC/TPV 不改动):
- 类型描述符:`const` / `volatile` 可前缀任意类型注解并成为硬关键字(仅注解前缀
合法,`const = 1` / `a: const` 报语法错误),解析层脱糖为等价的 `CConst | T` /
`CVolatile | T`,与手写 TypeSet 完全同形;`const T*` 得 `CConst | CPtr[T]`;
`T*` / `&x` 不再要求 import t(回退 builtins 的 rawptr);描述符按「前缀限定符」
渲染(`const int` / `const volatile int` / `const rawptr[int]`)而不泄漏为联合成员
- 新增 `inline while` / `inline for`;`const` / `volatile` / `inline` 高亮为修饰符
- 新增内建类型名 uint / uchar,并把 rawptr / sizet / int8..uint64 / uintfast* /
uintleast* 等内建到 builtins.vpi,任意 Viper 工程无需配置 includes
- 新增 `virtual` / `novirtual` 声明修饰符(等价 @t.CVTable / @t.NoVTable),
含放置位置校验,并并入补全与高亮
- `(T**)x` 两级指针强转修复:指针类型后缀统一按类型表达式求值,不再被当成解引用
- 裸内置内联汇编 / LLVM IR:`__asm__` / `asminp` / `asmout` / `__llvmir__` /
`irinp` / `irout` / `ASM_DESCR`,与 c.* / t.ASM_DESCR 写法等价
- `X | t.CPtr` 在 X 本身是指针时再包一层(HANDLE | t.CPtr = void**),
修复 CreatePipe 一类 LPHANDLE 的「跨级指针隐式转换不允许」误报
- 补全并入 Viper 专有关键字(define / const / volatile / typedef / inline / export /
extern / virtual / novirtual / enum / rnum / union / struct / fn / fun / func / function)
- `T*(x)`:裸模块名 + 模块内同名类归一为 CPtr[bootinfo];并按 TPC `_AtPtrSuffixCall`
的判据把「类型原子 + 紧贴星串 + 紧贴 (」解析为调用,使
`uint32*(info.vendor_id)[0] = res.ebx` 成为合法赋值目标
- 新增「重复声明」检查:模块级已有同名运行期变量时,函数内再用类型注解声明同名
变量无条件报 TypeError(与 TPV AssignGenMixin 同口径);排除 CDefine 宏、CTypedef
别名、同名函数/类与类体成员。合法写法只剩 `global x` + 无注解赋值,或换名
- 支持 `__attribute__`:装饰器 `@__attribute__(...)` 脱糖为
`@c.Attribute(t.attr.X, ...)`;注解修饰器 `a: __attribute__(...) const int`
脱糖为 `t.attr.X | (CConst | int)`;注解联合中的 `t.attr.*` 标记求值为 t.CAttr
修饰符(运算/下标/赋值/展示均按被修饰的基础类型处理);值位置
`volatile f()` / `volatile 结构体()` 前缀;`__a` 补全、括号内属性名补全与悬停、
TextMate 高亮
- 注解位置小写 `callable[[A, B], R]` 等价 t.Callable:parser 仅在类型注解位置把裸名
`callable` 脱糖为 `Callable`,builtins.vpi 内建 `Callable` 别名(无需 import t);
值位置 `callable(x)` 仍是内置函数
- 版本号提升至 1.1.426 并更新 CHANGELOG;新增 6 个回归测试文件、更新 4 个,
全量 64 套件 / 794 用例全绿(另有 1 套件 8 用例为既有 skip)
|
2026-09-27 12:50:02 +08:00 |
|
TermiNexus
|
cef653b637
|
chore: 忽略测试运行生成的产物
__ty_narrow_dump.txt 与 __unary_ptr__/unary_ptr.vp 每次跑 jest 都会被重写,
从版本库移除并加入 .gitignore,避免每次测试后工作区都变脏。
|
2026-09-22 22:07:44 +08:00 |
|
TermiNexus
|
44d83f4235
|
"chore: migrate Pyright branding to Vipeye/vipeye across docs and tooling
Validation / Typecheck (push) Has been cancelled
Validation / Style (push) Has been cancelled
Validation / Test macos-latest (push) Has been cancelled
Validation / Test ubuntu-latest (push) Has been cancelled
Validation / Test windows-latest (push) Has been cancelled
Validation / Build (push) Has been cancelled
Validation / Required (push) Has been cancelled
Run mypy_primer on push / Run mypy_primer on push (push) Has been cancelled
- Rewrite root README and docs for Vipeye
- Rename pyright-test-policy to vipeye-test-policy
- Update CI/Azure pipelines, perfCompare.py and package metadata
- Keep upstream links, external tool params and # pyright: ignore compat"
|
2026-08-07 03:33:29 +08:00 |
|
TermiNexus
|
d51754951c
|
将本项目升级到基本可用的状态,正在细化各个方面,初次打包了实验版本
Validation / Typecheck (push) Has been cancelled
Validation / Style (push) Has been cancelled
Validation / Test macos-latest (push) Has been cancelled
Validation / Test ubuntu-latest (push) Has been cancelled
Validation / Test windows-latest (push) Has been cancelled
Validation / Build (push) Has been cancelled
Validation / Required (push) Has been cancelled
|
2026-07-30 22:33:31 +08:00 |
|
TermiNexus
|
e9e4693333
|
初始化上传
Run mypy_primer on push / Run mypy_primer on push (push) Has been cancelled
Validation / Typecheck (push) Has been cancelled
Validation / Style (push) Has been cancelled
Validation / Test macos-latest (push) Has been cancelled
Validation / Test ubuntu-latest (push) Has been cancelled
Validation / Test windows-latest (push) Has been cancelled
Validation / Build (push) Has been cancelled
Validation / Required (push) Has been cancelled
|
2026-07-24 17:08:39 +08:00 |
|