Skip to content

Releases: Hyomoto/FAST

FAST v3.5.3

23 Nov 17:23
Compare
Choose a tag to compare

3.5.3 is a stability release which adds/modifies features to prepare for the re-release of upcoming modules Database and Scripting.

Packages: Core

New Features

  • Parser - A more standardized parsing tool for breaking apart strings. It has been rewritten from scratch, and thus all the methods have changed. If you were using Parser before, you can ignore this file. However, other modules that depend on it will not function properly. It is now a valid InputStream, and has more powerful tools. For example, it is much easier to read from a string and return to a previous point, store/recall a previous state, or just read a small string of characters. The original next() behavior has been replaced with word() which takes a function as it's input to decide what characters are consumed.
  • string_formatted - A more powerful string tool. Allows Python-style string formatting.
  • char_is_whitespace - Returns true if the character is whitespace. Can be used with Parser.
  • char_is_linebreak - Returns true if the character is a linebreak. Can be used with Parser.
  • char_is_printable - Returns true if the character is a printable character. Can be used with Parser.
  • char_is_numeric - Returns true if the character is a number. Can be used with Parser.

Updated

  • GamepadManager - Fixes a long outstanding bug, and updates connection/disconnection logic. Logging messages are also properly passed through the GamepadManager module instead of syslog().

Changes

  • string_conc is now string_combine

Depreciated

FAST v3.5.2

03 Jul 03:23
bcf19c5
Compare
Choose a tag to compare
FAST v3.5.2 Pre-release
Pre-release

3.5.2 is a stability release which adds/modifies features to prepare for the re-release of upcoming modules Database and Scripting.

Packages: Core

New Features

  • Parser - A more standardized parsing tool for breaking apart strings. It has been rewritten from scratch, and thus all the methods have changed. If you were using Parser before, you can ignore this file. However, other modules that depend on it will not function properly. It is now a valid InputStream, and has more powerful tools. For example, it is much easier to read from a string and return to a previous point, store/recall a previous state, or just read a small string of characters. The original next() behavior has been replaced with word() which takes a function as it's input to decide what characters are consumed.
  • string_formatted - A more powerful string tool. Allows Python-style string formatting.
  • char_is_whitespace - Returns true if the character is whitespace. Can be used with Parser.
  • char_is_linebreak - Returns true if the character is a linebreak. Can be used with Parser.
  • char_is_printable - Returns true if the character is a printable character. Can be used with Parser.
  • char_is_numeric - Returns true if the character is a number. Can be used with Parser.

Updated

Changes

  • string_conc is now string_combine

Depreciated

3.5.1

24 Jun 01:22
Compare
Choose a tag to compare

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.

FAST v3.5

13 Jun 02:46
Compare
Choose a tag to compare

3.5 is a huge stability and clean-up release aimed at making FAST easier to approach and more immediately useful. This includes the removal of a number of data structures that are now redundant, slimming down of Core by pushing out modules absorbed in previous updates, and proper documentation of every component. Unfortunately 3.5 can be considered a somewhat destructive update. For most functions and FAST features you shouldn't see any changes other than improved documentation and organization. The only major destructive change is Array now makes use of IterableList and is not just a wrapper for native arrays, thusly it makes use of different methods. Nevertheless, due to the removal of features and restructured folders, updating from an older version may cause issues. However, if you would like to update, please read the second on changes and depreciation for what has changed and how to fix it.

New Features

  • Errors - FAST will now throw useful errors when data structures or functions are used improperly. These errors can be tested for and caught easily.
  • Struct Parentage - Structs can inherit from Struct and make use of the new Type.add function to easily test for type. is_struct_of has been replaced with struct_type, which will test against type if it exists, otherwise it will perform a basic string match using instanceof()
  • Iterable Lists - Array and LinkedList now inherit from IterableList which will wrap up both data types with the same feature set. This includes set rules such as union, intersect and difference, sorting, filtering, shuffling, have built-in JSON export/import, and are garbage collected.
  • HashMap - A simple replacement for ds_map that is also garbage collected and also provides built-in convenience features.
  • Dictionary - An ordered HashMap that can be traversed and searched.

