Skip to content

v0.1.2: big updates after adapting to Nimv1/Nimv2

Latest

Choose a tag to compare

@litlighilit litlighilit released this 04 Apr 16:39

Changelog

0.1.2 - 2026-04-04

Added

Lib

Modules

  • posixmodule: PyOS_FSPath (bb3a277)

PyTypeObject

  • tp_flags; feat(object/attr): type.__module__ (c895633)

Utils

Api

  • main accepts init=false (e594cff)
  • Py_Initialize, feat(sharedlib): export symbols (ed1975d)
  • c: PyLong_FromDouble as newPyInt (1f63db5)
  • c: generics: PySequence_Fast_GET_ITEM (24ccb78)
  • c: abstract: PyObject_CallMethodObjArgs as callMethodArgs (a681fe2)
  • c: PyImport_GetModule (0fd8ddd)
  • c: _PyStaticType_InitBuiltin as PyStaticType_InitBuiltin; placeholder: _Py_SetImmortal as Py_SetImmortal (7a0ab01)
  • c: _PyUnicode_FastCopyCharacters as fastCopyCharacters... (a45d786)
  • c: PyArg_ValidateKeywordArguments, _PyDict_HasOnlyStringKeys as hasOnlyStringKeys (966db9c)
  • c: PyObject_GetItem, PyObject_SetItem (cc125f7)
  • c: PyCallable_Check as ofPyCallable (0bf985b)
  • c: PyLong_AsLongAndOverflow (1727dee)
  • c: PyUnicode_FromOrdinal (5a640a3)
  • c: generics: PyIter_Next, PyNumber_BOP, PyNumber_UOP, PySequence_List, PySequence_Fast (06296c9)
  • c: PyObject_RichCompare[Bool]; add Py_IS_TYPE,etc helpers (dde1dc8)
  • c: PyObject_TypeCheck (768384d)
  • EXT: PyTuple_Collect (1dff108)
  • c: PyUnicode_FSDecoder (e0fce88)
  • getargs: PyArg_VaParseTupleAndKeywords, PyArg_ParseTupleAndKeywords (e8ec5dd)
  • getargs: PyArg_VaParseTuple (fe79482)
  • c: PyRun_Xxx (break: delete runSimpleString) (1c3a83b)
  • c: PyParser_XxASTFromXx (4490398)
  • c: PrErr_Print[Ex] (a99361c)
  • getargs: kwargs: PyArg_UnpackKeywords (4472524)
  • dict: pop for PyStrObject (79dafc3)
  • set: contains,[containsOr]incl, of[Exact]PyAnySet (c9cad25)
  • inner: PyObject_LookupSpecial (a4570dd)
  • inner: _PyObject_CallNoArgs as call (75f496e)
  • inner: slot func in typeobject/wraps (890a2bf)
  • dict.len (be68042)
  • forMro, iterMro, forMroNoSelf (mro not impl yet) (7969225)
  • str: PyUnicode_CompareWithASCIIString as cmpAscii, _PyUnicode_EqualToASCIIString as eqAscii (d2ee91d)
  • inner: _PyWideStringList_AsList as asList (850324a)
  • int: toInt64Unsafe,toBiggestIntUnsafe (8b55f88)
  • dict.setItem, Py_BuildValue, Py_gitversion (a63cdd9)
  • int: PyNumber_Long, PyLong_FromUnicodeObject (bd2b4e8)
  • int: PyLong_FromString (03aac2d)
  • PyUnicode_FromFormat as newPyStr&.. or newPyAscii&.. (59a53d6)
  • getFullyQualifiedName (252f467)
  • PyUnicode_fromStringAndSize, PyUnicode_InternMortal, ofPyTypeObject, isType (f827a82)
  • pyerrors.Py_FatalError,Py_CheckSlotResult (af39671)
  • newPyList(int) (PyLIst_New) (319fd2d)
  • UnicodeVariant.len, & with char; accept openArray[char] int (af429b4)
  • structmember: PyMember_GetOne, PyMember_SetOne (e6fb490)
  • modsupport: Py_VaBuildValue,Py_VaBuildTuple (89e9468)
  • pyatomic (82f9010)
  • warnings.warnEx (PyErr_WarnEx) (with TODOs), some new warning type (e40eea7)
  • ofExactPyXxObject; add def impl of ofPyXxObject (85b67b8)
  • abstract.callMethod; refact: add abstract_without_call (e4ce9ac)
  • pairs for Sequence (e5b54f0)
  • critical_section (TODO:threads) (63407ef)
  • PyFloat_AsXx,asDouble; break: toInt->toIntUnsafe (6e508c9)
  • inner: add Python/getargs: PyArg_UnpackTuple,unpackOptArgs (ac5c34b)
  • exceptions: checkArgNumAtMost, checkArgNum with min,max;... (a3e538a)
  • newPySet(openArray),newPyDict(openArray) (f136c95)
  • PyTuple_Pack (a4a500e)
  • stringobject: allow init from char|cstring; asUTF8AndSize; substring (43aab68)
  • Python/errors PyErr_BadArgument (e63a234)
  • PyBoolObject.isPyTrue,newPyList(openArray) (98a7a66)
  • toUInt,PyLong_AsSize_t,newPyInt(SomeUnsignedInt) (df05be7)

