|
2 | 2 |
|
3 | 3 | All notable changes to this project will be documented in this file. See [conventional commits](https://www.conventionalcommits.org/) for commit guidelines. |
4 | 4 |
|
| 5 | +## [2.4.0](https://github.com/robotcodedev/robotcode/compare/v2.3.1..v2.4.0) - 2026-03-17 |
| 6 | + |
| 7 | +### Bug Fixes |
| 8 | + |
| 9 | +- **dependencies:** Update click version to 8.2.0 in requirements files ([6e1220e](https://github.com/robotcodedev/robotcode/commit/6e1220e0542dc12a37dcb6c489d1653238ffbe8e)) |
| 10 | +- **vscode:** Fix invalid glob pattern in selectConfigurationProfiles ([58b5a8f](https://github.com/robotcodedev/robotcode/commit/58b5a8f1d1b8a2363a08b7872e20519316a44025)) |
| 11 | + |
| 12 | + Remove extra closing brace in the file extension glob pattern that |
| 13 | + caused workspace folder detection to fail when selecting configuration |
| 14 | + profiles. |
| 15 | + |
| 16 | + |
| 17 | + |
| 18 | +### Features |
| 19 | + |
| 20 | +- **plugin:** Add fast exit option to Application.exit method ([acfa7e9](https://github.com/robotcodedev/robotcode/commit/acfa7e9a2d6b138f487183e19b8700d2e88db313)) |
| 21 | + |
| 22 | + |
| 23 | +### Performance |
| 24 | + |
| 25 | +- **diagnostics:** Skip full AST model parsing when no robotcode: markers present ([7b3999e](https://github.com/robotcodedev/robotcode/commit/7b3999e203209c67613f27fecacc943ac981d824)) |
| 26 | +- **robot:** Cache LibraryDoc for robot and resource files on disk ([9b89623](https://github.com/robotcodedev/robotcode/commit/9b896236c2590571fd5cb4cd95fbb156d0929cb1)) |
| 27 | + |
| 28 | + Resource and robot files are now cached on disk between sessions. |
| 29 | + On subsequent opens, imports, keywords, and variables from these |
| 30 | + files are loaded from cache instead of being re-parsed, resulting |
| 31 | + in faster startup and quicker response times when navigating |
| 32 | + projects with many resource files. |
| 33 | + |
| 34 | + The cache is automatically invalidated when a file is modified |
| 35 | + on disk. Files that are currently open in the editor always use |
| 36 | + the live content and bypass the disk cache. |
| 37 | + |
| 38 | +- **robot:** Remove unnecessary token list caching from document cache ([5f8591d](https://github.com/robotcodedev/robotcode/commit/5f8591d9a079261769d4a2c718c53124c22d510b)) |
| 39 | + |
| 40 | + Token lists were cached separately in document._cache, but only used |
| 41 | + as intermediate input for AST model building. No external caller ever |
| 42 | + accessed the cached token lists directly. |
| 43 | + |
| 44 | + Move token generation into model builder methods so tokens are only |
| 45 | + produced on cache miss. On cache hit, neither tokenization nor model |
| 46 | + building occurs. |
| 47 | + |
| 48 | + - Eliminates up to 6 cached token lists per document in Language Server |
| 49 | + - No behavior change for CLI (tokens were already uncached for version=None) |
| 50 | + - Remove ~80 lines of redundant caching infrastructure |
| 51 | + |
| 52 | +- **robot:** Use file_id tuples instead of os.path.samefile for path comparison ([3f3bd84](https://github.com/robotcodedev/robotcode/commit/3f3bd8430a5c745bae6d0274ab4001acbe73044e)) |
| 53 | + |
| 54 | + Replace repeated os.path.samefile() calls (2x stat per call) in namespace |
| 55 | + import loops with pre-computed (st_dev, st_ino) tuple comparisons. |
| 56 | + |
| 57 | + - Add FileId type, file_id() and same_file_id() to core utils |
| 58 | + - Add lazy source_id property to LibraryDoc (excluded from pickle) |
| 59 | + - Pre-compute source_id on Namespace init |
| 60 | + - Compute file_id once per find_resource result instead of per-iteration |
| 61 | + |
| 62 | + |
| 63 | + |
| 64 | +### Refactor |
| 65 | + |
| 66 | +- **imports_manager:** Cleanup and fix correctness issues ([25ef49c](https://github.com/robotcodedev/robotcode/commit/25ef49c3ea0fec68f4f36a702e8f20a3c32c5537)) |
| 67 | +- **robot:** Remove unnecessary finalizers and dispose chain ([eaa7e14](https://github.com/robotcodedev/robotcode/commit/eaa7e14e2672cbf8da49a2eb58205384bd34c9cf)) |
| 68 | + |
| 69 | + Remove redundant _release_watchers_finalizer from _ImportEntry — file |
| 70 | + watcher cleanup is already handled explicitly by _remove_file_watcher() |
| 71 | + during invalidation and by server_shutdown() at LS shutdown. |
| 72 | + |
| 73 | + Remove the _dispose_finalizer/dispose() chain through ImportsManager, |
| 74 | + DocumentsCacheHelper, RobotFrameworkLanguageProvider, CodeAnalyzer, and |
| 75 | + CLI. With the per-entry finalizers gone, these only cleared dicts that |
| 76 | + Python already cleans up at process exit. |
| 77 | + |
| 78 | + Fix broken finalizer in Workspace.add_file_watchers() where the closure |
| 79 | + captured the entry object, preventing it from ever being garbage |
| 80 | + collected. |
| 81 | + |
| 82 | + Set atexit=False on sentinel finalizers so they only fire during normal |
| 83 | + GC (needed for LS live cleanup), not at interpreter shutdown. |
| 84 | + |
| 85 | +- **robot:** Replace __del__ with weakref.finalize in imports_manager ([e0e8d81](https://github.com/robotcodedev/robotcode/commit/e0e8d81219d1da8682839ab804cbc94408cf7d3f)) |
| 86 | + |
| 87 | + Replace fragile `__del__` methods with `weakref.finalize` in both |
| 88 | + `_ImportEntry` and `ImportsManager` for reliable cleanup: |
| 89 | + |
| 90 | + - _ImportEntry: register finalizer in __init__ with file_watchers list |
| 91 | + and file_watcher_manager as strong refs (no self access needed); |
| 92 | + change _remove_file_watcher to use .clear() instead of = [] |
| 93 | + - ImportsManager: register finalizer lazily in executor property when |
| 94 | + ProcessPoolExecutor is created; add static _shutdown_executor callback |
| 95 | + |
| 96 | + weakref.finalize is guaranteed to run even with circular references |
| 97 | + and does not prevent garbage collection of reference cycles. |
| 98 | + |
| 99 | + |
| 100 | + |
| 101 | +### Testing |
| 102 | + |
| 103 | +- Add library folder to test project ([45c410f](https://github.com/robotcodedev/robotcode/commit/45c410f452393068afbff24b68f28ef6cd0936d0)) |
| 104 | + |
| 105 | + |
5 | 106 | ## [2.3.1](https://github.com/robotcodedev/robotcode/compare/v2.3.0..v2.3.1) - 2026-03-12 |
6 | 107 |
|
7 | 108 | ### Bug Fixes |
|
0 commit comments