copyedit authored by Eron's avatar Eron
......@@ -7,7 +7,7 @@ I had enjoyed programming since I was 10 years old. By 2016 I was programming a
It will continue to be a private work in progress for many more months. It will be made public and open source when it is ready:
* It must be [self hosted](https://en.wikipedia.org/wiki/Self-hosting_(compilers)) on bare metal with nothing written in another language (no Linux, no LLVM, no gnu, not even legacy text editors).
* It must be self hosted on it's own source code repository.
* It must be self hosted on its own source code repository.
* It must be be under a new open source license that ensures our core principal is not violated by other programmers' forks.
We have an almost pathological focus on minimalism. We want the functionality of any modern IDE with only 100,000 lines of code.
......@@ -18,7 +18,7 @@ We have an almost pathological focus on minimalism. We want the functionality o
1. Milliseconds matter. A programmer should see the results of a program modification instantaneously.
1. It is extremely important for systems to be self hosted. Only use other programming systems as a bootstrap mechanism. If your system uses nothing written with another system, then you can rest assured that it is complete.
1. [Dynamic analysis](https://en.wikipedia.org/wiki/Dynamic_program_analysis) with 100% [code coverage](https://en.wikipedia.org/wiki/Code_coverage) is far more effective at catching programmer mistakes than static analysis will ever be. Programming tools can make such testing much less cumbersome.
1. Never compromise the present for backwards compatibility. Fix mistakes as soon as they are identified regardless of how it affects existing dependees. An antiquated dependee can either keep up or become an artifact.
1. Never compromise the present for backwards compatibility. Fix mistakes as soon as they are identified regardless of how it affects existing dependers. An antiquated depender can either keep up or become an artifact.
1. The programming language must make it easy for the programmer to understand and control what the computer is doing at the lowest level. High level abstractions should never lessen this understanding.
1. Use concrete [AST](https://en.wikipedia.org/wiki/Abstract_syntax_tree) metrics to measure some aspects of code quality.
1. Fewer nodes for the same program with similar execution time and space is always better.
......@@ -77,7 +77,7 @@ We have an almost pathological focus on minimalism. We want the functionality o
* No dynamic reachability analysis except when debugging.
* A reference type may be "prime", which means that it will be automatically freed when it leaves scope (for local variables), or its parent is freed (for object fields).
* Static analysis will help catch program errors with respect to prime reference management.
* Copies of prime references are permitted. The static analyzer will try to prove that a copy does not escape the lifetime of it's associated prime reference.
* Copies of prime references are permitted. The static analyzer will try to prove that a copy does not escape the lifetime of its associated prime reference.
* Only rudimentary support for strings.
* A string constant may be specified in a program. It will manifest itself as a mutable array of single bytes with a null terminator.
* [Balls](https://en.wikipedia.org/wiki/Exception_handling):
......
......