You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Spec: Automatic object lifetime management is now explicitly
defined by the spec. Destructors will automatically be called for
scope-local objects at the end of all scoped constructs, including:
Plain bash functions, class methods, curly-braced blocks, subshells,
process substitutions, and all control-flow constructs (if/else, while
until, for, case, select).
Some of these cases were not properly handled before, having the spec
state explicitly what the behavior should be helps us to verify that
the compiler is behaving properly.
Spec: Define explicitly that objects instantiated within a supershell
are owned (and therefore have their lifetimes managed) by the
code entity containing that supershell, not by the supershell itself.
Having this defined also illuminated another bug: namely, that the
compiler didn't do this. This is therefore also a bug fix. To this end,
an internal adopt() function was added to bpp::bpp_code_entity,
used by parent scopes to adopt the objects instantiated by supershells
that they contain.
Include path handling: The standard library directory is now always the last include path, allowing user-supplied -I directories to override
standard library files. This behavior is now consistent between both the
compiler and the language server.
Lexer bug fix: Correctly exit the class-header lexer mode after a class
declaration that does not inherit from a parent class. This resolves
a parser failure where ':' no-op commands would appear later in the
source.
Redirections and pipes with compound constructs: Fixed a bug where 'if'
and 'case' statements would incorrectly append delimiters after their
terminal tokens (that is, after 'fi', 'esac').
Added relevant test case for redirections and pipes into and out of
all compound shell constructs (if, while, until, for, select, and case)
bpp-lsp: The 'UTF16' flag is now correctly propagated to included files.
Code hygiene (internal): Replaced legacy .rfind()/.find() string checks
with modern .starts_with()/.contains()
Removed unused include directives and commented out unused function
parameters.
Updated vendored XGetOpt version to 1.0.1
Documentation: Added comprehensive spec pages on scope and object
lifetime management.
Clarified the definition of 'system methods'
Updated compiler and language manuals to reflect new include path
behavior.