Commit Graph

218 Commits

Author SHA1 Message Date
Kayne Ruse 49a825aaf9 Removed some old notes 2026-04-11 02:06:59 +10:00
Kayne Ruse baa81b1aa9 Removed annoying workingdir thing 2026-04-11 01:55:11 +10:00
Kayne Ruse 9553edef9c Added tools for vscode 2026-04-11 01:48:30 +10:00
Kayne Ruse 66155fa213 Tweak, but I need a decompiler now 2026-04-10 16:19:03 +10:00
Kayne Ruse 547229e150 Script tests re-added, all tests can run under gdb
Also fixed a minor bug with printing, and removed the ability to
configure the parser.

Added and updated QUICKSTART.md as a quick way to get people started.

There's some broken scripts under 'scripts/' that require functions to
work properly.
2026-04-10 15:28:56 +10:00
Kayne Ruse 211744535e Tweak 2026-04-10 12:15:02 +10:00
Kayne Ruse 3a24fbf6e1 Tweaked CI 2026-04-07 22:00:54 +10:00
Kayne Ruse 842f041a50 VM test is passing 2026-04-07 21:34:05 +10:00
Kayne Ruse 7408a24a12 Scope test is working 2026-04-07 20:48:32 +10:00
Kayne Ruse 09fc6d5279 Compiler test is passing 2026-04-07 20:36:58 +10:00
Kayne Ruse f25e81cd09 Parser test is passing 2026-04-07 20:14:27 +10:00
Kayne Ruse 48072f0dd1 AST test is passing 2026-04-07 20:06:44 +10:00
Kayne Ruse 522fc3e64b Value test is passing 2026-04-07 19:44:28 +10:00
Kayne Ruse f4ce6ad9f1 String test is passing
Note: String fragmentation is no longer supported
2026-04-07 19:22:31 +10:00
Kayne Ruse 3f35502694 Updatedd license 2026-04-07 12:30:25 +10:00
Kayne Ruse f06218b9cd 'print' now works as expected
String literals are now stored in the bucket mid-compilation, but this
is fine, as the buckets are freed one the bytecode is complete.
2026-04-06 23:08:17 +10:00
Kayne Ruse 1ae3fcbf73 WIP: Scopes weren't tracking their content sizes
'print' no longer segfaults from a long chain of indirect memory frees.

It still doesn't work though, which is odd.
2026-04-06 21:50:41 +10:00
Kayne Ruse abae97b6e5 Fixed workflow 2026-04-05 18:48:27 +10:00
Kayne Ruse fbb7e1bc54 WIP: Retreived the unit tests (formerly test cases)
Some of these still work, others have just been dummied out for now.

Also added tests for console colors tool, and tweaked it to work
properly.
2026-04-05 18:42:56 +10:00
Kayne Ruse 57fe9bb00d WIP: Compiles but still very broken 2026-04-05 17:04:30 +10:00
Kayne Ruse 914ee6fcfa WIP: Fixed strings and scopes, still reworking impacted areas 2026-04-05 10:13:58 +10:00
Kayne Ruse ba9418f365 Removed unneeded files and console colors are disabled 2026-04-04 20:35:12 +11:00
Kayne Ruse 98208f4bb5 Began cleaning up this project for a soft reboot 2026-04-04 19:32:45 +11:00
Kayne Ruse 5a0012d73a Tweaked README
...because I'm still not feeling like coding, thanks to this damn flu.
2025-03-01 12:30:53 +11:00
Kayne Ruse 24d111e52d Updated links after moving the repo 2025-02-28 20:12:00 +11:00
Kayne Ruse 4b21e61df0 Updated README 2025-02-28 11:30:01 +11:00
Kayne Ruse d3b59eb0da WIP functions working, untested, memory issues, read more
I've ripped out the deep copying, and flattened the bucket usage, but
this results in no memory being freed or reused for the lifetime of the
program.

This is shown most clearly with this script:

```toy
fn makeCounter() {
	var counter: int = 0;

	fn increment() {
		return ++counter;
	}

	return increment;
}

var tally = makeCounter();

while (true) {
	var result = tally();

	if (result >= 10_000_000) {
		break;
	}
}
```

The number of calls vs amount of memory consumed is:

```
function calls -> memory used in megabytes
1_000 -> 0.138128
10_000 -> 2.235536
100_000 -> 21.7021
1_000_000 -> 216.1712
10_000_000 -> 1520.823
```

