* Check out a specific Tracy branch that I know compiles on my
* Clone tracy rather than add as a submodule since profilers aren't
ever really necessary to ship with whatever you're building
* Add profiling-do-not-instrument to filter functions which are
e.g. too costly to instrument
* Set default value for num-runtime-fixups-installed
* Add (ignore) to fix comptime functions which expect all functions to
* Allocate token arrays so they don't delete their tokens after
they've been introduced into the environment
While it is impossible to check whether the past versions match in
this way, we have some amount of reassurance by always checking that
the latest version works, which will eventually become a past
* Lazily resolve arguments to migrate-versioned-struct when possible
by using global variables.
* Expose cached layouts so that client code can also determine
e.g. versioned struct sizes at arbitrary versions.
* Generate a num-versionings variable so that forward-declared access
to versionings can safely traverse the array.
* Check to make sure initialization function is called if there is
* Comment out hand-written test versionings because the auto-generated
ones now work!
* Cache and resolve cross-struct reference virtual sizings via the
same strategy Cakelisp uses to resolve references.
* Handle arrays
* Add functions for getting virtualized field locations
* Add migration handlers for custom field migration. This allows
e.g. conversions which cannot be done automatically.
* Migrate sub-structs one-by-one as necessary
* Memcopy type-compatible fields
* Add non-virtualized structs for auto-test
* Reformatted file
* Allow SDLFontAtlas rendering commands to be overridden. This isn't
the nicest looking API in the world, but oh well.
* Render fonts through OpenGL via drawing the font's lazily rendered
* Expose Handmade Math function for orthographic matrices
Rather than setting the field-type-metadata in the initializer, set it
in an introspection runtime fixup function. This is necessary
especially when metadata references a type in another file. I'm not
happy with this, but I want to move forwards with my project that
depends on Introspection.
* With the typesetting path, a buffer of render rectangles is used
rather than rendering immediately. This allows me to save the
redundant typesetting that occurs when getting the size and then
rendering by re-typesetting. It is consistently faster this way,
though uses more stack space.
* Use cached space width rather than having to look it up every time
* No longer initialize and destroy the freetype library on every font
build. This annoyingly required the addition of global init and
* Use 32 bit unsigned ints for keys to store entire decoded Unicode
codepoints. The kerning table uses a 64 bit key, but isn't hooked up
right yet for Unicode.
* Render a simpler ASCII range
* Enable texture streaming so it can be updated whenever new glyphs
are added. This is a separate function call right now so you can batch
update if you know what characters you want.
The problem was the deletion of the space when it was the final "word"
in the string at a word wrap boundary. This caused a zero-length
string request, which let the render string function render the entire
string. On second thought, it might be better for the API to take a
different magic number rather than 0 to mean no limit!