ExperimentalExpect bugs and breaking changes

LeanScript

Runtime coverage

leanprover/lean4:v4.35.0 · generated 2026-10-28

Most of the libraries that ship with Lean—Init, Std, and Lean—compile to JavaScript like any other Lean code. The exceptions are externs: functions that native Lean implements in C, which the LeanScript runtime has to implement in JavaScript instead. Of the 907 externs that a program can call, this page shows which ones the runtime implements on each target.

Externs that a Lean declaration implements through @[export] aren't counted, since the compiler calls that declaration instead.

LibraryNodeBrowser
Init
92.3%599 / 649
88.3%573 / 649
Std
0.0%0 / 100
0.0%0 / 100
Lean
0.0%0 / 158
0.0%0 / 158
Total
66.0%599 / 907
63.2%573 / 907
Every targetSome targetsNot implemented

InitNode 599/649 · Browser 573/649

FloatNode 57/57Browser 57/57
Float32Node 57/57Browser 57/57
StringNode 30/30Browser 30/30
USizeNode 29/29Browser 29/29
UInt16Node 27/27Browser 27/27
UInt32Node 27/27Browser 27/27
UInt64Node 27/27Browser 27/27
UInt8Node 27/27Browser 27/27
ISizeNode 25/25Browser 25/25
Int16Node 25/25Browser 25/25
Int32Node 25/25Browser 25/25
Int64Node 25/25Browser 25/25
Int8Node 25/25Browser 25/25
ArrayNode 22/22Browser 22/22
IONode 17/21Browser 14/21
7 not on every target
NatNode 21/21Browser 21/21
ByteArrayNode 19/19Browser 19/19
IntNode 16/16Browser 16/16
(top level)Node 14/14Browser 14/14
FloatArrayNode 0/14Browser 0/14
14 not on every target
IO.FS.HandleNode 9/12Browser 0/12
12 not on every target
String.Pos.RawNode 11/11Browser 11/11
BoolNode 10/10Browser 10/10
IO.FSNode 6/8Browser 0/8
8 not on every target
String.InternalNode 8/8Browser 8/8
IO.ProcessNode 5/6Browser 0/6
6 not on every target
System.PlatformNode 4/6Browser 4/6
2 not on every target
IO.Process.ChildNode 0/5Browser 0/5
5 not on every target
Lean.versionNode 0/5Browser 0/5
5 not on every target
ST.Prim.RefNode 5/5Browser 5/5
TaskNode 5/5Browser 5/5
RuntimeNode 0/4Browser 0/4
4 not on every target
BaseIONode 3/3Browser 3/3
IO.PromiseNode 3/3Browser 3/3
System.FilePathNode 3/3Browser 0/3
3 not on every target
ThunkNode 3/3Browser 3/3
Lean.InternalNode 0/2Browser 0/2
2 not on every target
ShareCommon.ObjectNode 0/2Browser 0/2
2 not on every target
String.PosNode 2/2Browser 2/2
String.SliceNode 2/2Browser 2/2
CharNode 1/1Browser 1/1
IO.OptionNode 1/1Browser 1/1
IO.PrimNode 0/1Browser 0/1
1 not on every target
LeanNode 0/1Browser 0/1
1 not on every target
Lean.NameNode 0/1Browser 0/1
1 not on every target
ST.PrimNode 1/1Browser 1/1
ShareCommonNode 0/1Browser 0/1
1 not on every target
ShareCommon.StateNode 0/1Browser 0/1
1 not on every target
String.Slice.Pattern.InternalNode 1/1Browser 1/1
System.Platform.InternalNode 0/1Browser 0/1
1 not on every target
VoidNode 1/1Browser 1/1

StdNode 0/100 · Browser 0/100

Std.BaseSharedMutexNode 0/7Browser 0/7
7 not on every target
Std.Internal.UV.TimerNode 0/5Browser 0/5
5 not on every target
Std.BaseMutexNode 0/4Browser 0/4
4 not on every target
Std.BaseRecursiveMutexNode 0/4Browser 0/4
4 not on every target
Std.CondvarNode 0/4Browser 0/4
4 not on every target
Std.Internal.UV.SignalNode 0/4Browser 0/4
4 not on every target
Std.Internal.UV.DNSNode 0/2Browser 0/2
2 not on every target
Std.Internal.UV.LoopNode 0/2Browser 0/2
2 not on every target
Std.Net.IPv4AddrNode 0/2Browser 0/2
2 not on every target
Std.Net.IPv6AddrNode 0/2Browser 0/2
2 not on every target
Std.Time.Database.WindowsNode 0/2Browser 0/2
2 not on every target
ByteSliceNode 0/1Browser 0/1
1 not on every target
Std.NetNode 0/1Browser 0/1
1 not on every target
Std.Time.TimestampNode 0/1Browser 0/1
1 not on every target

LeanNode 0/158 · Browser 0/158

Lean.LLVMNode 0/81Browser 0/81
81 not on every target
Lean.CompactedRegionNode 0/3Browser 0/3
3 not on every target
Lean.EnvironmentNode 0/3Browser 0/3
3 not on every target
Lean.KernelNode 0/3Browser 0/3
3 not on every target
Lean.DynlibNode 0/2Browser 0/2
2 not on every target
Lean.Kernel.EnvironmentNode 0/2Browser 0/2
2 not on every target
Lean.LevelNode 0/2Browser 0/2
2 not on every target
Lean.BinderInfoNode 0/1Browser 0/1
1 not on every target
Lean.Dynlib.SymbolNode 0/1Browser 0/1
1 not on every target
Lean.LLVM.ValueNode 0/1Browser 0/1
1 not on every target