#compiler #tracking #syntax

petr-profiling

tools for profiling the performance of the petr compiler

1 unstable release

0.1.0 Jul 23, 2024

#317 in Profiling


Used in 3 crates (2 directly)

MIT license

5KB
58 lines

I've worked on languages professionally for many years, now. I've always had to worry about pesky things like user adoption, familiarity and similarity to other languages, and proprietary compilation targets.

This is what happens when I can do whatever I want -- petr seeks to be a low-level performant general purpose programming languages, with a sophisticated type and side-effects-tracking system. And weird syntax!

                  __         
    ____   ___   / /_   _____
   / __ \ / _ \ / __/  / ___/
  / /_/ //  __// /_   / /    
 / .___/ \___/ \__/  /_/     
/_/                         

Programmatic Effects Tracking

petr-ast                                                                                 
   │                                                                                     
   │                                                                                     
   ▼                                                                    ┌───►petr-codegen
petr-parse────►petr-bind────►petr-resolve────►petr-typecheck───► petr-ir│                
   │                                                                    ├───►petr-vm     
   │                                                                    │                 
   ▼                                                                    │                 
petr-fmt───────────────────────┬────────────────────────────────────────┘                                                      
                               │                                                         
                               │                                                         
                               │                                                         
                               ▼                                                         
petr-manifest────►petr-pkg────►pete                                                      

lib.rs:

Basic tools and abstractions for profiling performance and timing data and then displaying it. TODO/wishlist: use a .with(fn) pattern to ensure starts and stops always match keep a stack to know which events are sub-events of others, and show that in the table with indentation

Dependencies

~3–10MB
~82K SLoC