Attr

  • for cell, code, function, method (a739e98)

Attrs

  • traceback.tb_next,tb_frame,tb_lasti (29dc943)

Augassign

  • impl a.__iXX__(b) fallback to a=a.__XX__(b) (bd0c158)

Basic

Bltin

  • format; feat(magic): __format__ for str,int,float (f5c4356)
  • float; fix(py): float.__new__ did nothing (9a8402e)
  • hasattr,setattr,delattr; fix(nimc): PyObject_GetOptionalAttr, PyObject_SetAttr, .DelAttr (9f49275)

Builins

Builtin

  • Ellipsis (ast syntax ... is sup too) (f22a9e3)

Builtins

Bytes

  • bltins, add __bytes__ magic (almost no magic,method impl) (5165105)

C

  • api: declarePyType: allow defval (f8de9dd)
  • api: overload incl, contains[OrIncl] of set for PyIntObject (ae16a15)
  • api: PySys_GetObject, PyLong_FromVoidPtr as newPyIntFromPtr, PyType_GetQualName as getQualName; fixup... (de8eabd)
  • api: PyUnstable_Object_Dump (ddd935e)

Class

  • single herit (not test) (4ee6304)

Clinic

Comp

  • set, dict comprehension (4b00d8c)

Def

  • default arguments, *vargs (b5a6806)

Dict

  • popitem (c737859)
  • all meth except fromkeys,popitem; fix(py): dict() accepted no arg (904c9ce)

Err_display

  • more py-like, (anchor impl missed) (99cd0fe)

Errors

  • ArithmeticError, OverflowError (f6cb789)

Exc

  • add almost all; fix(py): __str__,__repr__,__init__ for many exc; fixup: exception attr may be stored as pyNone (dcda6c2)

Exceptions

  • OSError, IOError, EOFError, BufferError (decl only) (2e1ae43)
  • ModuleNotFoundError, RecursionError; fix: sub base exc dup (cad05a1)
  • subclass of BaseException (wip) (7859d0c)

Float

Getargs

  • acc non-static string as fname (2d82357)
  • sup converter as convertVia, kwOnly; fixup for PyArg_VaParseXx (clinic) (42e534a)
  • toval sup bool, string (36a4e30)

Gram

ImplMagic

  • for binary magic allow typed params (2899ade)

Index

  • add url for online demo (6385cf5)

