Commit Graph

1466 Commits

Author SHA1 Message Date
Hubert Plociniczak
e325e65524
Revert disabling of polyglot Ydoc (#11544)
This reverts commit e6a6308145.
This reverts commit f27e757e53.
This reverts commit 9b4134240a.
2024-11-13 16:04:13 +01:00
Hubert Plociniczak
2f2eeafceb
Fix Logger's name in stdlib (#11519)
* Fix Logger's name in stdlib

Somehow SLF4J is able to recognize correctly the provided Logger's name
and print it to the user. Java's Logger is
not.
In addition, we setup SLF4J's configuration, meaning that log-levels are
correctly respected.

For a simple project:
```
from Standard.Base import all
from Standard.Base.Logging import all

type Foo

main =
    IO.println "Hello World!"
    Foo.log_message level=..Warning "I should warn you about something..."
    Foo.log_message level=..Info "Should be seen? By default we only show up-to warnings level"
    Foo.log_message level=..Severe "Something went really bad!"
```

This change demonstrates the fix.

Before:
```
> enso --run simple-logging.enso
Hello World!
Nov 08, 2024 6:08:07 PM com.oracle.truffle.host.HostMethodDesc$SingleMethod$MHBase invokeHandle
WARNING: I should warn you about something...
Nov 08, 2024 6:08:07 PM com.oracle.truffle.host.HostMethodDesc$SingleMethod$MHBase invokeHandle
INFO: Should be seen? By default we only show up-to warnings level
Nov 08, 2024 6:08:07 PM com.oracle.truffle.host.HostMethodDesc$SingleMethod$MHBase invokeHandle
SEVERE: Something went really bad!
Foo
```

After:
```
> enso --run simple-logging.enso
Hello World!
[WARN] [2024-11-08T18:03:37+01:00] [simple-logging.Foo] I should warn you about something...
[ERROR] [2024-11-08T18:03:37+01:00] [simple-logging.Foo] Something went really bad!
Foo
```

* Update distribution/lib/Standard/Base/0.0.0-dev/src/Logging.enso

Co-authored-by: Radosław Waśko <radoslaw.wasko@enso.org>

* Test stdlib logs by using MemoryAppender

Added `getEvents` member to `MemoryAppender` so that it is possible to
retrieve individual log messages from tests and test their presence.
Required opening up to some modules to retrieve internals of loggers.

* nit

* small tweaks to eliminate module warnings

---------

Co-authored-by: Radosław Waśko <radoslaw.wasko@enso.org>
2024-11-13 10:20:41 +01:00
Paweł Grabarz
a83297b7db
Drop git dependency on enso-bot repository (#11539) 2024-11-12 18:25:19 +00:00
Jaroslav Tulach
67db825587
MetadataStorage is mutable - structural equals in copy isn't enough (#11513)
`MetadataStorage` is mutable. Using `Object.equals` in `IR.copy` methods to check whether a _copy is needed_ isn't enough. The fact that two storages are `Object.equal` may be just temporary. Replacing the checks in 69 `IR.copy` methods with identity check - e.g. `ne` in Scala which is `==` in Java.

Using proper structural check inside of `MetadataStorage` fixes #11171.

# Important Notes
I [used this regex](https://github.com/enso-org/enso/issues/11171#issuecomment-2463908932) to find out 69 instances of `IR.copy`:

![69 copy methods](https://github.com/user-attachments/assets/257580b9-54fc-4199-88ad-a22103b0041f)

and I modified all 69 of them.
2024-11-08 17:29:41 +00:00
Jaroslav Tulach
a6460c17b2
Implement proper hash and equals for FrameVariableNames (#11512) 2024-11-08 16:25:28 +01:00
Hubert Plociniczak
a5ebdf4e79
Fix logging in CLI (#11472)
* Fix logging in CLI

Previously, unless `--logger-connect` was used, CLI would always
fallback to console logging. In addition it would be misconfigured if
`application.conf` was provided with logging configuration.

This change makes sure that CLI uses the same logging infrastructure as
the rest of the system.
As a result, CLI will now by default not only log to the console and
respect the provided configuration but also log to the file system.

* Update docs

* c&p error

* More examples
2024-11-07 16:03:19 +01:00
Pavel Marek
701bba6504
Convert Array_Like_Helpers.map to a builtin to reduce stack size (#11363)
The ultimate goal is to reduce the method calls necessary for `Vector.map`.

# Important Notes
- I managed to reduce the number of Java stack frames needed for each `Vector.map` call from **150** to **22** (See https://github.com/enso-org/enso/pull/11363#issuecomment-2432996902)
- Introduced `Stack_Size_Spec` regression test that will ensure that Java stack frames needed for `Vector.map` method call does not exceed **40**.
2024-11-06 11:14:48 +00:00
Jaroslav Tulach
73abe909ef
Use GraphBuilder to construct an alias Graph (#11491) 2024-11-05 18:56:05 +01:00
Hubert Plociniczak
35e5ed53d2
Don't cancel aborted jobs immediately (#11375)
* Don't cancel aborted jobs immediately

Rather than cancelling Futures that capture jobs' logic,
this change introduces a two-level system:

- interrupt all jobs softly via ThreadInterrupted at safepoints
- if safepoint is not executed within some time period or it is
  but the job is still not cancelled, trigger a hard-interrupt
  by cancelling the job explicitly, if possible

Closes #11084.

* Only cancel Future when you mean it

Soft-cancelling a future only to later call it with `mayInterrupt` set
to `true` has no effect in the latter case.
Changed the logic so that interrupting a Future will really enforce it.

Ocassionally some commands should not attempt to run soft cancellations
- we know they will re-execute the program.

* Replace Thread.sleep with Future.get

No while loops etc, it's much easier to reason about what is soft and
hard interrupt supposed to do.

* Better comments/logs

* nit

* PR review

* Make test more robust
2024-11-05 10:33:02 +01:00
Jaroslav Tulach
988316f910
Make Graph.nextId() private (#11486) 2024-11-05 05:21:10 +01:00
Jaroslav Tulach
dd107e0ab1
Ensure EnsoMultiValue returns some Meta.type_of (#11480) 2024-11-04 20:47:25 +01:00
Kaz Wesley
2b3bd2cc90
Move documentation into documentable types (#11441)
Move documentation into documentable types (implements #11302).

# Important Notes
GUI:
- Distinguish expression and statement
- `Ast.Ast` is still present, as the base class for AST objects. Most references to `Ast.Ast` are now references to `Ast.Expression`. Operations on blocks use `Ast.Statement`.
- `Ast.parse` has been replaced with: `Ast.parseExpression`, `Ast.parseStatement`, and `Ast.parseBlock`
- `syncToCode` is internally context-aware; it parses the provided code appropriately depending on whether its AST is an expression, a statement, or the top level of a module.
- Remove `wrappingExpression` / `innerExpression` APIs: Wrapper types have been eliminated; modifier lines are now fields inside parent types.
- Simplify AST printing:
- Fully implemented autospacing in `concreteChildren` implementations; the type returned by `concreteChildren` now ensures that spacing has been fully resolved.
- Eliminate `printBlock` / `printDocs`: `concreteChildren` is now aware of indentation context, and responsible for indentation of its child lines.
- The `Pattern` type is now parameterized to identify the AST type it constructs. The `Pattern.parseExpression` function helps create a `Pattern<Expression>`.
- Refactor `performCollape` for testability.
- e2e tests: Improve table viz test: It still doesn't pass on my Mac, but these changes are necessary if not sufficient.

Compiler (TreeToIr):
- An expression in statement context is now found in an `ExpressionStatement` wrapper.
- Documentation for a `Function` is now found inside the function node.
- Deduplicate some polyglot-function logic.
2024-11-04 15:33:53 +00:00
Jaroslav Tulach
4cb943b5ed
Occurences in Java. Don't expose setters for Scope vars. (#11464)
Another change motivated by work on #11365. Continuation of #11419.
2024-11-01 17:14:10 +00:00
Pavel Marek
536a49f35d
Fix Meta.get_qualified_type_name when run as single file (#11401)
`Meta.get_qualified_type_name` correctly returns fully qualified type name when running a single file from a project with `enso --run Proj/src/Main.enso`.
2024-10-31 15:25:45 +00:00
James Dunkerley
610ee5fdec
Expand and improve pretty for core data types, vector and table. (#11438)
-  Alter default `Any.pretty` so constructor is prefixed with type name (as needed now).
![image](https://github.com/user-attachments/assets/72d5ff2f-b567-47e2-becf-2e4acd4d089d)
-  Tests for `pretty` on `Date`.
- `pretty` for  `Date_Time` and  `Time_Of_Day` improved to not have as much noise.
- `pretty` for  `Period`,  `Date_Range` and  `Range`.
- Added custom `pretty` for  `Vector` and  `Array` as built-in method doesn't call through to overrides.
- Added custom `pretty` for  `Column` and  `Table`.
- Bug fix for `pretty` in `Time_Zone` so calls through to `pretty` of the zone_id to ensure safely escaped.
- Initial `default_widget` for `Date` and `Time_Of_Day`.
- Improve widget for `Date.to_date_time`.
![image](https://github.com/user-attachments/assets/18bc1d88-8ea9-42d0-8a9c-bc873e5d6835)
- `to_text`, `to_display_text` and `pretty` for `Enso_Secret`
![image](https://github.com/user-attachments/assets/d850c109-d1af-4b6f-a450-013c4d137805)
- private constructor for `Enso_Secret` as can't be correctly built directly.
- Use `_` for the testing methods in `HTTP` to clarify they shouldn't be used in general code.
2024-10-31 10:04:52 +00:00
Dmitry Bushev
74220f243a
Dependency tracking between nodes is too coarse grained (#11428)
close #11237

Changelog:
- update: implement special case for a line removal when calculating the changeset

# Important Notes
Note that the graph is still re-calculated when the node is re-added (by pressing `ctrl-z`). The reason is that the engine processes edits on the textual level and there is not enough information to do similar workarounds. The issue becomes irrelevant when we switch to the direct tree manipulation in Ydoc.

https://github.com/user-attachments/assets/c85afde8-6386-44df-82b5-6fb0cca5205b
2024-10-29 15:33:53 +00:00
Jaroslav Tulach
15575b495a
Skeletal PanicExceptionTest and more logging when AssertionError happens (#11393) 2024-10-29 15:47:12 +01:00
Jaroslav Tulach
71acb83e7f
Removing useless GraphOccurrence.Global & some encapsulation (#11419)
Work on #11365 made me realize that `GraphOccurrence.Global` isn't really used anywhere. Simplifying the code by removing it and associated methods.
2024-10-29 10:23:22 +00:00
Dmitry Bushev
d16fd63525
Reload insight script on file change (#11415)
Changelog:
- update: reload insight script when the file was edited
2024-10-28 09:17:53 +00:00
Jaroslav Tulach
48984454e3
Testing current behavior of if/then/else (#11395)
Related to #9165 work. Let's make sure the current behavior of `if`/`then`/`else` is properly tested by a unit test. Extracting test created as part of #11365 to verify it really describes the current behavior.
2024-10-24 15:03:41 +00:00
Jaroslav Tulach
fe45da98d7
Use enso.dev.insight property to turn Insight on (#11385) 2024-10-24 13:56:28 +02:00
Pavel Marek
c8393095b5
Speedup DataflowError.withDefaultTrace (#11153)
Improves the speed of `ExecutionEnvironment.hasContextEnabled`.

# Important Notes
Local speedup of `Map_Error_Benchmark_Vector_ignore.Map_Id_All_Errors` benchmark is roughly ???.
2024-10-24 03:00:38 +00:00
Kaz Wesley
33904912ee
Move annotations into fields of Function and ConstructorDefinition (#11374)
Move annotations into fields of Function and ConstructorDefinition.

# Important Notes
New syntax: Constructor argument-definition lines
- Each argument in a type-constructor definition may be specified on its own (indented) line.

Relaxed syntax: Unparenthesized arguments to annotations
- A generic annotation now uses the rest of the line as its argument expression; the expression no longer needs to be parenthesized.
2024-10-23 20:35:06 +00:00
Jaroslav Tulach
c460342f74
Simplify IGV graph by trimming nodes for code paths that rarely happen (#11381)
Simplifies the IGV graph by removing nodes that shouldn't be there during "normal" execution.
2024-10-23 15:30:48 +00:00
Hubert Plociniczak
b99aa668ef
Fail gracefully when a job is already rejected (#11361)
Noticed a random failure in our tests:
```
  pw:browser [pid=2812009][out] [INFO] [2024-10-16T19:56:04.195] [org.enso.languageserver.protocol.json.JsonConnectionController] Session terminated [1e652e5e-9953-480a-8220-c4b4f068379a]. +32ms
  pw:browser [pid=2812009][err] java.util.concurrent.RejectedExecutionException: Task Future(<not completed>) rejected from java.util.concurrent.ThreadPoolExecutor@6846840b[Terminated, pool size = 0, active threads = 0, queued tasks = 0, completed tasks = 2] +40ms
  pw:browser [pid=2812009][err] 	at java.base/java.util.concurrent.ThreadPoolExecutor$AbortPolicy.rejectedExecution(ThreadPoolExecutor.java:2081) +1ms
  pw:browser [pid=2812009][err] 	at java.base/java.util.concurrent.ThreadPoolExecutor.reject(ThreadPoolExecutor.java:841) +0ms
  pw:browser [pid=2812009][err] 	at java.base/java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1376) +0ms
  pw:browser [pid=2812009][err] 	at scala.library@2.13.11/scala.concurrent.impl.ExecutionContextImpl.execute(ExecutionContextImpl.scala:21) +0ms
Error: 1mpw:browser [pid=2812009][out] [ERROR] [2024-10-16T19:56:04.197] [enso.org.enso.interpreter.service.ExecutionService] An error occurred during execution of AttachVisualizationCmd(visualizationId: 97ea02c1-10fa-4e1a-bd8f-bd03a2c36146,expressionId=fcf199e6-d2b1-44b7-be92-a47545d6a593) command +21ms
  pw:browser [pid=2812009][out] scala.MatchError: null +0ms
  pw:browser [pid=2812009][out] 	at org.enso.runtime.instrument.common/org.enso.interpreter.instrument.command.AttachVisualizationCmd.$anonfun$executeCmd$1(AttachVisualizationCmd.scala:45) +0ms
  pw:browser [pid=2812009][out] 	at scala.library@2.13.11/scala.concurrent.impl.Promise$Transformation.run(Promise.scala:470) +0ms
  pw:browser [pid=2812009][out] 	at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) +0ms
  pw:browser [pid=2812009][out] 	at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) +0ms
  pw:browser [pid=2812009][out] 	at java.base/java.lang.Thread.run(Thread.java:1583) +0ms
  pw:browser [pid=2812009][out] 	at org.graalvm.truffle/com.oracle.truffle.polyglot.PolyglotThread.access$001(PolyglotThread.java:53) +0ms
  pw:browser [pid=2812009][out] 	at org.graalvm.truffle/com.oracle.truffle.polyglot.PolyglotThread$1.execute(PolyglotThread.java:106) +0ms
```
2024-10-23 11:55:05 +02:00
Kaz Wesley
4e4a1e1df2
Move TypeSignature into field of Function (#11364)
Move type-signature lines into `Function` field. Also implements #11293.

Stacked on #11346.
2024-10-22 19:50:14 +00:00
Kaz Wesley
d278ad636c
Replace private modifier node with field on supporting types (#11346)
Eliminate `private` modifier-node: `private` is a field in supporting types, or a single-token node in the case of `private` declarations.

# Important Notes
- Rust parser tests: Switch to a builder-style API for defining expected `Function` ASTs to allow further changes to `Function` fields without rewriting all the tests again.
- TreeToIr: Fix discarded module-level `diag`; add a test that covers module diagnostics.
- Syntax: Disallow `private` methods in function blocks. (Previously this was enforced in the compiler.)
2024-10-22 16:26:00 +00:00
Jaroslav Tulach
a5b223f33b
Benchmark time it takes compile Standard.Base library (#11355)
Benchmark time it takes to `enso --compile ... Standard/Base` library before speeding it up by [caching libraryName of ImportTarget](43021fcef0).
2024-10-21 14:34:38 +00:00
Dmitry Bushev
1fbaeaa767
Unblock the hooks execution (#11359)
close #11231

Changelog:
- fix: do not block during the hooks execution
2024-10-20 18:25:21 +00:00
Hubert Plociniczak
c6ec5c5399
Handle autoscoped constructor args with no UUID (#11354)
* Handle autoscoped constructor args with no UUID

An application involving >1 autoscoped atom constructor arguments
with no ID would lead to a silent type error in GUI. It was silent
because once IdMap gets updated, the original type error disappears and
users are left with a No_Such_Method on a Panic.

The type error may occur because the compiler was inferring the same
UUID for autoscoped constructors. Args with UUID are cached therefore a
type confict might occur on the second (or later) argument.

Added a unit test case demonstrating the problem (previously it would
fail). The search path is now a bit more careful when inferring
arguments.

* One more test
2024-10-18 20:43:18 +02:00
Kaz Wesley
4d4a2990a0
Distinguish assignment/thunk by statement context (#11324)
Align `Assignment`/`Function` distinction in AST with compiler's implemented semantics:
- The ambiguous case `funcOrVar = expression` is now parsed as a `Function` when in a `Type` definition or in the top level of a module. I.e. it is an `Assignment` in contexts where the RHS is evaluated immediately when the binding is evaluated, and a `Function` in contexts where the RHS is evaluated each time the bound name is evaluated.
- `Assignment` statements now may only occur in function bodies.

Correcting this distinction lays the groundwork for #11302.

Other changes:
- Fixed incorrect source code locations for negative literals and negated expressions.

# Important Notes
New APIs:
- The parser now exposes a `parse_block` entry point, which allows parsing input lines as if in the body of a function. The previous entry point has been renamed to `parse_module`.
2024-10-18 17:54:55 +00:00
Jaroslav Tulach
6a506161cb
Make sure unrecognized CLI command message is printed (#11357) 2024-10-18 17:13:02 +02:00
Dmitry Bushev
7522acf925
Node added inside collapsed node is never executed (#11341)
close #11251

Changelog:
- add: `CachePreferences` configuration of the expressions that are marked for caching
- update: Invalidate the `self` keywords in the parent frames on function edit
- update: persistance config

# Important Notes
The demo shows that:

1. The new node created in the collapsed function is highlighted (GUI receives the expression update)
2. When the collapsed function is edited, the nodes in the `main` method are updated correctly

https://github.com/user-attachments/assets/41c406ed-ba76-41c8-9e3f-89ac9ff63c3f
2024-10-18 14:19:50 +00:00
Pavel Marek
f470e9c63c
Set live execution environment for REPL (#11353) 2024-10-18 12:07:26 +02:00
Pavel Marek
fb821303ab
Inline doc comment is a compiler error (#11333)
Inline documentation comment is a syntax error

---------

Co-authored-by: Kaz Wesley <kaz@lambdaverse.org>
2024-10-16 06:24:18 -07:00
Jaroslav Tulach
7b23f77a39
Yield UnsupportedMessageException when context isn't accessible (#11334) 2024-10-16 14:14:27 +02:00
Radosław Waśko
069e2362dc
Revert "Add Meta.engine_version" (#11336) 2024-10-16 12:09:32 +00:00
Pavel Marek
b36fd1c01b
Migrate some passes to Mini passes (#11191)
Gets ready for avoiding IR traversal by introducing _mini passes_ as proposed by #10981:
- creates [MiniPassFactory](762045a357) (that extends common `IRProcessingPass`) to transform an `IR` element to another `IR` element
- modifies `PassManager` to recognize such _mini passes_ and treat them in a special way - by using `MiniIRPass.compile`
- `MiniIRPass.compile` is using `IR.mapExpressions` to traverse the `IR` - alternative approach [withNewChildren](1abc70d33c) rejected for now, see _future work_ for details
- unlike _mega passes_ `IRMiniPass.compile` **does not  recursively** traverse, but with 0964711ba9 it invokes each _mini pass_ at constant stack depth - way better for profiling
- `MiniIRPass.prepare` _works on edges_ since ffd27dfe9b - there is `IRMiniPass prepare(parent, child)` to collect information while pre-order traversing from a particular `IR` parent to a particular `IR` child
- `PassManager` rewritten to group _subsequent mini passes_ together by `MiniIRPass.combine` and really and traverse the `IR` just once - done in 2736a76
- converted to _mini pass_: `LambdaShorthandToLambda`, `OperatorToFunction`, `SectionsToBinOp` and `TailCall`
- tested for 1:1 compatibility by [converting original code to test code](f54ba6d162) and _comparing `IR` produced by old and new_ implementations
2024-10-15 19:26:08 +00:00
Radosław Waśko
21bd05f318
Add Meta.engine_version (#11320)
Numerous times I wasn't sure when running the IDE if I'm running the bundled engine or a development build. Usually this depends on if I launch the standalone IDE or use a development build of project-manager.

Still it's not always obvious, and making sure that your IDE is running the right engine version is very often the first step when debugging issues with e.g. engine changes not showing up properly.

Thus I thought it may be worth to add this method (currently hidden to users in component browser by marking as `PRIVATE`, one has to type it in manually):
![image](https://github.com/user-attachments/assets/13af3df4-49ff-49bb-9b19-601258a8ca02)

I think it should be a helpful tool for debugging.
2024-10-15 13:22:55 +00:00
Pavel Marek
4a2e522935
Show only fields from current atom constructor in the debugger (#11217)
Debugger shows only fields of the current atom constructor: (internal members shown in gray, "public" members shown in bold purple)
![image](https://github.com/user-attachments/assets/21815296-c8aa-4ea2-ae7b-6feac78a221f)

(Note that `static_method` is not displayed as a member of `My_Type` - not in scope of this PR)

# Important Notes
The *interop* contract for `Atom` is changed as follows:
- Members are all methods and fields of the current constructor.
- All methods are internal members.
- If the constructor is project-private, fields are internal members.
- All the members are both readable, and invocable.
- Fields are field getters, that is, they are just methods.
- Fields are not invocable
- Constructors and static methods are **not** members of an atom. They should be members of the type.
- Note that methods used to be atom members before #9692
2024-10-15 10:04:07 +00:00
Hubert Plociniczak
e1da31b2a8
Ensure wrapper projects are listed in aggregates (#11323)
* Ensure wrapper projects are listed in aggregates

Previously, doing clean to deal with weird modularization failures would
have no effect.

* And updated formatting

* More projects

As cherry-picked from https://github.com/enso-org/enso/pull/11321
2024-10-14 20:46:08 +02:00
Radosław Waśko
244effde0c
Enable audit logs for Snowflake backend (#11306)
- Closes #11292
- Tries to fix #11300
2024-10-14 14:30:42 +00:00
Jaroslav Tulach
204b37c6c3
Special handling of last signature in a block (#11289) 2024-10-11 15:38:47 +02:00
Pavel Marek
d9b3c75c5d
Remove TailCall.TailPosition.NotTail metadata. (#11303)
`TailCall.TailPosition.NotTail` metadata is attached to every `IR` element that is not in tail position. Which is true for most IR elements. This is inefficient and unnecessary. This PR removes this metadata and keeps only `TailCall.TailPosition.Tail`. This removes few bytes from `MetadataStorage` from most of IR elements

# Important Notes
To check whether `ir` element is not in tail position, we used to check it with something like this `ir.getMetadata(TailCall) == Some(TailCall.TailPosition.NotTail)`, now, we simply can do it with `ir.getMetadata(TailCall) == None`
2024-10-11 11:17:12 +00:00
Hubert Plociniczak
7f5c0e6ef2
Improve CI feedback when directory is missing (#10608)
* Improve CI feedback when directory is missing

As motivated by https://github.com/enso-org/enso/actions/runs/10006095519/job/27658100782?pr=10577#step:7:2277

* update codeowners

* nit
2024-10-09 16:58:42 +02:00
Dmitry Bushev
78993a0d1a
Run node in a different execution environment (#11173)
close #10719

Changelog:
- add: optional `expressionConfigs` parameter to the `executionContext/recompute` request
- update: `IdExecutionInstrument` allowing to run a single node in a specified execution environment
- refactor: move tests related to the recompute request to a separate test suite. Otherwise the `RuntimeServerTest` is becoming too bloated

# Important Notes
The updated `executionContext/recompute` request.

```typescript
interface ExecutionContextRecomputeParameters {
/** The execution context identifier. */
contextId: ContextId;

/** The expressions that will be invalidated before the execution.
*
*  Only the provided expression ids are invalidated excluding the dependencies.
*/
invalidatedExpressions?: "all" | ExpressionId[];

/** The execution environment that will be used in the execution. */
executionEnvironment?: ExecutionEnvironment;

/** The execution configurations for particular expressions.
*
*  The provided expressions will be invalidated from the cache with the
*  dependencies. The result of the execution will stay in the cache until the
*  cache is invalidated by editing the node or other means.
*/
expressionConfigs?: ExpressionConfig[];
}

interface ExpressionConfig {
/** The expression identifier. */
expressionId: ExpressionId;
/** The execution environment that should be used to run this expression. */
executionEnvironment?: ExecutionEnvironment;
}
```

#### Use cases

- to re-run a single node without re-running the dependent nodes (subtree), put the node id in the `invalidatedExpressions` parameter.
- to re-run a node with dependent nodes (subtree), put the node id in the `expressionConfigs` parameter with empty `executionEnvironment`
- to re-run a node in a different execution environment, put the node  id in the `expressionConfigs` and specify the `executionEnvieronment`
2024-10-09 12:09:45 +00:00
Dmitry Bushev
80317dc950
Eliminate scala.Some allocations (#11259)
close #10973

Changelog:
- update: `IR` interface add nullable `identifiedLocation()`, and create a `location()` getter
- update: IR nodes contain nullable `identifiedLocation` field
- update: persistence of `IdentifiedLocation` supports nullable values

# Important Notes
80% less allocations of `scala.Some`

#### Before

![2024-10-07-131421_1165x185_scrot](https://github.com/user-attachments/assets/1d84ef19-652c-4bef-8d7f-eed63a7b6b50)

#### After

![2024-10-07-131513_1163x186_scrot](https://github.com/user-attachments/assets/3d71a932-7861-4a97-bc84-eafc530dcce3)
2024-10-09 08:54:37 +00:00
Jaroslav Tulach
c85363f425
Compute the exception message sooner than context is closed (#11241) 2024-10-07 14:26:40 +02:00
Hubert Plociniczak
9429a4540a
Do not run visualizations on InterruptedException (#11250)
* Do not run visualizations on InterruptException

There is no point in running visualization for the expression value that
is InterruptedException. The latter is likely to bubble up the exception
or create one that will be confusing to the user.

Closes #11243 and partially addresses some of the symptomes of #11084.

* Add a test for confusing visualization failures

Previously a visualization failure would be reported:
```
Method `+` of type sleep interrupted could not be found.
```

* PR review

Nit
2024-10-07 12:29:17 +02:00
Jaroslav Tulach
837a4d53b5
Avoid NPE on missing @anno name (#11224) 2024-10-02 11:15:41 +02:00