From 32e8dc1da3cfed115fd449667c5b6134705b0089 Mon Sep 17 00:00:00 2001 From: Leo Tenenbaum Date: Wed, 18 Dec 2019 17:35:54 -0500 Subject: fixed leaks --- README.html | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-) (limited to 'README.html') diff --git a/README.html b/README.html index ca851af..2f08d15 100644 --- a/README.html +++ b/README.html @@ -11,17 +11,17 @@ and there are almost definitely bugs right now. I would recommend against using it for anything big or important. Many parts of it may change in the future.

-

toc improves on C's syntax (and semantics) in many ways, +

toc improves on C’s syntax (and semantics) in many ways, To declare x as an integer and set it to 5, you can do:

-x := 5; // Declare x and set x to 5 (infer type)
-x : int = 5; // Explicitly make the type int.
-x : int; x = 5; // Declare x as an integer, then set it to 5. +x := 5; // Declare x and set x to 5 (infer type) +x : int = 5; // Explicitly make the type int. +x : int; x = 5; // Declare x as an integer, then set it to 5.

-

toc is statically typed and has many of C's features, but +

toc is statically typed and has many of C’s features, but it is nearly as fast in theory.

See docs for more information (in progress).

@@ -37,11 +37,12 @@ it is nearly as fast in theory.

toc compiles to C for three reasons:

+

toc Source Code

@@ -50,15 +51,15 @@ it is nearly as fast in theory.

Build system

-

toc is set up as a unity build, meaning that there is only one translation unit. So, main.c #includes toc.c, which #includes all of toc's files.

+

toc is set up as a unity build, meaning that there is only one translation unit. So, main.c #includes toc.c, which #includes all of toc’s files.

Why?
-

This improves compilation speeds (especially from scratch), since you don't have to include headers a bunch of times for each translation unit. This is more of a problem in C++, where, for example, doing #include <map> ends up turning into 25,000 lines after preprocessing. All of toc's source code, which includes most of the C standard library, at the time of this writing (Dec 2019) is only 22,000 lines after preprocessing; imagine including all of that once for each translation unit which includes map. It also obviates the need for fancy build systems like CMake.

+

This improves compilation speeds (especially from scratch), since you don’t have to include headers a bunch of times for each translation unit. This is more of a problem in C++, where, for example, doing #include <map> ends up turning into 25,000 lines after preprocessing. All of toc’s source code, which includes most of the C standard library, at the time of this writing (Dec 2019) is only 22,000 lines after preprocessing; imagine including all of that once for each translation unit which includes map. It also obviates the need for fancy build systems like CMake.

New features

-

Here are all the C99 features which toc depends on (I might have forgotten some...):

+

Here are all the C99 features which toc depends on (I might have forgotten some…):

+

The last three of those could all be removed fairly easily (assuming the system actually has 8-, 16-, 32-, and 64-bit signed and unsigned types).

And here are all of its C11 features:

+

More

See main.c for a bit more information.

@@ -93,13 +96,14 @@ it is nearly as fast in theory.

0.1.1Better constant parameter inference.2019 Dec 16 +

Report a bug

-

If you find a bug, you can report it through GitHub's issue tracker, or by emailing pommicket@gmail.com.

+

If you find a bug, you can report it through GitHub’s issue tracker, or by emailing pommicket@gmail.com.

-

Just send me the toc source code which results in the bug, and I'll try to fix it.

+

Just send me the toc source code which results in the bug, and I’ll try to fix it.


@@ -114,7 +118,8 @@ int main() { } -

Is completely fine. x will hold an unspecified value after the jump (but it isn't used so it doesn't really matter). Apparently, in C++, this is an ill-formed program. This is a bit ridiculous since

+ +

Is completely fine. x will hold an unspecified value after the jump (but it isn’t used so it doesn’t really matter). Apparently, in C++, this is an ill-formed program. This is a bit ridiculous since


 int main() {  
@@ -125,4 +130,5 @@ int main() {
 }
 
-

is fine. So that's an interesting little "fun fact": int x = 5; isn't always the same as int x; x = 5; in C++.

+ +

is fine. So that’s an interesting little “fun fact”: int x = 5; isn’t always the same as int x; x = 5; in C++.

-- cgit v1.2.3