Skip to content

Commit 5cb2d92

Browse files
facontidavideclaude
andcommitted
prepare release
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01ME1hnSFSzibU5phxboGsjk
1 parent 5855b83 commit 5cb2d92

2 files changed

Lines changed: 117 additions & 1 deletion

File tree

‎CHANGELOG.rst‎

Lines changed: 116 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,122 @@
22
Changelog for package behaviortree_cpp
33
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
44

5+
Forthcoming
6+
-----------
7+
* Feature: advanced xml validation (`#1146 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1146>`_)
8+
* add Finally control node for guaranteed cleanup (`#1229 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1229>`_)
9+
* Behavior change: "Finally" is now a built-in node ID, so an application that
10+
registers its own node with that ID gets a duplicate-registration error.
11+
* Add _onlyIf and _onStart preconditions (`#820 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/820>`_, `#895 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/895>`_) (`#1261 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1261>`_)
12+
* Behavior change: the attribute names `_onlyIf` and `_onStart` are now reserved.
13+
Before, they were stored silently as non-port attributes and did nothing.
14+
* test: don't assume a tick rate in Reactive.TestLogging (`#1285 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1285>`_)
15+
* null-check the entry in ImportBlackboardFromJSON after createEntry (`#1284 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1284>`_)
16+
* Restore 4.10.0 ABI of Sleep/Delay/Timeout nodes; ignore stale timer handlers (`#1283 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1283>`_)
17+
* add unit test for subtree with default values and autoremap enabled (`#1272 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1272>`_)
18+
* Behavior change: for a modelled input port with a literal default that is not
19+
explicitly remapped, the default is now set in the SubTree blackboard if no entry with
20+
that name exists in the parent blackboard when the tree is created (creation-time
21+
rule, documented in PORT_CONNECTION_RULES.md). A parent key created only at runtime
22+
(e.g. by a Script) is shadowed by the default.
23+
* bound the AST height of flat script expressions (`#1259 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1259>`_)
24+
* Behavior change: a single script expression with more than ~255 chained operators is
25+
now rejected when the tree is created.
26+
* reset a child's status when its halt() throws in ControlNode::haltChild (`#1273 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1273>`_)
27+
* OSS-Fuzz: Add new fuzzer/corpus/dict targets tree exec (`#1277 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1277>`_)
28+
* fix: bad_expected_access::what() returns the error message (`#1269 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1269>`_)
29+
* Propagate skipped conditions in IfThenElse and WhileDoElse (`#1276 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1276>`_)
30+
* Reset Precondition state between activations (`#1275 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1275>`_)
31+
* forget a rejected XML document in XMLParser (`#1266 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1266>`_)
32+
* ignore aborted timer handler in SleepNode (`#1267 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1267>`_)
33+
* fix stack overflow on nested JSON in JsonToInteger and fromJson (`#1274 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1274>`_)
34+
* make wildcards_match iterative to avoid stack overflow (`#1270 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1270>`_)
35+
* use the locked entry in script assignment string conversion (`#1265 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1265>`_)
36+
* Sort ports in the TreeNodesModel XML (`#851 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/851>`_) (`#1260 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1260>`_)
37+
* fix: keep the name of SubTree nodes in WriteTreeToXML (`#1262 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1262>`_) (`#1268 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1268>`_)
38+
* Bump prefix-dev/setup-pixi from 0.11.2 to 0.11.3 (`#1280 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1280>`_)
39+
* feat: write the library version as BTCPP_version in the <root> of generated XML (`#1264 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1264>`_)
40+
* test: a reactive node must not restart its RUNNING child (`#1258 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1258>`_)
41+
* Add input port update subscriptions (`#1247 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1247>`_)
42+
* store SubTree literals as strings again; coerce numeric strings in script arithmetic (`#1246 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1246>`_) (`#1254 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1254>`_)
43+
* Behavior change compared to 4.9.1 - 4.10.0, back to pre-4.9.1 behavior: two literal
44+
operands are strings ("1" + "2" is "12", "10" < "2" compares text), and compound
45+
assignment, unary minus, bitwise and logic operators on such a literal require an
46+
explicit number again.
47+
* Allow a custom "__type" name in the JsonExporter lambda converters (`#1255 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1255>`_)
48+
* Document the MSVC timer resolution caveat of Tree::sleep (`#1257 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1257>`_)
49+
* Include emscripten/fiber.h at global scope before minicoro.h (`#1256 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1256>`_)
50+
* clang-format: never split string literals (`#1253 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1253>`_)
51+
* Warn when a BehaviorTree ID replaces one registered from another source (`#1133 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1133>`_)
52+
* Behavior change: a new "Warning: BehaviorTree ID [...] replaces ..." line on stdout in
53+
the cases above; no other change.
54+
* Fix Reactive Sequence async control node validation (`#1183 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1183>`_)
55+
* Behavior change: a ReactiveSequence with two or more direct children among
56+
AsyncSequence / AsyncFallback, at least one of them an AsyncFallback, now fails to
57+
load, like two AsyncSequence already did.
58+
* pixi: bound the parallel build on Linux (`#1252 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1252>`_)
59+
* reject non-integer JSON numbers where an integer is expected (`#1240 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1240>`_)
60+
* Behavior change: int-vector elements, async_delay and Groot2 hook fields that are
61+
fractional, NaN, boolean or out of range now throw instead of being silently truncated
62+
or wrapped.
63+
* reject out-of-range values in the double to float conversions (`#1249 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1249>`_)
64+
* Behavior change: reading a finite double with |x| >= FLT_MAX + half an ulp as float
65+
now throws instead of returning an infinity.
66+
* throw instead of wrapping the 16-bit UID counter in Tree::getUID (`#1244 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1244>`_)
67+
* Behavior change: creating a tree with more than 65535 nodes now throws instead of
68+
succeeding with duplicate UIDs.
69+
* fix overflow in the integer to floating point safe-cast checks (`#1238 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1238>`_)
70+
* range-check uint16_t in the Any string to number fallback (`#1242 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1242>`_)
71+
* fix null _p access in the TestNode async_delay timer handler (`#1243 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1243>`_)
72+
* fix TimeoutNode halting the child concurrently with its timer thread (`#1241 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1241>`_)
73+
* Bump prefix-dev/setup-pixi from 0.10.1 to 0.11.2 (`#1245 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1245>`_)
74+
* Groot2Publisher: add a constructor that takes the bind address (`#1251 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1251>`_)
75+
* XMLParser: detect cyclic <include> instead of overflowing the stack (`#1250 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1250>`_)
76+
* TreeObserver: don't throw when two nodes have the same path (`#1234 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1234>`_)
77+
* fix data race in SetBlackboardNode copying a blackboard entry (`#1236 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1236>`_)
78+
* fix data race in SqliteLogger::callback (`#1237 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1237>`_)
79+
* fix undefined double to int64 cast in the script complement operator (`#1239 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1239>`_)
80+
* Add USE_VENDORED_JSON option to use the system nlohmann_json (fixes `#959 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/959>`_) (`#1235 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1235>`_)
81+
* Validate model names in explicit XML node syntax (fixes `#1220 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1220>`_) (`#1231 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1231>`_)
82+
* Behavior change: the ID of explicit <Action>, <Condition>, <Decorator> and <Control>
83+
elements is now checked with the same model-name rules as the compact form, so an ID
84+
with a forbidden character (e.g. ID="My.Action") or the reserved name Root, which
85+
loaded before, now throws.
86+
* fuzzing: don't return 1 from bb_fuzzer on unexpected exceptions (fixes `#1224 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1224>`_) (`#1233 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1233>`_)
87+
* apply type checks in Blackboard::set when the key is remapped (`#1232 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1232>`_)
88+
* Behavior change: writes through a SubTree remapping now follow the same type rules as
89+
local writes. An unconvertible string written into a strongly typed parent entry
90+
throws instead of being stored as a std::string, and a remapped write locks the type
91+
of a weakly typed (AnyTypeAllowed) parent entry, as a local write already did.
92+
* Report a declared port whose name cannot be bound (fixes `#1215 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1215>`_) (`#1216 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1216>`_)
93+
* match subtrees by name in ImportTreeFromJSON (`#1227 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1227>`_)
94+
* fix SimpleString equality for content with embedded NUL bytes (`#1230 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1230>`_)
95+
* check from_chars result for integer literals in script parser (`#1214 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1214>`_)
96+
* clamp snprintf result before using it as fwrite length (`#1185 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1185>`_)
97+
* fix locale-dependent std::stod fallback in Any and SwitchNode (`#1218 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1218>`_)
98+
* Say that duplicate SubTree names are checked across the whole tree (fixes `#1219 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1219>`_) (`#1222 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1222>`_)
99+
* Name the forbidden character in the port name error (fixes `#1221 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1221>`_) (`#1223 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1223>`_)
100+
* Bump actions/setup-python from 6 to 7 (`#1179 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1179>`_)
101+
* DecoratorNode: don't discard the result of an asynchronous child (`#1206 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1206>`_)
102+
* CI: run the Windows tests through ctest with --repeat until-pass (`#1205 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1205>`_)
103+
* docs: clarify that Precondition is evaluated once per activation, not every tick (`#1204 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1204>`_)
104+
* add Blackboard::getKeyNames() and deprecate getKeys() (`#1203 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1203>`_)
105+
* fix use-after-free of a blackboard entry held by getAnyLocked (alternative to `#1181 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1181>`_) (`#1202 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1202>`_)
106+
* Bump prefix-dev/setup-pixi from 0.10.0 to 0.10.1 (`#1190 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1190>`_)
107+
* haltTree() from another thread now stops tickWhileRunning() (fixes `#686 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/686>`_) (`#1201 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1201>`_)
108+
* fix FileLogger2: drain the transition queue in the destructor after joining the writer thread (`#1198 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1198>`_)
109+
* fix TimerQueue shutdown race that left cancelled items in the queue (`#1200 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1200>`_)
110+
* validate substituted node type in instantiateTreeNode (`#1193 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1193>`_)
111+
* fix: typo Slop->Slot and mark Signal::subscribe() [[nodiscard]] (`#1199 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1199>`_)
112+
* Fix logical not for string-backed booleans (`#1191 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1191>`_)
113+
* preserve integer width in JsonExporter::fromJson (`#1186 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1186>`_)
114+
* fix use-after-free of the timer node mutex on destruction (`#1180 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1180>`_)
115+
* fix unbounded recursion in the script expression parser (`#1174 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1174>`_)
116+
* Fix library version in CMake subprojects (`#1188 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1188>`_)
117+
* fix @ root remapping in Blackboard::createEntryImpl (`#1192 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1192>`_)
118+
* validate backup size in BlackboardRestore (`#1182 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1182>`_)
119+
* Contributors: Arthur Chan, Aysha Afrah Ziya, Azer Ben Ali, DV (David Vadovszki), Davide Faconti, Golitsin Vyacheslav, Igor Stadnyk, Jonas Otto, KImanalieva, Lim Jooyoung, Nikola Kachmaryk, Varun Kumar, Victor Voronin, dependabot[bot], ktyang, simobenziane
120+
5121
4.10.0 (2026-07-24)
6122
-------------------
7123
* reject trailing characters in SwitchNode numeric comparison (`#1178 <https://github.com/BehaviorTree/BehaviorTree.CPP/issues/1178>`_)

‎CMakeLists.txt‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
cmake_minimum_required(VERSION 3.16.3) # version on Ubuntu Focal
22

3-
project(behaviortree_cpp VERSION 4.10.0 LANGUAGES C CXX)
3+
project(behaviortree_cpp VERSION 4.11.0 LANGUAGES C CXX)
44

55
# create compile_commands.json
66
set(CMAKE_EXPORT_COMPILE_COMMANDS ON)

0 commit comments

Comments
 (0)