Documentation

Lake.Build.Job

Equations
@[inline]

Resets the job state after a checkpoint (e.g., registering the job). Preserves state that downstream jobs want to depend on while resetting job-local state that should not be inherited by downstream jobs.

Equations
Equations
  • a.merge b = { log := a.log ++ b.log, action := a.action.merge b.action, trace := Lake.mixTrace a.trace b.trace }
@[inline]
Equations
def Lake.JobResult.prependLog {α : Type u_1} (log : Log) (self : JobResult α) :

Add log entries to the beginning of the job's log.

Equations
@[reducible, inline]
abbrev Lake.JobM (α : Type) :

The monad of asynchronous Lake jobs.

While this can be lifted into FetchM, job action should generally be wrapped into an asynchronous job (e.g., via Job.async) instead of being run directly in FetchM.

Equations
Instances For
Equations
Equations
  • One or more equations did not get rendered due to their size.
@[inline]

Record that this job is trying to perform some action.

Equations
@[inline]

Returns the current job's build trace.

Equations
@[inline]

Sets the current job's build trace.

Equations
@[inline]

Mix a trace into the current job's build trace.

Equations
@[inline]

Returns the current job's build trace and removes it from the state.

Equations
@[reducible, inline]
abbrev Lake.SpawnM (α : Type) :

The monad used to spawn asynchronous Lake build jobs. Lifts into FetchM.

Equations
Instances For
@[inline]
def Lake.JobM.runSpawnM {α : Type} (x : SpawnM α) :
JobM α
Equations
@[reducible, inline, deprecated Lake.SpawnM (since := "2024-05-21")]
abbrev Lake.SchedulerM (α : Type) :

The monad used to spawn asynchronous Lake build jobs. Replaced by SpawnM.

Equations
@[implemented_by _private.Lake.Build.Job.0.Lake.Job.toOpaqueImpl]
def Lake.Job.toOpaque {α : Type u_1} (job : Job α) :

Forget the value of a job. Implemented as a no-op cast.

Equations
@[inline]
def Lake.Job.ofTask {α : Type u_1} (task : JobTask α) (caption : String := "") :
Job α
Equations
@[inline]
def Lake.Job.error {α : Type u_1} (log : Log := ) (caption : String := "") :
Job α
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
def Lake.Job.pure {α : Type u_1} (a : α) (log : Log := ) (caption : String := "") :
Job α
Equations
Equations
instance Lake.Job.instInhabited {α : Type u_1} [Inhabited α] :
Equations
@[inline]
def Lake.Job.nop (log : Log := ) (caption : String := "") :
Equations
@[inline]
def Lake.Job.setCaption {α : Type u_1} (caption : String) (job : Job α) :
Job α

Sets the job's caption.

Equations
  • Lake.Job.setCaption caption job = { task := job.task, caption := caption, optional := job.optional }
@[inline]
def Lake.Job.setCaption? {α : Type u_1} (caption : String) (job : Job α) :
Job α

Sets the job's caption if the job's current caption is empty.

Equations
  • Lake.Job.setCaption? caption job = if job.caption.isEmpty = true then { task := job.task, caption := caption, optional := job.optional } else job
@[inline]
def Lake.Job.mapResult {α : Type u_1} {β : Type u_2} (f : JobResult αJobResult β) (self : Job α) (prio : Task.Priority := Task.Priority.default) (sync : Bool := false) :
Job β
Equations
@[inline]
def Lake.Job.mapOk {α : Type u_1} {β : Type u_2} (f : αJobStateJobResult β) (self : Job α) (prio : Task.Priority := Task.Priority.default) (sync : Bool := false) :
Job β
Equations
  • One or more equations did not get rendered due to their size.
@[inline]
def Lake.Job.bindTask {m : Type u_1 → Type u_2} {α : Type u_3} {β : Type u_1} [Monad m] (f : JobTask αm (JobTask β)) (self : Job α) :
m (Job β)
Equations
  • Lake.Job.bindTask f self = do let __do_liftf self.task pure { task := __do_lift, caption := self.caption, optional := self.optional }
@[inline]
def Lake.Job.map {α : Type u_1} {β : Type u_2} (f : αβ) (self : Job α) (prio : Task.Priority := Task.Priority.default) (sync : Bool := false) :
Job β
Equations
Equations
  • One or more equations did not get rendered due to their size.
def Lake.Job.renew {α : Type u_1} (self : Job α) :
Job α

