lean4-htt/src/Lean
Henrik Böving 332c1ec46a
perf: specializer a little more courageously (#12239)
This PR reverts a lot of the changes done in #8308. We practically
encountered situations such as:
```
fun y (z) :=
  let x := inst
  mkInst x z
f y
```
Where the instance puller turns it into:
```
let x := inst
fun y (z) :=
  mkInst x z
f y
```
The current heuristic now discovers `x` being in scope at the call site
of `f` and being used under a binder in `y` and thus blocks pulling in
`x` to the specialization, abstracting over an instance.

According to @zwarich this was done at the time either due to observed
stack overflows or pulling in computation into loops. With the current
configuration for abstraction in specialization it seems rather unlikely
that we pull in a non trivial computation into a loop with this. We also
practically didn't observe stack overflows in our tests or benchmarks.
Cameron speculates that the issues he observed might've been fixed
otherwise by now.

Crucial note: Deciding not to abstract over ground terms *might* cause
us to pull in computationally intensive ground terms into a loop. We
could decide to weaken this to just instance terms though of course even
computing instances might end up being non-trivial.
2026-01-30 08:23:15 +00:00
..
Compiler perf: specializer a little more courageously (#12239) 2026-01-30 08:23:15 +00:00
Data refactor: eliminate $/lean/ileanHeaderInfo (#12107) 2026-01-27 10:08:37 +00:00
DocString chore: make Verso module docstring API more like that for Markdown (#12093) 2026-01-22 04:45:49 +00:00
Elab fix: deriving Ord with indexed data type (#12243) 2026-01-29 20:50:14 +00:00
Language perf: Options.hasTrace (#12001) 2026-01-16 09:03:40 +00:00
LibrarySuggestions fix: correct comment about instance implicit arguments (#12173) 2026-01-27 01:33:55 +00:00
Linter feat: lint coercions that are deprecated or banned in core (#11511) 2025-12-12 15:09:13 +00:00
Meta feat: do not dsimp instances (#12195) 2026-01-29 05:25:01 +00:00
Parser fix: make first token detection work in modules (#12047) 2026-01-20 11:12:05 +00:00
ParserCompiler
PrettyPrinter perf: Options.hasTrace (#12001) 2026-01-16 09:03:40 +00:00
Server fix: use windows path separators in System.Uri.fileUriToPath? (#12197) 2026-01-28 09:10:34 +00:00
Util chore: inline trace nodes (#11954) 2026-01-26 08:51:25 +00:00
Widget
AddDecl.lean chore: use backticks for sorry in diagnostic messages (#11608) 2025-12-15 14:30:21 +00:00
Attributes.lean fix: run @[init] declarations in declaration order (#12221) 2026-01-29 15:32:56 +00:00
AuxRecursor.lean perf: add introSubstEq shortcut (#12190) 2026-01-28 12:33:14 +00:00
BuiltinDocAttr.lean
Class.lean
Compiler.lean
CoreM.lean fix: revert "split ngen on async elab" (#12148) 2026-01-25 03:18:24 +00:00
Data.lean
Declaration.lean
DeclarationRange.lean
DefEqAttrib.lean
DocString.lean
Elab.lean feat: add #import_path, assert_not_exists, assert_not_imported commands (#11726) 2025-12-19 04:09:33 +00:00
EnvExtension.lean fix: avoid panic in TagDeclarationExtension.tag on partial elaboration (#11882) 2026-01-05 00:36:58 +00:00
Environment.lean perf: make Environment.getModuleIdx? constant-time (#12068) 2026-01-21 14:38:28 +00:00
ErrorExplanation.lean refactor: move error explanation text to the manual (#11688) 2025-12-26 17:14:58 +00:00
Exception.lean refactor: move error explanation text to the manual (#11688) 2025-12-26 17:14:58 +00:00
Expr.lean feat: add simpControl simproc for if-then-else simplification (#12035) 2026-01-18 04:14:26 +00:00
ExtraModUses.lean feat: shake: make Mathlib-ready (#11496) 2025-12-05 09:37:58 +00:00
HeadIndex.lean
Hygiene.lean chore: do not set unused Option.Decl.group (#11307) 2025-11-21 16:44:38 +00:00
IdentifierSuggestion.lean chore: remove NameMapExtension abbreviation (#11632) 2025-12-12 12:34:53 +00:00
ImportingFlag.lean
InternalExceptionId.lean
KeyedDeclsAttribute.lean
LabelAttribute.lean
Level.lean fix: move the monad argument for ForIn, ForIn', and ForM (#10204) 2025-11-25 12:20:37 +00:00
LibrarySuggestions.lean fix: make library suggestions available in module files (#11373) 2025-11-26 05:39:27 +00:00
Linter.lean feat: lint coercions that are deprecated or banned in core (#11511) 2025-12-12 15:09:13 +00:00
LoadDynlib.lean refactor: use String.Slice in String.take and variants (#11180) 2025-11-18 16:13:48 +00:00
LocalContext.lean feat: support for incrementally processing hypotheses in grind (#11787) 2025-12-24 02:50:22 +00:00
Log.lean refactor: move error explanation text to the manual (#11688) 2025-12-26 17:14:58 +00:00
Message.lean perf: Options.hasTrace (#12001) 2026-01-16 09:03:40 +00:00
Meta.lean refactor: have telescope support (#11914) 2026-01-06 19:20:25 +00:00
MetavarContext.lean perf: Options.hasTrace (#12001) 2026-01-16 09:03:40 +00:00
Modifiers.lean
MonadEnv.lean feat: grind support for .ctorIdx (#11652) 2025-12-13 13:32:19 +00:00
Namespace.lean
Parser.lean
ParserCompiler.lean doc: correct typos in documentation and comments (#11465) 2025-12-02 06:38:05 +00:00
PrettyPrinter.lean chore: do not set unused Option.Decl.group (#11307) 2025-11-21 16:44:38 +00:00
PrivateName.lean
ProjFns.lean chore: delete obsolete C++ file (#11561) 2025-12-09 15:47:54 +00:00
ReducibilityAttrs.lean fix: global visibility attributes should be allowed on non-exposed definitions (#12026) 2026-01-16 14:33:08 +00:00
Replay.lean
ReservedNameAction.lean
ResolveName.lean
Runtime.lean
ScopedEnvExtension.lean
Server.lean
Setup.lean fix: symbol clashes between packages (#11082) 2025-11-19 02:24:44 +00:00
Shell.lean perf: Options.hasTrace (#12001) 2026-01-16 09:03:40 +00:00
Structure.lean
SubExpr.lean refactor: use String.split instead of String.splitOn or String.splitToList (#11250) 2025-11-19 09:35:19 +00:00
Syntax.lean fix: move the monad argument for ForIn, ForIn', and ForM (#10204) 2025-11-25 12:20:37 +00:00
ToExpr.lean
ToLevel.lean
Util.lean
Widget.lean