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 | 3529 reads
|
Browse archives
Active forum topics |
Recent comments
20 weeks 3 days ago
20 weeks 3 days ago
20 weeks 3 days ago
42 weeks 5 days ago
47 weeks 1 hour ago
48 weeks 4 days ago
48 weeks 4 days ago
51 weeks 2 days ago
1 year 3 weeks ago
1 year 3 weeks ago