Skip to content

3.5.1

Compare
Choose a tag to compare
@Hyomoto Hyomoto released this 24 Jun 01:22
· 29 commits to master since this release

3.5.1 has a few new data structures but is mainly being pushed to fix potential memory bloat in GMS. The issue lies in that GMS does not free structs immediately after they are no longer needed. Thus if a large number of structs are created in a single frame, it will cause the runner/application to bloat unexpectedly. The memory is properly freed and can be reused, but this can cause performance issues in GMS and just doesn't look good overall. Thus, 3.5.1 implements object pools for all dynamic structures which reduces the amount of bloat they can cause. In testing the ATS suite would go from 19mb to over 100mb, but now rests at 40mb. The bloat can not be entirely removed as it's just a matter of how GMS allocates memory to the heap, but this release drastically reduces FAST's contribution to the problem.

Packages: Core, Logging, Numbers, Scripts

New Features

  • ObjectPool - A class that can be used to reimplement used "things." Is used by all of FAST's dynamic data structures now to avoid memory bloat that can occur when expensive, single-frame operations are used on them.
  • Stack - A garbage-collected stack replacement.
  • Queue - A garbage-collected queue replacement.
  • Stream - Functions that have to_output or from_input methods could read from input streams and output streams, but this made it cumbersome to accept new data types. Now, any data type that is of the Stream type will be wrapped for purposes of reading/writing to by these functions allowing a much wider variety of data types to be used without having to explicitly build streamable versions or modify existing structures to support them.
  • file_search() - Used to search directories/sub-directories for files and write them to a specified output.

Updated

  • TextFile - Implements Stream.

Changes

  • IterableLists will now wrap streamable objects when to_output or from_input is called.

Depreciated

  • File - Only a single class, TextFile, was making use of this and I realized the paradigm was stupid. TextFile now implements Stream instead. If you were using File for some reason, it has been replaced by Stream.
  • file_get_directory() - Due to a bug in how GMS searches for files, this function gave the wrong impression of how it worked and sometimes would fail unexpectedly. The replacement function, file_search(), approaches the problem differently. As a improvement, you can also now specify the output stream to write the discovered files to.