User loginNavigation |
Prior art for reifying lifecycleAre there any prior examples of programming languages that expose the program processing lifecycle as a value or syntax element? By lifecycle, I mean steps like the below which many languages follow (though not necessarily in order):
Does anyone have pointers to designs of languages that allow parts of the program to run at many of these stages *and* explicitly represent the lifecycle stage as a value or syntax element? I'm aware of reified time in hardware description languages like Verilog and in event loop concurrent languages like JavaScript and E, but that's not what I'm after. Background I work in computer security engineering and run into arguments like "we can either ship code with dynamic languages that is hard to reason about the security properties of, or not ship in time." I'm experimenting with ways to enable features like the below but without the exposure to security vulnerabilities or difficulty in bringing sound static analysis to bear that often follows:
I was hoping that by allowing a high level of dynamism before untrusted inputs reach the system I could satisfy most of the use cases that motivate "greater dynamism -> greater developer productivity" while still producing static systems that are less prone to unintended changes in behavior when exposed to crafted inputs. I was also hoping, by not having a single macros-run-now stage before runtime, to allow use cases that are difficult with hygienic macros while still allowing a module to limit how many assumptions about the language another module might break by reasoning about how early in the lifecycle it imports external modules. The end goal would be to inform language design committees that maintain widely used languages. cheers, By mikesamuel at 2018-07-11 16:05 | LtU Forum | previous forum topic | next forum topic | other blogs | 3538 reads
|
Browse archives
Active forum topics |
Recent comments
22 weeks 6 days ago
23 weeks 54 min ago
23 weeks 1 hour ago
45 weeks 1 day ago
49 weeks 3 days ago
51 weeks 8 hours ago
51 weeks 8 hours ago
1 year 1 week ago
1 year 6 weeks ago
1 year 6 weeks ago