New features
============
Many bug fixes or improvements, mostly by Florent Gallaire


Implementation
==============
- use new Javascript coding style in init_builtin_types.js and gen_parse.js
- set positions in case of errors in $B.call_attr

Internal tools
==============
- store Python.asdl in a file with version number (eg Python3.14.asdl), use it
  in make_ast_classes.py
- correctly set required Python version in pyproject.toml

Bug fixes
=========


Issues
- #2732 : dict keys are not retrieved after pyobj2jsobj is called
- #2748 : element's closest doesn't raise KeyError on missing parent.
- #2761 : in doesn't work properly with iterators

PRs
(by Florent Gallaire)
- #2749: int.__truediv__: correctly-rounded BigInt division, port of CPython
  long_true_divide ((2**1200)/(2**1100) returned nan, 1/2**1074 returned 0.0)
- #2750: int subclass constructor converts its argument (MyInt(Fraction(17))
  stored the raw Fraction as its value)
- #2751: statistics: stdev/pstdev raise ValueError instead of AttributeError
  on inf/nan in data (CPython gh-140938)
- #2752: _thread: 3.14 joinable-thread surface (start_joinable_thread
  handle/daemon kwargs, _ThreadHandle.join/is_done,
  sys.flags.thread_inherit_context) — threading.Thread.start() raised
  TypeError
- #2753: _contextvars: Context.run was a repr string placeholder — threading
  targets never executed (TypeError 'str' object is not callable, swallowed by
  the thread excepthook)
- #2754: _IOBase.tp_finalize: $B$call typo (ReferenceError on every __del__ of
  an open file) + leftover debug console.log
- #2755: _IOBase.tp_iternext resolves readline itself — next(f) without a prior iter(f) crashed (self.readline is only assigned by tp_iter)
- #2756: IOBase.__enter__ checks closed (with closed_file: silently succeeded; CPython raises ValueError); drop the _BufferedIOBase shadow copy — it inherits from _IOBase
- #2757: _testcapi: add nan_msb_is_signaling = False (stub lacked it; IEEE-754 quiet NaN has the MSB set, not signaling — read by test_struct.test_half_float)
- #2758: io: BytesIO.seekable() and writable() return True (were missing from tp_methods, so they inherited IOBase's False despite BytesIO_funcs defining them)
- #2759: io: BufferedReader.seekable()/readable()/writable() delegate to the underlying raw stream (CPython behavior; were inheriting IOBase's False)
- #2760: _operator._compare_digest: accept bytes-like, constant-time
- #2762: float.hex(): lowercase mantissa digits (CPython uses a-f)
- #2763: random.randint: convert bounds via operator.index (CPython 3.14)





Brython site
============


Github site
===========


Demos
=====


Standard distribution
=====================


Documentation
=============
