Skip to content

Releases: rail5/bashpp

v0.5.0

05 Jul 13:38
1a2d042
Compare
Choose a tag to compare
  • Added support for 'super' keyword
    Temporarily switches reference context to the immediate parent class
    of the current object
  • Test suite: Use new SharedVar class from STL for statistics

VSCode Extension v0.5.2

05 Jul 18:33
be207ee
Compare
Choose a tag to compare
  • Brought syntax rules up to speed with Bash++ v0.5.0 by adding support for the @super keyword
  • Specially-highlight the @this and @super keywords even when followed by a "dot chain"
    • I.e., @this.innerObject.method should show @this highlighted as a keyword, and .innerObject.method highlighted as an object reference
    • Previously, the entire string was simply highlighted as an object reference
  • Bug fix: properly highlight @this and @super as keywords within double-quoted strings
  • Also properly highlight @{this} and @{super} as keywords

v0.4.16

04 Jul 09:38
1dbf7c8
Compare
Choose a tag to compare
  • STL: Added 'SharedVar' class
    Adds support for singular shared (primitive) shell variables between
    multiple concurrent processes

v0.4.15

04 Jul 05:15
02a1cf5
Compare
Choose a tag to compare
  • Spec: Fixed whatis entry
  • DPKG: Install STL in libstd-bpp package
  • Distribution bug fix: Store STL files without extensions in source
  • STL: Shared data structures now all inherit from SharedObject base
    class
    SharedObject base class now also provides extended locking
    mechanisms to allow a single process's lock to persist across
    several distinct read-write operations, before being unlocked again
    for other processes to use.
    Calling the .lock method and the .unlock method respectively will
    accomplish this.
  • Behavior change: allow dynamic cast rvalues to be empty/unset
    without throwing an error
    Simply return nullptr in that case
  • Bug fix: Properly identify lvalues within supershells within dynamic
    casts
    Again, the lexer needs to be fully overhauled.
    Work has at least nominally began on this but will take time

v0.4.12

22 Jun 09:10
ccefbfe
Compare
Choose a tag to compare
  • Lexer: Properly identify lvalues in conditionals
    Again, a full rewrite of the lexer is sorely needed.
  • Code generation optimization: Auto assign 'this' pointer once and
    only once per method
  • Added spec page on interoperability
  • Added spec page on objects

v0.4.11

18 Jun 09:34
507d9cd
Compare
Choose a tag to compare
  • STL: Added SharedArray class for use by multi-process concurrent
    applications
  • Bug fix: lvalue vs. rvalue identification inside test conditions
    If we see what would ordinarily be a connective (such as || or &&)
    inside a test condition (ie, [[ condition ]] or [ condition ] ),
    then, unlike in the ordinary case for a connective, the next token
    cannot be an lvalue
  • Build system: parallel STL builds
  • Bug fix: Input redirection in bash while loops
  • STL: Re-added Array class
  • Bug fix: Multi-value array assignments
    Object assignments in which the rvalue was a decently-populated
    array previously failed and only inserted the first element of
    said array. Obvious oversight, now fixed, and arrays are copied
    in full

v0.4.10

17 Jun 04:56
fa27b82
Compare
Choose a tag to compare
  • Additions to the standard library:
    Added SharedQueue class for concurrent multi-process access to the
    same queue.
    Added SharedStack class for concurrent multi-process access to the
    same stack
    SharedQueue and SharedStack are data structures that are safe to use
    among multiple forked processes concurrently. They use the
    filesystem as a back-end for the stored data.
    Reads and writes are atomic and concurrency-safe.
    The data can be encrypted for security.
    Here is an article about this addition:
    https://log.bpp.sh/2025/06/17/multiprocess-concurrency-shared-data-structures.html

v0.4.9

15 Jun 16:04
f6fa314
Compare
Choose a tag to compare
  • Bug fix: Make static 'inaccessible entity' placeholders inline so
    that each unit shares the same definition
    Note also that this is (AFAIK) a C++17-and-later feature, that
    inlining the definition should result in there being only one
    definition across multiple units
    If we don't do this, scope checks will always fail

v0.4.8

15 Jun 07:50
5c76a8c
Compare
Choose a tag to compare
  • Bug fix: Identify lvalues after case patterns
    Again, the lexer and parser still need to be rewritten from
    scratch
  • Build system improvement:
    Absolutely every unit compiled independently

v0.4.7

10 Jun 08:15
c66d395
Compare
Choose a tag to compare
  • Safer dynamic casting
  • Lexer: Properly determine lvalues v. rvalues in the context of
    two-token bpp commands like dynamic_cast and new
  • Removed dead code
  • Bug fix: Properly handle subshell pre-code and post-code
  • Bug fix: Properly scan the entity stack for the latest code entity
    Now we have a function: BashppListener::latest_code_entity() which
    traverses the entity stack until it finds the most recent code entity
    and returns it.
  • Bug fix: Maintain one global list of includes
    This fixes a particular bug, where, for example:
    File A includes File B using include_once
    File B includes File C using include_once
    We return from parsing File B
    File A includes File C using include_once
    With each file having its own include list, 'C' would've been added
    to B's includes but not A's. So A wouldn't have known not to try
    including it again. Now we have a single global include list, and
    each parse holds a pointer to it
  • Bug fix: Protect against direct system method access
    Object reference rules should block ids with double underscores
  • Bug fix: Allow system methods to be referenced before they're fully
    defined