PREVIOUS POSTS
- Argus: Interactively Debugging Rust trait Errors
- LTL Tutor
- Misconceptions In Finite-Trace and Infinite-Trace Linear Temporal Logic
- Iterative Student Program Planning using Transformer-Driven Feedback
- Differential Analysis: A Summary
- Forge: A Tool to Teach Formal Methods
- Finding and Fixing Standard Misconceptions About Program Behavior
- Privacy-Respecting Type Error Telemetry at Scale
- Profiling Programming Language Learning
- The Examplar Project: A Summary
- A Core Calculus for Documents
- Observations on the Design of Program Planning Notations for Students
- Conceptual Mutation Testing
- Generating Programs Trivially: Student Use of Large Language Models
- A Grounded Conceptual Model for Ownership Types in Rust
- What Happens When Students Switch (Functional) Languages
- Typed-Untyped Interactions: A Comparative Analysis
- Little Tricky Logics
- Identifying Problem Misconceptions
- Performance Preconceptions
- Structural Versus Pipeline Composition of Higher-Order Functions
- Plan Composition Using Higher-Order Functions
- Towards a Notional Machine for Runtime Stacks and Scope
- Gradual Soundness: Lessons from Static Python
- Applying Cognitive Principles to Model-Finding Output
- Automated, Targeted Testing of Property-Based Testing Predicates
- A Benchmark for Tabular Types
- Student Help-Seeking for (Un)Specified Behaviors
- Adding Function Transformers to CODAP
- Developing Behavioral Concepts of Higher-Order Functions
- Adversarial Thinking Early in Post-Secondary Education
- Teaching and Assessing Property-Based Testing
- Students Testing Without Coercion
- Using Design Alternatives to Learn About Data Organizations
- What Help Do Students Seek in TA Office Hours?
- Combating Misconceptions by Encouraging Example-Writing
- The Hidden Perils of Automated Assessment
- Mystery Languages
- Resugaring Type Rules
- Picking Colors for Pyret Error Messages
- Can We Crowdsource Language Design?
- Crowdsourcing User Studies for Formal Methods
- User Studies of Principled Model Finder Output
- A Third Perspective on Hygiene
- Scope Inference, a.k.a. Resugaring Scope Rules
- The PerMission Store
- Examining the Privacy Decisions Facing Users
- The Pyret Programming Language: Why Pyret?
- Resugaring Evaluation Sequences
- Slimming Languages by Reducing Sugar
- In-flow Peer Review: An Overview
- Tierless Programming for SDNs: Differential Analysis
- Tierless Programming for SDNs: Verification
- Tierless Programming for SDNs: Optimality
- Tierless Programming for SDNs: Events
- Tierless Programming for Software-Defined Networks
- CS Student Work/Sleep Habits Revealed As Possibly Dangerously Normal
- Parley: User Studies for Syntax Design
- Typechecking Uses of the jQuery Language
- Verifying Extensions' Compliance with Firefox's Private Browsing Mode
- From MOOC Students to Researchers
- Social Ratings of Application Permissions (Part 4: The Goal)
- Social Ratings of Application Permissions (Part 3: Permissions Within a Domain)
- Social Ratings of Application Permissions (Part 2: The Effect of Branding)
- Social Ratings of Application Permissions (Part 1: Some Basic Conditions)
- Aluminum: Principled Scenario Exploration Through Minimality
- A Privacy-Affecting Change in Firefox 20
- The New MOOR's Law
- Essentials of Garbage Collection
- (Sub)Typing First Class Field Names
- Typing First Class Field Names
- S5: Engineering Eval
- Progressive Types
- Modeling DOM Events
- Mechanized LambdaJS
- ECMA Announces Official λJS Adoption
- Objects in Scripting Languages
- S5: Wat?
- Belay Lessons: Smarter Web Programming
- S5: Semantics for Accessors
- S5: A Semantics for Today's JavaScript
- The Essence of JavaScript
- ADsafety
Argus: Interactively Debugging Rust trait Errors
Posted on 29 April 2025.Traits are a source of bewildering error messages in the Rust community and people have spent money and time trying to improve the resulting diagnostics. We took a different approach. We analyzed a community suite of difficult-to-debug trait errors and formed hypotheses about why they were difficult for engineers to debug. Then, we built an interactive debugger that developers can use in the IDE to debug trait errors. Find more details about our process, the tool, and our paper in our Cognitive Engineering Lab blog post.