Home / Input Output / plutus
Jan 28, 7-8 AM (0)
Jan 28, 8-9 AM (2)
Jan 28, 9-10 AM (2)
Jan 28, 10-11 AM (1)
Jan 28, 11-12 PM (1)
Jan 28, 12-1 PM (1)
Jan 28, 1-2 PM (0)
Jan 28, 2-3 PM (0)
Jan 28, 3-4 PM (2)
Jan 28, 4-5 PM (0)
Jan 28, 5-6 PM (0)
Jan 28, 6-7 PM (0)
Jan 28, 7-8 PM (0)
Jan 28, 8-9 PM (0)
Jan 28, 9-10 PM (0)
Jan 28, 10-11 PM (0)
Jan 28, 11-12 AM (2)
Jan 29, 12-1 AM (0)
Jan 29, 1-2 AM (0)
Jan 29, 2-3 AM (0)
Jan 29, 3-4 AM (0)
Jan 29, 4-5 AM (0)
Jan 29, 5-6 AM (0)
Jan 29, 6-7 AM (0)
Jan 29, 7-8 AM (0)
Jan 29, 8-9 AM (0)
Jan 29, 9-10 AM (1)
Jan 29, 10-11 AM (0)
Jan 29, 11-12 PM (0)
Jan 29, 12-1 PM (2)
Jan 29, 1-2 PM (0)
Jan 29, 2-3 PM (0)
Jan 29, 3-4 PM (0)
Jan 29, 4-5 PM (0)
Jan 29, 5-6 PM (0)
Jan 29, 6-7 PM (0)
Jan 29, 7-8 PM (0)
Jan 29, 8-9 PM (0)
Jan 29, 9-10 PM (1)
Jan 29, 10-11 PM (0)
Jan 29, 11-12 AM (0)
Jan 30, 12-1 AM (0)
Jan 30, 1-2 AM (0)
Jan 30, 2-3 AM (0)
Jan 30, 3-4 AM (0)
Jan 30, 4-5 AM (0)
Jan 30, 5-6 AM (0)
Jan 30, 6-7 AM (0)
Jan 30, 7-8 AM (0)
Jan 30, 8-9 AM (4)
Jan 30, 9-10 AM (4)
Jan 30, 10-11 AM (7)
Jan 30, 11-12 PM (3)
Jan 30, 12-1 PM (1)
Jan 30, 1-2 PM (4)
Jan 30, 2-3 PM (7)
Jan 30, 3-4 PM (2)
Jan 30, 4-5 PM (2)
Jan 30, 5-6 PM (2)
Jan 30, 6-7 PM (1)
Jan 30, 7-8 PM (1)
Jan 30, 8-9 PM (1)
Jan 30, 9-10 PM (0)
Jan 30, 10-11 PM (0)
Jan 30, 11-12 AM (0)
Jan 31, 12-1 AM (0)
Jan 31, 1-2 AM (0)
Jan 31, 2-3 AM (0)
Jan 31, 3-4 AM (0)
Jan 31, 4-5 AM (0)
Jan 31, 5-6 AM (0)
Jan 31, 6-7 AM (0)
Jan 31, 7-8 AM (0)
Jan 31, 8-9 AM (0)
Jan 31, 9-10 AM (0)
Jan 31, 10-11 AM (0)
Jan 31, 11-12 PM (0)
Jan 31, 12-1 PM (0)
Jan 31, 1-2 PM (0)
Jan 31, 2-3 PM (0)
Jan 31, 3-4 PM (0)
Jan 31, 4-5 PM (0)
Jan 31, 5-6 PM (0)
Jan 31, 6-7 PM (0)
Jan 31, 7-8 PM (0)
Jan 31, 8-9 PM (0)
Jan 31, 9-10 PM (0)
Jan 31, 10-11 PM (0)
Jan 31, 11-12 AM (0)
Feb 01, 12-1 AM (0)
Feb 01, 1-2 AM (0)
Feb 01, 2-3 AM (0)
Feb 01, 3-4 AM (0)
Feb 01, 4-5 AM (0)
Feb 01, 5-6 AM (0)
Feb 01, 6-7 AM (0)
Feb 01, 7-8 AM (0)
Feb 01, 8-9 AM (0)
Feb 01, 9-10 AM (0)
Feb 01, 10-11 AM (0)
Feb 01, 11-12 PM (0)
Feb 01, 12-1 PM (0)
Feb 01, 1-2 PM (0)
Feb 01, 2-3 PM (0)
Feb 01, 3-4 PM (0)
Feb 01, 4-5 PM (0)
Feb 01, 5-6 PM (0)
Feb 01, 6-7 PM (0)
Feb 01, 7-8 PM (0)
Feb 01, 8-9 PM (0)
Feb 01, 9-10 PM (0)
Feb 01, 10-11 PM (0)
Feb 01, 11-12 AM (0)
Feb 02, 12-1 AM (0)
Feb 02, 1-2 AM (0)
Feb 02, 2-3 AM (0)
Feb 02, 3-4 AM (0)
Feb 02, 4-5 AM (0)
Feb 02, 5-6 AM (0)
Feb 02, 6-7 AM (0)
Feb 02, 7-8 AM (0)
Feb 02, 8-9 AM (1)
Feb 02, 9-10 AM (2)
Feb 02, 10-11 AM (1)
Feb 02, 11-12 PM (2)
Feb 02, 12-1 PM (0)
Feb 02, 1-2 PM (2)
Feb 02, 2-3 PM (0)
Feb 02, 3-4 PM (0)
Feb 02, 4-5 PM (3)
Feb 02, 5-6 PM (1)
Feb 02, 6-7 PM (0)
Feb 02, 7-8 PM (0)
Feb 02, 8-9 PM (0)
Feb 02, 9-10 PM (0)
Feb 02, 10-11 PM (0)
Feb 02, 11-12 AM (2)
Feb 03, 12-1 AM (2)
Feb 03, 1-2 AM (0)
Feb 03, 2-3 AM (1)
Feb 03, 3-4 AM (2)
Feb 03, 4-5 AM (0)
Feb 03, 5-6 AM (3)
Feb 03, 6-7 AM (0)
Feb 03, 7-8 AM (0)
Feb 03, 8-9 AM (0)
Feb 03, 9-10 AM (0)
Feb 03, 10-11 AM (0)
Feb 03, 11-12 PM (0)
Feb 03, 12-1 PM (5)
Feb 03, 1-2 PM (0)
Feb 03, 2-3 PM (0)
Feb 03, 3-4 PM (8)
Feb 03, 4-5 PM (1)
Feb 03, 5-6 PM (0)
Feb 03, 6-7 PM (1)
Feb 03, 7-8 PM (3)
Feb 03, 8-9 PM (0)
Feb 03, 9-10 PM (1)
Feb 03, 10-11 PM (2)
Feb 03, 11-12 AM (2)
Feb 04, 12-1 AM (0)
Feb 04, 1-2 AM (0)
Feb 04, 2-3 AM (0)
Feb 04, 3-4 AM (1)
Feb 04, 4-5 AM (0)
Feb 04, 5-6 AM (0)
Feb 04, 6-7 AM (0)
Feb 04, 7-8 AM (0)
100 commits this week Jan 28, 2026 - Feb 04, 2026
refactor(plutus-tx-plugin): remove unnecessary pragmas from BuiltinUnit tests
Remove unnecessary language extensions and GHC options from BuiltinUnit test:
- Removed: BlockArguments, TypeApplications (unused)
- Removed: All -fno-* optimization flags (not needed for test)
- Removed: -ddump-simpl-iterations (debugging only)
- Kept: DataKinds (required by compile TH splice)
- Kept: NoImplicitPrelude, Strict, TemplateHaskell (essential)
- Kept: Plugin options (required for test functionality)