Updated

  • Surface - If update() returns true, the surface will be set for drawing. Similarly, if draw() is called and the surface is the current draw target, it will be unset. This reduces the verbosity of caching the surface. Note, you can still use set() and reset() to target and untarget the surface, these calls serve as a safety as well as quality improvement. This should not break previous implementations, but should make using them easier moving forwards.

Changes

  • Logging moved out of Core. FAST no longer makes use of the logging module internally. This is because FAST will now throw errors rather than log warnings. Due to the depreciation of GenericOutput, you will have to keep that file should you wish to use the old version of Logging. The system is being updated to make use of input and output streams instead, and should be available soon.
  • File Handling has been somewhat depreciated. FileText has been replaced with TextFile. This is for clarity, but also because files are now based on input and output streams to allow compatibility across the library. Additionally, it had excessive dependencies on the rest of the library. There is no easy fix for this one, but updating to the new file handling code should be relatively painless, see below.
  • ArrayList now makes use of IterableList and therefore has a different feature set. The two are substantially different, but the major comparisons are, get() is roughly the same as index(), set() is similar to replace(), and pop() replaces delete(). However, if you were using ArrayList you may be able to swap to Array without breaking anything. Array is depreciated, but does not conflict with 3.5

Depreciated, and replacement

  • variable_traverse_string - used by Database, shouldn't be in Core
  • version_to_struct - unused, no replacement
  • Shapes - unused, no replacement
  • DsChain - redundant, no replacement, no conflicts
  • DsLinkedList - LinkedList
  • DsList - LinkedList
  • DsMap - HashMap
  • DsQueue - LinkedList
  • DsStack - LinkedList
  • DsTable - Dictionary
  • DsWalkable - LinkedList
  • DsTree - will reworked and re-added, for now use legacy but is no longer supported, no conflicts but may have multiple dependencies
  • Array - redundant, no replacement, no conflicts
  • String - redundant, no replacement, no conflicts
  • StringNumber - no replacement, no conflicts
  • StringTime - time_to_string now provides the same output, no conflicts
  • GenericOutput - replaced with OutputStream
  • FileText - TextFile
  • FileBinary - no replacement, will be updated
  • FileCSV - no replacement, can replace with TextFile, LinkedList and Parser, but replacement will be coming

v3.4.0

25 Nov 21:28
Compare
Choose a tag to compare
v3.4.0 Pre-release
Pre-release

This is the pre-release version of 3.4 which utilizes 2.3.1 features and some early features for the new Render and Pointer modules. Check out the latest changes on the wiki for more details.

FAST v33hRC4

18 Oct 17:24
Compare
Choose a tag to compare

Release Candidate 4 for 3.3 Revision H. This release candidate focuses on cleaning up and fixing bugs in the Input Handling module. Check out the latest changes on the wiki for more details.

FAST v33hRC3

17 Oct 16:18
Compare
Choose a tag to compare

New features in this release:

  • FileCSV - A data structure for handling CSV files.
  • Parser - Added divider to allow using the default parser for non-whitespace words.
  • All Ds data structures have a copy() method now.

FAST v33hR2

11 Oct 21:24
10fb52c
Compare
Choose a tag to compare
FAST v33hR2 Pre-release
Pre-release

Release Candidate 1 for Revision H. This revision focuses on bug fixing and code cleanup, as well as compatibility with GMS 2.3.1. Check out the latest changes on the wiki for more details.

NOTE: GMS 2.3 has a bug with imported resources. If FAST crashes after importing, delete all modules except Core and run your project. It should boot normally. You can then reimport the missing modules.

FAST v33g

31 Aug 23:48
f28a8ef
Compare
Choose a tag to compare
FAST v33g Pre-release
Pre-release

This is the first publicly available release of FAST. I have begun working on ironing it out into a workable product with documentation and code commenting. While much of it does work, there are inconsistent implementations (ie: is_empty instead of empty) and I may still revise some naming schema. You only need to download the files you want, core contains only the FAST Core, but you can also download the entire package if you would like.