Inner

  • PyConfig.import_time (b41217e)
  • compat: mayNewPromise (9d06e3a)
  • PyTypeObject.member (28f1a80)
  • exceptions: add errorIfNot,retIfExc (3432796)
  • pyobject: checkTypeOrRetTE, castTypeOrRetTE (cd72950)
  • abstract: add helpers: numAs*OrE, *OptArgAt (fb09b5f)
  • followup 0039346: sup stop arg for Utils/sequtils.find*... (3196266)
  • items, [] for list,tuple object (ea937c7)
  • exceptions: obj.isExceptionOf(ExceptionToken) (f7b7285)
  • pyobject: declarePyType accepts custom typeName (0ffc98c)
  • dedup iterable loop as pyForIn (4066821)

Int

Iterobject

Js

  • import works when js (6feefbb)
  • io works for both node and deno, ... (fb87da3)
  • browser (karax) repl (32ec604)
  • sup deno; sup -d:jsAlert to gen a prompt&alert repl; sup -d:karax (but bad html style) (3584b6c)
  • nodejs repl (1f47848)
  • nodejs run .py file (c995cb4)

Karax

Karaxpython

  • ui: wrap line if overflow (f514efd)
  • ui: history (bug: cursor not to end on restoring) (98bea33)
  • ui: edit line is focused on user entering page (d74eb62)
  • add simple info line about repo url (9358d36)

Lexer

  • support \r\n as linesep (102927c)

List

  • setitem,deliem accept slice (f9e46c5)

Listcomp

  • sup non-simple list comprehension (7b12443)

Magic

  • hash for complex (4cbaa25)
  • matmul, await,etc, buffer, divmod (not impl for types) (cba512b)
  • invert rshift lshift irshift, ilshift (not impl for types yet) (d63dba4)
  • del (f030ed0)
  • MemberDescr __get__ __set__ (c35ed86)
  • iXX (e.g. __iadd__) (9a400c9)

Members

  • slice exceptions funcobject (ff2e3cc)

Meth

  • float.hex,fromhex,as_integer_ratio,is_integer (0c97c4c)
  • all from pystrutils, unicode_case (a3dd0d1)
  • startswith,endswith for str,bytes,bytearray (85b4399)
  • bytes/bytearray meth from pkg/pystrutils (a960afe)
  • str methods from pkg/pystrutils (d940897)

Method

Module

  • sys: get_int_max_str_digits, set_int_max_str_digits (dd55fd8)
  • sys: xx_info (b6dcd4a)
  • sys: excepthook, PySys_EchoStderr, PySys_XxAttr (5db7e40)
  • builtins (2b43b46)
  • sys (can import as builtin module); feat(import): respect sys.path (31ccd49)
  • sys (not all apis) (bafda8e)
  • unicodedata.decimal (ef92406)
  • sysmodule (audit) (f12258c)

Object

  • float: sup mixin ops with float (ae20ee1)
  • SimpleNamespace, structseq(named tuple) (99dc76b)
  • attr: code.co_xx, frame.f_xx (not complete) (0726355)
  • module md_def as def (55369e7)

Opcode

  • FORMAT_SIMPLE, FORMAT_WITH_SPEC, BUILD_INTERPOLATION; sup eval BuildString (564f578)
  • add some since 3.14; feat(inner): neval_debug (093cb4a)

Parser

  • sup implicit line continuation for (), [], {} (bc8cca8)

Platform

Py

Pyobject_apis

Readme

  • add link for docs and history wiki [skip ci] (68c4974)
  • add badge; fixup: update feature status about import (665228c)

Repl

  • use linenoise when UNIX (sup ^C, ^D) (b3ee4c0)

Rt

  • int: int.__new__ supports base, suffix, unicode and subtype (ad789e9)

Set

  • all method (not test) (60e85b6)
  • new (some methods not impl yet); ... (913b781)

Str

  • sequence methods and .find (f10a906)
  • UCS-4 or UCS-1 based over only UCS-1(ascii) (675a496)
  • fallback to call __repr__ if no __str__ (1c5f52b)

