All notable changes to this project are documented in this file, based on Keep a Changelog.
0.21.0 - 2022-05-11
IOExceptions not being reported to the deserialize failure handler inSerializingStore.
resourcerequirement to0.14.1.commonrequirement to0.11.0.
0.20.0 - 2022-04-04
commonrequirement to0.10.3.resourcerequirement to0.14.0.
- Fix inconsistent store state in very specific task cancellation scenario, which would result in
RuntimeExceptions when deleting unobserved tasks, and added a regression test for it. - Fix same task being deleted multiple times by garbage collection (
deleteUnobservedTasks), resulting in a runtime exception, and added regression tests for it. This happened due to a task depending on another task multiple times with different output stampers.
- Generics in the PIE DSL (#16)
0.19.8 - 2022-03-09
- Moved graph code into a separate project
pie.graph. commonrequirement to0.10.2.
- Calling
Pie.closecausing theStoreto be closed multiple times. - Unnecessary
throws ExceptioninSerializingStoreInMemoryBuffer.closemethod definition. - Don't log observability changes if both top-down and bottom-up are disabled.
0.19.7 - 2021-12-13
- Do not schedule deferred task if it is not affected.
MetricsTracerto have a mode where it automatically resets itself when a new build starts.LoggingTracerto accept aMetricsTracerwhich it uses to log task execution durations.
0.19.6 - 2021-11-23
commonrequirement to0.10.1.
0.19.5 - 2021-11-11
commonrequirement to0.10.0.
0.19.4 - 2021-11-10
- Make it possible to implement a different Java compiler for the
CompileJavatask with theJavaCompilerinterface. resourcerequirement to0.13.2.
0.19.3 - 2021-11-04
commonrequirement to0.9.9.
requireMappingoverloads toExecContextwhich require a task and then transform the output with a mapping function, which is also used as a function output stamper (FuncEqualsOutputStamper). These overloads make it convenient to depend on a subset of the output of a task.
0.19.2 - 2021-10-22
nullbeing set as the output of a new task that failed (due to an exception) or was interrupted, which was then subsequently returned as the output of that task.
0.19.1 - 2021-10-19
- Tasks data for new tasks (i.e., tasks that have not been executed before) not being reset on cancel or failure.
- Task data not being restored when task throws a
Throwable. UncheckedInterruptedExceptionandCanceledExceptionnot being handled as an interrupt/cancel.
0.19.0 - 2021-10-18
Pie#isObserved, useSession#isObservedinstead.Pie#isExplicitlyObserved, useSession#isExplicitlyObservedinstead.Pie#setImplicitToExplicitlyObserved, useSession#setImplicitToExplicitlyObservedinstead.Pie#setCallback, useSession#setCallbackinstead.Pie#removeCallback, useSession#removeCallbackinstead.Pie#dropCallbacks, useSession#dropCallbacksinstead.
resourcerequirement to0.13.0.
Pie#hasBeenExecuted, useSession#hasBeenExecutedinstead.Pie#dropStore, useSession#dropStoreinstead.
Session#setSerializableCallbackfor setting a callback that is serializable, so it can be stored in theStoreto survive recreating of thePieinstance.
0.18.1 - 2021-10-12
- Incorrect task data after task execution fails (due to an exception) or is interrupted. The previous data of the task is now restored.
0.18.0 - 2021-10-11
- The void resource dependency methods in
ExecContextnow return a boolean indicating whether the resource is changed or whether the dependency is new compared to the last execution of the task. resourcerequirement to0.12.0.commonrequirement to0.9.8.
- Tasks can get/set/clear an internal object with
getInternalObject,setInternalObject, andclearInternalObjectonExecContext. Internal objects are stored and serialized along with the PIE store. - Tasks can inspect their previous input, output, and dependencies with
getPreviousInput,getPreviousOutput,getPreviousTaskRequireDeps,getPreviousResourceRequireDeps, andgetPreviousResourceProvideDepsinExecContext.
0.17.0 - 2021-10-01
Serdeand implementations allow passing inClassLoaders for all deserialization methods.SerializingStoreto be instantiated with aSerializingStoreBuilderto reduce the number of its constructors, easing its creation.SerializingStorecan now serialize/deserialize fromBufferedOutputStream/BufferedInputStreaminstead of just resources.commonrequirement to0.9.7.
- In-memory buffer convenience to
SerializingStoreBuilder. MockExecContextto test methods that require anExecContext, which just executes tasks and ignores dependencies.
0.16.8 - 2021-09-20
commonrequirement to0.9.5.Pieto only allow a single session to guarantee thread-safety.
tryNewSessionmethod toPiethat creates a new session if no session exist yet, or returnsOptional.empty()if a session already exists. This is useful for actions that require a session but can be skipped, such as the reference resolution and hover tooltip editor services.
0.16.7 - 2021-09-10
- Validation is now performed immediately after creating a resource dependency, instead of performing this after task execution. This catches a couple of hidden dependencies which were not caught before. For example, requiring a resource before requiring the task that provides it in the same task now causes a hidden dependency error.
- Dependencies are now immediately stored when created. This fixes several issues where a hidden dependency was detected even though at that exact moment, it was not a hidden dependency.
0.16.6 - 2021-09-01
resourcerequirement to0.11.5.commonrequirement to0.9.3.