Obviously this needs to be fixed, as ballooning to gigabytes of memory
in only a moment isn't practical. That will be the next task - to find
some way to free memory that isn't needed anymore.

See #163, #160
2025-02-21 11:41:27 +11:00
Kayne Ruse 9fe6d6b218 WIP bad approach, read more
I build a self-referential system, then tried to copy only parts. I need
to step back and adjust my approach.

'Toy_private_deepCopyValue' and 'Toy_private_deepCopyScope' need to be
ripped out, and I need to simply accept there will be only one instance
of 'Toy_Bucket' that isn't freed until the top-level VM is.

I need an hour's break before I'll tackle this again.

See #163
2025-02-18 13:06:15 +11:00
Kayne Ruse 3a82593e4d Adjusted timetable 2025-02-18 08:34:29 +11:00
Kayne Ruse 639250f028 WIP return keyword, read more
Functions are having issues with being copied around, especially
between buckets, leading to the scopes getting looped. The program gets
stuck in 'incrementRefCount()'.

It's past my time limit, so I'll keep working on it tomorrow with a
fresh mind.

All function stuff is still untested.

See #163
2025-02-17 19:10:24 +11:00
Kayne Ruse 02dfc996b4 Functions are successfully called, read more
Return keyword is not yet implemented.

Functions are untested.

See #163
2025-02-17 14:05:07 +11:00
Kayne Ruse 76d89fe0ad Reduced excessive calls to Toy_unwrapValue()
In practice, references only point to arrays or tables.

Fixed #176
2025-02-17 04:42:22 +11:00
Kayne Ruse 15aea7c032 Tweaked Timetable, read more
I'm only a couple hours short of my goal, but I'm taking the weekend off
to relax, and this'll be ready next week.
2025-02-13 18:28:20 +11:00
Kayne Ruse 574502bf3e Removed old contribs file 2025-02-11 14:28:20 +11:00
Kayne Ruse 258968d7a4 WIP, Functions are declared, still not called 2025-02-11 11:55:35 +11:00
Kayne Ruse 7a8c415b3f Functions are written, but not yet executed, untested 2025-02-10 20:17:53 +11:00
Kayne Ruse 344c265918 Parameters are immutable
It took me a whole day to change one line.
2025-02-09 14:34:44 +11:00
Kayne Ruse f2660b95eb Credited @NishiOwO for NetBSD support 2025-02-09 00:40:21 +11:00
Kayne Ruse fe64e876bd Merge pull request #175 from NishiOwO/v2
Compile on NetBSD
2025-02-09 00:32:00 +11:00
NishiOwO 1006b6e216 Add bitness definitions, and platform definitions 2025-02-08 22:14:32 +09:00
NishiOwO a1cfc095a7 Compile on NetBSD 2025-02-08 22:09:28 +09:00
Kayne Ruse 7c054db9e6 Compiler now reuses existing strings in the data, read more
If a string exists in the data, instead of being written, the function
'emitCStringToData()' will instead return the address of the match
within the data section.

Then, I can search the jump table for that address, and use the existing
jump entry or append a new one.

Fixes #168
2025-02-08 17:27:47 +11:00
Kayne Ruse 72f4e4c143 Tweaked workflow to fix GH's new runners 2025-02-08 12:16:42 +11:00
Kayne Ruse e2a284d9ce Ensured parser is reading functions correctly, read more
Parameter lists are read manually, rather than delegating to
parsePrecedence, because that was causing issues.

function bodies are read as block-level statements, just like the entire
files.
2025-02-08 12:00:55 +11:00
Kayne Ruse c646904407 replaced void* with unsigned char* everywhere 2025-02-08 00:53:23 +11:00
Kayne Ruse 470836a390 Renamed Toy_ModuleBuilder to Toy_ModuleCompiler
I also noticed that Toy_ModuleBundle isn't being used right now.
2025-02-08 00:23:19 +11:00
Kayne Ruse 212eca1825 Tweaked README 2025-02-06 11:25:53 +11:00
Kayne Ruse b93ea5006c Functions are WIP, read more
They're no-ops in compilation for now, and param types aren't parsed.

'return' keyword needs to be implemented.

Was distracted by bugfixes in v2 and v2-docs.
2025-02-02 17:26:47 +11:00
Kayne Ruse 336616a1bf Tweaked truthiness, fixed int to float coersion 2025-02-02 16:38:46 +11:00
Kayne Ruse 63cc530899 Fixed continue keyword, was pointing at break's target 2025-02-02 16:15:20 +11:00