Strformat

Sugar

  • clinicGenMethod (88d2fcf)
  • declarePyType sup singleton (26d4905)
  • implMethod/Magic sup defval (ee6f9ac)
  • declarePyType sup IntFlag as field type (7524856)
  • declarePyType: allow nil2none field pragma (6cd96f4)
  • declarePyType: allow nil2none field pragma (a1785d4)
  • reprLockWithMsgExpr; feat(api/c): overload updateImpl acc PyDictObject, _PyErr_SetString as setString (fba1d61)
  • descr: {.member,readonly.} for seq[PyObject] (auto gen getter) (76fb277)
  • sup {.member"xxx".} (callStrLit) (41ec0bd)
  • genProperty; fix: module.__name__ cannot get (d138350)
  • declarePyType sup private; implXxXxx accept str for define dunder (3d65493)

Syntax

  • complex literal (1a5cf00)
  • fstring: sup multiline in middle (a213c77)
  • fstring: sup expr in :format_spec (not sup multiline) (3d2eb91)
  • fstring: raw :format_spec (c6d6c5b)
  • fstring: (todo: :format_spec, multiline) (ba5566d)
  • with: new. (TODO:traceback) (d273fbc)
  • lambda (fc77523)
  • inline if (condition expression) (85ce9e7)
  • sup \ (line cont char) (facec0d)
  • global stmt (ee951be)
  • bitops (fdfba86)
  • kwargs: call builtin functions (3911515)
  • multiline string (triple quoted string) (a7898a0)
  • int: prefix, underline (37c7eff)
  • import: sup as (alias), multi import in one stmt (3a9b4c8)
  • import_from: sup from x import a[, ...] (38ab1db)
  • sup b/B prefix (66fb6e9)
  • strlit: sup u/r prefix (35dcef2)
  • finally: try: ... finally: ... (de4a3b0)
  • except_with_name: (wrong scope in some cases) (0a322a1)
  • del_name: (not work for repl) (76da220)
  • DeleteAttr op (__delattr__) (e83feee)
  • multi-targets in del_stmt (e.g. del ls[0], ls[1]) (a1ce6fe)
  • DeleteSubScr op (__delitem__) (f87dafe)
  • indent: allow any number of spaces (tab as 8 spaces) (e904e85)

Type

  • traceback (TODO: tb_next, tb_frame, tb_lasti) (e0619b0)
  • memberDescr: init in bltinmodule; getattr uses PyObject_GetAttr (ad85035)
  • MemberDescr (not impl __get__ __set__) (3be457a)

Utils

VersionInfo

  • add PyMajor,PyMinor,PyPatch (de86288)

Warnings

  • nim api: warnExplicit (not complete, a simpler impl) (2d9b8e8)

Changed

NIM-BUG

  • js tailing expr not returned in templ-gen-ed func (f24230a)

Objects/abstract

  • split into dir abstract/ (6139dbd)

Objects/pyobject_apis

  • split into dir pyobject_apis/; feat(api): PyObject_GetOptionalAttr (c7e9285)

PyCodeObject

  • code.flags is now a IntFlag (edc9435)

Utils

  • trans_imp (impExp) uses pkg's (df4e9dd)

Api

  • use openArray over seq for BltinFunc and BltinMethod (now more like CPython vectorcall) (b1cc485)
  • /Include/internal/pycore_global_string: pyId,pyDUId,Py_STR (392b33b)

Api/list

  • .add returns nothing now, now append returns None (86632a1)

Ast

  • parse float/int and string were too slow! (e825383)

Ast/listcomp

  • reduce cond branch for Token.Lsqb (3193986)

Attr

  • module.__name__; modsupport: API/ABI_VERESION (69ee94e)

AttrsGeneric

Bltinmodule

Build

  • allow -d:nimPreviewSlimSystem (ffae3e7)

Builtins

