Skip to content

FlowGraph 0.5.0

Choose a tag to compare

@github-actions github-actions released this 25 Oct 18:42
· 8 commits to master since this release

What's new in 0.5.0

Structs

Scripts can declare their own record types: My Script > Structs, then the fields in Details (name, type, default,
description).

  • Make Point builds one from its fields, Break Point gives its fields, Set Point.X changes one field in place: the
    struct of the variable, or of the array element, it is connected to.
  • A value, like an array: setting a variable or passing a struct to a function by value makes a copy.
  • Fields of any type: numbers, strings, arrays, maps, the application's classes, other structs (a Contact with a Home that
    is a Point). A struct can hold itself only through an array or a map (Children: array<Tree>).
  • Variables, local variables, function parameters and containers can be of a struct type (array<Contact>).
  • Rename a struct or a field and every type and node that uses it follows; Find References lists them. A running script
    that is changed keeps its values field by field.
  • The debugger shows the fields, and a watch reaches one (People[0].Name).
  • Examples/Scripts/contacts.flow shows them at work.

Bytes

  • bytes: raw data (the content of a file, a network message), one shared buffer that costs nothing to pass along.
    byte: a number from 0 to 255 that works where an int does.
  • Nodes: Length, Byte At, Slice, Concat, Find, Starts With / Ends With; From Text / To Text (UTF-8; Valid says
    whether the bytes were UTF-8), To Hex / From Hex, To Base64 / From Base64, To Array / Make Bytes (array<byte>).
  • Binary files: the FileSystem plugin has Read Bytes and Write Bytes.
  • Examples/Scripts/bytes.flow shows them.

The editor

  • Snap to grid makes links straight. A node made from a dragged pin goes level with it, a node moved alone snaps to its link
    when the link can be straight, and nodes moved together keep where they are to each other.
  • View > Full Screen (Shift+Alt+Enter).
  • Parameters: the type, container and key of a function's inputs and outputs (and of a struct's fields) look like combo
    boxes and open on one click.
  • The window keeps the layout of its docks. A maximized window got other dock sizes at every start.
  • Details no longer shows a variable, function or struct after it was deleted.
  • On Linux, a right click while a link was being dragged left a dashed link behind.

Other changes

  • Map nodes: Set Entry and Get Entry are now Add and Get Item, like the array nodes (Add adds the key or changes its
    value). Scripts made before keep working.
  • flow no longer prints Execution Time after the script: the output is only what the script prints (the Now and
    Seconds Since Start nodes measure time where a script needs it).
  • The texts are in the editor's 9 other languages (Persian reviewed, the others machine translations).

For plugin authors: the plugin interface changed (new kinds of values and types), so plugins built for 0.4 are refused (with
the reason): build them again against 0.5. Applications that use find_package(FlowGraph 0.4) ask for 0.5 now.

Downloads

  • FlowGraph-0.5.0-windows-x64.zip: flow, flowstudio (Qt included) and the SDK: headers, libraries and the CMake
    package (find_package(FlowGraph): FlowGraph::Core, FlowGraph::ScriptEditor). Windows 10 or later, x64.
  • FlowGraph-0.5.0-linux-x64.tar.gz: the same for Linux x64. It runs on distributions with glibc 2.28 or newer:
    RHEL / CentOS / Alma / Rocky 8 and 9, Debian 10, Ubuntu 20.04 and newer. flowstudio brings its Qt; the system
    needs the usual X11 libraries (for example xcb-util-cursor / libxcb-cursor0, libxkbcommon-x11).
  • SHA256SUMS.txt: checksums of both.

Plugins are binary: build them against this release (the loader refuses a plugin made for another build, with the reason).

Licenses: the runtime (FlowGraphCore) and flow are MIT; the editor and flowstudio are GPL-3.0-only, as they are
built on KDDockWidgets (GPL). Qt is used under the LGPL-3.0. The texts are in each package (LICENSE, LICENSES/).

Full Changelog: v0.4.0...v0.5.0