Simplified pragmas from 19 lines to 6 lines. Error messages now show
fully qualified type names (PlutusTx.Builtins.Internal.BuiltinUnit)
which are more informative than unqualified names.
docs: document where-binding stage violation workarounds
Add comprehensive documentation for "Cannot construct a value of type"
errors caused by where-binding stage violations. Documentation includes:
- Explanation of GHC simplification behavior
- Three workarounds (top-level, lazy bindings, inside quotation)
- Code examples for each workaround
- Guidance on variable placement in compile quotations
test(plutus-tx-plugin): add tests for where-binding stage violations
Add BuiltinUnit test suite with golden files to verify improved error
messages for where-binding stage violations. Tests cover:
- error () in where-binding
- unitval reference in where-binding
- locally defined constructor
- toOpaque () usage

Tests use defer-errors plugin option and goldenUPlc to capture error
messages in golden files for regression testing.
feat(plutus-tx-plugin): improve stage violation error messages for builtin types
When using where-bindings that reference builtin types within compile
quotations, GHC simplification can generate pattern matches on builtin
constructors that the plugin cannot compile. This results in the cryptic
error "Cannot construct a value of type: BuiltinUnit".

This commit improves the error message to:
- Explain that it's a stage violation in Plinth compilation
- List where variables must be defined (top-level or inside quotation)
- Provide common causes (where-clause functions, local variables)
- Suggest how to fix it (move to top-level)

The improved error detection uses isBuiltinTypeCon to identify builtin
types and stageViolationError to generate helpful error messages.
feat(plutus-tx-plugin): improve stage violation error messages for builtin types
Add intelligent detection of stage violations when using PlutusTx builtin types.

The previous error message "Cannot construct a value of type: BuiltinUnit" was
cryptic and unhelpful for users encountering stage violations. This change
introduces:

- Template Haskell-based detection of builtin types from PlutusTx.Builtins.Internal
- Module-aware type checking to avoid false positives
- Comprehensive error messages explaining stage violations and how to fix them
- Clear guidance on moving functions to top-level scope

The improved error message explains the root cause (stage violation), provides
actionable solutions (move to top-level, check variable scope), and maintains
the original technical context for advanced debugging.

This addresses the confusing error reported in plutus-private#1626 while
maintaining full compatibility with existing functionality.
docs: add investigation notes on mkSimplPass alternatives
Document investigation into disabling mkSimplPass for better error messages.

This investigation explored whether removing the GHC simplifier pass could
improve error messages for stage violations. While disabling the pass does
provide clearer errors, it breaks legitimate plugin functionality that depends
on pre-inlining.

The investigation concludes that targeted error message improvements (like the
stage violation detection) are more practical than removing core functionality.
These notes preserve the analysis for future reference and provide context for
the chosen approach.