Bytearray

  • internally use seq[char] over string (55872ba)

Bytes

C/api

  • divmod for PyIntObject now returns PyObject over tuple (f28d8c5)

Call

Ci

Cli

Compile

  • allow fileName be PyStrObject; add flags,optimize param (be699f8)

Cpython

Dep

Dict

  • against rec dep (88036c8)
  • ren dictobject.keys keysList;impl values,items,keys (0df2bb3)

Dictobject

  • split GetItemRes to /Utils/optres (f1d2fa7)

Exceptions

  • split out setString from .Impl to setter (546b22e)
  • split to dir (1fe118f)

Float

Floatobject

  • split to dir; ch import to break cycle (85f2afb)

Getargs

Gitignore

Grammar

  • use char for one length string (8bb81a3)

Import

  • pyimport to pyimport/main (da339e7)

Inner

  • PyErr_BadInternalCall (064c003)
  • type_error (4c42248)
  • $ for PyObject will try __repr__ or typeName (6ee9116)

Int,float

  • support: a//b for int where b is big; % for int,float (cf6cc71)

Intobject

  • split to dir (9b1b975)
  • split to dir; fix(hole): newPyInt for SomeUnsignedInt (91eb8b3)

Intobject/ops

  • split out ops_toint (to break upcoming cycle dep) (47d1b8d)

Iterobject

  • pyForIn return PyBaseErrorObject over PyObject (3d6679c)

Karaxpython

Kw

Lexer

License

Magic

  • __reversed__ (wip) (b9df2f9)
  • __int__ __float__ (not impl for types yet); typeName (1d4698a)

Method

Mykarun

  • --includeJs for one-file html (a86b5c6)

Neval

  • split pyimport; feat(import): sup cache (40fe545)

Nimble

  • buildLib, buildDbg (311b3cd)
  • update author, desc (1ae0a99)
  • sup nimble@v0.16.4's declarativeparser (389c747)
  • breaks: chore(nimble): buildKarax, npython is now appname; chore(nimble): sup jsDir,appName,htmlName arg (2b5f4ac)
  • buildKarax (3a3d856)
  • allow pass cmd args for buildJs task (7f1729d)
  • compile target now named npython over python (d8c06d5)

Numobjects

  • split into numobjects/[floatobject, intobject] (6f7f0f2)

Object

  • mv PyObject_{GetAttr,Repr,Str} to pyobject_apis (f857a0c)

Opt

Pyimport

Pyobject_apis

  • split to ./strings; fixup: PyObject_Repr/Str... (075b391)

Readme

  • update; mv Performace, GC part to wiki (896b831)
  • intro easiest install meth and nimpylib (483e51a)
  • update url of github & online playground; detailed "How to use", indicating multiply backends (db1225b)
  • update "How to use" & "Drawbacks" (99c185c)

Simp/api

  • PyModule_CreateInitialized (a83f7d7)

Slice

Str

StringobjectImpl

Sugar

  • {.member.} in declarePyType (a3dec3b)

Syntax

Test

  • bltins arg pass,2 level comprehension,f_back,globals locals (6bab12b)
  • func code attrs (e565adc)
  • fstring (5bd9b38)

Toplevel

  • avoid using PyIntObject at top-level (15e0417)

Tuple

  • against cycle dep (e63d7b7)
  • exp genGetItem, rm unused param newPyNameSimple of genCollectMagics;... (3d5e04d)
  • __contains__,index,count;feat(list): __eq__ (f9280c5)

Tuple,list

Typeobject

  • split type_ready into dir (35616a5)

Fixed

1c3a83b

  • PyRun_XxString always returns false (ea9cc2f)

3b4ad37

  • ArithmeticError, KeyError.pyType.kind was NULL (so not isThrownException) (5748cac)

4c7318e

4d91968

  • PyNumber_Index discard res from __index__ (60e14a5)

675a496