Resets the job's state after a checkpoint (e.g., registering the job). Preserves information that downstream jobs want to depend on while resetting job-local information that should not be inherited by downstream jobs.

Equations
  • One or more equations did not get rendered due to their size.
@[inline]
def Lake.Job.async {α : Type} (act : JobM α) (prio : Task.Priority := Task.Priority.default) :
SpawnM (Job α)

Spawn a job that asynchronously performs act.

Equations
  • One or more equations did not get rendered due to their size.
@[inline]
def Lake.Job.wait {α : Type} (self : Job α) :

Wait a the job to complete and return the result.

Equations
@[inline]
def Lake.Job.wait? {α : Type} (self : Job α) :

Wait for a job to complete and return the produced value. If an error occurred, return none and discarded any logs produced.

Equations
@[inline]
def Lake.Job.await {α : Type} (self : Job α) :

Wait for a job to complete and return the produced value. Logs the job's log and throws if there was an error.

Equations
  • One or more equations did not get rendered due to their size.
def Lake.Job.mapM {α : Type u_1} {β : Type} (self : Job α) (f : αJobM β) (prio : Task.Priority := Task.Priority.default) (sync : Bool := false) :
SpawnM (Job β)

Apply f asynchronously to the job's output.

Equations
  • One or more equations did not get rendered due to their size.
@[reducible, inline, deprecated Lake.Job.mapM (since := "2024-12-06")]
abbrev Lake.Job.bindSync {α : Type u_1} {β : Type} (self : Job α) (f : αJobM β) (prio : Task.Priority := Task.Priority.default) (sync : Bool := false) :
SpawnM (Job β)
Equations
  • self.bindSync f prio sync = self.mapM f prio sync
def Lake.Job.bindM {α : Type u_1} {β : Type} (self : Job α) (f : αJobM (Job β)) (prio : Task.Priority := Task.Priority.default) (sync : Bool := false) :
SpawnM (Job β)

Apply f asynchronously to the job's output and asynchronously await the resulting job.

Equations
  • One or more equations did not get rendered due to their size.
@[reducible, inline, deprecated Lake.Job.bindM (since := "2024-12-06")]
abbrev Lake.Job.bindAsync {α : Type u_1} {β : Type} (self : Job α) (f : αSpawnM (Job β)) (prio : Task.Priority := Task.Priority.default) (sync : Bool := false) :
SpawnM (Job β)
Equations
  • self.bindAsync f prio sync = self.bindM (fun (a : α) => liftM (f a)) prio sync
@[inline]
def Lake.Job.zipResultWith {α : Type u_1} {β : Type u_2} {γ : Type u_3} (f : JobResult αJobResult βJobResult γ) (self : Job α) (other : Job β) (prio : Task.Priority := Task.Priority.default) (sync : Bool := true) :
Job γ

a.zipWith f b produces a new job c that applies f to the results of a and b. The job c errors if either a or b error.

Equations
  • One or more equations did not get rendered due to their size.
@[inline]
def Lake.Job.zipWith {α : Type u_1} {β : Type u_2} {γ : Type u_3} (f : αβγ) (self : Job α) (other : Job β) (prio : Task.Priority := Task.Priority.default) (sync : Bool := true) :
Job γ

a.zipWith f b produces a new job c that applies f to the results of a and b. The job c errors if either a or b error.

Equations
  • One or more equations did not get rendered due to their size.
def Lake.Job.add {α : Type u_1} {β : Type u_2} (self : Job α) (other : Job β) :
Job α

Merges this job with another, discarding its output and trace.

Equations
  • One or more equations did not get rendered due to their size.
def Lake.Job.mix {α : Type u_1} {β : Type u_2} (self : Job α) (other : Job β) :

Merges this job with another, discarding both outputs.

Equations
def Lake.Job.mixList {α : Type u_1} (jobs : List (Job α)) :

Merge a List of jobs into one, discarding their outputs.

Equations
def Lake.Job.mixArray {α : Type u_1} (jobs : Array (Job α)) :

Merge an Array of jobs into one, discarding their outputs.

Equations
def Lake.Job.collectList {α : Type u_1} (jobs : List (Job α)) :
Job (List α)

Merge a List of jobs into one, collecting their outputs into a List.

Equations
def Lake.Job.collectArray {α : Type u_1} (jobs : Array (Job α)) :
Job (Array α)

Merge an Array of jobs into one, collecting their outputs into an Array.

