Skip to content

Releases: Ratstail91/Toy

v1.3.2 - So Long, And Thanks For All The Fish

22 Sep 05:31
Compare
Choose a tag to compare

This will probably be the last release for Toy version 1. Anyone who has been watching knows that I've been rewriting Toy from the ground up recently, adjusting many things as I go.

The main impetus for the rewrite is v1's performance issues - while it certainly works, due to some bad memory management models, I've determined that this branch is not fit for purpose.

I'm also taking the opportunity to rework my assumptions that led to issues in the final product, including the API. My goal is still to produce a game using Toy, so I will take what I've learned here and keep moving forward.

After many years of tinkering with half-working attempts, I'm satisfied that I reached my goal with this branch. Now, this branch will be deprecated, and v2 will be front-and-center.

Full Changelog: v1.3.1...v1.3.2

v1.3.1 - Keeping In Touch

26 Nov 10:04
b77f0fb
Compare
Choose a tag to compare

I've had a several-month long break from this project. During this time, a few improvements have been made to the disassembler by the community contributor @hiperiondev. While the disassembler is only provided as a convenience, it is still a nifty addition, so I'm publishing this release to keep things updated.

I don't know if I'm coming back to this project soon, though there are many things I'd like to improve over time. It's definitely not dead, is what I'm saying, though there's definitely a lot to do.

What's Changed

Full Changelog: v1.3.0...v1.3.1

v1.3.0 - Community Contributions

14 Aug 13:22
Compare
Choose a tag to compare

It's time for a minor version bump - this time, with some awesome contributions from the community!

We now have a math library, fully tested and integrated into the repl, as well as a bytecode disassembler in the tools (simply run make in the tools/disassembler directory to build it) - both of these were written by members of the community. It's awesome getting feedback and contributions from outside help - I hope to continue growing this little group for as long as people are interested!

I've also made some adjustments to how the core language behaves, as well - short-circuits now work as they were originally intended to:

fn doA() {
  print "doA() called";
  return true;
}

fn doB() {
  print "doB() called";
  return true;
}

//prints "doA() called"
doA() || doB();

For some reason, indexing an array/dictionary within an argument list wasn't working - this has been fixed.

doAThing(a[0]); //A-OK!

Finally, a small bit of memory was reclaimed by removing a superfluous scope creation around function bodies - this matters most to users who are interested in running Toy on a microcontroller.

I'm really looking forward to what the future holds for Toy!

What's Changed

  • Adding a math library to toy by @Add00 in #94
  • Added disassembler tool, thanks @hiperiondev
  • Short circuits are now functioning correctly
  • Added int to float coercions to function args and returns, when specified
  • Removed an extra pair of SCOPE_BEGIN and SCOPE_END from function bytecode
  • Fixed indexing in argument lists
  • Minor house cleaning

Full Changelog: v1.2.1...v1.3.0

v1.2.1 - Additions and Adjustmets

31 Jul 07:54
Compare
Choose a tag to compare

So it seems more and more people are interested in this language - that's awesome! I'm hoping to hit the tech news sphere soon 😛

I've made enough changes to warrant a larger version bump, but for now a patch is enough.

In other news, I'm also now tagging the different versions of the Box Engine properly, beginning at 0.2.1.

What's Changed

  • Moved and renamed drive system
  • Added sign() and normalize() to standard library
  • Added clamp() and lerp() functions to standard library by @Add00 in #93
  • Renamed the about library to toy_version_info
  • Fixed casting + grouping bug
  • Minor bugfixes

New Contributors

  • @Add00 made their first contribution in #93

Full Changelog: v1.2.0...v1.2.1

v1.2.0 - Pierce The Heavens!

25 Jul 14:34
Compare
Choose a tag to compare

I've had to change the C-API just now because of a spelling error... hopefully users can fix this with a fast find and replace, but I'm still bumping the minor version. I've also made a few other tweaks to (hopefully) support other developers.

In other news, Toy has been forked by @hiperiondev, who is now adapting it to work on a microcontroller. That's awesome as hell, and their project has my full support!

Full Changelist:

  • Renamed Toy_isDelcaredScopeVariable to Toy_isDeclaredScopeVariable - this fixes a spelling mistake that I've overlooked for a long time
  • Renamed Toy_findLiteralIndex to Toy_private_findLiteralIndex - Only used in the compiler, but was still a mistake
  • Added mecha.cpp as a tool for generating markdown to toolchain
  • Added mecha-formatted documentation comments - hopefully this helps other developers quickly learn how the program works
  • Removed a few "safety checks" that checked the output of Toy_parseIdentifierToValue - not needed.

Thanks:

@hiperiondev - found the spelling error

v1.1.6 - Small Fixes

14 Jul 14:40
Compare
Choose a tag to compare

Since the last release, I've made a few small fixes - mainly refactoring the internal function that retrieves values based on identifiers, and fixed a post-increment issue within comparisons.

It's working pretty well, all things considered.

v1.1.5 - Look At My Dict, My Dict Is Amazing

19 Jun 13:30
Compare
Choose a tag to compare

In this release, I've made a simple but significant improvement to the copying of dictionaries - by simply pre-allocating enough space first, larger dicts won't resize themselves internally multiple times. There's over a 50% increase to the benchmark speed. I've applied the same logic to arrays, but the benefit is negligible due to malloc() already being really efficient in how it handles memory.

I feel like a dict-head not doing that much earlier.

I've also fixed nested function calls, so this works as intended:

f()()();

Full changelog:

  • Massive dictionary copying optimization
  • Fixed nested function calls
  • Disallowed fn decl in for loop pre-clause
  • Ensured TOY_VERSION_BUILD is consistent in every file
  • Fixed an obscure bug involving TOY_OP_INDEX_ASSIGN_INTERMEDIATE
  • any type is now recognized properly inside arrays

1.1.4 - Distilling the Distance

07 Jun 06:11
Compare
Choose a tag to compare

I've added a make dist build target, which is intended to build with all of the compiler's bells and whistles working at full power. As a result, the optimizations can lead to a 100% increase in speed in my testing... kind of nuts, actually.

Other changes:

  • Lowered the recursion limit to 1000.

v1.1.3 - Function over Form

06 Jun 14:16
Compare
Choose a tag to compare

I've spent an hour tonight duplicating the refstring theory to create the Toy_RefFunction type - what this means is that function bytecode is no longer copied every time they get passed around - although function scopes still work as intended. I think, overall this should reduce calls to the memory allocator, which is always a good thing.

I'm actually surprised how well this slotted in.

Other changes:

  • I've raised the recursion depth limit to 10,000.

v1.1.2 - Bumping Because Reasons

23 Mar 00:08
Compare
Choose a tag to compare

I'm bumping the version number because it's been a little while. Normally, I assume people are using the main branch of the repo, rather than these releases - these are mostly here as benchmarks.

Major changes:

  • Added toy.h, grouping together the core of the C API
  • Tweaked return values of && and ||, still need to implement short-circuiting properly
  • Moved lib_runner's drive system into the core of the lang
  • Fixed an obscure compiler bug with the modulo operator
  • Type-casting a grouping now works correctly
  • Minor bugfixes and typo fixes

Full Changelog: v1.1.1...v1.1.2