Defect

  • when uint too small; feat(api/c): absToUInt acc any unsigned, add toSome[Un]SignedInt (9d1c54e)

NIM-BUG

  • JsHasResMissingInCatchBug: fixup: HEAD~3 (b6455af)
  • cast[char] not trunc on JS (40297be)

None

NotImplemented

  • type(NotImplemented)() is not NotImplemented (02116a5)

Parser.grammar

Af429b443

  • PyStrObject & char returns unicodeVariant(nil) (e0d2e71)

Api

  • PyFloat_AsDouble not raised err (2f58479)
  • lexer.Mode was not exported (5dae5cf)

Ast

  • (1,) was regarded as 1 over tuple (8733279)

Augassign

  • **=,//= SyntaxError; *=,%= NotImplementedError (52a83ce)

Ba0f77ca6ab

  • str.find,etc no error on 4+ args (43f79e7)

Bool

  • type(bool)() is not None (followup 511e0f2); bool [] is True (6d0f73e)

Builtins/print

  • default sep used '\n' over ' ' (6bd72bf)

Bytes

  • many meth returned default type value (b7f36f5)

Ci

  • docs (proj-name changed) (3018047)
  • fix playground 404 since 'npython.' subdomain was added (0ff5f23)

Cli

  • header was printed even stdin is piped (7a84ba0)

Crash

  • fixes #7; mixed type bin op crash (f7595aa)
  • addr0 (13d3d78)
  • {<unhashable>} unhashable in set literal (b56cdf6)
  • set: remove, discard on unhashable type (fd8a525)
  • Sequence: __setitem__,__delitem__ (fix,break(slice): indices,toNimSlice,iterInt may OverflowDefect); fixup(break: toInt->toIntUnsafe) (142a1c9)

Dep

Dict

  • __init__ ignored kw and update rejected kw (8e18d1e)

Dict.pop

Dict.update

  • did not raise exception but inserted (6fb26da)

Doc

  • exp sym to make doc runnable (a47540d)

E01f2f2bbcb

  • debug_text ( = in fstring ) (2569a21)

Err_display

  • impl anchor and exception group display (09725d1)

Exceptions

  • after __new__ attributes was nil over None (eef0879)

F5c4356a6

  • echo existed; strformat for int uses intobject (7956356)

Float

  • //, % may crash on zero division (ffecd83)

Inner

  • $codeobject not work for OpCode.Delete* (6667a95)

Int

Io

  • readLine may ps after input (4d38cef)

Js

  • some prc called quit over quitCompat (439d235)
  • handle: spaces in browser's contenteditable may become U+00A0 (602548a)
  • make lefecycle.pyInit init pyConfig, too (like in C) (05f58e9)
  • findExe not work CT when JS (15cd995)
  • log func may be of karax's (fd30c07)
  • AstNodeBase.hash crash bc cast to int from ref (3026e22)

Js/rt

  • crash when try: f() ... and f raises (91d2907)
  • Deno: notNode was false; crash bc of no Deno.existsSync (af3b992)

Lexer

  • "" and '' crash lexer (TODO: multiline string) (e1e70e4)

List.remove

  • LockError: Read failed because object is been written.; seq.delete usage wrong (56a7095)

Method/int

  • to_bytes may OverflowDefect; break(api/c): as intobject does (9b605b8)

Module

  • md_dict didn't store modu methods (08aea49)

Nimble

  • import would fail after nimble install (09e6434)
  • cannot nimble install (b181a52)

Nimc

  • not compile when -d:debug (8dc97c8)
  • CC:clang not compile Objects/exceptions.nim:new*Error (7f84f0d)

Object/api

  • bytes/bytearray's new lack openArray of non char (d04bc78)
  • set: ==, +, ...(binOps) raised DictError (bc9d624)
  • dict == raised DictError (005e3c0)
  • newPyDict, [], []=, for str as key raises: [DictError] (8e1c1a6)
  • float lacks arith op (1061903)