Equations
@[reducible, inline, deprecated Lake.Job (since := "2024-12-06")]
abbrev Lake.BuildJob (α : Type u_1) :
Type u_1

A Lake build job.

Equations
Instances For
@[inline, deprecated "Obsolete." (since := "2024-12-06")]
def Lake.BuildJob.mk {α : Type u_1} (job : Job (α × BuildTrace)) :
Equations
  • One or more equations did not get rendered due to their size.
@[inline, deprecated "Obsolete." (since := "2024-12-06")]
Equations
@[reducible, inline]
abbrev Lake.BuildJob.toJob {α : Type u_1} (self : BuildJob α) :
Job α
Equations
  • self.toJob = self
@[reducible, inline, deprecated Lake.Job.nil (since := "2024-12-06")]
Equations
@[reducible, inline, deprecated Lake.Job.map (since := "2024-12-06")]
abbrev Lake.BuildJob.pure {α : Type u_1} (a : α) :
Equations
Equations
@[reducible, inline, deprecated Lake.Job.map (since := "2024-12-06")]
abbrev Lake.BuildJob.map {α : Type u_1} {β : Type u_2} (f : αβ) (self : BuildJob α) :
Equations
Equations
  • One or more equations did not get rendered due to their size.
@[inline, deprecated "Removed without replacement." (since := "2024-12-06")]
def Lake.BuildJob.mapWithTrace {α : Type u_1} {β : Type u_2} (f : αBuildTraceβ × BuildTrace) (self : BuildJob α) :
Equations
  • One or more equations did not get rendered due to their size.
@[inline, deprecated Lake.Job.mapM (since := "2024-12-06")]
def Lake.BuildJob.bindSync {α : Type u_1} {β : Type} (self : BuildJob α) (f : αBuildTraceJobM (β × BuildTrace)) (prio : Task.Priority := Task.Priority.default) (sync : Bool := false) :
SpawnM (Job β)
Equations
  • One or more equations did not get rendered due to their size.
@[inline, deprecated Lake.Job.bindM (since := "2024-12-06")]
def Lake.BuildJob.bindAsync {α : Type u_1} {β : Type} (self : BuildJob α) (f : αBuildTraceSpawnM (Job β)) (prio : Task.Priority := Task.Priority.default) (sync : Bool := false) :
SpawnM (Job β)
Equations
  • self.bindAsync f prio sync = self.toJob.bindM (fun (a : α) => do let __do_liftLake.getTrace liftM (f a __do_lift)) prio sync
@[reducible, inline, deprecated Lake.Job.wait? (since := "2024-12-06")]
abbrev Lake.BuildJob.wait? {α : Type} (self : BuildJob α) :
Equations
  • self.wait? = self.toJob.wait?
@[reducible, inline, deprecated Lake.Job.add (since := "2024-12-06")]
abbrev Lake.BuildJob.add {α : Type u_1} {β : Type u_2} (self : BuildJob α) (other : BuildJob β) :
Equations
  • self.add other = self.toJob.add other.toJob
@[reducible, inline, deprecated Lake.Job.mix (since := "2024-12-06")]
abbrev Lake.BuildJob.mix {α : Type u_1} {β : Type u_2} (self : BuildJob α) (other : BuildJob β) :
Equations
  • self.mix other = self.toJob.mix other.toJob
@[reducible, inline, deprecated Lake.Job.mixList (since := "2024-12-06")]
abbrev Lake.BuildJob.mixList {α : Type u_1} (jobs : List (BuildJob α)) :
Equations
@[reducible, inline, deprecated Lake.Job.mixArray (since := "2024-12-06")]
abbrev Lake.BuildJob.mixArray {α : Type u_1} (jobs : Array (BuildJob α)) :
Equations
@[reducible, inline, deprecated Lake.Job.zipWith (since := "2024-12-06")]
abbrev Lake.BuildJob.zipWith {α : Type u_1} {β : Type u_2} {γ : Type u_3} (f : αβγ) (self : BuildJob α) (other : BuildJob β) :
Equations
@[reducible, inline, deprecated Lake.Job.collectList (since := "2024-12-06")]
abbrev Lake.BuildJob.collectList {α : Type u_1} (jobs : List (BuildJob α)) :
Equations
@[reducible, inline, deprecated Lake.Job.collectArray (since := "2024-12-06")]
abbrev Lake.BuildJob.collectArray {α : Type u_1} (jobs : Array (BuildJob α)) :
Equations