Open
Conversation
Add GenericParameters to exec signature. This change adds GenericParameters to Function.exec. This is currently unused, but will be used once the genericsTake2 branch is merged in. This is a backwards incompatible change in general, and extensions will not be able to recompile with this change in. However, the call sites for all uses of general exec have been updated to use reflection to fall back to the old 3 argument version if the new method call fails. All core classes have been updated, which also necessitated changes to caller sites in some places as well.
* Add Env/GenericParams overloads to various methods. These are needed for genericsTake2. They simply forward to the old methods with null for now, which continue to exist (but deprecated), but the callers should all be updated, and so now have more time to upgrade before the genericsTake2 branch is merged in with the breaking changes.
* Convert to an iterative eval loop instead of a recursive one. This is a major change in the script evaluation process, which changes how "special execution" functions work. Previously, functions could choose to implement execs instead of exec, which received a ParseTree, instead of Mixed. This allowed the individual function to decide how or even if the ParseTree nodes were further executed. This works in general, however it has several drawbacks. In particular, the core evaluation loop loses control over the script once it decends into individual functions. Therefore features like Ctrl+C in command line scripts relied on each of these "flow" functions to implement that feature correctly, and only some of them did. This also prevents new features from being implemented as easily, like a debugger, since the evaluation loop would need to be modified, and every single flow function would need to make the same changes as well. This also has several performance benefits. Using a recursive approach meant that each frame of MethodScript had about 3 Java frames, which is inefficient. The biggest performance change with this is moving away from exception based control flow. Previously, return, break, and continue were all implemented with Java exceptions. This is more expensive than it needs to be, especially for very unexceptional cases such as return(). Now, when a proc or closure returns, it triggers a different phase in the state machine, instead of throwing an exception. This also unlocks future features that were not possible today. A debugger could have been implemented before (though it would have been difficult) but now an asynchronous debugger can be implemented. async/await is also possible now. Tail call optimizations can be done, execution time quotas, and the profiler can probably be improved. * Use our own stack counter to determine when a StackOverflow happens. * Add CallbackYield class for functions that execute callbacks. Previously, callback invocations required re-entering the eval loop from the top, which defeats the iterative loop. In principal, the functions that call Callables need to become flow functions to behave correctly, but for basic yield-style invocations, this infrastructure is too heavy, so CallbackYield is a new class which puts the function in terms of an exec-like mechanism, only introducing the Yield object, which is just a queue of operations, effectively. More functions need to convert to this, but as a first start, array_map has been converted. Some of the simpler FlowFunctions might be able to be simplified to this as well. * Convert various function to CallbackYield functions. These are the "easy" functions to convert. * Finish converting CallbackYield and FlowFunctions
* Add debugger backend.
This adds on a debugger to the evaluation loop, that allows for pausing,
saving state, then resuming from saved state.
* DAP debug server, multi-thread debugging, and iterative interpreter debug support
- Add MSDebugServer implementing the Debug Adapter Protocol over TCP,
with launch/attach modes, breakpoints, step-over/step-in/step-out,
variable inspection, exception breakpoints, and watch expressions
- Add multi-thread DAP support: register/unregister threads, per-thread
pause states, sync and async stepping modes (sync blocks in place,
async snapshots state and resumes on a new thread)
- Refactor DebugContext into a full thread-aware debug state manager with
per-thread StepMode, ThreadDebugState, and a thread registry for DAP
- Add DaemonManager lifecycle listeners and thread-aware waitForThreads,
so the debug session stays alive while background threads run
- Extract spawnExecutionThread() to centralize execution thread lifecycle
(run, await daemons, signal completion) in one place
- Fix StackTraceManager thread affinity: remove isDebugAdopted flag so
background threads (x_new_thread) get their own STM instead of sharing
the main thread's, which was corrupting call depth for step-over
- Fix skippingResume flag: clear unconditionally on source line change
rather than requiring shouldStop=true, which blocked step-over returns
- Add StackTraceFrame.getTarget() for debugger source mapping
- Add Breakpoint condition/hitCount/logMessage support
- Wire up cmdline interpreter (--debug flag) and lang server for DAP
- Add DAPTestHarness and dual sync/async integration tests for step-over
and multi-thread step-over scenarios
- Add debugger dependency (lsp4j.debug) to pom.xml
* Add logpoint support
* Add attach mode and KEYPAIR security
* Add docs and final touches
* Debug infrastructure: managed mode, hit-count dedup, and comprehensive tests
- Enable managed execution mode in CommandHelperPlugin so the debug
session survives script completion on embedded (Minecraft) servers
- Fix hit-count breakpoint deduplication: multiple AST nodes on the same
source line no longer increment the hit counter more than once per
visit. Uses column-based caching in ThreadDebugState to distinguish
"same line, different node" from "new loop iteration, same first node"
- Add evaluateBreakpointCondition() to DebugContext with per-thread
cache-aware hit-count and condition evaluation
- Add Breakpoint.getHitCount() getter
- Add MSDebugServer managed mode support: setManagedExecution(),
startedOnHostMainThread capture, resumeOnHostMainThread() for
resuming on the server main thread, dynamic scripting mode flag
in evaluate handler
- Add 21 new DAP integration tests (39 total) covering: managed mode
step-over, thread events, disconnect; variables/scopes; CArray
expansion (indexed, associative, nested); evaluate expressions;
exception breakpoints; conditional and hit-count breakpoints;
step-in, step-out, step-in targets; disconnect resumes execution
* Fix flakey test
…espec/openapi3 and @typespec/versioning (#1413) Bumps [ajv](https://github.com/ajv-validator/ajv) to 8.18.0 and updates ancestor dependencies [ajv](https://github.com/ajv-validator/ajv), [@typespec/compiler](https://github.com/microsoft/typespec), [@typespec/http](https://github.com/microsoft/typespec), [@typespec/openapi](https://github.com/microsoft/typespec), [@typespec/openapi3](https://github.com/microsoft/typespec) and [@typespec/versioning](https://github.com/microsoft/typespec). These dependencies need to be updated together. Updates `ajv` from 8.12.0 to 8.18.0 - [Release notes](https://github.com/ajv-validator/ajv/releases) - [Commits](ajv-validator/ajv@v8.12.0...v8.18.0) Updates `@typespec/compiler` from 0.55.0 to 1.10.0 - [Release notes](https://github.com/microsoft/typespec/releases) - [Commits](https://github.com/microsoft/typespec/compare/typespec@0.55.0...typespec-stable@1.10.0) Updates `@typespec/http` from 0.55.0 to 1.10.0 - [Release notes](https://github.com/microsoft/typespec/releases) - [Commits](https://github.com/microsoft/typespec/compare/typespec@0.55.0...typespec-stable@1.10.0) Updates `@typespec/openapi` from 0.55.0 to 1.10.0 - [Release notes](https://github.com/microsoft/typespec/releases) - [Commits](https://github.com/microsoft/typespec/compare/typespec@0.55.0...typespec-stable@1.10.0) Updates `@typespec/openapi3` from 0.55.0 to 1.10.0 - [Release notes](https://github.com/microsoft/typespec/releases) - [Commits](https://github.com/microsoft/typespec/compare/typespec@0.55.0...typespec-stable@1.10.0) Updates `@typespec/versioning` from 0.55.0 to 0.80.0 - [Release notes](https://github.com/microsoft/typespec/releases) - [Commits](https://github.com/microsoft/typespec/compare/typespec@0.55.0...@typespec/versioning@0.80.0) --- updated-dependencies: - dependency-name: ajv dependency-version: 8.18.0 dependency-type: indirect - dependency-name: "@typespec/compiler" dependency-version: 1.10.0 dependency-type: direct:production - dependency-name: "@typespec/http" dependency-version: 1.10.0 dependency-type: direct:production - dependency-name: "@typespec/openapi" dependency-version: 1.10.0 dependency-type: direct:production - dependency-name: "@typespec/openapi3" dependency-version: 1.10.0 dependency-type: direct:production - dependency-name: "@typespec/versioning" dependency-version: 0.80.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Bumps [picomatch](https://github.com/micromatch/picomatch) from 2.3.1 to 2.3.2. - [Release notes](https://github.com/micromatch/picomatch/releases) - [Changelog](https://github.com/micromatch/picomatch/blob/master/CHANGELOG.md) - [Commits](micromatch/picomatch@2.3.1...2.3.2) --- updated-dependencies: - dependency-name: picomatch dependency-version: 2.3.2 dependency-type: indirect ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
…pespec/openapi3 and @typespec/versioning (#1411) Bumps [yaml](https://github.com/eemeli/yaml) to 2.8.3 and updates ancestor dependencies [yaml](https://github.com/eemeli/yaml), [@typespec/compiler](https://github.com/microsoft/typespec), [@typespec/http](https://github.com/microsoft/typespec), [@typespec/openapi](https://github.com/microsoft/typespec), [@typespec/openapi3](https://github.com/microsoft/typespec) and [@typespec/versioning](https://github.com/microsoft/typespec). These dependencies need to be updated together. Updates `yaml` from 2.4.2 to 2.8.3 - [Release notes](https://github.com/eemeli/yaml/releases) - [Commits](eemeli/yaml@v2.4.2...v2.8.3) Updates `@typespec/compiler` from 0.55.0 to 1.10.0 - [Release notes](https://github.com/microsoft/typespec/releases) - [Commits](https://github.com/microsoft/typespec/compare/typespec@0.55.0...typespec-stable@1.10.0) Updates `@typespec/http` from 0.55.0 to 1.10.0 - [Release notes](https://github.com/microsoft/typespec/releases) - [Commits](https://github.com/microsoft/typespec/compare/typespec@0.55.0...typespec-stable@1.10.0) Updates `@typespec/openapi` from 0.55.0 to 1.10.0 - [Release notes](https://github.com/microsoft/typespec/releases) - [Commits](https://github.com/microsoft/typespec/compare/typespec@0.55.0...typespec-stable@1.10.0) Updates `@typespec/openapi3` from 0.55.0 to 1.10.0 - [Release notes](https://github.com/microsoft/typespec/releases) - [Commits](https://github.com/microsoft/typespec/compare/typespec@0.55.0...typespec-stable@1.10.0) Updates `@typespec/versioning` from 0.55.0 to 0.80.0 - [Release notes](https://github.com/microsoft/typespec/releases) - [Commits](https://github.com/microsoft/typespec/compare/typespec@0.55.0...@typespec/versioning@0.80.0) --- updated-dependencies: - dependency-name: yaml dependency-version: 2.8.3 dependency-type: indirect - dependency-name: "@typespec/compiler" dependency-version: 1.10.0 dependency-type: direct:production - dependency-name: "@typespec/http" dependency-version: 1.10.0 dependency-type: direct:production - dependency-name: "@typespec/openapi" dependency-version: 1.10.0 dependency-type: direct:production - dependency-name: "@typespec/openapi3" dependency-version: 1.10.0 dependency-type: direct:production - dependency-name: "@typespec/versioning" dependency-version: 0.80.0 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
The following vulnerabilities are fixed with an upgrade: - https://snyk.io/vuln/SNYK-JAVA-COMMICROSOFTSQLSERVER-13821835 Co-authored-by: snyk-bot <snyk-bot@snyk.io>
Bumps [com.microsoft.sqlserver:mssql-jdbc](https://github.com/Microsoft/mssql-jdbc) from 12.6.1.jre11 to 12.6.5.jre11. - [Release notes](https://github.com/Microsoft/mssql-jdbc/releases) - [Changelog](https://github.com/microsoft/mssql-jdbc/blob/main/CHANGELOG.md) - [Commits](https://github.com/Microsoft/mssql-jdbc/commits) --- updated-dependencies: - dependency-name: com.microsoft.sqlserver:mssql-jdbc dependency-version: 12.6.5.jre11 dependency-type: direct:production ... Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
- Replace RSAEncrypt with SSHKeyPair, which uses java.security.Signature (sign/verify) instead of Cipher (encrypt/decrypt), enabling support for Ed25519 and ECDSA in addition to RSA - Update DebugAuthenticator to use SSHKeyPair.verify() - Update key-gen tool with -t flag for key type selection (default: Ed25519), dynamically listing supported types from the KeyType enum - Replace RSAEncryptTest with parameterized SSHKeyPairTest covering all three key types - Only advertise declaration, definition, and hover LSP capabilities when StaticAnalysis is globally enabled, fixing spurious "error analyzing included file" diagnostics for users with SA off - Remove setLocalEnable(true) calls from LangServModel that were forcing SA on regardless of user config
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This branch contains the changes reverted from master in ac51418 for the 3.3.5 release. These will be merged back after the version bump to 3.3.6.
Summary of changes