Object/int

  • int.mod not work; feat: sup mixin ops with fixed-width (14972ab)

Prec

  • when C, PyLong_FromDouble will be prec & define npythonGoodIntFromBigFloat (2fd4150)

Py

  • char bigger than 0x7f was regarded as ascii (6f1e00f)
  • hash for int/float now matches python's (f0a5af7)
  • hash did not walk around -1 (6dcc0f0)
  • int + float crashed (ba4de79)
  • respect sign of NaN; chore(dep): nimpatch to v0.1.1 (70f69f6)
  • in older nim, floatdollar wrong in js (8e705c6)
  • pow(float,..) never raises (141921b)
  • PyEval_GetFrame might return global frame (2a374c2)
  • e.g. str(None) was <xxx..> (d6c8aeb)
  • traceback.tb_next was not set and readonly... (8ecdfff)
  • frame.__repr__; frame.f_back never None but AttributeError (26732c7)
  • builtins lacks __gt__ (30f1b70)
  • __int__, __float__ for int, float; followup: 1d4698a (a7a710e)
  • ValueError if strlen > max_str_digits when int <-> str (90d259d)
  • binop and setitem no longer simply call magicMethods (use generic call, handles NotImplemented) (20217b1)
  • bool was not subclass of int (50cd207)
  • allow kwargs for enumerate (6490444)
  • main: using run_file,PyRun_AnyFileExFlags (34d4919)
  • chk noKw for bltin method/func (TODO: some shall allow kw) (d0cac70)
  • Sequence_Check, etc; PySeqIter now works on PyObject (fc6c125)
  • PyNumber_Index did not warn if ret non-exact int (d701016)
  • PyObject_GenericGetAttrWithDict did not look on parents (f2c57d3)
  • __name__ globals (4cc9a87)
  • for get index funcs, start could be equal to seq len (760e78d)
  • PyFloat_AsDouble now may returns OverflowError (wip) (a668a8b)
  • ofPyXxObject did the same as ofExtractPyXxObject (31963f9)
  • slice.__new__ (f49bf67)
  • repr(obj) missing "object" before "at" (7a150f8)
  • missing exception type when lookup dict, elem's __hash__, __eq__ called (ce76244)
  • exceptions: __repr__ returns xxError: ... (248aa3f)
  • printTb was to stdout, all args was printed (427efb1)
  • exceptions: no LookupError, no attrs (937dc4b)
  • replace toInt with toIntOrRetOF to handle overflow; impl PyNumber_[Index,AsSsize_t],PyLong_AsSsize_t (54476ff)
  • list(dict) was on .keys() over .items() (0909cf1)
  • dict.__eq__ not content-based;;dict no tpToken (280d929)
  • exceptions type names was like "stopitererror" (7616ee8)
  • frozenset repr was the same as set's (662f665)
  • hash worked for dict,list,set (38b6929)
  • hash() was id-based over content-based (d1a27c9)
  • [1][0:1] raised IndexError (91c7abf)
  • repr(set()) was "{}" (5982fd7)
  • type name was captial e.g. Set (ba2a46d)
  • repr for self-containing dict,list was "..." (45085a2)

Py/attrs

  • cannot get parent's member (436eaca)

Safe

  • raises: [] for nim's func callback: fix(crash): ... (50b8fd4)

Strformat

  • newPyAscii&"{a}" crash for a: str (d8830ac)

Sugar

  • declarePyType: member, private must be the first and not mixed (3981a6a)
  • parse implXxXxx's signature: fix sup of *arg, add sup of **kw (a7d965e)

Syntax

  • br"xxx", "xx"xx" not compile (e486d6b)

Tuple

Ui/karax

  • history line margin too large (6ad848f)

Vcc

Warning

  • [UnreachableCode] in neval; [UnunsedImport] in methodobject (f6c958c)

Windows

  • lexer init not run; buildinfo contains newline (6fc25e3)