In [ ]:
. ./nbs_header.ps1
. ./core.ps1
In [ ]:
{ pwsh ../apps/builder/build.ps1 } | Invoke-Block
── markdown ──────────────────────────────────────────────────────────────────── │ # DibParser (Polyglot) ── fsharp ────────────────────────────────────────────────────────────────────── #r @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan dard2.1/FSharp.Control.AsyncSeq.dll" #r @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. 0/System.Reactive.dll" #r @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ netstandard2.0/System.Reactive.Linq.dll" #r @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" #r @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP arsec.dll" #r @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP arsecCS.dll" ── pwsh ──────────────────────────────────────────────────────────────────────── ls ~/.nuget/packages/argu ── [ 183.89ms - stdout ] ─────────────────────────────────────────────────────── │ 6.2.4 │ 6.2.5 │ ── fsharp ────────────────────────────────────────────────────────────────────── #if !INTERACTIVE open Lib #endif ── fsharp ────────────────────────────────────────────────────────────────────── open Common open FParsec open SpiralFileSystem.Operators ── markdown ──────────────────────────────────────────────────────────────────── │ ## escapeCell (test) ── fsharp ────────────────────────────────────────────────────────────────────── //// test let inline escapeCell input = input |> SpiralSm.split "\n" |> Array.map (function | line when line |> SpiralSm.starts_with "\\#!" || line |> SpiralSm.starts_with "\\#r" -> System.Text.RegularExpressions.Regex.Replace (line, "^\\\\#", "#") | line -> line ) |> SpiralSm.concat "\n" ── fsharp ────────────────────────────────────────────────────────────────────── //// test $"a{nl}\\#!magic{nl}b{nl}" |> escapeCell |> _assertEqual ( $"a{nl}#!magic{nl}b{nl}" ) ── [ 75.02ms - stdout ] ──────────────────────────────────────────────────────── │ "a │ #!magic │ b │ " │ │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## magicMarker ── fsharp ────────────────────────────────────────────────────────────────────── let magicMarker : Parser<string, unit> = pstring "#!" ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!magic" |> run magicMarker |> _assertEqual ( Success ("#!", (), Position ("", 2, 1, 3)) ) ── [ 25.29ms - stdout ] ──────────────────────────────────────────────────────── │ Success: "#!" │ │ ── fsharp ────────────────────────────────────────────────────────────────────── //// test "##!magic" |> run magicMarker |> _assertEqual ( Failure ( $"Error in Ln: 1 Col: 1{nl}##!magic{nl}^{nl}Expecting: '#!'{nl}", ParserError ( Position ("", 0, 1, 1), (), ErrorMessageList (ExpectedString "#!") ), () ) ) ── fsharp ────────────────────────────────────────────────────────────────────── ── [ 58.09ms - diagnostics ] ─────────────────────────────────────────────────── │ input.fsx (10,13)-(10,15) typecheck warning This expression uses 'unit' for an 'obj'-typed argument. This will lead to passing 'null' at runtime. This warning may be disabled using '#nowarn "3397". ── [ 58.54ms - stdout ] ──────────────────────────────────────────────────────── │ Failure: │ Error in Ln: 1 Col: 1 │ ##!magic │ ^ │ Expecting: '#!' │ │ │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## magicCommand ── fsharp ────────────────────────────────────────────────────────────────────── let magicCommand = magicMarker >>. manyTill anyChar newline |>> (System.String.Concat >> SpiralSm.trim) ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!magic a" |> run magicCommand |> _assertEqual ( Success ("magic", (), Position ("", 8, 2, 1)) ) ── [ 14.86ms - stdout ] ──────────────────────────────────────────────────────── │ Success: "magic" │ │ ── fsharp ────────────────────────────────────────────────────────────────────── //// test " #!magic a" |> run magicCommand |> _assertEqual ( Failure ( $"Error in Ln: 1 Col: 1{nl} #!magic{nl}^{nl}Expecting: '#!'{nl}", ParserError ( Position ("", 0, 1, 1), (), ErrorMessageList (ExpectedString "#!") ), () ) ) ── fsharp ────────────────────────────────────────────────────────────────────── ── [ 14.43ms - diagnostics ] ─────────────────────────────────────────────────── │ input.fsx (12,13)-(12,15) typecheck warning This expression uses 'unit' for an 'obj'-typed argument. This will lead to passing 'null' at runtime. This warning may be disabled using '#nowarn "3397". ── [ 14.89ms - stdout ] ──────────────────────────────────────────────────────── │ Failure: │ Error in Ln: 1 Col: 1 │ #!magic │ ^ │ Expecting: '#!' │ │ │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## content ── fsharp ────────────────────────────────────────────────────────────────────── let content = (newline >>. magicMarker) <|> (eof >>. preturn "") |> attempt |> lookAhead |> manyTill anyChar |>> (System.String.Concat >> SpiralSm.trim) ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!magic a " |> run content |> _assertEqual ( Success ("#!magic a", (), Position ("", 14, 7, 1)) ) ── [ 13.51ms - stdout ] ──────────────────────────────────────────────────────── │ Success: "#!magic │ │ │ a" │ │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## Output ── fsharp ────────────────────────────────────────────────────────────────────── type Output = | Fs | Md | Spi | Spir ── markdown ──────────────────────────────────────────────────────────────────── │ ## Magic ── fsharp ────────────────────────────────────────────────────────────────────── type Magic = | Fsharp | Markdown | Spiral of Output | Magic of string ── markdown ──────────────────────────────────────────────────────────────────── │ ## kernelOutputs ── fsharp ────────────────────────────────────────────────────────────────────── let inline kernelOutputs magic = match magic with | Fsharp -> [[ Fs ]] | Markdown -> [[ Md ]] | Spiral output -> [[ output ]] | _ -> [[]] ── markdown ──────────────────────────────────────────────────────────────────── │ ## Block ── fsharp ────────────────────────────────────────────────────────────────────── type Block = { magic : Magic content : string } ── markdown ──────────────────────────────────────────────────────────────────── │ ## block ── fsharp ────────────────────────────────────────────────────────────────────── let block = pipe2 magicCommand content (fun magic content -> let magic, content = match magic with | "fsharp" -> Fsharp, content | "markdown" -> Markdown, content | "spiral" -> let output = if content |> SpiralSm.contains "//// real\n" then Spir else Spi let content = if output = Spi then content else content |> SpiralSm.replace "//// real\n\n" "" |> SpiralSm.replace "//// real\n" "" Spiral output, content | magic -> magic |> Magic, content { magic = magic content = content }) ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!magic a " |> run block |> _assertEqual ( Success ( { magic = Magic "magic"; content = "a" }, (), Position ("", 14, 7, 1) ) ) ── [ 23.72ms - stdout ] ──────────────────────────────────────────────────────── │ Success: { magic = Magic "magic" │ content = "a" } │ │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## blocks ── fsharp ────────────────────────────────────────────────────────────────────── let blocks = skipMany newline >>. sepEndBy block (skipMany1 newline) ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!magic1 a \#!magic2 b " |> escapeCell |> run blocks |> _assertEqual ( Success ( [[ { magic = Magic "magic1"; content = "a" } { magic = Magic "magic2"; content = "b" } ]], (), Position ("", 26, 9, 1) ) ) ── [ 23.87ms - stdout ] ──────────────────────────────────────────────────────── │ Success: [{ magic = Magic "magic1" │ content = "a" }; { magic = Magic "magic2" │ content = "b" }] │ │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## formatBlock ── fsharp ────────────────────────────────────────────────────────────────────── let inline formatBlock output (block : Block) = match output, block with | output, { magic = Markdown; content = content } -> let markdownComment = match output with | Spi | Spir -> "/// " | Fs -> "/// " | _ -> "" content |> SpiralSm.split "\n" |> Array.map (SpiralSm.trim_end [[||]]) |> Array.filter (SpiralSm.ends_with " (test)" >> not) |> Array.map (function | "" -> markdownComment | line -> System.Text.RegularExpressions.Regex.Replace (line, "^\\s*", $"$&{markdownComment}") ) |> SpiralSm.concat "\n" | Fs, { magic = Fsharp; content = content } -> let trimmedContent = content |> SpiralSm.trim if trimmedContent |> SpiralSm.contains "//// test\n" || trimmedContent |> SpiralSm.contains "//// ignore\n" then "" else content |> SpiralSm.split "\n" |> Array.filter (SpiralSm.trim_start [[||]] >> SpiralSm.starts_with "#r" >> not) |> SpiralSm.concat "\n" | (Spi | Spir), { magic = Spiral output'; content = content } when output' = output -> let trimmedContent = content |> SpiralSm.trim if trimmedContent |> SpiralSm.contains "//// test\n" || trimmedContent |> SpiralSm.contains "//// ignore\n" then "" else content | _ -> "" ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!markdown a b c \#!markdown c \#!fsharp let a = 1" |> escapeCell |> run block |> function | Success (block, _, _) -> formatBlock Fs block | Failure (msg, _, _) -> failwith msg |> _assertEqual "/// a /// /// b /// /// c" ── [ 30.05ms - stdout ] ──────────────────────────────────────────────────────── │ "/// a │ /// │ /// b │ /// │ /// c" │ │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## formatBlocks ── fsharp ────────────────────────────────────────────────────────────────────── let inline formatBlocks output blocks = blocks |> List.map (fun block -> block, formatBlock output block ) |> List.filter (snd >> (<>) "") |> fun list -> (list, (None, [[]])) ||> List.foldBack (fun (block, content) (lastMagic, acc) -> let lineBreak = if block.magic = Markdown && lastMagic <> Some Markdown && lastMagic <> None then "" else "\n" Some block.magic, $"{content}{lineBreak}" :: acc ) |> snd |> SpiralSm.concat "\n" ── fsharp ────────────────────────────────────────────────────────────────────── //// test "#!markdown a b \#!markdown c \#!fsharp let a = 1 \#!markdown d (test) \#!fsharp //// test let a = 2 \#!markdown e \#!fsharp let a = 3" |> escapeCell |> run blocks |> function | Success (blocks, _, _) -> formatBlocks Fs blocks | Failure (msg, _, _) -> failwith msg |> _assertEqual "/// a /// /// b /// c let a = 1 /// e let a = 3 " ── [ 38.52ms - stdout ] ──────────────────────────────────────────────────────── │ "/// a │ /// │ /// b │ │ /// c │ let a = 1 │ │ /// e │ let a = 3 │ " │ │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## indentBlock ── fsharp ────────────────────────────────────────────────────────────────────── let inline indentBlock (block : Block) = { block with content = block.content |> SpiralSm.split "\n" |> Array.fold (fun (lines, isMultiline) line -> let trimmedLine = line |> SpiralSm.trim if trimmedLine = "" then "" :: lines, isMultiline else let inline singleQuoteLine () = trimmedLine |> Seq.sumBy ((=) '"' >> System.Convert.ToInt32) = 1 && trimmedLine |> SpiralSm.contains @"'""'" |> not && trimmedLine |> SpiralSm.ends_with "{" |> not && trimmedLine |> SpiralSm.ends_with "{|" |> not && trimmedLine |> SpiralSm.starts_with "}" |> not && trimmedLine |> SpiralSm.starts_with "|}" |> not match isMultiline, trimmedLine |> SpiralSm.split_string [[| $"{q}{q}{q}" |]] with | false, [[| _; _ |]] -> $" {line}" :: lines, true | true, [[| _; _ |]] -> line :: lines, false | false, _ when singleQuoteLine () -> $" {line}" :: lines, true | false, _ when line |> SpiralSm.starts_with "#" && block.magic = Fsharp -> line :: lines, false | false, _ -> $" {line}" :: lines, false | true, _ when singleQuoteLine () && line |> SpiralSm.starts_with " " -> $" {line}" :: lines, false | true, _ when singleQuoteLine () -> line :: lines, false | true, _ -> line :: lines, true ) ([[]], false) |> fst |> List.rev |> SpiralSm.concat "\n" } ── markdown ──────────────────────────────────────────────────────────────────── │ ## parse ── fsharp ────────────────────────────────────────────────────────────────────── let inline parse output input = match run blocks input with | Success (blocks, _, _) -> blocks |> List.filter (fun block -> block.magic |> kernelOutputs |> List.contains output || block.magic = Markdown ) |> List.map Some |> fun x -> x @ [[ None ]] |> List.pairwise |> List.choose (function | Some { magic = Markdown } as block, Some { magic = Markdown } -> block | Some { magic = Markdown } as block, Some { magic = magic } when magic |> kernelOutputs |> List.contains output -> block | Some { magic = Markdown } as block, _ when output = Md -> block | Some { magic = Markdown }, _ -> None | Some block, _ -> Some block | _ -> None ) |> List.fold (fun (acc, indent) -> function | { magic = Markdown; content = content } when output = Fs && content |> SpiralSm.starts_with "# " && content |> SpiralSm.ends_with ")" -> let moduleName, namespaceName = System.Text.RegularExpressions.Regex.Match (content, @"# (.*) \((.*)\)$") |> fun m -> m.Groups.[[1]].Value, m.Groups.[[2]].Value let moduleBlock = { magic = Fsharp content = $"#if !INTERACTIVE namespace {namespaceName} #endif module {moduleName} =" } moduleBlock :: acc, (indent + 1) | { magic = magic ; content = content } as block when indent > 0 -> indentBlock block :: acc, indent | block -> block :: acc, indent ) ([[]], 0) |> fst |> List.rev |> Result.Ok | Failure (errorMsg, _, _) -> Result.Error errorMsg ── fsharp ────────────────────────────────────────────────────────────────────── //// test let example1 = $"""#!meta {{"kernelInfo":{{"defaultKernelName":"fsharp","items":[[{{"aliases":[[]],"name": "fsharp"}},{{"aliases":[[]],"name":"fsharp"}}]]}}}} \#!markdown # TestModule (TestNamespace) \#!fsharp \#!import file.dib \#!fsharp \#r "nuget:Expecto" \#!markdown ## ParserLibrary \#!fsharp open System \#!markdown ## x (test) \#!fsharp //// ignore let x = 1 \#!spiral //// test inl x = 1i32 \#!spiral //// real inl x = 2i32 \#!spiral inl x = 3i32 \#!markdown ### TextInput \#!fsharp let str1 = "abc def" let str2 = "abc\ def" let str3 = $"1{{ 1 }}1" let str4 = $"1{{({{| a = 1 |}}).a}}1" let str5 = "abc \ def" let x = match '"' with | '"' -> true | _ -> false let long1 = {q}{q}{q}a{q}{q}{q} let long2 = {q}{q}{q} a {q}{q}{q} \#!fsharp type Position = {{ #if INTERACTIVE line : string #else line : int #endif column : int }}""" |> escapeCell ── fsharp ────────────────────────────────────────────────────────────────────── //// test example1 |> parse Fs |> Result.toOption |> Option.get |> (formatBlocks Fs) |> _assertEqual $"""#if !INTERACTIVE namespace TestNamespace #endif module TestModule = /// ## ParserLibrary open System /// ### TextInput let str1 = "abc def" let str2 = "abc\ def" let str3 = $"1{{ 1 }}1" let str4 = $"1{{({{| a = 1 |}}).a}}1" let str5 = "abc \ def" let x = match '"' with | '"' -> true | _ -> false let long1 = {q}{q}{q}a{q}{q}{q} let long2 = {q}{q}{q} a {q}{q}{q} type Position = {{ #if INTERACTIVE line : string #else line : int #endif column : int }} """ ── [ 84.36ms - stdout ] ──────────────────────────────────────────────────────── │ "#if !INTERACTIVE │ namespace TestNamespace │ #endif │ │ module TestModule = │ │ /// ## ParserLibrary │ open System │ │ /// ### TextInput │ let str1 = "abc │ def" │ │ let str2 = │ "abc\ │ def" │ │ let str3 = │ $"1{ │ 1 │ }1" │ │ let str4 = │ $"1{({| │ a = 1 │ |}).a}1" │ │ let str5 = │ "abc \ │ def" │ │ let x = │ match '"' with │ | '"' -> true │ | _ -> false │ │ let long1 = """a""" │ │ let long2 = │ """ │ a │ """ │ │ type Position = │ { │ #if INTERACTIVE │ line : string │ #else │ line : int │ #endif │ column : int │ } │ " │ │ ── fsharp ────────────────────────────────────────────────────────────────────── //// test example1 |> parse Md |> Result.toOption |> Option.get |> (formatBlocks Md) |> _assertEqual "# TestModule (TestNamespace) ## ParserLibrary ### TextInput " ── [ 74.12ms - stdout ] ──────────────────────────────────────────────────────── │ "# TestModule (TestNamespace) │ │ ## ParserLibrary │ │ ### TextInput │ " │ │ ── fsharp ────────────────────────────────────────────────────────────────────── //// test example1 |> parse Spi |> Result.toOption |> Option.get |> (formatBlocks Spi) |> _assertEqual "/// # TestModule (TestNamespace) /// ## ParserLibrary inl x = 3i32 " ── [ 75.01ms - stdout ] ──────────────────────────────────────────────────────── │ "/// # TestModule (TestNamespace) │ │ /// ## ParserLibrary │ inl x = 3i32 │ " │ │ ── fsharp ────────────────────────────────────────────────────────────────────── //// test example1 |> parse Spir |> Result.toOption |> Option.get |> (formatBlocks Spir) |> _assertEqual "/// # TestModule (TestNamespace) /// ## ParserLibrary inl x = 2i32 " ── [ 76.00ms - stdout ] ──────────────────────────────────────────────────────── │ "/// # TestModule (TestNamespace) │ │ /// ## ParserLibrary │ inl x = 2i32 │ " │ │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## parseDibCode ── fsharp ────────────────────────────────────────────────────────────────────── let inline parseDibCode output file = async { trace Debug (fun () -> "parseDibCode") (fun () -> $"output: {output} / file: {file} / {_locals ()}") let! input = file |> SpiralFileSystem.read_all_text_async match parse output input with | Result.Ok blocks -> return blocks |> formatBlocks output | Result.Error msg -> return failwith msg } ── markdown ──────────────────────────────────────────────────────────────────── │ ## writeDibCode ── fsharp ────────────────────────────────────────────────────────────────────── let inline writeDibCode output path = async { trace Debug (fun () -> "writeDibCode") (fun () -> $"output: {output} / path: {path} / {_locals ()}") let! result = parseDibCode output path let pathDir = path |> System.IO.Path.GetDirectoryName let fileNameWithoutExt = match output, path |> System.IO.Path.GetFileNameWithoutExtension with | Spir, fileNameWithoutExt -> $"{fileNameWithoutExt}_real" | _, fileNameWithoutExt -> fileNameWithoutExt let outputPath = pathDir </> $"{fileNameWithoutExt}.{output |> string |> SpiralSm.to_lower}" do! result |> SpiralFileSystem.write_all_text_async outputPath } ── markdown ──────────────────────────────────────────────────────────────────── │ ## Arguments ── fsharp ────────────────────────────────────────────────────────────────────── [[<RequireQualifiedAccess>]] type Arguments = | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.Mandatory>]] File of file : string * Output interface Argu.IArgParserTemplate with member s.Usage = match s with | File _ -> nameof File ── fsharp ────────────────────────────────────────────────────────────────────── //// test Argu.ArgumentParser.Create<Arguments>().PrintUsage () ── [ 62.71ms - return value ] ────────────────────────────────────────────────── │ "USAGE: dotnet-repl [--help] <file> <fs|md|spi|spir> │ │ FILE: │ │ <file> <fs|md|spi|spir> │ File │ │ OPTIONS: │ │ --help display this list of options. │ " │ ── markdown ──────────────────────────────────────────────────────────────────── │ ## main ── fsharp ────────────────────────────────────────────────────────────────────── let main args = let argsMap = args |> Runtime.parseArgsMap<Arguments> let files = argsMap.[[nameof Arguments.File]] |> List.map (function | Arguments.File (path, output) -> path, output ) files |> List.map (fun (path, output) -> path |> writeDibCode output) |> Async.Parallel |> Async.Ignore |> Async.runWithTimeout 30000 |> function | Some () -> 0 | None -> 1 ── fsharp ────────────────────────────────────────────────────────────────────── //// test let args = System.Environment.GetEnvironmentVariable "ARGS" |> SpiralRuntime.split_args |> Result.toArray |> Array.collect id match args with | [[||]] -> 0 | args -> if main args = 0 then 0 else failwith "main failed" ── [ 116.80ms - return value ] ───────────────────────────────────────────────── │ <div class="dni-plaintext"><pre>0 │ </pre></div><style> │ .dni-code-hint { │ font-style: italic; │ overflow: hidden; │ white-space: nowrap; │ } │ .dni-treeview { │ white-space: nowrap; │ } │ .dni-treeview td { │ vertical-align: top; │ text-align: start; │ } │ details.dni-treeview { │ padding-left: 1em; │ } │ table td { │ text-align: start; │ } │ table tr { │ vertical-align: top; │ margin: 0em 0px; │ } │ table tr td pre │ { │ vertical-align: top !important; │ margin: 0em 0px !important; │ } │ table th { │ text-align: start; │ } │ </style> ── [ 117.50ms - stdout ] ─────────────────────────────────────────────────────── │ 00:00:02 d #1 writeDibCode / output: Fs / path: Builder.dib │ 00:00:02 d #2 parseDibCode / output: Fs / file: Builder.dib │ 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "Builder.dib"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None; stderr = true } } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ # Builder (Polyglot) > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan > dard2.1/FSharp.Control.AsyncSeq.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. > 0/System.Reactive.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ > netstandard2.0/System.Reactive.Linq.dll" > #r > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > #if !INTERACTIVE > open Lib > #endif > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Common > open SpiralFileSystem.Operators > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## buildProject > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline buildProject runtime outputDir path = async { > let fullPath = path |> System.IO.Path.GetFullPath > let fileDir = fullPath |> System.IO.Path.GetDirectoryName > let extension = fullPath |> System.IO.Path.GetExtension > > trace Debug > (fun () -> "buildProject") > (fun () -> $"fullPath: {fullPath} / {_locals ()}") > > match extension with > | ".fsproj" -> () > | _ -> failwith "Invalid project file" > > let runtimes = > runtime > |> Option.map List.singleton > |> Option.defaultValue [[ "linux-x64"; "win-x64" ]] > > let outputDir = outputDir |> Option.defaultValue "dist" > > let! exitCodes = > runtimes > |> List.map (fun runtime -> async { > let command = $@"dotnet publish ""{fullPath}"" --configuration > Release --output ""{outputDir}"" --runtime {runtime}" > let! exitCode, _result = > SpiralRuntime.execution_options (fun x -> > { x with > l0 = command > l6 = Some fileDir > } > ) > |> SpiralRuntime.execute_with_options_async > return exitCode > }) > |> Async.Sequential > |> Async.map Array.sum > > if "CI" |> System.Environment.GetEnvironmentVariable |> > System.String.IsNullOrEmpty |> not then > do! fileDir </> "bin" |> SpiralFileSystem.delete_directory_async |> > Async.Ignore > do! fileDir </> "obj" |> SpiralFileSystem.delete_directory_async |> > Async.Ignore > > return exitCodes > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## persistCodeProject > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline persistCodeProject packages modules name hash code = async { > trace Debug > (fun () -> "persistCodeProject") > (fun () -> $"packages: {packages} / modules: {modules} / name: {name} / > hash: {hash} / code.Length: {code |> String.length} / {_locals ()}") > > let workspaceRoot = SpiralFileSystem.get_workspace_root () > > let targetDir = > let targetDir = workspaceRoot </> "target/Builder" </> name > match hash with > | Some hash -> targetDir </> "packages" </> hash > | None -> targetDir > targetDir |> System.IO.Directory.CreateDirectory |> ignore > > let filePath = targetDir </> $"{name}.fs" |> System.IO.Path.GetFullPath > do! code |> SpiralFileSystem.write_all_text_exists filePath > > let modulesCode = > modules > |> List.map (fun path -> $"""<Compile Include="{workspaceRoot </> path}" > />""") > |> SpiralSm.concat "\n " > > let fsprojPath = targetDir </> $"{name}.fsproj" > let fsprojCode = $"""<Project Sdk="Microsoft.NET.Sdk"> > <PropertyGroup> > <TargetFramework>net9.0</TargetFramework> > <LangVersion>preview</LangVersion> > <RollForward>Major</RollForward> > <TargetLatestRuntimePatch>true</TargetLatestRuntimePatch> > <ServerGarbageCollection>true</ServerGarbageCollection> > <ConcurrentGarbageCollection>true</ConcurrentGarbageCollection> > <PublishAot>false</PublishAot> > <PublishTrimmed>false</PublishTrimmed> > <PublishSingleFile>true</PublishSingleFile> > <SelfContained>true</SelfContained> > <Version>0.0.1-alpha.1</Version> > <OutputType>Exe</OutputType> > </PropertyGroup> > > <PropertyGroup Condition="$([[MSBuild]]::IsOSPlatform('FreeBSD'))"> > <DefineConstants>_FREEBSD</DefineConstants> > </PropertyGroup> > > <PropertyGroup Condition="$([[MSBuild]]::IsOSPlatform('Linux'))"> > <DefineConstants>_LINUX</DefineConstants> > </PropertyGroup> > > <PropertyGroup Condition="$([[MSBuild]]::IsOSPlatform('OSX'))"> > <DefineConstants>_OSX</DefineConstants> > </PropertyGroup> > > <PropertyGroup Condition="$([[MSBuild]]::IsOSPlatform('Windows'))"> > <DefineConstants>_WINDOWS</DefineConstants> > </PropertyGroup> > > <ItemGroup> > {modulesCode} > <Compile Include="{filePath}" /> > </ItemGroup> > > <ItemGroup> > <FrameworkReference Include="Microsoft.AspNetCore.App" /> > </ItemGroup> > > <Import Project="{workspaceRoot}/.paket/Paket.Restore.targets" /> > </Project> > """ > do! fsprojCode |> SpiralFileSystem.write_all_text_exists fsprojPath > > let paketReferencesPath = targetDir </> "paket.references" > let paketReferencesCode = > "FSharp.Core" :: packages > |> SpiralSm.concat "\n" > do! paketReferencesCode |> SpiralFileSystem.write_all_text_exists > paketReferencesPath > > return fsprojPath > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## buildCode > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline buildCode runtime packages modules outputDir name code = async { > let! fsprojPath = code |> persistCodeProject packages modules name None > let! exitCode = fsprojPath |> buildProject runtime outputDir > if exitCode <> 0 then > trace Critical > (fun () -> "buildCode") > (fun () -> $"code: {code |> SpiralSm.ellipsis_end 400} / {_locals > ()}") > return exitCode > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "1 + 1 |> ignore" > |> buildCode None [[]] [[]] None "test1" > |> Async.runWithTimeout 300000 > |> _assertEqual (Some 0) > > ── [ 9.31s - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:01 d #1 persistCodeProject / packages: [] / > modules: [] / name: test1 / hash: / code.Length: 15 > │ 00:00:01 d #2 buildProject / fullPath: > /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj > │ 00:00:03 d #1 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ "publish > "/home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj" > --configuration Release --output "dist" --runtime linux-x64"; options = { > command = dotnet publish > "/home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj" > --configuration Release --output "dist" --runtime linux-x64; cancellation_token > = None; environment_variables = [||]; on_line = None; stdin = None; trace = > true; working_directory = Some > "/home/runner/work/polyglot/polyglot/target/Builder/test1"; stderr = true } } > │ 00:00:04 v #2 > Determining projects to restore... > │ 00:00:04 v #3 > Paket version > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 > │ 00:00:04 v #4 > The last full restore is still up to > date. Nothing left to do. > │ 00:00:04 v #5 > Total time taken: 0 milliseconds > │ 00:00:04 v #6 > Paket version > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 > │ 00:00:05 v #7 > Restoring > /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj > │ 00:00:05 v #8 > Starting restore process. > │ 00:00:05 v #9 > Total time taken: 0 milliseconds > │ 00:00:05 v #10 > Restored > /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj (in 270 > ms). > │ 00:00:07 v #11 > > /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fs(1,16): warning > FS0988: Main module of program is empty: nothing will happen when it is run > [/home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj] > │ 00:00:08 v #12 > test1 -> > /home/runner/work/polyglot/polyglot/target/Builder/test1/bin/Release/net9.0/linu > x-x64/test1.dll > │ 00:00:08 v #13 > test1 -> > /home/runner/work/polyglot/polyglot/target/Builder/test1/dist > │ 00:00:08 d #14 runtime.execute_with_options_async / { > exit_code = 0; output_length = 911; options = { command = dotnet publish > "/home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj" > --configuration Release --output "dist" --runtime linux-x64; cancellation_token > = None; environment_variables = [||]; on_line = None; stdin = None; trace = > true; working_directory = Some > "/home/runner/work/polyglot/polyglot/target/Builder/test1"; stderr = true } } > │ 00:00:08 d #15 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ "publish > "/home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj" > --configuration Release --output "dist" --runtime win-x64"; options = { command > = dotnet publish > "/home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj" > --configuration Release --output "dist" --runtime win-x64; cancellation_token = > None; environment_variables = [||]; on_line = None; stdin = None; trace = true; > working_directory = Some > "/home/runner/work/polyglot/polyglot/target/Builder/test1"; stderr = true } } > │ 00:00:09 v #16 > Determining projects to restore... > │ 00:00:09 v #17 > Paket version > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 > │ 00:00:09 v #18 > The last full restore is still up to > date. Nothing left to do. > │ 00:00:09 v #19 > Total time taken: 0 milliseconds > │ 00:00:10 v #20 > Restored > /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj (in 238 > ms). > │ 00:00:11 v #21 > > /home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fs(1,16): warning > FS0988: Main module of program is empty: nothing will happen when it is run > [/home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj] > │ 00:00:12 v #22 > test1 -> > /home/runner/work/polyglot/polyglot/target/Builder/test1/bin/Release/net9.0/win- > x64/test1.dll > │ 00:00:12 v #23 > test1 -> > /home/runner/work/polyglot/polyglot/target/Builder/test1/dist > │ 00:00:12 d #24 runtime.execute_with_options_async / { > exit_code = 0; output_length = 701; options = { command = dotnet publish > "/home/runner/work/polyglot/polyglot/target/Builder/test1/test1.fsproj" > --configuration Release --output "dist" --runtime win-x64; cancellation_token = > None; environment_variables = [||]; on_line = None; stdin = None; trace = true; > working_directory = Some > "/home/runner/work/polyglot/polyglot/target/Builder/test1"; stderr = true } } > │ Some 0 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "1 + a |> ignore" > |> buildCode None [[]] [[]] None "test2" > |> Async.runWithTimeout 300000 > |> _assertEqual (Some 2) > > ── [ 6.97s - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:10 d #3 persistCodeProject / packages: [] / > modules: [] / name: test2 / hash: / code.Length: 15 > │ 00:00:10 d #4 buildProject / fullPath: > /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj > │ 00:00:12 d #25 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ "publish > "/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj" > --configuration Release --output "dist" --runtime linux-x64"; options = { > command = dotnet publish > "/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj" > --configuration Release --output "dist" --runtime linux-x64; cancellation_token > = None; environment_variables = [||]; on_line = None; stdin = None; trace = > true; working_directory = Some > "/home/runner/work/polyglot/polyglot/target/Builder/test2"; stderr = true } } > │ 00:00:13 v #26 > Determining projects to restore... > │ 00:00:13 v #27 > Paket version > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 > │ 00:00:13 v #28 > The last full restore is still up to > date. Nothing left to do. > │ 00:00:13 v #29 > Total time taken: 0 milliseconds > │ 00:00:14 v #30 > Paket version > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 > │ 00:00:14 v #31 > Restoring > /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj > │ 00:00:14 v #32 > Starting restore process. > │ 00:00:14 v #33 > Total time taken: 0 milliseconds > │ 00:00:15 v #34 > Restored > /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj (in 238 > ms). > │ 00:00:16 v #35 > > /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fs(1,5): error > FS0039: The value or constructor 'a' is not defined. > [/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj] > │ 00:00:16 d #36 runtime.execute_with_options_async / { > exit_code = 1; output_length = 704; options = { command = dotnet publish > "/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj" > --configuration Release --output "dist" --runtime linux-x64; cancellation_token > = None; environment_variables = [||]; on_line = None; stdin = None; trace = > true; working_directory = Some > "/home/runner/work/polyglot/polyglot/target/Builder/test2"; stderr = true } } > │ 00:00:16 d #37 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ "publish > "/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj" > --configuration Release --output "dist" --runtime win-x64"; options = { command > = dotnet publish > "/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj" > --configuration Release --output "dist" --runtime win-x64; cancellation_token = > None; environment_variables = [||]; on_line = None; stdin = None; trace = true; > working_directory = Some > "/home/runner/work/polyglot/polyglot/target/Builder/test2"; stderr = true } } > │ 00:00:17 v #38 > Determining projects to restore... > │ 00:00:17 v #39 > Paket version > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 > │ 00:00:17 v #40 > The last full restore is still up to > date. Nothing left to do. > │ 00:00:17 v #41 > Total time taken: 0 milliseconds > │ 00:00:18 v #42 > Restored > /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj (in 241 > ms). > │ 00:00:19 v #43 > > /home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fs(1,5): error > FS0039: The value or constructor 'a' is not defined. > [/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj] > │ 00:00:19 d #44 runtime.execute_with_options_async / { > exit_code = 1; output_length = 496; options = { command = dotnet publish > "/home/runner/work/polyglot/polyglot/target/Builder/test2/test2.fsproj" > --configuration Release --output "dist" --runtime win-x64; cancellation_token = > None; environment_variables = [||]; on_line = None; stdin = None; trace = true; > working_directory = Some > "/home/runner/work/polyglot/polyglot/target/Builder/test2"; stderr = true } } > │ 00:00:17 c #5 buildCode / code: 1 + a |> ignore > │ Some 2 > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## readFile > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline readFile path = async { > let! code = path |> SpiralFileSystem.read_all_text_async > > let code = System.Text.RegularExpressions.Regex.Replace ( > code, > @"( *)(let\s+main\s+\w+\s*=)", > fun m -> m.Groups.[[1]].Value + "[[<EntryPoint>]]\n" + > m.Groups.[[1]].Value + m.Groups.[[2]].Value > ) > > let codeTrim = code |> SpiralSm.trim_end [[||]] > return > if codeTrim |> SpiralSm.ends_with "\n()" > then codeTrim |> SpiralSm.slice 0 ((codeTrim |> String.length) - 3) > else code > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## buildFile > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline buildFile runtime packages modules path = async { > let fullPath = path |> System.IO.Path.GetFullPath > let dir = fullPath |> System.IO.Path.GetDirectoryName > let name = fullPath |> System.IO.Path.GetFileNameWithoutExtension > let! code = fullPath |> readFile > return! code |> buildCode runtime packages modules (dir </> "dist" |> Some) > name > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## persistFile > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline persistFile packages modules path = async { > let fullPath = path |> System.IO.Path.GetFullPath > let name = fullPath |> System.IO.Path.GetFileNameWithoutExtension > let! code = fullPath |> readFile > return! code |> persistCodeProject packages modules name None > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## Arguments > > ── fsharp ────────────────────────────────────────────────────────────────────── > [[<RequireQualifiedAccess>]] > type Arguments = > | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.ExactlyOnce>]] > Path of path : string > | [[<Argu.ArguAttributes.Unique>]] Packages of packages : string list > | [[<Argu.ArguAttributes.Unique>]] Modules of modules : string list > | [[<Argu.ArguAttributes.Unique>]] Runtime of runtime : string > | [[<Argu.ArguAttributes.Unique>]] Persist_Only > > interface Argu.IArgParserTemplate with > member s.Usage = > match s with > | Path _ -> nameof Path > | Packages _ -> nameof Packages > | Modules _ -> nameof Modules > | Runtime _ -> nameof Runtime > | Persist_Only -> nameof Persist_Only > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > Argu.ArgumentParser.Create<Arguments>().PrintUsage () > > ── [ 75.86ms - return value ] ────────────────────────────────────────────────── > │ "USAGE: dotnet-repl [--help] [--packages [<packages>...]] > │ [--modules [<modules>...]] [--runtime > <runtime>] > │ [--persist-only] <path> > │ > │ PATH: > │ > │ <path> Path > │ > │ OPTIONS: > │ > │ --packages [<packages>...] > │ Packages > │ --modules [<modules>...] > │ Modules > │ --runtime <runtime> Runtime > │ --persist-only Persist_Only > │ --help display this list of options. > │ " > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## main > > ── fsharp ────────────────────────────────────────────────────────────────────── > let main args = > let argsMap = args |> Runtime.parseArgsMap<Arguments> > > let path = > match argsMap.[[nameof Arguments.Path]] with > | [[ Arguments.Path path ]] -> Some path > | _ -> None > |> Option.get > > let packages = > match argsMap |> Map.tryFind (nameof Arguments.Packages) with > | Some [[ Arguments.Packages packages ]] -> packages > | _ -> [[]] > > let modules = > match argsMap |> Map.tryFind (nameof Arguments.Modules) with > | Some [[ Arguments.Modules modules ]] -> modules > | _ -> [[]] > > let runtime = > match argsMap |> Map.tryFind (nameof Arguments.Runtime) with > | Some [[ Arguments.Runtime runtime ]] -> Some runtime > | _ -> None > > let persistOnly = argsMap |> Map.containsKey (nameof Arguments.Persist_Only) > > if persistOnly > then path |> persistFile packages modules |> Async.map (fun _ -> 0) > else path |> buildFile runtime packages modules > |> Async.runWithTimeout (60001 * 60 * 24) > |> function > | Some exitCode -> exitCode > | None -> 1 > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let args = > System.Environment.GetEnvironmentVariable "ARGS" > |> SpiralRuntime.split_args > |> Result.toArray > |> Array.collect id > > match args with > | [[||]] -> 0 > | args -> if main args = 0 then 0 else failwith "main failed" > > ── [ 14.19s - return value ] ─────────────────────────────────────────────────── > │ <div class="dni-plaintext"><pre>0 > │ </pre></div><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 14.19s - stdout ] ───────────────────────────────────────────────────────── > │ 00:00:18 d #6 persistCodeProject / packages: [Argu; > FSharp.Control.AsyncSeq; System.Reactive.Linq] / modules: > [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; > deps/spiral/lib/spiral/crypto.fsx; ... ] / name: Builder / hash: / code.Length: > 8673 > │ 00:00:18 d #7 buildProject / fullPath: > /home/runner/work/polyglot/polyglot/target/Builder/Builder/Builder.fsproj > │ 00:00:20 d #45 runtime.execute_with_options_async / { > file_name = dotnet; arguments = US5_0 > │ "publish > "/home/runner/work/polyglot/polyglot/target/Builder/Builder/Builder.fsproj" > --configuration Release --output > "/home/runner/work/polyglot/polyglot/apps/builder/dist" --runtime linux-x64"; > options = { command = dotnet publish > "/home/runner/work/polyglot/polyglot/target/Builder/Builder/Builder.fsproj" > --configuration Release --output > "/home/runner/work/polyglot/polyglot/apps/builder/dist" --runtime linux-x64; > cancellation_token = None; environment_variables = [||]; on_line = None; stdin = > None; trace = true; working_directory = Some > "/home/runner/work/polyglot/polyglot/target/Builder/Builder"; stderr = true } } > │ 00:00:20 v #46 > Determining projects to restore... > │ 00:00:21 v #47 > Paket version > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 > │ 00:00:21 v #48 > The last full restore is still up to > date. Nothing left to do. > │ 00:00:21 v #49 > Total time taken: 0 milliseconds > │ 00:00:21 v #50 > Paket version > 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 > │ 00:00:21 v #51 > Restoring > /home/runner/work/polyglot/polyglot/target/Builder/Builder/Builder.fsproj > │ 00:00:21 v #52 > Starting restore process. > │ 00:00:21 v #53 > Total time taken: 0 milliseconds > │ 00:00:22 v #54 > Restored > /home/runner/work/polyglot/polyglot/target/Builder/Builder/Builder.fsproj (in > 260 ms). > │ 00:00:33 v #55 > Builder -> > /home/runner/work/polyglot/polyglot/target/Builder/Builder/bin/Release/net9.0/li > nux-x64/Builder.dll > │ 00:00:34 v #56 > Builder -> > /home/runner/work/polyglot/polyglot/apps/builder/dist > │ 00:00:34 d #57 runtime.execute_with_options_async / { > exit_code = 0; output_length = 690; options = { command = dotnet publish > "/home/runner/work/polyglot/polyglot/target/Builder/Builder/Builder.fsproj" > --configuration Release --output > "/home/runner/work/polyglot/polyglot/apps/builder/dist" --runtime linux-x64; > cancellation_token = None; environment_variables = [||]; on_line = None; stdin = > None; trace = true; working_directory = Some > "/home/runner/work/polyglot/polyglot/target/Builder/Builder"; stderr = true } } > │ 00:00:47 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 27408 } 00:00:47 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:00:48 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.ipynb to html 00:00:48 v #6 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:48 v #7 ! validate(nb) 00:00:48 v #8 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:48 v #9 ! return _pygments_highlight( 00:00:48 v #10 ! [NbConvertApp] Writing 337247 bytes to /home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.html 00:00:48 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 904 } 00:00:48 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 904 } 00:00:48 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/builder/Builder.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:00:49 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:49 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:49 d #16 spiral.run / dib / { exit_code = 0; result_length = 28371 } polyglot/apps/builder/build.ps1 / $env:CI:'true'
In [ ]:
{ pwsh ../deps/spiral/apps/spiral/build.ps1 -fast 1 -SkipFsx 1 } | Invoke-Block
spiral/apps/spiral/build.ps1 / ScriptDir: /home/runner/work/polyglot/polyglot/deps/spiral/apps/spiral / ResolvedScriptDir: /home/runner/work/polyglot/spiral/apps/spiral 00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: spiral / hash: / code.Length: 2047940 spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: /home/runner/work/polyglot/polyglot/target/Builder/spiral polyglot/scripts/core.ps1/ResolveLink #4 / Path: /home/runner/work/polyglot/polyglot/deps/spiral/deps/polyglot/deps/spiral/lib/spiral/../../deps/polyglot / parent_target: / path_target: /home/runner/work/polyglot/polyglot / parent: /home/runner/work/polyglot/polyglot/deps/spiral/deps/polyglot/deps/spiral/lib/spiral/../../deps / End: polyglot spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: /home/runner/work/polyglot/polyglot/target/Builder/spiral / ProjectName: spiral / Language: rs / Runtime: / root: /home/runner/work/polyglot/polyglot Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha) Thanks to the contributor! @justinjstark Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target/Builder/spiral/spiral.fsproj... Project and references (14 source files) parsed in 3074ms Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Started Fable compilation... Fable compilation finished in 13837ms ./deps/spiral/lib/spiral/common.fsx(2339,0): (2339,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/sm.fsx(561,0): (561,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/async_.fsx(252,0): (252,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/threading.fsx(139,0): (139,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/crypto.fsx(2569,0): (2569,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/date_time.fsx(2553,0): (2553,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/platform.fsx(122,0): (122,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/networking.fsx(5637,0): (5637,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/trace.fsx(2897,0): (2897,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/runtime.fsx(9581,0): (9581,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/file_system.fsx(21240,0): (21240,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! spiral/apps/spiral/build.ps1 / path: /home/runner/work/polyglot/polyglot/target/Builder/spiral/target/rs/spiral.rs spiral/apps/spiral/build.ps1 / $projectName: spiral / $env:CI:'true' Compiling spiral v0.0.1 (/home/runner/work/polyglot/spiral/apps/spiral) Finished `release` profile [optimized] target(s) in 18.04s
In [ ]:
{ pwsh ../apps/parser/build.ps1 } | Invoke-Block
00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "DibParser.dib"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None; stderr = true } } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ # DibParser (Polyglot) > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan > dard2.1/FSharp.Control.AsyncSeq.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. > 0/System.Reactive.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ > netstandard2.0/System.Reactive.Linq.dll" > #r > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > #r > @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP > arsec.dll" > #r > @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP > arsecCS.dll" > > ── pwsh ──────────────────────────────────────────────────────────────────────── > ls ~/.nuget/packages/argu > > ── [ 179.00ms - stdout ] ─────────────────────────────────────────────────────── > │ 6.2.4 > │ 6.2.5 > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > #if !INTERACTIVE > open Lib > #endif > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Common > open FParsec > open SpiralFileSystem.Operators > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## escapeCell (test) > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let inline escapeCell input = > input > |> SpiralSm.split "\n" > |> Array.map (function > | line when line |> SpiralSm.starts_with "\\#!" || line |> > SpiralSm.starts_with "\\#r" -> > System.Text.RegularExpressions.Regex.Replace (line, "^\\\\#", "#") > | line -> line > ) > |> SpiralSm.concat "\n" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > $"a{nl}\\#!magic{nl}b{nl}" > |> escapeCell > |> _assertEqual ( > $"a{nl}#!magic{nl}b{nl}" > ) > > ── [ 41.78ms - stdout ] ──────────────────────────────────────────────────────── > │ "a > │ #!magic > │ b > │ " > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## magicMarker > > ── fsharp ────────────────────────────────────────────────────────────────────── > let magicMarker : Parser<string, unit> = pstring "#!" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "#!magic" > |> run magicMarker > |> _assertEqual ( > Success ("#!", (), Position ("", 2, 1, 3)) > ) > > ── [ 25.77ms - stdout ] ──────────────────────────────────────────────────────── > │ Success: "#!" > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "##!magic" > |> run magicMarker > |> _assertEqual ( > Failure ( > $"Error in Ln: 1 Col: 1{nl}##!magic{nl}^{nl}Expecting: '#!'{nl}", > ParserError ( > Position ("", 0, 1, 1), > (), > ErrorMessageList (ExpectedString "#!") > ), > () > ) > ) > > ── fsharp ────────────────────────────────────────────────────────────────────── > ── [ 53.75ms - diagnostics ] ─────────────────────────────────────────────────── > │ input.fsx (10,13)-(10,15) typecheck warning This expression > uses 'unit' for an 'obj'-typed argument. This will lead to passing 'null' at > runtime. This warning may be disabled using '#nowarn "3397". > > ── [ 54.20ms - stdout ] ──────────────────────────────────────────────────────── > │ Failure: > │ Error in Ln: 1 Col: 1 > │ ##!magic > │ ^ > │ Expecting: '#!' > │ > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## magicCommand > > ── fsharp ────────────────────────────────────────────────────────────────────── > let magicCommand = > magicMarker > >>. manyTill anyChar newline > |>> (System.String.Concat >> SpiralSm.trim) > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "#!magic > > a" > |> run magicCommand > |> _assertEqual ( > Success ("magic", (), Position ("", 8, 2, 1)) > ) > > ── [ 14.28ms - stdout ] ──────────────────────────────────────────────────────── > │ Success: "magic" > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > " #!magic > > a" > |> run magicCommand > |> _assertEqual ( > Failure ( > $"Error in Ln: 1 Col: 1{nl} #!magic{nl}^{nl}Expecting: '#!'{nl}", > ParserError ( > Position ("", 0, 1, 1), > (), > ErrorMessageList (ExpectedString "#!") > ), > () > ) > ) > > ── fsharp ────────────────────────────────────────────────────────────────────── > ── [ 13.82ms - diagnostics ] ─────────────────────────────────────────────────── > │ input.fsx (12,13)-(12,15) typecheck warning This expression > uses 'unit' for an 'obj'-typed argument. This will lead to passing 'null' at > runtime. This warning may be disabled using '#nowarn "3397". > > ── [ 14.30ms - stdout ] ──────────────────────────────────────────────────────── > │ Failure: > │ Error in Ln: 1 Col: 1 > │ #!magic > │ ^ > │ Expecting: '#!' > │ > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## content > > ── fsharp ────────────────────────────────────────────────────────────────────── > let content = > (newline >>. magicMarker) <|> (eof >>. preturn "") > |> attempt > |> lookAhead > |> manyTill anyChar > |>> (System.String.Concat >> SpiralSm.trim) > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "#!magic > > > a > > > " > |> run content > |> _assertEqual ( > Success ("#!magic > > > a", (), Position ("", 14, 7, 1)) > ) > > ── [ 12.93ms - stdout ] ──────────────────────────────────────────────────────── > │ Success: "#!magic > │ > │ > │ a" > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## Output > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Output = > | Fs > | Md > | Spi > | Spir > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## Magic > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Magic = > | Fsharp > | Markdown > | Spiral of Output > | Magic of string > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## kernelOutputs > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline kernelOutputs magic = > match magic with > | Fsharp -> [[ Fs ]] > | Markdown -> [[ Md ]] > | Spiral output -> [[ output ]] > | _ -> [[]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## Block > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Block = > { > magic : Magic > content : string > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## block > > ── fsharp ────────────────────────────────────────────────────────────────────── > let block = > pipe2 > magicCommand > content > (fun magic content -> > let magic, content = > match magic with > | "fsharp" -> Fsharp, content > | "markdown" -> Markdown, content > | "spiral" -> > let output = if content |> SpiralSm.contains "//// real\n" > then Spir else Spi > let content = > if output = Spi > then content > else > content > |> SpiralSm.replace "//// real\n\n" "" > |> SpiralSm.replace "//// real\n" "" > Spiral output, content > | magic -> magic |> Magic, content > { > magic = magic > content = content > }) > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "#!magic > > > a > > > " > |> run block > |> _assertEqual ( > Success ( > { magic = Magic "magic"; content = "a" }, > (), > Position ("", 14, 7, 1) > ) > ) > > ── [ 23.90ms - stdout ] ──────────────────────────────────────────────────────── > │ Success: { magic = Magic "magic" > │ content = "a" } > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## blocks > > ── fsharp ────────────────────────────────────────────────────────────────────── > let blocks = > skipMany newline > >>. sepEndBy block (skipMany1 newline) > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > > "#!magic1 > > a > > \#!magic2 > > b > > " > |> escapeCell > |> run blocks > |> _assertEqual ( > Success ( > [[ > { magic = Magic "magic1"; content = "a" } > { magic = Magic "magic2"; content = "b" } > ]], > (), > Position ("", 26, 9, 1) > ) > ) > > ── [ 23.68ms - stdout ] ──────────────────────────────────────────────────────── > │ Success: [{ magic = Magic "magic1" > │ content = "a" }; { magic = Magic "magic2" > │ content = "b" }] > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## formatBlock > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline formatBlock output (block : Block) = > match output, block with > | output, { magic = Markdown; content = content } -> > let markdownComment = > match output with > | Spi | Spir -> "/// " > | Fs -> "/// " > | _ -> "" > content > |> SpiralSm.split "\n" > |> Array.map (SpiralSm.trim_end [[||]]) > |> Array.filter (SpiralSm.ends_with " (test)" >> not) > |> Array.map (function > | "" -> markdownComment > | line -> System.Text.RegularExpressions.Regex.Replace (line, > "^\\s*", $"$&{markdownComment}") > ) > |> SpiralSm.concat "\n" > | Fs, { magic = Fsharp; content = content } -> > let trimmedContent = content |> SpiralSm.trim > if trimmedContent |> SpiralSm.contains "//// test\n" > || trimmedContent |> SpiralSm.contains "//// ignore\n" > then "" > else > content > |> SpiralSm.split "\n" > |> Array.filter (SpiralSm.trim_start [[||]] >> SpiralSm.starts_with > "#r" >> not) > |> SpiralSm.concat "\n" > | (Spi | Spir), { magic = Spiral output'; content = content } when output' = > output -> > let trimmedContent = content |> SpiralSm.trim > if trimmedContent |> SpiralSm.contains "//// test\n" > || trimmedContent |> SpiralSm.contains "//// ignore\n" > then "" > else content > | _ -> "" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "#!markdown > > > a > > b > > c > > > \#!markdown > > > c > > > \#!fsharp > > > let a = 1" > |> escapeCell > |> run block > |> function > | Success (block, _, _) -> formatBlock Fs block > | Failure (msg, _, _) -> failwith msg > |> _assertEqual "/// a > /// > /// b > /// > /// c" > > ── [ 30.26ms - stdout ] ──────────────────────────────────────────────────────── > │ "/// a > │ /// > │ /// b > │ /// > │ /// c" > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## formatBlocks > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline formatBlocks output blocks = > blocks > |> List.map (fun block -> > block, formatBlock output block > ) > |> List.filter (snd >> (<>) "") > |> fun list -> > (list, (None, [[]])) > ||> List.foldBack (fun (block, content) (lastMagic, acc) -> > let lineBreak = > if block.magic = Markdown && lastMagic <> Some Markdown && > lastMagic <> None > then "" > else "\n" > Some block.magic, $"{content}{lineBreak}" :: acc > ) > |> snd > |> SpiralSm.concat "\n" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > "#!markdown > > > a > > b > > > \#!markdown > > > c > > > \#!fsharp > > > let a = 1 > > \#!markdown > > d (test) > > \#!fsharp > > //// test > > let a = 2 > > \#!markdown > > e > > \#!fsharp > > let a = 3" > |> escapeCell > |> run blocks > |> function > | Success (blocks, _, _) -> formatBlocks Fs blocks > | Failure (msg, _, _) -> failwith msg > |> _assertEqual "/// a > /// > /// b > > /// c > let a = 1 > > /// e > let a = 3 > " > > ── [ 37.86ms - stdout ] ──────────────────────────────────────────────────────── > │ "/// a > │ /// > │ /// b > │ > │ /// c > │ let a = 1 > │ > │ /// e > │ let a = 3 > │ " > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## indentBlock > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline indentBlock (block : Block) = > { block with > content = > block.content > |> SpiralSm.split "\n" > |> Array.fold > (fun (lines, isMultiline) line -> > let trimmedLine = line |> SpiralSm.trim > if trimmedLine = "" > then "" :: lines, isMultiline > else > let inline singleQuoteLine () = > trimmedLine |> Seq.sumBy ((=) '"' >> > System.Convert.ToInt32) = 1 > && trimmedLine |> SpiralSm.contains @"'""'" |> not > && trimmedLine |> SpiralSm.ends_with "{" |> not > && trimmedLine |> SpiralSm.ends_with "{|" |> not > && trimmedLine |> SpiralSm.starts_with "}" |> not > && trimmedLine |> SpiralSm.starts_with "|}" |> not > > match isMultiline, trimmedLine |> SpiralSm.split_string > [[| $"{q}{q}{q}" |]] with > | false, [[| _; _ |]] -> > $" {line}" :: lines, true > > | true, [[| _; _ |]] -> > line :: lines, false > > | false, _ when singleQuoteLine () -> > $" {line}" :: lines, true > > | false, _ when line |> SpiralSm.starts_with "#" && > block.magic = Fsharp -> > line :: lines, false > > | false, _ -> > $" {line}" :: lines, false > > | true, _ when singleQuoteLine () && line |> > SpiralSm.starts_with " " -> > $" {line}" :: lines, false > > | true, _ when singleQuoteLine () -> > line :: lines, false > > | true, _ -> > line :: lines, true > ) > ([[]], false) > |> fst > |> List.rev > |> SpiralSm.concat "\n" > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## parse > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline parse output input = > match run blocks input with > | Success (blocks, _, _) -> > blocks > |> List.filter (fun block -> > block.magic |> kernelOutputs |> List.contains output || block.magic > = Markdown > ) > |> List.map Some > |> fun x -> x @ [[ None ]] > |> List.pairwise > |> List.choose (function > | Some { magic = Markdown } as block, Some { magic = Markdown } -> > block > | Some { magic = Markdown } as block, Some { magic = magic } > when magic |> kernelOutputs |> List.contains output -> block > | Some { magic = Markdown } as block, _ when output = Md -> block > | Some { magic = Markdown }, _ -> None > | Some block, _ -> Some block > | _ -> None > ) > |> List.fold > (fun (acc, indent) -> function > | { magic = Markdown; content = content } > when output = Fs > && content |> SpiralSm.starts_with "# " > && content |> SpiralSm.ends_with ")" > -> > let moduleName, namespaceName = > System.Text.RegularExpressions.Regex.Match (content, @"# > (.*) \((.*)\)$") > |> fun m -> m.Groups.[[1]].Value, m.Groups.[[2]].Value > > let moduleBlock = > { > magic = Fsharp > content = > $"#if !INTERACTIVE > namespace {namespaceName} > #endif > > module {moduleName} =" > } > > moduleBlock :: acc, (indent + 1) > | { magic = magic ; content = content } as block > when indent > 0 > -> > indentBlock block :: acc, indent > | block -> block :: acc, indent > ) > ([[]], 0) > |> fst > |> List.rev > |> Result.Ok > | Failure (errorMsg, _, _) -> Result.Error errorMsg > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let example1 = > $"""#!meta > > {{"kernelInfo":{{"defaultKernelName":"fsharp","items":[[{{"aliases":[[]],"name": > "fsharp"}},{{"aliases":[[]],"name":"fsharp"}}]]}}}} > > \#!markdown > > # TestModule (TestNamespace) > > \#!fsharp > > \#!import file.dib > > \#!fsharp > > \#r "nuget:Expecto" > > \#!markdown > > ## ParserLibrary > > \#!fsharp > > open System > > \#!markdown > > ## x (test) > > \#!fsharp > > //// ignore > > let x = 1 > > \#!spiral > > //// test > > inl x = 1i32 > > \#!spiral > > //// real > > inl x = 2i32 > > \#!spiral > > inl x = 3i32 > > \#!markdown > > ### TextInput > > \#!fsharp > > let str1 = "abc > def" > > let str2 = > "abc\ > def" > > let str3 = > $"1{{ > 1 > }}1" > > let str4 = > $"1{{({{| > a = 1 > |}}).a}}1" > > let str5 = > "abc \ > def" > > let x = > match '"' with > | '"' -> true > | _ -> false > > let long1 = {q}{q}{q}a{q}{q}{q} > > let long2 = > {q}{q}{q} > a > {q}{q}{q} > > \#!fsharp > > type Position = > {{ > #if INTERACTIVE > line : string > #else > line : int > #endif > column : int > }}""" > |> escapeCell > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > example1 > |> parse Fs > |> Result.toOption > |> Option.get > |> (formatBlocks Fs) > |> _assertEqual $"""#if !INTERACTIVE > namespace TestNamespace > #endif > > module TestModule = > > /// ## ParserLibrary > open System > > /// ### TextInput > let str1 = "abc > def" > > let str2 = > "abc\ > def" > > let str3 = > $"1{{ > 1 > }}1" > > let str4 = > $"1{{({{| > a = 1 > |}}).a}}1" > > let str5 = > "abc \ > def" > > let x = > match '"' with > | '"' -> true > | _ -> false > > let long1 = {q}{q}{q}a{q}{q}{q} > > let long2 = > {q}{q}{q} > a > {q}{q}{q} > > type Position = > {{ > #if INTERACTIVE > line : string > #else > line : int > #endif > column : int > }} > """ > > ── [ 82.78ms - stdout ] ──────────────────────────────────────────────────────── > │ "#if !INTERACTIVE > │ namespace TestNamespace > │ #endif > │ > │ module TestModule = > │ > │ /// ## ParserLibrary > │ open System > │ > │ /// ### TextInput > │ let str1 = "abc > │ def" > │ > │ let str2 = > │ "abc\ > │ def" > │ > │ let str3 = > │ $"1{ > │ 1 > │ }1" > │ > │ let str4 = > │ $"1{({| > │ a = 1 > │ |}).a}1" > │ > │ let str5 = > │ "abc \ > │ def" > │ > │ let x = > │ match '"' with > │ | '"' -> true > │ | _ -> false > │ > │ let long1 = """a""" > │ > │ let long2 = > │ """ > │ a > │ """ > │ > │ type Position = > │ { > │ #if INTERACTIVE > │ line : string > │ #else > │ line : int > │ #endif > │ column : int > │ } > │ " > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > example1 > |> parse Md > |> Result.toOption > |> Option.get > |> (formatBlocks Md) > |> _assertEqual "# TestModule (TestNamespace) > > ## ParserLibrary > > ### TextInput > " > > ── [ 75.73ms - stdout ] ──────────────────────────────────────────────────────── > │ "# TestModule (TestNamespace) > │ > │ ## ParserLibrary > │ > │ ### TextInput > │ " > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > example1 > |> parse Spi > |> Result.toOption > |> Option.get > |> (formatBlocks Spi) > |> _assertEqual "/// # TestModule (TestNamespace) > > /// ## ParserLibrary > inl x = 3i32 > " > > ── [ 112.36ms - stdout ] ─────────────────────────────────────────────────────── > │ "/// # TestModule (TestNamespace) > │ > │ /// ## ParserLibrary > │ inl x = 3i32 > │ " > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > example1 > |> parse Spir > |> Result.toOption > |> Option.get > |> (formatBlocks Spir) > |> _assertEqual "/// # TestModule (TestNamespace) > > /// ## ParserLibrary > inl x = 2i32 > " > > ── [ 75.81ms - stdout ] ──────────────────────────────────────────────────────── > │ "/// # TestModule (TestNamespace) > │ > │ /// ## ParserLibrary > │ inl x = 2i32 > │ " > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## parseDibCode > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline parseDibCode output file = async { > trace Debug > (fun () -> "parseDibCode") > (fun () -> $"output: {output} / file: {file} / {_locals ()}") > let! input = file |> SpiralFileSystem.read_all_text_async > match parse output input with > | Result.Ok blocks -> return blocks |> formatBlocks output > | Result.Error msg -> return failwith msg > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## writeDibCode > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline writeDibCode output path = async { > trace Debug > (fun () -> "writeDibCode") > (fun () -> $"output: {output} / path: {path} / {_locals ()}") > let! result = parseDibCode output path > let pathDir = path |> System.IO.Path.GetDirectoryName > let fileNameWithoutExt = > match output, path |> System.IO.Path.GetFileNameWithoutExtension with > | Spir, fileNameWithoutExt -> $"{fileNameWithoutExt}_real" > | _, fileNameWithoutExt -> fileNameWithoutExt > let outputPath = pathDir </> $"{fileNameWithoutExt}.{output |> string |> > SpiralSm.to_lower}" > do! result |> SpiralFileSystem.write_all_text_async outputPath > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## Arguments > > ── fsharp ────────────────────────────────────────────────────────────────────── > [[<RequireQualifiedAccess>]] > type Arguments = > | [[<Argu.ArguAttributes.MainCommand; Argu.ArguAttributes.Mandatory>]] > File of file : string * Output > > interface Argu.IArgParserTemplate with > member s.Usage = > match s with > | File _ -> nameof File > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > Argu.ArgumentParser.Create<Arguments>().PrintUsage () > > ── [ 63.92ms - return value ] ────────────────────────────────────────────────── > │ "USAGE: dotnet-repl [--help] <file> <fs|md|spi|spir> > │ > │ FILE: > │ > │ <file> <fs|md|spi|spir> > │ File > │ > │ OPTIONS: > │ > │ --help display this list of options. > │ " > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## main > > ── fsharp ────────────────────────────────────────────────────────────────────── > let main args = > let argsMap = args |> Runtime.parseArgsMap<Arguments> > > let files = > argsMap.[[nameof Arguments.File]] > |> List.map (function > | Arguments.File (path, output) -> path, output > ) > > files > |> List.map (fun (path, output) -> path |> writeDibCode output) > |> Async.Parallel > |> Async.Ignore > |> Async.runWithTimeout 30000 > |> function > | Some () -> 0 > | None -> 1 > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let args = > System.Environment.GetEnvironmentVariable "ARGS" > |> SpiralRuntime.split_args > |> Result.toArray > |> Array.collect id > > match args with > | [[||]] -> 0 > | args -> if main args = 0 then 0 else failwith "main failed" > > ── [ 125.98ms - return value ] ───────────────────────────────────────────────── > │ <div class="dni-plaintext"><pre>0 > │ </pre></div><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 126.65ms - stdout ] ─────────────────────────────────────────────────────── > │ 00:00:02 d #1 writeDibCode / output: Fs / path: > DibParser.dib > │ 00:00:02 d #2 parseDibCode / output: Fs / file: > DibParser.dib > │ 00:00:17 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 30905 } 00:00:17 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:00:18 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.ipynb to html 00:00:18 v #6 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:18 v #7 ! validate(nb) 00:00:19 v #8 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:19 v #9 ! return _pygments_highlight( 00:00:19 v #10 ! [NbConvertApp] Writing 381005 bytes to /home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.html 00:00:19 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 906 } 00:00:19 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 906 } 00:00:19 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/DibParser.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:00:19 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:19 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:19 d #16 spiral.run / dib / { exit_code = 0; result_length = 31870 } 00:00:00 d #1 persistCodeProject / packages: [Argu; FParsec; FSharp.Control.AsyncSeq; ... ] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: DibParser / hash: / code.Length: 11045 00:00:00 d #2 buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/Builder/DibParser/DibParser.fsproj 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "/home/runner/work/polyglot/polyglot/target/Builder/DibParser/DibParser.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/parser/dist" --runtime linux-x64"; options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/DibParser/DibParser.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/parser/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/DibParser"; stderr = true } } 00:00:00 v #2 > Determining projects to restore... 00:00:01 v #3 > Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 00:00:01 v #4 > The last full restore is still up to date. Nothing left to do. 00:00:01 v #5 > Total time taken: 0 milliseconds 00:00:01 v #6 > Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 00:00:01 v #7 > Restoring /home/runner/work/polyglot/polyglot/target/Builder/DibParser/DibParser.fsproj 00:00:01 v #8 > Starting restore process. 00:00:01 v #9 > Total time taken: 0 milliseconds 00:00:02 v #10 > Restored /home/runner/work/polyglot/polyglot/target/Builder/DibParser/DibParser.fsproj (in 280 ms). 00:00:14 v #11 > DibParser -> /home/runner/work/polyglot/polyglot/target/Builder/DibParser/bin/Release/net9.0/linux-x64/DibParser.dll 00:00:14 v #12 > DibParser -> /home/runner/work/polyglot/polyglot/apps/parser/dist 00:00:14 d #13 runtime.execute_with_options_async / { exit_code = 0; output_length = 705; options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/DibParser/DibParser.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/parser/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/DibParser"; stderr = true } } 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "JsonParser.dib"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None; stderr = true } } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ # JsonParser (Polyglot) > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Common > open Parser > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## JsonParser > > ── fsharp ────────────────────────────────────────────────────────────────────── > (* > // -------------------------------- > JSON spec from http://www.json.org/ > // -------------------------------- > > The JSON spec is available at [[json.org]](http://www.json.org/). I'll paraphase > it here: > > * A `value` can be a `string` or a `number` or a `bool` or `null` or an `object` > or an `array`. > * These structures can be nested. > * A `string` is a sequence of zero or more Unicode characters, wrapped in double > quotes, using backslash escapes. > * A `number` is very much like a C or Java number, except that the octal and > hexadecimal formats are not used. > * A `boolean` is the literal `true` or `false` > * A `null` is the literal `null` > * An `object` is an unordered set of name/value pairs. > * An object begins with { (left brace) and ends with } (right brace). > * Each name is followed by : (colon) and the name/value pairs are separated by > , (comma). > * An `array` is an ordered collection of values. > * An array begins with [[ (left bracket) and ends with ]] (right bracket). > * Values are separated by , (comma). > * Whitespace can be inserted between any pair of tokens. > *) > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let inline parserEqual (expected : ParseResult<'a>) (actual : ParseResult<'a * > Input>) = > match actual, expected with > | Success (_actual, _), Success _expected -> > printResult actual > _actual |> _assertEqual _expected > | Failure (l1, e1, p1), Failure (l2, e2, p2) when l1 = l2 && e1 = e2 && p1 = > p2 -> > printResult actual > | _ -> > printfn $"Actual: {actual}" > printfn $"Expected: {expected}" > failwith "Parse failed" > actual > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### JValue > > ── fsharp ────────────────────────────────────────────────────────────────────── > type JValue = > | JString of string > | JNumber of float > | JBool of bool > | JNull > | JObject of Map<string, JValue> > | JArray of JValue list > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jValue, jValueRef = createParserForwardedToRef<JValue> () > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### jNull > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jNull = > pstring "null" > >>% JNull > <?> "null" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > jValueRef <| > choice > [[ > jNull > ]] > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jValue "null" > |> parserEqual (Success JNull) > > ── [ 151.75ms - return value ] ───────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JNull, { lines = [|"null"|]<br /> > position = { line = 0<br /> column = 4 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JNull, { lines = [|"null"|]<br /> > position = { line = 0<br /> column = 4 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JNull</code></span></summary><div><table><thead><tr> > </tr></thead><tbody></tbody></table></div></details></td></tr><tr><td>Item2</td> > <td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|"null"|]<br /> position = { line = 0<br /> > column = 4 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ null > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 4 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>4 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > ble></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 160.90ms - stdout ] ─────────────────────────────────────────────────────── > │ JNull > │ JNull > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNull "nulp" > |> parserEqual ( > Failure ( > "null", > "Unexpected 'p'", > { currentLine = "nulp"; line = 0; column = 3 } > ) > ) > > ── [ 33.76ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Failure ("null", "Unexpected > 'p'", { currentLine = "nulp"<br /> > line = 0<br /> column = 3 > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><div class="dni-plaintext"><pre>"null" > │ </pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>"Unexpected 'p'" > │ </pre></div></td></tr><tr><td>Item3</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ currentLine = > "nulp"<br /> line = 0<br /> column = 3 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr > entLine</td><td><div class="dni-plaintext"><pre>"nulp" > │ </pre></div></td></tr><tr><td>line</td><td><div > class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>3 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 35.08ms - stdout ] ──────────────────────────────────────────────────────── > │ Line:0 Col:3 Error parsing null > │ nulp > │ ^Unexpected 'p' > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### jBool > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jBool = > let jtrue = > pstring "true" > >>% JBool true > let jfalse = > pstring "false" > >>% JBool false > > jtrue <|> jfalse > <?> "bool" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > jValueRef <| > choice > [[ > jNull > jBool > ]] > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jBool "true" > |> parserEqual (Success (JBool true)) > > ── [ 29.69ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JBool true, { lines = > [|"true"|]<br /> position = { line = 0<br /> > column = 4 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JBool true, { lines = [|"true"|]<br /> > position = { line = 0<br /> column = 4 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JBool > true</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>I > tem</td><td><div class="dni-plaintext"><pre>true > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|"true"|]<br /> position = { line = 0<br /> > column = 4 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ true > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 4 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>4 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > ble></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 31.37ms - stdout ] ──────────────────────────────────────────────────────── > │ JBool true > │ JBool true > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jBool "false" > |> parserEqual (Success (JBool false)) > > ── [ 21.41ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JBool false, { lines = > [|"false"|]<br /> position = { line = 0<br /> > column = 5 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JBool false, { lines = [|"false"|]<br /> > position = { line = 0<br /> column = 5 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JBool > false</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > Item</td><td><div class="dni-plaintext"><pre>false > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|"false"|]<br /> position = { line = 0<br /> > column = 5 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ false > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 5 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>5 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > ble></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 23.09ms - stdout ] ──────────────────────────────────────────────────────── > │ JBool false > │ JBool false > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jBool "truX" > |> parserEqual ( > Failure ( > "bool", > "Unexpected 't'", > { currentLine = "truX"; line = 0; column = 0 } > ) > ) > > ── [ 17.47ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Failure ("bool", "Unexpected > 't'", { currentLine = "truX"<br /> > line = 0<br /> column = 0 > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><div class="dni-plaintext"><pre>"bool" > │ </pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>"Unexpected 't'" > │ </pre></div></td></tr><tr><td>Item3</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ currentLine = > "truX"<br /> line = 0<br /> column = 0 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr > entLine</td><td><div class="dni-plaintext"><pre>"truX" > │ </pre></div></td></tr><tr><td>line</td><td><div > class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 18.67ms - stdout ] ──────────────────────────────────────────────────────── > │ Line:0 Col:0 Error parsing bool > │ truX > │ ^Unexpected 't' > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### jUnescapedChar > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jUnescapedChar = > satisfy (fun ch -> ch <> '\\' && ch <> '\"') "char" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jUnescapedChar "a" > |> parserEqual (Success 'a') > > ── [ 32.73ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success ('a', { lines = [|"a"|]<br > /> position = { line = 0<br /> column > = 1 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(a, { lines = [|"a"|]<br /> position = { > line = 0<br /> column = 1 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><div class="dni-plaintext"><pre>'a' > │ </pre></div></td></tr><tr><td>Item2</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = > [|"a"|]<br /> position = { line = 0<br /> column = 1 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ a > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 1 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>1 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > ble></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 34.35ms - stdout ] ──────────────────────────────────────────────────────── > │ 'a' > │ 'a' > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jUnescapedChar "\\" > |> parserEqual ( > Failure ( > "char", > "Unexpected '\\'", > { currentLine = "\\"; line = 0; column = 0 } > ) > ) > > ── [ 24.62ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Failure ("char", "Unexpected > '\'", { currentLine = "\"<br /> > line = 0<br /> column = 0 > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><div class="dni-plaintext"><pre>"char" > │ </pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>"Unexpected '\'" > │ </pre></div></td></tr><tr><td>Item3</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ currentLine = > "\"<br /> line = 0<br /> column = 0 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr > entLine</td><td><div class="dni-plaintext"><pre>"\" > │ </pre></div></td></tr><tr><td>line</td><td><div > class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 25.82ms - stdout ] ──────────────────────────────────────────────────────── > │ Line:0 Col:0 Error parsing char > │ \ > │ ^Unexpected '\' > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### jEscapedChar > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jEscapedChar = > [[ > ("\\\"",'\"') > ("\\\\",'\\') > ("\\/",'/') > ("\\b",'\b') > ("\\f",'\f') > ("\\n",'\n') > ("\\r",'\r') > ("\\t",'\t') > ]] > |> List.map (fun (toMatch, result) -> > pstring toMatch >>% result > ) > |> choice > <?> "escaped char" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jEscapedChar "\\\\" > |> parserEqual (Success '\\') > > ── [ 20.65ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success ('\\', { lines = > [|"\\"|]<br /> position = { line = 0<br /> > column = 2 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(\, { lines = [|"\\"|]<br /> position = { > line = 0<br /> column = 2 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><div class="dni-plaintext"><pre>'\\' > │ </pre></div></td></tr><tr><td>Item2</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = > [|"\\"|]<br /> position = { line = 0<br /> column = 2 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ \\ > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 2 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>2 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > ble></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 22.78ms - stdout ] ──────────────────────────────────────────────────────── > │ '\\' > │ '\\' > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jEscapedChar "\\t" > |> parserEqual (Success '\t') > > ── [ 18.50ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success ('\009', { lines = > [|"\t"|]<br /> position = { line = 0<br /> > column = 2 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>( , { lines = [|"\t"|]<br /> position = { > line = 0<br /> column = 2 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><div class="dni-plaintext"><pre>'\009' > │ </pre></div></td></tr><tr><td>Item2</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = > [|"\t"|]<br /> position = { line = 0<br /> column = 2 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ \t > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 2 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>2 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > ble></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 20.02ms - stdout ] ──────────────────────────────────────────────────────── > │ '\009' > │ '\009' > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jEscapedChar @"\\" > |> parserEqual (Success '\\') > > ── [ 18.55ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success ('\\', { lines = > [|"\\"|]<br /> position = { line = 0<br /> > column = 2 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(\, { lines = [|"\\"|]<br /> position = { > line = 0<br /> column = 2 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><div class="dni-plaintext"><pre>'\\' > │ </pre></div></td></tr><tr><td>Item2</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = > [|"\\"|]<br /> position = { line = 0<br /> column = 2 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ \\ > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 2 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>2 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > ble></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 20.03ms - stdout ] ──────────────────────────────────────────────────────── > │ '\\' > │ '\\' > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jEscapedChar @"\n" > |> parserEqual (Success '\n') > > ── [ 18.72ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success ('\010', { lines = [|"<br > />"|]<br /> position = { line = 0<br /> > column = 2 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(<br />, { lines = [|"<br />"|]<br /> > position = { line = 0<br /> column = 2 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><div class="dni-plaintext"><pre>'\010' > │ </pre></div></td></tr><tr><td>Item2</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = > [|"<br />"|]<br /> position = { line = 0<br /> column = > 2 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ <br /> > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 2 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>2 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > ble></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 20.20ms - stdout ] ──────────────────────────────────────────────────────── > │ '\010' > │ '\010' > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jEscapedChar "a" > |> parserEqual ( > Failure ( > "escaped char", > "Unexpected 'a'", > { currentLine = "a"; line = 0; column = 0 } > ) > ) > > ── [ 18.19ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Failure ("escaped char", "Unexpected > 'a'", { currentLine = "a"<br /> > line = 0<br /> column = 0 > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><div class="dni-plaintext"><pre>"escaped char" > │ </pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>"Unexpected 'a'" > │ </pre></div></td></tr><tr><td>Item3</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ currentLine = > "a"<br /> line = 0<br /> column = 0 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr > entLine</td><td><div class="dni-plaintext"><pre>"a" > │ </pre></div></td></tr><tr><td>line</td><td><div > class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 19.42ms - stdout ] ──────────────────────────────────────────────────────── > │ Line:0 Col:0 Error parsing escaped char > │ a > │ ^Unexpected 'a' > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### jUnicodeChar > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jUnicodeChar = > let backslash = pchar '\\' > let uChar = pchar 'u' > let hexdigit = anyOf ([[ '0' .. '9' ]] @ [[ 'A' .. 'F' ]] @ [[ 'a' .. 'f' > ]]) > let fourHexDigits = hexdigit .>>. hexdigit .>>. hexdigit .>>. hexdigit > > let inline convertToChar (((h1, h2), h3), h4) = > let str = $"%c{h1}%c{h2}%c{h3}%c{h4}" > Int32.Parse (str, Globalization.NumberStyles.HexNumber) |> char > > backslash >>. uChar >>. fourHexDigits > |>> convertToChar > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jUnicodeChar "\\u263A" > |> parserEqual (Success '☺') > > ── [ 27.45ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success ('☺', { lines = > [|"\u263A"|]<br /> position = { line = 0<br /> > column = 6 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(☺, { lines = [|"\u263A"|]<br /> position > = { line = 0<br /> column = 6 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><div class="dni-plaintext"><pre>'☺' > │ </pre></div></td></tr><tr><td>Item2</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = > [|"\u263A"|]<br /> position = { line = 0<br /> column = > 6 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ \u263A > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 6 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>6 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > ble></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 28.93ms - stdout ] ──────────────────────────────────────────────────────── > │ '☺' > │ '☺' > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### jString > > ── fsharp ────────────────────────────────────────────────────────────────────── > let quotedString = > let quote = pchar '\"' <?> "quote" > let jchar = jUnescapedChar <|> jEscapedChar <|> jUnicodeChar > > quote >>. manyChars jchar .>> quote > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jString = > quotedString > |>> JString > <?> "quoted string" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > jValueRef <| > choice > [[ > jNull > jBool > jString > ]] > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jString "\"\"" > |> parserEqual (Success (JString "")) > > ── [ 28.97ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JString "", { lines = > [|""""|]<br /> position = { line = > 0<br /> column = 2 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JString "", { lines = > [|""""|]<br /> position = { line = 0<br /> > column = 2 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JString > ""</code></span></summary><div><table><thead><tr></tr></thead><tbody>< > tr><td>Item</td><td><div class="dni-plaintext"><pre>"" > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|""""|]<br /> position = { line = 0<br /> > column = 2 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ "" > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 2 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>2 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > ble></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 30.70ms - stdout ] ──────────────────────────────────────────────────────── > │ JString "" > │ JString "" > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jString "\"a\"" > |> parserEqual (Success (JString "a")) > > ── [ 20.64ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JString "a", { lines = > [|""a""|]<br /> position = { line = > 0<br /> column = 3 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JString "a", { lines = > [|""a""|]<br /> position = { line = 0<br /> > column = 3 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JString > "a"</code></span></summary><div><table><thead><tr></tr></thead><tbody> > <tr><td>Item</td><td><div class="dni-plaintext"><pre>"a" > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|""a""|]<br /> position = { line = 0<br /> > column = 3 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ "a" > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 3 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>3 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > ble></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 22.32ms - stdout ] ──────────────────────────────────────────────────────── > │ JString "a" > │ JString "a" > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jString "\"ab\"" > |> parserEqual (Success (JString "ab")) > > ── [ 20.21ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JString "ab", { lines = > [|""ab""|]<br /> position = { line = > 0<br /> column = 4 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JString "ab", { lines = > [|""ab""|]<br /> position = { line = 0<br /> > column = 4 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JString > "ab"</code></span></summary><div><table><thead><tr></tr></thead><tbody > ><tr><td>Item</td><td><div class="dni-plaintext"><pre>"ab" > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|""ab""|]<br /> position = { line = 0<br /> > column = 4 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ "ab" > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 4 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>4 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > ble></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 21.85ms - stdout ] ──────────────────────────────────────────────────────── > │ JString "ab" > │ JString "ab" > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jString "\"ab\\tde\"" > |> parserEqual (Success (JString "ab\tde")) > > ── [ 20.73ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JString "ab de", { lines = > [|""ab\tde""|]<br /> position = { > line = 0<br /> column = 8 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JString "ab de", { lines = > [|""ab\tde""|]<br /> position = { line = 0<br /> > column = 8 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JString "ab > de"</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr>< > td>Item</td><td><div class="dni-plaintext"><pre>"ab de" > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|""ab\tde""|]<br /> position = { line = 0<br /> > column = 8 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ "ab\tde" > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 8 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>8 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > ble></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 22.51ms - stdout ] ──────────────────────────────────────────────────────── > │ JString "ab de" > │ JString "ab de" > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jString "\"ab\\u263Ade\"" > |> parserEqual (Success (JString "ab☺de")) > > ── [ 21.19ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JString "ab☺de", { lines = > [|""ab\u263Ade""|]<br /> position > = { line = 0<br /> column = 12 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JString "ab☺de", { lines = > [|""ab\u263Ade""|]<br /> position = { line = 0<br /> > column = 12 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JString > "ab☺de"</code></span></summary><div><table><thead><tr></tr></thead><tb > ody><tr><td>Item</td><td><div class="dni-plaintext"><pre>"ab☺de" > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|""ab\u263Ade""|]<br /> position = { line = 0<br > /> column = 12 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ "ab\u263Ade" > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 12 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>12 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > ble></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 22.87ms - stdout ] ──────────────────────────────────────────────────────── > │ JString "ab☺de" > │ JString "ab☺de" > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### jNumber > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jNumber = > let optSign = opt (pchar '-') > > let zero = pstring "0" > > let digitOneNine = > satisfy (fun ch -> Char.IsDigit ch && ch <> '0') "1-9" > > let digit = > satisfy Char.IsDigit "digit" > > let point = pchar '.' > > let e = pchar 'e' <|> pchar 'E' > > let optPlusMinus = opt (pchar '-' <|> pchar '+') > > let nonZeroInt = > digitOneNine .>>. manyChars digit > |>> fun (first, rest) -> string first + rest > > let intPart = zero <|> nonZeroInt > > let fractionPart = point >>. manyChars1 digit > > let exponentPart = e >>. optPlusMinus .>>. manyChars1 digit > > let inline (|>?) opt f = > match opt with > | None -> "" > | Some x -> f x > > let inline convertToJNumber (((optSign, intPart), fractionPart), expPart) = > let signStr = > optSign > |>? string > > let fractionPartStr = > fractionPart > |>? (fun digits -> "." + digits) > > let expPartStr = > expPart > |>? fun (optSign, digits) -> > let sign = optSign |>? string > "e" + sign + digits > > (signStr + intPart + fractionPartStr + expPartStr) > |> float > |> JNumber > > optSign .>>. intPart .>>. opt fractionPart .>>. opt exponentPart > |>> convertToJNumber > <?> "number" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > jValueRef <| > choice > [[ > jNull > jBool > jString > jNumber > ]] > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber "123" > |> parserEqual (Success (JNumber 123.0)) > > ── [ 38.10ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JNumber 123.0, { lines = > [|"123"|]<br /> position = { line = 0<br /> > column = 3 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JNumber 123.0, { lines = [|"123"|]<br /> > position = { line = 0<br /> column = 3 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JNumber > 123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > Item</td><td><div class="dni-plaintext"><pre>123.0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|"123"|]<br /> position = { line = 0<br /> > column = 3 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ 123 > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 3 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>3 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > ble></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 39.75ms - stdout ] ──────────────────────────────────────────────────────── > │ JNumber 123.0 > │ JNumber 123.0 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber "-123" > |> parserEqual (Success (JNumber -123.0)) > > ── [ 21.71ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JNumber -123.0, { lines = > [|"-123"|]<br /> position = { line = 0<br /> > column = 4 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JNumber -123.0, { lines = [|"-123"|]<br > /> position = { line = 0<br /> column = 4 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JNumber > -123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td > >Item</td><td><div class="dni-plaintext"><pre>-123.0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|"-123"|]<br /> position = { line = 0<br /> > column = 4 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ -123 > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 4 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>4 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > ble></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 23.29ms - stdout ] ──────────────────────────────────────────────────────── > │ JNumber -123.0 > │ JNumber -123.0 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber "123.4" > |> parserEqual (Success (JNumber 123.4)) > > ── [ 22.76ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JNumber 123.4, { lines = > [|"123.4"|]<br /> position = { line = 0<br /> > column = 5 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JNumber 123.4, { lines = [|"123.4"|]<br > /> position = { line = 0<br /> column = 5 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JNumber > 123.4</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > Item</td><td><div class="dni-plaintext"><pre>123.4 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|"123.4"|]<br /> position = { line = 0<br /> > column = 5 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ 123.4 > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 5 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>5 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > ble></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 24.35ms - stdout ] ──────────────────────────────────────────────────────── > │ JNumber 123.4 > │ JNumber 123.4 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber "-123." > |> parserEqual (Success (JNumber -123.0)) > > ── [ 20.48ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JNumber -123.0, { lines = > [|"-123."|]<br /> position = { line = 0<br > /> column = 4 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JNumber -123.0, { lines = [|"-123."|]<br > /> position = { line = 0<br /> column = 4 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JNumber > -123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td > >Item</td><td><div class="dni-plaintext"><pre>-123.0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|"-123."|]<br /> position = { line = 0<br /> > column = 4 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ -123. > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 4 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>4 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > ble></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 22.10ms - stdout ] ──────────────────────────────────────────────────────── > │ JNumber -123.0 > │ JNumber -123.0 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber "00.1" > |> parserEqual (Success (JNumber 0.0)) > > ── [ 20.70ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JNumber 0.0, { lines = > [|"00.1"|]<br /> position = { line = 0<br /> > column = 1 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JNumber 0.0, { lines = [|"00.1"|]<br /> > position = { line = 0<br /> column = 1 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JNumber > 0.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It > em</td><td><div class="dni-plaintext"><pre>0.0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|"00.1"|]<br /> position = { line = 0<br /> > column = 1 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ 00.1 > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 0<br /> > column = 1 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>1 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > ble></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 22.27ms - stdout ] ──────────────────────────────────────────────────────── > │ JNumber 0.0 > │ JNumber 0.0 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let jNumber_ = jNumber .>> spaces1 > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber_ "123" > |> parserEqual (Success (JNumber 123.0)) > > ── [ 23.01ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JNumber 123.0, { lines = > [|"123"|]<br /> position = { line = 1<br /> > column = 0 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JNumber 123.0, { lines = [|"123"|]<br /> > position = { line = 1<br /> column = 0 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JNumber > 123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > Item</td><td><div class="dni-plaintext"><pre>123.0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|"123"|]<br /> position = { line = 1<br /> > column = 0 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ 123 > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 1<br /> > column = 0 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>1 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > ble></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 24.55ms - stdout ] ──────────────────────────────────────────────────────── > │ JNumber 123.0 > │ JNumber 123.0 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber_ "-123" > |> parserEqual (Success (JNumber -123.0)) > > ── [ 21.32ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JNumber -123.0, { lines = > [|"-123"|]<br /> position = { line = 1<br /> > column = 0 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JNumber -123.0, { lines = [|"-123"|]<br > /> position = { line = 1<br /> column = 0 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JNumber > -123.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td > >Item</td><td><div class="dni-plaintext"><pre>-123.0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|"-123"|]<br /> position = { line = 1<br /> > column = 0 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ -123 > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 1<br /> > column = 0 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>1 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > ble></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 23.08ms - stdout ] ──────────────────────────────────────────────────────── > │ JNumber -123.0 > │ JNumber -123.0 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber_ "-123." > |> parserEqual ( > Failure ( > "number andThen many1 whitespace", > "Unexpected '.'", > { currentLine = "-123."; line = 0; column = 4 } > ) > ) > > ── [ 18.76ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Failure<br /> ("number andThen many1 > whitespace", "Unexpected '.'", { currentLine = > "-123."<br /> > line = 0<br /> column = > 4 > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><div class="dni-plaintext"><pre>"number andThen many1 > whitespace" > │ </pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>"Unexpected '.'" > │ </pre></div></td></tr><tr><td>Item3</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ currentLine = > "-123."<br /> line = 0<br /> column = 4 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr > entLine</td><td><div class="dni-plaintext"><pre>"-123." > │ </pre></div></td></tr><tr><td>line</td><td><div > class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>4 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 19.91ms - stdout ] ──────────────────────────────────────────────────────── > │ Line:0 Col:4 Error parsing number andThen many1 whitespace > │ -123. > │ ^Unexpected '.' > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber_ "123.4" > |> parserEqual (Success (JNumber 123.4)) > > ── [ 21.08ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JNumber 123.4, { lines = > [|"123.4"|]<br /> position = { line = 1<br /> > column = 0 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JNumber 123.4, { lines = [|"123.4"|]<br > /> position = { line = 1<br /> column = 0 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JNumber > 123.4</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td> > Item</td><td><div class="dni-plaintext"><pre>123.4 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|"123.4"|]<br /> position = { line = 1<br /> > column = 0 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ 123.4 > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 1<br /> > column = 0 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>1 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > ble></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 22.64ms - stdout ] ──────────────────────────────────────────────────────── > │ JNumber 123.4 > │ JNumber 123.4 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber_ "00.4" > |> parserEqual ( > Failure ( > "number andThen many1 whitespace", > "Unexpected '0'", > { currentLine = "00.4"; line = 0; column = 1 } > ) > ) > > ── [ 18.33ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Failure<br /> ("number andThen many1 > whitespace", "Unexpected '0'", { currentLine = > "00.4"<br /> > line = 0<br /> column = > 1 > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><div class="dni-plaintext"><pre>"number andThen many1 > whitespace" > │ </pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>"Unexpected '0'" > │ </pre></div></td></tr><tr><td>Item3</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ currentLine = > "00.4"<br /> line = 0<br /> column = 1 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr > entLine</td><td><div class="dni-plaintext"><pre>"00.4" > │ </pre></div></td></tr><tr><td>line</td><td><div > class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>1 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 19.58ms - stdout ] ──────────────────────────────────────────────────────── > │ Line:0 Col:1 Error parsing number andThen many1 whitespace > │ 00.4 > │ ^Unexpected '0' > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber_ "123e4" > |> parserEqual (Success (JNumber 1230000.0)) > > ── [ 24.09ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JNumber 1230000.0, { lines = > [|"123e4"|]<br /> position = { line = > 1<br /> column = 0 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JNumber 1230000.0, { lines = > [|"123e4"|]<br /> position = { line = 1<br /> column = > 0 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JNumber > 1230000.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr> > <td>Item</td><td><div class="dni-plaintext"><pre>1230000.0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|"123e4"|]<br /> position = { line = 1<br /> > column = 0 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ 123e4 > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 1<br /> > column = 0 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>1 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > ble></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 25.65ms - stdout ] ──────────────────────────────────────────────────────── > │ JNumber 1230000.0 > │ JNumber 1230000.0 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber_ "123.4e5" > |> parserEqual (Success (JNumber 12340000.0)) > > ── [ 22.48ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JNumber 12340000.0, { lines = > [|"123.4e5"|]<br /> position = { line = > 1<br /> column = 0 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JNumber 12340000.0, { lines = > [|"123.4e5"|]<br /> position = { line = 1<br /> column > = 0 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JNumber > 12340000.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr > ><td>Item</td><td><div class="dni-plaintext"><pre>12340000.0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|"123.4e5"|]<br /> position = { line = 1<br /> > column = 0 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ 123.4e5 > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 1<br /> > column = 0 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>1 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > ble></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 24.04ms - stdout ] ──────────────────────────────────────────────────────── > │ JNumber 12340000.0 > │ JNumber 12340000.0 > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jNumber_ "123.4e-5" > |> parserEqual (Success (JNumber 0.001234)) > > ── [ 21.76ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JNumber 0.001234, { lines = > [|"123.4e-5"|]<br /> position = { line = > 1<br /> column = 0 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JNumber 0.001234, { lines = > [|"123.4e-5"|]<br /> position = { line = 1<br /> column > = 0 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JNumber > 0.001234</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr>< > td>Item</td><td><div class="dni-plaintext"><pre>0.001234 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>Item2</t > d><td><details class="dni-treeview"><summary><span class="dni-code-hint"><code>{ > lines = [|"123.4e-5"|]<br /> position = { line = 1<br /> > column = 0 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ 123.4e-5 > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 1<br /> > column = 0 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>1 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > ble></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 23.29ms - stdout ] ──────────────────────────────────────────────────────── > │ JNumber 0.001234 > │ JNumber 0.001234 > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### jArray > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jArray = > let left = pchar '[[' .>> spaces > let right = pchar ']]' .>> spaces > let comma = pchar ',' .>> spaces > let value = jValue .>> spaces > > let values = sepBy value comma > > between left values right > |>> JArray > <?> "array" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > jValueRef <| > choice > [[ > jNull > jBool > jString > jNumber > jArray > ]] > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jArray "[[ 1, 2 ]]" > |> parserEqual (Success (JArray [[ JNumber 1.0; JNumber 2.0 ]])) > > ── [ 55.11ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success (JArray [JNumber 1.0; JNumber 2.0], { lines > = [|"[ 1, 2 ]"|]<br /> > position = { line = 1<br /> > column = 0 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JArray [JNumber 1.0; JNumber 2.0], { lines = > [|"[ 1, 2 ]"|]<br /> position = { line = 1<br /> column > = 0 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JArray [JNumber 1.0; JNumber > 2.0]</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>I > tem</td><td><table><thead><tr><th><i>index</i></th><th>value</th></tr></thead><t > body><tr><td>0</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JNumber > 1.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It > em</td><td><div class="dni-plaintext"><pre>1.0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td>1</td><t > d><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JNumber > 2.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It > em</td><td><div class="dni-plaintext"><pre>2.0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </td></tr></tbody></table></div></details></td></tr><tr><td>Item2</td><td><detai > ls class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = > [|"[ 1, 2 ]"|]<br /> position = { line = 1<br /> column > = 0 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ [ 1, 2 ] > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 1<br /> > column = 0 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>1 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > ble></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 57.15ms - stdout ] ──────────────────────────────────────────────────────── > │ JArray [JNumber 1.0; JNumber 2.0] > │ JArray [JNumber 1.0; JNumber 2.0] > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jArray "[[ 1, 2, ]]" > |> parserEqual ( > Failure ( > "array", > "Unexpected ','", > { currentLine = "[[ 1, 2, ]]"; line = 0; column = 6 } > ) > ) > > ── [ 23.19ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Failure ("array", "Unexpected > ','", { currentLine = "[ 1, 2, ]"<br /> > line = 0<br /> column = 6 > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><div class="dni-plaintext"><pre>"array" > │ </pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>"Unexpected ','" > │ </pre></div></td></tr><tr><td>Item3</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ currentLine = > "[ 1, 2, ]"<br /> line = 0<br /> column = 6 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr > entLine</td><td><div class="dni-plaintext"><pre>"[ 1, 2, ]" > │ </pre></div></td></tr><tr><td>line</td><td><div > class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>6 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 24.34ms - stdout ] ──────────────────────────────────────────────────────── > │ Line:0 Col:6 Error parsing array > │ [ 1, 2, ] > │ ^Unexpected ',' > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### jObject > > ── fsharp ────────────────────────────────────────────────────────────────────── > let jObject = > let left = spaces >>. pchar '{' .>> spaces > let right = pchar '}' .>> spaces > let colon = pchar ':' .>> spaces > let comma = pchar ',' .>> spaces > let key = quotedString .>> spaces > let value = jValue .>> spaces > > let keyValue = (key .>> colon) .>>. value > let keyValues = sepBy keyValue comma > > between left keyValues right > |>> Map.ofList > |>> JObject > <?> "object" > > ── fsharp ────────────────────────────────────────────────────────────────────── > jValueRef <| > choice > [[ > jNull > jBool > jString > jNumber > jArray > jObject > ]] > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jObject """{ "a":1, "b" : 2 }""" > |> parserEqual ( > Success ( > JObject ( > Map.ofList [[ > "a", JNumber 1.0 > "b", JNumber 2.0 > ]] > ) > ) > ) > > ── [ 59.14ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success<br /> (JObject (map [("a", > JNumber 1.0); ("b", JNumber 2.0)]),<br /> { lines = [|"{ > "a":1, "b" : 2 }"|]<br /> position = { line = > 1<br /> column = 0 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JObject (map [("a", JNumber 1.0); > ("b", JNumber 2.0)]), { lines = [|"{ "a":1, > "b" : 2 }"|]<br /> position = { line = 1<br /> > column = 0 } > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JObject (map [("a", JNumber 1.0); > ("b", JNumber > 2.0)])</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td > >Item</td><td><table><thead><tr><th><i>key</i></th><th>value</th></tr></thead><t > body><tr><td><div class="dni-plaintext"><pre>"a" > │ </pre></div></td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>JNumber > 1.0</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It > em</td><td><div class="dni-plaintext"><pre>1.0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr><tr><td><div > class="dni-plaintext"><pre>"b" > │ > </pre></div>...</details></td></tr></tbody></table></td></tr></tbody></table></d > iv></details></td></tr><tr><td>Item2</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ lines = > [|"{ "a":1, "b" : 2 }"|]<br /> position = { > line = 1<br /> column = 0 } > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > s</td><td><div class="dni-plaintext"><pre>[ { "a":1, "b" : > 2 } ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 1<br /> > column = 0 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>1 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > ble></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 61.07ms - stdout ] ──────────────────────────────────────────────────────── > │ JObject (map [("a", JNumber 1.0); ("b", JNumber 2.0)]) > │ JObject (map [("a", JNumber 1.0); ("b", JNumber 2.0)]) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run jObject """{ "a":1, "b" : 2, }""" > |> parserEqual ( > Failure ( > "object", > "Unexpected ','", > { currentLine = """{ "a":1, "b" : 2, }"""; line = 0; column = 18 } > ) > ) > > ── [ 26.01ms - return value ] ────────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Failure ("object", "Unexpected > ','", { currentLine = "{ "a":1, "b" : 2, > }"<br /> line = 0<br /> > column = 18 > })</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>Ite > m1</td><td><div class="dni-plaintext"><pre>"object" > │ </pre></div></td></tr><tr><td>Item2</td><td><div > class="dni-plaintext"><pre>"Unexpected ','" > │ </pre></div></td></tr><tr><td>Item3</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ currentLine = > "{ "a":1, "b" : 2, }"<br /> line = 0<br /> > column = 18 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>curr > entLine</td><td><div class="dni-plaintext"><pre>"{ "a":1, > "b" : 2, }" > │ </pre></div></td></tr><tr><td>line</td><td><div > class="dni-plaintext"><pre>0 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>18 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 27.19ms - stdout ] ──────────────────────────────────────────────────────── > │ Line:0 Col:18 Error parsing object > │ { "a":1, "b" : 2, } > │ ^Unexpected ',' > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### jValue > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let example1 = """{ > "name" : "Scott", > "isMale" : true, > "bday" : {"year":2001, "month":12, "day":25 }, > "favouriteColors" : [["blue", "green"]], > "emptyArray" : [[]], > "emptyObject" : {} > }""" > run jValue example1 > |> parserEqual ( > Success ( > JObject ( > Map.ofList [[ > "name", JString "Scott" > "isMale", JBool true > "bday", JObject ( > Map.ofList [[ > "year", JNumber 2001.0 > "month", JNumber 12.0 > "day", JNumber 25.0 > ]] > ) > "favouriteColors", JArray [[ JString "blue"; JString "green" ]] > "emptyArray", JArray [[]] > "emptyObject", JObject Map.empty > ]] > ) > ) > ) > > ── [ 108.41ms - return value ] ───────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success<br /> (JObject<br /> (map<br /> > [("bday",<br /> JObject<br /> (map<br /> > [("day", JNumber 25.0); ("month", JNumber 12.0);<br /> > ("year", JNumber 2001.0)])); ("emptyArray", JArray []);<br > /> ("emptyObject", JObject (map []));<br /> > ("favouriteColors", > ...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It > em</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JObject<br /> (map<br /> > [("bday",<br /> JObject<br /> (map<br /> > [("day", JNumber 25.0); ("month", JNumber 12.0);<br /> > ("year", JNumber 2001.0)])); ("emptyArray", JArray []);<br > /> ("emptyObject", JObject (map []));<br /> > ("favouriteColors", JArray [JString "blue"; JString > "gr...</code></span></summary><div><table><thead><tr></tr></thead><tbody><t > r><td>Item1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JObject<br /> (map<br /> [("bday",<br > /> JObject<br /> (map<br /> [("day", JNumber > 25.0); ("month", JNumber 12.0);<br /> ("year", > JNumber 2001.0)])); ("emptyArray", JArra...= 8<br /> > column = 0 } > ...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>li > nes</td><td><div class="dni-plaintext"><pre>[ {, "name" : > "Scott",, "isMale" : true,, "bday" : > {"year":2001, "month":12, "day":25 },, > "favouriteColors" : ["blue", "green"],, > "emptyArray" : [],, "emptyObject" : {}, } > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 8<br /> > column = 0 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>8 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > ble></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 110.20ms - stdout ] ─────────────────────────────────────────────────────── > │ JObject > │ (map > │ [("bday", > │ JObject > │ (map > │ [("day", JNumber 25.0); ("month", JNumber 12.0); > │ ("year", JNumber 2001.0)])); ("emptyArray", > JArray []); > │ ("emptyObject", JObject (map [])); > │ ("favouriteColors", JArray [JString "blue"; JString > "green"]); > │ ("isMale", JBool true); ("name", JString "Scott")]) > │ JObject > │ (map > │ [("bday", JObject (map [("day", JNumber 25.0); ("month", > JNumber 12.0); ("year", JNumber 2001.0)])); > │ ("emptyArray", JArray []); ("emptyObject", JObject (map > [])); > │ ("favouriteColors", JArray [JString "blue"; JString > "green"]); ("isMale", JBool true); ("name", JString "Scott")]) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let example2 = """{"widget": { > "debug": "on", > "window": { > "title": "Sample Konfabulator Widget", > "name": "main_window", > "width": 500, > "height": 500 > }, > "image": { > "src": "Images/Sun.png", > "name": "sun1", > "hOffset": 250, > "vOffset": 250, > "alignment": "center" > }, > "text": { > "data": "Click Here", > "size": 36, > "style": "bold", > "name": "text1", > "hOffset": 250, > "vOffset": 100, > "alignment": "center", > "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;" > } > }}""" > > run jValue example2 > |> parserEqual ( > Success ( > JObject ( > Map.ofList [[ > "widget", JObject ( > Map.ofList [[ > "debug", JString "on" > "window", JObject ( > Map.ofList [[ > "title", JString "Sample Konfabulator Widget" > "name", JString "main_window" > "width", JNumber 500.0 > "height", JNumber 500.0 > ]] > ) > "image", JObject ( > Map.ofList [[ > "src", JString "Images/Sun.png" > "name", JString "sun1" > "hOffset", JNumber 250.0 > "vOffset", JNumber 250.0 > "alignment", JString "center" > ]] > ) > "text", JObject ( > Map.ofList [[ > "data", JString "Click Here" > "size", JNumber 36.0 > "style", JString "bold" > "name", JString "text1" > "hOffset", JNumber 250.0 > "vOffset", JNumber 100.0 > "alignment", JString "center" > "onMouseUp", JString "sun1.opacity = > (sun1.opacity / 100) * 90;" > ]] > ) > ]] > ) > ]] > ) > ) > ) > > ── [ 226.09ms - return value ] ───────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success<br /> (JObject<br /> (map<br /> > [("widget",<br /> JObject<br /> (map<br /> > [("debug", JString "on");<br /> > ("image",<br /> JObject<br /> > (map<br /> [("alignment", JString > "center");<br /> > ("hOffset"...</code></span></summary><div><table><thead><tr></tr></the > ad><tbody><tr><td>Item</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JObject<br /> (map<br /> > [("widget",<br /> JObject<br /> (map<br /> > [("debug", JString "on");<br /> > ("image",<br /> JObject<br /> (map<br /> > [("alignment", JString "center"); ("hOffset", > JNumber 250.0);<br /> ("name", JString > "sun1"...</code></span></summary><div><table><thead><tr></tr></thead>< > tbody><tr><td>Item1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JObject<br /> (map<br /> > [("widget",<br /> JObject<br /> (map<br /> > [("debug", JString "on");<br /> > ("image",<br /> JObject<br /> (... > "alignment": "center", },, "text": {, > "data": "Click Here",, "size": 36,, > "style": "bold",, "name": > "text1",, "hOffset": 250,, > "vOffset": 100,, "alignment": "center",, > "onMouseUp": "sun1.opacity = (sun1.opacity / 100) * 90;", > }, }} ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 26<br > /> column = 0 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>26 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > ble></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 227.92ms - stdout ] ─────────────────────────────────────────────────────── > │ JObject > │ (map > │ [("widget", > │ JObject > │ (map > │ [("debug", JString "on"); > │ ("image", > │ JObject > │ (map > │ [("alignment", JString "center"); > ("hOffset", JNumber 250.0); > │ ("name", JString "sun1"); ("src", JString > "Images/Sun.png"); > │ ("vOffset", JNumber 250.0)])); > │ ("text", > │ JObject > │ (map > │ [("alignment", JString "center"); > │ ("data", JString "Click Here"); > ("hOffset", JNumber 250.0); > │ ("name", JString "text1"); > │ ("onMouseUp", > │ JString "sun1.opacity = (sun1.opacity / > 100) * 90;"); > │ ("size", JNumber 36.0); ("style", JString > "bold"); > │ ("vOffset", JNumber 100.0)])); > │ ("window", > │ JObject > │ (map > │ [("height", JNumber 500.0); ("name", > JString "main_window"); > │ ("title", JString "Sample Konfabulator > Widget"); > │ ("width", JNumber 500.0)]))]))]) > │ JObject > │ (map > │ [("widget", > │ JObject > │ (map > │ [("debug", JString "on"); > │ ("image", > │ JObject > │ (map > │ [("alignment", JString "center"); > ("hOffset", JNumber 250.0); ("name", JString "sun1"); > │ ("src", JString "Images/Sun.png"); > ("vOffset", JNumber 250.0)])); > │ ("text", > │ JObject > │ (map > │ [("alignment", JString "center"); ("data", > JString "Click Here"); ("hOffset", JNumber 250.0); > │ ("name", JString "text1"); ("onMouseUp", > JString "sun1.opacity = (sun1.opacity / 100) * 90;"); > │ ("size", JNumber 36.0); ("style", JString > "bold"); ("vOffset", JNumber 100.0)])); > │ ("window", > │ JObject > │ (map > │ [("height", JNumber 500.0); ("name", > JString "main_window"); > │ ("title", JString "Sample Konfabulator > Widget"); ("width", JNumber 500.0)]))]))]) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let example3 = """{ > "string": "Hello, \"World\"!", > "escapedString": "This string contains \\/\\\\\\b\\f\\n\\r\\t\\\"\\'", > "number": 42, > "scientificNumber": 3.14e-10, > "boolean": true, > "nullValue": null, > "array": [[1, 2, 3, 4, 5]], > "unicodeString1": "프리마", > "unicodeString2": "\u0048\u0065\u006C\u006C\u006F, > \u0022\u0057\u006F\u0072\u006C\u0064\u0022!", > "specialCharacters": "!@#$%^&*()", > "emptyArray": [[]], > "emptyObject": {}, > "nestedArrays": [[[[1, 2, 3]], [[4, 5, 6]]]], > "object": { > "nestedString": "Nested Value", > "nestedNumber": 3.14, > "nestedBoolean": false, > "nestedNull": null, > "nestedArray": [["a", "b", "c"]], > "nestedObject": { > "nestedProperty": "Nested Object Value" > } > }, > "nestedObjects": [[ > {"name": "Alice", "age": 25}, > {"name": "Bob", "age": 30} > ]] > }""" > run jValue example3 > |> parserEqual ( > Success ( > JObject ( > Map.ofList [[ > "string", JString @"Hello, ""World""!" > "escapedString", JString @"This string contains > \/\\\b\f\n\r\t\""\'" > "number", JNumber 42.0 > "scientificNumber", JNumber 3.14e-10 > "boolean", JBool true > "nullValue", JNull > "array", JArray [[ > JNumber 1.0; JNumber 2.0; JNumber 3.0; JNumber 4.0; JNumber > 5.0 > ]] > "unicodeString1", JString "프리마" > "unicodeString2", JString @"Hello, ""World""!" > "specialCharacters", JString "!@#$%^&*()" > "emptyArray", JArray [[]] > "emptyObject", JObject Map.empty > "nestedArrays", JArray [[ > JArray [[ JNumber 1.0; JNumber 2.0; JNumber 3.0 ]] > JArray [[ JNumber 4.0; JNumber 5.0; JNumber 6.0 ]] > ]] > "object", JObject ( > Map.ofList [[ > "nestedString", JString "Nested Value" > "nestedNumber", JNumber 3.14 > "nestedBoolean", JBool false > "nestedNull", JNull > "nestedArray", JArray [[JString "a"; JString "b"; > JString "c"]] > "nestedObject", JObject ( > Map.ofList [[ > "nestedProperty", JString "Nested Object Value" > ]] > ) > ]] > ) > "nestedObjects", JArray [[ > JObject (Map.ofList [[ "name", JString "Alice"; "age", JNumber > 25.0 ]]) > JObject (Map.ofList [[ "name", JString "Bob"; "age", JNumber > 30.0 ]]) > ]] > ]] > ) > ) > ) > > ── [ 333.54ms - return value ] ───────────────────────────────────────────────── > │ <details open="open" class="dni-treeview"><summary><span > class="dni-code-hint"><code>Success<br /> (JObject<br /> (map<br /> > [("array",<br /> JArray<br /> [JNumber 1.0; > JNumber 2.0; JNumber 3.0; JNumber 4.0; JNumber 5.0]);<br /> > ("boolean", JBool true); ("emptyArray", JArray []);<br /> > ("emptyObject", JObject (map []));<br /> > ("escapedString", JString "This > s...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>I > tem</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>(JObject<br /> (map<br /> > [("array",<br /> JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0; > JNumber 4.0; JNumber 5.0]);<br /> ("boolean", JBool true); > ("emptyArray", JArray []);<br /> ("emptyObject", > JObject (map []));<br /> ("escapedString", JString "This > string contains \/\\\b\f<br />\r\t\"\'");<br /> > ...</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>It > em1</td><td><details class="dni-treeview"><summary><span > class="dni-code-hint"><code>JObject<br /> (map<br /> > [("array",<br /> JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0; > JNumber 4.0; JNumber 5.0]);<br /> ("boolean", JBool true); > ("emptyArray", JArray []);<br /> ("emptyObject", > JObject (map []));<br /> ("es...quot;,, "nestedNumber": > 3.14,, "nestedBoolean": false,, "nestedNull": null,, > "nestedArray": ["a", "b", "c"],, > "nestedObject": {, "nestedProperty": "Nested > Object Value", }, },, "nestedObjects": [, > {"name": "Alice", "age": 25},, > {"name": "Bob", "age": 30}, ], } > ]</pre></div></td></tr><tr><td>position</td><td><details > class="dni-treeview"><summary><span class="dni-code-hint"><code>{ line = 29<br > /> column = 0 > }</code></span></summary><div><table><thead><tr></tr></thead><tbody><tr><td>line > </td><td><div class="dni-plaintext"><pre>29 > │ </pre></div></td></tr><tr><td>column</td><td><div > class="dni-plaintext"><pre>0 > │ > </pre></div></td></tr></tbody></table></div></details></td></tr></tbody></table> > </div></details></td></tr></tbody></table></div></details></td></tr></tbody></ta > ble></div></details><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> > > ── [ 335.42ms - stdout ] ─────────────────────────────────────────────────────── > │ JObject > │ (map > │ [("array", > │ JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0; JNumber > 4.0; JNumber 5.0]); > │ ("boolean", JBool true); ("emptyArray", JArray []); > │ ("emptyObject", JObject (map [])); > │ ("escapedString", JString "This string contains > \/\\\b\f\n\r\t\"\'"); > │ ("nestedArrays", > │ JArray > │ [JArray [JNumber 1.0; JNumber 2.0; JNumber 3.0]; > │ JArray [JNumber 4.0; JNumber 5.0; JNumber 6.0]]); > │ ("nestedObjects", > │ JArray > │ [JObject (map [("age", JNumber 25.0); ("name", > JString "Alice")]); > │ JObject (map [("age", JNumber 30.0); ("name", > JString "Bob")])]); > │ ("nullValue", JNull); ("number", JNumber 42.0); ...]) > │ JObject > │ (map > │ [("array", JArray [JNumber 1.0; JNumber 2.0; JNumber > 3.0; JNumber 4.0; JNumber 5.0]); ("boolean", JBool true); > │ ("emptyArray", JArray []); ("emptyObject", JObject (map > [])); > │ ("escapedString", JString "This string contains > \/\\\b\f\n\r\t\"\'"); > │ ("nestedArrays", > │ JArray [JArray [JNumber 1.0; JNumber 2.0; JNumber > 3.0]; JArray [JNumber 4.0; JNumber 5.0; JNumber 6.0]]); > │ ("nestedObjects", > │ JArray > │ [JObject (map [("age", JNumber 25.0); ("name", > JString "Alice")]); > │ JObject (map [("age", JNumber 30.0); ("name", > JString "Bob")])]); ("nullValue", JNull); > │ ("number", JNumber 42.0); ...]) > │ > │ 00:00:18 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 154933 } 00:00:18 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:00:18 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.ipynb to html 00:00:18 v #6 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:18 v #7 ! validate(nb) 00:00:19 v #8 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:19 v #9 ! return _pygments_highlight( 00:00:19 v #10 ! [NbConvertApp] Writing 500494 bytes to /home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.html 00:00:20 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 908 } 00:00:20 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 908 } 00:00:20 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/JsonParser.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:00:20 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:20 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:20 d #16 spiral.run / dib / { exit_code = 0; result_length = 155900 } 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "Parser.dib"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None; stderr = true } } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ # Parser (Polyglot) > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Common > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### TextInput > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Position = > { > line : int > column : int > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let initialPos = { line = 0; column = 0 } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline incrCol (pos : Position) = > { pos with column = pos.column + 1 } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline incrLine pos = > { line = pos.line + 1; column = 0 } > > ── fsharp ────────────────────────────────────────────────────────────────────── > type InputState = > { > lines : string[[]] > position : Position > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline fromStr str = > { > lines = > if str |> String.IsNullOrEmpty > then [[||]] > else str |> SpiralSm.split_string [[| "\r\n"; "\n" |]] > position = initialPos > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > fromStr "" |> _assertEqual { > lines = [[||]] > position = { line = 0; column = 0 } > } > > ── [ 35.89ms - stdout ] ──────────────────────────────────────────────────────── > │ { lines = [||] > │ position = { line = 0 > │ column = 0 } } > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > fromStr "Hello \n World" |> _assertEqual { > lines = [[| "Hello "; " World" |]] > position = { line = 0; column = 0 } > } > > ── [ 12.74ms - stdout ] ──────────────────────────────────────────────────────── > │ { lines = [|"Hello "; " World"|] > │ position = { line = 0 > │ column = 0 } } > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline currentLine inputState = > let linePos = inputState.position.line > if linePos < inputState.lines.Length > then inputState.lines.[[linePos]] > else "end of file" > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline nextChar input = > let linePos = input.position.line > let colPos = input.position.column > > if linePos >= input.lines.Length > then input, None > else > let currentLine = currentLine input > if colPos < currentLine.Length then > let char = currentLine.[[colPos]] > let newPos = incrCol input.position > let newState = { input with position = newPos } > newState, Some char > else > let char = '\n' > let newPos = incrLine input.position > let newState = { input with position = newPos } > newState, Some char > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let newInput, charOpt = fromStr "Hello World" |> nextChar > > newInput |> _assertEqual { > lines = [[| "Hello World" |]] > position = { line = 0; column = 1 } > } > charOpt |> _assertEqual (Some 'H') > > ── [ 26.73ms - stdout ] ──────────────────────────────────────────────────────── > │ { lines = [|"Hello World"|] > │ position = { line = 0 > │ column = 1 } } > │ > │ Some 'H' > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let newInput, charOpt = fromStr "Hello\n\nWorld" |> nextChar > > newInput |> _assertEqual { > lines = [[| "Hello"; ""; "World" |]] > position = { line = 0; column = 1 } > } > charOpt |> _assertEqual (Some 'H') > > ── [ 18.16ms - stdout ] ──────────────────────────────────────────────────────── > │ { lines = [|"Hello"; ""; "World"|] > │ position = { line = 0 > │ column = 1 } } > │ > │ Some 'H' > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Parser > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Input = InputState > type ParserLabel = string > type ParserError = string > > type ParserPosition = > { > currentLine : string > line : int > column : int > } > > type ParseResult<'a> = > | Success of 'a > | Failure of ParserLabel * ParserError * ParserPosition > > type Parser<'a> = > { > label : ParserLabel > parseFn : Input -> ParseResult<'a * Input> > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline printResult result = > match result with > | Success (value, input) -> > printfn $"%A{value}" > | Failure (label, error, parserPos) -> > let errorLine = parserPos.currentLine > let colPos = parserPos.column > let linePos = parserPos.line > let failureCaret = $"{' ' |> string |> String.replicate colPos}^{error}" > printfn $"Line:%i{linePos} Col:%i{colPos} Error parsing > %s{label}\n%s{errorLine}\n%s{failureCaret}" > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline runOnInput parser input = > parser.parseFn input > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline run parser inputStr = > runOnInput parser (fromStr inputStr) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline parserPositionFromInputState (inputState : Input) = > { > currentLine = currentLine inputState > line = inputState.position.line > column = inputState.position.column > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline getLabel parser = > parser.label > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline setLabel parser newLabel = > { > label = newLabel > parseFn = fun input -> > match parser.parseFn input with > | Success s -> Success s > | Failure (oldLabel, err, pos) -> Failure (newLabel, err, pos) > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let (<?>) = setLabel > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline satisfy predicate label = > { > label = label > parseFn = fun input -> > let remainingInput, charOpt = nextChar input > match charOpt with > | None -> > let err = "No more input" > let pos = parserPositionFromInputState input > Failure (label, err, pos) > | Some first -> > if predicate first > then Success (first, remainingInput) > else > let err = $"Unexpected '%c{first}'" > let pos = parserPositionFromInputState input > Failure (label, err, pos) > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = satisfy (fun c -> c = 'H') "H" > runOnInput parser input |> _assertEqual ( > Success ( > 'H', > { > lines = [[| "Hello" |]] > position = { line = 0; column = 1 } > } > ) > ) > > ── [ 25.12ms - stdout ] ──────────────────────────────────────────────────────── > │ Success ('H', { lines = [|"Hello"|] > │ position = { line = 0 > │ column = 1 } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "World" > let parser = satisfy (fun c -> c = 'H') "H" > runOnInput parser input |> _assertEqual ( > Failure ( > "H", > "Unexpected 'W'", > { > currentLine = "World" > line = 0 > column = 0 > } > ) > ) > > ── [ 20.70ms - stdout ] ──────────────────────────────────────────────────────── > │ Failure ("H", "Unexpected 'W'", { currentLine = "World" > │ line = 0 > │ column = 0 }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline bindP f p = > { > label = "unknown" > parseFn = fun input -> > match runOnInput p input with > | Failure (label, err, pos) -> Failure (label, err, pos) > | Success (value1, remainingInput) -> runOnInput (f value1) > remainingInput > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (>>=) p f = bindP f p > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = parser >>= fun c -> satisfy (fun c -> c = 'e') "e" > runOnInput parser2 input |> _assertEqual ( > Success ( > 'e', > { > lines = [[| "Hello" |]] > position = { line = 0; column = 2 } > } > ) > ) > > ── [ 26.60ms - stdout ] ──────────────────────────────────────────────────────── > │ Success ('e', { lines = [|"Hello"|] > │ position = { line = 0 > │ column = 2 } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "World" > let parser = satisfy (fun c -> c = 'W') "W" > let parser2 = parser >>= fun c -> satisfy (fun c -> c = 'e') "e" > runOnInput parser2 input |> _assertEqual ( > Failure ( > "e", > "Unexpected 'o'", > { > currentLine = "World" > line = 0 > column = 1 > } > ) > ) > > ── [ 26.80ms - stdout ] ──────────────────────────────────────────────────────── > │ Failure ("e", "Unexpected 'o'", { currentLine = "World" > │ line = 0 > │ column = 1 }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline returnP x = > { > label = $"%A{x}" > parseFn = fun input -> Success (x, input) > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = returnP "Hello" > runOnInput parser input |> _assertEqual ( > Success ( > "Hello", > { > lines = [[| "Hello" |]] > position = { line = 0; column = 0 } > } > ) > ) > > ── [ 16.09ms - stdout ] ──────────────────────────────────────────────────────── > │ Success ("Hello", { lines = [|"Hello"|] > │ position = { line = 0 > │ column = 0 } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline mapP f = > bindP (f >> returnP) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let (<!>) = mapP > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (|>>) x f = f <!> x > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = parser |>> string > runOnInput parser2 input |> _assertEqual ( > Success ( > "H", > { > lines = [[| "Hello" |]] > position = { line = 0; column = 1 } > } > ) > ) > > ── [ 23.03ms - stdout ] ──────────────────────────────────────────────────────── > │ Success ("H", { lines = [|"Hello"|] > │ position = { line = 0 > │ column = 1 } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline applyP fP xP = > fP >>= > fun f -> > xP >>= > fun x -> > returnP (f x) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let (<*>) = applyP > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline lift2 f xP yP = > returnP f <*> xP <*> yP > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = satisfy (fun c -> c = 'e') "e" > let parser3 = lift2 (fun c1 c2 -> string c1 + string c2) parser parser2 > runOnInput parser3 input |> _assertEqual ( > Success ( > "He", > { > lines = [[| "Hello" |]] > position = { line = 0; column = 2 } > } > ) > ) > > ── [ 41.71ms - stdout ] ──────────────────────────────────────────────────────── > │ Success ("He", { lines = [|"Hello"|] > │ position = { line = 0 > │ column = 2 } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline andThen p1 p2 = > p1 >>= > fun p1Result -> > p2 >>= > fun p2Result -> > returnP (p1Result, p2Result) > <?> $"{getLabel p1} andThen {getLabel p2}" > > ── fsharp ────────────────────────────────────────────────────────────────────── > let (.>>.) = andThen > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = satisfy (fun c -> c = 'e') "e" > let parser3 = parser .>>. parser2 > runOnInput parser3 input |> _assertEqual ( > Success ( > ('H', 'e'), > { > lines = [[| "Hello" |]] > position = { line = 0; column = 2 } > } > ) > ) > > ── [ 30.78ms - stdout ] ──────────────────────────────────────────────────────── > │ Success (('H', 'e'), { lines = [|"Hello"|] > │ position = { line = 0 > │ column = 2 } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline orElse p1 p2 = > { > label = $"{getLabel p1} orElse {getLabel p2}" > parseFn = fun input -> > match runOnInput p1 input with > | Success _ as result -> result > | Failure _ -> runOnInput p2 input > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > let (<|>) = orElse > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = satisfy (fun c -> c = 'h') "h" > let parser3 = parser <|> parser2 > runOnInput parser3 input |> _assertEqual ( > Success ( > 'h', > { > lines = [[| "hello" |]] > position = { line = 0; column = 1 } > } > ) > ) > > ── [ 41.48ms - stdout ] ──────────────────────────────────────────────────────── > │ Success ('h', { lines = [|"hello"|] > │ position = { line = 0 > │ column = 1 } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline choice listOfParsers = > listOfParsers |> List.reduce (<|>) > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = satisfy (fun c -> c = 'h') "h" > let parser3 = choice [[ parser; parser2 ]] > runOnInput parser3 input |> _assertEqual ( > Success ( > 'h', > { > lines = [[| "hello" |]] > position = { line = 0; column = 1 } > } > ) > ) > > ── [ 25.37ms - stdout ] ──────────────────────────────────────────────────────── > │ Success ('h', { lines = [|"hello"|] > │ position = { line = 0 > │ column = 1 } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec sequence parserList = > match parserList with > | [[]] -> returnP [[]] > | head :: tail -> (lift2 cons) head (sequence tail) > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = satisfy (fun c -> c = 'e') "e" > let parser3 = sequence [[ parser; parser2 ]] > runOnInput parser3 input |> _assertEqual ( > Success ( > [[ 'H'; 'e' ]], > { > lines = [[| "Hello" |]] > position = { line = 0; column = 2 } > } > ) > ) > > ── [ 31.58ms - stdout ] ──────────────────────────────────────────────────────── > │ Success (['H'; 'e'], { lines = [|"Hello"|] > │ position = { line = 0 > │ column = 2 } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec parseZeroOrMore parser input = > match runOnInput parser input with > | Failure (_, _, _) -> > [[]], input > | Success (firstValue, inputAfterFirstParse) -> > let subsequentValues, remainingInput = parseZeroOrMore parser > inputAfterFirstParse > firstValue :: subsequentValues, remainingInput > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline many parser = > { > label = $"many {getLabel parser}" > parseFn = fun input -> Success (parseZeroOrMore parser input) > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = many parser > runOnInput parser2 input |> _assertEqual ( > Success ( > [[]], > { > lines = [[| "hello" |]] > position = { line = 0; column = 0 } > } > ) > ) > > ── [ 21.53ms - stdout ] ──────────────────────────────────────────────────────── > │ Success ([], { lines = [|"hello"|] > │ position = { line = 0 > │ column = 0 } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline many1 p = > p >>= > fun head -> > many p >>= > fun tail -> > returnP (head :: tail) > <?> $"many1 {getLabel p}" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = many1 parser > runOnInput parser2 input |> _assertEqual ( > Failure ( > "many1 H", > "Unexpected 'h'", > { > currentLine = "hello" > line = 0 > column = 0 > } > ) > ) > > ── [ 29.79ms - stdout ] ──────────────────────────────────────────────────────── > │ Failure ("many1 H", "Unexpected 'h'", { currentLine = "hello" > │ line = 0 > │ column = 0 }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline opt p = > let some = p |>> Some > let none = returnP None > (some <|> none) > <?> $"opt {getLabel p}" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "hello" > let parser = satisfy (fun c -> c = 'H') "H" > let parser2 = opt parser > runOnInput parser2 input |> _assertEqual ( > Success ( > None, > { > lines = [[| "hello" |]] > position = { line = 0; column = 0 } > } > ) > ) > > ── [ 25.51ms - stdout ] ──────────────────────────────────────────────────────── > │ Success (None, { lines = [|"hello"|] > │ position = { line = 0 > │ column = 0 } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (.>>) p1 p2 = > p1 .>>. p2 > |> mapP fst > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (>>.) p1 p2 = > p1 .>>. p2 > |> mapP snd > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline between p1 p2 p3 = > p1 >>. p2 .>> p3 > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "[[Hello]]" > let parser = > between > (satisfy (fun c -> c = '[[') "[[") > (many (satisfy (fun c -> [[ 'a' .. 'z' ]] @ [[ 'A' .. 'Z' ]] |> > List.contains c) "letter")) > (satisfy (fun c -> c = ']]') "]]") > runOnInput parser input |> _assertEqual ( > Success ( > [[ 'H'; 'e'; 'l'; 'l'; 'o' ]], > { > lines = [[| "[[Hello]]" |]] > position = { line = 0; column = 7 } > } > ) > ) > > ── [ 82.46ms - stdout ] ──────────────────────────────────────────────────────── > │ Success (['H'; 'e'; 'l'; 'l'; 'o'], { lines = [|"[Hello]"|] > │ position = { line = 0 > │ column = 7 > } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline sepBy1 p sep = > let sepThenP = sep >>. p > p .>>. many sepThenP > |>> fun (p, pList) -> p :: pList > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline sepBy p sep = > sepBy1 p sep <|> returnP [[]] > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello,World" > let parser = sepBy (many (satisfy (fun c -> c <> ',') "not comma")) (satisfy > (fun c -> c = ',') "comma") > runOnInput parser input |> _assertEqual ( > Success ( > [[ [[ 'H'; 'e'; 'l'; 'l'; 'o' ]]; [[ 'W'; 'o'; 'r'; 'l'; 'd'; '\n' ]] > ]], > { > lines = [[| "Hello,World" |]] > position = { line = 1; column = 0 } > } > ) > ) > > ── [ 52.66ms - stdout ] ──────────────────────────────────────────────────────── > │ Success ([['H'; 'e'; 'l'; 'l'; 'o']; ['W'; 'o'; 'r'; 'l'; > 'd'; '\010']], { lines = [|"Hello,World"|] > │ > position = { line = 1 > │ > > column = 0 } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline pchar charToMatch = > satisfy ((=) charToMatch) $"%c{charToMatch}" > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline anyOf listOfChars = > listOfChars > |> List.map pchar > |> choice > <?> $"anyOf %A{listOfChars}" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = anyOf [[ 'H'; 'e'; 'l'; 'o' ]] |> many > runOnInput parser input |> _assertEqual ( > Success ( > [[ 'H'; 'e'; 'l'; 'l'; 'o' ]], > { > lines = [[| "Hello" |]] > position = { line = 0; column = 5 } > } > ) > ) > > ── [ 27.28ms - stdout ] ──────────────────────────────────────────────────────── > │ Success (['H'; 'e'; 'l'; 'l'; 'o'], { lines = [|"Hello"|] > │ position = { line = 0 > │ column = 5 > } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline charListToStr charList = > charList |> List.toArray |> String > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline manyChars cp = > many cp > |>> charListToStr > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline manyChars1 cp = > many1 cp > |>> charListToStr > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = manyChars1 (anyOf [[ 'H'; 'e'; 'l'; 'o' ]]) > runOnInput parser input |> _assertEqual ( > Success ( > "Hello", > { > lines = [[| "Hello" |]] > position = { line = 0; column = 5 } > } > ) > ) > > ── [ 36.16ms - stdout ] ──────────────────────────────────────────────────────── > │ Success ("Hello", { lines = [|"Hello"|] > │ position = { line = 0 > │ column = 5 } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline pstring str = > str > |> List.ofSeq > |> List.map pchar > |> sequence > |> mapP charListToStr > <?> str > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = pstring "Hello" > runOnInput parser input |> _assertEqual ( > Success ( > "Hello", > { > lines = [[| "Hello" |]] > position = { line = 0; column = 5 } > } > ) > ) > > ── [ 37.25ms - stdout ] ──────────────────────────────────────────────────────── > │ Success ("Hello", { lines = [|"Hello"|] > │ position = { line = 0 > │ column = 5 } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let whitespaceChar = > satisfy Char.IsWhiteSpace "whitespace" > > ── fsharp ────────────────────────────────────────────────────────────────────── > let spaces = many whitespaceChar > > ── fsharp ────────────────────────────────────────────────────────────────────── > let spaces1 = many1 whitespaceChar > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr " Hello" > let parser = spaces1 .>>. pstring "Hello" > runOnInput parser input |> _assertEqual ( > Success ( > ([[ ' '; ' ' ]], "Hello"), > { > lines = [[| " Hello" |]] > position = { line = 0; column = 7 } > } > ) > ) > > ── [ 33.87ms - stdout ] ──────────────────────────────────────────────────────── > │ Success (([' '; ' '], "Hello"), { lines = [|" Hello"|] > │ position = { line = 0 > │ column = 7 } > }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let digitChar = > satisfy Char.IsDigit "digit" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let input = fromStr "Hello" > let parser = digitChar > runOnInput parser input |> _assertEqual ( > Failure ( > "digit", > "Unexpected 'H'", > { > currentLine = "Hello" > line = 0 > column = 0 > } > ) > ) > > ── [ 13.95ms - stdout ] ──────────────────────────────────────────────────────── > │ Failure ("digit", "Unexpected 'H'", { currentLine = "Hello" > │ line = 0 > │ column = 0 }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let pint = > let inline resultToInt (sign, digits) = > let i = int digits > match sign with > | Some ch -> -i > | None -> i > > let digits = manyChars1 digitChar > > opt (pchar '-') .>>. digits > |> mapP resultToInt > <?> "integer" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run pint "-123" > |> _assertEqual ( > Success ( > -123, > { > lines = [[| "-123" |]] > position = { line = 0; column = 4 } > } > ) > ) > > ── [ 18.02ms - stdout ] ──────────────────────────────────────────────────────── > │ Success (-123, { lines = [|"-123"|] > │ position = { line = 0 > │ column = 4 } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let pfloat = > let inline resultToFloat (((sign, digits1), point), digits2) = > let fl = float $"{digits1}.{digits2}" > match sign with > | Some ch -> -fl > | None -> fl > > let digits = manyChars1 digitChar > > opt (pchar '-') .>>. digits .>>. pchar '.' .>>. digits > |> mapP resultToFloat > <?> "float" > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > run pfloat "-123.45" > |> _assertEqual ( > Success ( > -123.45, > { > lines = [[| "-123.45" |]] > position = { line = 0; column = 7 } > } > ) > ) > > ── [ 23.15ms - stdout ] ──────────────────────────────────────────────────────── > │ Success (-123.45, { lines = [|"-123.45"|] > │ position = { line = 0 > │ column = 7 } }) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline createParserForwardedToRef<'a> () = > let mutable parserRef : Parser<'a> = > { > label = "unknown" > parseFn = fun _ -> failwith "unfixed forwarded parser" > } > > let wrapperParser = > { parserRef with > parseFn = fun input -> runOnInput parserRef input > } > > wrapperParser, (fun v -> parserRef <- v) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline (>>%) p x = > p > |>> fun _ -> x 00:00:16 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 33524 } 00:00:16 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:00:17 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.ipynb to html 00:00:17 v #6 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:17 v #7 ! validate(nb) 00:00:17 v #8 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:17 v #9 ! return _pygments_highlight( 00:00:18 v #10 ! [NbConvertApp] Writing 413727 bytes to /home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.html 00:00:18 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 900 } 00:00:18 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 900 } 00:00:18 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/parser/Parser.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:00:18 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:18 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:18 d #16 spiral.run / dib / { exit_code = 0; result_length = 34483 } 00:00:00 d #1 writeDibCode / output: Fs / path: Parser.dib 00:00:00 d #1 writeDibCode / output: Fs / path: JsonParser.dib 00:00:00 d #2 parseDibCode / output: Fs / file: JsonParser.dib 00:00:00 d #2 parseDibCode / output: Fs / file: Parser.dib polyglot/apps/parser/build.ps1 / $env:CI:'true'
In [ ]:
{ pwsh ../apps/spiral/build.ps1 } | Invoke-Block
00:00:00 d #1 writeDibCode / output: Fs / path: spiral_compiler.dib 00:00:00 d #2 parseDibCode / output: Fs / file: spiral_compiler.dib 00:00:00 d #1 persistCodeProject / packages: [Fable.Core; FSharp.Control.AsyncSeq; FSharpx.Collections; ... ] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: spiral_compiler / hash: / code.Length: 828726 00:00:00 d #2 buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/Builder/spiral_compiler/spiral_compiler.fsproj 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "/home/runner/work/polyglot/polyglot/target/Builder/spiral_compiler/spiral_compiler.fsproj" --configuration Release --output "/home/runner/work/polyglot/spiral/apps/compiler/dist" --runtime linux-x64"; options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/spiral_compiler/spiral_compiler.fsproj" --configuration Release --output "/home/runner/work/polyglot/spiral/apps/compiler/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/spiral_compiler"; stderr = true } } 00:00:00 v #2 > Determining projects to restore... 00:00:01 v #3 > Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 00:00:01 v #4 > The last full restore is still up to date. Nothing left to do. 00:00:01 v #5 > Total time taken: 0 milliseconds 00:00:01 v #6 > Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 00:00:01 v #7 > Restoring /home/runner/work/polyglot/polyglot/target/Builder/spiral_compiler/spiral_compiler.fsproj 00:00:01 v #8 > Starting restore process. 00:00:01 v #9 > Total time taken: 0 milliseconds 00:00:02 v #10 > Restored /home/runner/work/polyglot/polyglot/target/Builder/spiral_compiler/spiral_compiler.fsproj (in 294 ms). 00:00:31 v #11 > spiral_compiler -> /home/runner/work/polyglot/polyglot/target/Builder/spiral_compiler/bin/Release/net9.0/linux-x64/spiral_compiler.dll 00:00:32 v #12 > spiral_compiler -> /home/runner/work/polyglot/spiral/apps/compiler/dist 00:00:32 d #13 runtime.execute_with_options_async / { exit_code = 0; output_length = 753; options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/spiral_compiler/spiral_compiler.fsproj" --configuration Release --output "/home/runner/work/polyglot/spiral/apps/compiler/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/spiral_compiler"; stderr = true } } spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: /home/runner/work/polyglot/polyglot/target/Builder/spiral_compiler spiral/apps/compiler/build.ps1 / $targetDir = /home/runner/work/polyglot/polyglot/target/Builder/spiral_compiler / $projectName: spiral_compiler / $env:CI:'true' 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "Supervisor.dib", "--retries", "3"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None; stderr = true } } > > ── fsharp ────────────────────────────────────────────────────────────────────── > #nowarn 0686 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ # Supervisor (Polyglot) > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan > dard2.1/FSharp.Control.AsyncSeq.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. > 0/System.Reactive.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ > netstandard2.0/System.Reactive.Linq.dll" > #r > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com > mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli > ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0 > /lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/7.0.0 > /lib/net7.0/Microsoft.AspNetCore.SignalR.Client.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/ > 7.0.0/lib/net7.0/Microsoft.AspNetCore.SignalR.Client.Core.dll" > #r > @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha > rp.Json.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > #if !INTERACTIVE > open Lib > #endif > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Common > open SpiralFileSystem.Operators > open Microsoft.AspNetCore.SignalR.Client > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### sendJson > > ── fsharp ────────────────────────────────────────────────────────────────────── > let sendJson (port : int) (json : string) = async { > let host = "127.0.0.1" > let! portOpen = SpiralNetworking.test_port_open host port > if portOpen then > try > let connection = > HubConnectionBuilder().WithUrl($"http://{host}:{port}").Build() > do! connection.StartAsync () |> Async.AwaitTask > let! result = connection.InvokeAsync<string> ("ClientToServerMsg", > json) |> Async.AwaitTask > do! connection.StopAsync () |> Async.AwaitTask > trace Verbose (fun () -> $"Supervisor.sendJson / port: {port} / > json: {json |> SpiralSm.ellipsis_end 200} / result: {result |> Option.ofObj |> > Option.map (SpiralSm.ellipsis_end 200)}") _locals > return Some result > with ex -> > trace Critical (fun () -> $"Supervisor.sendJson / port: {port} / > json: {json |> SpiralSm.ellipsis_end 200} / ex: {ex |> > SpiralSm.format_exception}") _locals > return None > else > trace Debug (fun () -> $"Supervisor.sendJson / port: {port} / error: > port not open") _locals > return None > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### sendObj > > ── fsharp ────────────────────────────────────────────────────────────────────── > let sendObj port obj = > obj > |> System.Text.Json.JsonSerializer.Serialize > |> sendJson port > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### workspaceRoot > > ── fsharp ────────────────────────────────────────────────────────────────────── > let workspaceRoot = SpiralFileSystem.get_workspace_root () > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### getFilePathFromUri > > ── fsharp ────────────────────────────────────────────────────────────────────── > let getFilePathFromUri uri = > match System.Uri.TryCreate (uri, System.UriKind.Absolute) with > | true, uri -> uri.AbsolutePath |> System.IO.Path.GetFullPath > | _ -> failwith "invalid uri" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### getCompilerPort > > ── fsharp ────────────────────────────────────────────────────────────────────── > let getCompilerPort () = > 13805 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### serialize_obj > > ── fsharp ────────────────────────────────────────────────────────────────────── > let serializeObj obj = > try > obj > |> FSharp.Json.Json.serialize > |> SpiralSm.replace "\\\\" "\\" > |> SpiralSm.replace "\\r\\n" "\n" > |> SpiralSm.replace "\\n" "\n" > with ex -> > trace Critical (fun () -> "Supervisor.serialize_obj / obj: %A{obj}") > _locals > "" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Backend > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Backend = > | Gleam > | Fsharp > | Python > | Cpp > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/fsharpx.collections/3.1.0/lib/netstandard > 2.0/FSharpx.Collections.dll" > #r > @"../../../../../../../.nuget/packages/hopac/0.5.1/lib/netstandard2.0/Hopac.dll" > #r > @"../../../../../../../.nuget/packages/hopac/0.5.1/lib/netstandard2.0/Hopac.Core > .dll" > #r > @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP > arsec.dll" > #r > @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP > arsecCS.dll" > > > > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.dll" > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.dll" > #endif > > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.dll" > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.dll" > #endif > > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.Core.dll" > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.Core.dll" > #endif > > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Cors.dll" > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Cors.dll" > #endif > > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll > " > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll" > #endif > > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Connections.Abstracti > ons.dll" > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Connections.Abstractions. > dll" > #endif > > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Hosting.Abstractions. > dll" > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Hosting.Abstractions.dll" > #endif > > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Http.Connections.dll" > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Http.Connections.dll" > #endif > > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Routing.dll" > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Routing.dll" > #endif > > ── pwsh ──────────────────────────────────────────────────────────────────────── > ls ~/.nuget/packages/microsoft.extensions.logging > > ── [ 181.81ms - stdout ] ─────────────────────────────────────────────────────── > │ 2.1.1 > │ 6.0.0 > │ 8.0.1 > │ 9.0.0-preview.1.24080.9 > │ 9.0.3 > │ 9.0.5 > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/microsoft.extensions.logging/9.0.5/lib/ne > t9.0/Microsoft.Extensions.Logging.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.extensions.logging.abstractions > /9.0.5/lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.extensions.dependencyinjection. > abstractions/9.0.5/lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstracti > ons.dll" > > ── pwsh ──────────────────────────────────────────────────────────────────────── > ls ~/.nuget/packages/system.management > > ── [ 16.69ms - stdout ] ──────────────────────────────────────────────────────── > │ 7.0.0 > │ 9.0.0-preview.1.24080.9 > │ 9.0.4 > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/system.management/9.0.4/lib/netstandard2. > 0/System.Management.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > open spiral_compiler > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### awaitCompiler > > ── fsharp ────────────────────────────────────────────────────────────────────── > let awaitCompiler port cancellationToken = async { > let host = "127.0.0.1" > let struct (ct, disposable) = cancellationToken |> > SpiralThreading.new_disposable_token > let! ct = ct |> SpiralAsync.merge_cancellation_token_with_default_async > > let compiler = MailboxProcessor.Start (fun inbox -> async { > let! availablePort = SpiralNetworking.get_available_port (Some 180) host > port > if availablePort <> port then > inbox.Post (port, false) > else > let compilerDir = > workspaceRoot </> "deps/spiral/apps/compiler/dist" > |> System.IO.Path.GetFullPath > > let compilerPath = compilerDir </> > $"spiral_compiler{SpiralPlatform.get_executable_suffix ()}" > > let! exitCode, result = > SpiralRuntime.execution_options (fun x -> > { x with > l0 = $"\"{compilerPath}\" --port {availablePort} > --default-int i32 --default-float f64" > l1 = Some ct > l3 = Some (fun struct (_, line, _) -> async { > if line |> SpiralSm.contains > $"System.IO.IOException: Failed to bind to address http://{host}:{port}: address > already in use." then > inbox.Post (port, false) > > if line |> SpiralSm.contains $"Server bound to: > http://localhost:{availablePort}" then > let rec 루프 retry = async { > do! > SpiralNetworking.wait_for_port_access > (Some 100) true host availablePort > |> Async.runWithTimeoutAsync 500 > |> Async.Ignore > > let _locals () = $"port: {availablePort} / > retry: {retry} / {_locals ()}" > try > let pingObj = {| Ping = true |} > let! pingResult = pingObj |> sendObj > availablePort > trace Verbose (fun () -> > $"Supervisor.awaitCompiler / Ping / result: '%A{pingResult}'") _locals > > match pingResult with > | Some _ -> inbox.Post (availablePort, > true) > | None -> do! 루프 (retry + 1) > with ex -> > trace Verbose (fun () -> > $"Supervisor.awaitCompiler / Ping / ex: {ex |> SpiralSm.format_exception}") > _locals > do! 루프 (retry + 1) > } > do! 루프 1 > }) > l6 = Some workspaceRoot > } > ) > |> SpiralRuntime.execute_with_options_async > > trace Debug (fun () -> $"Supervisor.awaitCompiler / exitCode: > {exitCode} / result: {result}") _locals > disposable.Dispose () > }, ct) > > let! serverPort, managed = compiler.Receive () > > let connection = > HubConnectionBuilder().WithUrl($"http://{host}:{serverPort}").Build () > do! connection.StartAsync () |> Async.AwaitTask > > let event = Event<_> () > let disposable' = connection.On<string> ("ServerToClientMsg", event.Trigger) > let stream = > FSharp.Control.AsyncSeq.unfoldAsync > (fun () -> async { > let! msg = event.Publish |> Async.AwaitEvent > return Some (msg |> > FSharp.Json.Json.deserialize<ClientErrorsRes>, ()) > }) > () > > let disposable' = > new_disposable (fun () -> > async { > disposable'.Dispose () > do! connection.StopAsync () |> Async.AwaitTask > disposable.Dispose () > if managed > then do! > SpiralNetworking.wait_for_port_access (Some 100) false host > serverPort > |> Async.runWithTimeoutAsync 1500 > |> Async.Ignore > } > |> Async.RunSynchronously > ) > > return > serverPort, > stream, > ct, > disposable' > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Hopac > open Hopac.Infixes > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### server > > ── fsharp ────────────────────────────────────────────────────────────────────── > let server1 = new_server<Job<unit>, obj, string option, Job<unit>, unit> () > let server2 = new_server<Job<unit>, obj, int array, Job<unit>, unit> () > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### buildFile > > ── fsharp ────────────────────────────────────────────────────────────────────── > let buildFile backend timeout port cancellationToken path = > let rec 루프 retry = async { > let fullPath = path |> System.IO.Path.GetFullPath |> > SpiralFileSystem.normalize_path > let fileDir = fullPath |> System.IO.Path.GetDirectoryName > let fileName = fullPath |> System.IO.Path.GetFileNameWithoutExtension > let! code = fullPath |> SpiralFileSystem.read_all_text_async > > // let stream, disposable = fileDir |> FileSystem.watchDirectory (fun _ > -> true) > // use _ = disposable > > let struct (token, disposable) = SpiralThreading.new_disposable_token > cancellationToken > use _ = disposable > > let outputFileName = > match backend with > | Gleam -> $"{fileName}.gleam" > | Fsharp -> $"{fileName}.fsx" > | Python -> $"{fileName}.py" > | Cpp -> $"{fileName}.cpp" > > // let outputContentSeq = > // stream > // |> FSharp.Control.AsyncSeq.chooseAsync (function > // | _, (FileSystem.FileSystemChange.Changed (path, Some text)) > // when (path |> System.IO.Path.GetFileName) = > outputFileName > // -> > // // fileDir </> path |> > SpiralFileSystem.read_all_text_retry_async > // text |> Some |> Async.init > // | _ -> None |> Async.init > // ) > // |> FSharp.Control.AsyncSeq.map (fun content -> > // Some (content |> SpiralSm.replace "\r\n" "\n"), None > // ) > > let printErrorData (data : {| uri : string; errors : RString list |}) = > let fileName = data.uri |> System.IO.Path.GetFileName > let errors = > data.errors > |> List.map snd > |> SpiralSm.concat "\n" > $"{fileName}:\n{errors}" > > > let port = port |> Option.defaultWith getCompilerPort > // let! serverPort, errors, ct, disposable = awaitCompiler port (Some > token) > let serverPort = port > // use _ = disposable > > let errorsSeq = > server1.errors > |> FSharp.Control.AsyncSeq.choose (fun error -> > match error with > | FatalError message -> > Some (message, error) > | TracedError data -> > Some (data.message, error) > | PackageErrors data when data.errors |> List.isEmpty |> not -> > Some (data |> printErrorData, error) > | TokenizerErrors data when data.errors |> List.isEmpty |> not > -> > Some (data |> printErrorData, error) > | ParserErrors data when data.errors |> List.isEmpty |> not -> > Some (data |> printErrorData, error) > | TypeErrors data when data.errors |> List.isEmpty |> not -> > Some (data |> printErrorData, error) > | _ -> None > ) > |> FSharp.Control.AsyncSeq.map (fun (message, error) -> > None, Some (message, error) > ) > > let timerSeq = > 500 > |> FSharp.Control.AsyncSeq.intervalMs > |> FSharp.Control.AsyncSeq.map (fun _ -> None, None) > > let compilerEvent = Event<option<string> * option<string * > ClientErrorsRes>> () > // let disposable' = connection.On<string> ("ServerToClientMsg", > event.Trigger) > let outputContentSeq = > FSharp.Control.AsyncSeq.unfoldAsync > (fun () -> async { > let! msg = compilerEvent.Publish |> Async.AwaitEvent > trace Verbose (fun () -> $"Supervisor.buildFile / > outputContentSeq unfoldAsync / msg: %A{msg}") _locals > return Some (msg, ()) > }) > () > > let compilerEvent2 = Event<option<string> * (string * ClientErrorsRes) > list * int> () > // let disposable' = connection.On<string> ("ServerToClientMsg", > event.Trigger) > let outputContentSeq2 = > FSharp.Control.AsyncSeq.unfoldAsync > (fun () -> async { > let! msg = compilerEvent2.Publish |> Async.AwaitEvent > trace Verbose (fun () -> $"Supervisor.buildFile / > outputContentSeq2 unfoldAsync / msg: %A{msg}") _locals > return Some (msg, ()) > }) > () > > let outputSeq = > [[ outputContentSeq; errorsSeq; timerSeq ]] > // [[ errorsSeq; timerSeq ]] > |> FSharp.Control.AsyncSeq.mergeAll > > let! outputChild = > ((None, [[]], 0), outputSeq) > ||> FSharp.Control.AsyncSeq.scan ( > fun (outputContentResult, errors, typeErrorCount) > (outputContent, error) -> > trace Verbose (fun () -> $"Supervisor.buildFile / > AsyncSeq.scan / outputContent:\n'{outputContent |> Option.map > (SpiralSm.ellipsis_end 1500)} / errors: {errors |> serializeObj} / > outputContentResult: {outputContentResult} / typeErrorCount: {typeErrorCount} / > retry: {retry} / error: {error} / path: {path}'") _locals > match outputContent, error with > | Some outputContent, None -> Some outputContent, errors, > typeErrorCount > | None, Some ( > _, > FatalError "File main has a type error somewhere in its > path." > ) -> > outputContentResult, errors, typeErrorCount + 1 > | None, Some error -> outputContentResult, error :: errors, > typeErrorCount > | None, None when typeErrorCount >= 1 -> > outputContentResult, errors, typeErrorCount + 1 > | _ -> outputContentResult, errors, typeErrorCount > ) > |> FSharp.Control.AsyncSeq.takeWhileInclusive (fun (outputContent, > errors, typeErrorCount) -> > trace > Verbose > (fun () -> $"Supervisor.buildFile / takeWhileInclusive / > outputContent:\n'{outputContent |> Option.map (SpiralSm.ellipsis_end 1500)}' / > errors: {errors |> serializeObj} / typeErrorCount: {typeErrorCount} / retry: > {retry} / path: {path}") > _locals > #if INTERACTIVE > let errorWait = 1 > #else > let errorWait = 1 > #endif > match outputContent, errors with > | None, [[]] when typeErrorCount > errorWait -> false > | _, [[ message, TypeErrors errors ]] -> > compilerEvent.Trigger (None, Some (message, TypeErrors > errors)) > trace Verbose (fun () -> $"Supervisor.buildFile / > takeWhileInclusive / TypeErrors trigger") _locals > false > | None, [[]] -> true > | _ -> false > ) > |> FSharp.Control.AsyncSeq.tryLast > // |> Async.withCancellationToken ct > |> Async.catch > |> Async.runWithTimeoutAsync timeout > |> Async.StartChild > > // do! Async.Sleep 60 > > let fullPathUri = fullPath |> SpiralFileSystem.normalize_path |> > SpiralFileSystem.new_file_uri > > trace Verbose (fun () -> $"Supervisor.buildFile / fullPathUri: > %A{fullPathUri}") (fun () -> "") > > // let fileOpenObj = {| FileOpen = {| uri = fullPathUri; spiText = code > |} |} > > // let! _fileOpenResult = fileOpenObj |> sendObj serverPort > let fileOpenArgs = {| uri = fullPathUri; spiText = code |} > let! _fileOpenResult = > server1.job_null (server1.supervisor *<+ SupervisorReq.FileOpen > fileOpenArgs) > |> Async.AwaitTask > |> Async.runWithTimeoutAsync 60000 > |> Async.map Option.get > trace Verbose (fun () -> $"Supervisor.buildFile / _fileOpenResult: > %A{_fileOpenResult}") (fun () -> "") > > // let! _fileOpenResult = fileOpenObj |> sendObj serverPort > > // do! Async.Sleep 60 > > let backendId = > match backend with > | Gleam -> "Gleam" > | Fsharp -> "Fsharp" > | Python -> "Python + Cuda" > | Cpp -> "Cpp + Cuda" > // let buildFileObj = {| BuildFile = {| uri = fullPathUri; backend = > backendId |} |} > > // let backend = Supervisor.Fsharp > let buildFileArgs = {| uri = fullPathUri; backend = backendId |} > let buildFileResultAsync = > server1.job_val (fun res -> server1.supervisor *<+ > SupervisorReq.BuildFile(buildFileArgs,res)) > |> Async.AwaitTask > |> Async.runWithTimeoutAsync timeout > |> Async.map Option.get > > let buildFileResultAsync = async { > let! buildFileResult = buildFileResultAsync > let buildFileResult = > if buildFileResult = "" || buildFileResult = null > then None > else buildFileResult |> SpiralSm.replace "\r\n" "\n" |> Some > trace Verbose (fun () -> $"Supervisor.buildFile / buildFileResult: > %A{buildFileResult}") (fun () -> "") > if buildFileResult.IsSome then > compilerEvent2.Trigger (buildFileResult, [[]], 0) > return buildFileResult, [[]], 0 > } > > let resultAsync = > outputChild > |> Async.map (fun x -> > trace Verbose (fun () -> $"Supervisor.buildFile / outputChild / > x: %A{x}") _locals > match x with > | Some (Ok (Some (outputCode, errors, typeErrorCount))) -> > let x = > match errors with > | [[ message, TypeErrors errors ]] -> > trace Verbose (fun () -> $"Supervisor.buildFile / > outputChild |> Async.map") _locals > compilerEvent2.Trigger (None, [[ message, TypeErrors > errors ]], 0) > trace Verbose (fun () -> $"Supervisor.buildFile / > outputChild |> Async.map") _locals > | _ -> () > outputCode, errors |> List.distinct |> List.rev, > typeErrorCount > | Some (Error ex) -> > trace Critical (fun () -> $"Supervisor.buildFile / error: > {ex |> SpiralSm.format_exception} / retry: {retry}") _locals > None, [[]], 0 > | _ -> None, [[]], 0 > ) > > trace Verbose (fun () -> $"Supervisor.buildFile / before result: > %A{()}") (fun () -> "") > > // let resultSeq = > // [[| buildFileResultAsync; resultAsync |]] > // |> FSharp.Control.AsyncSeq.ofSeqAsync > > > let buildFileResultSeq = [[| buildFileResultAsync |]] |> > FSharp.Control.AsyncSeq.ofSeqAsync > let resultSeq = [[| resultAsync |]] |> > FSharp.Control.AsyncSeq.ofSeqAsync > > let resultSeq = > [[ outputContentSeq2; buildFileResultSeq; resultSeq ]] > |> FSharp.Control.AsyncSeq.mergeAll > > let! buildFileResult, result, typeErrorCount = > resultSeq > // |> FSharp.Control.AsyncSeq.collect (Array.singleton >> > FSharp.Control.AsyncSeq.ofSeq) > |> FSharp.Control.AsyncSeq.collect (fun x -> > trace Verbose (fun () -> $"Supervisor.buildFile / ofSeqAsync / > x: %A{x}") _locals > match x with > | Some _, _, _ as x -> [[| x |]] > | _, _ :: _, _ as x -> [[| x |]] > | _ -> [[||]] > |> FSharp.Control.AsyncSeq.ofSeq > ) > |> FSharp.Control.AsyncSeq.tryFirst > |> Async.map Option.get > > trace Verbose (fun () -> $"Supervisor.buildFile / result: %A{result} / > buildFileResult: %A{buildFileResult} / typeErrorCount: {typeErrorCount}") (fun > () -> "") > > match buildFileResult with > // | None when typeErrorCount > 0 && retry = 0 -> > // trace Verbose (fun () -> $"Supervisor.buildFile / result: > {result} / retry: {retry} / typeErrorCount: {typeErrorCount} / fileDir: > {fileDir} / targetDir: {targetDir}") _locals > // return! 루프 (retry + 1) > | _ -> > let targetDir = workspaceRoot </> "target" > trace Verbose (fun () -> $"Supervisor.buildFile / retry: {retry} / > typeErrorCount: {typeErrorCount} / fileDir: {fileDir} / targetDir: {targetDir}") > _locals > if fileDir |> SpiralSm.starts_with targetDir then > let fileDirUri = fileDir |> SpiralFileSystem.normalize_path |> > SpiralFileSystem.new_file_uri > > // let fileDeleteObj = {| FileDelete = {| uris = [[| fileDirUri > |]] |} |} > // let! _fileDeleteResult = fileDeleteObj |> sendObj serverPort > let fileDeleteArgs = {| uris = [[| fileDirUri |]] |} > let! _fileDeleteResult = > server1.job_null (server1.supervisor *<+ > SupervisorReq.FileDelete fileDeleteArgs) > |> Async.AwaitTask > () > > let outputPath = fileDir </> outputFileName > return outputPath, buildFileResult, result > } > 루프 0 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### SpiralInput > > ── fsharp ────────────────────────────────────────────────────────────────────── > type SpiralInput = > | Spi of string * string option > | Spir of string > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### persistCode > > ── fsharp ────────────────────────────────────────────────────────────────────── > let persistCode (input: {| backend : Backend option; input: SpiralInput; > packages: string [[]] |}) = async { > let targetDir = workspaceRoot </> "target/spiral_Eval" > > let packagesDir = targetDir </> "packages" > > let hashHex = $"%A{input.backend}%A{input.input}" |> SpiralCrypto.hash_text > > let packageDir = packagesDir </> hashHex > > let packageDir = > if input.backend = Some Gleam > then packageDir </> "src" > else packageDir > > packageDir |> System.IO.Directory.CreateDirectory |> ignore > > let moduleName = "main" > > let spirModule, spiModule = > match input.input with > | Spi (_spi, Some _spir) -> true, true > | Spi (_spi, None) -> false, true > | Spir _spir -> true, false > |> fun (spir, spi) -> > (if spir then $"{moduleName}_real*-" else ""), > if spi then moduleName else "" > > let libLinkTargetPath = workspaceRoot </> "../spiral/lib/spiral" > let libLinkPath = packageDir </> "spiral" > > let packagesModule = > input.packages > |> Array.map (fun package -> > let path = workspaceRoot </> package > let packageName = path |> System.IO.Path.GetFileName > let libLinkPath = packageDir </> packageName > libLinkPath |> SpiralFileSystem.link_directory path > $"{packageName}-" > ) > |> String.concat "\n " > > let packageDir' = > if input.packages |> Array.isEmpty > then workspaceRoot </> "../spiral/lib" > else > libLinkPath |> SpiralFileSystem.link_directory libLinkTargetPath > packageDir > > let spiprojPath = packageDir </> "package.spiproj" > let spiprojCode = > $"""packageDir: {packageDir'} > packages: > |core- > spiral- > {packagesModule} > modules: > {spirModule} > {spiModule} > """ > do! spiprojCode |> SpiralFileSystem.write_all_text_exists spiprojPath > > let spirPath = packageDir </> $"{moduleName}_real.spir" > let spiPath = packageDir </> $"{moduleName}.spi" > > let spirCode, spiCode = > match input.input with > | Spi (spi, Some spir) -> Some spir, Some spi > | Spi (spi, None) -> None, Some spi > | Spir spir -> Some spir, None > > match spirCode with > | Some spir -> do! spir |> SpiralFileSystem.write_all_text_exists spirPath > | None -> () > match spiCode with > | Some spi -> do! spi |> SpiralFileSystem.write_all_text_exists spiPath > | None -> () > > let spiralPath = > match input.input with > | Spi _ -> spiPath > | Spir _ -> spirPath > match input.backend with > | None -> return spiralPath, None > | Some backend -> > let outputFileName = > let fileName = > match input.input with > | Spi _ -> moduleName > | Spir _ -> $"{moduleName}_real" > match backend with > | Gleam -> $"{fileName}.gleam" > | Fsharp -> $"{fileName}.fsx" > | Python -> $"{fileName}.py" > | Cpp -> $"{fileName}.cpp" > let outputPath = packageDir </> outputFileName > if outputPath |> System.IO.File.Exists |> not > then return spiralPath, None > else > let! oldCode = spiralPath |> SpiralFileSystem.read_all_text_async > if oldCode <> (spiCode |> Option.defaultValue (spirCode |> > Option.defaultValue "")) > then return spiralPath, None > else > let! outputCode = outputPath |> > SpiralFileSystem.read_all_text_async > return spiralPath, Some (outputPath, outputCode |> > SpiralSm.replace "\r\n" "\n") > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### buildCode > > ── fsharp ────────────────────────────────────────────────────────────────────── > let buildCode backend packages isCache timeout cancellationToken input = async { > let! mainPath, outputCache = > persistCode {| input = input; backend = Some backend; packages = > packages |} > match outputCache with > | Some (outputPath, outputCode) when isCache -> return mainPath, > (outputPath, Some outputCode), [[]] > | _ -> > let! outputPath, outputCode, errors = mainPath |> buildFile backend > timeout None cancellationToken > return mainPath, (outputPath, outputCode), errors > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > SpiralTrace.TraceLevel.US0_0 |> set_trace_level > """inl app () = > console.write_line "text" > 1i32 > > inl main () = > app > |> dyn > |> ignore > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp [[||]] false 20000 None > |> Async.runWithTimeout 21000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > Some """let rec closure1 () () : unit = > let v0 : (string -> unit) = System.Console.WriteLine > let v1 : string = "text" > v0 v1 > and closure0 () () : int32 = > let v3 : unit = () > let v4 : (unit -> unit) = closure1() > let v5 : unit = (fun () -> v4 (); v3) () > 1 > let v0 : (unit -> int32) = closure0() > () > """, > [[]] > ) > ) > > ── [ 2.73s - stdout ] ────────────────────────────────────────────────────────── > │ 00:00:56 v #1 Supervisor.buildFile / fullPathUri: > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd043 > 17d5605c65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi" > │ 00:00:56 v #2 Supervisor.buildFile / _fileOpenResult: > <null> > │ 00:00:56 v #3 Supervisor.buildFile / before result: () > │ 00:00:56 v #4 Supervisor.buildFile / takeWhileInclusive > / outputContent: > │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c > 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi > │ 00:00:56 v #5 Supervisor.buildFile / AsyncSeq.scan / > outputContent: > │ ' / errors: [] / outputContentResult: / typeErrorCount: 0 / > retry: 0 / error: / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c > 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi' > │ 00:00:56 v #6 Supervisor.buildFile / takeWhileInclusive > / outputContent: > │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c > 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi > │ 00:00:56 v #330 Supervisor.buildFile / AsyncSeq.scan / > outputContent: > │ ' / errors: [] / outputContentResult: / typeErrorCount: 0 / > retry: 0 / error: / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c > 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi' > │ 00:00:56 v #331 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c > 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi > │ 00:00:57 v #813 Supervisor.buildFile / AsyncSeq.scan / > outputContent: > │ ' / errors: [] / outputContentResult: / typeErrorCount: 0 / > retry: 0 / error: / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c > 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi' > │ 00:00:57 v #814 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c > 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi > │ 00:00:57 v #1132 Supervisor.buildFile / AsyncSeq.scan / > outputContent: > │ ' / errors: [] / outputContentResult: / typeErrorCount: 0 / > retry: 0 / error: / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c > 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi' > │ 00:00:57 v #1133 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c > 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi > │ 00:00:58 v #1302 Supervisor.buildFile / AsyncSeq.scan / > outputContent: > │ ' / errors: [] / outputContentResult: / typeErrorCount: 0 / > retry: 0 / error: / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c > 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi' > │ 00:00:58 v #1303 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c > 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6/main.spi > │ 00:00:58 v #1317 Supervisor.buildFile / buildFileResult: > Some > │ "let rec closure1 () () : unit = > │ let v0 : (string -> unit) = System.Console.WriteLine > │ let v1 : string = "text" > │ v0 v1 > │ and closure0 () () : int32 = > │ let v3 : unit = () > │ let v4 : (unit -> unit) = closure1() > │ let v5 : unit = (fun () -> v4 (); v3) () > │ 1 > │ let v0 : (unit -> int32) = closure0() > │ () > │ " > │ 00:00:58 v #1318 Supervisor.buildFile / > outputContentSeq2 unfoldAsync / msg: (Some > │ "let rec closure1 () () : unit = > │ let v0 : (string -> unit) = System.Console.WriteLine > │ let v1 : string = "text" > │ v0 v1 > │ and closure0 () () : int32 = > │ let v3 : unit = () > │ let v4 : (unit -> unit) = closure1() > │ let v5 : unit = (fun () -> v4 (); v3) () > │ 1 > │ let v0 : (unit -> int32) = closure0() > │ () > │ ", > │ [], 0) > │ 00:00:58 v #1319 Supervisor.buildFile / ofSeqAsync / x: > (Some > │ "let rec closure1 () () : unit = > │ let v0 : (string -> unit) = System.Console.WriteLine > │ let v1 : string = "text" > │ v0 v1 > │ and closure0 () () : int32 = > │ let v3 : unit = () > │ let v4 : (unit -> unit) = closure1() > │ let v5 : unit = (fun () -> v4 (); v3) () > │ 1 > │ let v0 : (unit -> int32) = closure0() > │ () > │ ", > │ [], 0) > │ 00:00:58 v #1320 Supervisor.buildFile / result: [] / > buildFileResult: Some > │ "let rec closure1 () () : unit = > │ let v0 : (string -> unit) = System.Console.WriteLine > │ let v1 : string = "text" > │ v0 v1 > │ and closure0 () () : int32 = > │ let v3 : unit = () > │ let v4 : (unit -> unit) = closure1() > │ let v5 : unit = (fun () -> v4 (); v3) () > │ 1 > │ let v0 : (unit -> int32) = closure0() > │ () > │ " / typeErrorCount: 0 > │ 00:00:58 v #1321 Supervisor.buildFile / retry: 0 / > typeErrorCount: 0 / fileDir: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/22ccd04317d5605c > 65f81c7f777766f357e85dc69f2d6d04b9dc60aebd08a0d6 / targetDir: > /home/runner/work/polyglot/polyglot/target > │ Some > │ (Some > │ "let rec closure1 () () : unit = > │ let v0 : (string -> unit) = System.Console.WriteLine > │ let v1 : string = "text" > │ v0 v1 > │ and closure0 () () : int32 = > │ let v3 : unit = () > │ let v4 : (unit -> unit) = closure1() > │ let v5 : unit = (fun () -> v4 (); v3) () > │ 1 > │ let v0 : (unit -> int32) = closure0() > │ () > │ ", > │ []) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """ > inl init_series start end inc = > inl total : f64 = conv ((end - start) / inc) + 1 > listm.init total (conv >> (*) inc >> (+) start) : list f64 > > type integration = (f64 -> f64) -> f64 -> f64 -> f64 > > inl integral dt : integration = > fun f a b => > init_series (a + dt / 2) (b - dt / 2) dt > |> listm.map (f >> (*) dt) > |> listm.fold (+) 0 > > inl main () = > integral 0.1 (fun x => x ** 2) 0 1 > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp [[||]] false 10000 None > |> Async.runWithTimeout 11000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > Some "0.3325000000000001\n", > [[]] > ) > ) > > ── [ 353.28ms - stdout ] ─────────────────────────────────────────────────────── > │ 00:00:58 v #1341 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d > 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi > │ 00:00:58 v #1342 Supervisor.buildFile / AsyncSeq.scan / > outputContent: > │ ' / errors: [] / outputContentResult: / typeErrorCount: 0 / > retry: 0 / error: / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d > 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi' > │ 00:00:58 v #1343 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d > 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi > │ 00:00:58 v #1344 Supervisor.buildFile / fullPathUri: > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414d > e2a2a92d9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db/main.spi" > │ 00:00:58 v #1345 Supervisor.buildFile / _fileOpenResult: > <null> > │ 00:00:58 v #1346 Supervisor.buildFile / before result: > () > │ 00:00:58 v #1582 Supervisor.buildFile / buildFileResult: > Some "0.3325000000000001 > │ " > │ 00:00:58 v #1583 Supervisor.buildFile / > outputContentSeq2 unfoldAsync / msg: (Some "0.3325000000000001 > │ ", [], 0) > │ 00:00:58 v #1584 Supervisor.buildFile / ofSeqAsync / x: > (Some "0.3325000000000001 > │ ", [], 0) > │ 00:00:58 v #1585 Supervisor.buildFile / result: [] / > buildFileResult: Some "0.3325000000000001 > │ " / typeErrorCount: 0 > │ 00:00:58 v #1586 Supervisor.buildFile / retry: 0 / > typeErrorCount: 0 / fileDir: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c127414de2a2a92d > 9fd93ea5a8e9312a6aad9129ffd3cbd56ac7f0327106f1db / targetDir: > /home/runner/work/polyglot/polyglot/target > │ Some (Some "0.3325000000000001 > │ ", []) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """ > inl init_series start end inc = > inl total : f64 = conv ((end - start) / inc) + 1 > listm.init total (conv >> (*) inc >> (+) start) : list f64 > > type integration = (f64 -> f64) -> f64 -> f64 -> f64 > > inl integral dt : integration = > fun f a b => > init_series (a + dt / 2) (b - dt / 2) dt > |> listm.map (f >> (*) dt) > |> listm.fold (+) 0 > > inl main () = > integral 0.1 (fun x => x ** 2) 0 1 > """ > |> fun code -> Spi (code, None) > |> buildCode Python [[||]] false 10000 None > |> Async.runWithTimeout 11000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > Some @"kernels_aux = r"""""" > // The types of these two will be replaced during compilation by the Spiral code > generator. > // It matches on `using default_int = ` and `;` with the inner part being > replaced so the form should be kept as is. > // The two statements need to begin at the start of a line. > using default_int = int; > using default_uint = unsigned int; > > #ifndef __NVRTC__ > // NVRTC has these includes by default so they need to be left out if it is used > as the compiler. > #include <new> > #include <assert.h> > #include <stdio.h> > #endif > > // For error checking on the host. > #define gpuErrchk(ans) { gpuAssert((ans), __FILE__, __LINE__); } > template <typename T> inline __device__ void destroy(T& obj) { obj.~T(); } > inline void gpuAssert(cudaError error, const char *file, int line, bool > abort=true) { > if (error != cudaSuccess) { > fprintf(stderr, ""GPUassert: %s %s %d\n"", cudaGetErrorString(error), > file, line); > if (abort) exit(error); > } > } > > template <typename el> > struct sptr // Shared pointer for the Spiral datatypes. They have to have the > refc field inside them to work. > { > el* base; > > __device__ sptr() : base(nullptr) {} > __device__ sptr(el* ptr) : base(ptr) { this->base->refc++; } > > __device__ ~sptr() > { > if (this->base != nullptr && --this->base->refc == 0) > { > delete this->base; > this->base = nullptr; > } > } > > __device__ sptr(sptr& x) > { > this->base = x.base; > this->base->refc++; > } > > __device__ sptr(sptr&& x) > { > this->base = x.base; > x.base = nullptr; > } > > __device__ sptr& operator=(sptr& x) > { > if (this->base != x.base) > { > delete this->base; > this->base = x.base; > this->base->refc++; > } > return *this; > } > > __device__ sptr& operator=(sptr&& x) > { > if (this->base != x.base) > { > delete this->base; > this->base = x.base; > x.base = nullptr; > } > return *this; > } > }; > > template <typename el> > struct csptr : public sptr<el> > { // Shared pointer for closures specifically. > using sptr<el>::sptr; > template <typename... Args> > __device__ auto operator()(Args... args) -> > decltype(this->base->operator()(args...)) > { > return this->base->operator()(args...); > } > }; > > template <typename el, default_int max_length> > struct static_array > { > el ptr[[max_length]]; > __device__ el& operator[[]](default_int i) { > assert(""The index has to be in range."" && 0 <= i && i < max_length); > return this->ptr[[i]]; > } > }; > > template <typename el, default_int max_length> > struct static_array_list > { > default_int length{ 0 }; > el ptr[[max_length]]; > > __device__ el& operator[[]](default_int i) { > assert(""The index has to be in range."" && 0 <= i && i < this->length); > return this->ptr[[i]]; > } > __device__ void push(el& x) { > ptr[[this->length++]] = x; > assert(""The array after pushing should not be greater than max > length."" && this->length <= max_length); > } > __device__ void push(el&& x) { > ptr[[this->length++]] = std::move(x); > assert(""The array after pushing should not be greater than max > length."" && this->length <= max_length); > } > __device__ el pop() { > assert(""The array before popping should be greater than 0."" && 0 < > this->length); > auto x = ptr[[--this->length]]; > ptr[[this->length]].~el(); > new (&ptr[[this->length]]) el(); > return x; > } > // Should be used only during initialization. > __device__ void unsafe_set_length(default_int i) { > assert(""The new length should be in range."" && 0 <= i && i <= > max_length); > this->length = i; > } > }; > > template <typename el, default_int max_length> > struct dynamic_array_base > { > int refc{ 0 }; > el* ptr; > > __device__ dynamic_array_base() : ptr(new el[[max_length]]) {} > __device__ ~dynamic_array_base() { delete[[]] this->ptr; } > > __device__ el& operator[[]](default_int i) { > assert(""The index has to be in range."" && 0 <= i && i < this->length); > return this->ptr[[i]]; > } > }; > > template <typename el, default_int max_length> > struct dynamic_array > { > sptr<dynamic_array_base<el, max_length>> ptr; > > __device__ dynamic_array() = default; > __device__ dynamic_array(bool t) : ptr(new dynamic_array_base<el, > max_length>()) {} > __device__ el& operator[[]](default_int i) { > return this->ptr.base->operator[[]](i); > } > }; > > template <typename el, default_int max_length> > struct dynamic_array_list_base > { > int refc{ 0 }; > default_int length{ 0 }; > el* ptr; > > __device__ dynamic_array_list_base() : ptr(new el[[max_length]]) {} > __device__ dynamic_array_list_base(default_int l) : ptr(new > el[[max_length]]) { this->unsafe_set_length(l); } > __device__ ~dynamic_array_list_base() { delete[[]] this->ptr; } > > __device__ el& operator[[]](default_int i) { > assert(""The index has to be in range."" && 0 <= i && i < this->length); > return this->ptr[[i]]; > } > __device__ void push(el& x) { > ptr[[this->length++]] = x; > assert(""The array after pushing should not be greater than max > length."" && this->length <= max_length); > } > __device__ void push(el&& x) { > ptr[[this->length++]] = std::move(x); > assert(""The array after pushing should not be greater than max > length."" && this->length <= max_length); > } > __device__ el pop() { > assert(""The array before popping should be greater than 0."" && 0 < > this->length); > auto x = ptr[[--this->length]]; > ptr[[this->length]].~el(); > new (&ptr[[this->length]]) el(); > return x; > } > // Should be used only during initialization. > __device__ void unsafe_set_length(default_int i) { > assert(""The new length should be in range."" && 0 <= i && i <= > max_length); > this->length = i; > } > }; > > template <typename el, default_int max_length> > struct dynamic_array_list > { > sptr<dynamic_array_list_base<el, max_length>> ptr; > > __device__ dynamic_array_list() = default; > __device__ dynamic_array_list(default_int l) : ptr(new > dynamic_array_list_base<el, max_length>(l)) {} > > __device__ el& operator[[]](default_int i) { > return this->ptr.base->operator[[]](i); > } > __device__ void push(el& x) { > this->ptr.base->push(x); > } > __device__ void push(el&& x) { > this->ptr.base->push(std::move(x)); > } > __device__ el pop() { > return this->ptr.base->pop(); > } > // Should be used only during initialization. > __device__ void unsafe_set_length(default_int i) { > this->ptr.base->unsafe_set_length(i); > } > __device__ default_int length_() { > return this->ptr.base->length; > } > }; > """""" > class static_array(): > def __init__(self, length): > self.ptr = [[]] > for _ in range(length): > self.ptr.append(None) > > def __getitem__(self, index): > assert 0 <= index < len(self.ptr), ""The get index needs to be in > range."" > return self.ptr[[index]] > > def __setitem__(self, index, value): > assert 0 <= index < len(self.ptr), ""The set index needs to be in > range."" > self.ptr[[index]] = value > > class static_array_list(static_array): > def __init__(self, length): > super().__init__(length) > self.length = 0 > > def __getitem__(self, index): > assert 0 <= index < self.length, ""The get index needs to be in range."" > return self.ptr[[index]] > > def __setitem__(self, index, value): > assert 0 <= index < self.length, ""The set index needs to be in range."" > self.ptr[[index]] = value > > def push(self,value): > assert (self.length < len(self.ptr)), ""The length before pushing has to > be less than the maximum length of the array."" > self.ptr[[self.length]] = value > self.length += 1 > > def pop(self): > assert (0 < self.length), ""The length before popping has to be greater > than 0."" > self.length -= 1 > return self.ptr[[self.length]] > > def unsafe_set_length(self,i): > assert 0 <= i <= len(self.ptr), ""The new length has to be in range."" > self.length = i > > class dynamic_array(static_array): > pass > > class dynamic_array_list(static_array_list): > def length_(self): return self.length > > > kernels_main = r"""""" > """""" > from main_auto import * > kernels = kernels_aux + kernels_main > import cupy as cp > import numpy as np > from dataclasses import dataclass > from typing import NamedTuple, Union, Callable, Tuple > i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = int; u32 = int; u64 = > int; f32 = float; f64 = float; char = str; string = str > cuda = False > > > # fwd_dcls > # types > # functions > # main_defs > def main_body(): > return 0.3325000000000001 > > def main(): > r = main_body() > if cuda: cp.cuda.get_current_stream().synchronize() # This line is here so > the `__trap()` calls on the kernel aren't missed. > return r > > if __name__ == '__main__': result = main(); None if result is None else > print(result) > ", > [[]] > ) > ) > > ── [ 425.62ms - stdout ] ─────────────────────────────────────────────────────── > │ 00:00:59 v #1607 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a4224c9f3d674d70 > fd56b6ecd3ae8c8ff3178a7124ae34f592336fef263568ea/main.spi > │ 00:00:59 v #1608 Supervisor.buildFile / AsyncSeq.scan / > outputContent: > │ ' / errors: [] / outputContentResult: / typeErrorCount: 0 / > retry: 0 / error: / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a4224c9f3d674d70 > fd56b6ecd3ae8c8ff3178a7124ae34f592336fef263568ea/main.spi' > │ 00:00:59 v #1609 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a4224c9f3d674d70 > fd56b6ecd3ae8c8ff3178a7124ae34f592336fef263568ea/main.spi > │ 00:00:59 v #1610 Supervisor.buildFile / fullPathUri: > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a4224c9f > 3d674d70fd56b6ecd3ae8c8ff3178a7124ae34f592336fef263568ea/main.spi" > │ 00:00:59 v #1611 Supervisor.buildFile / _fileOpenResult: > <null> > │ 00:00:59 v #1612 Supervisor.buildFile / before result: > () > │ 00:00:59 v #1849 Supervisor.buildFile / buildFileResult: > Some > │ "kernels_aux = r""" > │ // The types of these two will be replaced during compilation > by the Spiral code generator. > │ // It matches on `using default_int = ` and `;` with the > inner part being replaced so the form should be kept as is. > │ // The two statements need to begin at the start of a line. > │ using default_int = int; > │ using default_uint = unsigned int; > │ > │ #ifndef __NVRTC__ > │ // NVRTC has these includes by default so they need to be > left out if it is used as the compiler. > │ #include <new> > │ #include <assert.h> > │ #include <stdio.h> > │ #endif > │ > │ // For error checking on the host. > │ #define gpuErrchk(ans) { gpuAssert((ans), __FILE__, > __LINE__); } > │ template <typename T> inline __device__ void destroy(T& obj) > { obj.~T(); } > │ inline void gpuAssert(cudaError error, const char *file, int > line, bool abort=true) { > │ if (error != cudaSuccess) { > │ fprintf(stderr, "GPUassert: %s %s %d\n", > cudaGetErrorString(error), file, line); > │ if (abort) exit(error); > │ } > │ } > │ > │ template <typename el> > │ struct sptr // Shared pointer for the Spiral datatypes. They > have to have the refc field inside them to work. > │ { > │ el* base; > │ > │ __device__ sptr() : base(nullptr) {} > │ __device__ sptr(el* ptr) : base(ptr) { > this->base->refc++; } > │ > │ __device__ ~sptr() > │ { > │ if (this->base != nullptr && --this->base->refc == 0) > │ { > │ delete this->base; > │ this->base = nullptr; > │ } > │ } > │ > │ __device__ sptr(sptr& x) > │ { > │ this->base = x.base; > │ this->base->refc++; > │ } > │ > │ __device__ sptr(sptr&& x) > │ { > │ this->base = x.base; > │ x.base = nullptr; > │ } > │ > │ __device__ sptr& operator=(sptr& x) > │ { > │ if (this->base != x.base) > │ { > │ delete this->base; > │ this->base = x.base; > │ this->base->refc++; > │ } > │ return *this; > │ } > │ > │ __device__ sptr& operator=(sptr&& x) > │ { > │ if (this->base != x.base) > │ { > │ delete this->base; > │ this->base = x.base; > │ x.base = nullptr; > │ } > │ return *this; > │ } > │ }; > │ > │ template <typename el> > │ struct csptr : public sptr<el> > │ { // Shared pointer for closures specifically. > │ using sptr<el>::sptr; > │ template <typename... Args> > │ __device__ auto operator()(Args... args) -> > decltype(this->base->operator()(args...)) > │ { > │ return this->base->operator()(args...); > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct static_array > │ { > │ el ptr[max_length]; > │ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < max_length); > │ return this->ptr[i]; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct static_array_list > │ { > │ default_int length{ 0 }; > │ el ptr[max_length]; > │ > │ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < this->length); > │ return this->ptr[i]; > │ } > │ __device__ void push(el& x) { > │ ptr[this->length++] = x; > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __device__ void push(el&& x) { > │ ptr[this->length++] = std::move(x); > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __device__ el pop() { > │ assert("The array before popping should be greater > than 0." && 0 < this->length); > │ auto x = ptr[--this->length]; > │ ptr[this->length].~el(); > │ new (&ptr[this->length]) el(); > │ return x; > │ } > │ // Should be used only during initialization. > │ __device__ void unsafe_set_length(default_int i) { > │ assert("The new length should be in range." && 0 <= i > && i <= max_length); > │ this->length = i; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array_base > │ { > │ int refc{ 0 }; > │ el* ptr; > │ > │ __device__ dynamic_array_base() : ptr(new el[max_length]) > {} > │ __device__ ~dynamic_array_base() { delete[] this->ptr; } > │ > │ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < this->length); > │ return this->ptr[i]; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array > │ { > │ sptr<dynamic_array_base<el, max_length>> ptr; > │ > │ __device__ dynamic_array() = default; > │ __device__ dynamic_array(bool t) : ptr(new > dynamic_array_base<el, max_length>()) {} > │ __device__ el& operator[](default_int i) { > │ return this->ptr.base->operator[](i); > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array_list_base > │ { > │ int refc{ 0 }; > │ default_int length{ 0 }; > │ el* ptr; > │ > │ __device__ dynamic_array_list_base() : ptr(new > el[max_length]) {} > │ __device__ dynamic_array_list_base(default_int l) : > ptr(new el[max_length]) { this->unsafe_set_length(l); } > │ __device__ ~dynamic_array_list_base() { delete[] > this->ptr; } > │ > │ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < this->length); > │ return this->ptr[i]; > │ } > │ __device__ void push(el& x) { > │ ptr[this->length++] = x; > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __device__ void push(el&& x) { > │ ptr[this->length++] = std::move(x); > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __device__ el pop() { > │ assert("The array before popping should be greater > than 0." && 0 < this->length); > │ auto x = ptr[--this->length]; > │ ptr[this->length].~el(); > │ new (&ptr[this->length]) el(); > │ return x; > │ } > │ // Should be used only during initialization. > │ __device__ void unsafe_set_length(default_int i) { > │ assert("The new length should be in range." && 0 <= i > && i <= max_length); > │ this->length = i; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array_list > │ { > │ sptr<dynamic_array_list_base<el, max_length>> ptr; > │ > │ __device__ dynamic_array_list() = default; > │ __device__ dynamic_array_list(default_int l) : ptr(new > dynamic_array_list_base<el, max_length>(l)) {} > │ > │ __device__ el& operator[](default_int i) { > │ return this->ptr.base->operator[](i); > │ } > │ __device__ void push(el& x) { > │ this->ptr.base->push(x); > │ } > │ __device__ void push(el&& x) { > │ this->ptr.base->push(std::move(x)); > │ } > │ __device__ el pop() { > │ return this->ptr.base->pop(); > │ } > │ // Should be used only during initialization. > │ __device__ void unsafe_set_length(default_int i) { > │ this->ptr.base->unsafe_set_length(i); > │ } > │ __device__ default_int length_() { > │ return this->ptr.base->length; > │ } > │ }; > │ """ > │ class static_array(): > │ def __init__(self, length): > │ self.ptr = [] > │ for _ in range(length): > │ self.ptr.append(None) > │ > │ def __getitem__(self, index): > │ assert 0 <= index < len(self.ptr), "The get index > needs to be in range." > │ return self.ptr[index] > │ > │ def __setitem__(self, index, value): > │ assert 0 <= index < len(self.ptr), "The set index > needs to be in range." > │ self.ptr[index] = value > │ > │ class static_array_list(static_array): > │ def __init__(self, length): > │ super().__init__(length) > │ self.length = 0 > │ > │ def __getitem__(self, index): > │ assert 0 <= index < self.length, "The get index needs > to be in range." > │ return self.ptr[index] > │ > │ def __setitem__(self, index, value): > │ assert 0 <= index < self.length, "The set index needs > to be in range." > │ self.ptr[index] = value > │ > │ def push(self,value): > │ assert (self.length < len(self.ptr)), "The length > before pushing has to be less than the maximum length of the array." > │ self.ptr[self.length] = value > │ self.length += 1 > │ > │ def pop(self): > │ assert (0 < self.length), "The length before popping > has to be greater than 0." > │ self.length -= 1 > │ return self.ptr[self.length] > │ > │ def unsafe_set_length(self,i): > │ assert 0 <= i <= len(self.ptr), "The new length has > to be in range." > │ self.length = i > │ > │ class dynamic_array(static_array): > │ pass > │ > │ class dynamic_array_list(static_array_list): > │ def length_(self): return self.length > │ > │ > │ kernels_main = r""" > │ """ > │ from main_auto import * > │ kernels = kernels_aux + kernels_main > │ import cupy as cp > │ import numpy as np > │ from dataclasses import dataclass > │ from typing import NamedTuple, Union, Callable, Tuple > │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = > int; u32 = int; u64 = int; f32 = float; f64 = float; char = str; string = str > │ cuda = False > │ > │ > │ # fwd_dcls > │ # types > │ # functions > │ # main_defs > │ def main_body(): > │ return 0.3325000000000001 > │ > │ def main(): > │ r = main_body() > │ if cuda: cp.cuda.get_current_stream().synchronize() # > This line is here so the `__trap()` calls on the kernel aren't missed. > │ return r > │ > │ if __name__ == '__main__': result = main(); None if result is > None else print(result) > │ " > │ 00:00:59 v #1850 Supervisor.buildFile / > outputContentSeq2 unfoldAsync / msg: (Some > │ "kernels_aux = r""" > │ // The types of these two will be replaced during compilation > by the Spiral code generator. > │ // It matches on `using default_int = ` and `;` with the > inner part being replaced so the form should be kept as is. > │ // The two statements need to begin at the start of a line. > │ using default_int = int; > │ using default_uint = unsigned int; > │ > │ #ifndef __NVRTC__ > │ // NVRTC has these includes by default so they need to be > left out if it is used as the compiler. > │ #include <new> > │ #include <assert.h> > │ #include <stdio.h> > │ #endif > │ > │ // For error checking on the host. > │ #define gpuErrchk(ans) { gpuAssert((ans), __FILE__, > __LINE__); } > │ template <typename T> inline __device__ void destroy(T& obj) > { obj.~T(); } > │ inline void gpuAssert(cudaError error, const char *file, int > line, bool abort=true) { > │ if (error != cudaSuccess) { > │ fprintf(stderr, "GPUassert: %s %s %d\n", > cudaGetErrorString(error), file, line); > │ if (abort) exit(error); > │ } > │ } > │ > │ template <typename el> > │ struct sptr // Shared pointer for the Spiral datatypes. They > have to have the refc field inside them to work. > │ { > │ el* base; > │ > │ __device__ sptr() : base(nullptr) {} > │ __device__ sptr(el* ptr) : base(ptr) { > this->base->refc++; } > │ > │ __device__ ~sptr() > │ { > │ if (this->base != nullptr && --this->base->refc == 0) > │ { > │ delete this->base; > │ this->base = nullptr; > │ } > │ } > │ > │ __device__ sptr(sptr& x) > │ { > │ this->base = x.base; > │ this->base->refc++; > │ } > │ > │ __device__ sptr(sptr&& x) > │ { > │ this->base = x.base; > │ x.base = nullptr; > │ } > │ > │ __device__ sptr& operator=(sptr& x) > │ { > │ if (this->base != x.base) > │ { > │ delete this->base; > │ this->base = x.base; > │ this->base->refc++; > │ } > │ return *this; > │ } > │ > │ __device__ sptr& operator=(sptr&& x) > │ { > │ if (this->base != x.base) > │ { > │ delete this->base; > │ this->base = x.base; > │ x.base = nullptr; > │ } > │ return *this; > │ } > │ }; > │ > │ template <typename el> > │ struct csptr : public sptr<el> > │ { // Shared pointer for closures specifically. > │ using sptr<el>::sptr; > │ template <typename... Args> > │ __device__ auto operator()(Args... args) -> > decltype(this->base->operator()(args...)) > │ { > │ return this->base->operator()(args...); > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct static_array > │ { > │ el ptr[max_length]; > │ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < max_length); > │ return this->ptr[i]; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct static_array_list > │ { > │ default_int length{ 0 }; > │ el ptr[max_length]; > │ > │ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < this->length); > │ return this->ptr[i]; > │ } > │ __device__ void push(el& x) { > │ ptr[this->length++] = x; > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __device__ void push(el&& x) { > │ ptr[this->length++] = std::move(x); > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __device__ el pop() { > │ assert("The array before popping should be greater > than 0." && 0 < this->length); > │ auto x = ptr[--this->length]; > │ ptr[this->length].~el(); > │ new (&ptr[this->length]) el(); > │ return x; > │ } > │ // Should be used only during initialization. > │ __device__ void unsafe_set_length(default_int i) { > │ assert("The new length should be in range." && 0 <= i > && i <= max_length); > │ this->length = i; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array_base > │ { > │ int refc{ 0 }; > │ el* ptr; > │ > │ __device__ dynamic_array_base() : ptr(new el[max_length]) > {} > │ __device__ ~dynamic_array_base() { delete[] this->ptr; } > │ > │ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < this->length); > │ return this->ptr[i]; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array > │ { > │ sptr<dynamic_array_base<el, max_length>> ptr; > │ > │ __device__ dynamic_array() = default; > │ __device__ dynamic_array(bool t) : ptr(new > dynamic_array_base<el, max_length>()) {} > │ __device__ el& operator[](default_int i) { > │ return this->ptr.base->operator[](i); > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array_list_base > │ { > │ int refc{ 0 }; > │ default_int length{ 0 }; > │ el* ptr; > │ > │ __device__ dynamic_array_list_base() : ptr(new > el[max_length]) {} > │ __device__ dynamic_array_list_base(default_int l) : > ptr(new el[max_length]) { this->unsafe_set_length(l); } > │ __device__ ~dynamic_array_list_base() { delete[] > this->ptr; } > │ > │ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < this->length); > │ return this->ptr[i]; > │ } > │ __device__ void push(el& x) { > │ ptr[this->length++] = x; > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __device__ void push(el&& x) { > │ ptr[this->length++] = std::move(x); > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __device__ el pop() { > │ assert("The array before popping should be greater > than 0." && 0 < this->length); > │ auto x = ptr[--this->length]; > │ ptr[this->length].~el(); > │ new (&ptr[this->length]) el(); > │ return x; > │ } > │ // Should be used only during initialization. > │ __device__ void unsafe_set_length(default_int i) { > │ assert("The new length should be in range." && 0 <= i > && i <= max_length); > │ this->length = i; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array_list > │ { > │ sptr<dynamic_array_list_base<el, max_length>> ptr; > │ > │ __device__ dynamic_array_list() = default; > │ __device__ dynamic_array_list(default_int l) : ptr(new > dynamic_array_list_base<el, max_length>(l)) {} > │ > │ __device__ el& operator[](default_int i) { > │ return this->ptr.base->operator[](i); > │ } > │ __device__ void push(el& x) { > │ this->ptr.base->push(x); > │ } > │ __device__ void push(el&& x) { > │ this->ptr.base->push(std::move(x)); > │ } > │ __device__ el pop() { > │ return this->ptr.base->pop(); > │ } > │ // Should be used only during initialization. > │ __device__ void unsafe_set_length(default_int i) { > │ this->ptr.base->unsafe_set_length(i); > │ } > │ __device__ default_int length_() { > │ return this->ptr.base->length; > │ } > │ }; > │ """ > │ class static_array(): > │ def __init__(self, length): > │ self.ptr = [] > │ for _ in range(length): > │ self.ptr.append(None) > │ > │ def __getitem__(self, index): > │ assert 0 <= index < len(self.ptr), "The get index > needs to be in range." > │ return self.ptr[index] > │ > │ def __setitem__(self, index, value): > │ assert 0 <= index < len(self.ptr), "The set index > needs to be in range." > │ self.ptr[index] = value > │ > │ class static_array_list(static_array): > │ def __init__(self, length): > │ super().__init__(length) > │ self.length = 0 > │ > │ def __getitem__(self, index): > │ assert 0 <= index < self.length, "The get index needs > to be in range." > │ return self.ptr[index] > │ > │ def __setitem__(self, index, value): > │ assert 0 <= index < self.length, "The set index needs > to be in range." > │ self.ptr[index] = value > │ > │ def push(self,value): > │ assert (self.length < len(self.ptr)), "The length > before pushing has to be less than the maximum length of the array." > │ self.ptr[self.length] = value > │ self.length += 1 > │ > │ def pop(self): > │ assert (0 < self.length), "The length before popping > has to be greater than 0." > │ self.length -= 1 > │ return self.ptr[self.length] > │ > │ def unsafe_set_length(self,i): > │ assert 0 <= i <= len(self.ptr), "The new length has > to be in range." > │ self.length = i > │ > │ class dynamic_array(static_array): > │ pass > │ > │ class dynamic_array_list(static_array_list): > │ def length_(self): return self.length > │ > │ > │ kernels_main = r""" > │ """ > │ from main_auto import * > │ kernels = kernels_aux + kernels_main > │ import cupy as cp > │ import numpy as np > │ from dataclasses import dataclass > │ from typing import NamedTuple, Union, Callable, Tuple > │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = > int; u32 = int; u64 = int; f32 = float; f64 = float; char = str; string = str > │ cuda = False > │ > │ > │ # fwd_dcls > │ # types > │ # functions > │ # main_defs > │ def main_body(): > │ return 0.3325000000000001 > │ > │ def main(): > │ r = main_body() > │ if cuda: cp.cuda.get_current_stream().synchronize() # > This line is here so the `__trap()` calls on the kernel aren't missed. > │ return r > │ > │ if __name__ == '__main__': result = main(); None if result is > None else print(result) > │ ", > │ [], 0) > │ 00:00:59 v #1851 Supervisor.buildFile / ofSeqAsync / x: > (Some > │ "kernels_aux = r""" > │ // The types of these two will be replaced during compilation > by the Spiral code generator. > │ // It matches on `using default_int = ` and `;` with the > inner part being replaced so the form should be kept as is. > │ // The two statements need to begin at the start of a line. > │ using default_int = int; > │ using default_uint = unsigned int; > │ > │ #ifndef __NVRTC__ > │ // NVRTC has these includes by default so they need to be > left out if it is used as the compiler. > │ #include <new> > │ #include <assert.h> > │ #include <stdio.h> > │ #endif > │ > │ // For error checking on the host. > │ #define gpuErrchk(ans) { gpuAssert((ans), __FILE__, > __LINE__); } > │ template <typename T> inline __device__ void destroy(T& obj) > { obj.~T(); } > │ inline void gpuAssert(cudaError error, const char *file, int > line, bool abort=true) { > │ if (error != cudaSuccess) { > │ fprintf(stderr, "GPUassert: %s %s %d\n", > cudaGetErrorString(error), file, line); > │ if (abort) exit(error); > │ } > │ } > │ > │ template <typename el> > │ struct sptr // Shared pointer for the Spiral datatypes. They > have to have the refc field inside them to work. > │ { > │ el* base; > │ > │ __device__ sptr() : base(nullptr) {} > │ __device__ sptr(el* ptr) : base(ptr) { > this->base->refc++; } > │ > │ __device__ ~sptr() > │ { > │ if (this->base != nullptr && --this->base->refc == 0) > │ { > │ delete this->base; > │ this->base = nullptr; > │ } > │ } > │ > │ __device__ sptr(sptr& x) > │ { > │ this->base = x.base; > │ this->base->refc++; > │ } > │ > │ __device__ sptr(sptr&& x) > │ { > │ this->base = x.base; > │ x.base = nullptr; > │ } > │ > │ __device__ sptr& operator=(sptr& x) > │ { > │ if (this->base != x.base) > │ { > │ delete this->base; > │ this->base = x.base; > │ this->base->refc++; > │ } > │ return *this; > │ } > │ > │ __device__ sptr& operator=(sptr&& x) > │ { > │ if (this->base != x.base) > │ { > │ delete this->base; > │ this->base = x.base; > │ x.base = nullptr; > │ } > │ return *this; > │ } > │ }; > │ > │ template <typename el> > │ struct csptr : public sptr<el> > │ { // Shared pointer for closures specifically. > │ using sptr<el>::sptr; > │ template <typename... Args> > │ __device__ auto operator()(Args... args) -> > decltype(this->base->operator()(args...)) > │ { > │ return this->base->operator()(args...); > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct static_array > │ { > │ el ptr[max_length]; > │ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < max_length); > │ return this->ptr[i]; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct static_array_list > │ { > │ default_int length{ 0 }; > │ el ptr[max_length]; > │ > │ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < this->length); > │ return this->ptr[i]; > │ } > │ __device__ void push(el& x) { > │ ptr[this->length++] = x; > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __device__ void push(el&& x) { > │ ptr[this->length++] = std::move(x); > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __device__ el pop() { > │ assert("The array before popping should be greater > than 0." && 0 < this->length); > │ auto x = ptr[--this->length]; > │ ptr[this->length].~el(); > │ new (&ptr[this->length]) el(); > │ return x; > │ } > │ // Should be used only during initialization. > │ __device__ void unsafe_set_length(default_int i) { > │ assert("The new length should be in range." && 0 <= i > && i <= max_length); > │ this->length = i; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array_base > │ { > │ int refc{ 0 }; > │ el* ptr; > │ > │ __device__ dynamic_array_base() : ptr(new el[max_length]) > {} > │ __device__ ~dynamic_array_base() { delete[] this->ptr; } > │ > │ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < this->length); > │ return this->ptr[i]; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array > │ { > │ sptr<dynamic_array_base<el, max_length>> ptr; > │ > │ __device__ dynamic_array() = default; > │ __device__ dynamic_array(bool t) : ptr(new > dynamic_array_base<el, max_length>()) {} > │ __device__ el& operator[](default_int i) { > │ return this->ptr.base->operator[](i); > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array_list_base > │ { > │ int refc{ 0 }; > │ default_int length{ 0 }; > │ el* ptr; > │ > │ __device__ dynamic_array_list_base() : ptr(new > el[max_length]) {} > │ __device__ dynamic_array_list_base(default_int l) : > ptr(new el[max_length]) { this->unsafe_set_length(l); } > │ __device__ ~dynamic_array_list_base() { delete[] > this->ptr; } > │ > │ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < this->length); > │ return this->ptr[i]; > │ } > │ __device__ void push(el& x) { > │ ptr[this->length++] = x; > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __device__ void push(el&& x) { > │ ptr[this->length++] = std::move(x); > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __device__ el pop() { > │ assert("The array before popping should be greater > than 0." && 0 < this->length); > │ auto x = ptr[--this->length]; > │ ptr[this->length].~el(); > │ new (&ptr[this->length]) el(); > │ return x; > │ } > │ // Should be used only during initialization. > │ __device__ void unsafe_set_length(default_int i) { > │ assert("The new length should be in range." && 0 <= i > && i <= max_length); > │ this->length = i; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array_list > │ { > │ sptr<dynamic_array_list_base<el, max_length>> ptr; > │ > │ __device__ dynamic_array_list() = default; > │ __device__ dynamic_array_list(default_int l) : ptr(new > dynamic_array_list_base<el, max_length>(l)) {} > │ > │ __device__ el& operator[](default_int i) { > │ return this->ptr.base->operator[](i); > │ } > │ __device__ void push(el& x) { > │ this->ptr.base->push(x); > │ } > │ __device__ void push(el&& x) { > │ this->ptr.base->push(std::move(x)); > │ } > │ __device__ el pop() { > │ return this->ptr.base->pop(); > │ } > │ // Should be used only during initialization. > │ __device__ void unsafe_set_length(default_int i) { > │ this->ptr.base->unsafe_set_length(i); > │ } > │ __device__ default_int length_() { > │ return this->ptr.base->length; > │ } > │ }; > │ """ > │ class static_array(): > │ def __init__(self, length): > │ self.ptr = [] > │ for _ in range(length): > │ self.ptr.append(None) > │ > │ def __getitem__(self, index): > │ assert 0 <= index < len(self.ptr), "The get index > needs to be in range." > │ return self.ptr[index] > │ > │ def __setitem__(self, index, value): > │ assert 0 <= index < len(self.ptr), "The set index > needs to be in range." > │ self.ptr[index] = value > │ > │ class static_array_list(static_array): > │ def __init__(self, length): > │ super().__init__(length) > │ self.length = 0 > │ > │ def __getitem__(self, index): > │ assert 0 <= index < self.length, "The get index needs > to be in range." > │ return self.ptr[index] > │ > │ def __setitem__(self, index, value): > │ assert 0 <= index < self.length, "The set index needs > to be in range." > │ self.ptr[index] = value > │ > │ def push(self,value): > │ assert (self.length < len(self.ptr)), "The length > before pushing has to be less than the maximum length of the array." > │ self.ptr[self.length] = value > │ self.length += 1 > │ > │ def pop(self): > │ assert (0 < self.length), "The length before popping > has to be greater than 0." > │ self.length -= 1 > │ return self.ptr[self.length] > │ > │ def unsafe_set_length(self,i): > │ assert 0 <= i <= len(self.ptr), "The new length has > to be in range." > │ self.length = i > │ > │ class dynamic_array(static_array): > │ pass > │ > │ class dynamic_array_list(static_array_list): > │ def length_(self): return self.length > │ > │ > │ kernels_main = r""" > │ """ > │ from main_auto import * > │ kernels = kernels_aux + kernels_main > │ import cupy as cp > │ import numpy as np > │ from dataclasses import dataclass > │ from typing import NamedTuple, Union, Callable, Tuple > │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = > int; u32 = int; u64 = int; f32 = float; f64 = float; char = str; string = str > │ cuda = False > │ > │ > │ # fwd_dcls > │ # types > │ # functions > │ # main_defs > │ def main_body(): > │ return 0.3325000000000001 > │ > │ def main(): > │ r = main_body() > │ if cuda: cp.cuda.get_current_stream().synchronize() # > This line is here so the `__trap()` calls on the kernel aren't missed. > │ return r > │ > │ if __name__ == '__main__': result = main(); None if result is > None else print(result) > │ ", > │ [], 0) > │ 00:00:59 v #1852 Supervisor.buildFile / result: [] / > buildFileResult: Some > │ "kernels_aux = r""" > │ // The types of these two will be replaced during compilation > by the Spiral code generator. > │ // It matches on `using default_int = ` and `;` with the > inner part being replaced so the form should be kept as is. > │ // The two statements need to begin at the start of a line. > │ using default_int = int; > │ using default_uint = unsigned int; > │ > │ #ifndef __NVRTC__ > │ // NVRTC has these includes by default so they need to be > left out if it is used as the compiler. > │ #include <new> > │ #include <assert.h> > │ #include <stdio.h> > │ #endif > │ > │ // For error checking on the host. > │ #define gpuErrchk(ans) { gpuAssert((ans), __FILE__, > __LINE__); } > │ template <typename T> inline __device__ void destroy(T& obj) > { obj.~T(); } > │ inline void gpuAssert(cudaError error, const char *file, int > line, bool abort=true) { > │ if (error != cudaSuccess) { > │ fprintf(stderr, "GPUassert: %s %s %d\n", > cudaGetErrorString(error), file, line); > │ if (abort) exit(error); > │ } > │ } > │ > │ template <typename el> > │ struct sptr // Shared pointer for the Spiral datatypes. They > have to have the refc field inside them to work. > │ { > │ el* base; > │ > │ __device__ sptr() : base(nullptr) {} > │ __device__ sptr(el* ptr) : base(ptr) { > this->base->refc++; } > │ > │ __device__ ~sptr() > │ { > │ if (this->base != nullptr && --this->base->refc == 0) > │ { > │ delete this->base; > │ this->base = nullptr; > │ } > │ } > │ > │ __device__ sptr(sptr& x) > │ { > │ this->base = x.base; > │ this->base->refc++; > │ } > │ > │ __device__ sptr(sptr&& x) > │ { > │ this->base = x.base; > │ x.base = nullptr; > │ } > │ > │ __device__ sptr& operator=(sptr& x) > │ { > │ if (this->base != x.base) > │ { > │ delete this->base; > │ this->base = x.base; > │ this->base->refc++; > │ } > │ return *this; > │ } > │ > │ __device__ sptr& operator=(sptr&& x) > │ { > │ if (this->base != x.base) > │ { > │ delete this->base; > │ this->base = x.base; > │ x.base = nullptr; > │ } > │ return *this; > │ } > │ }; > │ > │ template <typename el> > │ struct csptr : public sptr<el> > │ { // Shared pointer for closures specifically. > │ using sptr<el>::sptr; > │ template <typename... Args> > │ __device__ auto operator()(Args... args) -> > decltype(this->base->operator()(args...)) > │ { > │ return this->base->operator()(args...); > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct static_array > │ { > │ el ptr[max_length]; > │ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < max_length); > │ return this->ptr[i]; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct static_array_list > │ { > │ default_int length{ 0 }; > │ el ptr[max_length]; > │ > │ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < this->length); > │ return this->ptr[i]; > │ } > │ __device__ void push(el& x) { > │ ptr[this->length++] = x; > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __device__ void push(el&& x) { > │ ptr[this->length++] = std::move(x); > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __device__ el pop() { > │ assert("The array before popping should be greater > than 0." && 0 < this->length); > │ auto x = ptr[--this->length]; > │ ptr[this->length].~el(); > │ new (&ptr[this->length]) el(); > │ return x; > │ } > │ // Should be used only during initialization. > │ __device__ void unsafe_set_length(default_int i) { > │ assert("The new length should be in range." && 0 <= i > && i <= max_length); > │ this->length = i; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array_base > │ { > │ int refc{ 0 }; > │ el* ptr; > │ > │ __device__ dynamic_array_base() : ptr(new el[max_length]) > {} > │ __device__ ~dynamic_array_base() { delete[] this->ptr; } > │ > │ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < this->length); > │ return this->ptr[i]; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array > │ { > │ sptr<dynamic_array_base<el, max_length>> ptr; > │ > │ __device__ dynamic_array() = default; > │ __device__ dynamic_array(bool t) : ptr(new > dynamic_array_base<el, max_length>()) {} > │ __device__ el& operator[](default_int i) { > │ return this->ptr.base->operator[](i); > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array_list_base > │ { > │ int refc{ 0 }; > │ default_int length{ 0 }; > │ el* ptr; > │ > │ __device__ dynamic_array_list_base() : ptr(new > el[max_length]) {} > │ __device__ dynamic_array_list_base(default_int l) : > ptr(new el[max_length]) { this->unsafe_set_length(l); } > │ __device__ ~dynamic_array_list_base() { delete[] > this->ptr; } > │ > │ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < this->length); > │ return this->ptr[i]; > │ } > │ __device__ void push(el& x) { > │ ptr[this->length++] = x; > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __device__ void push(el&& x) { > │ ptr[this->length++] = std::move(x); > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __device__ el pop() { > │ assert("The array before popping should be greater > than 0." && 0 < this->length); > │ auto x = ptr[--this->length]; > │ ptr[this->length].~el(); > │ new (&ptr[this->length]) el(); > │ return x; > │ } > │ // Should be used only during initialization. > │ __device__ void unsafe_set_length(default_int i) { > │ assert("The new length should be in range." && 0 <= i > && i <= max_length); > │ this->length = i; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array_list > │ { > │ sptr<dynamic_array_list_base<el, max_length>> ptr; > │ > │ __device__ dynamic_array_list() = default; > │ __device__ dynamic_array_list(default_int l) : ptr(new > dynamic_array_list_base<el, max_length>(l)) {} > │ > │ __device__ el& operator[](default_int i) { > │ return this->ptr.base->operator[](i); > │ } > │ __device__ void push(el& x) { > │ this->ptr.base->push(x); > │ } > │ __device__ void push(el&& x) { > │ this->ptr.base->push(std::move(x)); > │ } > │ __device__ el pop() { > │ return this->ptr.base->pop(); > │ } > │ // Should be used only during initialization. > │ __device__ void unsafe_set_length(default_int i) { > │ this->ptr.base->unsafe_set_length(i); > │ } > │ __device__ default_int length_() { > │ return this->ptr.base->length; > │ } > │ }; > │ """ > │ class static_array(): > │ def __init__(self, length): > │ self.ptr = [] > │ for _ in range(length): > │ self.ptr.append(None) > │ > │ def __getitem__(self, index): > │ assert 0 <= index < len(self.ptr), "The get index > needs to be in range." > │ return self.ptr[index] > │ > │ def __setitem__(self, index, value): > │ assert 0 <= index < len(self.ptr), "The set index > needs to be in range." > │ self.ptr[index] = value > │ > │ class static_array_list(static_array): > │ def __init__(self, length): > │ super().__init__(length) > │ self.length = 0 > │ > │ def __getitem__(self, index): > │ assert 0 <= index < self.length, "The get index needs > to be in range." > │ return self.ptr[index] > │ > │ def __setitem__(self, index, value): > │ assert 0 <= index < self.length, "The set index needs > to be in range." > │ self.ptr[index] = value > │ > │ def push(self,value): > │ assert (self.length < len(self.ptr)), "The length > before pushing has to be less than the maximum length of the array." > │ self.ptr[self.length] = value > │ self.length += 1 > │ > │ def pop(self): > │ assert (0 < self.length), "The length before popping > has to be greater than 0." > │ self.length -= 1 > │ return self.ptr[self.length] > │ > │ def unsafe_set_length(self,i): > │ assert 0 <= i <= len(self.ptr), "The new length has > to be in range." > │ self.length = i > │ > │ class dynamic_array(static_array): > │ pass > │ > │ class dynamic_array_list(static_array_list): > │ def length_(self): return self.length > │ > │ > │ kernels_main = r""" > │ """ > │ from main_auto import * > │ kernels = kernels_aux + kernels_main > │ import cupy as cp > │ import numpy as np > │ from dataclasses import dataclass > │ from typing import NamedTuple, Union, Callable, Tuple > │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = > int; u32 = int; u64 = int; f32 = float; f64 = float; char = str; string = str > │ cuda = False > │ > │ > │ # fwd_dcls > │ # types > │ # functions > │ # main_defs > │ def main_body(): > │ return 0.3325000000000001 > │ > │ def main(): > │ r = main_body() > │ if cuda: cp.cuda.get_current_stream().synchronize() # > This line is here so the `__trap()` calls on the kernel aren't missed. > │ return r > │ > │ if __name__ == '__main__': result = main(); None if result is > None else print(result) > │ " / typeErrorCount: 0 > │ 00:00:59 v #1853 Supervisor.buildFile / retry: 0 / > typeErrorCount: 0 / fileDir: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a4224c9f3d674d70 > fd56b6ecd3ae8c8ff3178a7124ae34f592336fef263568ea / targetDir: > /home/runner/work/polyglot/polyglot/target > │ Some > │ (Some > │ "kernels_aux = r""" > │ // The types of these two will be replaced during compilation > by the Spiral code generator. > │ // It matches on `using default_int = ` and `;` with the > inner part being replaced so the form should be kept as is. > │ // The two statements need to begin at the start of a line. > │ using default_int = int; > │ using default_uint = unsigned int; > │ > │ #ifndef __NVRTC__ > │ // NVRTC has these includes by default so they need to be > left out if it is used as the compiler. > │ #include <new> > │ #include <assert.h> > │ #include <stdio.h> > │ #endif > │ > │ // For error checking on the host. > │ #define gpuErrchk(ans) { gpuAssert((ans), __FILE__, > __LINE__); } > │ template <typename T> inline __device__ void destroy(T& obj) > { obj.~T(); } > │ inline void gpuAssert(cudaError error, const char *file, int > line, bool abort=true) { > │ if (error != cudaSuccess) { > │ fprintf(stderr, "GPUassert: %s %s %d\n", > cudaGetErrorString(error), file, line); > │ if (abort) exit(error); > │ } > │ } > │ > │ template <typename el> > │ struct sptr // Shared pointer for the Spiral datatypes. They > have to have the refc field inside them to work. > │ { > │ el* base; > │ > │ __device__ sptr() : base(nullptr) {} > │ __device__ sptr(el* ptr) : base(ptr) { > this->base->refc++; } > │ > │ __device__ ~sptr() > │ { > │ if (this->base != nullptr && --this->base->refc == 0) > │ { > │ delete this->base; > │ this->base = nullptr; > │ } > │ } > │ > │ __device__ sptr(sptr& x) > │ { > │ this->base = x.base; > │ this->base->refc++; > │ } > │ > │ __device__ sptr(sptr&& x) > │ { > │ this->base = x.base; > │ x.base = nullptr; > │ } > │ > │ __device__ sptr& operator=(sptr& x) > │ { > │ if (this->base != x.base) > │ { > │ delete this->base; > │ this->base = x.base; > │ this->base->refc++; > │ } > │ return *this; > │ } > │ > │ __device__ sptr& operator=(sptr&& x) > │ { > │ if (this->base != x.base) > │ { > │ delete this->base; > │ this->base = x.base; > │ x.base = nullptr; > │ } > │ return *this; > │ } > │ }; > │ > │ template <typename el> > │ struct csptr : public sptr<el> > │ { // Shared pointer for closures specifically. > │ using sptr<el>::sptr; > │ template <typename... Args> > │ __device__ auto operator()(Args... args) -> > decltype(this->base->operator()(args...)) > │ { > │ return this->base->operator()(args...); > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct static_array > │ { > │ el ptr[max_length]; > │ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < max_length); > │ return this->ptr[i]; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct static_array_list > │ { > │ default_int length{ 0 }; > │ el ptr[max_length]; > │ > │ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < this->length); > │ return this->ptr[i]; > │ } > │ __device__ void push(el& x) { > │ ptr[this->length++] = x; > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __device__ void push(el&& x) { > │ ptr[this->length++] = std::move(x); > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __device__ el pop() { > │ assert("The array before popping should be greater > than 0." && 0 < this->length); > │ auto x = ptr[--this->length]; > │ ptr[this->length].~el(); > │ new (&ptr[this->length]) el(); > │ return x; > │ } > │ // Should be used only during initialization. > │ __device__ void unsafe_set_length(default_int i) { > │ assert("The new length should be in range." && 0 <= i > && i <= max_length); > │ this->length = i; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array_base > │ { > │ int refc{ 0 }; > │ el* ptr; > │ > │ __device__ dynamic_array_base() : ptr(new el[max_length]) > {} > │ __device__ ~dynamic_array_base() { delete[] this->ptr; } > │ > │ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < this->length); > │ return this->ptr[i]; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array > │ { > │ sptr<dynamic_array_base<el, max_length>> ptr; > │ > │ __device__ dynamic_array() = default; > │ __device__ dynamic_array(bool t) : ptr(new > dynamic_array_base<el, max_length>()) {} > │ __device__ el& operator[](default_int i) { > │ return this->ptr.base->operator[](i); > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array_list_base > │ { > │ int refc{ 0 }; > │ default_int length{ 0 }; > │ el* ptr; > │ > │ __device__ dynamic_array_list_base() : ptr(new > el[max_length]) {} > │ __device__ dynamic_array_list_base(default_int l) : > ptr(new el[max_length]) { this->unsafe_set_length(l); } > │ __device__ ~dynamic_array_list_base() { delete[] > this->ptr; } > │ > │ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < this->length); > │ return this->ptr[i]; > │ } > │ __device__ void push(el& x) { > │ ptr[this->length++] = x; > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __device__ void push(el&& x) { > │ ptr[this->length++] = std::move(x); > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __device__ el pop() { > │ assert("The array before popping should be greater > than 0." && 0 < this->length); > │ auto x = ptr[--this->length]; > │ ptr[this->length].~el(); > │ new (&ptr[this->length]) el(); > │ return x; > │ } > │ // Should be used only during initialization. > │ __device__ void unsafe_set_length(default_int i) { > │ assert("The new length should be in range." && 0 <= i > && i <= max_length); > │ this->length = i; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array_list > │ { > │ sptr<dynamic_array_list_base<el, max_length>> ptr; > │ > │ __device__ dynamic_array_list() = default; > │ __device__ dynamic_array_list(default_int l) : ptr(new > dynamic_array_list_base<el, max_length>(l)) {} > │ > │ __device__ el& operator[](default_int i) { > │ return this->ptr.base->operator[](i); > │ } > │ __device__ void push(el& x) { > │ this->ptr.base->push(x); > │ } > │ __device__ void push(el&& x) { > │ this->ptr.base->push(std::move(x)); > │ } > │ __device__ el pop() { > │ return this->ptr.base->pop(); > │ } > │ // Should be used only during initialization. > │ __device__ void unsafe_set_length(default_int i) { > │ this->ptr.base->unsafe_set_length(i); > │ } > │ __device__ default_int length_() { > │ return this->ptr.base->length; > │ } > │ }; > │ """ > │ class static_array(): > │ def __init__(self, length): > │ self.ptr = [] > │ for _ in range(length): > │ self.ptr.append(None) > │ > │ def __getitem__(self, index): > │ assert 0 <= index < len(self.ptr), "The get index > needs to be in range." > │ return self.ptr[index] > │ > │ def __setitem__(self, index, value): > │ assert 0 <= index < len(self.ptr), "The set index > needs to be in range." > │ self.ptr[index] = value > │ > │ class static_array_list(static_array): > │ def __init__(self, length): > │ super().__init__(length) > │ self.length = 0 > │ > │ def __getitem__(self, index): > │ assert 0 <= index < self.length, "The get index needs > to be in range." > │ return self.ptr[index] > │ > │ def __setitem__(self, index, value): > │ assert 0 <= index < self.length, "The set index needs > to be in range." > │ self.ptr[index] = value > │ > │ def push(self,value): > │ assert (self.length < len(self.ptr)), "The length > before pushing has to be less than the maximum length of the array." > │ self.ptr[self.length] = value > │ self.length += 1 > │ > │ def pop(self): > │ assert (0 < self.length), "The length before popping > has to be greater than 0." > │ self.length -= 1 > │ return self.ptr[self.length] > │ > │ def unsafe_set_length(self,i): > │ assert 0 <= i <= len(self.ptr), "The new length has > to be in range." > │ self.length = i > │ > │ class dynamic_array(static_array): > │ pass > │ > │ class dynamic_array_list(static_array_list): > │ def length_(self): return self.length > │ > │ > │ kernels_main = r""" > │ """ > │ from main_auto import * > │ kernels = kernels_aux + kernels_main > │ import cupy as cp > │ import numpy as np > │ from dataclasses import dataclass > │ from typing import NamedTuple, Union, Callable, Tuple > │ i8 = int; i16 = int; i32 = int; i64 = int; u8 = int; u16 = > int; u32 = int; u64 = int; f32 = float; f64 = float; char = str; string = str > │ cuda = False > │ > │ > │ # fwd_dcls > │ # types > │ # functions > │ # main_defs > │ def main_body(): > │ return 0.3325000000000001 > │ > │ def main(): > │ r = main_body() > │ if cuda: cp.cuda.get_current_stream().synchronize() # > This line is here so the `__trap()` calls on the kernel aren't missed. > │ return r > │ > │ if __name__ == '__main__': result = main(); None if result is > None else print(result) > │ ", > │ []) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """ > inl init_series start end inc = > inl total : f64 = conv ((end - start) / inc) + 1 > listm.init total (conv >> (*) inc >> (+) start) : list f64 > > type integration = (f64 -> f64) -> f64 -> f64 -> f64 > > inl integral dt : integration = > fun f a b => > init_series (a + dt / 2) (b - dt / 2) dt > |> listm.map (f >> (*) dt) > |> listm.fold (+) 0 > > inl main () = > integral 0.1 (fun x => x ** 2) 0 1 |> convert : i32 > """ > |> fun code -> Spi (code, None) > |> buildCode Cpp [[||]] false 10000 None > |> Async.runWithTimeout 11000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > Some @"// The types of these two will be replaced during compilation by > the Spiral code generator. > // It matches on `using default_int = ` and `;` with the inner part being > replaced so the form should be kept as is. > // The two statements need to begin at the start of a line. > using default_int = int; > using default_uint = unsigned int; > > #ifndef __NVRTC__ > // NVRTC has these includes by default so they need to be left out if it is used > as the compiler. > #include <new> > #include <assert.h> > #include <stdio.h> > #endif > > // For error checking on the host. > #define gpuErrchk(ans) { gpuAssert((ans), __FILE__, __LINE__); } > template <typename T> inline __host__ __device__ void destroy(T& obj) { > obj.~T(); } > inline void gpuAssert(cudaError error, const char *file, int line, bool > abort=true) { > if (error != cudaSuccess) { > fprintf(stderr, ""GPUassert: %s %s %d\n"", cudaGetErrorString(error), > file, line); > if (abort) exit(error); > } > } > > template <typename el> > struct sptr // Shared pointer for the Spiral datatypes. They have to have the > refc field inside them to work. > { > el* base; > > __host__ __device__ sptr() : base(nullptr) {} > __host__ __device__ sptr(el* ptr) : base(ptr) { this->base->refc++; } > > __host__ __device__ ~sptr() > { > if (this->base != nullptr && --this->base->refc == 0) > { > delete this->base; > this->base = nullptr; > } > } > > __host__ __device__ sptr(sptr& x) > { > this->base = x.base; > this->base->refc++; > } > > __host__ __device__ sptr(sptr&& x) > { > this->base = x.base; > x.base = nullptr; > } > > __host__ __device__ sptr& operator=(sptr& x) > { > if (this->base != x.base) > { > delete this->base; > this->base = x.base; > this->base->refc++; > } > return *this; > } > > __host__ __device__ sptr& operator=(sptr&& x) > { > if (this->base != x.base) > { > delete this->base; > this->base = x.base; > x.base = nullptr; > } > return *this; > } > }; > > template <typename el> > struct csptr : public sptr<el> > { // Shared pointer for closures specifically. > using sptr<el>::sptr; > template <typename... Args> > __host__ __device__ auto operator()(Args... args) -> > decltype(this->base->operator()(args...)) > { > return this->base->operator()(args...); > } > }; > > template <typename el, default_int max_length> > struct static_array > { > el ptr[[max_length]]; > __host__ __device__ el& operator[[]](default_int i) { > assert(""The index has to be in range."" && 0 <= i && i < max_length); > return this->ptr[[i]]; > } > }; > > template <typename el, default_int max_length> > struct static_array_list > { > default_int length{ 0 }; > el ptr[[max_length]]; > > __host__ __device__ el& operator[[]](default_int i) { > assert(""The index has to be in range."" && 0 <= i && i < this->length); > return this->ptr[[i]]; > } > __host__ __device__ void push(el& x) { > ptr[[this->length++]] = x; > assert(""The array after pushing should not be greater than max > length."" && this->length <= max_length); > } > __host__ __device__ void push(el&& x) { > ptr[[this->length++]] = std::move(x); > assert(""The array after pushing should not be greater than max > length."" && this->length <= max_length); > } > __host__ __device__ el pop() { > assert(""The array before popping should be greater than 0."" && 0 < > this->length); > auto x = ptr[[--this->length]]; > ptr[[this->length]].~el(); > new (&ptr[[this->length]]) el(); > return x; > } > // Should be used only during initialization. > __host__ __device__ void unsafe_set_length(default_int i) { > assert(""The new length should be in range."" && 0 <= i && i <= > max_length); > this->length = i; > } > }; > > template <typename el, default_int max_length> > struct dynamic_array_base > { > int refc{ 0 }; > el* ptr; > > __host__ __device__ dynamic_array_base() : ptr(new el[[max_length]]) {} > __host__ __device__ ~dynamic_array_base() { delete[[]] this->ptr; } > > __host__ __device__ el& operator[[]](default_int i) { > assert(""The index has to be in range."" && 0 <= i && i < this->length); > return this->ptr[[i]]; > } > }; > > template <typename el, default_int max_length> > struct dynamic_array > { > sptr<dynamic_array_base<el, max_length>> ptr; > > __host__ __device__ dynamic_array() = default; > __host__ __device__ dynamic_array(bool t) : ptr(new dynamic_array_base<el, > max_length>()) {} > __host__ __device__ el& operator[[]](default_int i) { > return this->ptr.base->operator[[]](i); > } > }; > > template <typename el, default_int max_length> > struct dynamic_array_list_base > { > int refc{ 0 }; > default_int length{ 0 }; > el* ptr; > > __host__ __device__ dynamic_array_list_base() : ptr(new el[[max_length]]) {} > __host__ __device__ dynamic_array_list_base(default_int l) : ptr(new > el[[max_length]]) { this->unsafe_set_length(l); } > __host__ __device__ ~dynamic_array_list_base() { delete[[]] this->ptr; } > > __host__ __device__ el& operator[[]](default_int i) { > assert(""The index has to be in range."" && 0 <= i && i < this->length); > return this->ptr[[i]]; > } > __host__ __device__ void push(el& x) { > ptr[[this->length++]] = x; > assert(""The array after pushing should not be greater than max > length."" && this->length <= max_length); > } > __host__ __device__ void push(el&& x) { > ptr[[this->length++]] = std::move(x); > assert(""The array after pushing should not be greater than max > length."" && this->length <= max_length); > } > __host__ __device__ el pop() { > assert(""The array before popping should be greater than 0."" && 0 < > this->length); > auto x = ptr[[--this->length]]; > ptr[[this->length]].~el(); > new (&ptr[[this->length]]) el(); > return x; > } > // Should be used only during initialization. > __host__ __device__ void unsafe_set_length(default_int i) { > assert(""The new length should be in range."" && 0 <= i && i <= > max_length); > this->length = i; > } > }; > > template <typename el, default_int max_length> > struct dynamic_array_list > { > sptr<dynamic_array_list_base<el, max_length>> ptr; > > __host__ __device__ dynamic_array_list() = default; > __host__ __device__ dynamic_array_list(default_int l) : ptr(new > dynamic_array_list_base<el, max_length>(l)) {} > > __host__ __device__ el& operator[[]](default_int i) { > return this->ptr.base->operator[[]](i); > } > __host__ __device__ void push(el& x) { > this->ptr.base->push(x); > } > __host__ __device__ void push(el&& x) { > this->ptr.base->push(std::move(x)); > } > __host__ __device__ el pop() { > return this->ptr.base->pop(); > } > // Should be used only during initialization. > __host__ __device__ void unsafe_set_length(default_int i) { > this->ptr.base->unsafe_set_length(i); > } > __host__ __device__ default_int length_() { > return this->ptr.base->length; > } > }; > #include ""main.auto.cu"" > namespace Device { > } > int main_body() { > int v3; > v3 = ; > return v3; > } > int main(){ > auto r = main_body(); > gpuErrchk(cudaDeviceSynchronize()); // This line is here so the `__trap()` > calls on the kernel aren't missed. > return r; > } > ", > [[]] > ) > ) > > ── [ 394.27ms - stdout ] ─────────────────────────────────────────────────────── > │ 00:00:59 v #1871 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a702c5b29a050ecc > fe7c911beeea63f353f61e71985bbebdb653ac32f3395c52/main.spi > │ 00:00:59 v #1872 Supervisor.buildFile / AsyncSeq.scan / > outputContent: > │ ' / errors: [] / outputContentResult: / typeErrorCount: 0 / > retry: 0 / error: / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a702c5b29a050ecc > fe7c911beeea63f353f61e71985bbebdb653ac32f3395c52/main.spi' > │ 00:00:59 v #1873 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a702c5b29a050ecc > fe7c911beeea63f353f61e71985bbebdb653ac32f3395c52/main.spi > │ 00:00:59 v #1874 Supervisor.buildFile / fullPathUri: > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a702c5b2 > 9a050eccfe7c911beeea63f353f61e71985bbebdb653ac32f3395c52/main.spi" > │ 00:00:59 v #1875 Supervisor.buildFile / _fileOpenResult: > <null> > │ 00:00:59 v #1876 Supervisor.buildFile / before result: > () > │ 00:00:59 v #2116 Supervisor.buildFile / buildFileResult: > Some > │ "// The types of these two will be replaced during > compilation by the Spiral code generator. > │ // It matches on `using default_int = ` and `;` with the > inner part being replaced so the form should be kept as is. > │ // The two statements need to begin at the start of a line. > │ using default_int = int; > │ using default_uint = unsigned int; > │ > │ #ifndef __NVRTC__ > │ // NVRTC has these includes by default so they need to be > left out if it is used as the compiler. > │ #include <new> > │ #include <assert.h> > │ #include <stdio.h> > │ #endif > │ > │ // For error checking on the host. > │ #define gpuErrchk(ans) { gpuAssert((ans), __FILE__, > __LINE__); } > │ template <typename T> inline __host__ __device__ void > destroy(T& obj) { obj.~T(); } > │ inline void gpuAssert(cudaError error, const char *file, int > line, bool abort=true) { > │ if (error != cudaSuccess) { > │ fprintf(stderr, "GPUassert: %s %s %d\n", > cudaGetErrorString(error), file, line); > │ if (abort) exit(error); > │ } > │ } > │ > │ template <typename el> > │ struct sptr // Shared pointer for the Spiral datatypes. They > have to have the refc field inside them to work. > │ { > │ el* base; > │ > │ __host__ __device__ sptr() : base(nullptr) {} > │ __host__ __device__ sptr(el* ptr) : base(ptr) { > this->base->refc++; } > │ > │ __host__ __device__ ~sptr() > │ { > │ if (this->base != nullptr && --this->base->refc == 0) > │ { > │ delete this->base; > │ this->base = nullptr; > │ } > │ } > │ > │ __host__ __device__ sptr(sptr& x) > │ { > │ this->base = x.base; > │ this->base->refc++; > │ } > │ > │ __host__ __device__ sptr(sptr&& x) > │ { > │ this->base = x.base; > │ x.base = nullptr; > │ } > │ > │ __host__ __device__ sptr& operator=(sptr& x) > │ { > │ if (this->base != x.base) > │ { > │ delete this->base; > │ this->base = x.base; > │ this->base->refc++; > │ } > │ return *this; > │ } > │ > │ __host__ __device__ sptr& operator=(sptr&& x) > │ { > │ if (this->base != x.base) > │ { > │ delete this->base; > │ this->base = x.base; > │ x.base = nullptr; > │ } > │ return *this; > │ } > │ }; > │ > │ template <typename el> > │ struct csptr : public sptr<el> > │ { // Shared pointer for closures specifically. > │ using sptr<el>::sptr; > │ template <typename... Args> > │ __host__ __device__ auto operator()(Args... args) -> > decltype(this->base->operator()(args...)) > │ { > │ return this->base->operator()(args...); > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct static_array > │ { > │ el ptr[max_length]; > │ __host__ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < max_length); > │ return this->ptr[i]; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct static_array_list > │ { > │ default_int length{ 0 }; > │ el ptr[max_length]; > │ > │ __host__ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < this->length); > │ return this->ptr[i]; > │ } > │ __host__ __device__ void push(el& x) { > │ ptr[this->length++] = x; > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __host__ __device__ void push(el&& x) { > │ ptr[this->length++] = std::move(x); > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __host__ __device__ el pop() { > │ assert("The array before popping should be greater > than 0." && 0 < this->length); > │ auto x = ptr[--this->length]; > │ ptr[this->length].~el(); > │ new (&ptr[this->length]) el(); > │ return x; > │ } > │ // Should be used only during initialization. > │ __host__ __device__ void unsafe_set_length(default_int i) > { > │ assert("The new length should be in range." && 0 <= i > && i <= max_length); > │ this->length = i; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array_base > │ { > │ int refc{ 0 }; > │ el* ptr; > │ > │ __host__ __device__ dynamic_array_base() : ptr(new > el[max_length]) {} > │ __host__ __device__ ~dynamic_array_base() { delete[] > this->ptr; } > │ > │ __host__ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < this->length); > │ return this->ptr[i]; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array > │ { > │ sptr<dynamic_array_base<el, max_length>> ptr; > │ > │ __host__ __device__ dynamic_array() = default; > │ __host__ __device__ dynamic_array(bool t) : ptr(new > dynamic_array_base<el, max_length>()) {} > │ __host__ __device__ el& operator[](default_int i) { > │ return this->ptr.base->operator[](i); > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array_list_base > │ { > │ int refc{ 0 }; > │ default_int length{ 0 }; > │ el* ptr; > │ > │ __host__ __device__ dynamic_array_list_base() : ptr(new > el[max_length]) {} > │ __host__ __device__ dynamic_array_list_base(default_int > l) : ptr(new el[max_length]) { this->unsafe_set_length(l); } > │ __host__ __device__ ~dynamic_array_list_base() { delete[] > this->ptr; } > │ > │ __host__ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < this->length); > │ return this->ptr[i]; > │ } > │ __host__ __device__ void push(el& x) { > │ ptr[this->length++] = x; > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __host__ __device__ void push(el&& x) { > │ ptr[this->length++] = std::move(x); > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __host__ __device__ el pop() { > │ assert("The array before popping should be greater > than 0." && 0 < this->length); > │ auto x = ptr[--this->length]; > │ ptr[this->length].~el(); > │ new (&ptr[this->length]) el(); > │ return x; > │ } > │ // Should be used only during initialization. > │ __host__ __device__ void unsafe_set_length(default_int i) > { > │ assert("The new length should be in range." && 0 <= i > && i <= max_length); > │ this->length = i; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array_list > │ { > │ sptr<dynamic_array_list_base<el, max_length>> ptr; > │ > │ __host__ __device__ dynamic_array_list() = default; > │ __host__ __device__ dynamic_array_list(default_int l) : > ptr(new dynamic_array_list_base<el, max_length>(l)) {} > │ > │ __host__ __device__ el& operator[](default_int i) { > │ return this->ptr.base->operator[](i); > │ } > │ __host__ __device__ void push(el& x) { > │ this->ptr.base->push(x); > │ } > │ __host__ __device__ void push(el&& x) { > │ this->ptr.base->push(std::move(x)); > │ } > │ __host__ __device__ el pop() { > │ return this->ptr.base->pop(); > │ } > │ // Should be used only during initialization. > │ __host__ __device__ void unsafe_set_length(default_int i) > { > │ this->ptr.base->unsafe_set_length(i); > │ } > │ __host__ __device__ default_int length_() { > │ return this->ptr.base->length; > │ } > │ }; > │ #include "main.auto.cu" > │ namespace Device { > │ } > │ int main_body() { > │ int v3; > │ v3 = ; > │ return v3; > │ } > │ int main(){ > │ auto r = main_body(); > │ gpuErrchk(cudaDeviceSynchronize()); // This line is here > so the `__trap()` calls on the kernel aren't missed. > │ return r; > │ } > │ " > │ 00:00:59 v #2117 Supervisor.buildFile / > outputContentSeq2 unfoldAsync / msg: (Some > │ "// The types of these two will be replaced during > compilation by the Spiral code generator. > │ // It matches on `using default_int = ` and `;` with the > inner part being replaced so the form should be kept as is. > │ // The two statements need to begin at the start of a line. > │ using default_int = int; > │ using default_uint = unsigned int; > │ > │ #ifndef __NVRTC__ > │ // NVRTC has these includes by default so they need to be > left out if it is used as the compiler. > │ #include <new> > │ #include <assert.h> > │ #include <stdio.h> > │ #endif > │ > │ // For error checking on the host. > │ #define gpuErrchk(ans) { gpuAssert((ans), __FILE__, > __LINE__); } > │ template <typename T> inline __host__ __device__ void > destroy(T& obj) { obj.~T(); } > │ inline void gpuAssert(cudaError error, const char *file, int > line, bool abort=true) { > │ if (error != cudaSuccess) { > │ fprintf(stderr, "GPUassert: %s %s %d\n", > cudaGetErrorString(error), file, line); > │ if (abort) exit(error); > │ } > │ } > │ > │ template <typename el> > │ struct sptr // Shared pointer for the Spiral datatypes. They > have to have the refc field inside them to work. > │ { > │ el* base; > │ > │ __host__ __device__ sptr() : base(nullptr) {} > │ __host__ __device__ sptr(el* ptr) : base(ptr) { > this->base->refc++; } > │ > │ __host__ __device__ ~sptr() > │ { > │ if (this->base != nullptr && --this->base->refc == 0) > │ { > │ delete this->base; > │ this->base = nullptr; > │ } > │ } > │ > │ __host__ __device__ sptr(sptr& x) > │ { > │ this->base = x.base; > │ this->base->refc++; > │ } > │ > │ __host__ __device__ sptr(sptr&& x) > │ { > │ this->base = x.base; > │ x.base = nullptr; > │ } > │ > │ __host__ __device__ sptr& operator=(sptr& x) > │ { > │ if (this->base != x.base) > │ { > │ delete this->base; > │ this->base = x.base; > │ this->base->refc++; > │ } > │ return *this; > │ } > │ > │ __host__ __device__ sptr& operator=(sptr&& x) > │ { > │ if (this->base != x.base) > │ { > │ delete this->base; > │ this->base = x.base; > │ x.base = nullptr; > │ } > │ return *this; > │ } > │ }; > │ > │ template <typename el> > │ struct csptr : public sptr<el> > │ { // Shared pointer for closures specifically. > │ using sptr<el>::sptr; > │ template <typename... Args> > │ __host__ __device__ auto operator()(Args... args) -> > decltype(this->base->operator()(args...)) > │ { > │ return this->base->operator()(args...); > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct static_array > │ { > │ el ptr[max_length]; > │ __host__ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < max_length); > │ return this->ptr[i]; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct static_array_list > │ { > │ default_int length{ 0 }; > │ el ptr[max_length]; > │ > │ __host__ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < this->length); > │ return this->ptr[i]; > │ } > │ __host__ __device__ void push(el& x) { > │ ptr[this->length++] = x; > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __host__ __device__ void push(el&& x) { > │ ptr[this->length++] = std::move(x); > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __host__ __device__ el pop() { > │ assert("The array before popping should be greater > than 0." && 0 < this->length); > │ auto x = ptr[--this->length]; > │ ptr[this->length].~el(); > │ new (&ptr[this->length]) el(); > │ return x; > │ } > │ // Should be used only during initialization. > │ __host__ __device__ void unsafe_set_length(default_int i) > { > │ assert("The new length should be in range." && 0 <= i > && i <= max_length); > │ this->length = i; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array_base > │ { > │ int refc{ 0 }; > │ el* ptr; > │ > │ __host__ __device__ dynamic_array_base() : ptr(new > el[max_length]) {} > │ __host__ __device__ ~dynamic_array_base() { delete[] > this->ptr; } > │ > │ __host__ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < this->length); > │ return this->ptr[i]; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array > │ { > │ sptr<dynamic_array_base<el, max_length>> ptr; > │ > │ __host__ __device__ dynamic_array() = default; > │ __host__ __device__ dynamic_array(bool t) : ptr(new > dynamic_array_base<el, max_length>()) {} > │ __host__ __device__ el& operator[](default_int i) { > │ return this->ptr.base->operator[](i); > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array_list_base > │ { > │ int refc{ 0 }; > │ default_int length{ 0 }; > │ el* ptr; > │ > │ __host__ __device__ dynamic_array_list_base() : ptr(new > el[max_length]) {} > │ __host__ __device__ dynamic_array_list_base(default_int > l) : ptr(new el[max_length]) { this->unsafe_set_length(l); } > │ __host__ __device__ ~dynamic_array_list_base() { delete[] > this->ptr; } > │ > │ __host__ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < this->length); > │ return this->ptr[i]; > │ } > │ __host__ __device__ void push(el& x) { > │ ptr[this->length++] = x; > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __host__ __device__ void push(el&& x) { > │ ptr[this->length++] = std::move(x); > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __host__ __device__ el pop() { > │ assert("The array before popping should be greater > than 0." && 0 < this->length); > │ auto x = ptr[--this->length]; > │ ptr[this->length].~el(); > │ new (&ptr[this->length]) el(); > │ return x; > │ } > │ // Should be used only during initialization. > │ __host__ __device__ void unsafe_set_length(default_int i) > { > │ assert("The new length should be in range." && 0 <= i > && i <= max_length); > │ this->length = i; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array_list > │ { > │ sptr<dynamic_array_list_base<el, max_length>> ptr; > │ > │ __host__ __device__ dynamic_array_list() = default; > │ __host__ __device__ dynamic_array_list(default_int l) : > ptr(new dynamic_array_list_base<el, max_length>(l)) {} > │ > │ __host__ __device__ el& operator[](default_int i) { > │ return this->ptr.base->operator[](i); > │ } > │ __host__ __device__ void push(el& x) { > │ this->ptr.base->push(x); > │ } > │ __host__ __device__ void push(el&& x) { > │ this->ptr.base->push(std::move(x)); > │ } > │ __host__ __device__ el pop() { > │ return this->ptr.base->pop(); > │ } > │ // Should be used only during initialization. > │ __host__ __device__ void unsafe_set_length(default_int i) > { > │ this->ptr.base->unsafe_set_length(i); > │ } > │ __host__ __device__ default_int length_() { > │ return this->ptr.base->length; > │ } > │ }; > │ #include "main.auto.cu" > │ namespace Device { > │ } > │ int main_body() { > │ int v3; > │ v3 = ; > │ return v3; > │ } > │ int main(){ > │ auto r = main_body(); > │ gpuErrchk(cudaDeviceSynchronize()); // This line is here > so the `__trap()` calls on the kernel aren't missed. > │ return r; > │ } > │ ", > │ [], 0) > │ 00:00:59 v #2118 Supervisor.buildFile / ofSeqAsync / x: > (Some > │ "// The types of these two will be replaced during > compilation by the Spiral code generator. > │ // It matches on `using default_int = ` and `;` with the > inner part being replaced so the form should be kept as is. > │ // The two statements need to begin at the start of a line. > │ using default_int = int; > │ using default_uint = unsigned int; > │ > │ #ifndef __NVRTC__ > │ // NVRTC has these includes by default so they need to be > left out if it is used as the compiler. > │ #include <new> > │ #include <assert.h> > │ #include <stdio.h> > │ #endif > │ > │ // For error checking on the host. > │ #define gpuErrchk(ans) { gpuAssert((ans), __FILE__, > __LINE__); } > │ template <typename T> inline __host__ __device__ void > destroy(T& obj) { obj.~T(); } > │ inline void gpuAssert(cudaError error, const char *file, int > line, bool abort=true) { > │ if (error != cudaSuccess) { > │ fprintf(stderr, "GPUassert: %s %s %d\n", > cudaGetErrorString(error), file, line); > │ if (abort) exit(error); > │ } > │ } > │ > │ template <typename el> > │ struct sptr // Shared pointer for the Spiral datatypes. They > have to have the refc field inside them to work. > │ { > │ el* base; > │ > │ __host__ __device__ sptr() : base(nullptr) {} > │ __host__ __device__ sptr(el* ptr) : base(ptr) { > this->base->refc++; } > │ > │ __host__ __device__ ~sptr() > │ { > │ if (this->base != nullptr && --this->base->refc == 0) > │ { > │ delete this->base; > │ this->base = nullptr; > │ } > │ } > │ > │ __host__ __device__ sptr(sptr& x) > │ { > │ this->base = x.base; > │ this->base->refc++; > │ } > │ > │ __host__ __device__ sptr(sptr&& x) > │ { > │ this->base = x.base; > │ x.base = nullptr; > │ } > │ > │ __host__ __device__ sptr& operator=(sptr& x) > │ { > │ if (this->base != x.base) > │ { > │ delete this->base; > │ this->base = x.base; > │ this->base->refc++; > │ } > │ return *this; > │ } > │ > │ __host__ __device__ sptr& operator=(sptr&& x) > │ { > │ if (this->base != x.base) > │ { > │ delete this->base; > │ this->base = x.base; > │ x.base = nullptr; > │ } > │ return *this; > │ } > │ }; > │ > │ template <typename el> > │ struct csptr : public sptr<el> > │ { // Shared pointer for closures specifically. > │ using sptr<el>::sptr; > │ template <typename... Args> > │ __host__ __device__ auto operator()(Args... args) -> > decltype(this->base->operator()(args...)) > │ { > │ return this->base->operator()(args...); > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct static_array > │ { > │ el ptr[max_length]; > │ __host__ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < max_length); > │ return this->ptr[i]; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct static_array_list > │ { > │ default_int length{ 0 }; > │ el ptr[max_length]; > │ > │ __host__ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < this->length); > │ return this->ptr[i]; > │ } > │ __host__ __device__ void push(el& x) { > │ ptr[this->length++] = x; > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __host__ __device__ void push(el&& x) { > │ ptr[this->length++] = std::move(x); > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __host__ __device__ el pop() { > │ assert("The array before popping should be greater > than 0." && 0 < this->length); > │ auto x = ptr[--this->length]; > │ ptr[this->length].~el(); > │ new (&ptr[this->length]) el(); > │ return x; > │ } > │ // Should be used only during initialization. > │ __host__ __device__ void unsafe_set_length(default_int i) > { > │ assert("The new length should be in range." && 0 <= i > && i <= max_length); > │ this->length = i; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array_base > │ { > │ int refc{ 0 }; > │ el* ptr; > │ > │ __host__ __device__ dynamic_array_base() : ptr(new > el[max_length]) {} > │ __host__ __device__ ~dynamic_array_base() { delete[] > this->ptr; } > │ > │ __host__ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < this->length); > │ return this->ptr[i]; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array > │ { > │ sptr<dynamic_array_base<el, max_length>> ptr; > │ > │ __host__ __device__ dynamic_array() = default; > │ __host__ __device__ dynamic_array(bool t) : ptr(new > dynamic_array_base<el, max_length>()) {} > │ __host__ __device__ el& operator[](default_int i) { > │ return this->ptr.base->operator[](i); > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array_list_base > │ { > │ int refc{ 0 }; > │ default_int length{ 0 }; > │ el* ptr; > │ > │ __host__ __device__ dynamic_array_list_base() : ptr(new > el[max_length]) {} > │ __host__ __device__ dynamic_array_list_base(default_int > l) : ptr(new el[max_length]) { this->unsafe_set_length(l); } > │ __host__ __device__ ~dynamic_array_list_base() { delete[] > this->ptr; } > │ > │ __host__ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < this->length); > │ return this->ptr[i]; > │ } > │ __host__ __device__ void push(el& x) { > │ ptr[this->length++] = x; > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __host__ __device__ void push(el&& x) { > │ ptr[this->length++] = std::move(x); > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __host__ __device__ el pop() { > │ assert("The array before popping should be greater > than 0." && 0 < this->length); > │ auto x = ptr[--this->length]; > │ ptr[this->length].~el(); > │ new (&ptr[this->length]) el(); > │ return x; > │ } > │ // Should be used only during initialization. > │ __host__ __device__ void unsafe_set_length(default_int i) > { > │ assert("The new length should be in range." && 0 <= i > && i <= max_length); > │ this->length = i; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array_list > │ { > │ sptr<dynamic_array_list_base<el, max_length>> ptr; > │ > │ __host__ __device__ dynamic_array_list() = default; > │ __host__ __device__ dynamic_array_list(default_int l) : > ptr(new dynamic_array_list_base<el, max_length>(l)) {} > │ > │ __host__ __device__ el& operator[](default_int i) { > │ return this->ptr.base->operator[](i); > │ } > │ __host__ __device__ void push(el& x) { > │ this->ptr.base->push(x); > │ } > │ __host__ __device__ void push(el&& x) { > │ this->ptr.base->push(std::move(x)); > │ } > │ __host__ __device__ el pop() { > │ return this->ptr.base->pop(); > │ } > │ // Should be used only during initialization. > │ __host__ __device__ void unsafe_set_length(default_int i) > { > │ this->ptr.base->unsafe_set_length(i); > │ } > │ __host__ __device__ default_int length_() { > │ return this->ptr.base->length; > │ } > │ }; > │ #include "main.auto.cu" > │ namespace Device { > │ } > │ int main_body() { > │ int v3; > │ v3 = ; > │ return v3; > │ } > │ int main(){ > │ auto r = main_body(); > │ gpuErrchk(cudaDeviceSynchronize()); // This line is here > so the `__trap()` calls on the kernel aren't missed. > │ return r; > │ } > │ ", > │ [], 0) > │ 00:00:59 v #2119 Supervisor.buildFile / result: [] / > buildFileResult: Some > │ "// The types of these two will be replaced during > compilation by the Spiral code generator. > │ // It matches on `using default_int = ` and `;` with the > inner part being replaced so the form should be kept as is. > │ // The two statements need to begin at the start of a line. > │ using default_int = int; > │ using default_uint = unsigned int; > │ > │ #ifndef __NVRTC__ > │ // NVRTC has these includes by default so they need to be > left out if it is used as the compiler. > │ #include <new> > │ #include <assert.h> > │ #include <stdio.h> > │ #endif > │ > │ // For error checking on the host. > │ #define gpuErrchk(ans) { gpuAssert((ans), __FILE__, > __LINE__); } > │ template <typename T> inline __host__ __device__ void > destroy(T& obj) { obj.~T(); } > │ inline void gpuAssert(cudaError error, const char *file, int > line, bool abort=true) { > │ if (error != cudaSuccess) { > │ fprintf(stderr, "GPUassert: %s %s %d\n", > cudaGetErrorString(error), file, line); > │ if (abort) exit(error); > │ } > │ } > │ > │ template <typename el> > │ struct sptr // Shared pointer for the Spiral datatypes. They > have to have the refc field inside them to work. > │ { > │ el* base; > │ > │ __host__ __device__ sptr() : base(nullptr) {} > │ __host__ __device__ sptr(el* ptr) : base(ptr) { > this->base->refc++; } > │ > │ __host__ __device__ ~sptr() > │ { > │ if (this->base != nullptr && --this->base->refc == 0) > │ { > │ delete this->base; > │ this->base = nullptr; > │ } > │ } > │ > │ __host__ __device__ sptr(sptr& x) > │ { > │ this->base = x.base; > │ this->base->refc++; > │ } > │ > │ __host__ __device__ sptr(sptr&& x) > │ { > │ this->base = x.base; > │ x.base = nullptr; > │ } > │ > │ __host__ __device__ sptr& operator=(sptr& x) > │ { > │ if (this->base != x.base) > │ { > │ delete this->base; > │ this->base = x.base; > │ this->base->refc++; > │ } > │ return *this; > │ } > │ > │ __host__ __device__ sptr& operator=(sptr&& x) > │ { > │ if (this->base != x.base) > │ { > │ delete this->base; > │ this->base = x.base; > │ x.base = nullptr; > │ } > │ return *this; > │ } > │ }; > │ > │ template <typename el> > │ struct csptr : public sptr<el> > │ { // Shared pointer for closures specifically. > │ using sptr<el>::sptr; > │ template <typename... Args> > │ __host__ __device__ auto operator()(Args... args) -> > decltype(this->base->operator()(args...)) > │ { > │ return this->base->operator()(args...); > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct static_array > │ { > │ el ptr[max_length]; > │ __host__ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < max_length); > │ return this->ptr[i]; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct static_array_list > │ { > │ default_int length{ 0 }; > │ el ptr[max_length]; > │ > │ __host__ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < this->length); > │ return this->ptr[i]; > │ } > │ __host__ __device__ void push(el& x) { > │ ptr[this->length++] = x; > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __host__ __device__ void push(el&& x) { > │ ptr[this->length++] = std::move(x); > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __host__ __device__ el pop() { > │ assert("The array before popping should be greater > than 0." && 0 < this->length); > │ auto x = ptr[--this->length]; > │ ptr[this->length].~el(); > │ new (&ptr[this->length]) el(); > │ return x; > │ } > │ // Should be used only during initialization. > │ __host__ __device__ void unsafe_set_length(default_int i) > { > │ assert("The new length should be in range." && 0 <= i > && i <= max_length); > │ this->length = i; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array_base > │ { > │ int refc{ 0 }; > │ el* ptr; > │ > │ __host__ __device__ dynamic_array_base() : ptr(new > el[max_length]) {} > │ __host__ __device__ ~dynamic_array_base() { delete[] > this->ptr; } > │ > │ __host__ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < this->length); > │ return this->ptr[i]; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array > │ { > │ sptr<dynamic_array_base<el, max_length>> ptr; > │ > │ __host__ __device__ dynamic_array() = default; > │ __host__ __device__ dynamic_array(bool t) : ptr(new > dynamic_array_base<el, max_length>()) {} > │ __host__ __device__ el& operator[](default_int i) { > │ return this->ptr.base->operator[](i); > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array_list_base > │ { > │ int refc{ 0 }; > │ default_int length{ 0 }; > │ el* ptr; > │ > │ __host__ __device__ dynamic_array_list_base() : ptr(new > el[max_length]) {} > │ __host__ __device__ dynamic_array_list_base(default_int > l) : ptr(new el[max_length]) { this->unsafe_set_length(l); } > │ __host__ __device__ ~dynamic_array_list_base() { delete[] > this->ptr; } > │ > │ __host__ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < this->length); > │ return this->ptr[i]; > │ } > │ __host__ __device__ void push(el& x) { > │ ptr[this->length++] = x; > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __host__ __device__ void push(el&& x) { > │ ptr[this->length++] = std::move(x); > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __host__ __device__ el pop() { > │ assert("The array before popping should be greater > than 0." && 0 < this->length); > │ auto x = ptr[--this->length]; > │ ptr[this->length].~el(); > │ new (&ptr[this->length]) el(); > │ return x; > │ } > │ // Should be used only during initialization. > │ __host__ __device__ void unsafe_set_length(default_int i) > { > │ assert("The new length should be in range." && 0 <= i > && i <= max_length); > │ this->length = i; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array_list > │ { > │ sptr<dynamic_array_list_base<el, max_length>> ptr; > │ > │ __host__ __device__ dynamic_array_list() = default; > │ __host__ __device__ dynamic_array_list(default_int l) : > ptr(new dynamic_array_list_base<el, max_length>(l)) {} > │ > │ __host__ __device__ el& operator[](default_int i) { > │ return this->ptr.base->operator[](i); > │ } > │ __host__ __device__ void push(el& x) { > │ this->ptr.base->push(x); > │ } > │ __host__ __device__ void push(el&& x) { > │ this->ptr.base->push(std::move(x)); > │ } > │ __host__ __device__ el pop() { > │ return this->ptr.base->pop(); > │ } > │ // Should be used only during initialization. > │ __host__ __device__ void unsafe_set_length(default_int i) > { > │ this->ptr.base->unsafe_set_length(i); > │ } > │ __host__ __device__ default_int length_() { > │ return this->ptr.base->length; > │ } > │ }; > │ #include "main.auto.cu" > │ namespace Device { > │ } > │ int main_body() { > │ int v3; > │ v3 = ; > │ return v3; > │ } > │ int main(){ > │ auto r = main_body(); > │ gpuErrchk(cudaDeviceSynchronize()); // This line is here > so the `__trap()` calls on the kernel aren't missed. > │ return r; > │ } > │ " / typeErrorCount: 0 > │ 00:00:59 v #2120 Supervisor.buildFile / retry: 0 / > typeErrorCount: 0 / fileDir: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a702c5b29a050ecc > fe7c911beeea63f353f61e71985bbebdb653ac32f3395c52 / targetDir: > /home/runner/work/polyglot/polyglot/target > │ Some > │ (Some > │ "// The types of these two will be replaced during > compilation by the Spiral code generator. > │ // It matches on `using default_int = ` and `;` with the > inner part being replaced so the form should be kept as is. > │ // The two statements need to begin at the start of a line. > │ using default_int = int; > │ using default_uint = unsigned int; > │ > │ #ifndef __NVRTC__ > │ // NVRTC has these includes by default so they need to be > left out if it is used as the compiler. > │ #include <new> > │ #include <assert.h> > │ #include <stdio.h> > │ #endif > │ > │ // For error checking on the host. > │ #define gpuErrchk(ans) { gpuAssert((ans), __FILE__, > __LINE__); } > │ template <typename T> inline __host__ __device__ void > destroy(T& obj) { obj.~T(); } > │ inline void gpuAssert(cudaError error, const char *file, int > line, bool abort=true) { > │ if (error != cudaSuccess) { > │ fprintf(stderr, "GPUassert: %s %s %d\n", > cudaGetErrorString(error), file, line); > │ if (abort) exit(error); > │ } > │ } > │ > │ template <typename el> > │ struct sptr // Shared pointer for the Spiral datatypes. They > have to have the refc field inside them to work. > │ { > │ el* base; > │ > │ __host__ __device__ sptr() : base(nullptr) {} > │ __host__ __device__ sptr(el* ptr) : base(ptr) { > this->base->refc++; } > │ > │ __host__ __device__ ~sptr() > │ { > │ if (this->base != nullptr && --this->base->refc == 0) > │ { > │ delete this->base; > │ this->base = nullptr; > │ } > │ } > │ > │ __host__ __device__ sptr(sptr& x) > │ { > │ this->base = x.base; > │ this->base->refc++; > │ } > │ > │ __host__ __device__ sptr(sptr&& x) > │ { > │ this->base = x.base; > │ x.base = nullptr; > │ } > │ > │ __host__ __device__ sptr& operator=(sptr& x) > │ { > │ if (this->base != x.base) > │ { > │ delete this->base; > │ this->base = x.base; > │ this->base->refc++; > │ } > │ return *this; > │ } > │ > │ __host__ __device__ sptr& operator=(sptr&& x) > │ { > │ if (this->base != x.base) > │ { > │ delete this->base; > │ this->base = x.base; > │ x.base = nullptr; > │ } > │ return *this; > │ } > │ }; > │ > │ template <typename el> > │ struct csptr : public sptr<el> > │ { // Shared pointer for closures specifically. > │ using sptr<el>::sptr; > │ template <typename... Args> > │ __host__ __device__ auto operator()(Args... args) -> > decltype(this->base->operator()(args...)) > │ { > │ return this->base->operator()(args...); > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct static_array > │ { > │ el ptr[max_length]; > │ __host__ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < max_length); > │ return this->ptr[i]; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct static_array_list > │ { > │ default_int length{ 0 }; > │ el ptr[max_length]; > │ > │ __host__ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < this->length); > │ return this->ptr[i]; > │ } > │ __host__ __device__ void push(el& x) { > │ ptr[this->length++] = x; > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __host__ __device__ void push(el&& x) { > │ ptr[this->length++] = std::move(x); > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __host__ __device__ el pop() { > │ assert("The array before popping should be greater > than 0." && 0 < this->length); > │ auto x = ptr[--this->length]; > │ ptr[this->length].~el(); > │ new (&ptr[this->length]) el(); > │ return x; > │ } > │ // Should be used only during initialization. > │ __host__ __device__ void unsafe_set_length(default_int i) > { > │ assert("The new length should be in range." && 0 <= i > && i <= max_length); > │ this->length = i; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array_base > │ { > │ int refc{ 0 }; > │ el* ptr; > │ > │ __host__ __device__ dynamic_array_base() : ptr(new > el[max_length]) {} > │ __host__ __device__ ~dynamic_array_base() { delete[] > this->ptr; } > │ > │ __host__ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < this->length); > │ return this->ptr[i]; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array > │ { > │ sptr<dynamic_array_base<el, max_length>> ptr; > │ > │ __host__ __device__ dynamic_array() = default; > │ __host__ __device__ dynamic_array(bool t) : ptr(new > dynamic_array_base<el, max_length>()) {} > │ __host__ __device__ el& operator[](default_int i) { > │ return this->ptr.base->operator[](i); > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array_list_base > │ { > │ int refc{ 0 }; > │ default_int length{ 0 }; > │ el* ptr; > │ > │ __host__ __device__ dynamic_array_list_base() : ptr(new > el[max_length]) {} > │ __host__ __device__ dynamic_array_list_base(default_int > l) : ptr(new el[max_length]) { this->unsafe_set_length(l); } > │ __host__ __device__ ~dynamic_array_list_base() { delete[] > this->ptr; } > │ > │ __host__ __device__ el& operator[](default_int i) { > │ assert("The index has to be in range." && 0 <= i && i > < this->length); > │ return this->ptr[i]; > │ } > │ __host__ __device__ void push(el& x) { > │ ptr[this->length++] = x; > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __host__ __device__ void push(el&& x) { > │ ptr[this->length++] = std::move(x); > │ assert("The array after pushing should not be greater > than max length." && this->length <= max_length); > │ } > │ __host__ __device__ el pop() { > │ assert("The array before popping should be greater > than 0." && 0 < this->length); > │ auto x = ptr[--this->length]; > │ ptr[this->length].~el(); > │ new (&ptr[this->length]) el(); > │ return x; > │ } > │ // Should be used only during initialization. > │ __host__ __device__ void unsafe_set_length(default_int i) > { > │ assert("The new length should be in range." && 0 <= i > && i <= max_length); > │ this->length = i; > │ } > │ }; > │ > │ template <typename el, default_int max_length> > │ struct dynamic_array_list > │ { > │ sptr<dynamic_array_list_base<el, max_length>> ptr; > │ > │ __host__ __device__ dynamic_array_list() = default; > │ __host__ __device__ dynamic_array_list(default_int l) : > ptr(new dynamic_array_list_base<el, max_length>(l)) {} > │ > │ __host__ __device__ el& operator[](default_int i) { > │ return this->ptr.base->operator[](i); > │ } > │ __host__ __device__ void push(el& x) { > │ this->ptr.base->push(x); > │ } > │ __host__ __device__ void push(el&& x) { > │ this->ptr.base->push(std::move(x)); > │ } > │ __host__ __device__ el pop() { > │ return this->ptr.base->pop(); > │ } > │ // Should be used only during initialization. > │ __host__ __device__ void unsafe_set_length(default_int i) > { > │ this->ptr.base->unsafe_set_length(i); > │ } > │ __host__ __device__ default_int length_() { > │ return this->ptr.base->length; > │ } > │ }; > │ #include "main.auto.cu" > │ namespace Device { > │ } > │ int main_body() { > │ int v3; > │ v3 = ; > │ return v3; > │ } > │ int main(){ > │ auto r = main_body(); > │ gpuErrchk(cudaDeviceSynchronize()); // This line is here > so the `__trap()` calls on the kernel aren't missed. > │ return r; > │ } > │ ", > │ []) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """ > inl init_series start end inc = > inl total : f64 = conv ((end - start) / inc) + 1 > listm.init total (conv >> (*) inc >> (+) start) : list f64 > > type integration = (f64 -> f64) -> f64 -> f64 -> f64 > > inl integral dt : integration = > fun f a b => > init_series (a + dt / 2) (b - dt / 2) dt > |> listm.map (f >> (*) dt) > |> listm.fold (+) 0 > > inl main () = > integral 0.1 (fun x => x ** 2) 0 1 > """ > |> fun code -> Spi (code, None) > |> buildCode Gleam [[||]] false 10000 None > |> Async.runWithTimeout 11000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > Some "pub fn main () { 0.3325000000000001\n }", > [[]] > ) > ) > > ── [ 345.59ms - stdout ] ─────────────────────────────────────────────────────── > │ 00:00:59 v #2140 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/9fee147a19a3a90a > b5113d3c8fb7b0b2072de018aa3d73cd2d4eb0e7e7a32620/src/main.spi > │ 00:00:59 v #2141 Supervisor.buildFile / AsyncSeq.scan / > outputContent: > │ ' / errors: [] / outputContentResult: / typeErrorCount: 0 / > retry: 0 / error: / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/9fee147a19a3a90a > b5113d3c8fb7b0b2072de018aa3d73cd2d4eb0e7e7a32620/src/main.spi' > │ 00:00:59 v #2142 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/9fee147a19a3a90a > b5113d3c8fb7b0b2072de018aa3d73cd2d4eb0e7e7a32620/src/main.spi > │ 00:00:59 v #2143 Supervisor.buildFile / fullPathUri: > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/9fee147a > 19a3a90ab5113d3c8fb7b0b2072de018aa3d73cd2d4eb0e7e7a32620/src/main.spi" > │ 00:00:59 v #2144 Supervisor.buildFile / _fileOpenResult: > <null> > │ 00:00:59 v #2145 Supervisor.buildFile / before result: > () > │ 00:01:00 v #2382 Supervisor.buildFile / buildFileResult: > Some "pub fn main () { 0.3325000000000001 > │ }" > │ 00:01:00 v #2383 Supervisor.buildFile / > outputContentSeq2 unfoldAsync / msg: (Some "pub fn main () { 0.3325000000000001 > │ }", [], 0) > │ 00:01:00 v #2384 Supervisor.buildFile / ofSeqAsync / x: > (Some "pub fn main () { 0.3325000000000001 > │ }", [], 0) > │ 00:01:00 v #2385 Supervisor.buildFile / result: [] / > buildFileResult: Some "pub fn main () { 0.3325000000000001 > │ }" / typeErrorCount: 0 > │ 00:01:00 v #2386 Supervisor.buildFile / retry: 0 / > typeErrorCount: 0 / fileDir: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/9fee147a19a3a90a > b5113d3c8fb7b0b2072de018aa3d73cd2d4eb0e7e7a32620/src / targetDir: > /home/runner/work/polyglot/polyglot/target > │ Some (Some "pub fn main () { 0.3325000000000001 > │ }", []) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > SpiralTrace.TraceLevel.US0_0 |> set_trace_level > """ > inl init_series start end inc = > inl total : f64 = conv ((end - start) / inc) + 1 > listm.init total (conv >> (*) inc >> (+) start) : list f64 > > type integration = (f64 -> f64) -> f64 -> f64 -> f64 > > inl integral dt : integration = > fun f a b => > init_series (a + dt / 2) (b - dt / 2) dt > |> listm.map (f >> (*) dt) > |> listm.fold (+) 0 > > inl main () = > integral 0.01 (fun x => x ** 2) 0 1 > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp [[||]] false 10000 None > |> Async.runWithTimeout 11000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > Some "0.33332500000000004\n", > [[]] > ) > ) > // |> _assertEqual None > // |> fun x -> printfn $"{x.ToDisplayString ()}" > > ── [ 398.16ms - stdout ] ─────────────────────────────────────────────────────── > │ 00:01:00 v #2411 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce > 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi > │ 00:01:00 v #2412 Supervisor.buildFile / AsyncSeq.scan / > outputContent: > │ ' / errors: [] / outputContentResult: / typeErrorCount: 0 / > retry: 0 / error: / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce > 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi' > │ 00:01:00 v #2413 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce > 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi > │ 00:01:00 v #2414 Supervisor.buildFile / fullPathUri: > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d9 > 7e6b50ce3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4/main.spi" > │ 00:01:00 v #2415 Supervisor.buildFile / _fileOpenResult: > <null> > │ 00:01:00 v #2416 Supervisor.buildFile / before result: > () > │ 00:01:00 v #2653 Supervisor.buildFile / buildFileResult: > Some "0.33332500000000004 > │ " > │ 00:01:00 v #2654 Supervisor.buildFile / > outputContentSeq2 unfoldAsync / msg: (Some "0.33332500000000004 > │ ", [], 0) > │ 00:01:00 v #2655 Supervisor.buildFile / ofSeqAsync / x: > (Some "0.33332500000000004 > │ ", [], 0) > │ 00:01:00 v #2656 Supervisor.buildFile / result: [] / > buildFileResult: Some "0.33332500000000004 > │ " / typeErrorCount: 0 > │ 00:01:00 v #2657 Supervisor.buildFile / retry: 0 / > typeErrorCount: 0 / fileDir: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/2acc44d97e6b50ce > 3caf39a0b93135633484d22c3ef6e7797ce64875a41451f4 / targetDir: > /home/runner/work/polyglot/polyglot/target > │ Some (Some "0.33332500000000004 > │ ", []) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > SpiralTrace.TraceLevel.US0_0 |> set_trace_level > "" > |> fun code -> Spi (code, None) > |> buildCode Fsharp [[||]] false 10000 None > |> Async.runWithTimeout 11000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > None, > [[ "Cannot find `main` in file main." ]] > ) > ) > > ── [ 464.56ms - stdout ] ─────────────────────────────────────────────────────── > │ 00:01:00 v #2681 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9 > 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi > │ 00:01:00 v #2682 Supervisor.buildFile / AsyncSeq.scan / > outputContent: > │ ' / errors: [] / outputContentResult: / typeErrorCount: 0 / > retry: 0 / error: / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9 > 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi' > │ 00:01:00 v #2683 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9 > 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi > │ 00:01:00 v #2684 Supervisor.buildFile / fullPathUri: > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342cc > c7da0da967b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi" > │ 00:01:00 v #2685 Supervisor.buildFile / _fileOpenResult: > <null> > │ 00:01:00 v #2686 Supervisor.buildFile / before result: > () > │ 00:01:00 v #2927 Supervisor.buildFile / buildFileResult: > None > │ 00:01:00 v #2928 Supervisor.buildFile / ofSeqAsync / x: > (None, [], 0) > │ 00:01:00 v #2941 Supervisor.buildFile / AsyncSeq.scan / > outputContent: > │ ' / errors: [] / outputContentResult: / typeErrorCount: 0 / > retry: 0 / error: Some((Cannot find `main` in file main., FatalError "Cannot > find `main` in file main.")) / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9 > 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi' > │ 00:01:00 v #2942 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [ > │ [ > │ "Cannot find `main` in file main.", > │ { > │ "FatalError": "Cannot find `main` in file main." > │ } > │ ] > │ ] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9 > 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa/main.spi > │ 00:01:00 v #2948 Supervisor.buildFile / outputChild / x: > Some > │ (Ok > │ (Some > │ (None, > │ [("Cannot find `main` in file main.", > │ FatalError "Cannot find `main` in file main.")], > 0))) > │ 00:01:00 v #2950 Supervisor.buildFile / ofSeqAsync / x: > (None, > │ [("Cannot find `main` in file main.", > │ FatalError "Cannot find `main` in file main.")], 0) > │ 00:01:00 v #2951 Supervisor.buildFile / result: > [("Cannot find `main` in file main.", > │ FatalError "Cannot find `main` in file main.")] / > buildFileResult: None / typeErrorCount: 0 > │ 00:01:00 v #2952 Supervisor.buildFile / retry: 0 / > typeErrorCount: 0 / fileDir: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/a65342ccc7da0da9 > 67b18d8e705d0260e9a932e5e68c0feb33db55c4d28170aa / targetDir: > /home/runner/work/polyglot/polyglot/target > │ Some (None, ["Cannot find `main` in file main."]) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > SpiralTrace.TraceLevel.US0_0 |> set_trace_level > """inl main () = > 1i32 / 0i32 > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp [[||]] false 10000 None > |> Async.runWithTimeout 11000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > None, > [[ "An attempt to divide by zero has been detected at compile time." ]] > ) > ) > > ── [ 329.37ms - stdout ] ─────────────────────────────────────────────────────── > │ 00:01:01 v #2970 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi > │ 00:01:01 v #2971 Supervisor.buildFile / AsyncSeq.scan / > outputContent: > │ ' / errors: [] / outputContentResult: / typeErrorCount: 0 / > retry: 0 / error: / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi' > │ 00:01:01 v #2972 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi > │ 00:01:01 v #2973 Supervisor.buildFile / fullPathUri: > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d > 9b06b75b1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi" > │ 00:01:01 v #2974 Supervisor.buildFile / _fileOpenResult: > <null> > │ 00:01:01 v #2975 Supervisor.buildFile / before result: > () > │ 00:01:01 v #3212 Supervisor.buildFile / buildFileResult: > None > │ 00:01:01 v #3213 Supervisor.buildFile / ofSeqAsync / x: > (None, [], 0) > │ 00:01:01 v #3214 Supervisor.buildFile / AsyncSeq.scan / > outputContent: > │ ' / errors: [] / outputContentResult: / typeErrorCount: 0 / > retry: 0 / error: Some((An attempt to divide by zero has been detected at > compile time., TracedError > │ { message = "An attempt to divide by zero has been detected > at compile time." > │ trace = > │ ["Error trace on line: 1, column: 10 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi . > │ inl main () = > │ ^ > │ "; > │ "Error trace on line: 2, column: 5 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi . > │ 1i32 / 0i32 > │ ^ > │ "] })) / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi' > │ 00:01:01 v #3215 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [ > │ [ > │ "An attempt to divide by zero has been detected at > compile time.", > │ { > │ "TracedError": { > │ "message": "An attempt to divide by zero has been > detected at compile time.", > │ "trace": [ > │ "Error trace on line: 1, column: 10 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi . > │ inl main () = > │ ^ > │ ", > │ "Error trace on line: 2, column: 5 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi . > │ 1i32 / 0i32 > │ ^ > │ " > │ ] > │ } > │ } > │ ] > │ ] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi > │ 00:01:01 v #3217 Supervisor.buildFile / outputChild / x: > Some > │ (Ok > │ (Some > │ (None, > │ [("An attempt to divide by zero has been detected at > compile time.", > │ TracedError > │ { message = > │ "An attempt to divide by zero has been > detected at compile time." > │ trace = > │ ["Error trace on line: 1, column: 10 in > module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi . > │ inl main () = > │ ^ > │ "; > │ "Error trace on line: 2, column: 5 in > module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi . > │ 1i32 / 0i32 > │ ^ > │ "] })], > │ 0))) > │ 00:01:01 v #3218 Supervisor.buildFile / ofSeqAsync / x: > (None, > │ [("An attempt to divide by zero has been detected at compile > time.", > │ TracedError > │ { message = > │ "An attempt to divide by zero has been detected at > compile time." > │ trace = > │ ["Error trace on line: 1, column: 10 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi . > │ inl main () = > │ ^ > │ "; > │ "Error trace on line: 2, column: 5 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi . > │ 1i32 / 0i32 > │ ^ > │ "] })], > │ 0) > │ 00:01:01 v #3219 Supervisor.buildFile / result: [("An > attempt to divide by zero has been detected at compile time.", > │ TracedError > │ { message = > │ "An attempt to divide by zero has been detected at > compile time." > │ trace = > │ ["Error trace on line: 1, column: 10 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi . > │ inl main () = > │ ^ > │ "; > │ "Error trace on line: 2, column: 5 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2/main.spi . > │ 1i32 / 0i32 > │ ^ > │ "] })] / buildFileResult: None / typeErrorCount: 0 > │ 00:01:01 v #3220 Supervisor.buildFile / retry: 0 / > typeErrorCount: 0 / fileDir: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/fef9812d9b06b75b > 1ab26589e52c6d6ff05910b73ead9e8c4f27f88d2a5cdfb2 / targetDir: > /home/runner/work/polyglot/polyglot/target > │ Some (None, ["An attempt to divide by zero has been detected > at compile time."]) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > SpiralTrace.TraceLevel.US0_0 |> set_trace_level > """ > inl main () = > real > inl unbox_real forall a. (obj : a) : a = > typecase obj with > | _ => obj > unbox_real () > () > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp [[||]] false 10000 None > |> Async.runWithTimeout 11000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > None, > [[ "Cannot apply a forall with a term." ]] > ) > ) > > ── [ 361.76ms - stdout ] ─────────────────────────────────────────────────────── > │ 00:01:01 v #3238 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi > │ 00:01:01 v #3239 Supervisor.buildFile / AsyncSeq.scan / > outputContent: > │ ' / errors: [] / outputContentResult: / typeErrorCount: 0 / > retry: 0 / error: / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi' > │ 00:01:01 v #3240 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi > │ 00:01:01 v #3241 Supervisor.buildFile / fullPathUri: > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/66752865 > 9dc2e5af51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi" > │ 00:01:01 v #3242 Supervisor.buildFile / _fileOpenResult: > <null> > │ 00:01:01 v #3243 Supervisor.buildFile / before result: > () > │ 00:01:01 v #3480 Supervisor.buildFile / buildFileResult: > None > │ 00:01:01 v #3481 Supervisor.buildFile / ofSeqAsync / x: > (None, [], 0) > │ 00:01:01 v #3482 Supervisor.buildFile / AsyncSeq.scan / > outputContent: > │ ' / errors: [] / outputContentResult: / typeErrorCount: 0 / > retry: 0 / error: Some((Cannot apply a forall with a term., TracedError > │ { message = "Cannot apply a forall with a term." > │ trace = > │ ["Error trace on line: 2, column: 10 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi . > │ inl main () = > │ ^ > │ "; > │ "Error trace on line: 4, column: 9 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi . > │ inl unbox_real forall a. (obj : a) : a = > │ ^ > │ "; > │ "Error trace on line: 7, column: 9 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi . > │ unbox_real () > │ ^ > │ "] })) / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi' > │ 00:01:01 v #3483 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [ > │ [ > │ "Cannot apply a forall with a term.", > │ { > │ "TracedError": { > │ "message": "Cannot apply a forall with a term.", > │ "trace": [ > │ "Error trace on line: 2, column: 10 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi . > │ inl main () = > │ ^ > │ ", > │ "Error trace on line: 4, column: 9 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi . > │ inl unbox_real forall a. (obj : a) : a = > │ ^ > │ ", > │ "Error trace on line: 7, column: 9 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi . > │ unbox_real () > │ ^ > │ " > │ ] > │ } > │ } > │ ] > │ ] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi > │ 00:01:01 v #3485 Supervisor.buildFile / outputChild / x: > Some > │ (Ok > │ (Some > │ (None, > │ [("Cannot apply a forall with a term.", > │ TracedError > │ { message = "Cannot apply a forall with a term." > │ trace = > │ ["Error trace on line: 2, column: 10 in > module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi . > │ inl main () = > │ ^ > │ "; > │ "Error trace on line: 4, column: 9 in > module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi . > │ inl unbox_real forall a. (obj : a) : a = > │ ^ > │ "; > │ "Error trace on line: 7, column: 9 in > module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi . > │ unbox_real () > │ ^ > │ "] })], > │ 0))) > │ 00:01:01 v #3486 Supervisor.buildFile / ofSeqAsync / x: > (None, > │ [("Cannot apply a forall with a term.", > │ TracedError > │ { message = "Cannot apply a forall with a term." > │ trace = > │ ["Error trace on line: 2, column: 10 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi . > │ inl main () = > │ ^ > │ "; > │ "Error trace on line: 4, column: 9 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi . > │ inl unbox_real forall a. (obj : a) : a = > │ ^ > │ "; > │ "Error trace on line: 7, column: 9 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi . > │ unbox_real () > │ ^ > │ "] })], > │ 0) > │ 00:01:01 v #3487 Supervisor.buildFile / result: > [("Cannot apply a forall with a term.", > │ TracedError > │ { message = "Cannot apply a forall with a term." > │ trace = > │ ["Error trace on line: 2, column: 10 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi . > │ inl main () = > │ ^ > │ "; > │ "Error trace on line: 4, column: 9 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi . > │ inl unbox_real forall a. (obj : a) : a = > │ ^ > │ "; > │ "Error trace on line: 7, column: 9 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi . > │ unbox_real () > │ ^ > │ "] })] / buildFileResult: None / typeErrorCount: 0 > │ 00:01:01 v #3488 Supervisor.buildFile / retry: 0 / > typeErrorCount: 0 / fileDir: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a / targetDir: > /home/runner/work/polyglot/polyglot/target > │ Some (None, ["Cannot apply a forall with a term."]) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > SpiralTrace.TraceLevel.US0_0 |> set_trace_level > """ > inl main () = > real > inl unbox_real forall a. (obj : a) : a = > typecase obj with > | _ => obj > unbox_real `i32 1 > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp [[||]] false 10000 None > |> Async.runWithTimeout 11000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > None, > [[ "The main function should not have a forall." ]] > ) > ) > > ── [ 327.56ms - stdout ] ─────────────────────────────────────────────────────── > │ 00:01:01 v #3507 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79 > 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi > │ 00:01:01 v #3508 Supervisor.buildFile / AsyncSeq.scan / > outputContent: > │ ' / errors: [] / outputContentResult: / typeErrorCount: 0 / > retry: 0 / error: / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79 > 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi' > │ 00:01:01 v #3509 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79 > 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi > │ 00:01:01 v #3510 Supervisor.buildFile / fullPathUri: > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42 > df309b790acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi" > │ 00:01:01 v #3511 Supervisor.buildFile / _fileOpenResult: > <null> > │ 00:01:01 v #3512 Supervisor.buildFile / before result: > () > │ 00:01:02 v #3747 Supervisor.buildFile / buildFileResult: > None > │ 00:01:02 v #3748 Supervisor.buildFile / ofSeqAsync / x: > (None, [], 0) > │ 00:01:02 v #3749 Supervisor.buildFile / AsyncSeq.scan / > outputContent: > │ ' / errors: [] / outputContentResult: / typeErrorCount: 0 / > retry: 0 / error: Some((The main function should not have a forall., TracedError > { message = "The main function should not have a forall." > │ trace = [] })) / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79 > 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi' > │ 00:01:02 v #3750 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [ > │ [ > │ "The main function should not have a forall.", > │ { > │ "TracedError": { > │ "message": "The main function should not have a > forall.", > │ "trace": [] > │ } > │ } > │ ] > │ ] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79 > 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f/main.spi > │ 00:01:02 v #3752 Supervisor.buildFile / outputChild / x: > Some > │ (Ok > │ (Some > │ (None, > │ [("The main function should not have a forall.", > │ TracedError { message = "The main function should > not have a forall." > │ trace = [] })], 0))) > │ 00:01:02 v #3753 Supervisor.buildFile / ofSeqAsync / x: > (None, > │ [("The main function should not have a forall.", > │ TracedError { message = "The main function should not have > a forall." > │ trace = [] })], 0) > │ 00:01:02 v #3754 Supervisor.buildFile / result: [("The > main function should not have a forall.", > │ TracedError { message = "The main function should not have > a forall." > │ trace = [] })] / buildFileResult: None / > typeErrorCount: 0 > │ 00:01:02 v #3755 Supervisor.buildFile / retry: 0 / > typeErrorCount: 0 / fileDir: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/0ba44c42df309b79 > 0acdf4f9fc55fcc7912380f5dd2d90fad118bad793251c4f / targetDir: > /home/runner/work/polyglot/polyglot/target > │ Some (None, ["The main function should not have a forall."]) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > SpiralTrace.TraceLevel.US0_0 |> set_trace_level > """ > inl main () = > real > inl unbox_real forall a. (obj : a) : a = > typecase obj with > | _ => obj > unbox_real () > () > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp [[||]] false 10000 None > |> Async.runWithTimeout 11000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > None, > [[ "Cannot apply a forall with a term." ]] > ) > ) > > ── [ 368.12ms - stdout ] ─────────────────────────────────────────────────────── > │ 00:01:02 v #3773 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi > │ 00:01:02 v #3774 Supervisor.buildFile / AsyncSeq.scan / > outputContent: > │ ' / errors: [] / outputContentResult: / typeErrorCount: 0 / > retry: 0 / error: / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi' > │ 00:01:02 v #3775 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi > │ 00:01:02 v #3776 Supervisor.buildFile / fullPathUri: > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/66752865 > 9dc2e5af51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi" > │ 00:01:02 v #3777 Supervisor.buildFile / _fileOpenResult: > <null> > │ 00:01:02 v #3778 Supervisor.buildFile / before result: > () > │ 00:01:02 v #4015 Supervisor.buildFile / buildFileResult: > None > │ 00:01:02 v #4016 Supervisor.buildFile / ofSeqAsync / x: > (None, [], 0) > │ 00:01:02 v #4017 Supervisor.buildFile / AsyncSeq.scan / > outputContent: > │ ' / errors: [] / outputContentResult: / typeErrorCount: 0 / > retry: 0 / error: Some((Cannot apply a forall with a term., TracedError > │ { message = "Cannot apply a forall with a term." > │ trace = > │ ["Error trace on line: 2, column: 10 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi . > │ inl main () = > │ ^ > │ "; > │ "Error trace on line: 4, column: 9 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi . > │ inl unbox_real forall a. (obj : a) : a = > │ ^ > │ "; > │ "Error trace on line: 7, column: 9 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi . > │ unbox_real () > │ ^ > │ "] })) / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi' > │ 00:01:02 v #4018 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [ > │ [ > │ "Cannot apply a forall with a term.", > │ { > │ "TracedError": { > │ "message": "Cannot apply a forall with a term.", > │ "trace": [ > │ "Error trace on line: 2, column: 10 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi . > │ inl main () = > │ ^ > │ ", > │ "Error trace on line: 4, column: 9 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi . > │ inl unbox_real forall a. (obj : a) : a = > │ ^ > │ ", > │ "Error trace on line: 7, column: 9 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi . > │ unbox_real () > │ ^ > │ " > │ ] > │ } > │ } > │ ] > │ ] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi > │ 00:01:02 v #4020 Supervisor.buildFile / outputChild / x: > Some > │ (Ok > │ (Some > │ (None, > │ [("Cannot apply a forall with a term.", > │ TracedError > │ { message = "Cannot apply a forall with a term." > │ trace = > │ ["Error trace on line: 2, column: 10 in > module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi . > │ inl main () = > │ ^ > │ "; > │ "Error trace on line: 4, column: 9 in > module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi . > │ inl unbox_real forall a. (obj : a) : a = > │ ^ > │ "; > │ "Error trace on line: 7, column: 9 in > module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi . > │ unbox_real () > │ ^ > │ "] })], > │ 0))) > │ 00:01:02 v #4021 Supervisor.buildFile / ofSeqAsync / x: > (None, > │ [("Cannot apply a forall with a term.", > │ TracedError > │ { message = "Cannot apply a forall with a term." > │ trace = > │ ["Error trace on line: 2, column: 10 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi . > │ inl main () = > │ ^ > │ "; > │ "Error trace on line: 4, column: 9 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi . > │ inl unbox_real forall a. (obj : a) : a = > │ ^ > │ "; > │ "Error trace on line: 7, column: 9 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi . > │ unbox_real () > │ ^ > │ "] })], > │ 0) > │ 00:01:02 v #4022 Supervisor.buildFile / result: > [("Cannot apply a forall with a term.", > │ TracedError > │ { message = "Cannot apply a forall with a term." > │ trace = > │ ["Error trace on line: 2, column: 10 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi . > │ inl main () = > │ ^ > │ "; > │ "Error trace on line: 4, column: 9 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi . > │ inl unbox_real forall a. (obj : a) : a = > │ ^ > │ "; > │ "Error trace on line: 7, column: 9 in module: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a/main.spi . > │ unbox_real () > │ ^ > │ "] })] / buildFileResult: None / typeErrorCount: 0 > │ 00:01:02 v #4023 Supervisor.buildFile / retry: 0 / > typeErrorCount: 0 / fileDir: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/667528659dc2e5af > 51a6ec17f1774bd7ffff5b5a47e4e117eec78e740987f29a / targetDir: > /home/runner/work/polyglot/polyglot/target > │ Some (None, ["Cannot apply a forall with a term."]) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > SpiralTrace.TraceLevel.US0_0 |> set_trace_level > """inl main () = > 1 + "" > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp [[||]] false 10000 None > |> Async.runWithTimeout 11000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > None, > [[ > "main.spi: > Constraint satisfaction error. > Got: string > Fails to satisfy: number" > ]] > ) > ) > > ── [ 218.38ms - stdout ] ─────────────────────────────────────────────────────── > │ 00:01:02 v #4042 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef > cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi > │ 00:01:02 v #4043 Supervisor.buildFile / AsyncSeq.scan / > outputContent: > │ ' / errors: [] / outputContentResult: / typeErrorCount: 0 / > retry: 0 / error: / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef > cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi' > │ 00:01:02 v #4044 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef > cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi > │ 00:01:02 v #4045 Supervisor.buildFile / fullPathUri: > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f > 8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" > │ 00:01:02 v #4046 Supervisor.buildFile / _fileOpenResult: > <null> > │ 00:01:02 v #4047 Supervisor.buildFile / before result: > () > │ 00:01:02 v #4101 Supervisor.buildFile / AsyncSeq.scan / > outputContent: > │ ' / errors: [] / outputContentResult: / typeErrorCount: 0 / > retry: 0 / error: Some((main.spi: > │ Constraint satisfaction error. > │ Got: string > │ Fails to satisfy: number, TypeErrors > │ { errors = > │ [(({ character = 8 > │ line = 1 }, { character = 10 > │ line = 1 }), > │ "Constraint satisfaction error. > │ Got: string > │ Fails to satisfy: number")] > │ uri = > │ > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f > 8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" })) / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef > cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi' > │ 00:01:02 v #4103 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [ > │ [ > │ "main.spi: > │ Constraint satisfaction error. > │ Got: string > │ Fails to satisfy: number", > │ { > │ "TypeErrors": { > │ "errors": [ > │ [ > │ [ > │ { > │ "character": 8, > │ "line": 1 > │ }, > │ { > │ "character": 10, > │ "line": 1 > │ } > │ ], > │ "Constraint satisfaction error. > │ Got: string > │ Fails to satisfy: number" > │ ] > │ ], > │ "uri": > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f > 8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" > │ } > │ } > │ ] > │ ] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef > cbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi > │ 00:01:02 v #4128 Supervisor.buildFile / outputContentSeq > unfoldAsync / msg: (None, > │ Some > │ ("main.spi: > │ Constraint satisfaction error. > │ Got: string > │ Fails to satisfy: number", > │ TypeErrors > │ { errors = > │ [(({ character = 8 > │ line = 1 }, { character = 10 > │ line = 1 }), > │ "Constraint satisfaction error. > │ Got: string > │ Fails to satisfy: number")] > │ uri = > │ > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f > 8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" })) > │ 00:01:02 v #4130 Supervisor.buildFile / > takeWhileInclusive / TypeErrors trigger > │ 00:01:02 v #4134 Supervisor.buildFile / outputChild / x: > Some > │ (Ok > │ (Some > │ (None, > │ [("main.spi: > │ Constraint satisfaction error. > │ Got: string > │ Fails to satisfy: number", > │ TypeErrors > │ { errors = > │ [(({ character = 8 > │ line = 1 }, { character = 10 > │ line = 1 }), > │ "Constraint satisfaction error. > │ Got: string > │ Fails to satisfy: number")] > │ uri = > │ > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f > 8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" })], > │ 0))) > │ 00:01:02 v #4135 Supervisor.buildFile / outputChild |> > Async.map > │ 00:01:02 v #4138 Supervisor.buildFile / > outputContentSeq2 unfoldAsync / msg: (None, > │ [("main.spi: > │ Constraint satisfaction error. > │ Got: string > │ Fails to satisfy: number", > │ TypeErrors > │ { errors = > │ [(({ character = 8 > │ line = 1 }, { character = 10 > │ line = 1 }), > │ "Constraint satisfaction error. > │ Got: string > │ Fails to satisfy: number")] > │ uri = > │ > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f > 8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" })], > │ 0) > │ 00:01:02 v #4141 Supervisor.buildFile / ofSeqAsync / x: > (None, > │ [("main.spi: > │ Constraint satisfaction error. > │ Got: string > │ Fails to satisfy: number", > │ TypeErrors > │ { errors = > │ [(({ character = 8 > │ line = 1 }, { character = 10 > │ line = 1 }), > │ "Constraint satisfaction error. > │ Got: string > │ Fails to satisfy: number")] > │ uri = > │ > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f > 8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" })], > │ 0) > │ 00:01:02 v #4144 Supervisor.buildFile / result: > [("main.spi: > │ Constraint satisfaction error. > │ Got: string > │ Fails to satisfy: number", > │ TypeErrors > │ { errors = > │ [(({ character = 8 > │ line = 1 }, { character = 10 > │ line = 1 }), > │ "Constraint satisfaction error. > │ Got: string > │ Fails to satisfy: number")] > │ uri = > │ > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f > 8e553befcbdd9aabeace67685221d91a46e3655199e42df713504aa0/main.spi" })] / > buildFileResult: None / typeErrorCount: 0 > │ 00:01:02 v #4145 Supervisor.buildFile / retry: 0 / > typeErrorCount: 0 / fileDir: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/c030f84f8e553bef > cbdd9aabeace67685221d91a46e3655199e42df713504aa0 / targetDir: > /home/runner/work/polyglot/polyglot/target > │ 00:01:02 v #4148 Supervisor.buildFile / outputChild |> > Async.map > │ Some (None, ["main.spi: > │ Constraint satisfaction error. > │ Got: string > │ Fails to satisfy: number"]) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > SpiralTrace.TraceLevel.US0_0 |> set_trace_level > """inl main () = > x + y > """ > |> fun code -> Spi (code, None) > |> buildCode Fsharp [[||]] false 10000 None > |> Async.runWithTimeout 11000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > None, > [[ > "main.spi: > Unbound variable: x. > Unbound variable: y." > ]] > ) > ) > > ── [ 215.03ms - stdout ] ─────────────────────────────────────────────────────── > │ 00:01:02 v #4313 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba > 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi > │ 00:01:02 v #4314 Supervisor.buildFile / AsyncSeq.scan / > outputContent: > │ ' / errors: [] / outputContentResult: / typeErrorCount: 0 / > retry: 0 / error: / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba > 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi' > │ 00:01:02 v #4315 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba > 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi > │ 00:01:02 v #4316 Supervisor.buildFile / fullPathUri: > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec50 > 7f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" > │ 00:01:02 v #4317 Supervisor.buildFile / _fileOpenResult: > <null> > │ 00:01:02 v #4318 Supervisor.buildFile / before result: > () > │ 00:01:02 v #4357 Supervisor.buildFile / AsyncSeq.scan / > outputContent: > │ ' / errors: [] / outputContentResult: / typeErrorCount: 0 / > retry: 0 / error: Some((main.spi: > │ Unbound variable: x. > │ Unbound variable: y., TypeErrors > │ { errors = > │ [(({ character = 4 > │ line = 1 }, { character = 5 > │ line = 1 }), "Unbound variable: x."); > │ (({ character = 8 > │ line = 1 }, { character = 9 > │ line = 1 }), "Unbound variable: y.")] > │ uri = > │ > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec50 > 7f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })) / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba > 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi' > │ 00:01:02 v #4359 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [ > │ [ > │ "main.spi: > │ Unbound variable: x. > │ Unbound variable: y.", > │ { > │ "TypeErrors": { > │ "errors": [ > │ [ > │ [ > │ { > │ "character": 4, > │ "line": 1 > │ }, > │ { > │ "character": 5, > │ "line": 1 > │ } > │ ], > │ "Unbound variable: x." > │ ], > │ [ > │ [ > │ { > │ "character": 8, > │ "line": 1 > │ }, > │ { > │ "character": 9, > │ "line": 1 > │ } > │ ], > │ "Unbound variable: y." > │ ] > │ ], > │ "uri": > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec50 > 7f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" > │ } > │ } > │ ] > │ ] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba > 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi > │ 00:01:02 v #4363 Supervisor.buildFile / outputContentSeq > unfoldAsync / msg: (None, > │ Some > │ ("main.spi: > │ Unbound variable: x. > │ Unbound variable: y.", > │ TypeErrors > │ { errors = > │ [(({ character = 4 > │ line = 1 }, { character = 5 > │ line = 1 }), "Unbound variable: > x."); > │ (({ character = 8 > │ line = 1 }, { character = 9 > │ line = 1 }), "Unbound variable: > y.")] > │ uri = > │ > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec50 > 7f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })) > │ 00:01:02 v #4364 Supervisor.buildFile / > takeWhileInclusive / TypeErrors trigger > │ 00:01:02 v #4368 Supervisor.buildFile / outputChild / x: > Some > │ (Ok > │ (Some > │ (None, > │ [("main.spi: > │ Unbound variable: x. > │ Unbound variable: y.", > │ TypeErrors > │ { errors = > │ [(({ character = 4 > │ line = 1 }, { character = 5 > │ line = 1 }), "Unbound > variable: x."); > │ (({ character = 8 > │ line = 1 }, { character = 9 > │ line = 1 }), "Unbound > variable: y.")] > │ uri = > │ > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec50 > 7f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })], > │ 0))) > │ 00:01:02 v #4369 Supervisor.buildFile / outputChild |> > Async.map > │ 00:01:02 v #4372 Supervisor.buildFile / > outputContentSeq2 unfoldAsync / msg: (None, > │ [("main.spi: > │ Unbound variable: x. > │ Unbound variable: y.", > │ TypeErrors > │ { errors = > │ [(({ character = 4 > │ line = 1 }, { character = 5 > │ line = 1 }), "Unbound variable: > x."); > │ (({ character = 8 > │ line = 1 }, { character = 9 > │ line = 1 }), "Unbound variable: > y.")] > │ uri = > │ > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec50 > 7f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })], > │ 0) > │ 00:01:02 v #4375 Supervisor.buildFile / ofSeqAsync / x: > (None, > │ [("main.spi: > │ Unbound variable: x. > │ Unbound variable: y.", > │ TypeErrors > │ { errors = > │ [(({ character = 4 > │ line = 1 }, { character = 5 > │ line = 1 }), "Unbound variable: > x."); > │ (({ character = 8 > │ line = 1 }, { character = 9 > │ line = 1 }), "Unbound variable: > y.")] > │ uri = > │ > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec50 > 7f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })], > │ 0) > │ 00:01:02 v #4378 Supervisor.buildFile / result: > [("main.spi: > │ Unbound variable: x. > │ Unbound variable: y.", > │ TypeErrors > │ { errors = > │ [(({ character = 4 > │ line = 1 }, { character = 5 > │ line = 1 }), "Unbound variable: > x."); > │ (({ character = 8 > │ line = 1 }, { character = 9 > │ line = 1 }), "Unbound variable: > y.")] > │ uri = > │ > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec50 > 7f9de5ba9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1/main.spi" })] / > buildFileResult: None / typeErrorCount: 0 > │ 00:01:02 v #4379 Supervisor.buildFile / retry: 0 / > typeErrorCount: 0 / fileDir: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/6cdeec507f9de5ba > 9c8429cfa7049b777a622aa3bf7333b151c767fde35dc5d1 / targetDir: > /home/runner/work/polyglot/polyglot/target > │ 00:01:02 v #4381 Supervisor.buildFile / outputChild |> > Async.map > │ Some (None, ["main.spi: > │ Unbound variable: x. > │ Unbound variable: y."]) > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > SpiralTrace.TraceLevel.US0_0 |> set_trace_level > """inl rec main () = main""" > |> fun code -> Spi (code, None) > |> buildCode Fsharp [[||]] false 10000 None > |> Async.runWithTimeout 11000 > |> Option.map (fun (_, (_, outputContent), errors) -> outputContent, errors |> > List.map fst) > |> _assertEqual ( > Some ( > None, > [[ > "main.spi: > Recursive metavariables are not allowed. A metavar cannot be unified with a type > that has itself. > Got: 'a > Expected: () -> 'a" > ]] > ) > ) > // |> _assertEqual None > // |> fun x -> printfn $"{x.ToDisplayString ()}" > > ── [ 216.99ms - stdout ] ─────────────────────────────────────────────────────── > │ 00:01:03 v #4584 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9 > 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi > │ 00:01:03 v #4585 Supervisor.buildFile / AsyncSeq.scan / > outputContent: > │ ' / errors: [] / outputContentResult: / typeErrorCount: 0 / > retry: 0 / error: / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9 > 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi' > │ 00:01:03 v #4586 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9 > 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi > │ 00:01:03 v #4587 Supervisor.buildFile / fullPathUri: > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123 > fe6304a9501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" > │ 00:01:03 v #4588 Supervisor.buildFile / _fileOpenResult: > <null> > │ 00:01:03 v #4589 Supervisor.buildFile / before result: > () > │ 00:01:03 v #4629 Supervisor.buildFile / AsyncSeq.scan / > outputContent: > │ ' / errors: [] / outputContentResult: / typeErrorCount: 0 / > retry: 0 / error: Some((main.spi: > │ Recursive metavariables are not allowed. A metavar cannot be > unified with a type that has itself. > │ Got: 'a > │ Expected: () -> 'a, TypeErrors > │ { errors = > │ [(({ character = 18 > │ line = 0 }, { character = 22 > │ line = 0 }), > │ "Recursive metavariables are not allowed. A metavar > cannot be unified with a type that has itself. > │ Got: 'a > │ Expected: () -> 'a")] > │ uri = > │ > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123 > fe6304a9501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" })) / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9 > 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi' > │ 00:01:03 v #4631 Supervisor.buildFile / > takeWhileInclusive / outputContent: > │ '' / errors: [ > │ [ > │ "main.spi: > │ Recursive metavariables are not allowed. A metavar cannot be > unified with a type that has itself. > │ Got: 'a > │ Expected: () -> 'a", > │ { > │ "TypeErrors": { > │ "errors": [ > │ [ > │ [ > │ { > │ "character": 18, > │ "line": 0 > │ }, > │ { > │ "character": 22, > │ "line": 0 > │ } > │ ], > │ "Recursive metavariables are not allowed. A > metavar cannot be unified with a type that has itself. > │ Got: 'a > │ Expected: () -> 'a" > │ ] > │ ], > │ "uri": > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123 > fe6304a9501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" > │ } > │ } > │ ] > │ ] / typeErrorCount: 0 / retry: 0 / path: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9 > 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi > │ 00:01:03 v #4633 Supervisor.buildFile / outputContentSeq > unfoldAsync / msg: (None, > │ Some > │ ("main.spi: > │ Recursive metavariables are not allowed. A metavar cannot be > unified with a type that has itself. > │ Got: 'a > │ Expected: () -> 'a", > │ TypeErrors > │ { errors = > │ [(({ character = 18 > │ line = 0 }, { character = 22 > │ line = 0 }), > │ "Recursive metavariables are not allowed. A > metavar cannot be unified with a type that has itself. > │ Got: 'a > │ Expected: () -> 'a")] > │ uri = > │ > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123 > fe6304a9501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" })) > │ 00:01:03 v #4635 Supervisor.buildFile / > takeWhileInclusive / TypeErrors trigger > │ 00:01:03 v #4638 Supervisor.buildFile / outputChild / x: > Some > │ (Ok > │ (Some > │ (None, > │ [("main.spi: > │ Recursive metavariables are not allowed. A metavar cannot be > unified with a type that has itself. > │ Got: 'a > │ Expected: () -> 'a", > │ TypeErrors > │ { errors = > │ [(({ character = 18 > │ line = 0 }, { character = 22 > │ line = 0 }), > │ "Recursive metavariables are not allowed. A > metavar cannot be unified with a type that has itself. > │ Got: 'a > │ Expected: () -> 'a")] > │ uri = > │ > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123 > fe6304a9501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" })], > │ 0))) > │ 00:01:03 v #4639 Supervisor.buildFile / outputChild |> > Async.map > │ 00:01:03 v #4642 Supervisor.buildFile / > outputContentSeq2 unfoldAsync / msg: (None, > │ [("main.spi: > │ Recursive metavariables are not allowed. A metavar cannot be > unified with a type that has itself. > │ Got: 'a > │ Expected: () -> 'a", > │ TypeErrors > │ { errors = > │ [(({ character = 18 > │ line = 0 }, { character = 22 > │ line = 0 }), > │ "Recursive metavariables are not allowed. A metavar > cannot be unified with a type that has itself. > │ Got: 'a > │ Expected: () -> 'a")] > │ uri = > │ > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123 > fe6304a9501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" })], > │ 0) > │ 00:01:03 v #4644 Supervisor.buildFile / ofSeqAsync / x: > (None, > │ [("main.spi: > │ Recursive metavariables are not allowed. A metavar cannot be > unified with a type that has itself. > │ Got: 'a > │ Expected: () -> 'a", > │ TypeErrors > │ { errors = > │ [(({ character = 18 > │ line = 0 }, { character = 22 > │ line = 0 }), > │ "Recursive metavariables are not allowed. A metavar > cannot be unified with a type that has itself. > │ Got: 'a > │ Expected: () -> 'a")] > │ uri = > │ > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123 > fe6304a9501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" })], > │ 0) > │ 00:01:03 v #4646 Supervisor.buildFile / result: > [("main.spi: > │ Recursive metavariables are not allowed. A metavar cannot be > unified with a type that has itself. > │ Got: 'a > │ Expected: () -> 'a", > │ TypeErrors > │ { errors = > │ [(({ character = 18 > │ line = 0 }, { character = 22 > │ line = 0 }), > │ "Recursive metavariables are not allowed. A metavar > cannot be unified with a type that has itself. > │ Got: 'a > │ Expected: () -> 'a")] > │ uri = > │ > "file:///home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123 > fe6304a9501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7/main.spi" })] / > buildFileResult: None / typeErrorCount: 0 > │ 00:01:03 v #4647 Supervisor.buildFile / retry: 0 / > typeErrorCount: 0 / fileDir: > /home/runner/work/polyglot/polyglot/target/spiral_Eval/packages/883e0123fe6304a9 > 501da46e85facc39c4ac4e3dbb77895f8ccd4581901ee2b7 / targetDir: > /home/runner/work/polyglot/polyglot/target > │ 00:01:03 v #4649 Supervisor.buildFile / outputChild |> > Async.map > │ Some > │ (None, > │ ["main.spi: > │ Recursive metavariables are not allowed. A metavar cannot be > unified with a type that has itself. > │ Got: 'a > │ Expected: () -> 'a"]) > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## getFileTokenRange > > ── fsharp ────────────────────────────────────────────────────────────────────── > let getFileTokenRange port cancellationToken path = async { > let fullPath = path |> System.IO.Path.GetFullPath > let codeDir = fullPath |> System.IO.Path.GetDirectoryName > let tokensPath = codeDir </> "tokens.json" > let! tokens = async { > if tokensPath |> System.IO.File.Exists |> not > then return None > else > let! text = tokensPath |> SpiralFileSystem.read_all_text_async > > return > if text.Length > 2 > then text |> FSharp.Json.Json.deserialize<int array> |> Some > else None > } > > match tokens with > | Some tokens -> > return tokens |> Some > | None -> > let! code = fullPath |> SpiralFileSystem.read_all_text_async > let lines = code |> SpiralSm.split "\n" > > let struct (token, disposable) = SpiralThreading.new_disposable_token > cancellationToken > use _ = disposable > > let port = port |> Option.defaultWith getCompilerPort > // let! serverPort, _errors, ct, disposable = awaitCompiler port (Some > token) > // use _ = disposable > > let fullPathUri = fullPath |> SpiralFileSystem.normalize_path |> > SpiralFileSystem.new_file_uri > > // let fileOpenObj = {| FileOpen = {| uri = fullPathUri; spiText = code > |} |} > // let! _fileOpenResult = fileOpenObj |> sendObj serverPort > let fileOpenArgs = {| uri = fullPathUri; spiText = code |} > let! _fileOpenResult = > server2.job_null (server2.supervisor *<+ SupervisorReq.FileOpen > fileOpenArgs) > |> Async.AwaitTask > > // do! Async.Sleep 60 > > let fileTokenRangeArgs = > {| > uri = fullPathUri > range = > {| > line = 0 > character = 0 > |}, > {| > line = lines.Length - 1 > character = lines.[[lines.Length - 1]].Length > |} > |} > // let! fileTokenRangeResult = > // fileTokenRangeObj > // |> sendObj serverPort > // |> Async.withCancellationToken ct > > // let fileTokenRangeArgs = {| uri = fullPathUri; backend = backendId |} > let! fileTokenRangeResult = > server2.job_val (fun res -> server2.supervisor *<+ > SupervisorReq.FileTokenRange(fileTokenRangeArgs,res)) > |> Async.AwaitTask > > if codeDir |> SpiralSm.starts_with (workspaceRoot </> "target") then > let fileDirUri = codeDir |> SpiralFileSystem.normalize_path |> > SpiralFileSystem.new_file_uri > // let fileDeleteObj = {| FileDelete = {| uris = [[| fileDirUri |]] > |} |} > // let! _fileDeleteResult = fileDeleteObj |> sendObj serverPort > let fileDeleteArgs = {| uris = [[| fileDirUri |]] |} > let! _fileDeleteResult = > server2.job_null (server2.supervisor *<+ > SupervisorReq.FileDelete fileDeleteArgs) > |> Async.AwaitTask > () > > return fileTokenRangeResult |> FSharp.Json.Json.deserialize<int array> > |> Some > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## getCodeTokenRange > > ── fsharp ────────────────────────────────────────────────────────────────────── > let getCodeTokenRange cancellationToken code = async { > let! mainPath, _ = > persistCode {| input = Spi (code, None); backend = None; packages = > [[||]] |} > return! mainPath |> getFileTokenRange None cancellationToken > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """inl main () = ()""" > |> getCodeTokenRange None > |> Async.runWithTimeout 10000 > |> Option.flatten > |> _assertEqual (Some [[| 0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; > 8; 0; 0; 2; 1; 4; 0; 0; > 2; 1; 8; 0; 0; 1; 1; 8; 0 |]]) > > ── [ 487.50ms - stdout ] ─────────────────────────────────────────────────────── > │ Some [|0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; > 8; 0; 0; 2; 1; 4; 0; 0; 2; 1; 8; 0; 0; 1; 1; 8; 0|] > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > """inl main () = 1i32""" > |> getCodeTokenRange None > |> Async.runWithTimeout 10000 > |> Option.flatten > |> _assertEqual (Some [[| 0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; > 8; 0; 0; 2; 1; 4; 0; 0; > 2; 1; 3; 0; 0; 1; 3; 12; 0 |]]) > > ── [ 2.59s - stdout ] ────────────────────────────────────────────────────────── > │ Some [|0; 0; 3; 7; 0; 0; 4; 4; 0; 0; 0; 5; 1; 8; 0; 0; 1; 1; > 8; 0; 0; 2; 1; 4; 0; 0; 2; 1; 3; 0; 0; 1; 3; 12; 0|] > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## getFileHoverAt > > ── fsharp ────────────────────────────────────────────────────────────────────── > let getFileHoverAt > port > cancellationToken > path > (position : {| line: int; character: int |}) > = async { > let fullPath = path |> System.IO.Path.GetFullPath > let! code = fullPath |> SpiralFileSystem.read_all_text_async > let lines = code |> SpiralSm.split "\n" > > let struct (token, disposable) = SpiralThreading.new_disposable_token > cancellationToken > use _ = disposable > > let port = port |> Option.defaultWith getCompilerPort > // let! serverPort, _errors, ct, disposable = awaitCompiler port (Some > token) > // use _ = disposable > > let fullPathUri = fullPath |> SpiralFileSystem.normalize_path |> > SpiralFileSystem.new_file_uri > > // let fileOpenObj = {| FileOpen = {| uri = fullPathUri; spiText = code |} > |} > // let! _fileOpenResult = fileOpenObj |> sendObj serverPort > let fileOpenArgs = {| uri = fullPathUri; spiText = code |} > let! _fileOpenResult = > server1.job_null (server1.supervisor *<+ SupervisorReq.FileOpen > fileOpenArgs) > |> Async.AwaitTask > > // do! Async.Sleep 60 > > let hoverAtArgs = > {| > uri = fullPathUri > pos = position > |} > > let! hoverAtResult = > server1.job_val (fun res -> server1.supervisor *<+ > SupervisorReq.HoverAt(hoverAtArgs,res)) > |> Async.AwaitTask > > let fileDir = fullPath |> System.IO.Path.GetDirectoryName > if fileDir |> SpiralSm.starts_with (workspaceRoot </> "target") then > let fileDirUri = fileDir |> SpiralFileSystem.normalize_path |> > SpiralFileSystem.new_file_uri > // let fileDeleteObj = {| FileDelete = {| uris = [[| fileDirUri |]] |} > |} > // let! _fileDeleteResult = fileDeleteObj |> sendObj serverPort > let fileDeleteArgs = {| uris = [[| fileDirUri |]] |} > let! _fileDeleteResult = > server1.job_null (server1.supervisor *<+ SupervisorReq.FileDelete > fileDeleteArgs) > |> Async.AwaitTask > |> Async.runWithTimeoutAsync 60000 > |> Async.map Option.get > () > > return hoverAtResult |> Some > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## getCodeHoverAt > > ── fsharp ────────────────────────────────────────────────────────────────────── > let getCodeHoverAt cancellationToken code position = async { > let! mainPath, _ = > persistCode {| input = Spi (code, None); backend = None; packages = > [[||]] |} > > let codeDir = mainPath |> System.IO.Path.GetDirectoryName > let filePath = codeDir </> "hover.json" > let! output = async { > if filePath |> System.IO.File.Exists |> not > then return None > else > let! text = filePath |> SpiralFileSystem.read_all_text_async > > return > if text.Length > 2 > then text |> Some > else None > } > match output with > | Some output -> > return output |> Some > | None -> return! getFileHoverAt None cancellationToken mainPath position > } > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > getCodeHoverAt None """inl main () = ()""" {| line = 0; character = 4 |} > |> Async.runWithTimeout 10000 > |> Option.flatten > |> _assertEqual (Some "() -> ()") > > ── [ 200.85ms - stdout ] ─────────────────────────────────────────────────────── > │ Some "() -> ()" > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > getCodeHoverAt None """inl main () = ()""" {| line = 0; character = 0 |} > |> Async.runWithTimeout 10000 > |> Option.flatten > |> _assertEqual (Some null) > > ── [ 183.32ms - stdout ] ─────────────────────────────────────────────────────── > │ Some null > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > getCodeHoverAt None """inl rec main () = main""" {| line = 0; character = 8 |} > |> Async.runWithTimeout 10000 > |> Option.flatten > |> _assertEqual (Some "forall 'a. () -> 'a") > > ── [ 185.18ms - stdout ] ─────────────────────────────────────────────────────── > │ Some "forall 'a. () -> 'a" > │ > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > getCodeHoverAt None """inl main () = 1""" {| line = 0; character = 4 |} > |> Async.runWithTimeout 10000 > |> Option.flatten > |> _assertEqual (Some "forall 'a {number}. () -> 'a") > > ── [ 188.32ms - stdout ] ─────────────────────────────────────────────────────── > │ Some "forall 'a {number}. () -> 'a" > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## Arguments > > ── fsharp ────────────────────────────────────────────────────────────────────── > [[<RequireQualifiedAccess>]] > type Arguments = > | Build_File of string * string > | File_Token_Range of string * string > | File_Hover_At of string * string * int * int > | Execute_Command of string > | [[<Argu.ArguAttributes.Unique>]] Timeout of int > | [[<Argu.ArguAttributes.Unique>]] Port of int > | [[<Argu.ArguAttributes.Unique>]] Parallel > | [[<Argu.ArguAttributes.Unique>]] Exit_On_Error > > interface Argu.IArgParserTemplate with > member s.Usage = > match s with > | Build_File _ -> nameof Build_File > | File_Token_Range _ -> nameof File_Token_Range > | File_Hover_At _ -> nameof File_Hover_At > | Execute_Command _ -> nameof Execute_Command > | Timeout _ -> nameof Timeout > | Port _ -> nameof Port > | Parallel -> nameof Parallel > | Exit_On_Error-> nameof Exit_On_Error > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > Argu.ArgumentParser.Create<Arguments>().PrintUsage () > > ── [ 81.43ms - return value ] ────────────────────────────────────────────────── > │ "USAGE: dotnet-repl [--help] [--build-file <string> <string>] > │ [--file-token-range <string> <string>] > │ [--file-hover-at <string> <string> <int> > <int>] > │ [--execute-command <string>] [--timeout > <int>] [--port <int>] > │ [--parallel] [--exit-on-error] > │ > │ OPTIONS: > │ > │ --build-file <string> <string> > │ Build_File > │ --file-token-range <string> <string> > │ File_Token_Range > │ --file-hover-at <string> <string> <int> <int> > │ File_Hover_At > │ --execute-command <string> > │ Execute_Command > │ --timeout <int> Timeout > │ --port <int> Port > │ --parallel Parallel > │ --exit-on-error Exit_On_Error > │ --help display this list of options. > │ " > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## main > > ── fsharp ────────────────────────────────────────────────────────────────────── > let main args = > SpiralTrace.TraceLevel.US0_1 |> set_trace_level > let argsMap = args |> Runtime.parseArgsMap<Arguments> > > let buildFileActions = > argsMap > |> Map.tryFind (nameof Arguments.Build_File) > |> Option.defaultValue [[]] > |> List.choose (function > | Arguments.Build_File (inputPath, outputPath) -> Some (inputPath, > outputPath) > | _ -> None > ) > > let fileTokenRangeActions = > argsMap > |> Map.tryFind (nameof Arguments.File_Token_Range) > |> Option.defaultValue [[]] > |> List.choose (function > | Arguments.File_Token_Range (inputPath, outputPath) -> Some > (inputPath, outputPath) > | _ -> None > ) > > let fileHoverAtActions = > argsMap > |> Map.tryFind (nameof Arguments.File_Hover_At) > |> Option.defaultValue [[]] > |> List.choose (function > | Arguments.File_Hover_At (inputPath, outputPath, line, character) > -> > Some (inputPath, outputPath, line, character) > | _ -> None > ) > > let executeCommandActions = > argsMap > |> Map.tryFind (nameof Arguments.Execute_Command) > |> Option.defaultValue [[]] > |> List.choose (function > | Arguments.Execute_Command command -> Some command > | _ -> None > ) > > let timeout = > match argsMap |> Map.tryFind (nameof Arguments.Timeout) with > | Some [[ Arguments.Timeout timeout ]] -> timeout > | _ -> 60002 * 60 * 24 > > let port = > match argsMap |> Map.tryFind (nameof Arguments.Port) with > | Some [[ Arguments.Port port ]] -> Some port > | _ -> None > > let isParallel = argsMap |> Map.containsKey (nameof Arguments.Parallel) > > let isExitOnError = argsMap |> Map.containsKey (nameof > Arguments.Exit_On_Error) > > async { > let port = > port > |> Option.defaultWith getCompilerPort > let struct (localToken, disposable) = > SpiralThreading.new_disposable_token None > // let! serverPort, _errors, compilerToken, disposable = awaitCompiler > port (Some localToken) > let serverPort = port > let struct (compilerToken, disposable) = > SpiralThreading.new_disposable_token None > use _ = disposable > > let buildFileAsync = > buildFileActions > |> List.map (fun (inputPath, outputPath) -> async { > let! _outputPath, outputCode, errors = > let backend = > if outputPath |> SpiralSm.ends_with ".gleam" > then Gleam > elif outputPath |> SpiralSm.ends_with ".fsx" > then Fsharp > elif outputPath |> SpiralSm.ends_with ".py" > then Python > elif outputPath |> SpiralSm.ends_with ".cpp" > then Cpp > else failwith $"Supervisor.main / invalid backend / > outputPath: {outputPath}" > let isReal = inputPath |> SpiralSm.ends_with ".spir" > inputPath |> buildFile backend timeout (Some serverPort) > None > > errors > |> List.map snd > |> List.iter (fun error -> > trace Critical (fun () -> $"main / error: {error |> > serializeObj}") _locals > ) > > match outputCode with > | Some outputCode -> > do! outputCode |> SpiralFileSystem.write_all_text_exists > outputPath > return 0 > | None -> > if isExitOnError > then SpiralRuntime.current_process_kill () > > return 1 > }) > > let fileTokenRangeAsync = > fileTokenRangeActions > |> List.map (fun (inputPath, outputPath) -> async { > let! tokenRange = inputPath |> getFileTokenRange (Some > serverPort) None > match tokenRange with > | Some tokenRange -> > do! tokenRange |> FSharp.Json.Json.serialize |> > SpiralFileSystem.write_all_text_exists outputPath > return 0 > | None -> > if isExitOnError > then SpiralRuntime.current_process_kill () > > return 1 > }) > > let fileHoverAtAsync = > fileHoverAtActions > |> List.map (fun (inputPath, outputPath, line, character) -> async { > let! hoverAt = > getFileHoverAt > (Some serverPort) > None > inputPath > {| line = line; character = character |} > match hoverAt with > | Some hoverAt -> > do! hoverAt |> FSharp.Json.Json.serialize |> > SpiralFileSystem.write_all_text_exists outputPath > return 0 > | None -> > if isExitOnError > then SpiralRuntime.current_process_kill () > > return 1 > }) > > let executeCommandAsync = > executeCommandActions > |> List.map (fun command -> async { > let! exitCode, result = > SpiralRuntime.execution_options (fun x -> > { x with > l0 = command > l1 = Some compilerToken > } > ) > |> SpiralRuntime.execute_with_options_async > > trace Debug (fun () -> $"main / executeCommand / exitCode: > {exitCode} / command: {command}") _locals > > if isExitOnError && exitCode <> 0 > then SpiralRuntime.current_process_kill () > > return exitCode > }) > > return! > [[| buildFileAsync; fileTokenRangeAsync; fileHoverAtAsync; > executeCommandAsync |]] > |> Seq.collect id > |> fun x -> > if isParallel > then Async.Parallel (x, float System.Environment.ProcessorCount > * 0.51 |> ceil |> int) > else Async.Sequential x > |> Async.map Array.sum > } > |> Async.runWithTimeout timeout > |> Option.defaultValue 1 > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let args = > System.Environment.GetEnvironmentVariable "ARGS" > |> SpiralRuntime.split_args > |> Result.toArray > |> Array.collect id > > match args with > | [[||]] -> 0 > | args -> if main args = 0 then 0 else failwith "main failed" > > ── [ 69.84ms - return value ] ────────────────────────────────────────────────── > │ <div class="dni-plaintext"><pre>0 > │ </pre></div><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> 00:01:23 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 312906 } 00:01:23 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:01:24 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.ipynb to html 00:01:24 v #6 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:01:24 v #7 ! validate(nb) 00:01:24 v #8 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:01:24 v #9 ! return _pygments_highlight( 00:01:26 v #10 ! [NbConvertApp] Writing 750381 bytes to /home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.html 00:01:26 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 908 } 00:01:26 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 908 } 00:01:26 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/Supervisor.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:01:26 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:01:26 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:01:26 d #16 spiral.run / dib / { exit_code = 0; result_length = 313873 } 00:00:00 d #1 writeDibCode / output: Fs / path: Supervisor.dib 00:00:00 d #2 parseDibCode / output: Fs / file: Supervisor.dib 00:00:00 d #1 persistCodeProject / packages: [Argu; FSharp.Control.AsyncSeq; FSharp.Json; ... ] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: Supervisor / hash: / code.Length: 40697 00:00:00 d #2 buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/Builder/Supervisor/Supervisor.fsproj 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "/home/runner/work/polyglot/polyglot/target/Builder/Supervisor/Supervisor.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/spiral/dist" --runtime linux-x64"; options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/Supervisor/Supervisor.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/spiral/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/Supervisor"; stderr = true } } 00:00:00 v #2 > Determining projects to restore... 00:00:01 v #3 > Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 00:00:01 v #4 > The last full restore is still up to date. Nothing left to do. 00:00:01 v #5 > Total time taken: 0 milliseconds 00:00:01 v #6 > Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 00:00:01 v #7 > Restoring /home/runner/work/polyglot/polyglot/target/Builder/Supervisor/Supervisor.fsproj 00:00:01 v #8 > Starting restore process. 00:00:01 v #9 > Total time taken: 0 milliseconds 00:00:02 v #10 > Restored /home/runner/work/polyglot/polyglot/target/Builder/Supervisor/Supervisor.fsproj (in 288 ms). 00:00:30 v #11 > Supervisor -> /home/runner/work/polyglot/polyglot/target/Builder/Supervisor/bin/Release/net9.0/linux-x64/Supervisor.dll 00:00:30 v #12 > Supervisor -> /home/runner/work/polyglot/polyglot/apps/spiral/dist 00:00:30 d #13 runtime.execute_with_options_async / { exit_code = 0; output_length = 713; options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/Supervisor/Supervisor.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/spiral/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/Supervisor"; stderr = true } } 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "Eval.dib", "--retries", "3"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None; stderr = true } } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ # Eval (Polyglot) > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan > dard2.1/FSharp.Control.AsyncSeq.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. > 0/System.Reactive.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ > netstandard2.0/System.Reactive.Linq.dll" > #r > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.com > mon/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Common.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.http.connections.cli > ent/7.0.0/lib/net7.0/Microsoft.AspNetCore.Http.Connections.Client.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.common/7.0.0 > /lib/net7.0/Microsoft.AspNetCore.SignalR.Common.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client/7.0.0 > /lib/net7.0/Microsoft.AspNetCore.SignalR.Client.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.signalr.client.core/ > 7.0.0/lib/net7.0/Microsoft.AspNetCore.SignalR.Client.Core.dll" > #r > @"../../../../../../../.nuget/packages/fsharp.json/0.4.1/lib/netstandard2.0/FSha > rp.Json.dll" > #r > @"../../../../../../../.nuget/packages/system.management/7.0.0/lib/netstandard2. > 0/System.Management.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/fsharpx.collections/3.1.0/lib/netstandard > 2.0/FSharpx.Collections.dll" > #r > @"../../../../../../../.nuget/packages/hopac/0.5.1/lib/netstandard2.0/Hopac.dll" > #r > @"../../../../../../../.nuget/packages/hopac/0.5.1/lib/netstandard2.0/Hopac.Core > .dll" > #r > @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP > arsec.dll" > #r > @"../../../../../../../.nuget/packages/fparsec/2.0.0-beta2/lib/netstandard2.1/FP > arsecCS.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.dll" > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.dll" > #endif > > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.dll" > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.dll" > #endif > > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.Core.dll" > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.SignalR.Core.dll" > #endif > > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Cors.dll" > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Cors.dll" > #endif > > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll > " > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll" > #endif > > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Connections.Abstracti > ons.dll" > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Connections.Abstractions. > dll" > #endif > > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Hosting.Abstractions. > dll" > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Hosting.Abstractions.dll" > #endif > > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Http.Connections.dll" > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Http.Connections.dll" > #endif > > #if _LINUX > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.linux-x6 > 4/9.0.3/runtimes/linux-x64/lib/net9.0/Microsoft.AspNetCore.Routing.dll" > #else > #r > @"../../../../../../../.nuget/packages/microsoft.aspnetcore.app.runtime.win-x64/ > 9.0.3/runtimes/win-x64/lib/net9.0/Microsoft.AspNetCore.Routing.dll" > #endif > > ── pwsh ──────────────────────────────────────────────────────────────────────── > ls ~/.nuget/packages/microsoft.extensions.logging > > ── [ 182.43ms - stdout ] ─────────────────────────────────────────────────────── > │ 2.1.1 > │ 6.0.0 > │ 8.0.1 > │ 9.0.0-preview.1.24080.9 > │ 9.0.3 > │ 9.0.5 > │ > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/microsoft.extensions.logging/9.0.5/lib/ne > t9.0/Microsoft.Extensions.Logging.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.extensions.logging.abstractions > /9.0.5/lib/net9.0/Microsoft.Extensions.Logging.Abstractions.dll" > #r > @"../../../../../../../.nuget/packages/microsoft.extensions.dependencyinjection. > abstractions/9.0.5/lib/net9.0/Microsoft.Extensions.DependencyInjection.Abstracti > ons.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > open spiral_compiler > > ── fsharp ────────────────────────────────────────────────────────────────────── > #if !INTERACTIVE > open Lib > #endif > > ── fsharp ────────────────────────────────────────────────────────────────────── > open Common > open SpiralFileSystem.Operators > open Microsoft.AspNetCore.SignalR.Client > > ── fsharp ────────────────────────────────────────────────────────────────────── > open System > open System.Collections.Generic > open System.IO > open System.Text > open System.Threading > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## mapErrors > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline mapErrors (severity, errors, lastTopLevelIndex) allCode = > let allCodeLineLength = > allCode |> SpiralSm.split "\n" |> Array.length > > errors > |> List.map (fun (_, error) -> > match error with > | FatalError message -> > ( > severity, message, 0, ("", (0, 0), (0, 0)) > ) > |> List.singleton > | TracedError data -> > data.trace > |> List.truncate 5 > |> List.append [[ data.message ]] > |> List.map (fun message -> > ( > severity, message, 0, ("", (0, 0), (0, 0)) > ) > ) > | PackageErrors data > | TokenizerErrors data > | ParserErrors data > | TypeErrors data -> > data.errors > |> List.filter (fun ((rangeStart, _), _) -> > trace Debug (fun () -> $"Eval.mapErrors / rangeStart.line: > {rangeStart.line} / lastTopLevelIndex: {lastTopLevelIndex} / allCodeLineLength: > {allCodeLineLength} / filtered: {rangeStart.line > allCodeLineLength}") _locals > rangeStart.line > allCodeLineLength > ) > |> List.map (fun ((rangeStart, rangeEnd), message) -> > ( > severity, > message, > 0, > ( > (data.uri |> System.IO.Path.GetFileName), > ( > (match lastTopLevelIndex with > | Some i when rangeStart.line >= i + > allCodeLineLength + 3 -> > rangeStart.line - allCodeLineLength - 2 > | _ -> rangeStart.line - allCodeLineLength), > (match lastTopLevelIndex with > | Some i when rangeStart.line >= i + > allCodeLineLength + 3 -> > rangeStart.character - 4 > | _ -> rangeStart.character) > ), > ( > (match lastTopLevelIndex with > | Some i when rangeStart.line >= i + > allCodeLineLength + 3 -> > rangeEnd.line - allCodeLineLength - 2 > | _ -> rangeEnd.line - allCodeLineLength), > (match lastTopLevelIndex with > | Some i when rangeStart.line >= i + > allCodeLineLength + 3 -> > rangeEnd.character - 4 > | _ -> rangeEnd.character) > ) > ) > ) > ) > ) > |> List.collect id > |> List.toArray > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### workspaceRoot > > ── fsharp ────────────────────────────────────────────────────────────────────── > let workspaceRoot = SpiralFileSystem.get_workspace_root () > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### targetDir > > ── fsharp ────────────────────────────────────────────────────────────────────── > let targetDir = workspaceRoot </> "target/spiral_Eval" > [[ targetDir ]] > |> List.iter (fun dir -> if Directory.Exists dir |> not then > Directory.CreateDirectory dir |> ignore) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## allCode > > ── fsharp ────────────────────────────────────────────────────────────────────── > let mutable allCode = "" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### allPackages > > ── fsharp ────────────────────────────────────────────────────────────────────── > let mutable allPackages : string [[]] = [[||]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## allCodeReal > > ── fsharp ────────────────────────────────────────────────────────────────────── > let mutable allCodeReal = "" > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## traceToggle > > ── fsharp ────────────────────────────────────────────────────────────────────── > let mutable traceToggle = false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## startTokenRangeWatcher > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline startTokenRangeWatcher () = > if [[ "dotnet-repl" ]] |> List.contains spiral_compiler.assemblyName > then new_disposable (fun () -> ()) > else > let tokensDir = targetDir </> "tokens" > > [[ tokensDir ]] > |> List.iter (fun dir -> if Directory.Exists dir |> not then > Directory.CreateDirectory dir |> ignore) > > let stream, disposable = FileSystem.watchDirectory (fun _ -> false) > tokensDir > > try > let existingFilesChild = > tokensDir > |> System.IO.Directory.GetDirectories > |> Array.map (fun codeDir -> async { > try > let tokensPath = codeDir </> "tokens.json" > if tokensPath |> File.Exists |> not then > let spiralCodePath = codeDir </> "main.spi" > let spiralRealCodePath = codeDir </> > "main_real.spir" > let spiralExists = spiralCodePath |> > System.IO.File.Exists > let spiralRealExists = spiralRealCodePath |> > System.IO.File.Exists > if spiralExists |> not && spiralRealExists |> not > then do! codeDir |> > SpiralFileSystem.delete_directory_async |> Async.Ignore > else > let! tokens = > if spiralExists then spiralCodePath else > spiralRealCodePath > |> Supervisor.getFileTokenRange None None > match tokens with > | Some tokens -> > do! > tokens > |> FSharp.Json.Json.serialize > |> SpiralFileSystem.write_all_text_async > tokensPath > | None -> > trace Verbose (fun () -> > $"Eval.startTokenRangeWatcher / GetDirectories / tokens: None") _locals > with ex -> > trace Critical (fun () -> $"Eval.startTokenRangeWatcher > / GetDirectories / ex: {ex |> SpiralSm.format_exception}") _locals > }) > |> Async.Parallel > |> Async.Ignore > > let streamAsyncChild = > stream > |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun (ticks, event) > -> > match event with > | FileSystem.FileSystemChange.Changed (codePath, _) > when [[ "main.spi"; "main_real.spir" ]] > |> List.contains (System.IO.Path.GetFileName > codePath) > -> > async { > let hashDir = codePath |> > System.IO.Directory.GetParent > let hashHex = hashDir.Name > let codePath = tokensDir </> codePath > let tokensPath = tokensDir </> hashHex </> > "tokens.json" > // do! Async.Sleep 30 > let rec 루프 retry = async { > let! tokens = codePath |> > Supervisor.getFileTokenRange None None > if retry = 3 || tokens <> Some [[||]] > then return tokens, retry > else > trace Debug > (fun () -> $"Eval.startTokenRangeWatcher > / iterAsyncParallel") > (fun () -> $"retry: {retry} / tokens: > %A{tokens}") > do! Async.Sleep 30 > return! 루프 (retry + 1) > } > let! tokens, retries = 루프 1 > match tokens with > | Some tokens -> > do! > tokens > |> FSharp.Json.Json.serialize > |> SpiralFileSystem.write_all_text_exists > tokensPath > | None -> > trace Debug > (fun () -> $"Eval.startTokenRangeWatcher / > iterAsyncParallel") > (fun () -> $"retries: {retries} / tokens: > {tokens}") > } > |> Async.retryAsync 3 > |> Async.map (Result.toOption >> Option.defaultValue ()) > | _ -> () |> Async.init > ) > > async { > do! Async.Sleep 3000 > existingFilesChild |> Async.StartImmediate > streamAsyncChild |> Async.Start > } > |> Async.Start > with ex -> > trace Critical (fun () -> $"Eval.startTokenRangeWatcher / ex: {ex |> > SpiralSm.format_exception}") _locals > > disposable > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## startCommandsWatcher > > ── fsharp ────────────────────────────────────────────────────────────────────── > let startCommandsWatcher (uriServer : string) = > let commandsDir = targetDir </> "eval_commands" > let commandHistoryDir = targetDir </> "eval_command_history" > [[ commandsDir; commandHistoryDir ]] > |> List.iter (fun dir -> if Directory.Exists dir |> not then > Directory.CreateDirectory dir |> ignore) > > Directory.EnumerateFiles commandsDir |> Seq.iter File.Delete > > let stream, disposable = > commandsDir > |> FileSystem.watchDirectory (function > | FileSystem.FileSystemChange.Created _ -> true > | _ -> false > ) > > let connection = HubConnectionBuilder().WithUrl(uriServer).Build() > connection.StartAsync() |> Async.AwaitTask |> Async.Start > // let _ = connection.On<string>("ServerToClientMsg", fun x -> > // printfn $"ServerToClientMsg: '{x}'" > // ) > > stream > |> FSharp.Control.AsyncSeq.iterAsyncParallel (fun (ticks, event) -> async { > let _locals () = $"ticks: {ticks} / event: {event} / {_locals ()}" > trace Verbose (fun () -> "Eval.startCommandsWatcher / > iterAsyncParallel") _locals > > match event with > | FileSystem.FileSystemChange.Created (path, Some json) -> > try > let fullPath = commandsDir </> path > let! result = > connection.InvokeAsync<string>("ClientToServerMsg", json) |> Async.AwaitTask > let commandHistoryPath = commandHistoryDir </> path > do! fullPath |> SpiralFileSystem.move_file_async > commandHistoryPath |> Async.Ignore > if result |> SpiralSm.trim |> String.length > 0 then > let resultPath = commandHistoryDir </> > $"{Path.GetFileNameWithoutExtension path}_result.json" > do! result |> SpiralFileSystem.write_all_text_async > resultPath > with ex -> > let _locals () = $"ex: {ex |> SpiralSm.format_exception} / > {_locals ()}" > trace Critical (fun () -> "Eval.startCommandsWatcher / > iterAsyncParallel") _locals > | _ -> () > }) > |> Async.StartChild > |> Async.Ignore > |> Async.Start > > new_disposable (fun () -> > disposable.Dispose () > ) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## prepareSpiral > > ── fsharp ────────────────────────────────────────────────────────────────────── > let prepareSpiral rawCellCode lines = > let lastBlock = > lines > |> Array.tryFindBack (fun line -> > line |> String.length > 0 > && line.[[0]] <> ' ' > ) > > let hasMain = > lastBlock > |> Option.exists (fun line -> > line |> SpiralSm.starts_with "inl main " > || line |> SpiralSm.starts_with "let main " > ) > > if hasMain > then rawCellCode, None > else > let lastTopLevelIndex, _ = > (lines |> Array.indexed, (None, false)) > ||> Array.foldBack (fun (i, line) (lastTopLevelIndex, finished) -> > // trace Verbose (fun () -> $"Eval.prepareSpiral / i: {i} / > line: '{line}' / lastTopLevelIndex: {lastTopLevelIndex} / finished: {finished}") > _locals > match line with > | _ when finished -> lastTopLevelIndex, true > | "" -> lastTopLevelIndex, false > | line when > line |> SpiralSm.starts_with " " > || line |> SpiralSm.starts_with "// " -> lastTopLevelIndex, > false > | line when > line |> SpiralSm.starts_with "open " > || line |> SpiralSm.starts_with "prototype " > || line |> SpiralSm.starts_with "instance " > || line |> SpiralSm.starts_with "type " > || line |> SpiralSm.starts_with "union " > || line |> SpiralSm.starts_with "nominal " -> > lastTopLevelIndex, true > | line when > line |> SpiralSm.starts_with "inl " > || line |> SpiralSm.starts_with "and " > || line |> SpiralSm.starts_with "let " -> > let m = > System.Text.RegularExpressions.Regex.Match ( > line, > @"^(?:and +)?(inl|let) +((?:[[{( > ]]*)?[[~\(\w]]+[[\w\d']]*(?:|[[\w\d']]+[[ }]]*(?:&? *[[\w\d']]*\))?| > *[[~\w]][[\w\d']]*\)|, *[[~\w]][[\w\d']]*)) +[[:=]](?! +function)" > ) > trace Verbose (fun () -> $"Eval.prepareSpi / m: '{m}' / > m.Groups.Count: {m.Groups.Count}") _locals > if m.Groups.Count = 3 > then Some i, false > else lastTopLevelIndex, true > | _ -> Some i, false > ) > let code = > match lastTopLevelIndex with > | Some lastTopLevelIndex -> > lines > |> Array.mapi (fun i line -> > match i with > | i when i < lastTopLevelIndex -> line > | i when i = lastTopLevelIndex -> $"\nlet main () =\n > {line}" > | _ when line |> SpiralSm.trim = "" -> "" > | _ -> $" {line}" > ) > |> SpiralSm.concat "\n" > | None -> $"{rawCellCode}\n\ninl main () = ()\n" > code, lastTopLevelIndex > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## processSpiralOutput > > ── fsharp ────────────────────────────────────────────────────────────────────── > let processSpiralOutput > (props : {| > printCode: bool > traceLevel: TraceLevel > builderCommands: string array > lastTopLevelIndex: int option > backend: Supervisor.Backend > cancellationToken: _ > spiralErrors: _ > code: string > outputPath: string > isReal: bool > |}) > = async { > let inline _trace (fn : unit -> string) = > if props.traceLevel = Verbose > then trace Info (fun () -> $"Eval.processSpiralOutput / props: {props |> > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / {fn ()}") _locals > else fn () |> System.Console.WriteLine > > if props.printCode > && props.backend <> Supervisor.Gleam > && props.backend <> Supervisor.Python > && props.backend <> Supervisor.Cpp then > let ext = props.outputPath |> System.IO.Path.GetExtension > _trace (fun () -> if props.builderCommands.Length > 0 then > $"{ext}:\n{props.code}\n" else props.code) > > let workspaceRootExternal = > let currentDir = System.IO.Directory.GetCurrentDirectory () |> > SpiralSm.to_lower > let workspaceRoot = workspaceRoot |> SpiralSm.to_lower > if currentDir |> SpiralSm.starts_with workspaceRoot > then None > else Some workspaceRoot > > let! spiralBuilderResults = > match props.builderCommands, props.lastTopLevelIndex with > | [[||]], _ | _, None -> [[||]] |> Async.init > | builderCommands, _ -> > builderCommands > |> Array.map (fun builderCommand -> > let path = > workspaceRoot </> > $@"deps/spiral/workspace/target/release/spiral{SpiralPlatform.get_executable_suf > fix ()}" > |> System.IO.Path.GetFullPath > let commands = > if props.backend = Supervisor.Fsharp > && ( > builderCommand |> SpiralSm.starts_with "rust" > || builderCommand |> SpiralSm.starts_with > "typescript" > || builderCommand |> SpiralSm.starts_with "python" > ) > then [[| $"{path} fable --fs-path \"{props.outputPath}\" > --command \"{builderCommand}\"" |]] > elif props.backend = Supervisor.Python > && builderCommand |> SpiralSm.starts_with "cuda" > then [[| $"{path} {builderCommand} --py-path > \"{props.outputPath}\"" |]] > elif props.backend = Supervisor.Cpp > && builderCommand |> SpiralSm.starts_with "cpp" > then [[| $"{path} {builderCommand} --cpp-path > \"{props.outputPath}\"" |]] > elif props.backend = Supervisor.Gleam > && builderCommand |> SpiralSm.starts_with "gleam" > then [[| $"{path} {builderCommand} --gleam-path > \"{props.outputPath}\"" |]] > else [[||]] > builderCommand, commands > ) > |> Array.filter (fun (_, commands) -> commands.Length > 0) > |> Array.collect (fun (builderCommand, commands) -> > commands > |> Array.map (fun command -> async { > let! exitCode, result = > SpiralRuntime.execution_options (fun x -> > { x with > l0 = command > l1 = props.cancellationToken > l2 = [[| > "AUTOMATION", spiral_compiler.assemblyName = > "dotnet-repl" |> string > "TRACE_LEVEL", $"%A{if props.printCode then > props.traceLevel else Info}" > |]] > l6 = workspaceRootExternal > } > ) > |> SpiralRuntime.execute_with_options_async > trace Debug > (fun () -> $"Eval.processSpiralOutput / spiral cli") > (fun () -> $"exitCode: {exitCode} / builderCommand: > {builderCommand} / command: {command} / result: {result |> SpiralSm.ellipsis_end > 400} / {_locals ()}") > return > if exitCode = 0 > then {| code = result; eval = false; builderCommand = > builderCommand |} |> Ok > else result |> Error > }) > ) > |> Async.Parallel > > let hasEval = > props.backend = Supervisor.Fsharp > && props.builderCommands |> Array.exists (fun x -> x |> > SpiralSm.starts_with "fsharp") > > let outputResult = > if props.builderCommands.Length > 0 && not hasEval > then None > else > let code = > if props.builderCommands.Length > 1 > then > let header = "System.Console.WriteLine \".fsx output:\"\n" > $"{header}{props.code}" > else props.code > Some (Ok [[ {| code = code; eval = true; builderCommand = "" |} ]]) > > match outputResult, spiralBuilderResults with > | Some outputResult, [[||]] -> > return outputResult, [[||]] > | None, [[||]] -> > return Ok [[ {| code = "()"; eval = true; builderCommand = "" |} ]], > [[||]] > | _, spiralBuilderResults -> > try > let spiralResults = > match outputResult with > | Some (Ok code) -> > spiralBuilderResults > |> Array.append (code |> List.map Ok |> List.toArray) > | _ -> spiralBuilderResults > let codes = > spiralResults > |> Array.map (fun spiralBuilderResult' -> > let commandResult, errors = > match spiralBuilderResult' with > | Ok result when result.eval = false -> > let result' = > result.code > |> > FSharp.Json.Json.deserialize<Map<string,string>> > let result = > match result' |> Map.tryFind "command_result" > with > | Some result'' -> > result'' > |> > FSharp.Json.Json.deserialize<Map<string,string>> > |> Map.add "builderCommand" > result.builderCommand > | None -> Map.empty > result, [[||]] > | Ok result when result.eval = true -> > let result = > [[ > "extension", "fsx" > "code", result.code > "output", "" > ]] > |> Map.ofList > result, [[||]] > | Error error -> > Map.empty, > [[| > ( > TraceLevel.Critical, > $"Eval.processSpiralOutput / evalResult error / errors[[0]] / outputPath: > {props.outputPath} / builderCommands: %A{props.builderCommands} / > spiralBuilderResult': %A{spiralBuilderResult'} / error: %A{error}", 0, ("", (0, > 0), (0, 0)) > ) > |]] > | _ -> > Map.empty, [[||]] > > if errors |> Array.isEmpty |> not > then Error (Exception $"Eval.processSpiralOutput / > evalResult errors / Exception / commandResult: %A{commandResult}"), errors > else > let extension = commandResult.[["extension"]] > let code = commandResult.[["code"]] > let output = commandResult.[["output"]] > let builderCommand = > commandResult > |> Map.tryFind "builderCommand" > |> Option.defaultValue "" > > let backendInfo = > match props.backend, builderCommand with > | Supervisor.Fsharp, builderCommand > when builderCommand |> SpiralSm.contains " " -> > $" ({builderCommand})" > | Supervisor.Fsharp, _ -> "" > | _ -> $" ({props.backend})" > > let eval = output = "" && extension = "fsx" > > if props.printCode && not eval > then _trace (fun () -> > $""".{extension}{backendInfo}:{'\n'}{code}""") > > trace Debug > (fun () -> $"Eval.processSpiralOutput / result") > (fun () -> $"builderCommand: {builderCommand} / > extension: {extension} / commandResult: {commandResult |> > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400}/ {_locals ()}") > > let code = > if props.printCode > || spiralResults.Length > 1 > || props.builderCommands.Length > 1 > then > if eval > then code > else > let header = $".{extension} > output{backendInfo}:\n" > $"""{if output |> SpiralSm.contains "\n" > then "\n" else ""}{header}{output}""" > elif eval > then code > else output > Ok {| code = code; eval = eval; builderCommand = > builderCommand |}, [[||]] > ) > trace Debug > (fun () -> $"Eval.processSpiralOutput / codes") > (fun () -> > let props = {| props with cancellationToken = None |} > $"codes: {codes |> FSharp.Json.Json.serialize |> > SpiralSm.ellipsis_end 400} / spiralResults: {spiralResults |> > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / spiralBuilderResults: > {spiralBuilderResults |> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end > 400} / props: {props |> FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} > / {_locals ()}") > return > (((Ok [[]]), [[||]]), codes) > ||> Array.fold (fun (acc_code, acc_errors) (code, errors) -> > match code, acc_code with > | Ok code, Ok acc_code -> > let errors = > acc_errors > |> Array.append errors > |> Array.append props.spiralErrors > let errors = > if errors |> Array.isEmpty > then errors > else > let code = $"%A{code}" > errors > |> Array.append [[| > TraceLevel.Critical, > $"Eval.processSpiralOutput / errors / errors[[-1]] / outputPath: > {props.outputPath} / builderCommands: %A{props.builderCommands} / code: {code |> > SpiralSm.ellipsis_end 400}", 0, ("", (0, 0), (0, 0)) > |]] > Ok (code :: acc_code), errors > | Error ex, _ > | _, Error ex -> > Error (Exception $"Eval.processSpiralOutput / -1 / > Exception / spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |> > SpiralSm.format_exception}"), > acc_errors |> Array.append errors > ) > with ex -> > trace Critical (fun () -> $"Eval.processSpiralOutput / try 2 ex / > spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |> > SpiralSm.format_exception}") _locals > return > Error (Exception $"Eval.processSpiralOutput / try 2 ex / > Exception / spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |> > SpiralSm.format_exception}"), > [[| > ( > TraceLevel.Critical, $"Eval.processSpiralOutput / try 2 > ex / errors[[0]] / spiralBuilderResults: %A{spiralBuilderResults} / ex: {ex |> > SpiralSm.format_exception}", 0, ("", (0, 0), (0, 0)) > ) > |]] > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## tryGetPropertyValue > > ── fsharp ────────────────────────────────────────────────────────────────────── > let tryGetPropertyValue (propertyName: string) (obj: obj) = > let objType = obj.GetType () > let propertyInfo = propertyName |> objType.GetProperty > if propertyInfo <> null > then propertyInfo.GetValue (obj, null) |> Some > else None > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## evalAsync > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec evalAsync > retry > (props : {| > rawCellCode: _ > lines: _ > isReal: _ > builderCommands: _ array > isCache: _ > timeout: _ > cancellationToken: _ > printCode: _ > traceLevel: _ > fsi_eval: _ > |}) > = async { > try > let cellCode, lastTopLevelIndex = prepareSpiral props.rawCellCode > props.lines > let newAllCode = > if props.isReal > then $"{allCodeReal}\n\n{cellCode}" > else $"{allCode}\n\n{cellCode}" > > let buildBackends = > if props.builderCommands.Length = 0 > then [[| Supervisor.Fsharp |]] > else > props.builderCommands > |> Array.map (fun x -> > if x |> SpiralSm.starts_with "gleam" > then Supervisor.Gleam > elif x |> SpiralSm.starts_with "cuda" > then Supervisor.Python > elif x |> SpiralSm.starts_with "cpp" > then Supervisor.Cpp > else Supervisor.Fsharp > ) > |> Array.distinct > > trace Verbose > (fun () -> $"Eval.eval") > (fun () -> $"lastTopLevelIndex: {lastTopLevelIndex} / > builderCommands: %A{props.builderCommands} / buildBackends: %A{buildBackends} / > isReal: {props.isReal} / {_locals ()}") > > let! buildCodeResults = > buildBackends > |> Array.map (fun backend -> async { > let! result = > if props.isReal > then Supervisor.Spir newAllCode > else > Supervisor.Spi > (newAllCode, if allCodeReal = "" then None else Some > allCodeReal) > |> Supervisor.buildCode backend allPackages props.isCache > props.timeout props.cancellationToken > return backend, result > }) > |> Async.Parallel > |> Async.catch > |> Async.runWithTimeoutAsync props.timeout > > match buildCodeResults with > | Some (Ok buildCodeResults) -> > let! result, errors = > ((Ok [[]], [[||]]), buildCodeResults) > ||> Async.fold (fun acc buildCodeResult -> async { > match buildCodeResult with > | backend, (_, (outputPath, Some code), spiralErrors) -> > let spiralErrors = > allCode |> mapErrors (Warning, spiralErrors, > lastTopLevelIndex) > let! result = > processSpiralOutput > {| > printCode = props.printCode > traceLevel = props.traceLevel > builderCommands = props.builderCommands > lastTopLevelIndex = lastTopLevelIndex > backend = backend > cancellationToken = props.cancellationToken > spiralErrors = spiralErrors > code = code > outputPath = outputPath > isReal = props.isReal > |} > match result, acc with > | (Ok code, errors), (Ok acc_code, acc_errors) -> > return Ok (acc_code @ code), acc_errors |> > Array.append errors > | (Error ex, errors), _ | _, (Error ex, errors) -> > return > Error (Exception $"Eval.evalAsync / > processSpiralOutput / Exception / buildCodeResult: %A{buildCodeResult |> > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400} / ex: {ex |> > SpiralSm.format_exception}"), > errors |> Array.append errors > | _, (_, _, errors) when errors |> List.isEmpty |> not -> > return errors.[[0]] |> fst |> Exception |> Error, > allCode |> mapErrors (TraceLevel.Critical, errors, > lastTopLevelIndex) > | _ -> return acc > }) > let cancellationToken = defaultArg props.cancellationToken > System.Threading.CancellationToken.None > match result, errors with > | Ok code, [[||]] -> > let code, eval = > code > |> List.map (fun code -> > if code.eval > then None, Some code.code > else Some code.code, None > ) > |> List.unzip > let code = code |> List.choose id > let eval = eval |> List.choose id > > trace Debug > (fun () -> $"Eval.eval") > (fun () -> $"eval: {eval |> FSharp.Json.Json.serialize |> > SpiralSm.ellipsis_end 400} / code: {code |> FSharp.Json.Json.serialize |> > SpiralSm.ellipsis_end 400} / {_locals ()}") > > let ch, errors = > match eval, code with > | [[]], [[]] -> > Choice2Of2 (Exception $"Eval.evalAsync / eval=[[]] / > code=[[]] / buildCodeResults: %A{buildCodeResults} / code: %A{code}"), errors > | [[ eval ]], [[]] -> > let eval = > if eval |> SpiralSm.contains "<script" > then $"{eval}, \"text/html1\"" > else eval > let ch, errors2 = props.fsi_eval eval cancellationToken > let errors = > errors2 > // |> Array.map (fun (e1, e2, e3, _) -> > // (e1, e2, e3, ("", (0, 0), (0, 0))) > // ) > |> Array.append errors > ch, errors > | [[]], _ -> > let code = code |> List.rev |> String.concat "\n\n" > let code = > if props.printCode > then $"\"\"\"{code}\n\n\"\"\"" > else $"\"\"\"{code}\n\"\"\"" > let code = > if code |> SpiralSm.contains "<script" > then $"{code}, \"text/html2\"" > else code > let ch, errors2 = props.fsi_eval code cancellationToken > let errors = > errors2 > // |> Array.map (fun (e1, e2, e3, _) -> > // (e1, e2, e3, ("", (0, 0), (0, 0))) > // ) > |> Array.append errors > ch, errors > | _ -> > let code, errors = > ((Ok (code |> List.rev), [[||]]), eval) > ||> List.fold (fun (acc, acc_errors) eval -> > match acc with > | Error ch -> Error ch, acc_errors > | Ok acc -> > let eval = > if eval |> SpiralSm.contains "<script" > then $"{eval}, \"text/html3\"" > else eval > let ch, errors = props.fsi_eval eval > cancellationToken > let errors = > errors > // |> Array.map (fun (e1, e2, e3, _) -> > // (e1, e2, e3, ("", (0, 0), (0, > 0))) > // ) > |> Array.append acc_errors > match ch with > | Choice1Of2 v -> > let v = > v > |> tryGetPropertyValue > "ReflectionValue" > |> Option.map (fun x -> $"%A{x}") > |> Option.defaultValue "" > Ok (v :: acc), errors > | Choice2Of2 ex -> > trace Critical (fun () -> > $"Eval.evalAsync / fsi_eval fold Choice error / buildCodeResults: > %A{buildCodeResults} / ex: {ex |> SpiralSm.format_exception}") _locals > Error ch, errors > ) > match code with > | Error ch -> ch, errors > | Ok code -> > let code = > code > |> List.filter ((<>) "") > |> String.concat "\n\n" > > let code = > if props.builderCommands.Length > 0 && > eval.Length = 0 > then code > elif code |> SpiralSm.contains "\n\n\n" > then $"{code}\n\n" > else $"{code}\n" > > let code = > if props.printCode > then $"\"\"\"{code}\n\n\n\"\"\"" > else $"\"\"\"{code}\n\"\"\"" > let code = > if code |> SpiralSm.contains "<script" > then $"{code}, \"text/html4\"" > else code > let ch, errors2 = props.fsi_eval code > cancellationToken > let errors = > errors2 > // |> Array.map (fun (e1, e2, e3, _) -> > // (e1, e2, e3, ("", (0, 0), (0, 0))) > // ) > |> Array.append errors > ch, errors > match ch with > | Choice1Of2 v -> > if props.isReal > then allCodeReal <- newAllCode > else allCode <- newAllCode > return Ok(v), errors > | Choice2Of2 ex -> > return > Error (Exception $"Eval.evalAsync / -2 / Exception / ex: > {ex |> SpiralSm.format_exception} / buildCodeResults: {buildCodeResults |> > FSharp.Json.Json.serialize |> SpiralSm.ellipsis_end 400}"), > errors > | Ok code, errors -> > return > Error (Exception "Eval.evalAsync / errors / > buildCodeResults: %A{buildCodeResults} / code: %A{code}"), > errors > | Error ex, errors -> > let ex = ex |> SpiralSm.format_exception > if retry <= 3 && > (ex |> SpiralSm.contains "Expected one of: inl, let, union, > nominal, prototype, type, instance, and, open") > || (ex |> SpiralSm.contains "Unexpected end of block past > this token.") > || (ex |> SpiralSm.contains "Unbound variable:") > then return! evalAsync (retry + 1) props > else > return > Error (Exception $"Eval.evalAsync / -1 / Exception / ex: > {ex} / buildCodeResults: {buildCodeResults |> FSharp.Json.Json.serialize |> > SpiralSm.ellipsis_end 1500}"), > errors > | Some (Error ex) -> > trace Critical (fun () -> $"Eval.evalAsync / buildCodeResults Error > / buildCodeResults: %A{buildCodeResults} / ex: {ex |> > SpiralSm.format_exception}") _locals > return > Error (Exception $"Eval.evalAsync / buildCodeResults Error / > Exception / buildCodeResults: %A{buildCodeResults} / ex: {ex |> > SpiralSm.format_exception}"), > [[| > ( > TraceLevel.Critical, $"Eval.evalAsync / buildCodeResults > Error / errors[[0]] / ex: {ex |> SpiralSm.format_exception} / buildCodeResults: > %A{buildCodeResults}", 0, ("", (0, 0), (0, 0)) > ) > |]] > | _ -> > return > Error (Exception $"Eval.evalAsync / buildCodeResults / Exception > / buildCodeResults: %A{buildCodeResults}"), > [[| > ( > TraceLevel.Critical, $"Eval.evalAsync / buildCodeResults > / errors[[0]] / buildCodeResults: %A{buildCodeResults}", 0, ("", (0, 0), (0, 0)) > ) > |]] > with ex -> > trace Critical (fun () -> $"Eval.evalAsync / try 1 ex / ex: {ex |> > SpiralSm.format_exception} / lines: %A{props.lines}") _locals > return > Error (Exception $"Eval.evalAsync / try 1 ex / Exception / ex: {ex > |> SpiralSm.format_exception} / lines: %A{props.lines}"), > [[| > ( > TraceLevel.Critical, $"Eval.evalAsync / try 1 ex / > errors[[0]] / ex: {ex |> SpiralSm.format_exception} / lines: %A{props.lines}", > 0, ("", (0, 0), (0, 0)) > ) > |]] > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## eval > > ── fsharp ────────────────────────────────────────────────────────────────────── > let inline eval > (fsi_eval: > string > -> System.Threading.CancellationToken > -> Choice<'a, Exception> * (TraceLevel * string * int * (string * (int * > int) * (int * int))) array) > (cancellationToken: Option<System.Threading.CancellationToken>) > (code: string) > = > trace Verbose > (fun () -> $"Eval.eval") > (fun () -> $"code: {code |> SpiralSm.ellipsis_end 400} / {_locals ()}") > > let rawCellCode = > code |> SpiralSm.replace "\r\n" "\n" > > let lines = rawCellCode |> SpiralSm.split "\n" > > if lines |> Array.exists (fun line -> line |> SpiralSm.starts_with "#r " && > line |> SpiralSm.ends_with "\"") then > let cancellationToken = defaultArg cancellationToken > System.Threading.CancellationToken.None > let code = > if code |> SpiralSm.contains "<script" > then $"{code}, \"text/html5\"" > else code > let ch, errors = fsi_eval code cancellationToken > trace Verbose (fun () -> $"Eval.eval / fsi_eval 1 / ch: %A{ch} / errors: > %A{errors}") _locals > match ch with > | Choice1Of2 v -> Ok(v), errors > | Choice2Of2 ex -> Error(ex), errors > else > let builderCommands = > lines > |> Array.choose (fun line -> > if line |> SpiralSm.starts_with "///! " > then line |> SpiralSm.split "///! " |> Array.tryItem 1 > else None > ) > > let packages = > lines > |> Array.choose (fun line -> > if line |> SpiralSm.starts_with "//// package=" > then line |> SpiralSm.split "=" |> Array.skip 1 |> > SpiralSm.concat "" |> Some > else None > ) > > allPackages <- packages |> Array.append allPackages |> Array.distinct > > let timeout = > lines > |> Array.tryPick (fun line -> > if line |> SpiralSm.starts_with "//// timeout=" > then line |> SpiralSm.split "=" |> Array.tryItem 1 |> Option.map > int > else None > ) > |> Option.defaultValue (60003 * 60 * 24) > > let boolArg def command = > lines > |> Array.tryPick (fun line -> > let text = $"//// {command}" > match line.[[0..text.Length-1]], line.[[text.Length..]] with > | head, "" when head = text -> > Some true > | head, _ when head = text -> > line |> SpiralSm.split "=" |> Array.tryItem 1 |> Option.map > ((<>) "false") > | _ -> None > ) > |> Option.defaultValue def > > let printCode = "print_code" |> boolArg false > let isTraceToggle = "trace_toggle" |> boolArg false > let isTrace = "trace" |> boolArg false > let isCache = "cache" |> boolArg false > let isReal = "real" |> boolArg false > let timeout_continue = "timeout_continue" |> boolArg false > > if isTraceToggle > then traceToggle <- not traceToggle > > let oldLevel = get_trace_level () > let traceLevel = > if isTrace || traceToggle > then Verbose > else Info > traceLevel > |> to_trace_level > |> set_trace_level > use _ = (new_disposable (fun () -> > oldLevel |> set_trace_level > )) > > evalAsync 1 > {| > rawCellCode = rawCellCode > lines = lines > isReal = isReal > builderCommands = builderCommands > isCache = isCache > timeout = timeout > cancellationToken = cancellationToken > printCode = printCode > traceLevel = traceLevel > fsi_eval = fsi_eval > |} > |> Async.runWithTimeout timeout > |> (fun x -> > match x with > | Some ((Ok x), a) -> Some ((Ok x), a) > | Some ((Error x), a) -> > trace Info (fun () -> $"Eval.eval / error / exception: > {x.GetType().FullName} / a: %A{a} / x: %A{x}") (fun () -> "") > Some ((Error x), a) > | _ -> None > ) > |> Option.defaultWith (fun () -> ( > let lines = lines |> SpiralSm.concat (string '\n') |> > SpiralSm.ellipsis_end 1500 > in > Error (Exception $"Eval.eval / Async.runWithTimeout / Exception / > timeout: {timeout} / timeout_continue: {timeout_continue} / lines: {lines}"), > [[| > ( > TraceLevel.Critical, $"Eval.eval / Async.runWithTimeout / > errors[[0]] / timeout: {timeout} / lines: {lines}", 0, ("", (0, 0), (0, 0)) > ) > |]] > )) 00:01:16 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 54769 } 00:01:17 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:01:17 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.ipynb to html 00:01:17 v #6 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:01:17 v #7 ! validate(nb) 00:01:18 v #8 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:01:18 v #9 ! return _pygments_highlight( 00:01:18 v #10 ! [NbConvertApp] Writing 466872 bytes to /home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.html 00:01:18 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 896 } 00:01:18 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 896 } 00:01:18 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/Eval.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:01:19 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:01:19 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:01:19 d #16 spiral.run / dib / { exit_code = 0; result_length = 55724 } 00:00:00 d #1 writeDibCode / output: Fs / path: Eval.dib 00:00:00 d #2 parseDibCode / output: Fs / file: Eval.dib polyglot/apps/spiral/build.ps1 / $env:CI:'true'
In [ ]:
{ pwsh ../lib/fsharp/build.ps1 -sequential 1 } | Invoke-Block
00:00:00 d #1 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path Async.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path Async.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:00:18 d #2 runtime.execute_with_options_async / { exit_code = 0; output_length = 20495; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path Async.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:00:18 d #1 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path Async.dib --retries 3 00:00:18 d #3 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path AsyncSeq.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path AsyncSeq.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:00:37 d #4 runtime.execute_with_options_async / { exit_code = 0; output_length = 12252; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path AsyncSeq.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:00:37 d #2 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path AsyncSeq.dib --retries 3 00:00:37 d #5 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path Common.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path Common.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:00:53 d #6 runtime.execute_with_options_async / { exit_code = 0; output_length = 5893; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path Common.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:00:53 d #3 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path Common.dib --retries 3 00:00:53 d #7 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path CommonFSharp.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path CommonFSharp.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:01:10 d #8 runtime.execute_with_options_async / { exit_code = 0; output_length = 4775; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path CommonFSharp.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:01:10 d #4 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path CommonFSharp.dib --retries 3 00:01:10 d #9 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path FileSystem.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path FileSystem.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:01:46 d #10 runtime.execute_with_options_async / { exit_code = 0; output_length = 96224; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path FileSystem.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:01:46 d #5 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path FileSystem.dib --retries 3 00:01:46 d #11 runtime.execute_with_options_async / { file_name = ../../deps/spiral/workspace/target/release/spiral; arguments = US5_0 "dib --path Runtime.dib --retries 3"; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path Runtime.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:02:04 d #12 runtime.execute_with_options_async / { exit_code = 0; output_length = 9703; options = { command = ../../deps/spiral/workspace/target/release/spiral dib --path Runtime.dib --retries 3; cancellation_token = Some System.Threading.CancellationToken; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:02:04 d #6 main / executeCommand / exitCode: 0 / command: ../../deps/spiral/workspace/target/release/spiral dib --path Runtime.dib --retries 3 00:00:00 d #1 writeDibCode / output: Fs / path: Common.dib 00:00:00 d #1 writeDibCode / output: Fs / path: Async.dib 00:00:00 d #1 writeDibCode / output: Fs / path: AsyncSeq.dib 00:00:00 d #1 writeDibCode / output: Fs / path: CommonFSharp.dib 00:00:00 d #2 parseDibCode / output: Fs / file: CommonFSharp.dib 00:00:00 d #3 parseDibCode / output: Fs / file: Common.dib 00:00:00 d #4 parseDibCode / output: Fs / file: Async.dib 00:00:00 d #4 parseDibCode / output: Fs / file: AsyncSeq.dib 00:00:00 d #6 writeDibCode / output: Fs / path: FileSystem.dib 00:00:00 d #8 parseDibCode / output: Fs / file: FileSystem.dib 00:00:00 d #6 writeDibCode / output: Fs / path: Runtime.dib 00:00:00 d #9 parseDibCode / output: Fs / file: Runtime.dib
In [ ]:
{ pwsh ../deps/spiral/apps/wasm/build.ps1 -SkipFsx 1 } | Invoke-Block
00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: spiral_wasm / hash: / code.Length: 375569 spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm polyglot/scripts/core.ps1/ResolveLink #4 / Path: /home/runner/work/polyglot/polyglot/deps/spiral/deps/polyglot/deps/spiral/lib/spiral/../../deps/polyglot / parent_target: / path_target: /home/runner/work/polyglot/polyglot / parent: /home/runner/work/polyglot/polyglot/deps/spiral/deps/polyglot/deps/spiral/lib/spiral/../../deps / End: polyglot spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm / ProjectName: spiral_wasm / Language: rs / Runtime: / root: /home/runner/work/polyglot/polyglot Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha) Thanks to the contributor! @theimowski Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target/Builder/spiral_wasm/spiral_wasm.fsproj... Project and references (14 source files) parsed in 3090ms Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Started Fable compilation... Fable compilation finished in 9970ms ./deps/spiral/lib/spiral/common.fsx(2339,0): (2339,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/sm.fsx(561,0): (561,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/async_.fsx(252,0): (252,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/threading.fsx(139,0): (139,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/crypto.fsx(2569,0): (2569,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/date_time.fsx(2553,0): (2553,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/platform.fsx(122,0): (122,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/networking.fsx(5637,0): (5637,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/trace.fsx(2897,0): (2897,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/runtime.fsx(9581,0): (9581,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/file_system.fsx(21240,0): (21240,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! spiral/apps/wasm/build.ps1 / path: /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm/target/rs/spiral_wasm.rs spiral/apps/wasm/build.ps1 / $targetDir = /home/runner/work/polyglot/polyglot/target/Builder/spiral_wasm / $projectName: spiral_wasm / $env:CI:'true' Downloading crates ... Downloaded actix-rt v2.10.0 Downloaded base64ct v1.7.3 Downloaded arbitrary v1.4.1 Downloaded actix v0.13.5 Downloaded async-stream v0.3.6 Downloaded strum_macros v0.24.3 Downloaded smallvec v1.14.0 Downloaded prost v0.12.6 Downloaded reed-solomon-erasure v4.0.2 Downloaded sync_wrapper v0.1.2 Downloaded tokio-retry v0.3.0 Downloaded idna_adapter v1.2.0 Downloaded icu_locid v1.5.0 Downloaded near-config-utils v0.23.0 Downloaded zvariant_derive v3.15.2 Downloaded newline-converter v0.3.0 Downloaded near-stdx v0.23.0 Downloaded num v0.4.3 Downloaded once_cell v1.21.1 Downloaded ordered-float v4.6.0 Downloaded openssl-sys v0.9.106 Downloaded opentelemetry_sdk v0.22.1 Downloaded near-abi-client-macros v0.1.1 Downloaded openssl v0.10.71 Downloaded nix v0.26.4 Downloaded near-crypto v0.23.0 Downloaded near-sdk-macros v5.11.0 Downloaded near_schemafy_lib v0.7.0 Downloaded near-socialdb-client v0.3.2 Downloaded near-chain-configs v0.23.0 Downloaded near-o11y v0.23.0 Downloaded near-token v0.2.1 Downloaded near-time v0.23.0 Downloaded near-sandbox-utils v0.9.0 Downloaded near-jsonrpc-primitives v0.23.0 Downloaded near-parameters v0.23.0 Downloaded sha3 v0.10.8 Downloaded tokio v1.44.1 Downloaded near-rpc-error-macro v0.23.0 Downloaded near-performance-metrics v0.23.0 Downloaded near-async v0.23.0 Downloaded interactive-clap v0.2.10 Downloaded near-rpc-error-core v0.23.0 Downloaded linux-raw-sys v0.9.3 Downloaded jiff v0.2.5 Downloaded interactive-clap-derive v0.2.10 Downloaded near-jsonrpc-client v0.10.1 Downloaded near-sandbox-utils v0.14.0 Downloaded unicode-width v0.2.0 Downloaded webpki-roots v0.26.8 Downloaded mio v0.8.11 Downloaded linux-raw-sys v0.3.8 Downloaded near-workspaces v0.11.1 Downloaded near-primitives-core v0.23.0 Downloaded near-fmt v0.23.0 Downloaded secp256k1-sys v0.8.1 Downloaded near-token v0.3.0 Downloaded near-sys v0.2.2 Downloaded winnow v0.7.4 Downloaded tracing-opentelemetry v0.23.0 Downloaded rustls-webpki v0.103.0 Downloaded wasmparser v0.211.1 Downloaded opentelemetry-semantic-conventions v0.14.0 Downloaded opentelemetry v0.22.0 Downloaded opaque-debug v0.3.1 Downloaded num-rational v0.4.2 Downloaded near-abi v0.4.3 Downloaded mio v1.0.3 Downloaded litemap v0.7.5 Downloaded zvariant v3.15.2 Downloaded zbus v3.15.2 Downloaded ureq v2.12.1 Downloaded unicode-normalization v0.1.22 Downloaded toml_edit v0.22.24 Downloaded serde_with v3.12.0 Downloaded num-rational v0.3.2 Downloaded num-complex v0.4.6 Downloaded num-bigint v0.3.3 Downloaded near-account-id v1.0.0 Downloaded near-abi-client-impl v0.1.1 Downloaded near-abi-client v0.1.1 Downloaded near-sandbox-utils v0.8.0 Downloaded near-async-derive v0.23.0 Downloaded linux-keyutils v0.2.4 Downloaded inquire v0.7.5 Downloaded indexmap v2.8.0 Downloaded wasmparser v0.83.0 Downloaded tokio-util v0.7.14 Downloaded nom-supreme v0.6.0 Downloaded names v0.14.0 Downloaded keyring v2.3.3 Downloaded indexmap v1.9.3 Downloaded icu_properties_data v1.5.0 Downloaded miniz_oxide v0.8.5 Downloaded tonic v0.11.0 Downloaded textwrap v0.16.2 Downloaded symbolic-debuginfo v8.8.0 Downloaded libloading v0.8.6 Downloaded json_comments v0.2.2 Downloaded icu_provider_macros v1.5.0 Downloaded icu_normalizer_data v1.5.0 Downloaded icu_normalizer v1.5.0 Downloaded icu_locid_transform v1.5.0 Downloaded zerovec-derive v0.10.3 Downloaded new_debug_unreachable v1.0.6 Downloaded miniz_oxide v0.7.4 Downloaded matchit v0.7.3 Downloaded xml-rs v0.8.25 Downloaded vte v0.11.1 Downloaded scroll v0.11.0 Downloaded gimli v0.26.2 Downloaded cargo-near v0.6.4 Downloaded keccak v0.1.5 Downloaded openssl-src v300.4.2+3.4.1 Downloaded jsonptr v0.4.7 Downloaded indent_write v2.2.0 Downloaded ident_case v1.0.1 Downloaded icu_provider v1.5.0 Downloaded icu_properties v1.5.1 Downloaded icu_locid_transform_data v1.5.0 Downloaded near-cli-rs v0.11.1 Downloaded zvariant_utils v1.0.1 Downloaded near-gas v0.3.0 Downloaded near-sdk v5.11.0 Downloaded near-gas v0.2.5 Downloaded memmap2 v0.5.10 Downloaded json-patch v2.0.0 Downloaded near-primitives v0.23.0 Downloaded zbus_macros v3.15.2 Downloaded yoke v0.7.5 Downloaded uuid v0.8.2 Downloaded unicode-linebreak v0.1.5 Downloaded uint v0.9.5 Downloaded tracing-attributes v0.1.28 Downloaded tracing-appender v0.2.3 Downloaded socket2 v0.4.10 Downloaded secret-service v3.1.0 Downloaded secp256k1 v0.27.0 Downloaded polling v2.8.0 Downloaded hyper v0.14.32 Downloaded h2 v0.3.26 Downloaded gimli v0.28.1 Downloaded color-eyre v0.6.3 Downloaded zstd-safe v5.0.2+zstd.1.5.2 Downloaded zstd v0.11.2+zstd.1.5.2 Downloaded zip v0.5.13 Downloaded ordered-stream v0.2.0 Downloaded near_schemafy_core v0.7.0 Downloaded memoffset v0.7.1 Downloaded joinery v2.1.0 Downloaded io-lifetimes v1.0.11 Downloaded indicatif v0.17.11 Downloaded icu_collections v1.5.0 Downloaded hyper-util v0.1.10 Downloaded hyper-timeout v0.4.1 Downloaded zerovec v0.10.4 Downloaded opentelemetry-proto v0.5.0 Downloaded opentelemetry-otlp v0.15.0 Downloaded zbus_names v2.6.1 Downloaded yoke-derive v0.7.5 Downloaded xdg-home v1.3.0 Downloaded xattr v1.5.0 Downloaded writeable v0.5.5 Downloaded vt100 v0.15.2 Downloaded utf16_iter v1.0.5 Downloaded tracing-indicatif v0.3.9 Downloaded tracing-error v0.2.1 Downloaded tracing-core v0.1.33 Downloaded toml v0.8.20 Downloaded tinystr v0.7.6 Downloaded synstructure v0.13.1 Downloaded symbolic-common v8.8.0 Downloaded socket2 v0.5.8 Downloaded smawk v0.3.2 Downloaded smart-default v0.7.1 Downloaded smart-default v0.6.0 Downloaded signal-hook-registry v1.4.2 Downloaded serde_repr v0.1.20 Downloaded scroll_derive v0.11.1 Downloaded hashbrown v0.15.2 Downloaded h2 v0.4.8 Downloaded goblin v0.5.4 Downloaded futures-lite v1.13.0 Downloaded fastrand v1.9.0 Downloaded elementtree v0.7.0 Downloaded derive_more v0.99.19 Downloaded color-spantrace v0.2.1 Downloaded password-hash v0.4.2 Downloaded write16 v1.0.0 Downloaded tokio-io-timeout v1.2.0 Downloaded strum v0.24.1 Downloaded signal-hook-mio v0.2.4 Downloaded signal-hook v0.3.17 Downloaded fallible-iterator v0.2.0 Downloaded env_logger v0.11.7 Downloaded ed25519 v2.2.3 Downloaded http v0.2.12 Downloaded flate2 v1.1.0 Downloaded owo-colors v3.5.0 Downloaded waker-fn v1.2.0 Downloaded vte_generate_state_changes v0.1.2 Downloaded urlencoding v2.1.3 Downloaded uriparse v0.6.4 Downloaded shellexpand v3.1.0 Downloaded rustversion v1.0.20 Downloaded hmac v0.9.0 Downloaded heck v0.4.1 Downloaded fuzzy-matcher v0.3.7 Downloaded enum-map-derive v0.17.0 Downloaded ed25519-dalek v2.1.1 Downloaded easy-ext v1.0.2 Downloaded easy-ext v0.2.9 Downloaded deranged v0.4.1 Downloaded debugid v0.7.3 Downloaded cargo_metadata v0.18.1 Downloaded bytesize v1.3.2 Downloaded blake2 v0.10.6 Downloaded binary-install v0.2.0 Downloaded axum v0.6.20 Downloaded async-lock v2.8.0 Downloaded async-executor v1.13.1 Downloaded term v0.7.0 Downloaded tempfile v3.19.1 Downloaded string_cache v0.8.8 Downloaded slipped10 v0.4.6 Downloaded serde_yaml v0.9.34+deprecated Downloaded scroll v0.10.2 Downloaded rustls-pki-types v1.11.0 Downloaded http-body v0.4.6 Downloaded hex-conservative v0.1.2 Downloaded hex v0.3.2 Downloaded glob v0.3.2 Downloaded fs2 v0.4.3 Downloaded fluent-uri v0.1.4 Downloaded fixed-hash v0.7.0 Downloaded event-listener v2.5.3 Downloaded errno v0.3.10 Downloaded enumflags2_derive v0.7.11 Downloaded enumflags2 v0.7.11 Downloaded enum-map v2.7.3 Downloaded encode_unicode v1.0.0 Downloaded dmsort v1.0.2 Downloaded digest v0.9.0 Downloaded derive_arbitrary v1.4.1 Downloaded curve25519-dalek-derive v0.1.1 Downloaded curve25519-dalek v4.1.3 Downloaded crypto-mac v0.9.1 Downloaded crypto-hash v0.3.4 Downloaded crossterm v0.25.0 Downloaded colored v2.2.0 Downloaded bs58 v0.5.1 Downloaded brownstone v1.1.0 Downloaded borsh-derive v1.5.6 Downloaded bitcoin_hashes v0.13.0 Downloaded bitcoin-internals v0.2.0 Downloaded async-io v1.13.0 Downloaded async-broadcast v0.5.1 Downloaded sha2 v0.9.9 Downloaded serde_with_macros v3.12.0 Downloaded rustls v0.23.25 Downloaded rustix v1.0.3 Downloaded rustix v0.37.28 Downloaded rust_decimal v1.37.1 Downloaded reqwest v0.12.15 Downloaded protobuf v2.28.0 Downloaded prometheus v0.13.4 Downloaded portable-atomic v1.11.0 Downloaded dirs v5.0.1 Downloaded derivative v2.2.0 Downloaded darling_core v0.20.10 Downloaded darling v0.20.10 Downloaded csv-core v0.1.12 Downloaded csv v1.3.1 Downloaded crunchy v0.2.3 Downloaded convert_case v0.5.0 Downloaded constant_time_eq v0.1.5 Downloaded cc v1.2.17 Downloaded cargo-util v0.1.2 Downloaded bs58 v0.4.0 Downloaded borsh v1.5.6 Downloaded axum-core v0.3.4 Downloaded atty v0.2.14 Downloaded async-stream-impl v0.3.6 Downloaded async-fs v1.6.0 Downloaded prettytable v0.10.0 Downloaded prettyplease v0.1.25 Downloaded pdb v0.7.0 Downloaded darling_macro v0.20.10 Downloaded bitflags v2.9.0 Downloaded bip39 v2.1.0 Downloaded async-recursion v1.1.1 Downloaded proc-macro-error v1.0.4 Downloaded proc-macro-crate v3.3.0 Downloaded primitive-types v0.10.1 Downloaded crossbeam-channel v0.5.14 Downloaded clap_derive v4.5.32 Downloaded backtrace v0.3.71 Downloaded prost-derive v0.12.6 Downloaded proc-macro-error-attr v1.0.4 Downloaded proc-macro-crate v1.3.1 Downloaded hyper-rustls v0.27.5 Downloaded plain v0.2.3 Downloaded pbkdf2 v0.11.0 Downloaded block-buffer v0.9.0 Downloaded anyhow v1.0.97 Downloaded actix_derive v0.6.2 Downloaded actix-macros v0.2.4 Downloaded adler v1.0.2 Downloaded addr2line v0.21.0 Downloaded Inflector v0.11.4 Compiling libc v0.2.171 Compiling serde v1.0.219 Compiling syn v2.0.100 Compiling version_check v0.9.5 Compiling shlex v1.3.0 Compiling once_cell v1.21.1 Compiling jobserver v0.1.32 Compiling generic-array v0.14.7 Compiling smallvec v1.14.0 Compiling cc v1.2.17 Compiling futures-core v0.3.31 Compiling pkg-config v0.3.32 Compiling lock_api v0.4.12 Compiling parking_lot_core v0.9.10 Compiling scopeguard v1.2.0 Compiling bytes v1.10.1 Compiling parking_lot v0.12.3 Compiling log v0.4.27 Compiling signal-hook-registry v1.4.2 Compiling getrandom v0.2.15 Compiling hashbrown v0.15.2 Compiling equivalent v1.0.2 Compiling toml_datetime v0.6.8 Compiling mio v1.0.3 Compiling socket2 v0.5.8 Compiling indexmap v2.8.0 Compiling tracing-core v0.1.33 Compiling synstructure v0.13.1 Compiling futures-sink v0.3.31 Compiling subtle v2.6.1 Compiling rand_core v0.6.4 Compiling crypto-common v0.1.6 Compiling futures-channel v0.3.31 Compiling num-traits v0.2.19 Compiling anyhow v1.0.97 Compiling block-buffer v0.10.4 Compiling cfg_aliases v0.2.1 Compiling syn v1.0.109 Compiling fnv v1.0.7 Compiling digest v0.10.7 Compiling winnow v0.7.4 Compiling zstd-sys v2.0.15+zstd.1.5.7 Compiling serde_derive v1.0.219 Compiling zerofrom-derive v0.1.6 Compiling yoke-derive v0.7.5 Compiling tokio-macros v2.5.0 Compiling tokio v1.44.1 Compiling zerovec-derive v0.10.3 Compiling tracing-attributes v0.1.28 Compiling tracing v0.1.41 Compiling displaydoc v0.2.5 Compiling futures-macro v0.3.31 Compiling toml_edit v0.22.24 Compiling futures-util v0.3.31 Compiling crossbeam-utils v0.8.21 Compiling rustversion v1.0.20 Compiling proc-macro-crate v3.3.0 Compiling icu_provider_macros v1.5.0 Compiling bitflags v2.9.0 Compiling borsh-derive v1.5.6 Compiling thiserror v1.0.69 Compiling thiserror-impl v1.0.69 Compiling lazy_static v1.5.0 Compiling rand_chacha v0.3.1 Compiling serde_json v1.0.140 Compiling byteorder v1.5.0 Compiling rand v0.8.5 Compiling borsh v1.5.6 Compiling stable_deref_trait v1.2.0 Compiling tokio-util v0.7.14 Compiling sha2 v0.10.8 Compiling percent-encoding v2.3.1 Compiling semver v1.0.26 Compiling zerofrom v0.1.6 Compiling bitflags v1.3.2 Compiling yoke v0.7.5 Compiling num-integer v0.1.46 Compiling tower-service v0.3.3 Compiling memchr v2.7.4 Compiling httparse v1.10.1 Compiling zerovec v0.10.4 Compiling hex v0.4.3 Compiling ring v0.17.14 Compiling cfg-if v1.0.0 Compiling try-lock v0.2.5 Compiling want v0.3.1 Compiling async-trait v0.1.88 Compiling static_assertions v1.1.0 Compiling typenum v1.18.0 Compiling tinystr v0.7.6 Compiling http v0.2.12 Compiling thread_local v1.1.8 Compiling writeable v0.5.5 Compiling powerfmt v0.2.0 Compiling regex-syntax v0.6.29 Compiling litemap v0.7.5 Compiling icu_locid v1.5.0 Compiling deranged v0.4.1 Compiling regex-automata v0.1.10 Compiling openssl-src v300.4.2+3.4.1 Compiling num_cpus v1.16.0 Compiling time-core v0.1.4 Compiling vcpkg v0.2.15 Compiling tower-layer v0.3.3 Compiling overload v0.1.1 Compiling num-conv v0.1.0 Compiling nu-ansi-term v0.46.0 Compiling time v0.3.41 Compiling openssl-sys v0.9.106 Compiling futures-executor v0.3.31 Compiling matchers v0.1.0 Compiling icu_provider v1.5.0 Compiling http-body v0.4.6 Compiling aho-corasick v1.1.3 Compiling rustc_version v0.4.1 Compiling sharded-slab v0.1.7 Compiling crossbeam-channel v0.5.14 Compiling pin-project-internal v1.1.10 Compiling serde_repr v0.1.20 Compiling tracing-log v0.2.0 Compiling bzip2-sys v0.1.13+1.0.8 Compiling indexmap v1.9.3 Compiling num-bigint v0.3.3 Compiling base64 v0.21.7 Compiling regex-syntax v0.8.5 Compiling zstd-safe v5.0.2+zstd.1.5.2 Compiling icu_locid_transform_data v1.5.0 Compiling icu_locid_transform v1.5.0 Compiling pin-project v1.1.10 Compiling tracing-subscriber v0.3.19 Compiling curve25519-dalek v4.1.3 Compiling regex-automata v0.4.9 Compiling h2 v0.3.26 Compiling icu_collections v1.5.0 Compiling near-account-id v1.0.0 Compiling axum-core v0.3.4 Compiling num-rational v0.3.2 Compiling crunchy v0.2.3 Compiling icu_properties_data v1.5.0 Compiling mime v0.3.17 Compiling either v1.15.0 Compiling hashbrown v0.12.3 Compiling base64 v0.22.1 Compiling strsim v0.11.1 Compiling ident_case v1.0.1 Compiling convert_case v0.4.0 Compiling httpdate v1.0.3 Compiling derive_more v0.99.19 Compiling hyper v0.14.32 Compiling darling_core v0.20.10 Compiling itertools v0.12.1 Compiling icu_properties v1.5.1 Compiling regex v1.11.1 Compiling axum v0.6.20 Compiling tokio-stream v0.1.17 Compiling derive_arbitrary v1.4.1 Compiling enum-map-derive v0.17.0 Compiling curve25519-dalek-derive v0.1.1 Compiling secp256k1-sys v0.8.1 Compiling signature v2.2.0 Compiling heck v0.4.1 Compiling rustls-pki-types v1.11.0 Compiling rustls v0.23.25 Compiling utf8_iter v1.0.4 Compiling icu_normalizer_data v1.5.0 Compiling heck v0.5.0 Compiling urlencoding v2.1.3 Compiling write16 v1.0.0 Compiling bs58 v0.4.0 Compiling schemars v0.8.22 Compiling utf16_iter v1.0.5 Compiling icu_normalizer v1.5.0 Compiling opentelemetry v0.22.0 Compiling strum_macros v0.24.3 Compiling ed25519 v2.2.3 Compiling enum-map v2.7.3 Compiling arbitrary v1.4.1 Compiling prost-derive v0.12.6 Compiling darling_macro v0.20.10 Compiling tower v0.4.13 Compiling concurrent-queue v2.5.0 Compiling tokio-io-timeout v1.2.0 Compiling async-stream-impl v0.3.6 Compiling ordered-float v4.6.0 Compiling serde_derive_internals v0.29.1 Compiling block-padding v0.3.3 Compiling openssl v0.10.71 Compiling sync_wrapper v0.1.2 Compiling matchit v0.7.3 Compiling foreign-types-shared v0.1.1 Compiling glob v0.3.2 Compiling opentelemetry_sdk v0.22.1 Compiling schemars_derive v0.8.22 Compiling foreign-types v0.3.2 Compiling inout v0.1.4 Compiling async-stream v0.3.6 Compiling hyper-timeout v0.4.1 Compiling prost v0.12.6 Compiling darling v0.20.10 Compiling uint v0.9.5 Compiling near-primitives-core v0.23.0 Compiling ed25519-dalek v2.1.1 Compiling strum v0.24.1 Compiling idna_adapter v1.2.0 Compiling fixed-hash v0.7.0 Compiling form_urlencoded v1.2.1 Compiling openssl-macros v0.1.1 Compiling http v1.3.1 Compiling protobuf v2.28.0 Compiling rustix v1.0.3 Compiling winnow v0.5.40 Compiling fastrand v2.3.0 Compiling json_comments v0.2.2 Compiling near-config-utils v0.23.0 Compiling idna v1.0.3 Compiling primitive-types v0.10.1 Compiling toml_edit v0.19.15 Compiling tonic v0.11.0 Compiling secp256k1 v0.27.0 Compiling cipher v0.4.4 Compiling actix-rt v2.10.0 Compiling actix_derive v0.6.2 Compiling actix-macros v0.2.4 Compiling hmac v0.12.1 Compiling blake2 v0.10.6 Compiling proc-macro-error-attr v1.0.4 Compiling near-stdx v0.23.0 Compiling linux-raw-sys v0.9.3 Compiling adler2 v2.0.0 Compiling itoa v1.0.15 Compiling prometheus v0.13.4 Compiling zstd-safe v7.2.4 Compiling ryu v1.0.20 Compiling arrayvec v0.7.6 Compiling clap_builder v4.5.32 Compiling miniz_oxide v0.8.5 Compiling near-crypto v0.23.0 Compiling actix v0.13.5 Compiling opentelemetry-proto v0.5.0 Compiling proc-macro-crate v1.3.1 Compiling url v2.5.4 Compiling http-body v1.0.1 Compiling event-listener v5.4.0 Compiling clap_derive v4.5.32 Compiling futures v0.3.31 Compiling sha1 v0.10.6 Compiling zvariant_utils v1.0.1 Compiling proc-macro-error v1.0.4 Compiling crc32fast v1.4.2 Compiling io-lifetimes v1.0.11 Compiling event-listener v2.5.3 Compiling reed-solomon-erasure v4.0.2 Compiling cpufeatures v0.2.17 Compiling opentelemetry-semantic-conventions v0.14.0 Compiling unsafe-libyaml v0.2.11 Compiling native-tls v0.2.14 Compiling serde_yaml v0.9.34+deprecated Compiling opentelemetry-otlp v0.15.0 Compiling chrono v0.4.40 Compiling flate2 v1.1.0 Compiling clap v4.5.32 Compiling event-listener-strategy v0.5.3 Compiling aes v0.8.4 Compiling h2 v0.4.8 Compiling serde_with_macros v3.12.0 Compiling tracing-opentelemetry v0.23.0 Compiling tracing-appender v0.2.3 Compiling near-time v0.23.0 Compiling near-rpc-error-core v0.23.0 Compiling enumflags2_derive v0.7.11 Compiling dirs-sys-next v0.1.2 Compiling futures-lite v2.6.0 Compiling polling v2.8.0 Compiling memoffset v0.7.1 Compiling untrusted v0.9.0 Compiling dyn-clone v1.0.19 Compiling waker-fn v1.2.0 Compiling keccak v0.1.5 Compiling openssl-probe v0.1.6 Compiling rustix v0.37.28 Compiling fastrand v1.9.0 Compiling getrandom v0.3.2 Compiling itertools v0.10.5 Compiling futures-lite v1.13.0 Compiling sha3 v0.10.8 Compiling dirs-next v2.0.0 Compiling enumflags2 v0.7.11 Compiling near-rpc-error-macro v0.23.0 Compiling hyper v1.6.0 Compiling near-o11y v0.23.0 Compiling serde_with v3.12.0 Compiling zstd v0.13.3 Compiling async-channel v2.3.1 Compiling near-parameters v0.23.0 Compiling async-lock v2.8.0 Compiling zvariant_derive v3.15.2 Compiling near-performance-metrics v0.23.0 Compiling piper v0.2.4 Compiling near-fmt v0.23.0 Compiling bytesize v1.3.2 Compiling smart-default v0.6.0 Compiling near-async-derive v0.23.0 Compiling filetime v0.2.25 Compiling async-io v1.13.0 Compiling async-fs v1.6.0 Compiling proc-macro2 v1.0.94 Compiling linux-raw-sys v0.3.8 Compiling base64ct v1.7.3 Compiling unicode-width v0.1.14 Compiling easy-ext v0.2.9 Compiling unicode-ident v1.0.18 Compiling signal-hook v0.3.17 Compiling near-primitives v0.23.0 Compiling password-hash v0.4.2 Compiling near-async v0.23.0 Compiling zvariant v3.15.2 Compiling blocking v1.6.1 Compiling interactive-clap-derive v0.2.10 Compiling hyper-util v0.1.10 Compiling rustls-webpki v0.103.0 Compiling Inflector v0.11.4 Compiling http-body-util v0.1.3 Compiling num-bigint v0.4.6 Compiling backtrace v0.3.71 Compiling socket2 v0.4.10 Compiling sync_wrapper v1.0.2 Compiling ahash v0.8.11 Compiling vte_generate_state_changes v0.1.2 Compiling portable-atomic v1.11.0 Compiling gimli v0.28.1 Compiling adler v1.0.2 Compiling bitcoin-internals v0.2.0 Compiling zeroize v1.8.1 Compiling unicode-width v0.2.0 Compiling eyre v0.6.12 Compiling addr2line v0.21.0 Compiling miniz_oxide v0.7.4 Compiling vte v0.11.1 Compiling tower v0.5.2 Compiling num-rational v0.4.2 Compiling pbkdf2 v0.11.0 Compiling near-chain-configs v0.23.0 Compiling nix v0.26.4 Compiling zstd v0.11.2+zstd.1.5.2 Compiling interactive-clap v0.2.10 Compiling zbus_names v2.6.1 Compiling bzip2 v0.4.4 Compiling quote v1.0.40 Compiling xattr v1.5.0 Compiling webpki-roots v0.26.8 Compiling async-executor v1.13.1 Compiling async-broadcast v0.5.1 Compiling zbus_macros v3.15.2 Compiling serde_urlencoded v0.7.1 Compiling rustls-pemfile v2.2.0 Compiling tracing-error v0.2.1 Compiling num-iter v0.1.45 Compiling derivative v2.2.0 Compiling async-recursion v1.1.1 Compiling num-complex v0.4.6 Compiling digest v0.9.0 Compiling mio v0.8.11 Compiling xdg-home v1.3.0 Compiling ordered-stream v0.2.0 Compiling object v0.32.2 Compiling radium v0.7.0 Compiling ipnet v2.11.0 Compiling tinyvec_macros v0.1.1 Compiling uuid v0.8.2 Compiling constant_time_eq v0.1.5 Compiling zerocopy v0.7.35 Compiling option-ext v0.2.0 Compiling rustc-demangle v0.1.24 Compiling owo-colors v3.5.0 Compiling siphasher v1.0.1 Compiling indenter v0.3.3 Compiling color-spantrace v0.2.1 Compiling phf_shared v0.11.3 Compiling zip v0.6.6 Compiling dirs-sys v0.4.1 Compiling ureq v2.12.1 Compiling tinyvec v1.9.0 Compiling zbus v3.15.2 Compiling signal-hook-mio v0.2.4 Compiling num v0.4.3 Compiling tar v0.4.44 Compiling near-jsonrpc-primitives v0.23.0 Compiling vt100 v0.15.2 Compiling console v0.15.11 Compiling near-abi v0.4.3 Compiling uriparse v0.6.4 Compiling near_schemafy_core v0.7.0 Compiling hkdf v0.12.4 Compiling cbc v0.1.2 Compiling serde_spanned v0.6.8 Compiling scroll_derive v0.11.1 Compiling crypto-mac v0.9.1 Compiling block-buffer v0.9.0 Compiling fs2 v0.4.3 Compiling is-docker v0.2.0 Compiling csv-core v0.1.12 Compiling precomputed-hash v0.1.1 Compiling tap v1.0.1 Compiling opaque-debug v0.3.1 Compiling pin-project-lite v0.2.16 Compiling new_debug_unreachable v1.0.6 Compiling camino v1.1.9 Compiling is_executable v0.1.2 Compiling unicode-segmentation v1.12.0 Compiling hex-conservative v0.1.2 Compiling number_prefix v0.4.0 Compiling same-file v1.0.6 Compiling near-sandbox-utils v0.8.0 Compiling hex v0.3.2 Compiling fallible-iterator v0.2.0 Compiling rust_decimal v1.37.1 Compiling siphasher v0.3.11 Compiling iana-time-zone v0.1.62 Compiling minimal-lexical v0.2.1 Compiling binary-install v0.2.0 Compiling nom v7.1.3 Compiling walkdir v2.5.0 Compiling indicatif v0.17.11 Compiling bitcoin_hashes v0.13.0 Compiling newline-converter v0.3.0 Compiling string_cache v0.8.8 Compiling sha2 v0.9.9 Compiling wyz v0.5.1 Compiling csv v1.3.1 Compiling is-wsl v0.4.0 Compiling scroll v0.11.0 Compiling hmac v0.9.0 Compiling secret-service v3.1.0 Compiling near_schemafy_lib v0.7.0 Compiling crossterm v0.25.0 Compiling unicode-normalization v0.1.22 Compiling dirs v5.0.1 Compiling hashbrown v0.14.5 Compiling color-eyre v0.6.3 Compiling debugid v0.7.3 Compiling near-token v0.2.1 Compiling tempfile v3.19.1 Compiling term v0.7.0 Compiling brownstone v1.1.0 Compiling fuzzy-matcher v0.3.7 Compiling fxhash v0.2.1 Compiling linux-keyutils v0.2.4 Compiling is-terminal v0.4.16 Compiling memmap2 v0.5.10 Compiling prettyplease v0.1.25 Compiling scroll v0.10.2 Compiling shell-escape v0.1.5 Compiling names v0.14.0 Compiling smawk v0.3.2 Compiling indent_write v2.2.0 Compiling pathdiff v0.2.3 Compiling xml-rs v0.8.25 Compiling unicode-linebreak v0.1.5 Compiling bs58 v0.5.1 Compiling joinery v2.1.0 Compiling home v0.5.11 Compiling encode_unicode v1.0.0 Compiling funty v2.0.0 Compiling plain v0.2.3 Compiling goblin v0.5.4 Compiling bitvec v1.0.1 Compiling prettytable v0.10.0 Compiling elementtree v0.7.0 Compiling nom-supreme v0.6.0 Compiling textwrap v0.16.2 Compiling open v5.3.2 Compiling pdb v0.7.0 Compiling symbolic-common v8.8.0 Compiling keyring v2.3.3 Compiling inquire v0.7.5 Compiling wasmparser v0.211.1 Compiling bip39 v2.1.0 Compiling shellexpand v3.1.0 Compiling near-abi-client-impl v0.1.1 Compiling slipped10 v0.4.6 Compiling toml v0.8.20 Compiling tracing-indicatif v0.3.9 Compiling gimli v0.26.2 Compiling near-gas v0.2.5 Compiling zip v0.5.13 Compiling env_filter v0.1.3 Compiling linked-hash-map v0.5.6 Compiling cargo-platform v0.1.9 Compiling smart-default v0.7.1 Compiling jiff v0.2.5 Compiling wasmparser v0.83.0 Compiling near-sdk-macros v5.11.0 Compiling lazycell v1.3.0 Compiling shell-words v1.1.0 Compiling easy-ext v1.0.2 Compiling near-sandbox-utils v0.9.0 Compiling dmsort v1.0.2 Compiling symbolic-debuginfo v8.8.0 Compiling env_logger v0.11.7 Compiling cargo_metadata v0.18.1 Compiling near-abi-client-macros v0.1.1 Compiling near-workspaces v0.11.1 Compiling strum_macros v0.26.4 Compiling jsonptr v0.4.7 Compiling colored v2.2.0 Compiling atty v0.2.14 Compiling libloading v0.8.6 Compiling near-sandbox-utils v0.14.0 Compiling strum v0.26.3 Compiling convert_case v0.5.0 Compiling dunce v1.0.5 Compiling near-abi-client v0.1.1 Compiling json-patch v2.0.0 Compiling uuid v1.16.0 Compiling tokio-retry v0.3.0 Compiling near-gas v0.3.0 Compiling near-token v0.3.0 Compiling near-sys v0.2.2 Compiling fable_library_rust v0.1.0 (/home/runner/work/polyglot/spiral/deps/polyglot/lib/rust/fable/fable_modules/fable-library-rust) Compiling near-sdk v5.11.0 Compiling crypto-hash v0.3.4 Compiling cargo-util v0.1.2 Compiling tokio-native-tls v0.3.1 Compiling hyper-tls v0.6.0 Compiling reqwest v0.12.15 Compiling near-jsonrpc-client v0.10.1 Compiling near-socialdb-client v0.3.2 Compiling near-cli-rs v0.11.1 Compiling cargo-near v0.6.4 Compiling spiral_wasm v0.0.1 (/home/runner/work/polyglot/spiral/apps/wasm) Finished `release` profile [optimized] target(s) in 4m 30s
In [ ]:
{ pwsh ../lib/math/build.ps1 } | Invoke-Block
00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "math.dib", "--retries", "5"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/lib/math/math.dib", "--output-path", "/home/runner/work/polyglot/polyglot/lib/math/math.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/lib/math/math.dib" --output-path "/home/runner/work/polyglot/polyglot/lib/math/math.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None; stderr = true } } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ # math > > ── spiral ────────────────────────────────────────────────────────────────────── > open testing > open rust.rust_operators > open rust > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## complex > > ── spiral ────────────────────────────────────────────────────────────────────── > nominal complex t = > `( > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; > Fable.Core.Emit(\"num_complex::Complex<$0>\")>]]\n#endif\ntype > num_complex_Complex<'T> = class end" > $'' : $'num_complex_Complex<`t>' > ) > > inl complex forall t. ((re : t), (im : t)) : complex t = > !\\((re, im), $'"num_complex::Complex::new($0, $1)"') > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -d num-complex > > complex (0f64, 0f64) > |> sm'.format' > |> sm'.from_std_string > |> _assert_eq "0+0i" > > ── [ 11.77s - return value ] ─────────────────────────────────────────────────── > │ { name = __assert_eq; actual = 0+0i; expected = 0+0i } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## re > > ── spiral ────────────────────────────────────────────────────────────────────── > inl re forall t. (c : complex t) : t = > !\\(c, $'"$0.re"') > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## im > > ── spiral ────────────────────────────────────────────────────────────────────── > inl im forall t. (c : complex t) : t = > !\\(c, $'"$0.im"') > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## complex_unbox > > ── spiral ────────────────────────────────────────────────────────────────────── > inl complex_unbox forall t. (c : complex t) = > re c, im c > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## (~.^) > > ── spiral ────────────────────────────────────────────────────────────────────── > inl (~.^) c = complex c > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## complex_eq > > ── spiral ────────────────────────────────────────────────────────────────────── > inl complex_eq forall t. (a : complex t) (b : complex t) : bool = > !\\((a, b), $'"$0 == $1"') > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## (.=) > > ── spiral ────────────────────────────────────────────────────────────────────── > inl (.=) a b = complex_eq a b > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## equable complex > > ── spiral ────────────────────────────────────────────────────────────────────── > instance equable complex t = complex_eq > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## complex_add > > ── spiral ────────────────────────────────────────────────────────────────────── > inl complex_add forall t. (a : complex t) (b : complex t) : complex t = > !\\((a, b), $'"$0 + $1"') > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## (.+) > > ── spiral ────────────────────────────────────────────────────────────────────── > inl (.+) a b = complex_add a b > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## complex_sub > > ── spiral ────────────────────────────────────────────────────────────────────── > inl complex_sub forall t. (a : complex t) (b : complex t) : complex t = > !\\((a, b), $'"$0 - $1"') > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## (.-) > > ── spiral ────────────────────────────────────────────────────────────────────── > inl (.-) a b = complex_sub a b > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## complex_mult > > ── spiral ────────────────────────────────────────────────────────────────────── > inl complex_mult forall t. (a : complex t) (b : complex t) : complex t = > !\\((a, b), $'"$0 * $1"') > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## (.*) > > ── spiral ────────────────────────────────────────────────────────────────────── > inl (.*) a b = complex_mult a b > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## complex_div > > ── spiral ────────────────────────────────────────────────────────────────────── > inl complex_div forall t. (a : complex t) (b : complex t) : complex t = > !\\((a, b), $'"$0 / $1"') > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## (./) > > ── spiral ────────────────────────────────────────────────────────────────────── > inl (./) a b = complex_div a b > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## powc > > ── spiral ────────────────────────────────────────────────────────────────────── > inl powc forall t. (s : complex t) (c : complex t) : complex t = > !\\((c, s), $'"num_complex::Complex::powc($0, $1)"') > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## (.**) > > ── spiral ────────────────────────────────────────────────────────────────────── > inl (.**) a b = powc b a > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## complex_sin > > ── spiral ────────────────────────────────────────────────────────────────────── > inl complex_sin forall t. (c : complex t) : complex t = > !\\(c, $'"$0.sin()"') > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## conj > > ── spiral ────────────────────────────────────────────────────────────────────── > inl conj forall t. (c : complex t) : complex t = > !\\(c, $'"$0.conj()"') > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## zeta > > ── spiral ────────────────────────────────────────────────────────────────────── > inl zeta log (gamma : complex f64 -> complex f64) (s : complex f64) : complex > f64 = > // inl rec zeta count gamma s = > inl rec zeta forall t {number}. > (count : t) > (gamma : complex f64 -> complex f64) > (s : complex f64) > : complex f64 > = > if log then > !\\((count, s), $'"println\!(\\\"zeta / count: {:?} / s: {:?}\\\", > $0, $1)"') > if re s > 1 then > (.^(0, 0), (am.init 10000i32 id : a i32 _)) > ||> am.fold fun acc n => > acc .+ (.^(1, 0) ./ (.^(f64 n, 0) .** s)) > else > inl gamma_term = gamma (.^(1, 0) .- s) > inl sin_term = .^(pi, 0) .* s ./ .^(2, 0) |> complex_sin > inl one_minus_s = .^(1 - re s, -(im s)) > inl mirror_term = > if re one_minus_s <= 1 > then .^(0, 0) > else > if count <= 3 > then zeta (count + 1) gamma one_minus_s > else one_minus_s > inl reflection_formula = > .^(2, 0) .* (.^(pi, 0) .** s) .* sin_term .* gamma_term .* > mirror_term > reflection_formula > join zeta 0i32 gamma s > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## bound > > ── spiral ────────────────────────────────────────────────────────────────────── > nominal bound t = > `( > backend_switch `(()) `({}) { > Fsharp = (fun () => > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; > Fable.Core.Emit(\"pyo3::Bound<$0>\")>]]\n#endif\ntype pyo3_Bound<'T> = class > end" > ) : () -> () > } > $'' : $'pyo3_Bound<`t>' > ) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## python > > ── spiral ────────────────────────────────────────────────────────────────────── > nominal python = > `( > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; > Fable.Core.Emit(\"pyo3::Python\")>]]\n#endif\ntype pyo3_Python = class end" > $'' : $'pyo3_Python' > ) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## pymodule > > ── spiral ────────────────────────────────────────────────────────────────────── > nominal pymodule = > `( > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; > Fable.Core.Emit(\"pyo3::types::PyModule\")>]]\n#endif\ntype pyo3_types_PyModule > = class end" > $'' : $'pyo3_types_PyModule' > ) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## pyany > > ── spiral ────────────────────────────────────────────────────────────────────── > nominal pyany = > `( > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; > Fable.Core.Emit(\"pyo3::PyAny\")>]]\n#endif\ntype pyo3_PyAny = class end" > $'' : $'pyo3_PyAny' > ) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## pyerr > > ── spiral ────────────────────────────────────────────────────────────────────── > nominal pyerr = > `( > global "#if FABLE_COMPILER\n[[<Fable.Core.Erase; > Fable.Core.Emit(\"pyo3::PyErr\")>]]\n#endif\ntype pyo3_PyErr = class end" > $'' : $'pyo3_PyErr' > ) > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## eval > > ── spiral ────────────────────────────────────────────────────────────────────── > inl module_from_code (py : python) (code : string) : _ (bound pymodule) _ = > inl py = join py > inl code = code |> sm'.to_std_string |> sm'.new_c_string > inl empty = "" |> sm'.to_std_string |> sm'.new_c_string > !\\(code, $'"pyo3::types::PyModule::from_code(!py, &$0, &!empty, &!empty)"') > |> resultm.map_error'' fun (x : pyerr) => x |> sm'.format' > > inl use_pyanymethods () = > global "Fable.Core.RustInterop.emitRustExpr () \");\nuse > pyo3::prelude::PyAnyMethods;\n//\"" > > inl getattr (attr : string) (module : bound pymodule) : _ (bound pyany) _ = > inl attr = join attr > inl attr = attr |> sm'.as_str > inl module = join module > use_pyanymethods () > !\\(attr, $'"!module.getattr($0)"') > |> resultm.map_error'' fun (x : pyerr) => x |> sm'.format' > > inl call forall t. (args : t) (module : bound pyany) : _ (bound pyany) _ = > inl args = join args > inl module = join module > !\($'"pyo3::prelude::PyAnyMethods::call(&!module, ((*!args).0, *(*!args).1), > None)"') > |> resultm.map_error'' fun (x : pyerr) => x |> sm'.format' > > inl extract forall t. (result : bound pyany) : _ t _ = > inl result = join result > use_pyanymethods () > !\($'"!result.extract()"') > |> resultm.map_error'' fun (x : pyerr) => x |> sm'.format' > > inl eval py code (args : pair bool (pair f64 f64)) : _ (_ f64) sm'.std_string = > inl code = > code > |> module_from_code py > |> resultm.unwrap' > inl fn = > code > |> getattr "fn" > |> resultm.unwrap' > > fn > |> call args > |> resultm.try' > |> extract > |> resultm.try' > |> complex > |> Ok > |> resultm.box > > inl call1_ log py s code = > inl code = join (a code : _ i32 _) |> sm'.concat_array "\n" > > inl s = new_pair (re s) (im s) > inl args = new_pair log s > > eval py code args > > inl call1_ log name py s line = > inl s = join s > join > ;[[ > $'$"import sys"' > $'$"import traceback"' > $'$"import re"' > $'$"count = 0"' > $'$"memory_address_pattern = re.compile(r\' at 0x[[0-9a-fA-F]]+\')"' > $'$"def trace_calls(frame, event, arg):"' > $'$" global count"' > $'$" count += 1"' > $'$" if count < 200:"' > $'$" try:"' > $'$" args = {{ k: v for k, v in frame.f_locals.items() if > frame.f_code.co_name \!= \'make_mpc\' and k not in [[\'ctx\']] and not > callable(v) }}"' > $'$" args_str = \', \'.join([[ > f\\\"{{k}}={{re.sub(memory_address_pattern, \' at 0x<?>\', repr(v))}}\\\" for k, > v in args.items() ]])"' > $'$" print(f\\\"{{event}}({!name}) / f_code.co_name: > {{frame.f_code.co_name}} / f_locals: {{args_str}} / f_lineno: {{frame.f_lineno}} > / f_code.co_filename: > {{frame.f_code.co_filename.split(\'site-packages\')[[-1]]}} / f_back.f_lineno: > {{ \'\' if frame.f_back is None else frame.f_back.f_lineno }} / > f_back.f_code.co_filename: {{ \'\' if frame.f_back is None else > frame.f_back.f_code.co_filename.split(\'site-packages\')[[-1]] }} / arg: > {{re.sub(memory_address_pattern, \' at 0x<?>\', repr(arg))}}\\\", flush=True)"' > $'$" except ValueError as e:"' > $'$" print(f\'{!name} / e: {{e}}\', flush=True)"' > $'$" return trace_calls"' > $'$"import mpmath"' > $'$"def fn(log, s):"' > $'$" global count"' > $'$" if log:"' > $'$" print(f\'{!name} / s: {{s}} / count: {{count}}\', > flush=True)"' > $'$" s = complex(*s)"' > $'$" try:"' > $'$" if log: sys.settrace(trace_calls)"' > line > $'$" if log:"' > $'$" sys.settrace(None)"' > $'$" print(f\'{!name} / result: {{s}} / count: > {{count}}\', flush=True)"' > $'$" except ValueError as e:"' > $'$" if s.real == 1:"' > $'$" s = complex(float(\'inf\'), 0)"' > $'$" return (s.real, s.imag)"' > ]] > |> call1_ log py s > > inl gamma_ log py s = > call1_ log "gamma_" py s $'$" s = mpmath.gamma(s)"' > > inl zeta_ log py s = > call1_ log "zeta_" py s $'$" s = mpmath.zeta(s)"' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## run_test > > ── spiral ────────────────────────────────────────────────────────────────────── > inl run_test log (fn : (complex f64 -> complex f64) * (complex f64 -> complex > f64) -> ()) = > inl fn_ (py : python) : resultm.result' () pyerr = > inl nan () = > !\($'"f64::NAN"') > inl gamma__ = fun (s : complex f64) => > inl result = gamma_ log py s > if log then > inl s = join s > !\($'"println\!(\\\"gamma__ / s: {:?} / result: {:?}\\\", !s, > !result)"') > result |> resultm.ok' |> optionm'.unbox |> optionm'.default_value > .^(nan (), nan ()) > inl zeta__ = fun (s : complex f64) => > inl result = zeta_ log py s > > inl z = zeta true gamma__ s > > if log then > inl s = join s > !\($'"println\!(\\\"zeta__ / s: {:?} / result: {:?} / z: > {:?}\\\", !s, !result, !z)"') > > // re result - re x |> abs > // |> _assert_lt 0.001 > > // im result - im x |> abs > // |> _assert_lt 0.001 > > result |> resultm.ok' |> optionm'.unbox |> optionm'.default_value > .^(nan (), nan ()) > join fn (zeta__, gamma__) > > Ok () > |> resultm.box > > join > !\($'"pyo3::prepare_freethreaded_python()"') : () > > !\($'"let __run_test = pyo3::Python::with_gil(|py| -> pyo3::PyResult<()> > { //"') > > let x' = fn_ (!\($'"py"') : python) > inl x' = join x' > > inl closure_fix = 2u8, 1u8 > x' |> rust.fix_closure closure_fix > > (!\($'"__run_test"') : _ () pyerr) > |> resultm.unwrap' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## test_zeta_at_known_values_ > > ── spiral ────────────────────────────────────────────────────────────────────── > inl test_zeta_at_known_values_ log = run_test log fun zeta, gamma => > ;[[ > .^(2, 0), pi ** 2 / 6 > .^(-1, 0), -1 / 12 > ]] > |> fun x => a x : _ i32 _ > |> am.iter fun s, e => > inl result = zeta s > > result |> im |> _assert_eq 0 > re result - e |> abs |> _assert_lt 0.0001 > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -d num-complex pyo3 > > test_zeta_at_known_values_ true > > ── [ 15.89s - return value ] ─────────────────────────────────────────────────── > │ zeta_ / s: (2.0, 0.0) / count: 0 > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, > derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, > derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), > kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename: > /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename: > /mpmath/functions/zeta.py / arg: None > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), > kwargs={}, name='zeta' / f_linen... f_code.co_filename: /mpmath/ctx_mp_python.py > / f_back.f_lineno: 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / > arg: None > │ line(gamma_) / f_code.co_name: make_mpc / f_locals: / > f_lineno: 604 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: > 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None > │ line(gamma_) / f_code.co_name: make_mpc / f_locals: / > f_lineno: 605 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: > 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None > │ return(gamma_) / f_code.co_name: make_mpc / f_locals: / > f_lineno: 605 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: > 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: > mpc(real='1.0', imag='0.0') > │ return(gamma_) / f_code.co_name: f / f_locals: > x=mpc(real='2.0', imag='0.0'), kwargs={}, name='gamma', prec=53, rounding='n' / > f_lineno: 1007 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: > 25 / f_back.f_code.co_filename: / arg: mpc(real='1.0', imag='0.0') > │ gamma_ / result: (1.0 + 0.0j) / count: 140 > │ gamma__ / s: Complex { re: 2.0, im: 0.0 } / result: > Ok(Complex { re: 1.0, im: 0.0 }) > │ zeta / count: 1 / s: Complex { re: 2.0, im: -0.0 } > │ zeta__ / s: Complex { re: -1.0, im: 0.0 } / result: > Ok(Complex { re: -0.08333333333333333, im: 0.0 }) / z: Complex { re: NaN, im: > NaN } > │ { name = __assert_eq; actual = +0.000000; expected = > +0.000000 } > │ { name = __assert_lt; actual = +0.000000; expected = > +0.000100 } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## test_zeta_at_2_minus2 > > ── spiral ────────────────────────────────────────────────────────────────────── > inl test_zeta_at_2_minus2 log = run_test log fun zeta, gamma => > inl s = .^(2, -2) > inl result = zeta s > > (re result - 0.8673) |> abs |> _assert_lt 0.001 > (im result - 0.2750) |> abs |> _assert_lt 0.001 > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -d num-complex pyo3 > > test_zeta_at_2_minus2 true > > ── [ 7.02s - return value ] ──────────────────────────────────────────────────── > │ zeta_ / s: (2.0, -2.0) / count: 0 > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1, > derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1, > derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1, > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1, > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2-2j), a=1, > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2-2j), > kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename: > /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename: > /mpmath/functions/zeta.py / arg: None > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2-2j), > kwargs={}, name='zeta' / f_line... None > │ call(zeta_) / f_code.co_name: python_bitcount / f_locals: n=2 > / f_lineno: 91 / f_code.co_filename: /mpmath/libmp/libintmath.py / > f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg: > None > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: n=2 > / f_lineno: 93 / f_code.co_filename: /mpmath/libmp/libintmath.py / > f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg: > None > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: > n=2, bc=2 / f_lineno: 94 / f_code.co_filename: /mpmath/libmp/libintmath.py / > f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg: > None > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: > n=2, bc=2 / f_lineno: 95 / f_code.co_filename: /mpmath/libmp/libintmath.py / > f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg: > None > │ return(zeta_) / f_code.co_name: python_bitcount / f_locals: > n=2, bc=2 / f_lineno: 95 / f_code.co_filename: /mpmath/libmp/libintmath.py / > f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg: > 2 > │ zeta_ / result: (0.867351829635993 + 0.275127238807858j) / > count: 1812 > │ zeta / count: 0 / s: Complex { re: 2.0, im: -2.0 } > │ zeta__ / s: Complex { re: 2.0, im: -2.0 } / result: > Ok(Complex { re: 0.8673518296359931, im: 0.27512723880785767 }) / z: Complex { > re: NaN, im: NaN } > │ { name = __assert_lt; actual = +0.000052; expected = > +0.001000 } > │ { name = __assert_lt; actual = +0.000127; expected = > +0.001000 } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## test_trivial_zero_at_negative_even___ > > ── spiral ────────────────────────────────────────────────────────────────────── > inl test_trivial_zero_at_negative_even___ log = run_test log fun zeta, gamma => > (join listm'.init_series -2f64 -40 -2) > |> listm.iter fun n => > inl s = .^(n, 0) > inl result = zeta s > > result |> re |> _assert_eq 0 > result |> im |> _assert_eq 0 > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -d num-complex pyo3 > > test_trivial_zero_at_negative_even___ true > > ── [ 7.54s - return value ] ──────────────────────────────────────────────────── > │ zeta_ / s: (-2.0, 0.0) / count: 0 > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), > a=1, derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), > a=1, derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(-2+0j), > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / arg: None > │ call(zeta_) / f_code.co_name: f / f_locals: x=(-2+0j), > kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename: > /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename: > /mpmath/functions/zeta.py / arg: None > │ line(zeta_) / f_code.co_name: f / f_locals: x=(-2+0j), > kwargs={}, name='zeta' /...neno: 1007 / f_back.f_code.co_filename: > /mpmath/ctx_mp_python.py / arg: None > │ line(gamma_) / f_code.co_name: make_mpc / f_locals: / > f_lineno: 604 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: > 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None > │ line(gamma_) / f_code.co_name: make_mpc / f_locals: / > f_lineno: 605 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: > 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None > │ return(gamma_) / f_code.co_name: make_mpc / f_locals: / > f_lineno: 605 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: > 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: > mpc(real='8.1591528324789768e+47', imag='0.0') > │ return(gamma_) / f_code.co_name: f / f_locals: > x=mpc(real='41.0', imag='0.0'), kwargs={}, name='gamma', prec=53, rounding='n' / > f_lineno: 1007 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: > 25 / f_back.f_code.co_filename: / arg: mpc(real='8.1591528324789768e+47', > imag='0.0') > │ gamma_ / result: (8.15915283247898e+47 + 0.0j) / count: 149 > │ gamma__ / s: Complex { re: 41.0, im: 0.0 } / result: > Ok(Complex { re: 8.159152832478977e47, im: 0.0 }) > │ zeta / count: 1 / s: Complex { re: 41.0, im: -0.0 } > │ zeta__ / s: Complex { re: -40.0, im: 0.0 } / result: > Ok(Complex { re: 0.0, im: 0.0 }) / z: Complex { re: NaN, im: NaN } > │ { name = __assert_eq; actual = +0.000000; expected = > +0.000000 } > │ { name = __assert_eq; actual = +0.000000; expected = > +0.000000 } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## test_non_trivial_zero___ > > ── spiral ────────────────────────────────────────────────────────────────────── > inl test_non_trivial_zero___ log = run_test log fun zeta, gamma => > ;[[ > .^(0.5, 14.134725) > .^(0.5, 21.022040) > .^(0.5, 25.010857) > .^(0.5, 30.424876) > .^(0.5, 32.935062) > .^(0.5, 37.586178) > ]] > |> fun x => a x : _ i32 _ > |> am.iter fun x => > inl result = zeta x > result |> re |> abs |> _assert_lt 0.0001 > result |> im |> abs |> _assert_lt 0.0001 > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -d num-complex pyo3 > > test_non_trivial_zero___ true > > ── [ 7.28s - return value ] ──────────────────────────────────────────────────── > │ zeta_ / s: (0.5, 14.134725) / count: 0 > │ call(zeta_) / f_code.co_name: zeta / f_locals: > s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={} / f_lineno: 528 / > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: > s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={} / f_lineno: 530 / > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: > s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: > 531 / f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: > s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: > 532 / f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: > s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: > 533 / f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / arg: None > │ call(zeta_) / f_code.co_name: f / f_locals: > x=(0.5+14.134725j), kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename: > /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename: > /mpmath/functions/zeta.py / arg: None > │ line(zeta_) / f_code...None > │ line(gamma_) / f_code.co_name: complex_stirling_series / > f_locals: x=1208925819614629174706176, y=-90877802089662679288381440, prec=81, > _m=3416353708500640443578529333, tre=855591523614410863719, > tim=64316830603724894628746, ure=-1710577520534459139249, > uim=45518868236127668552, sre=1013002518538853602038572, > sim=90883161825546323029600502 / f_lineno: 1637 / f_code.co_filename: > /mpmath/libmp/gammazeta.py / f_back.f_lineno: 2050 / f_back.f_code.co_filename: > /mpmath/libmp/gammazeta.py / arg: None > │ line(gamma_) / f_code.co_name: complex_stirling_series / > f_locals: x=1208925819614629174706176, y=-90877802089662679288381440, prec=81, > _m=3416353708500640443578529333, tre=-1816151534455075068, > tim=-45486653225747820096, ure=-1710577520534459139249, > uim=45518868236127668552, sre=1013002518538853602038572, > sim=90883161825546323029600502 / f_lineno: 1638 / f_code.co_filename: > /mpmath/libmp/gammazeta.py / f_back.f_lineno: 2050 / f_back.f_code.co_filename: > /mpmath/libmp/gammazeta.py / arg: None > │ gamma_ / result: (-1.32798420042152e-26 + > 5.5751975252688e-26j) / count: 309 > │ gamma__ / s: Complex { re: 0.5, im: -37.586178 } / result: > Ok(Complex { re: -1.3279842004215153e-26, im: 5.575197525268802e-26 }) > │ zeta__ / s: Complex { re: 0.5, im: 37.586178 } / result: > Ok(Complex { re: -8.910186507947958e-8, im: -2.943780446402868e-7 }) / z: > Complex { re: -0.0, im: 0.0 } > │ { name = __assert_lt; actual = +0.000000; expected = > +0.000100 } > │ { name = __assert_lt; actual = +0.000000; expected = > +0.000100 } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## test_real_part_greater_than_one___ > > ── spiral ────────────────────────────────────────────────────────────────────── > inl test_real_part_greater_than_one___ log = run_test log fun zeta, gamma => > inl points = ;[[ 2; 3; 4; 5; 10; 20; 50 ]] > (a points : _ i32 _) > |> am.iter fun point => > inl s = .^(point, 0) > inl result = zeta s > result |> re |> _assert_gt 0 > result |> im |> _assert_eq 0 > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -d num-complex pyo3 > > test_real_part_greater_than_one___ true > > ── [ 7.15s - return value ] ──────────────────────────────────────────────────── > │ zeta_ / s: (2.0, 0.0) / count: 0 > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, > derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, > derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), > kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename: > /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename: > /mpmath/functions/zeta.py / arg: None > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), > kwargs={}, name='zeta' / f_linen..._mp_python.py / f_back.f_lineno: 1007 / > f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None > │ line(zeta_) / f_code.co_name: make_mpc / f_locals: / > f_lineno: 605 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: > 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None > │ return(zeta_) / f_code.co_name: make_mpc / f_locals: / > f_lineno: 605 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: > 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: > mpc(real='1.0000000000000009', imag='0.0') > │ return(zeta_) / f_code.co_name: f / f_locals: > x=mpc(real='50.0', imag='0.0'), kwargs={}, name='zeta', prec=53, rounding='n' / > f_lineno: 1007 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: > 533 / f_back.f_code.co_filename: /mpmath/functions/zeta.py / arg: > mpc(real='1.0000000000000009', imag='0.0') > │ return(zeta_) / f_code.co_name: zeta / f_locals: s=(50+0j), > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / arg: mpc(real='1.0000000000000009', imag='0.0') > │ zeta_ / result: (1.0 + 0.0j) / count: 181 > │ zeta / count: 0 / s: Complex { re: 50.0, im: 0.0 } > │ zeta__ / s: Complex { re: 50.0, im: 0.0 } / result: > Ok(Complex { re: 1.0000000000000009, im: 0.0 }) / z: Complex { re: NaN, im: NaN > } > │ { name = __assert_gt; actual = +1.000000; expected = > +0.000000 } > │ { name = __assert_eq; actual = +0.000000; expected = > +0.000000 } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## test_zeta_at_1___ > > ── spiral ────────────────────────────────────────────────────────────────────── > inl test_zeta_at_1___ log = run_test log fun zeta, gamma => > inl s = .^(1, 0) > inl result = zeta s > result |> re |> _assert_eq limit.max > result |> im |> _assert_eq 0 > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -d num-complex pyo3 > > test_zeta_at_1___ true > > ── [ 7.10s - return value ] ──────────────────────────────────────────────────── > │ zeta_ / s: (1.0, 0.0) / count: 0 > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1, > derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1, > derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1, > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1, > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(1+0j), a=1, > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ call(zeta_) / f_code.co_name: f / f_locals: x=(1+0j), > kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename: > /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename: > /mpmath/functions/zeta.py / arg: None > │ line(zeta_) / f_code.co_name: f / f_locals: x=(1+0j), > kwargs={}, name='zeta' / f_linen...) / f_code.co_name: f / f_locals: > x=mpc(real='0.0', imag='0.0'), kwargs={}, name='gamma', prec=53, rounding='n' / > f_lineno: 1007 / f_code.co_filename: /mpmath/ctx_mp_python.py / f_back.f_lineno: > 25 / f_back.f_code.co_filename: / arg: None > │ exception(gamma_) / f_code.co_name: fn / f_locals: log=True, > s=0j / f_lineno: 25 / f_code.co_filename: / f_back.f_lineno: / > f_back.f_code.co_filename: / arg: (<class 'ValueError'>, ValueError('gamma > function pole'), <traceback object at 0x<?>>) > │ line(gamma_) / f_code.co_name: fn / f_locals: log=True, s=0j > / f_lineno: 29 / f_code.co_filename: / f_back.f_lineno: / > f_back.f_code.co_filename: / arg: None > │ line(gamma_) / f_code.co_name: fn / f_locals: log=True, s=0j, > e=ValueError('gamma function pole') / f_lineno: 30 / f_code.co_filename: / > f_back.f_lineno: / f_back.f_code.co_filename: / arg: None > │ line(gamma_) / f_code.co_name: fn / f_locals: log=True, s=0j > / f_lineno: 32 / f_code.co_filename: / f_back.f_lineno: / > f_back.f_code.co_filename: / arg: None > │ return(gamma_) / f_code.co_name: fn / f_locals: log=True, > s=0j / f_lineno: 32 / f_code.co_filename: / f_back.f_lineno: / > f_back.f_code.co_filename: / arg: (0.0, 0.0) > │ gamma__ / s: Complex { re: 0.0, im: 0.0 } / result: > Ok(Complex { re: 0.0, im: 0.0 }) > │ zeta__ / s: Complex { re: 1.0, im: 0.0 } / result: Ok(Complex > { re: inf, im: 0.0 }) / z: Complex { re: 0.0, im: 0.0 } > │ { name = __assert_eq; actual = +inf; expected = +inf } > │ { name = __assert_eq; actual = +0.000000; expected = > +0.000000 } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## test_symmetry_across_real_axis___ > > ── spiral ────────────────────────────────────────────────────────────────────── > inl test_symmetry_across_real_axis___ log = run_test log fun zeta, gamma => > inl s = .^(2, 10) > inl result_positive_im = zeta s > inl result_negative_im = zeta .^(re s, -(im s)) > inl conj = result_negative_im |> conj > result_positive_im |> re |> _assert_eq (conj |> re) > result_positive_im |> im |> _assert_eq (conj |> im) > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -d num-complex pyo3 > > test_symmetry_across_real_axis___ true > > ── [ 7.07s - return value ] ──────────────────────────────────────────────────── > │ zeta_ / s: (2.0, 10.0) / count: 0 > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), > a=1, derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), > a=1, derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+10j), > a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / arg: None > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2+10j), > kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename: > /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename: > /mpmath/functions/zeta.py / arg: None > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2+10j), > kwargs={}, name='zeta' /...ack.f_lineno: 778 / f_back.f_code.co_filename: > /mpmath/libmp/libmpf.py / arg: None > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: > n=26, bc=5 / f_lineno: 94 / f_code.co_filename: /mpmath/libmp/libintmath.py / > f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg: > None > │ line(zeta_) / f_code.co_name: python_bitcount / f_locals: > n=26, bc=5 / f_lineno: 95 / f_code.co_filename: /mpmath/libmp/libintmath.py / > f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg: > None > │ return(zeta_) / f_code.co_name: python_bitcount / f_locals: > n=26, bc=5 / f_lineno: 95 / f_code.co_filename: /mpmath/libmp/libintmath.py / > f_back.f_lineno: 778 / f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg: > 5 > │ line(zeta_) / f_code.co_name: mpf_add / f_locals: s=(0, 1, 2, > 1), t=(0, 25, 2, 5), prec=14, rnd='d', _sub=0, ssign=0, sman=1, sexp=2, sbc=1, > tsign=0, tman=25, texp=2, tbc=5, offset=0, man=26, bc=5 / f_lineno: 779 / > f_code.co_filename: /mpmath/libmp/libmpf.py / f_back.f_lineno: 1401 / > f_back.f_code.co_filename: /mpmath/libmp/libmpf.py / arg: None > │ zeta_ / result: (1.19798250067418 + 0.0791704917205257j) / > count: 1174 > │ zeta / count: 0 / s: Complex { re: 2.0, im: -10.0 } > │ zeta__ / s: Complex { re: 2.0, im: -10.0 } / result: > Ok(Complex { re: 1.1979825006741847, im: 0.07917049172052575 }) / z: Complex { > re: NaN, im: NaN } > │ { name = __assert_eq; actual = +1.197983; expected = > +1.197983 } > │ { name = __assert_eq; actual = -0.079170; expected = > -0.079170 } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## test_behavior_near_origin___ > > ── spiral ────────────────────────────────────────────────────────────────────── > inl test_behavior_near_origin___ log = run_test log fun zeta, gamma => > inl s = .^(0.01, 0.01) > inl result = zeta s > result |> re |> _assert_lt limit.max > result |> im |> _assert_lt limit.max > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -d num-complex pyo3 > > test_behavior_near_origin___ true > > ── [ 7.01s - return value ] ──────────────────────────────────────────────────── > │ zeta_ / s: (0.01, 0.01) / count: 0 > │ call(zeta_) / f_code.co_name: zeta / f_locals: > s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={} / f_lineno: 528 / > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: > s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={} / f_lineno: 530 / > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: > s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: > s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: > s=(0.01+0.01j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / arg: None > │ call(zeta_) / f_code.co_name: f / f_locals: x=(0.01+0.01j), > kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename: > /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename: > /mpmath/functions/zeta.py / arg: None > │ line(zeta_) / f_code.co_name: f / f_locals: x=(0.../ > f_back.f_lineno: 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / > arg: None > │ line(gamma_) / f_code.co_name: mpc_gamma / f_locals: z=((0, > 4458563631096791, -52, 52), (1, 5764607523034235, -59, 53)), prec=53, rnd='n', > type=0, a=(0, 4458563631096791, -52, 52), b=(1, 5764607523034235, -59, 53), > asign=0, aman=4458563631096791, aexp=-52, abc=52, bsign=1, > bman=5764607523034235, bexp=-59, bbc=53, wp=73, amag=0, bmag=-6, mag=0, an=0, > bn=0, absn=0j, gamma_size=0, need_reflection=0, zorig=((0, 4458563631096791, > -52, 52), (1, 5764607523034235, -59, 53)), yfinal=0, balance_prec=0, > n_for_stirling=14, need_reduction=True, afix=132131814190692672995328, > bfix=-94447329657392906240, r=0, zprered=((0, 4458563631096791, -52, 52), (1, > 5764607523034235, -59, 53)), d=14, rre=56942610883563778729574216337150, > one=9444732965739290427392, rim=-1820461636508155576115177658065, k=12 / > f_lineno: 2043 / f_code.co_filename: /mpmath/libmp/gammazeta.py / > f_back.f_lineno: 1007 / f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / > arg: None > │ gamma_ / result: (1.00577030202902 + 0.0059717824054102j) / > count: 383 > │ gamma__ / s: Complex { re: 0.99, im: -0.01 } / result: > Ok(Complex { re: 1.005770302029023, im: 0.005971782405410201 }) > │ zeta__ / s: Complex { re: 0.01, im: 0.01 } / result: > Ok(Complex { re: -0.5091873433665667, im: -0.00939202213994577 }) / z: Complex { > re: 0.0, im: 0.0 } > │ { name = __assert_lt; actual = -0.509187; expected = +inf } > │ { name = __assert_lt; actual = -0.009392; expected = +inf } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## test_imaginary_axis > > ── spiral ────────────────────────────────────────────────────────────────────── > inl test_imaginary_axis log = run_test log fun zeta, gamma => > (join [[ 10; 20; 30; 40; 50; 60; 70; 80; 90; 100 ]]) > |> listm.iter fun s => > inl s = .^(0, s) > inl result = zeta s > result |> re |> _assert_ne 0 > result |> im |> _assert_ne 0 > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -d num-complex pyo3 > > test_imaginary_axis true > > ── [ 7.41s - return value ] ──────────────────────────────────────────────────── > │ zeta_ / s: (0.0, 10.0) / count: 0 > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, > derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, > derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=10j, a=1, > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ call(zeta_) / f_code.co_name: f / f_locals: x=10j, kwargs={}, > name='zeta' / f_lineno: 989 / f_code.co_filename: /mpmath/ctx_mp_python.py / > f_back.f_lineno: 533 / f_back.f_code.co_filename: /mpmath/functions/zeta.py / > arg: None > │ line(zeta_) / f_code.co_name: f / f_locals: x=10j, kwargs={}, > name='zeta' / f_lineno: 990 / f_code.co_f...a_) / f_code.co_name: to_fixed / > f_locals: s=(0, 1, 0, 1), prec=83 / f_lineno: 511 / f_code.co_filename: > /mpmath/libmp/libmpf.py / f_back.f_lineno: 2031 / f_back.f_code.co_filename: > /mpmath/libmp/gammazeta.py / arg: None > │ line(gamma_) / f_code.co_name: to_fixed / f_locals: s=(0, 1, > 0, 1), prec=83, sign=0, man=1, exp=0, bc=1 / f_lineno: 512 / f_code.co_filename: > /mpmath/libmp/libmpf.py / f_back.f_lineno: 2031 / f_back.f_code.co_filename: > /mpmath/libmp/gammazeta.py / arg: None > │ line(gamma_) / f_code.co_name: to_fixed / f_locals: s=(0, 1, > 0, 1), prec=83, sign=0, man=1, exp=0, bc=1, offset=83 / f_lineno: 513 / > f_code.co_filename: /mpmath/libmp/libmpf.py / f_back.f_lineno: 2031 / > f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py / arg: None > │ line(gamma_) / f_code.co_name: to_fixed / f_locals: s=(0, 1, > 0, 1), prec=83, sign=0, man=1, exp=0, bc=1, offset=83 / f_lineno: 517 / > f_code.co_filename: /mpmath/libmp/libmpf.py / f_back.f_lineno: 2031 / > f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py / arg: None > │ gamma_ / result: (-1.51425318049776e-67 + > 2.79082155561748e-69j) / count: 289 > │ gamma__ / s: Complex { re: 1.0, im: -100.0 } / result: > Ok(Complex { re: -1.514253180497756e-67, im: 2.7908215556174775e-69 }) > │ zeta__ / s: Complex { re: 0.0, im: 100.0 } / result: > Ok(Complex { re: 6.51721042625301, im: 0.18128842533791736 }) / z: Complex { re: > 0.0, im: 0.0 } > │ { name = __assert_ne; actual = +6.517210; expected = > +0.000000 } > │ { name = __assert_ne; actual = +0.181288; expected = > +0.000000 } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## test_critical_strip > > ── spiral ────────────────────────────────────────────────────────────────────── > inl test_critical_strip log = run_test log fun zeta, gamma => > (join [[ > .^(0.5, 14.134725) > .^(0.75, 20.5) > .^(1.25, 30.1) > .^(0.25, 40.0) > .^(1.0, 50.0) > ]]) > |> listm.iter fun s => > inl result = zeta s > result |> re |> _assert_ne 0 > result |> im |> _assert_ne 0 > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -d num-complex pyo3 > > test_critical_strip true > > ── [ 7.15s - return value ] ──────────────────────────────────────────────────── > │ zeta_ / s: (0.5, 14.134725) / count: 0 > │ call(zeta_) / f_code.co_name: zeta / f_locals: > s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={} / f_lineno: 528 / > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: > s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={} / f_lineno: 530 / > f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: > s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: > 531 / f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: > s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: > 532 / f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: > s=(0.5+14.134725j), a=1, derivative=0, method=None, kwargs={}, d=0 / f_lineno: > 533 / f_code.co_filename: /mpmath/functions/zeta.py / f_back.f_lineno: 25 / > f_back.f_code.co_filename: / arg: None > │ call(zeta_) / f_code.co_name: f / f_locals: > x=(0.5+14.134725j), kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename: > /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename: > /mpmath/functions/zeta.py / arg: None > │ line(zeta_) / f_code...23535862290161314995 / f_lineno: 1648 > / f_code.co_filename: /mpmath/libmp/gammazeta.py / f_back.f_lineno: 2050 / > f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py / arg: None > │ line(gamma_) / f_code.co_name: complex_stirling_series / > f_locals: x=0, y=-241785163922925834941235200, prec=82, > _m=12089258196146291747061760000, tre=0, tim=396, ure=-1934281311383406679530, > uim=0, sre=4443714077719696485012210, sim=241793223535862290161314995 / > f_lineno: 1649 / f_code.co_filename: /mpmath/libmp/gammazeta.py / > f_back.f_lineno: 2050 / f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py / > arg: None > │ line(gamma_) / f_code.co_name: complex_stirling_series / > f_locals: x=0, y=-241785163922925834941235200, prec=82, > _m=12089258196146291747061760000, tre=0, tim=396, ure=-1934281311383406679530, > uim=0, sre=4443714077719696485012210, sim=241793223535862290161314997 / > f_lineno: 1650 / f_code.co_filename: /mpmath/libmp/gammazeta.py / > f_back.f_lineno: 2050 / f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py / > arg: None > │ gamma_ / result: (2.63173210619768e-35 - > 8.16464935465334e-36j) / count: 262 > │ gamma__ / s: Complex { re: 0.0, im: -50.0 } / result: > Ok(Complex { re: 2.6317321061976804e-35, im: -8.164649354653339e-36 }) > │ zeta__ / s: Complex { re: 1.0, im: 50.0 } / result: > Ok(Complex { re: 0.44103873082309397, im: 0.281582455029683 }) / z: Complex { > re: 0.0, im: 0.0 } > │ { name = __assert_ne; actual = +0.441039; expected = > +0.000000 } > │ { name = __assert_ne; actual = +0.281582; expected = > +0.000000 } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## test_reflection_formula_for_specific_value > > ── spiral ────────────────────────────────────────────────────────────────────── > inl test_reflection_formula_for_specific_value log = run_test log fun zeta, > gamma => > (join [[ > .^(3, 4) > .^(2.5, -3.5) > .^(1.5, 2.5) > .^(0.5, 14.134725) > ]]) > |> listm.iter fun s => > inl lhs = zeta s > inl reflection_coefficient = > (.^(2, 0) .** s) > .* (.^(pi, 0) .** (s .- .^(1, 0))) > .* (.^(pi, 0) .* s ./ .^(2, 0) |> complex_sin) > .* gamma (.^(1, 0) .- s) > > inl one_minus_s = .^(1 - re s, -(im s)) > inl rhs = reflection_coefficient .* zeta one_minus_s > > re lhs - re rhs |> abs |> _assert_lt 0.0001 > im lhs - im rhs |> abs |> _assert_lt 0.0001 > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -d num-complex pyo3 > > test_reflection_formula_for_specific_value true > > ── [ 7.38s - return value ] ──────────────────────────────────────────────────── > │ zeta_ / s: (3.0, 4.0) / count: 0 > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1, > derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1, > derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1, > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1, > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(3+4j), a=1, > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ call(zeta_) / f_code.co_name: f / f_locals: x=(3+4j), > kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename: > /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename: > /mpmath/functions/zeta.py / arg: None > │ line(zeta_) / f_code.co_name: f / f_locals: x=(3+4j), > kwargs={}, name='zeta' / f_linen... / f_code.co_filename: > /mpmath/libmp/gammazeta.py / f_back.f_lineno: 1007 / f_back.f_code.co_filename: > /mpmath/ctx_mp_python.py / arg: None > │ line(gamma_) / f_code.co_name: mpc_gamma / f_locals: z=((0, > 1, -1, 1), (0, 3978571390186527, -48, 52)), prec=53, rnd='n', type=0, a=(0, 1, > -1, 1), b=(0, 3978571390186527, -48, 52), asign=0, aman=1, aexp=-1, abc=1, > bsign=0, bman=3978571390186527, bexp=-48, bbc=52, wp=79, amag=0, bmag=4, mag=4, > an=0, bn=14, absn=14j, gamma_size=56, need_reflection=0, zorig=((0, 1, -1, 1), > (0, 3978571390186527, -48, 52)), yfinal=0, balance_prec=0, n_for_stirling=15, > need_reduction=True, afix=2115620184325601055735808, > bfix=8543917002826194402410496, r=0, zprered=((0, 1, -1, 1), (0, > 3978571390186527, -48, 52)), d=5, rre=-542313259704087430481959845, > one=604462909807314587353088, rim=-1657865507045117397880679064, k=2 / f_lineno: > 2043 / f_code.co_filename: /mpmath/libmp/gammazeta.py / f_back.f_lineno: 1007 / > f_back.f_code.co_filename: /mpmath/ctx_mp_python.py / arg: None > │ gamma_ / result: (-1.4455538437607e-10 - > 5.52278876877407e-10j) / count: 318 > │ gamma__ / s: Complex { re: 0.5, im: 14.134725 } / result: > Ok(Complex { re: -1.4455538437606964e-10, im: -5.522788768774066e-10 }) > │ zeta__ / s: Complex { re: 0.5, im: -14.134725 } / result: > Ok(Complex { re: 1.7674298413849186e-8, im: 1.1102028930923156e-7 }) / z: > Complex { re: 0.0, im: 0.0 } > │ { name = __assert_lt; actual = +0.000000; expected = > +0.000100 } > │ { name = __assert_lt; actual = +0.000000; expected = > +0.000100 } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## test_euler_product_formula > > ── spiral ────────────────────────────────────────────────────────────────────── > inl test_euler_product_formula log = run_test log fun zeta, gamma => > inl s_values = join [[ 2; 2.5; 3; 3.5; 4; 4.5; 5 ]] > inl primes = join [[ 2; 3; 5; 7; 11; 13; 17; 19; 23; 29; 31; 37; 41; 43; 47; > 53; 59; 61; 67; 71 ]] > s_values > |> listm.iter fun s_re => > inl s = .^(s_re, 0) > inl product = > (1, primes) > ||> listm.fold fun acc x => > acc * 1 / (1 - x ** -s_re) > > inl result = zeta s > re result - product |> abs |> _assert_lt 0.01 > result |> im |> _assert_lt 0.01 > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -d num-complex pyo3 > > test_euler_product_formula true > > ── [ 7.20s - return value ] ──────────────────────────────────────────────────── > │ zeta_ / s: (2.0, 0.0) / count: 0 > │ call(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, > derivative=0, method=None, kwargs={} / f_lineno: 528 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, > derivative=0, method=None, kwargs={} / f_lineno: 530 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 531 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 532 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ line(zeta_) / f_code.co_name: zeta / f_locals: s=(2+0j), a=1, > derivative=0, method=None, kwargs={}, d=0 / f_lineno: 533 / f_code.co_filename: > /mpmath/functions/zeta.py / f_back.f_lineno: 25 / f_back.f_code.co_filename: / > arg: None > │ call(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), > kwargs={}, name='zeta' / f_lineno: 989 / f_code.co_filename: > /mpmath/ctx_mp_python.py / f_back.f_lineno: 533 / f_back.f_code.co_filename: > /mpmath/functions/zeta.py / arg: None > │ line(zeta_) / f_code.co_name: f / f_locals: x=(2+0j), > kwargs={}, name='zeta' / f_linen..._code.co_filename: /mpmath/libmp/gammazeta.py > / arg: None > │ line(zeta_) / f_code.co_name: mpf_zeta_int / f_locals: s=5, > prec=53, rnd='n', wp=73, m=19.25, needed_terms=623488, n=33, d=[1, 2179, 792067, > 115062531, 8930212611, 429314925315, 13983537177347, 327666966438659, > 5764846406968067, 78615943485956867, 851604426176701187, 7470527451121689347, > 53898915046387983107, 323897845985013506819, 1638178356374090130179, > 7034281785235908174595, 25833609859980306522883, 81661917475887913739011, > 223448095548034217779971, 532029677981012660429571, 1108048631855905753375491, > 2029946562680066824315651, 3292927237466655352791811, 4769455369342763680768771, > 6235511670496346417767171, 7463408621503347142796035, 8322751284048216428487427, > 8818779962777819524211459, 9050689474911140452082435, 9136270117622166323831555, > 9160252037839493347779331, 9165045885455648617505539, 9165654628010081032708867, > 9165691521498228451812099], t=-84153986440240940095109733900764881301998910956, > k=26 / f_lineno: 954 / f_code.co_filename: /mpmath/libmp/gammazeta.py / > f_back.f_lineno: 985 / f_back.f_code.co_filename: /mpmath/libmp/gammazeta.py / > arg: None > │ zeta_ / result: (1.03692775514337 + 0.0j) / count: 228 > │ zeta / count: 0 / s: Complex { re: 5.0, im: 0.0 } > │ zeta__ / s: Complex { re: 5.0, im: 0.0 } / result: Ok(Complex > { re: 1.03692775514337, im: 0.0 }) / z: Complex { re: NaN, im: NaN } > │ { name = __assert_lt; actual = +0.000000; expected = > +0.010000 } > │ { name = __assert_lt; actual = +0.000000; expected = > +0.010000 } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## graph > > ── mermaid ───────────────────────────────────────────────────────────────────── > │ <div class="mermaidMarkdownContainer" > style="background-color:white"> > │ <link rel="stylesheet" > href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min.css" > > > │ <div > id="5bafbdcd0a37d73c9537431f21df3739beb7a90411d9002454eb71c9d9f37e56"></div> > │ <script type="module"> > │ > │ import mermaid from > 'https://cdn.jsdelivr.net/npm/mermaid@10.6.1/dist/mermaid.esm.min.mjs'; > │ let renderTarget = > document.getElementById('5bafbdcd0a37d73c9537431f21df3739beb7a90411d9002454eb71c > 9d9f37e56'); > │ try { > │ const {svg, bindFunctions} = await > mermaid.mermaidAPI.render( > │ > 'mermaid_5bafbdcd0a37d73c9537431f21df3739beb7a90411d9002454eb71c9d9f37e56', > │ `graph TD > │ zeta("zeta()") --> convert > │ zeta --> f["f()"] > │ f --> mpc_f["mpc_zeta()"] > │ f --> mpf_f["mpf_zeta()"] > │ convert --> from_float > │ from_float --> from_man_exp > │ from_man_exp --> python_bitcount > │ python_bitcount --> _normalize > │ _normalize --> make_mpc > │ make_mpc --> mpc_zeta["mpc_zeta()"] > │ mpc_zeta --> mpf_zeta["mpf_zeta()"] > │ mpf_zeta --> to_int > │ to_int --> mpf_zeta_int["mpf_zeta_int()"] > │ mpf_zeta_int --> borwein_coefficients > │ borwein_coefficients --> > from_man_exp_2("from_man_exp()") > │ from_man_exp_2 --> > python_bitcount_2("python_bitcount()") > │ python_bitcount_2 --> _normalize_2("_normalize()") > │ _normalize_2 --> make_mpc_2("make_mpc()") > │ make_mpc_2 --> stop_trace > │ mpf_zeta_int --> mpf_bernoulli > │ mpf_bernoulli --> bernoulli_size > │ bernoulli_size --> mpf_rdiv_int > │ mpf_rdiv_int --> python_bitcount_3("python_bitcount()") > │ python_bitcount_3 --> _normalize1 > │ _normalize1 --> from_man_exp_3("from_man_exp()") > │ from_man_exp_3 --> _normalize_3("_normalize()") > │ _normalize_3 --> mpf_sub > │ mpf_sub --> mpf_add > │ mpf_add --> mpf_neg > │ mpf_neg --> _normalize1_2("_normalize1()") > │ _normalize1_2 --> from_int > │ from_int --> mpf_div > │ mpf_div --> python_bitcount_4("python_bitcount()") > │ python_bitcount_4 --> _normalize1_3("_normalize1()") > │ _normalize1_3 --> make_mpc_3("make_mpc()") > │ make_mpc_3 --> final_stop["stop_trace()"]`); > │ renderTarget.innerHTML = svg; > │ bindFunctions?.(renderTarget); > │ } > │ catch (error) { > │ console.log(error); > │ } > │ </script> > │ </div> > │ > > ── mermaid ───────────────────────────────────────────────────────────────────── > │ <div class="mermaidMarkdownContainer" > style="background-color:white"> > │ <link rel="stylesheet" > href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min.css" > > > │ <div > id="aaf0666a42db8a3ac57b6ca8f8968b39ef22fac6162cb4bcaf08a38290a0f7b4"></div> > │ <script type="module"> > │ > │ import mermaid from > 'https://cdn.jsdelivr.net/npm/mermaid@10.6.1/dist/mermaid.esm.min.mjs'; > │ let renderTarget = > document.getElementById('aaf0666a42db8a3ac57b6ca8f8968b39ef22fac6162cb4bcaf08a38 > 290a0f7b4'); > │ try { > │ const {svg, bindFunctions} = await > mermaid.mermaidAPI.render( > │ > 'mermaid_aaf0666a42db8a3ac57b6ca8f8968b39ef22fac6162cb4bcaf08a38290a0f7b4', > │ `graph TD > │ zeta_rust("zeta() - Rust") --> num_traits("num-traits") > │ zeta_rust --> num_bigint("num-bigint") > │ zeta_rust --> rust_decimal("rust_decimal for > precision") > │ zeta_rust --> error_handling("Rust Error Handling") > │ > │ num_traits --> num_traits_usage("Use for common > traits") > │ num_bigint --> bigint_operations("Arbitrary-precision > arithmetic operations") > │ rust_decimal --> decimal_operations("High-precision > decimal operations") > │ error_handling --> result_type("Use Result<T, E> for > error handling") > │ > │ bigint_operations --> convert_rust("convert() - Rust") > │ bigint_operations --> normalize_rust("_normalize() - > Rust") > │ > │ convert_rust --> from_float_rust("from_float() - Rust") > │ from_float_rust --> from_man_exp_rust("from_man_exp() - > Rust") > │ from_man_exp_rust --> bitcount_rust("bitcount() - > Rust") > │ bitcount_rust --> normalize_rust > │ normalize_rust --> mpc_zeta_rust("mpc_zeta() - Rust") > │ mpc_zeta_rust --> mpf_zeta_rust("mpf_zeta() - Rust") > │ mpf_zeta_rust --> to_int_rust("to_int() - Rust") > │ to_int_rust --> mpf_zeta_int_rust("mpf_zeta_int() - > Rust") > │ > │ mpf_zeta_int_rust --> > borwein_coefficients_rust("borwein_coefficients() - Rust") > │ borwein_coefficients_rust --> > from_man_exp_rust_2("from_man_exp() - Rust") > │ from_man_exp_rust_2 --> bitcount_rust_2("bitcount() - > Rust") > │ bitcount_rust_2 --> normalize_rust_2("_normalize() - > Rust") > │ normalize_rust_2 --> make_mpc_rust("make_mpc() - Rust") > │ > │ mpf_zeta_int_rust --> > mpf_bernoulli_rust("mpf_bernoulli() - Rust") > │ mpf_bernoulli_rust --> > bernoulli_size_rust("bernoulli_size() - Rust") > │ bernoulli_size_rust --> > mpf_rdiv_int_rust("mpf_rdiv_int() - Rust") > │ mpf_rdiv_int_rust --> bitcount_rust_3("bitcount() - > Rust") > │ bitcount_rust_3 --> normalize1_rust("_normalize1() - > Rust") > │ normalize1_rust --> from_man_exp_rust_3("from_man_exp() > - Rust") > │ from_man_exp_rust_3 --> normalize_rust_3("_normalize() > - Rust") > │ normalize_rust_3 --> mpf_sub_rust("mpf_sub() - Rust") > │ mpf_sub_rust --> mpf_add_rust("mpf_add() - Rust") > │ mpf_add_rust --> mpf_neg_rust("mpf_neg() - Rust") > │ mpf_neg_rust --> normalize1_rust_2("_normalize1() - > Rust") > │ normalize1_rust_2 --> from_int_rust("from_int() - > Rust") > │ from_int_rust --> mpf_div_rust("mpf_div() - Rust") > │ mpf_div_rust --> bitcount_rust_4("bitcount() - Rust") > │ bitcount_rust_4 --> normalize1_rust_3("_normalize1() - > Rust") > │ > │ style zeta_rust fill:#f9f,stroke:#333,stroke-width:4px > │ style num_traits fill:#bbf,stroke:#333,stroke-width:2px > │ style num_bigint fill:#bbf,stroke:#333,stroke-width:2px > │ style rust_decimal > fill:#bbf,stroke:#333,stroke-width:2px > │ style error_handling > fill:#bbf,stroke:#333,stroke-width:2px > │ style bigint_operations > fill:#bfb,stroke:#333,stroke-width:2px > │ style decimal_operations > fill:#bfb,stroke:#333,stroke-width:2px > │ style result_type > fill:#bfb,stroke:#333,stroke-width:2px`); > │ renderTarget.innerHTML = svg; > │ bindFunctions?.(renderTarget); > │ } > │ catch (error) { > │ console.log(error); > │ } > │ </script> > │ </div> > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## tests > > ── spiral ────────────────────────────────────────────────────────────────────── > inl tests () = > testing.run_tests_log { > test_zeta_at_known_values_ > test_zeta_at_2_minus2 > test_trivial_zero_at_negative_even___ > test_non_trivial_zero___ > test_real_part_greater_than_one___ > test_zeta_at_1___ > test_symmetry_across_real_axis___ > test_behavior_near_origin___ > test_imaginary_axis > test_critical_strip > test_reflection_formula_for_specific_value > test_euler_product_formula > } > > ── spiral ────────────────────────────────────────────────────────────────────── > ///! _ > > inl main (_args : array_base string) = > inl value = 1i32 > console.write_line ($'$"value: {!value}"' : string) > 0i32 > > inl main () = > $'let tests () = !tests ()' : () > $'let main args = !main args' : () 00:02:01 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 79006 } 00:02:01 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/lib/math/math.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/lib/math/math.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:02:02 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/lib/math/math.dib.ipynb to html 00:02:02 v #6 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:02:02 v #7 ! validate(nb) 00:02:02 v #8 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:02:02 v #9 ! return _pygments_highlight( 00:02:03 v #10 ! [NbConvertApp] Writing 7174417 bytes to /home/runner/work/polyglot/polyglot/lib/math/math.dib.html 00:02:03 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 891 } 00:02:03 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 891 } 00:02:03 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/math/math.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/lib/math/math.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:02:04 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:02:04 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:02:04 d #16 spiral.run / dib / { exit_code = 0; result_length = 79956 } 00:00:00 d #1 writeDibCode / output: Spi / path: math.dib 00:00:00 d #2 parseDibCode / output: Spi / file: math.dib 00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: math / hash: / code.Length: 220445 00:00:00 d #2 buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "/home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/lib/math/dist" --runtime linux-x64"; options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/lib/math/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/math"; stderr = true } } 00:00:00 v #2 > Determining projects to restore... 00:00:01 v #3 > Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 00:00:01 v #4 > The last full restore is still up to date. Nothing left to do. 00:00:01 v #5 > Total time taken: 0 milliseconds 00:00:01 v #6 > Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 00:00:01 v #7 > Restoring /home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj 00:00:01 v #8 > Starting restore process. 00:00:01 v #9 > Total time taken: 0 milliseconds 00:00:02 v #10 > Restored /home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj (in 280 ms). 00:00:12 v #11 > math -> /home/runner/work/polyglot/polyglot/target/Builder/math/bin/Release/net9.0/linux-x64/math.dll 00:00:13 v #12 > math -> /home/runner/work/polyglot/polyglot/lib/math/dist 00:00:13 d #13 runtime.execute_with_options_async / { exit_code = 0; output_length = 662; options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/math/math.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/lib/math/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/math"; stderr = true } } spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: /home/runner/work/polyglot/polyglot/target/Builder/math polyglot/scripts/core.ps1/ResolveLink #4 / Path: /home/runner/work/polyglot/polyglot/deps/spiral/lib/spiral/../../deps/polyglot / parent_target: / path_target: /home/runner/work/polyglot/polyglot / parent: /home/runner/work/polyglot/polyglot/deps/spiral/lib/spiral/../../deps / End: polyglot spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: /home/runner/work/polyglot/polyglot/target/Builder/math / ProjectName: math / Language: rs / Runtime: / root: /home/runner/work/polyglot/polyglot Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha) Thanks to the contributor! @theimowski Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target/Builder/math/math.fsproj... Project and references (14 source files) parsed in 3050ms Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Started Fable compilation... Fable compilation finished in 9376ms ./deps/spiral/lib/spiral/sm.fsx(561,0): (561,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/common.fsx(2339,0): (2339,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/async_.fsx(252,0): (252,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/threading.fsx(139,0): (139,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/crypto.fsx(2569,0): (2569,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/date_time.fsx(2553,0): (2553,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/platform.fsx(122,0): (122,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/networking.fsx(5637,0): (5637,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/trace.fsx(2897,0): (2897,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/runtime.fsx(9581,0): (9581,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/file_system.fsx(21240,0): (21240,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./target/Builder/math/math.fs(35,0): (37,3) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! polyglot/lib/math/build.ps1 / path: /home/runner/work/polyglot/polyglot/target/Builder/math/target/rs/math.rs warning: /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /home/runner/work/polyglot/polyglot/examples/rust/exercism/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /home/runner/work/polyglot/polyglot/apps/chat/contract/tests/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /home/runner/work/polyglot/polyglot/lib/math/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /home/runner/work/polyglot/polyglot/apps/plot/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /home/runner/work/polyglot/polyglot/apps/chat/contract/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. Updating crates.io index Downloading crates ... Downloaded rawpointer v0.2.1 Downloaded unindent v0.2.3 Downloaded pyo3-macros v0.23.3 Downloaded bytemuck v1.20.0 Downloaded nalgebra v0.33.2 Downloaded unicode-ident v1.0.14 Downloaded indoc v2.0.5 Downloaded target-lexicon v0.12.16 Downloaded simba v0.9.0 Downloaded rand_distr v0.4.3 Downloaded wide v0.7.30 Downloaded statrs v0.18.0 Downloaded libm v0.2.11 Downloaded safe_arch v0.7.2 Downloaded pyo3-ffi v0.23.3 Downloaded matrixmultiply v0.3.9 Downloaded pyo3-macros-backend v0.23.3 Downloaded proc-macro2 v1.0.92 Downloaded sha2 v0.11.0-pre.4 Downloaded pyo3-build-config v0.23.3 Downloaded crypto-common v0.2.0-rc.1 Downloaded cpufeatures v0.2.16 Downloaded block-buffer v0.11.0-rc.3 Downloaded syn v2.0.90 Downloaded hybrid-array v0.2.3 Downloaded float-cmp v0.10.0 Downloaded digest v0.11.0-pre.9 Downloaded pin-project-lite v0.2.15 Downloaded const-oid v0.10.0-rc.3 Downloaded approx v0.5.1 Downloaded libc v0.2.168 Downloaded pyo3 v0.23.3 Compiling autocfg v1.4.0 Compiling libc v0.2.168 Compiling target-lexicon v0.12.16 Compiling proc-macro2 v1.0.92 Compiling libm v0.2.11 Compiling unicode-ident v1.0.14 Compiling num-traits v0.2.19 Compiling pyo3-build-config v0.23.3 Compiling quote v1.0.37 Compiling syn v2.0.90 Compiling once_cell v1.20.2 Compiling cfg-if v1.0.0 Compiling typenum v1.17.0 Compiling getrandom v0.2.15 Compiling memchr v2.7.4 Compiling byteorder v1.5.0 Compiling slab v0.4.9 Compiling rand_core v0.6.4 Compiling futures-sink v0.3.31 Compiling paste v1.0.15 Compiling bytemuck v1.20.0 Compiling futures-core v0.3.31 Compiling hybrid-array v0.2.3 Compiling safe_arch v0.7.2 Compiling futures-channel v0.3.31 Compiling pyo3-macros-backend v0.23.3 Compiling pyo3-ffi v0.23.3 Compiling matrixmultiply v0.3.9 Compiling futures-io v0.3.31 Compiling pin-project-lite v0.2.15 Compiling pin-utils v0.1.0 Compiling futures-task v0.3.31 Compiling wide v0.7.30 Compiling futures-util v0.3.31 Compiling num-complex v0.4.6 Compiling approx v0.5.1 Compiling num-integer v0.1.46 Compiling num_cpus v1.16.0 Compiling memoffset v0.9.1 Compiling rawpointer v0.2.1 Compiling heck v0.5.0 Compiling zerocopy-derive v0.7.35 Compiling futures-executor v0.3.31 Compiling simba v0.9.0 Compiling zerocopy v0.7.35 Compiling num-rational v0.4.2 Compiling ppv-lite86 v0.2.20 Compiling block-buffer v0.11.0-rc.3 Compiling rand_chacha v0.3.1 Compiling crypto-common v0.2.0-rc.1 Compiling rand v0.8.5 Compiling rand_distr v0.4.3 Compiling aho-corasick v1.1.3 Compiling pyo3 v0.23.3 Compiling regex-syntax v0.8.5 Compiling const-oid v0.10.0-rc.3 Compiling iana-time-zone v0.1.61 Compiling chrono v0.4.39 Compiling nalgebra v0.33.2 Compiling regex-automata v0.4.9 Compiling digest v0.11.0-pre.9 Compiling pyo3-macros v0.23.3 Compiling futures v0.3.31 Compiling uuid v1.11.0 Compiling unindent v0.2.3 Compiling indoc v2.0.5 Compiling startup v0.1.1 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust/vendored/startup) Compiling futures-timer v3.0.3 Compiling cpufeatures v0.2.16 Compiling sha2 v0.11.0-pre.4 Compiling regex v1.11.1 Compiling fable_library_rust v0.1.0 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust) Compiling float-cmp v0.10.0 Compiling inline_colorization v0.1.6 Compiling statrs v0.18.0 Compiling math v0.0.1 (/home/runner/work/polyglot/polyglot/lib/math) Finished `release` profile [optimized] target(s) in 26.59s Running unittests math.rs (/home/runner/work/polyglot/polyglot/workspace/target/release/deps/math-c64878e01a1ae353) running 12 tests test module_b7a9935b::Math::test_behavior_near_origin___ ... ok test module_b7a9935b::Math::test_euler_product_formula ... ok test module_b7a9935b::Math::test_real_part_greater_than_one___ ... ok test module_b7a9935b::Math::test_non_trivial_zero___ ... ok test module_b7a9935b::Math::test_critical_strip ... ok test module_b7a9935b::Math::test_symmetry_across_real_axis___ ... ok test module_b7a9935b::Math::test_zeta_at_1___ ... ok test module_b7a9935b::Math::test_reflection_formula_for_specific_value ... ok test module_b7a9935b::Math::test_zeta_at_2_minus2 ... ok test module_b7a9935b::Math::test_imaginary_axis ... ok test module_b7a9935b::Math::test_zeta_at_known_values_ ... ok test module_b7a9935b::Math::test_trivial_zero_at_negative_even___ ... ok test result: ok. 12 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.19s polyglot/lib/math/build.ps1 / $targetDir: /home/runner/work/polyglot/polyglot/target/Builder/math / $projectName: math / $env:CI:'true'
In [ ]:
{ pwsh ../apps/plot/build.ps1 } | Invoke-Block
warning: /home/runner/work/polyglot/polyglot/lib/math/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /home/runner/work/polyglot/polyglot/apps/chat/contract/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /home/runner/work/polyglot/polyglot/examples/rust/exercism/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /home/runner/work/polyglot/polyglot/apps/plot/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /home/runner/work/polyglot/polyglot/apps/chat/contract/tests/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. Downloading crates ... Downloaded plotters-svg v0.3.7 Downloaded itoa v1.0.14 Downloaded plotters-backend v0.3.7 Downloaded plotters v0.3.7 Downloaded serde_json v1.0.133 Downloaded serde v1.0.216 Compiling memchr v2.7.4 Compiling libc v0.2.168 Compiling typenum v1.17.0 Compiling num-traits v0.2.19 Compiling futures-core v0.3.31 Compiling futures-sink v0.3.31 Compiling futures-channel v0.3.31 Compiling slab v0.4.9 Compiling futures-task v0.3.31 Compiling futures-io v0.3.31 Compiling cfg-if v1.0.0 Compiling pin-project-lite v0.2.15 Compiling pin-utils v0.1.0 Compiling hybrid-array v0.2.3 Compiling num_cpus v1.16.0 Compiling futures-util v0.3.31 Compiling serde v1.0.216 Compiling block-buffer v0.11.0-rc.3 Compiling crypto-common v0.2.0-rc.1 Compiling getrandom v0.2.15 Compiling aho-corasick v1.1.3 Compiling serde_json v1.0.133 Compiling plotters-backend v0.3.7 Compiling const-oid v0.10.0-rc.3 Compiling iana-time-zone v0.1.61 Compiling regex-syntax v0.8.5 Compiling digest v0.11.0-pre.9 Compiling chrono v0.4.39 Compiling futures-executor v0.3.31 Compiling futures v0.3.31 Compiling plotters-svg v0.3.7 Compiling regex-automata v0.4.9 Compiling uuid v1.11.0 Compiling startup v0.1.1 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust/vendored/startup) Compiling cpufeatures v0.2.16 Compiling futures-timer v3.0.3 Compiling itoa v1.0.14 Compiling ryu v1.0.18 Compiling fable_library_rust v0.1.0 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust) Compiling sha2 v0.11.0-pre.4 Compiling regex v1.11.1 Compiling plotters v0.3.7 Compiling inline_colorization v0.1.6 Compiling plot v0.0.1 (/home/runner/work/polyglot/polyglot/apps/plot) warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:649:33 | 649 | let v4: string = append((v0.l0.get().clone()), (v1)); | ^ ^ | = note: `#[warn(unused_parens)]` on by default help: remove these parentheses | 649 - let v4: string = append((v0.l0.get().clone()), (v1)); 649 + let v4: string = append(v0.l0.get().clone(), (v1)); | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:649:56 | 649 | let v4: string = append((v0.l0.get().clone()), (v1)); | ^ ^ | help: remove these parentheses | 649 - let v4: string = append((v0.l0.get().clone()), (v1)); 649 + let v4: string = append((v0.l0.get().clone()), v1); | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:667:13 | 667 | (fable_library_rust::String_::fromString(v10)), | ^ ^ | help: remove these parentheses | 667 - (fable_library_rust::String_::fromString(v10)), 667 + fable_library_rust::String_::fromString(v10), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:668:13 | 668 | (Networking::method13(getCharAt(toLower(string("Verbose")), 0_i32))), | ^ ^ | help: remove these parentheses | 668 - (Networking::method13(getCharAt(toLower(string("Verbose")), 0_i32))), 668 + Networking::method13(getCharAt(toLower(string("Verbose")), 0_i32)), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:672:16 | 672 | append((v139), (fable_library_rust::String_::fromString(v152))) | ^ ^ | help: remove these parentheses | 672 - append((v139), (fable_library_rust::String_::fromString(v152))) 672 + append(v139, (fable_library_rust::String_::fromString(v152))) | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:672:24 | 672 | append((v139), (fable_library_rust::String_::fromString(v152))) | ^ ^ | help: remove these parentheses | 672 - append((v139), (fable_library_rust::String_::fromString(v152))) 672 + append((v139), fable_library_rust::String_::fromString(v152)) | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:736:13 | 736 | (append( | ^ ... 748 | )), | ^ | help: remove these parentheses | 736 ~ append( 737 | (append( ... 747 | string(" / "), 748 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:749:13 | 749 | (v10), | ^ ^ | help: remove these parentheses | 749 - (v10), 749 + v10, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:737:17 | 737 | (append( | ^ ... 746 | )), | ^ | help: remove these parentheses | 737 ~ append( 738 | (append( ... 745 | string("networking.test_port_open"), 746 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:738:21 | 738 | (append( | ^ ... 744 | )), | ^ | help: remove these parentheses | 738 ~ append( 739 | (append( ... 743 | string(" "), 744 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:739:25 | 739 | (append( | ^ ... 742 | )), | ^ | help: remove these parentheses | 739 ~ append( 740 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 741 | (toString(v0.l0.get().clone())), 742 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:740:29 | 740 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 740 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 740 + append((append((append((v6), string(" "))), (v7))), string(" #")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:741:29 | 741 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 741 - (toString(v0.l0.get().clone())), 741 + toString(v0.l0.get().clone()), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:740:37 | 740 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 740 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 740 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:740:45 | 740 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 740 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 740 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:740:74 | 740 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 740 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 740 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:740:53 | 740 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 740 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 740 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:965:13 | 965 | (append( | ^ ... 977 | )), | ^ | help: remove these parentheses | 965 ~ append( 966 | (append( ... 976 | string(" / "), 977 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:978:13 | 978 | (v9), | ^ ^ | help: remove these parentheses | 978 - (v9), 978 + v9, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:966:17 | 966 | (append( | ^ ... 975 | )), | ^ | help: remove these parentheses | 966 ~ append( 967 | (append( ... 974 | string("async.run_with_timeout_async"), 975 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:967:21 | 967 | (append( | ^ ... 973 | )), | ^ | help: remove these parentheses | 967 ~ append( 968 | (append( ... 972 | string(" "), 973 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:968:25 | 968 | (append( | ^ ... 971 | )), | ^ | help: remove these parentheses | 968 ~ append( 969 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 970 | (toString(v0.l0.get().clone())), 971 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:969:29 | 969 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 969 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 969 + append((append((append((v6), string(" "))), (v7))), string(" #")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:970:29 | 970 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 970 - (toString(v0.l0.get().clone())), 970 + toString(v0.l0.get().clone()), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:969:37 | 969 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 969 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 969 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:969:45 | 969 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 969 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 969 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:969:74 | 969 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 969 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 969 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:969:53 | 969 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 969 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 969 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1080:13 | 1080 | (fable_library_rust::String_::fromString(v10)), | ^ ^ | help: remove these parentheses | 1080 - (fable_library_rust::String_::fromString(v10)), 1080 + fable_library_rust::String_::fromString(v10), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1081:13 | 1081 | (Networking::method13(getCharAt(toLower(string("Critical")), 0_i32))), | ^ ^ | help: remove these parentheses | 1081 - (Networking::method13(getCharAt(toLower(string("Critical")), 0_i32))), 1081 + Networking::method13(getCharAt(toLower(string("Critical")), 0_i32)), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1085:16 | 1085 | append((v139), (fable_library_rust::String_::fromString(v152))) | ^ ^ | help: remove these parentheses | 1085 - append((v139), (fable_library_rust::String_::fromString(v152))) 1085 + append(v139, (fable_library_rust::String_::fromString(v152))) | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1085:24 | 1085 | append((v139), (fable_library_rust::String_::fromString(v152))) | ^ ^ | help: remove these parentheses | 1085 - append((v139), (fable_library_rust::String_::fromString(v152))) 1085 + append((v139), fable_library_rust::String_::fromString(v152)) | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1143:13 | 1143 | (append( | ^ ... 1155 | )), | ^ | help: remove these parentheses | 1143 ~ append( 1144 | (append( ... 1154 | string(" / "), 1155 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1156:13 | 1156 | (v10), | ^ ^ | help: remove these parentheses | 1156 - (v10), 1156 + v10, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1144:17 | 1144 | (append( | ^ ... 1153 | )), | ^ | help: remove these parentheses | 1144 ~ append( 1145 | (append( ... 1152 | string("async.run_with_timeout_async**"), 1153 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1145:21 | 1145 | (append( | ^ ... 1151 | )), | ^ | help: remove these parentheses | 1145 ~ append( 1146 | (append( ... 1150 | string(" "), 1151 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1146:25 | 1146 | (append( | ^ ... 1149 | )), | ^ | help: remove these parentheses | 1146 ~ append( 1147 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1148 | (toString(v0.l0.get().clone())), 1149 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1147:29 | 1147 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1147 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1147 + append((append((append((v6), string(" "))), (v7))), string(" #")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1148:29 | 1148 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 1148 - (toString(v0.l0.get().clone())), 1148 + toString(v0.l0.get().clone()), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1147:37 | 1147 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1147 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1147 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1147:45 | 1147 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1147 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1147 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1147:74 | 1147 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1147 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1147 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1147:53 | 1147 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1147 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1147 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1424:13 | 1424 | (append( | ^ ... 1436 | )), | ^ | help: remove these parentheses | 1424 ~ append( 1425 | (append( ... 1435 | string(" / "), 1436 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1437:13 | 1437 | (v12), | ^ ^ | help: remove these parentheses | 1437 - (v12), 1437 + v12, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1425:17 | 1425 | (append( | ^ ... 1434 | )), | ^ | help: remove these parentheses | 1425 ~ append( 1426 | (append( ... 1433 | string("networking.wait_for_port_access"), 1434 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1426:21 | 1426 | (append( | ^ ... 1432 | )), | ^ | help: remove these parentheses | 1426 ~ append( 1427 | (append( ... 1431 | string(" "), 1432 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1427:25 | 1427 | (append( | ^ ... 1430 | )), | ^ | help: remove these parentheses | 1427 ~ append( 1428 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1429 | (toString(v0.l0.get().clone())), 1430 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1428:29 | 1428 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1428 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1428 + append((append((append((v6), string(" "))), (v7))), string(" #")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1429:29 | 1429 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 1429 - (toString(v0.l0.get().clone())), 1429 + toString(v0.l0.get().clone()), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1428:37 | 1428 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1428 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1428 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1428:45 | 1428 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1428 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1428 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1428:74 | 1428 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1428 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1428 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./networking.rs:1428:53 | 1428 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1428 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1428 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:817:33 | 817 | let v4: string = append((v0.l0.get().clone()), (v1)); | ^ ^ | help: remove these parentheses | 817 - let v4: string = append((v0.l0.get().clone()), (v1)); 817 + let v4: string = append(v0.l0.get().clone(), (v1)); | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:817:56 | 817 | let v4: string = append((v0.l0.get().clone()), (v1)); | ^ ^ | help: remove these parentheses | 817 - let v4: string = append((v0.l0.get().clone()), (v1)); 817 + let v4: string = append((v0.l0.get().clone()), v1); | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:835:13 | 835 | (fable_library_rust::String_::fromString(v10)), | ^ ^ | help: remove these parentheses | 835 - (fable_library_rust::String_::fromString(v10)), 835 + fable_library_rust::String_::fromString(v10), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:836:13 | 836 | (Runtime::method12(getCharAt(toLower(string("Warning")), 0_i32))), | ^ ^ | help: remove these parentheses | 836 - (Runtime::method12(getCharAt(toLower(string("Warning")), 0_i32))), 836 + Runtime::method12(getCharAt(toLower(string("Warning")), 0_i32)), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:840:16 | 840 | append((v139), (fable_library_rust::String_::fromString(v152))) | ^ ^ | help: remove these parentheses | 840 - append((v139), (fable_library_rust::String_::fromString(v152))) 840 + append(v139, (fable_library_rust::String_::fromString(v152))) | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:840:24 | 840 | append((v139), (fable_library_rust::String_::fromString(v152))) | ^ ^ | help: remove these parentheses | 840 - append((v139), (fable_library_rust::String_::fromString(v152))) 840 + append((v139), fable_library_rust::String_::fromString(v152)) | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:866:13 | 866 | (append( | ^ ... 878 | )), | ^ | help: remove these parentheses | 866 ~ append( 867 | (append( ... 877 | string(" / "), 878 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:879:13 | 879 | (v8), | ^ ^ | help: remove these parentheses | 879 - (v8), 879 + v8, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:867:17 | 867 | (append( | ^ ... 876 | )), | ^ | help: remove these parentheses | 867 ~ append( 868 | (append( ... 875 | string("runtime.current_process_kill / exiting... 3"), 876 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:868:21 | 868 | (append( | ^ ... 874 | )), | ^ | help: remove these parentheses | 868 ~ append( 869 | (append( ... 873 | string(" "), 874 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:869:25 | 869 | (append( | ^ ... 872 | )), | ^ | help: remove these parentheses | 869 ~ append( 870 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 871 | (toString(v0.l0.get().clone())), 872 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:870:29 | 870 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 870 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 870 + append((append((append((v6), string(" "))), (v7))), string(" #")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:871:29 | 871 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 871 - (toString(v0.l0.get().clone())), 871 + toString(v0.l0.get().clone()), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:870:37 | 870 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 870 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 870 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:870:45 | 870 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 870 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 870 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:870:74 | 870 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 870 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 870 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:870:53 | 870 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 870 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 870 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1003:13 | 1003 | (append( | ^ ... 1015 | )), | ^ | help: remove these parentheses | 1003 ~ append( 1004 | (append( ... 1014 | string(" / "), 1015 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1016:13 | 1016 | (v8), | ^ ^ | help: remove these parentheses | 1016 - (v8), 1016 + v8, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1004:17 | 1004 | (append( | ^ ... 1013 | )), | ^ | help: remove these parentheses | 1004 ~ append( 1005 | (append( ... 1012 | string("runtime.current_process_kill / exiting... 2"), 1013 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1005:21 | 1005 | (append( | ^ ... 1011 | )), | ^ | help: remove these parentheses | 1005 ~ append( 1006 | (append( ... 1010 | string(" "), 1011 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1006:25 | 1006 | (append( | ^ ... 1009 | )), | ^ | help: remove these parentheses | 1006 ~ append( 1007 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1008 | (toString(v0.l0.get().clone())), 1009 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1007:29 | 1007 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1007 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1007 + append((append((append((v6), string(" "))), (v7))), string(" #")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1008:29 | 1008 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 1008 - (toString(v0.l0.get().clone())), 1008 + toString(v0.l0.get().clone()), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1007:37 | 1007 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1007 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1007 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1007:45 | 1007 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1007 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1007 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1007:74 | 1007 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1007 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1007 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1007:53 | 1007 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1007 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1007 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1125:13 | 1125 | (append( | ^ ... 1137 | )), | ^ | help: remove these parentheses | 1125 ~ append( 1126 | (append( ... 1136 | string(" / "), 1137 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1138:13 | 1138 | (v8), | ^ ^ | help: remove these parentheses | 1138 - (v8), 1138 + v8, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1126:17 | 1126 | (append( | ^ ... 1135 | )), | ^ | help: remove these parentheses | 1126 ~ append( 1127 | (append( ... 1134 | string("runtime.current_process_kill / exiting... 1"), 1135 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1127:21 | 1127 | (append( | ^ ... 1133 | )), | ^ | help: remove these parentheses | 1127 ~ append( 1128 | (append( ... 1132 | string(" "), 1133 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1128:25 | 1128 | (append( | ^ ... 1131 | )), | ^ | help: remove these parentheses | 1128 ~ append( 1129 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1130 | (toString(v0.l0.get().clone())), 1131 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1129:29 | 1129 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1129 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1129 + append((append((append((v6), string(" "))), (v7))), string(" #")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1130:29 | 1130 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 1130 - (toString(v0.l0.get().clone())), 1130 + toString(v0.l0.get().clone()), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1129:37 | 1129 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1129 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1129 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1129:45 | 1129 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1129 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1129 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1129:74 | 1129 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1129 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1129 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1129:53 | 1129 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1129 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1129 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around `break` value --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1315:30 | 1315 | break '_method26 (match v0.get().clone().as_ref() { | ^ ... 1353 | }); | ^ | help: remove these parentheses | 1315 ~ break '_method26 match v0.get().clone().as_ref() { 1316 | Runtime::UH0::UH0_0 => (v1.get().clone(), v2.get().clone(), v3.get().clone()), ... 1352 | } 1353 ~ }; | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1418:58 | 1418 | (Runtime::method28(v0, (v1) + 1_i32))(append((v2), string(" "))) | ^ ^ | help: remove these parentheses | 1418 - (Runtime::method28(v0, (v1) + 1_i32))(append((v2), string(" "))) 1418 + (Runtime::method28(v0, (v1) + 1_i32))(append(v2, string(" "))) | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1436:17 | 1436 | (Runtime::method24('\"', v1.clone(), v2, v3)), | ^ ^ | help: remove these parentheses | 1436 - (Runtime::method24('\"', v1.clone(), v2, v3)), 1436 + Runtime::method24('\"', v1.clone(), v2, v3), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1471:21 | 1471 | (append( | ^ ... 1492 | )), | ^ | help: remove these parentheses | 1471 ~ append( 1472 | (append( ... 1491 | )), 1492 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1472:25 | 1472 | (append( | ^ ... 1487 | )), | ^ | help: remove these parentheses | 1472 ~ append( 1473 | (append( ... 1486 | string("\n"), 1487 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1488:25 | 1488 | (append( | ^ ... 1491 | )), | ^ | help: remove these parentheses | 1488 ~ append( 1489 | ((Runtime::method28((v3) - 1_i32, 0_i32))(string(""))), 1490 | string("^"), 1491 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1473:29 | 1473 | ... (append( | ^ ... 1485 | ... )), | ^ | help: remove these parentheses | 1473 ~ append( 1474 | (append( ... 1484 | (v114), 1485 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1474:33 | 1474 | ... (append( | ^ ... 1483 | ... )), | ^ | help: remove these parentheses | 1474 ~ append( 1475 | (append( ... 1482 | (toString(v1)), 1483 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1484:33 | 1484 | ... (v114), | ^ ^ | help: remove these parentheses | 1484 - (v114), 1484 + v114, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1475:37 | 1475 | ... (append( | ^ ... 1481 | ... )), | ^ | help: remove these parentheses | 1475 ~ append( 1476 | (append( ... 1480 | string("\n"), 1481 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1482:37 | 1482 | ... (toString(v1)), | ^ ^ | help: remove these parentheses | 1482 - (toString(v1)), 1482 + toString(v1), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1476:41 | 1476 | ... (append( | ^ ... 1479 | ... )), | ^ | help: remove these parentheses | 1476 ~ append( 1477 | string("parsing.p_char / "), 1478 | (Runtime::method27('\"', v2, v3)), 1479 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1478:45 | 1478 | ... (Runtime::method27('\"', v2, v3)), | ^ ^ | help: remove these parentheses | 1478 - (Runtime::method27('\"', v2, v3)), 1478 + Runtime::method27('\"', v2, v3), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1489:29 | 1489 | ... ((Runtime::method28((v3) - 1_i32, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 1489 - ((Runtime::method28((v3) - 1_i32, 0_i32))(string(""))), 1489 + (Runtime::method28((v3) - 1_i32, 0_i32))(string("")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1506:17 | 1506 | (Runtime::method24('\'', v1.clone(), v2, v3)), | ^ ^ | help: remove these parentheses | 1506 - (Runtime::method24('\'', v1.clone(), v2, v3)), 1506 + Runtime::method24('\'', v1.clone(), v2, v3), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1541:21 | 1541 | (append( | ^ ... 1562 | )), | ^ | help: remove these parentheses | 1541 ~ append( 1542 | (append( ... 1561 | )), 1562 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1542:25 | 1542 | (append( | ^ ... 1557 | )), | ^ | help: remove these parentheses | 1542 ~ append( 1543 | (append( ... 1556 | string("\n"), 1557 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1558:25 | 1558 | (append( | ^ ... 1561 | )), | ^ | help: remove these parentheses | 1558 ~ append( 1559 | ((Runtime::method28((v3) - 1_i32, 0_i32))(string(""))), 1560 | string("^"), 1561 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1543:29 | 1543 | ... (append( | ^ ... 1555 | ... )), | ^ | help: remove these parentheses | 1543 ~ append( 1544 | (append( ... 1554 | (v114), 1555 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1544:33 | 1544 | ... (append( | ^ ... 1553 | ... )), | ^ | help: remove these parentheses | 1544 ~ append( 1545 | (append( ... 1552 | (toString(v1)), 1553 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1554:33 | 1554 | ... (v114), | ^ ^ | help: remove these parentheses | 1554 - (v114), 1554 + v114, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1545:37 | 1545 | ... (append( | ^ ... 1551 | ... )), | ^ | help: remove these parentheses | 1545 ~ append( 1546 | (append( ... 1550 | string("\n"), 1551 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1552:37 | 1552 | ... (toString(v1)), | ^ ^ | help: remove these parentheses | 1552 - (toString(v1)), 1552 + toString(v1), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1546:41 | 1546 | ... (append( | ^ ... 1549 | ... )), | ^ | help: remove these parentheses | 1546 ~ append( 1547 | string("parsing.p_char / "), 1548 | (Runtime::method27('\'', v2, v3)), 1549 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1548:45 | 1548 | ... (Runtime::method27('\'', v2, v3)), | ^ ^ | help: remove these parentheses | 1548 - (Runtime::method27('\'', v2, v3)), 1548 + Runtime::method27('\'', v2, v3), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1559:29 | 1559 | ... ((Runtime::method28((v3) - 1_i32, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 1559 - ((Runtime::method28((v3) - 1_i32, 0_i32))(string(""))), 1559 + (Runtime::method28((v3) - 1_i32, 0_i32))(string("")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around `break` value --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1577:30 | 1577 | break '_method29 (match v2.get().clone().as_ref() { | ^ ... 1608 | }); | ^ | help: remove these parentheses | 1577 ~ break '_method29 match v2.get().clone().as_ref() { 1578 | Runtime::UH1::UH1_0 => { ... 1607 | } 1608 ~ }; | System.Management.Automation.RemoteException warning: unnecessary parentheses around `break` value --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1672:30 | 1672 | break '_method32 (if (v1.get().clone()) >= 2_i64 { | ^ ... 1703 | }); | ^ | help: remove these parentheses | 1672 ~ break '_method32 if (v1.get().clone()) >= 2_i64 { 1673 | false ... 1702 | } 1703 ~ }; | System.Management.Automation.RemoteException warning: unnecessary parentheses around `break` value --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1782:30 | 1782 | break '_method34 ({ | ^ ... 1864 | }); | ^ | help: remove these parentheses | 1782 ~ break '_method34 { 1783 | let v176: Runtime::US8 = if string("") == (v1.get().clone()) { ... 1863 | } 1864 ~ }; | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1786:25 | 1786 | (Runtime::method31( | ^ ... 1791 | )), | ^ | help: remove these parentheses | 1786 ~ Runtime::method31( 1787 | Runtime::method30(toArray(ofArray(new_array(&['\"', '\''])))), ... 1790 | v4.get().clone(), 1791 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1818:29 | 1818 | ... (Runtime::method33( | ^ ... 1824 | ... )), | ^ | help: remove these parentheses | 1818 ~ Runtime::method33( 1819 | v63, ... 1823 | v4.get().clone(), 1824 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1844:36 | 1844 | ... append((v0.get().clone()), (ofChar(v188_0_0.clone()))); | ^ ^ | help: remove these parentheses | 1844 - append((v0.get().clone()), (ofChar(v188_0_0.clone()))); 1844 + append(v0.get().clone(), (ofChar(v188_0_0.clone()))); | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1844:56 | 1844 | ... append((v0.get().clone()), (ofChar(v188_0_0.clone()))); | ^ ^ | help: remove these parentheses | 1844 - append((v0.get().clone()), (ofChar(v188_0_0.clone()))); 1844 + append((v0.get().clone()), ofChar(v188_0_0.clone())); | System.Management.Automation.RemoteException warning: unnecessary parentheses around `break` value --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:1880:30 | 1880 | break '_method35 (match v4.get().clone().as_ref() { | ^ ... 1915 | }); | ^ | help: remove these parentheses | 1880 ~ break '_method35 match v4.get().clone().as_ref() { 1881 | Runtime::UH1::UH1_0 => { ... 1914 | } 1915 ~ }; | System.Management.Automation.RemoteException warning: unnecessary parentheses around `break` value --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2049:30 | 2049 | break '_method37 (if (v1.get().clone()) >= 3_i64 { | ^ ... 2085 | }); | ^ | help: remove these parentheses | 2049 ~ break '_method37 if (v1.get().clone()) >= 3_i64 { 2050 | false ... 2084 | } 2085 ~ }; | System.Management.Automation.RemoteException warning: unnecessary parentheses around `break` value --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2101:30 | 2101 | break '_method38 ({ | ^ ... 2183 | }); | ^ | help: remove these parentheses | 2101 ~ break '_method38 { 2102 | let v200: Runtime::US8 = if string("") == (v1.get().clone()) { ... 2182 | } 2183 ~ }; | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2105:25 | 2105 | (Runtime::method31( | ^ ... 2110 | )), | ^ | help: remove these parentheses | 2105 ~ Runtime::method31( 2106 | Runtime::method30(toArray(ofArray(new_array(&['\"', '\'', ' '])))), ... 2109 | v4.get().clone(), 2110 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2137:29 | 2137 | ... (Runtime::method33( | ^ ... 2143 | ... )), | ^ | help: remove these parentheses | 2137 ~ Runtime::method33( 2138 | v75, ... 2142 | v4.get().clone(), 2143 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2163:36 | 2163 | ... append((v0.get().clone()), (ofChar(v212_0_0.clone()))); | ^ ^ | help: remove these parentheses | 2163 - append((v0.get().clone()), (ofChar(v212_0_0.clone()))); 2163 + append(v0.get().clone(), (ofChar(v212_0_0.clone()))); | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2163:56 | 2163 | ... append((v0.get().clone()), (ofChar(v212_0_0.clone()))); | ^ ^ | help: remove these parentheses | 2163 - append((v0.get().clone()), (ofChar(v212_0_0.clone()))); 2163 + append((v0.get().clone()), ofChar(v212_0_0.clone())); | System.Management.Automation.RemoteException warning: unnecessary parentheses around `break` value --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2216:30 | 2216 | break '_method40 (if (v1.get().clone()) >= (length(v0.get().clone())) { | ^ ... 2228 | }); | ^ | help: remove these parentheses | 2216 ~ break '_method40 if (v1.get().clone()) >= (length(v0.get().clone())) { 2217 | v1.get().clone() ... 2227 | } 2228 ~ }; | System.Management.Automation.RemoteException warning: unnecessary parentheses around `break` value --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2271:30 | 2271 | break '_method42 ({ | ^ ... 2321 | }); | ^ | help: remove these parentheses | 2271 ~ break '_method42 { 2272 | let v66: Runtime::US8 = if string("") == (v1.get().clone()) { ... 2320 | } 2321 ~ }; | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2275:25 | 2275 | (Runtime::method41(v2.get().clone(), v3.get().clone(), v4.get().clone())), | ^ ^ | help: remove these parentheses | 2275 - (Runtime::method41(v2.get().clone(), v3.get().clone(), v4.get().clone())), 2275 + Runtime::method41(v2.get().clone(), v3.get().clone(), v4.get().clone()), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2301:54 | 2301 | let v0_temp: string = append((v0.get().clone()), (ofChar(v66_0_0.clone()))); | ^ ^ | help: remove these parentheses | 2301 - let v0_temp: string = append((v0.get().clone()), (ofChar(v66_0_0.clone()))); 2301 + let v0_temp: string = append(v0.get().clone(), (ofChar(v66_0_0.clone()))); | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2301:74 | 2301 | let v0_temp: string = append((v0.get().clone()), (ofChar(v66_0_0.clone()))); | ^ ^ | help: remove these parentheses | 2301 - let v0_temp: string = append((v0.get().clone()), (ofChar(v66_0_0.clone()))); 2301 + let v0_temp: string = append((v0.get().clone()), ofChar(v66_0_0.clone())); | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2362:29 | 2362 | ... (Runtime::method31( | ^ ... 2367 | ... )), | ^ | help: remove these parentheses | 2362 ~ Runtime::method31( 2363 | Runtime::method30(toArray(ofArray(new_array(&['\"', '\''])))), ... 2366 | v29, 2367 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2394:33 | 2394 | ... (Runtime::method33( | ^ ... 2400 | ... )), | ^ | help: remove these parentheses | 2394 ~ Runtime::method33( 2395 | v88, ... 2399 | v29, 2400 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2484:37 | 2484 | ... (Runtime::method36( | ^ ... 2498 | ... )), | ^ | help: remove these parentheses | 2484 ~ Runtime::method36( 2485 | v252_1_0.clone(), ... 2497 | v248, 2498 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2515:29 | 2515 | ... (Runtime::method31( | ^ ... 2520 | ... )), | ^ | help: remove these parentheses | 2515 ~ Runtime::method31( 2516 | Runtime::method30(toArray(ofArray(new_array(&['\"', '\'', ' '])))), ... 2519 | 1_i32, 2520 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2548:33 | 2548 | ... (Runtime::method33( | ^ ... 2556 | ... )), | ^ | help: remove these parentheses | 2548 ~ Runtime::method33( 2549 | v359, ... 2555 | 1_i32, 2556 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2603:37 | 2603 | ... (Runtime::method39(v10.clone())), | ^ ^ | help: remove these parentheses | 2603 - (Runtime::method39(v10.clone())), 2603 + Runtime::method39(v10.clone()), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2658:29 | 2658 | ... (Runtime::method24(' ', v605.clone(), v606, v607)), | ^ ^ | help: remove these parentheses | 2658 - (Runtime::method24(' ', v605.clone(), v606, v607)), 2658 + Runtime::method24(' ', v605.clone(), v606, v607), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2697:33 | 2697 | ... (append( | ^ ... 2718 | ... )), | ^ | help: remove these parentheses | 2697 ~ append( 2698 | (append( ... 2717 | )), 2718 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2698:37 | 2698 | ... (append( | ^ ... 2713 | ... )), | ^ | help: remove these parentheses | 2698 ~ append( 2699 | (append( ... 2712 | string("\n"), 2713 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2714:37 | 2714 | ... (append( | ^ ... 2717 | ... )), | ^ | help: remove these parentheses | 2714 ~ append( 2715 | ((Runtime::method28((v607) - 1_i32, 0_i32))(string(""))), 2716 | string("^"), 2717 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2699:41 | 2699 | ... (append( | ^ ... 2711 | ... )), | ^ | help: remove these parentheses | 2699 ~ append( 2700 | (append( ... 2710 | (v718), 2711 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2700:45 | 2700 | ... (append( | ^ ... 2709 | ... )), | ^ | help: remove these parentheses | 2700 ~ append( 2701 | (append( ... 2708 | (toString(v605.clone())), 2709 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2710:45 | 2710 | ... (v718), | ^ ^ | help: remove these parentheses | 2710 - (v718), 2710 + v718, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2701:49 | 2701 | ... (append( | ^ ... 2707 | ... )), | ^ | help: remove these parentheses | 2701 ~ append( 2702 | (append( ... 2706 | string("\n"), 2707 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2708:49 | 2708 | ... (toString(v605.clone())), | ^ ^ | help: remove these parentheses | 2708 - (toString(v605.clone())), 2708 + toString(v605.clone()), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2702:53 | 2702 | ... (append( | ^ ... 2705 | ... )), | ^ | help: remove these parentheses | 2702 ~ append( 2703 | string("parsing.p_char / "), 2704 | (Runtime::method27(' ', v606, v607)), 2705 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2704:57 | 2704 | ... (Runtime::method27(' ', v606, v607)), | ^ ^ | help: remove these parentheses | 2704 - (Runtime::method27(' ', v606, v607)), 2704 + Runtime::method27(' ', v606, v607), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2715:41 | 2715 | ... ((Runtime::method28((v607) - 1_i32, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 2715 - ((Runtime::method28((v607) - 1_i32, 0_i32))(string(""))), 2715 + (Runtime::method28((v607) - 1_i32, 0_i32))(string("")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2750:37 | 2750 | ... (Runtime::method41(v786.clone(), v787, v788)), | ^ ^ | help: remove these parentheses | 2750 - (Runtime::method41(v786.clone(), v787, v788)), 2750 + Runtime::method41(v786.clone(), v787, v788), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2862:13 | 2862 | (fable_library_rust::String_::fromString(v10)), | ^ ^ | help: remove these parentheses | 2862 - (fable_library_rust::String_::fromString(v10)), 2862 + fable_library_rust::String_::fromString(v10), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2863:13 | 2863 | (Runtime::method12(getCharAt(toLower(string("Debug")), 0_i32))), | ^ ^ | help: remove these parentheses | 2863 - (Runtime::method12(getCharAt(toLower(string("Debug")), 0_i32))), 2863 + Runtime::method12(getCharAt(toLower(string("Debug")), 0_i32)), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2867:16 | 2867 | append((v139), (fable_library_rust::String_::fromString(v152))) | ^ ^ | help: remove these parentheses | 2867 - append((v139), (fable_library_rust::String_::fromString(v152))) 2867 + append(v139, (fable_library_rust::String_::fromString(v152))) | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:2867:24 | 2867 | append((v139), (fable_library_rust::String_::fromString(v152))) | ^ ^ | help: remove these parentheses | 2867 - append((v139), (fable_library_rust::String_::fromString(v152))) 2867 + append((v139), fable_library_rust::String_::fromString(v152)) | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3116:13 | 3116 | (append( | ^ ... 3128 | )), | ^ | help: remove these parentheses | 3116 ~ append( 3117 | (append( ... 3127 | string(" / "), 3128 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3129:13 | 3129 | (v18), | ^ ^ | help: remove these parentheses | 3129 - (v18), 3129 + v18, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3117:17 | 3117 | (append( | ^ ... 3126 | )), | ^ | help: remove these parentheses | 3117 ~ append( 3118 | (append( ... 3125 | string("runtime.execute_with_options_async"), 3126 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3118:21 | 3118 | (append( | ^ ... 3124 | )), | ^ | help: remove these parentheses | 3118 ~ append( 3119 | (append( ... 3123 | string(" "), 3124 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3119:25 | 3119 | (append( | ^ ... 3122 | )), | ^ | help: remove these parentheses | 3119 ~ append( 3120 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3121 | (toString(v0.l0.get().clone())), 3122 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3120:29 | 3120 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3120 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3120 + append((append((append((v6), string(" "))), (v7))), string(" #")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3121:29 | 3121 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 3121 - (toString(v0.l0.get().clone())), 3121 + toString(v0.l0.get().clone()), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3120:37 | 3120 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3120 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3120 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3120:45 | 3120 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3120 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3120 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3120:74 | 3120 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3120 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3120 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3120:53 | 3120 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3120 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3120 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3279:13 | 3279 | (fable_library_rust::String_::fromString(v10)), | ^ ^ | help: remove these parentheses | 3279 - (fable_library_rust::String_::fromString(v10)), 3279 + fable_library_rust::String_::fromString(v10), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3280:13 | 3280 | (Runtime::method12(getCharAt(toLower(string("Verbose")), 0_i32))), | ^ ^ | help: remove these parentheses | 3280 - (Runtime::method12(getCharAt(toLower(string("Verbose")), 0_i32))), 3280 + Runtime::method12(getCharAt(toLower(string("Verbose")), 0_i32)), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3284:16 | 3284 | append((v139), (fable_library_rust::String_::fromString(v152))) | ^ ^ | help: remove these parentheses | 3284 - append((v139), (fable_library_rust::String_::fromString(v152))) 3284 + append(v139, (fable_library_rust::String_::fromString(v152))) | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3284:24 | 3284 | append((v139), (fable_library_rust::String_::fromString(v152))) | ^ ^ | help: remove these parentheses | 3284 - append((v139), (fable_library_rust::String_::fromString(v152))) 3284 + append((v139), fable_library_rust::String_::fromString(v152)) | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3299:13 | 3299 | (append( | ^ ... 3311 | )), | ^ | help: remove these parentheses | 3299 ~ append( 3300 | (append( ... 3310 | string(" / "), 3311 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3312:13 | 3312 | (v9), | ^ ^ | help: remove these parentheses | 3312 - (v9), 3312 + v9, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3300:17 | 3300 | (append( | ^ ... 3309 | )), | ^ | help: remove these parentheses | 3300 ~ append( 3301 | (append( ... 3308 | (v8), 3309 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3301:21 | 3301 | (append( | ^ ... 3307 | )), | ^ | help: remove these parentheses | 3301 ~ append( 3302 | (append( ... 3306 | string(" "), 3307 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3308:21 | 3308 | (v8), | ^ ^ | help: remove these parentheses | 3308 - (v8), 3308 + v8, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3302:25 | 3302 | (append( | ^ ... 3305 | )), | ^ | help: remove these parentheses | 3302 ~ append( 3303 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3304 | (toString(v0.l0.get().clone())), 3305 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3303:29 | 3303 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3303 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3303 + append((append((append((v6), string(" "))), (v7))), string(" #")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3304:29 | 3304 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 3304 - (toString(v0.l0.get().clone())), 3304 + toString(v0.l0.get().clone()), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3303:37 | 3303 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3303 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3303 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3303:45 | 3303 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3303 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3303 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3303:74 | 3303 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3303 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3303 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3303:53 | 3303 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3303 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3303 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3528:13 | 3528 | (append( | ^ ... 3540 | )), | ^ | help: remove these parentheses | 3528 ~ append( 3529 | (append( ... 3539 | string(" / "), 3540 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3541:13 | 3541 | (v9), | ^ ^ | help: remove these parentheses | 3541 - (v9), 3541 + v9, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3529:17 | 3529 | (append( | ^ ... 3538 | )), | ^ | help: remove these parentheses | 3529 ~ append( 3530 | (append( ... 3537 | string("runtime.execute_with_options_async / WaitForExitAsync"), 3538 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3530:21 | 3530 | (append( | ^ ... 3536 | )), | ^ | help: remove these parentheses | 3530 ~ append( 3531 | (append( ... 3535 | string(" "), 3536 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3531:25 | 3531 | (append( | ^ ... 3534 | )), | ^ | help: remove these parentheses | 3531 ~ append( 3532 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3533 | (toString(v0.l0.get().clone())), 3534 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3532:29 | 3532 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3532 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3532 + append((append((append((v6), string(" "))), (v7))), string(" #")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3533:29 | 3533 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 3533 - (toString(v0.l0.get().clone())), 3533 + toString(v0.l0.get().clone()), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3532:37 | 3532 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3532 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3532 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3532:45 | 3532 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3532 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3532 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3532:74 | 3532 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3532 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3532 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3532:53 | 3532 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3532 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3532 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3896:13 | 3896 | (append( | ^ ... 3908 | )), | ^ | help: remove these parentheses | 3896 ~ append( 3897 | (append( ... 3907 | string(" / "), 3908 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3909:13 | 3909 | (v18), | ^ ^ | help: remove these parentheses | 3909 - (v18), 3909 + v18, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3897:17 | 3897 | (append( | ^ ... 3906 | )), | ^ | help: remove these parentheses | 3897 ~ append( 3898 | (append( ... 3905 | string("runtime.execute_with_options_async"), 3906 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3898:21 | 3898 | (append( | ^ ... 3904 | )), | ^ | help: remove these parentheses | 3898 ~ append( 3899 | (append( ... 3903 | string(" "), 3904 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3899:25 | 3899 | (append( | ^ ... 3902 | )), | ^ | help: remove these parentheses | 3899 ~ append( 3900 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3901 | (toString(v0.l0.get().clone())), 3902 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3900:29 | 3900 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3900 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3900 + append((append((append((v6), string(" "))), (v7))), string(" #")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3901:29 | 3901 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 3901 - (toString(v0.l0.get().clone())), 3901 + toString(v0.l0.get().clone()), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3900:37 | 3900 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3900 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3900 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3900:45 | 3900 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3900 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3900 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3900:74 | 3900 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3900 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3900 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:3900:53 | 3900 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3900 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3900 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around `break` value --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4129:30 | 4129 | break '_method68 (if (v1.get().clone()) >= 4_i64 { | ^ ... 4170 | }); | ^ | help: remove these parentheses | 4129 ~ break '_method68 if (v1.get().clone()) >= 4_i64 { 4130 | false ... 4169 | } 4170 ~ }; | System.Management.Automation.RemoteException warning: unnecessary parentheses around `break` value --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4186:30 | 4186 | break '_method69 ({ | ^ ... 4257 | }); | ^ | help: remove these parentheses | 4186 ~ break '_method69 { 4187 | let v224: Runtime::US8 = if string("") == (v1.get().clone()) { ... 4256 | } 4257 ~ }; | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4190:25 | 4190 | (Runtime::method31( | ^ ... 4195 | )), | ^ | help: remove these parentheses | 4190 ~ Runtime::method31( 4191 | Runtime::method30(toArray(ofArray(new_array(&['\\', '`', '\"', ' '])))), ... 4194 | v4.get().clone(), 4195 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4222:29 | 4222 | ... (Runtime::method33( | ^ ... 4230 | ... )), | ^ | help: remove these parentheses | 4222 ~ Runtime::method33( 4223 | v87, ... 4229 | v4.get().clone(), 4230 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4237:36 | 4237 | ... append((v0.get().clone()), (ofChar(v224_0_0.clone()))); | ^ ^ | help: remove these parentheses | 4237 - append((v0.get().clone()), (ofChar(v224_0_0.clone()))); 4237 + append(v0.get().clone(), (ofChar(v224_0_0.clone()))); | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4237:56 | 4237 | ... append((v0.get().clone()), (ofChar(v224_0_0.clone()))); | ^ ^ | help: remove these parentheses | 4237 - append((v0.get().clone()), (ofChar(v224_0_0.clone()))); 4237 + append((v0.get().clone()), ofChar(v224_0_0.clone())); | System.Management.Automation.RemoteException warning: unnecessary parentheses around `break` value --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4264:30 | 4264 | break '_method71 (if (v1.get().clone()) >= 3_i64 { | ^ ... 4300 | }); | ^ | help: remove these parentheses | 4264 ~ break '_method71 if (v1.get().clone()) >= 3_i64 { 4265 | false ... 4299 | } 4300 ~ }; | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4311:17 | 4311 | (Runtime::method24('\\', v1.clone(), v2, v3)), | ^ ^ | help: remove these parentheses | 4311 - (Runtime::method24('\\', v1.clone(), v2, v3)), 4311 + Runtime::method24('\\', v1.clone(), v2, v3), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4346:21 | 4346 | (append( | ^ ... 4367 | )), | ^ | help: remove these parentheses | 4346 ~ append( 4347 | (append( ... 4366 | )), 4367 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4347:25 | 4347 | (append( | ^ ... 4362 | )), | ^ | help: remove these parentheses | 4347 ~ append( 4348 | (append( ... 4361 | string("\n"), 4362 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4363:25 | 4363 | (append( | ^ ... 4366 | )), | ^ | help: remove these parentheses | 4363 ~ append( 4364 | ((Runtime::method28((v3) - 1_i32, 0_i32))(string(""))), 4365 | string("^"), 4366 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4348:29 | 4348 | ... (append( | ^ ... 4360 | ... )), | ^ | help: remove these parentheses | 4348 ~ append( 4349 | (append( ... 4359 | (v114), 4360 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4349:33 | 4349 | ... (append( | ^ ... 4358 | ... )), | ^ | help: remove these parentheses | 4349 ~ append( 4350 | (append( ... 4357 | (toString(v1)), 4358 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4359:33 | 4359 | ... (v114), | ^ ^ | help: remove these parentheses | 4359 - (v114), 4359 + v114, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4350:37 | 4350 | ... (append( | ^ ... 4356 | ... )), | ^ | help: remove these parentheses | 4350 ~ append( 4351 | (append( ... 4355 | string("\n"), 4356 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4357:37 | 4357 | ... (toString(v1)), | ^ ^ | help: remove these parentheses | 4357 - (toString(v1)), 4357 + toString(v1), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4351:41 | 4351 | ... (append( | ^ ... 4354 | ... )), | ^ | help: remove these parentheses | 4351 ~ append( 4352 | string("parsing.p_char / "), 4353 | (Runtime::method27('\\', v2, v3)), 4354 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4353:45 | 4353 | ... (Runtime::method27('\\', v2, v3)), | ^ ^ | help: remove these parentheses | 4353 - (Runtime::method27('\\', v2, v3)), 4353 + Runtime::method27('\\', v2, v3), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4364:29 | 4364 | ... ((Runtime::method28((v3) - 1_i32, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 4364 - ((Runtime::method28((v3) - 1_i32, 0_i32))(string(""))), 4364 + (Runtime::method28((v3) - 1_i32, 0_i32))(string("")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4381:25 | 4381 | (Runtime::method41(v171.clone(), v172, v173)), | ^ ^ | help: remove these parentheses | 4381 - (Runtime::method41(v171.clone(), v172, v173)), 4381 + Runtime::method41(v171.clone(), v172, v173), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4408:28 | 4408 | append((ofChar('\\')), (ofChar(v239_0_0.clone()))), | ^ ^ | help: remove these parentheses | 4408 - append((ofChar('\\')), (ofChar(v239_0_0.clone()))), 4408 + append(ofChar('\\'), (ofChar(v239_0_0.clone()))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4408:44 | 4408 | append((ofChar('\\')), (ofChar(v239_0_0.clone()))), | ^ ^ | help: remove these parentheses | 4408 - append((ofChar('\\')), (ofChar(v239_0_0.clone()))), 4408 + append((ofChar('\\')), ofChar(v239_0_0.clone())), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4426:17 | 4426 | (Runtime::method24('`', v1.clone(), v2, v3)), | ^ ^ | help: remove these parentheses | 4426 - (Runtime::method24('`', v1.clone(), v2, v3)), 4426 + Runtime::method24('`', v1.clone(), v2, v3), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4461:21 | 4461 | (append( | ^ ... 4482 | )), | ^ | help: remove these parentheses | 4461 ~ append( 4462 | (append( ... 4481 | )), 4482 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4462:25 | 4462 | (append( | ^ ... 4477 | )), | ^ | help: remove these parentheses | 4462 ~ append( 4463 | (append( ... 4476 | string("\n"), 4477 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4478:25 | 4478 | (append( | ^ ... 4481 | )), | ^ | help: remove these parentheses | 4478 ~ append( 4479 | ((Runtime::method28((v3) - 1_i32, 0_i32))(string(""))), 4480 | string("^"), 4481 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4463:29 | 4463 | ... (append( | ^ ... 4475 | ... )), | ^ | help: remove these parentheses | 4463 ~ append( 4464 | (append( ... 4474 | (v114), 4475 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4464:33 | 4464 | ... (append( | ^ ... 4473 | ... )), | ^ | help: remove these parentheses | 4464 ~ append( 4465 | (append( ... 4472 | (toString(v1)), 4473 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4474:33 | 4474 | ... (v114), | ^ ^ | help: remove these parentheses | 4474 - (v114), 4474 + v114, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4465:37 | 4465 | ... (append( | ^ ... 4471 | ... )), | ^ | help: remove these parentheses | 4465 ~ append( 4466 | (append( ... 4470 | string("\n"), 4471 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4472:37 | 4472 | ... (toString(v1)), | ^ ^ | help: remove these parentheses | 4472 - (toString(v1)), 4472 + toString(v1), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4466:41 | 4466 | ... (append( | ^ ... 4469 | ... )), | ^ | help: remove these parentheses | 4466 ~ append( 4467 | string("parsing.p_char / "), 4468 | (Runtime::method27('`', v2, v3)), 4469 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4468:45 | 4468 | ... (Runtime::method27('`', v2, v3)), | ^ ^ | help: remove these parentheses | 4468 - (Runtime::method27('`', v2, v3)), 4468 + Runtime::method27('`', v2, v3), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4479:29 | 4479 | ... ((Runtime::method28((v3) - 1_i32, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 4479 - ((Runtime::method28((v3) - 1_i32, 0_i32))(string(""))), 4479 + (Runtime::method28((v3) - 1_i32, 0_i32))(string("")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4496:25 | 4496 | (Runtime::method41(v171.clone(), v172, v173)), | ^ ^ | help: remove these parentheses | 4496 - (Runtime::method41(v171.clone(), v172, v173)), 4496 + Runtime::method41(v171.clone(), v172, v173), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4523:28 | 4523 | append((ofChar('`')), (ofChar(v239_0_0.clone()))), | ^ ^ | help: remove these parentheses | 4523 - append((ofChar('`')), (ofChar(v239_0_0.clone()))), 4523 + append(ofChar('`'), (ofChar(v239_0_0.clone()))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4523:43 | 4523 | append((ofChar('`')), (ofChar(v239_0_0.clone()))), | ^ ^ | help: remove these parentheses | 4523 - append((ofChar('`')), (ofChar(v239_0_0.clone()))), 4523 + append((ofChar('`')), ofChar(v239_0_0.clone())), | System.Management.Automation.RemoteException warning: unnecessary parentheses around `break` value --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4546:30 | 4546 | break '_method72 (match v4.get().clone().as_ref() { | ^ ... 4581 | }); | ^ | help: remove these parentheses | 4546 ~ break '_method72 match v4.get().clone().as_ref() { 4547 | Runtime::UH3::UH3_0 => { ... 4580 | } 4581 ~ }; | System.Management.Automation.RemoteException warning: unnecessary parentheses around `break` value --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4588:30 | 4588 | break '_method73 (match v0.get().clone().as_ref() { | ^ ... 4608 | }); | ^ | help: remove these parentheses | 4588 ~ break '_method73 match v0.get().clone().as_ref() { 4589 | Runtime::UH2::UH2_0 => v1.get().clone(), ... 4607 | } 4608 ~ }; | System.Management.Automation.RemoteException warning: unnecessary parentheses around `break` value --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4624:30 | 4624 | break '_method70 ({ | ^ ... 4736 | }); | ^ | help: remove these parentheses | 4624 ~ break '_method70 { 4625 | let v200: Runtime::US8 = if string("") == (v1.get().clone()) { ... 4735 | } 4736 ~ }; | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4628:25 | 4628 | (Runtime::method31( | ^ ... 4633 | )), | ^ | help: remove these parentheses | 4628 ~ Runtime::method31( 4629 | Runtime::method30(toArray(ofArray(new_array(&['\\', '`', '\"'])))), ... 4632 | v4.get().clone(), 4633 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4660:29 | 4660 | ... (Runtime::method33( | ^ ... 4666 | ... )), | ^ | help: remove these parentheses | 4660 ~ Runtime::method33( 4661 | v75, ... 4665 | v4.get().clone(), 4666 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around `break` value --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4772:30 | 4772 | break '_method75 ({ | ^ ... 4853 | }); | ^ | help: remove these parentheses | 4772 ~ break '_method75 { 4773 | let v200: Runtime::US8 = if string("") == (v1.get().clone()) { ... 4852 | } 4853 ~ }; | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4776:25 | 4776 | (Runtime::method31( | ^ ... 4781 | )), | ^ | help: remove these parentheses | 4776 ~ Runtime::method31( 4777 | Runtime::method30(toArray(ofArray(new_array(&['\\', '`', '\"'])))), ... 4780 | v4.get().clone(), 4781 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4808:29 | 4808 | ... (Runtime::method33( | ^ ... 4814 | ... )), | ^ | help: remove these parentheses | 4808 ~ Runtime::method33( 4809 | v75, ... 4813 | v4.get().clone(), 4814 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around `break` value --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4869:30 | 4869 | break '_method67 ({ | ^ ... 5387 | }); | ^ | help: remove these parentheses | 4869 ~ break '_method67 { 4870 | let v5: bool = string("") == (v1.get().clone()); ... 5386 | } 5387 ~ }; | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4874:25 | 4874 | (Runtime::method31( | ^ ... 4879 | )), | ^ | help: remove these parentheses | 4874 ~ Runtime::method31( 4875 | Runtime::method30(toArray(ofArray(new_array(&['\\', '`', '\"', ' '])))), ... 4878 | v4.get().clone(), 4879 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4906:29 | 4906 | ... (Runtime::method33( | ^ ... 4914 | ... )), | ^ | help: remove these parentheses | 4906 ~ Runtime::method33( 4907 | v87, ... 4913 | v4.get().clone(), 4914 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4946:33 | 4946 | ... (Runtime::method24( | ^ ... 4951 | ... )), | ^ | help: remove these parentheses | 4946 ~ Runtime::method24( 4947 | '\"', ... 4950 | v4.get().clone(), 4951 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4990:37 | 4990 | ... (append( | ^ ... 5020 | ... )), | ^ | help: remove these parentheses | 4990 ~ append( 4991 | (append( ... 5019 | )), 5020 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4991:41 | 4991 | ... (append( | ^ ... 5010 | ... )), | ^ | help: remove these parentheses | 4991 ~ append( 4992 | (append( ... 5009 | string("\n"), 5010 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5011:41 | 5011 | ... (append( | ^ ... 5019 | ... )), | ^ | help: remove these parentheses | 5011 ~ append( 5012 | ((Runtime::method28( ... 5018 | string("^"), 5019 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4992:45 | 4992 | ... (append( | ^ ... 5008 | ... )), | ^ | help: remove these parentheses | 4992 ~ append( 4993 | (append( ... 5007 | (v360), 5008 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4993:49 | 4993 | ... (append( | ^ ... 5006 | ... )), | ^ | help: remove these parentheses | 4993 ~ append( 4994 | (append( ... 5005 | (toString(v2.get().clone())), 5006 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5007:49 | 5007 | ... (v360), | ^ ^ | help: remove these parentheses | 5007 - (v360), 5007 + v360, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4994:53 | 4994 | ... (append( | ^ ... 5004 | ... )), | ^ | help: remove these parentheses | 4994 ~ append( 4995 | (append( ... 5003 | string("\n"), 5004 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5005:53 | 5005 | ... (toString(v2.get().clone())), | ^ ^ | help: remove these parentheses | 5005 - (toString(v2.get().clone())), 5005 + toString(v2.get().clone()), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4995:57 | 4995 | ... (append( | ^ ... 5002 | ... )), | ^ | help: remove these parentheses | 4995 ~ append( 4996 | string("parsing.p_char / "), ... 5001 | )), 5002 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:4997:61 | 4997 | ... (Runtime::method27( | ^ ... 5001 | ... )), | ^ | help: remove these parentheses | 4997 ~ Runtime::method27( 4998 | '\"', 4999 | v3.get().clone(), 5000 | v4.get().clone(), 5001 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5012:45 | 5012 | ... ((Runtime::method28( | ^ ... 5017 | ... )), | ^ | help: remove these parentheses | 5012 ~ (Runtime::method28( 5013 | (v4.get().clone()) - 1_i32, ... 5016 | string("") 5017 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5089:49 | 5089 | ... (Runtime::method24('\"', v457.clone(), v458, v459)), | ^ ^ | help: remove these parentheses | 5089 - (Runtime::method24('\"', v457.clone(), v458, v459)), 5089 + Runtime::method24('\"', v457.clone(), v458, v459), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5136:53 | 5136 | ... (append( | ^ ... 5166 | ... )), | ^ | help: remove these parentheses | 5136 ~ append( 5137 | (append( ... 5165 | )), 5166 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5137:57 | 5137 | ... (append( | ^ ... 5156 | ... )), | ^ | help: remove these parentheses | 5137 ~ append( 5138 | (append( ... 5155 | string("\n"), 5156 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5157:57 | 5157 | ... (append( | ^ ... 5165 | ... )), | ^ | help: remove these parentheses | 5157 ~ append( 5158 | ((Runtime::method28( ... 5164 | string("^"), 5165 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5138:61 | 5138 | ... (append( | ^ ... 5154 | ... )), | ^ | help: remove these parentheses | 5138 ~ append( 5139 | (append( ... 5153 | (v570), 5154 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5139:65 | 5139 | ... (append( | ^ ... 5152 | ... )), | ^ | help: remove these parentheses | 5139 ~ append( 5140 | (append( ... 5151 | (toString(v457.clone())), 5152 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5153:65 | 5153 | ... (v570), | ^ ^ | help: remove these parentheses | 5153 - (v570), 5153 + v570, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5140:69 | 5140 | ... (append( | ^ ... 5150 | ... )), | ^ | help: remove these parentheses | 5140 ~ append( 5141 | (append( ... 5149 | string("\n"), 5150 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5151:69 | 5151 | ... (toString(v457.clone())), | ^ ^ | help: remove these parentheses | 5151 - (toString(v457.clone())), 5151 + toString(v457.clone()), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5141:73 | 5141 | ... (append( | ^ ... 5148 | ... )), | ^ | help: remove these parentheses | 5141 ~ append( 5142 | string( ... 5147 | )), 5148 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5145:77 | 5145 | ... (Runtime::method27( | ^ 5146 | ... '\"', v458, v459, 5147 | ... )), | ^ | help: remove these parentheses | 5145 ~ Runtime::method27( 5146 | '\"', v458, v459, 5147 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5158:61 | 5158 | ... ((Runtime::method28( | ^ ... 5163 | ... )), | ^ | help: remove these parentheses | 5158 ~ (Runtime::method28( 5159 | (v459) - 1_i32, ... 5162 | string("") 5163 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./runtime.rs:5190:53 | 5190 | ... (Runtime::method36( | ^ ... 5204 | ... )), | ^ | help: remove these parentheses | 5190 ~ Runtime::method36( 5191 | v624_1_0.clone(), ... 5203 | v459, 5204 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:591:33 | 591 | let v4: string = append((v0.l0.get().clone()), (v1)); | ^ ^ | help: remove these parentheses | 591 - let v4: string = append((v0.l0.get().clone()), (v1)); 591 + let v4: string = append(v0.l0.get().clone(), (v1)); | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:591:56 | 591 | let v4: string = append((v0.l0.get().clone()), (v1)); | ^ ^ | help: remove these parentheses | 591 - let v4: string = append((v0.l0.get().clone()), (v1)); 591 + let v4: string = append((v0.l0.get().clone()), v1); | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:733:13 | 733 | (v650), | ^ ^ | help: remove these parentheses | 733 - (v650), 733 + v650, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:734:13 | 734 | (Trace::method11(getCharAt( | ^ ... 744 | ))), | ^ | help: remove these parentheses | 734 ~ Trace::method11(getCharAt( 735 | toLower(match &v696 { ... 743 | 0_i32, 744 ~ )), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:748:16 | 748 | append((v709), (fable_library_rust::String_::fromString(v722))) | ^ ^ | help: remove these parentheses | 748 - append((v709), (fable_library_rust::String_::fromString(v722))) 748 + append(v709, (fable_library_rust::String_::fromString(v722))) | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:748:24 | 748 | append((v709), (fable_library_rust::String_::fromString(v722))) | ^ ^ | help: remove these parentheses | 748 - append((v709), (fable_library_rust::String_::fromString(v722))) 748 + append((v709), fable_library_rust::String_::fromString(v722)) | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:780:13 | 780 | (append( | ^ ... 792 | )), | ^ | help: remove these parentheses | 780 ~ append( 781 | (append( ... 791 | string(" / "), 792 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:793:13 | 793 | (v10), | ^ ^ | help: remove these parentheses | 793 - (v10), 793 + v10, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:781:17 | 781 | (append( | ^ ... 790 | )), | ^ | help: remove these parentheses | 781 ~ append( 782 | (append( ... 789 | (v8), 790 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:782:21 | 782 | (append( | ^ ... 788 | )), | ^ | help: remove these parentheses | 782 ~ append( 783 | (append( ... 787 | string(" "), 788 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:789:21 | 789 | (v8), | ^ ^ | help: remove these parentheses | 789 - (v8), 789 + v8, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:783:25 | 783 | (append( | ^ ... 786 | )), | ^ | help: remove these parentheses | 783 ~ append( 784 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 785 | (toString(v0.l0.get().clone())), 786 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:784:29 | 784 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 784 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 784 + append((append((append((v6), string(" "))), (v7))), string(" #")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:785:29 | 785 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 785 - (toString(v0.l0.get().clone())), 785 + toString(v0.l0.get().clone()), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:784:37 | 784 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 784 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 784 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:784:45 | 784 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 784 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 784 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:784:74 | 784 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 784 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 784 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./trace.rs:784:53 | 784 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 784 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 784 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:868:33 | 868 | let v4: string = append((v0.l0.get().clone()), (v1)); | ^ ^ | help: remove these parentheses | 868 - let v4: string = append((v0.l0.get().clone()), (v1)); 868 + let v4: string = append(v0.l0.get().clone(), (v1)); | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:868:56 | 868 | let v4: string = append((v0.l0.get().clone()), (v1)); | ^ ^ | help: remove these parentheses | 868 - let v4: string = append((v0.l0.get().clone()), (v1)); 868 + let v4: string = append((v0.l0.get().clone()), v1); | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:886:13 | 886 | (fable_library_rust::String_::fromString(v10)), | ^ ^ | help: remove these parentheses | 886 - (fable_library_rust::String_::fromString(v10)), 886 + fable_library_rust::String_::fromString(v10), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:887:13 | 887 | (File_system::method16(getCharAt(toLower(string("Debug")), 0_i32))), | ^ ^ | help: remove these parentheses | 887 - (File_system::method16(getCharAt(toLower(string("Debug")), 0_i32))), 887 + File_system::method16(getCharAt(toLower(string("Debug")), 0_i32)), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:891:16 | 891 | append((v139), (fable_library_rust::String_::fromString(v152))) | ^ ^ | help: remove these parentheses | 891 - append((v139), (fable_library_rust::String_::fromString(v152))) 891 + append(v139, (fable_library_rust::String_::fromString(v152))) | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:891:24 | 891 | append((v139), (fable_library_rust::String_::fromString(v152))) | ^ ^ | help: remove these parentheses | 891 - append((v139), (fable_library_rust::String_::fromString(v152))) 891 + append((v139), fable_library_rust::String_::fromString(v152)) | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:984:13 | 984 | (append( | ^ ... 996 | )), | ^ | help: remove these parentheses | 984 ~ append( 985 | (append( ... 995 | string(" / "), 996 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:997:13 | 997 | (v10), | ^ ^ | help: remove these parentheses | 997 - (v10), 997 + v10, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:985:17 | 985 | (append( | ^ ... 994 | )), | ^ | help: remove these parentheses | 985 ~ append( 986 | (append( ... 993 | string("file_system.delete_directory_async"), 994 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:986:21 | 986 | (append( | ^ ... 992 | )), | ^ | help: remove these parentheses | 986 ~ append( 987 | (append( ... 991 | string(" "), 992 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:987:25 | 987 | (append( | ^ ... 990 | )), | ^ | help: remove these parentheses | 987 ~ append( 988 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 989 | (toString(v0.l0.get().clone())), 990 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:988:29 | 988 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 988 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 988 + append((append((append((v6), string(" "))), (v7))), string(" #")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:989:29 | 989 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 989 - (toString(v0.l0.get().clone())), 989 + toString(v0.l0.get().clone()), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:988:37 | 988 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 988 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 988 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:988:45 | 988 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 988 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 988 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:988:74 | 988 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 988 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 988 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:988:53 | 988 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 988 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 988 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1205:13 | 1205 | (append( | ^ ... 1217 | )), | ^ | help: remove these parentheses | 1205 ~ append( 1206 | (append( ... 1216 | string(" / "), 1217 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1218:13 | 1218 | (v11), | ^ ^ | help: remove these parentheses | 1218 - (v11), 1218 + v11, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1206:17 | 1206 | (append( | ^ ... 1215 | )), | ^ | help: remove these parentheses | 1206 ~ append( 1207 | (append( ... 1214 | string("file_system.wait_for_file_access"), 1215 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1207:21 | 1207 | (append( | ^ ... 1213 | )), | ^ | help: remove these parentheses | 1207 ~ append( 1208 | (append( ... 1212 | string(" "), 1213 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1208:25 | 1208 | (append( | ^ ... 1211 | )), | ^ | help: remove these parentheses | 1208 ~ append( 1209 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1210 | (toString(v0.l0.get().clone())), 1211 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1209:29 | 1209 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1209 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1209 + append((append((append((v6), string(" "))), (v7))), string(" #")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1210:29 | 1210 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 1210 - (toString(v0.l0.get().clone())), 1210 + toString(v0.l0.get().clone()), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1209:37 | 1209 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1209 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1209 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1209:45 | 1209 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1209 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1209 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1209:74 | 1209 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1209 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1209 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1209:53 | 1209 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1209 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1209 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1364:13 | 1364 | (fable_library_rust::String_::fromString(v10)), | ^ ^ | help: remove these parentheses | 1364 - (fable_library_rust::String_::fromString(v10)), 1364 + fable_library_rust::String_::fromString(v10), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1365:13 | 1365 | (File_system::method16(getCharAt(toLower(string("Verbose")), 0_i32))), | ^ ^ | help: remove these parentheses | 1365 - (File_system::method16(getCharAt(toLower(string("Verbose")), 0_i32))), 1365 + File_system::method16(getCharAt(toLower(string("Verbose")), 0_i32)), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1369:16 | 1369 | append((v139), (fable_library_rust::String_::fromString(v152))) | ^ ^ | help: remove these parentheses | 1369 - append((v139), (fable_library_rust::String_::fromString(v152))) 1369 + append(v139, (fable_library_rust::String_::fromString(v152))) | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1369:24 | 1369 | append((v139), (fable_library_rust::String_::fromString(v152))) | ^ ^ | help: remove these parentheses | 1369 - append((v139), (fable_library_rust::String_::fromString(v152))) 1369 + append((v139), fable_library_rust::String_::fromString(v152)) | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1449:13 | 1449 | (append( | ^ ... 1461 | )), | ^ | help: remove these parentheses | 1449 ~ append( 1450 | (append( ... 1460 | string(" / "), 1461 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1462:13 | 1462 | (v11), | ^ ^ | help: remove these parentheses | 1462 - (v11), 1462 + v11, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1450:17 | 1450 | (append( | ^ ... 1459 | )), | ^ | help: remove these parentheses | 1450 ~ append( 1451 | (append( ... 1458 | string("file_system.read_all_text_async"), 1459 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1451:21 | 1451 | (append( | ^ ... 1457 | )), | ^ | help: remove these parentheses | 1451 ~ append( 1452 | (append( ... 1456 | string(" "), 1457 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1452:25 | 1452 | (append( | ^ ... 1455 | )), | ^ | help: remove these parentheses | 1452 ~ append( 1453 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1454 | (toString(v0.l0.get().clone())), 1455 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1453:29 | 1453 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1453 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1453 + append((append((append((v6), string(" "))), (v7))), string(" #")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1454:29 | 1454 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 1454 - (toString(v0.l0.get().clone())), 1454 + toString(v0.l0.get().clone()), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1453:37 | 1453 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1453 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1453 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1453:45 | 1453 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1453 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1453 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1453:74 | 1453 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1453 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1453 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1453:53 | 1453 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1453 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1453 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1683:13 | 1683 | (fable_library_rust::String_::fromString(v10)), | ^ ^ | help: remove these parentheses | 1683 - (fable_library_rust::String_::fromString(v10)), 1683 + fable_library_rust::String_::fromString(v10), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1684:13 | 1684 | (File_system::method16(getCharAt(toLower(string("Critical")), 0_i32))), | ^ ^ | help: remove these parentheses | 1684 - (File_system::method16(getCharAt(toLower(string("Critical")), 0_i32))), 1684 + File_system::method16(getCharAt(toLower(string("Critical")), 0_i32)), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1688:16 | 1688 | append((v139), (fable_library_rust::String_::fromString(v152))) | ^ ^ | help: remove these parentheses | 1688 - append((v139), (fable_library_rust::String_::fromString(v152))) 1688 + append(v139, (fable_library_rust::String_::fromString(v152))) | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1688:24 | 1688 | append((v139), (fable_library_rust::String_::fromString(v152))) | ^ ^ | help: remove these parentheses | 1688 - append((v139), (fable_library_rust::String_::fromString(v152))) 1688 + append((v139), fable_library_rust::String_::fromString(v152)) | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1729:13 | 1729 | (append( | ^ ... 1741 | )), | ^ | help: remove these parentheses | 1729 ~ append( 1730 | (append( ... 1740 | string(" / "), 1741 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1742:13 | 1742 | (v9), | ^ ^ | help: remove these parentheses | 1742 - (v9), 1742 + v9, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1730:17 | 1730 | (append( | ^ ... 1739 | )), | ^ | help: remove these parentheses | 1730 ~ append( 1731 | (append( ... 1738 | string("file_system.file_delete"), 1739 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1731:21 | 1731 | (append( | ^ ... 1737 | )), | ^ | help: remove these parentheses | 1731 ~ append( 1732 | (append( ... 1736 | string(" "), 1737 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1732:25 | 1732 | (append( | ^ ... 1735 | )), | ^ | help: remove these parentheses | 1732 ~ append( 1733 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1734 | (toString(v0.l0.get().clone())), 1735 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1733:29 | 1733 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1733 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1733 + append((append((append((v6), string(" "))), (v7))), string(" #")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1734:29 | 1734 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 1734 - (toString(v0.l0.get().clone())), 1734 + toString(v0.l0.get().clone()), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1733:37 | 1733 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1733 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1733 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1733:45 | 1733 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1733 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1733 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1733:74 | 1733 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1733 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1733 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1733:53 | 1733 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1733 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1733 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1853:13 | 1853 | (fable_library_rust::String_::fromString(v10)), | ^ ^ | help: remove these parentheses | 1853 - (fable_library_rust::String_::fromString(v10)), 1853 + fable_library_rust::String_::fromString(v10), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1854:13 | 1854 | (File_system::method16(getCharAt(toLower(string("Warning")), 0_i32))), | ^ ^ | help: remove these parentheses | 1854 - (File_system::method16(getCharAt(toLower(string("Warning")), 0_i32))), 1854 + File_system::method16(getCharAt(toLower(string("Warning")), 0_i32)), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1858:16 | 1858 | append((v139), (fable_library_rust::String_::fromString(v152))) | ^ ^ | help: remove these parentheses | 1858 - append((v139), (fable_library_rust::String_::fromString(v152))) 1858 + append(v139, (fable_library_rust::String_::fromString(v152))) | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1858:24 | 1858 | append((v139), (fable_library_rust::String_::fromString(v152))) | ^ ^ | help: remove these parentheses | 1858 - append((v139), (fable_library_rust::String_::fromString(v152))) 1858 + append((v139), fable_library_rust::String_::fromString(v152)) | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1916:13 | 1916 | (append( | ^ ... 1928 | )), | ^ | help: remove these parentheses | 1916 ~ append( 1917 | (append( ... 1927 | string(" / "), 1928 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1929:13 | 1929 | (v10), | ^ ^ | help: remove these parentheses | 1929 - (v10), 1929 + v10, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1917:17 | 1917 | (append( | ^ ... 1926 | )), | ^ | help: remove these parentheses | 1917 ~ append( 1918 | (append( ... 1925 | string("delete_file_async"), 1926 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1918:21 | 1918 | (append( | ^ ... 1924 | )), | ^ | help: remove these parentheses | 1918 ~ append( 1919 | (append( ... 1923 | string(" "), 1924 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1919:25 | 1919 | (append( | ^ ... 1922 | )), | ^ | help: remove these parentheses | 1919 ~ append( 1920 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1921 | (toString(v0.l0.get().clone())), 1922 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1920:29 | 1920 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1920 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1920 + append((append((append((v6), string(" "))), (v7))), string(" #")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1921:29 | 1921 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 1921 - (toString(v0.l0.get().clone())), 1921 + toString(v0.l0.get().clone()), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1920:37 | 1920 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1920 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1920 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1920:45 | 1920 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1920 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1920 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1920:74 | 1920 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1920 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1920 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:1920:53 | 1920 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 1920 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 1920 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2125:13 | 2125 | (append( | ^ ... 2137 | )), | ^ | help: remove these parentheses | 2125 ~ append( 2126 | (append( ... 2136 | string(" / "), 2137 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2138:13 | 2138 | (v11), | ^ ^ | help: remove these parentheses | 2138 - (v11), 2138 + v11, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2126:17 | 2126 | (append( | ^ ... 2135 | )), | ^ | help: remove these parentheses | 2126 ~ append( 2127 | (append( ... 2134 | string("move_file_async"), 2135 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2127:21 | 2127 | (append( | ^ ... 2133 | )), | ^ | help: remove these parentheses | 2127 ~ append( 2128 | (append( ... 2132 | string(" "), 2133 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2128:25 | 2128 | (append( | ^ ... 2131 | )), | ^ | help: remove these parentheses | 2128 ~ append( 2129 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2130 | (toString(v0.l0.get().clone())), 2131 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2129:29 | 2129 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2129 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2129 + append((append((append((v6), string(" "))), (v7))), string(" #")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2130:29 | 2130 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 2130 - (toString(v0.l0.get().clone())), 2130 + toString(v0.l0.get().clone()), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2129:37 | 2129 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2129 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2129 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2129:45 | 2129 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2129 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2129 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2129:74 | 2129 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2129 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2129 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2129:53 | 2129 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2129 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2129 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2352:13 | 2352 | (append( | ^ ... 2364 | )), | ^ | help: remove these parentheses | 2352 ~ append( 2353 | (append( ... 2363 | string(" / "), 2364 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2365:13 | 2365 | (v9), | ^ ^ | help: remove these parentheses | 2365 - (v9), 2365 + v9, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2353:17 | 2353 | (append( | ^ ... 2362 | )), | ^ | help: remove these parentheses | 2353 ~ append( 2354 | (append( ... 2361 | string("async.run_with_timeout_async"), 2362 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2354:21 | 2354 | (append( | ^ ... 2360 | )), | ^ | help: remove these parentheses | 2354 ~ append( 2355 | (append( ... 2359 | string(" "), 2360 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2355:25 | 2355 | (append( | ^ ... 2358 | )), | ^ | help: remove these parentheses | 2355 ~ append( 2356 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2357 | (toString(v0.l0.get().clone())), 2358 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2356:29 | 2356 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2356 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2356 + append((append((append((v6), string(" "))), (v7))), string(" #")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2357:29 | 2357 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 2357 - (toString(v0.l0.get().clone())), 2357 + toString(v0.l0.get().clone()), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2356:37 | 2356 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2356 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2356 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2356:45 | 2356 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2356 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2356 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2356:74 | 2356 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2356 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2356 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2356:53 | 2356 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2356 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2356 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2528:13 | 2528 | (append( | ^ ... 2540 | )), | ^ | help: remove these parentheses | 2528 ~ append( 2529 | (append( ... 2539 | string(" / "), 2540 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2541:13 | 2541 | (v10), | ^ ^ | help: remove these parentheses | 2541 - (v10), 2541 + v10, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2529:17 | 2529 | (append( | ^ ... 2538 | )), | ^ | help: remove these parentheses | 2529 ~ append( 2530 | (append( ... 2537 | string("async.run_with_timeout_async**"), 2538 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2530:21 | 2530 | (append( | ^ ... 2536 | )), | ^ | help: remove these parentheses | 2530 ~ append( 2531 | (append( ... 2535 | string(" "), 2536 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2531:25 | 2531 | (append( | ^ ... 2534 | )), | ^ | help: remove these parentheses | 2531 ~ append( 2532 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2533 | (toString(v0.l0.get().clone())), 2534 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2532:29 | 2532 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2532 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2532 + append((append((append((v6), string(" "))), (v7))), string(" #")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2533:29 | 2533 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 2533 - (toString(v0.l0.get().clone())), 2533 + toString(v0.l0.get().clone()), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2532:37 | 2532 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2532 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2532 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2532:45 | 2532 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2532 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2532 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2532:74 | 2532 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2532 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2532 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2532:53 | 2532 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2532 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2532 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2762:13 | 2762 | (append( | ^ ... 2774 | )), | ^ | help: remove these parentheses | 2762 ~ append( 2763 | (append( ... 2773 | string(" / "), 2774 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2775:13 | 2775 | (v10), | ^ ^ | help: remove these parentheses | 2775 - (v10), 2775 + v10, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2763:17 | 2763 | (append( | ^ ... 2772 | )), | ^ | help: remove these parentheses | 2763 ~ append( 2764 | (append( ... 2771 | string("file_system.read_all_text_retry_async"), 2772 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2764:21 | 2764 | (append( | ^ ... 2770 | )), | ^ | help: remove these parentheses | 2764 ~ append( 2765 | (append( ... 2769 | string(" "), 2770 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2765:25 | 2765 | (append( | ^ ... 2768 | )), | ^ | help: remove these parentheses | 2765 ~ append( 2766 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2767 | (toString(v0.l0.get().clone())), 2768 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2766:29 | 2766 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2766 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2766 + append((append((append((v6), string(" "))), (v7))), string(" #")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2767:29 | 2767 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 2767 - (toString(v0.l0.get().clone())), 2767 + toString(v0.l0.get().clone()), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2766:37 | 2766 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2766 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2766 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2766:45 | 2766 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2766 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2766 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2766:74 | 2766 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2766 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2766 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:2766:53 | 2766 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 2766 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 2766 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3110:13 | 3110 | (append( | ^ ... 3122 | )), | ^ | help: remove these parentheses | 3110 ~ append( 3111 | (append( ... 3121 | string(" / "), 3122 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3123:13 | 3123 | (v10), | ^ ^ | help: remove these parentheses | 3123 - (v10), 3123 + v10, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3111:17 | 3111 | (append( | ^ ... 3120 | )), | ^ | help: remove these parentheses | 3111 ~ append( 3112 | (append( ... 3119 | string("file_system.create_dir"), 3120 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3112:21 | 3112 | (append( | ^ ... 3118 | )), | ^ | help: remove these parentheses | 3112 ~ append( 3113 | (append( ... 3117 | string(" "), 3118 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3113:25 | 3113 | (append( | ^ ... 3116 | )), | ^ | help: remove these parentheses | 3113 ~ append( 3114 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3115 | (toString(v0.l0.get().clone())), 3116 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3114:29 | 3114 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3114 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3114 + append((append((append((v6), string(" "))), (v7))), string(" #")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3115:29 | 3115 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 3115 - (toString(v0.l0.get().clone())), 3115 + toString(v0.l0.get().clone()), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3114:37 | 3114 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3114 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3114 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3114:45 | 3114 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3114 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3114 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3114:74 | 3114 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3114 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3114 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3114:53 | 3114 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3114 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3114 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3270:13 | 3270 | (append( | ^ ... 3282 | )), | ^ | help: remove these parentheses | 3270 ~ append( 3271 | (append( ... 3281 | string(" / "), 3282 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3283:13 | 3283 | (v9), | ^ ^ | help: remove these parentheses | 3283 - (v9), 3283 + v9, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3271:17 | 3271 | (append( | ^ ... 3280 | )), | ^ | help: remove these parentheses | 3271 ~ append( 3272 | (append( ... 3279 | string("file_system.create_dir"), 3280 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3272:21 | 3272 | (append( | ^ ... 3278 | )), | ^ | help: remove these parentheses | 3272 ~ append( 3273 | (append( ... 3277 | string(" "), 3278 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3273:25 | 3273 | (append( | ^ ... 3276 | )), | ^ | help: remove these parentheses | 3273 ~ append( 3274 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3275 | (toString(v0.l0.get().clone())), 3276 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3274:29 | 3274 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3274 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3274 + append((append((append((v6), string(" "))), (v7))), string(" #")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3275:29 | 3275 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 3275 - (toString(v0.l0.get().clone())), 3275 + toString(v0.l0.get().clone()), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3274:37 | 3274 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3274 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3274 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3274:45 | 3274 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3274 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3274 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3274:74 | 3274 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3274 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3274 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3274:53 | 3274 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3274 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3274 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3464:13 | 3464 | (append( | ^ ... 3476 | )), | ^ | help: remove these parentheses | 3464 ~ append( 3465 | (append( ... 3475 | string(" / "), 3476 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3477:13 | 3477 | (v10), | ^ ^ | help: remove these parentheses | 3477 - (v10), 3477 + v10, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3465:17 | 3465 | (append( | ^ ... 3474 | )), | ^ | help: remove these parentheses | 3465 ~ append( 3466 | (append( ... 3473 | string("file_system.create_dir"), 3474 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3466:21 | 3466 | (append( | ^ ... 3472 | )), | ^ | help: remove these parentheses | 3466 ~ append( 3467 | (append( ... 3471 | string(" "), 3472 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3467:25 | 3467 | (append( | ^ ... 3470 | )), | ^ | help: remove these parentheses | 3467 ~ append( 3468 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3469 | (toString(v0.l0.get().clone())), 3470 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3468:29 | 3468 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3468 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3468 + append((append((append((v6), string(" "))), (v7))), string(" #")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3469:29 | 3469 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 3469 - (toString(v0.l0.get().clone())), 3469 + toString(v0.l0.get().clone()), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3468:37 | 3468 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3468 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3468 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3468:45 | 3468 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3468 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3468 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3468:74 | 3468 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3468 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3468 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3468:53 | 3468 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 3468 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 3468 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3656:75 | 3656 | (File_system::method110(v0, v1.clone(), (v2) + 1_i32))(append((v3), (v1))) | ^ ^ | help: remove these parentheses | 3656 - (File_system::method110(v0, v1.clone(), (v2) + 1_i32))(append((v3), (v1))) 3656 + (File_system::method110(v0, v1.clone(), (v2) + 1_i32))(append(v3, (v1))) | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3656:81 | 3656 | (File_system::method110(v0, v1.clone(), (v2) + 1_i32))(append((v3), (v1))) | ^ ^ | help: remove these parentheses | 3656 - (File_system::method110(v0, v1.clone(), (v2) + 1_i32))(append((v3), (v1))) 3656 + (File_system::method110(v0, v1.clone(), (v2) + 1_i32))(append((v3), v1)) | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3670:13 | 3670 | ((File_system::method110(32_i32 - (length(v0.clone())), v3, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 3670 - ((File_system::method110(32_i32 - (length(v0.clone())), v3, 0_i32))(string(""))), 3670 + (File_system::method110(32_i32 - (length(v0.clone())), v3, 0_i32))(string("")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3671:13 | 3671 | (v0), | ^ ^ | help: remove these parentheses | 3671 - (v0), 3671 + v0, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3674:13 | 3674 | (append( | ^ ... 3695 | )), | ^ | help: remove these parentheses | 3674 ~ append( 3675 | (append( ... 3694 | string("-"), 3695 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3696:13 | 3696 | (getSlice(v13, Some(20_i32), Some((32_i32) - 1_i32))), | ^ ^ | help: remove these parentheses | 3696 - (getSlice(v13, Some(20_i32), Some((32_i32) - 1_i32))), 3696 + getSlice(v13, Some(20_i32), Some((32_i32) - 1_i32)), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3675:17 | 3675 | (append( | ^ ... 3693 | )), | ^ | help: remove these parentheses | 3675 ~ append( 3676 | (append( ... 3692 | (getSlice(v13.clone(), Some(16_i32), Some((20_i32) - 1_i32))), 3693 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3676:21 | 3676 | (append( | ^ ... 3691 | )), | ^ | help: remove these parentheses | 3676 ~ append( 3677 | (append( ... 3690 | string("-"), 3691 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3692:21 | 3692 | (getSlice(v13.clone(), Some(16_i32), Some((20_i32) - 1_i32))), | ^ ^ | help: remove these parentheses | 3692 - (getSlice(v13.clone(), Some(16_i32), Some((20_i32) - 1_i32))), 3692 + getSlice(v13.clone(), Some(16_i32), Some((20_i32) - 1_i32)), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3677:25 | 3677 | (append( | ^ ... 3689 | )), | ^ | help: remove these parentheses | 3677 ~ append( 3678 | (append( ... 3688 | (getSlice(v13.clone(), Some(12_i32), Some((16_i32) - 1_i32))), 3689 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3678:29 | 3678 | ... (append( | ^ ... 3687 | ... )), | ^ | help: remove these parentheses | 3678 ~ append( 3679 | (append( ... 3686 | string("-"), 3687 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3688:29 | 3688 | ... (getSlice(v13.clone(), Some(12_i32), Some((16_i32) - 1_i32))), | ^ ^ | help: remove these parentheses | 3688 - (getSlice(v13.clone(), Some(12_i32), Some((16_i32) - 1_i32))), 3688 + getSlice(v13.clone(), Some(12_i32), Some((16_i32) - 1_i32)), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3679:33 | 3679 | ... (append( | ^ ... 3685 | ... )), | ^ | help: remove these parentheses | 3679 ~ append( 3680 | (append( ... 3684 | (getSlice(v13.clone(), Some(8_i32), Some((12_i32) - 1_i32))), 3685 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3680:37 | 3680 | ... (append( | ^ ... 3683 | ... )), | ^ | help: remove these parentheses | 3680 ~ append( 3681 | (getSlice(v13.clone(), Some(0_i32), Some((8_i32) - 1_i32))), 3682 | string("-"), 3683 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3684:37 | 3684 | ... (getSlice(v13.clone(), Some(8_i32), Some((12_i32) - 1_i32))), | ^ ^ | help: remove these parentheses | 3684 - (getSlice(v13.clone(), Some(8_i32), Some((12_i32) - 1_i32))), 3684 + getSlice(v13.clone(), Some(8_i32), Some((12_i32) - 1_i32)), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:3681:41 | 3681 | ... (getSlice(v13.clone(), Some(0_i32), Some((8_i32) - 1_i32))), | ^ ^ | help: remove these parentheses | 3681 - (getSlice(v13.clone(), Some(0_i32), Some((8_i32) - 1_i32))), 3681 + getSlice(v13.clone(), Some(0_i32), Some((8_i32) - 1_i32)), | System.Management.Automation.RemoteException warning: unnecessary parentheses around `break` value --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4559:31 | 4559 | break '_method142 (if v3(File_system::method91(v4.get().clone(), v0.get().clone())) { | ^ ... 4600 | }); | ^ | help: remove these parentheses | 4559 ~ break '_method142 if v3(File_system::method91(v4.get().clone(), v0.get().clone())) { 4560 | File_system::US18::US18_0(v4.get().clone()) ... 4599 | } 4600 ~ }; | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4584:25 | 4584 | (concat(new_array(&[ | ^ ... 4591 | ]))), | ^ | help: remove these parentheses | 4584 ~ concat(new_array(&[ 4585 | string("file_system.find_parent / No parent for "), ... 4590 | }, 4591 ~ ])), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4628:21 | 4628 | (concat(new_array(&[ | ^ ... 4631 | ]))), | ^ | help: remove these parentheses | 4628 ~ concat(new_array(&[ 4629 | string("file_system.find_parent / No parent for "), 4630 | if v2 { string("file") } else { string("dir") }, 4631 ~ ])), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4715:13 | 4715 | (append( | ^ ... 4727 | )), | ^ | help: remove these parentheses | 4715 ~ append( 4716 | (append( ... 4726 | string(" / "), 4727 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4728:13 | 4728 | (v10), | ^ ^ | help: remove these parentheses | 4728 - (v10), 4728 + v10, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4716:17 | 4716 | (append( | ^ ... 4725 | )), | ^ | help: remove these parentheses | 4716 ~ append( 4717 | (append( ... 4724 | string("file_system.get_workspace_root"), 4725 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4717:21 | 4717 | (append( | ^ ... 4723 | )), | ^ | help: remove these parentheses | 4717 ~ append( 4718 | (append( ... 4722 | string(" "), 4723 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4718:25 | 4718 | (append( | ^ ... 4721 | )), | ^ | help: remove these parentheses | 4718 ~ append( 4719 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 4720 | (toString(v0.l0.get().clone())), 4721 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4719:29 | 4719 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 4719 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 4719 + append((append((append((v6), string(" "))), (v7))), string(" #")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4720:29 | 4720 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 4720 - (toString(v0.l0.get().clone())), 4720 + toString(v0.l0.get().clone()), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4719:37 | 4719 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 4719 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 4719 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4719:45 | 4719 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 4719 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 4719 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4719:74 | 4719 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 4719 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 4719 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./file_system.rs:4719:53 | 4719 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 4719 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 4719 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./sm.rs:94:70 | 94 | (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), (v1_1))) | ^ ^ | help: remove these parentheses | 94 - (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), (v1_1))) 94 + (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append(v3_1, (v1_1))) | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./sm.rs:94:78 | 94 | (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), (v1_1))) | ^ ^ | help: remove these parentheses | 94 - (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), (v1_1))) 94 + (Sm::method0(v0_1, v1_1.clone(), (v2_1) + 1_i32))(append((v3_1), v1_1)) | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./sm.rs:108:13 | 108 | ((Sm::method0((v0_1) - (length(v2_1.clone())), v5_1, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 108 - ((Sm::method0((v0_1) - (length(v2_1.clone())), v5_1, 0_i32))(string(""))), 108 + (Sm::method0((v0_1) - (length(v2_1.clone())), v5_1, 0_i32))(string("")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./sm.rs:109:13 | 109 | (v2_1), | ^ ^ | help: remove these parentheses | 109 - (v2_1), 109 + v2_1, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./sm.rs:128:13 | 128 | (v2_1.clone()), | ^ ^ | help: remove these parentheses | 128 - (v2_1.clone()), 128 + v2_1.clone(), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./sm.rs:129:13 | 129 | ((Sm::method0((v0_1) - (length(v2_1)), v5_1, 0_i32))(string(""))), | ^ ^ | help: remove these parentheses | 129 - ((Sm::method0((v0_1) - (length(v2_1)), v5_1, 0_i32))(string(""))), 129 + (Sm::method0((v0_1) - (length(v2_1)), v5_1, 0_i32))(string("")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./sm.rs:345:17 | 345 | (getSlice(v1_1, Some(0_i32), Some((v0_1) - 1_i32))), | ^ ^ | help: remove these parentheses | 345 - (getSlice(v1_1, Some(0_i32), Some((v0_1) - 1_i32))), 345 + getSlice(v1_1, Some(0_i32), Some((v0_1) - 1_i32)), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./sm.rs:410:24 | 410 | append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue)); | ^ ^ | help: remove these parentheses | 410 - append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue)); 410 + append(append((v1_1[v9_1].clone()), (matchValue_1)), (matchValue)); | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./sm.rs:410:72 | 410 | append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue)); | ^ ^ | help: remove these parentheses | 410 - append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue)); 410 + append((append((v1_1[v9_1].clone()), (matchValue_1))), matchValue); | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./sm.rs:410:32 | 410 | append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue)); | ^ ^ | help: remove these parentheses | 410 - append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue)); 410 + append((append(v1_1[v9_1].clone(), (matchValue_1))), (matchValue)); | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./sm.rs:410:54 | 410 | append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue)); | ^ ^ | help: remove these parentheses | 410 - append((append((v1_1[v9_1].clone()), (matchValue_1))), (matchValue)); 410 + append((append((v1_1[v9_1].clone()), matchValue_1)), (matchValue)); | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./crypto.rs:739:33 | 739 | let v4: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 739 - let v4: string = append((v0_1.l0.get().clone()), (v1_1)); 739 + let v4: string = append(v0_1.l0.get().clone(), (v1_1)); | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./crypto.rs:739:58 | 739 | let v4: string = append((v0_1.l0.get().clone()), (v1_1)); | ^ ^ | help: remove these parentheses | 739 - let v4: string = append((v0_1.l0.get().clone()), (v1_1)); 739 + let v4: string = append((v0_1.l0.get().clone()), v1_1); | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./crypto.rs:757:13 | 757 | (fable_library_rust::String_::fromString(v10)), | ^ ^ | help: remove these parentheses | 757 - (fable_library_rust::String_::fromString(v10)), 757 + fable_library_rust::String_::fromString(v10), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./crypto.rs:758:13 | 758 | (Crypto::method16(getCharAt(toLower(string("Verbose")), 0_i32))), | ^ ^ | help: remove these parentheses | 758 - (Crypto::method16(getCharAt(toLower(string("Verbose")), 0_i32))), 758 + Crypto::method16(getCharAt(toLower(string("Verbose")), 0_i32)), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./crypto.rs:762:16 | 762 | append((v139), (fable_library_rust::String_::fromString(v152))) | ^ ^ | help: remove these parentheses | 762 - append((v139), (fable_library_rust::String_::fromString(v152))) 762 + append(v139, (fable_library_rust::String_::fromString(v152))) | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./crypto.rs:762:24 | 762 | append((v139), (fable_library_rust::String_::fromString(v152))) | ^ ^ | help: remove these parentheses | 762 - append((v139), (fable_library_rust::String_::fromString(v152))) 762 + append((v139), fable_library_rust::String_::fromString(v152)) | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./crypto.rs:843:13 | 843 | (append( | ^ ... 855 | )), | ^ | help: remove these parentheses | 843 ~ append( 844 | (append( ... 854 | string(" / "), 855 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./crypto.rs:856:13 | 856 | (v11), | ^ ^ | help: remove these parentheses | 856 - (v11), 856 + v11, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./crypto.rs:844:17 | 844 | (append( | ^ ... 853 | )), | ^ | help: remove these parentheses | 844 ~ append( 845 | (append( ... 852 | string("crypto.hash_to_port"), 853 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./crypto.rs:845:21 | 845 | (append( | ^ ... 851 | )), | ^ | help: remove these parentheses | 845 ~ append( 846 | (append( ... 850 | string(" "), 851 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./crypto.rs:846:25 | 846 | (append( | ^ ... 849 | )), | ^ | help: remove these parentheses | 846 ~ append( 847 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 848 | (toString(v0_1.l0.get().clone())), 849 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./crypto.rs:847:29 | 847 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 847 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 847 + append((append((append((v6), string(" "))), (v7))), string(" #")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./crypto.rs:848:29 | 848 | ... (toString(v0_1.l0.get().clone())), | ^ ^ | help: remove these parentheses | 848 - (toString(v0_1.l0.get().clone())), 848 + toString(v0_1.l0.get().clone()), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./crypto.rs:847:37 | 847 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 847 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 847 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./crypto.rs:847:45 | 847 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 847 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 847 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./crypto.rs:847:74 | 847 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 847 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 847 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./crypto.rs:847:53 | 847 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 847 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 847 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:670:33 | 670 | let v4: string = append((v0.l0.get().clone()), (v1)); | ^ ^ | help: remove these parentheses | 670 - let v4: string = append((v0.l0.get().clone()), (v1)); 670 + let v4: string = append(v0.l0.get().clone(), (v1)); | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:670:56 | 670 | let v4: string = append((v0.l0.get().clone()), (v1)); | ^ ^ | help: remove these parentheses | 670 - let v4: string = append((v0.l0.get().clone()), (v1)); 670 + let v4: string = append((v0.l0.get().clone()), v1); | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:688:13 | 688 | (fable_library_rust::String_::fromString(v10)), | ^ ^ | help: remove these parentheses | 688 - (fable_library_rust::String_::fromString(v10)), 688 + fable_library_rust::String_::fromString(v10), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:689:13 | 689 | (Common::method14(getCharAt(toLower(string("Warning")), 0_i32))), | ^ ^ | help: remove these parentheses | 689 - (Common::method14(getCharAt(toLower(string("Warning")), 0_i32))), 689 + Common::method14(getCharAt(toLower(string("Warning")), 0_i32)), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:693:16 | 693 | append((v139), (fable_library_rust::String_::fromString(v152))) | ^ ^ | help: remove these parentheses | 693 - append((v139), (fable_library_rust::String_::fromString(v152))) 693 + append(v139, (fable_library_rust::String_::fromString(v152))) | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:693:24 | 693 | append((v139), (fable_library_rust::String_::fromString(v152))) | ^ ^ | help: remove these parentheses | 693 - append((v139), (fable_library_rust::String_::fromString(v152))) 693 + append((v139), fable_library_rust::String_::fromString(v152)) | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:762:13 | 762 | (append( | ^ ... 774 | )), | ^ | help: remove these parentheses | 762 ~ append( 763 | (append( ... 773 | string(" / "), 774 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:775:13 | 775 | (v10), | ^ ^ | help: remove these parentheses | 775 - (v10), 775 + v10, | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:763:17 | 763 | (append( | ^ ... 772 | )), | ^ | help: remove these parentheses | 763 ~ append( 764 | (append( ... 771 | string("common.retry_fn"), 772 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:764:21 | 764 | (append( | ^ ... 770 | )), | ^ | help: remove these parentheses | 764 ~ append( 765 | (append( ... 769 | string(" "), 770 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:765:25 | 765 | (append( | ^ ... 768 | )), | ^ | help: remove these parentheses | 765 ~ append( 766 | (append((append((append((v6), string(" "))), (v7))), string(" #"))), 767 | (toString(v0.l0.get().clone())), 768 ~ ), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:766:29 | 766 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 766 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 766 + append((append((append((v6), string(" "))), (v7))), string(" #")), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:767:29 | 767 | ... (toString(v0.l0.get().clone())), | ^ ^ | help: remove these parentheses | 767 - (toString(v0.l0.get().clone())), 767 + toString(v0.l0.get().clone()), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:766:37 | 766 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 766 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 766 + (append(append((append((v6), string(" "))), (v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:766:45 | 766 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 766 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 766 + (append((append(append((v6), string(" ")), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:766:74 | 766 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 766 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 766 + (append((append((append((v6), string(" "))), v7)), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around function argument --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:766:53 | 766 | ... (append((append((append((v6), string(" "))), (v7))), string(" #"))), | ^ ^ | help: remove these parentheses | 766 - (append((append((append((v6), string(" "))), (v7))), string(" #"))), 766 + (append((append((append(v6, string(" "))), (v7))), string(" #"))), | System.Management.Automation.RemoteException warning: unnecessary parentheses around `break` value --> /home/runner/work/polyglot/polyglot/apps/plot/../../deps/spiral/lib/spiral/./common.rs:901:29 | 901 | break '_method8 ({ | ^ ... 938 | }); | ^ | help: remove these parentheses | 901 ~ break '_method8 { 902 | let result: LrcPtr<MutCell<Common::US7>> = refCell(Common::US7::US7_1); ... 937 | } 938 ~ }; | System.Management.Automation.RemoteException warning: `plot` (lib) generated 527 warnings (run `cargo fix --lib -p plot` to apply 527 suggestions) Finished `release` profile [optimized] target(s) in 20.71s
In [ ]:
{ pwsh ../apps/perf/build.ps1 } | Invoke-Block
00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "Perf.dib", "--retries", "3"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None; stderr = true } } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ # Perf (Polyglot) > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > open testing > open benchmark > > ── fsharp ────────────────────────────────────────────────────────────────────── > #if !INTERACTIVE > open Lib > #endif > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## TestCaseResult > > ── fsharp ────────────────────────────────────────────────────────────────────── > type TestCaseResult = > { > Input: string > Expected: string > Result: string > TimeList: int64 list > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## run > > ── fsharp ────────────────────────────────────────────────────────────────────── > let run count (solutions: (string * ('TInput -> 'TExpected)) list) (input, > expected) = > let inputStr = > match box input with > | :? System.Collections.ICollection as input -> > System.Linq.Enumerable.Cast<obj> input > |> Seq.map string > |> SpiralSm.concat "," > | _ -> input.ToString () > > printfn "" > printfn $"Solution: {inputStr} " > > let performanceInvoke (fn: unit -> 'T) = > GC.Collect () > let stopwatch = System.Diagnostics.Stopwatch () > stopwatch.Start () > let time1 = stopwatch.ElapsedMilliseconds > > let result = > [[| 0 .. count |]] > |> Array.Parallel.map (fun _ -> > fn () > ) > |> Array.last > > let time2 = stopwatch.ElapsedMilliseconds - time1 > > result, time2 > > let resultsWithTime = > solutions > |> List.mapi (fun i (testName, solution) -> > let result, time = performanceInvoke (fun () -> solution input) > printfn $"Test case %d{i + 1}. %s{testName}. Time: %A{time} " > result, time > ) > > > match resultsWithTime |> List.map fst with > | ([[]] | [[ _ ]]) -> () > | (head :: tail) when tail |> List.forall ((=) head) -> () > | results -> failwithf $"Challenge error: %A{results}" > > { > Input = inputStr > Expected = expected.ToString () > Result = resultsWithTime |> Seq.map fst |> Seq.head |> _.ToString() > TimeList = resultsWithTime |> List.map snd > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## runAll > > ── fsharp ────────────────────────────────────────────────────────────────────── > let runAll testName count (solutions: (string * ('TInput -> 'TExpected)) list) > testCases = > printfn "" > printfn "" > printfn $"Test: {testName}" > testCases > |> Seq.map (run count solutions) > |> Seq.toList > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## sortResultList > > ── fsharp ────────────────────────────────────────────────────────────────────── > let sortResultList resultList = > let table = > let rows = > resultList > |> List.map (fun result -> > let best = > result.TimeList > |> List.mapi (fun i time -> > i + 1, time > ) > |> List.sortBy snd > |> List.head > |> _.ToString() > let row = > [[ > result.Input > result.Expected > result.Result > best > ]] > let color = > match result.Expected = result.Result with > | true -> Some ConsoleColor.DarkGreen > | false -> Some ConsoleColor.DarkRed > row, color > ) > let header = > [[ > [[ > "Input" > "Expected" > "Result" > "Best" > ]] > [[ > "---" > "---" > "---" > "---" > ]] > ]] > |> List.map (fun row -> row, None) > header @ rows > > let formattedTable = > let lengthMap = > table > |> List.map fst > |> List.transpose > |> List.map (fun column -> > column > |> List.map String.length > |> List.sortDescending > |> List.tryHead > |> Option.defaultValue 0 > ) > |> List.indexed > |> Map.ofList > table > |> List.map (fun (row, color) -> > let newRow = > row > |> List.mapi (fun i cell -> > cell.PadRight lengthMap.[[i]] > ) > newRow, color > ) > > printfn "" > formattedTable > |> List.iter (fun (row, color) -> > match color with > | Some color -> Console.ForegroundColor <- color > | None -> Console.ResetColor () > > printfn "%s" (String.Join ("\t| ", row)) > > Console.ResetColor () > ) > > let averages = > resultList > |> List.map (fun result -> result.TimeList |> List.map float) > |> List.transpose > |> List.map List.average > |> List.map int64 > |> List.indexed > > printfn "" > printfn "Average Ranking " > averages > |> List.sortBy snd > |> List.iter (fun (i, avg) -> > printfn $"Test case %d{i + 1}. Average Time: %A{avg} " > ) > > ── fsharp ────────────────────────────────────────────────────────────────────── > let mutable _count = > if ("CI" |> System.Environment.GetEnvironmentVariable |> fun x -> $"%A{x}") > <> "<null>" > then 2000000 > else 2000 > > ── spiral ────────────────────────────────────────────────────────────────────── > inl is_fast () = > false > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## empty3Tests > > ── markdown ──────────────────────────────────────────────────────────────────── > │ Test: Empty3 > │ > │ Solution: (a, a) > │ Test case 1. A. Time: 91L > │ > │ Solution: (a, a) > │ Test case 1. A. Time: 56L > │ > │ Input | Expected | Result | Best > │ --- | --- | --- | --- > │ (a, a) | a | a | (1, 91) > │ (a, a) | a | a | (1, 56) > │ > │ Averages > │ Test case 1. Average Time: 73L > │ > │ Ranking > │ Test case 1. Average Time: 73L > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let solutions = [[ > "A", > fun (a, _b) -> > a > ]] > let testCases = seq { > ("a", "a"), "a" > ("a", "a"), "a" > } > let rec empty3Tests = runAll (nameof empty3Tests) _count solutions testCases > empty3Tests > |> sortResultList > > ── [ 296.48ms - stdout ] ─────────────────────────────────────────────────────── > │ > │ > │ Test: empty3Tests > │ > │ Solution: (a, a) > │ Test case 1. A. Time: 30L > │ > │ Solution: (a, a) > │ Test case 1. A. Time: 25L > │ > │ Input | Expected | Result | Best > │ --- | --- | --- | --- > │ (a, a) | a | a | (1, 30) > │ (a, a) | a | a | (1, 25) > │ > │ Average Ranking > │ Test case 1. Average Time: 27L > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## empty2Tests > > ── markdown ──────────────────────────────────────────────────────────────────── > │ Test: Empty2 > │ > │ Solution: (a, a) > │ Test case 1. A. Time: 59L > │ > │ Solution: (a, a) > │ Test case 1. A. Time: 53L > │ > │ Input | Expected | Result | Best > │ --- | --- | --- | --- > │ (a, a) | a | a | (1, 59) > │ (a, a) | a | a | (1, 53) > │ > │ Averages > │ Test case 1. Average Time: 56L > │ > │ Ranking > │ Test case 1. Average Time: 56L > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let solutions = [[ > "A", > fun (a, _b) -> > a > ]] > let testCases = seq { > ("a", "a"), "a" > ("a", "a"), "a" > } > let rec empty2Tests = runAll (nameof empty2Tests) _count solutions testCases > empty2Tests > |> sortResultList > > ── [ 289.26ms - stdout ] ─────────────────────────────────────────────────────── > │ > │ > │ Test: empty2Tests > │ > │ Solution: (a, a) > │ Test case 1. A. Time: 26L > │ > │ Solution: (a, a) > │ Test case 1. A. Time: 26L > │ > │ Input | Expected | Result | Best > │ --- | --- | --- | --- > │ (a, a) | a | a | (1, 26) > │ (a, a) | a | a | (1, 26) > │ > │ Average Ranking > │ Test case 1. Average Time: 26L > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## emptyTests > > ── markdown ──────────────────────────────────────────────────────────────────── > │ Test: Empty > │ > │ Solution: 0 > │ Test case 1. A. Time: 61L > │ > │ Solution: 2 > │ Test case 1. A. Time: 62L > │ > │ Solution: 5 > │ Test case 1. A. Time: 70L > │ > │ Input | Expected | Result | Best > │ --- | --- | --- | --- > │ 0 | 0 | 0 | (1, 61) > │ 2 | 2 | 2 | (1, 62) > │ 5 | 5 | 5 | (1, 70) > │ > │ Averages > │ Test case 1. Average Time: 64L > │ > │ Ranking > │ Test case 1. Average Time: 64L > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let solutions = [[ > "A", > fun n -> > n + 0 > ]] > let testCases = seq { > 0, 0 > 2, 2 > 5, 5 > } > let rec emptyTests = runAll (nameof emptyTests) _count solutions testCases > emptyTests > |> sortResultList > > ── [ 476.97ms - stdout ] ─────────────────────────────────────────────────────── > │ > │ > │ Test: emptyTests > │ > │ Solution: 0 > │ Test case 1. A. Time: 29L > │ > │ Solution: 2 > │ Test case 1. A. Time: 26L > │ > │ Solution: 5 > │ Test case 1. A. Time: 57L > │ > │ Input | Expected | Result | Best > │ --- | --- | --- | --- > │ 0 | 0 | 0 | (1, 29) > │ 2 | 2 | 2 | (1, 26) > │ 5 | 5 | 5 | (1, 57) > │ > │ Average Ranking > │ Test case 1. Average Time: 37L > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## uniqueLettersTests > > ── markdown ──────────────────────────────────────────────────────────────────── > │ Test: UniqueLetters > │ > │ Solution: abc > │ Test case 1. A. Time: 1512L > │ Test case 2. B. Time: 1947L > │ Test case 3. C. Time: 2023L > │ Test case 4. D. Time: 1358L > │ Test case 5. E. Time: 1321L > │ Test case 6. F. Time: 1346L > │ Test case 7. G. Time: 1304L > │ Test case 8. H. Time: 1383L > │ Test case 9. I. Time: 1495L > │ Test case 10. J. Time: 1245L > │ Test case 11. K. Time: 1219L > │ > │ Solution: accabb > │ Test case 1. A. Time: 1648L > │ Test case 2. B. Time: 2061L > │ Test case 3. C. Time: 2413L > │ Test case 4. D. Time: 1561L > │ Test case 5. E. Time: 1593L > │ Test case 6. F. Time: 1518L > │ Test case 7. G. Time: 1415L > │ Test case 8. H. Time: 1510L > │ Test case 9. I. Time: 1445L > │ Test case 10. J. Time: 1636L > │ Test case 11. K. Time: 1317L > │ > │ Solution: pprrqqpp > │ Test case 1. A. Time: 2255L > │ Test case 2. B. Time: 2408L > │ Test case 3. C. Time: 2393L > │ Test case 4. D. Time: 1675L > │ Test case 5. E. Time: 1911L > │ Test case 6. F. Time: 2126L > │ Test case 7. G. Time: 1504L > │ Test case 8. H. Time: 1715L > │ Test case 9. I. Time: 1537L > │ Test case 10. J. Time: 1522L > │ Test case 11. K. Time: 1322L > │ > │ Solution: > aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb > │ Test case 1. A. Time: 13073L > │ Test case 2. B. Time: 11519L > │ Test case 3. C. Time: 8373L > │ Test case 4. D. Time: 5860L > │ Test case 5. E. Time: 6490L > │ Test case 6. F. Time: 6325L > │ Test case 7. G. Time: 5799L > │ Test case 8. H. Time: 7099L > │ Test case 9. I. Time: 6133L > │ Test case 10. J. Time: 5993L > │ Test case 11. K. Time: 2040L > │ > │ Input > | Expected | Result | Best > │ --- > | --- | --- | --- > │ abc > | abc | abc | (11, 1219) > │ accabb > | acb | acb | (11, 1317) > │ pprrqqpp > | prq | prq | (11, 1322) > │ > aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb > | acb | acb | (11, 2040) > │ > │ Averages > │ Test case 1. Average Time: 4622L > │ Test case 2. Average Time: 4483L > │ Test case 3. Average Time: 3800L > │ Test case 4. Average Time: 2613L > │ Test case 5. Average Time: 2828L > │ Test case 6. Average Time: 2828L > │ Test case 7. Average Time: 2505L > │ Test case 8. Average Time: 2926L > │ Test case 9. Average Time: 2652L > │ Test case 10. Average Time: 2599L > │ Test case 11. Average Time: 1474L > │ > │ Ranking > │ Test case 1. Average Time: 4622L > │ Test case 2. Average Time: 4483L > │ Test case 3. Average Time: 3800L > │ Test case 8. Average Time: 2926L > │ Test case 5. Average Time: 2828L > │ Test case 6. Average Time: 2828L > │ Test case 9. Average Time: 2652L > │ Test case 4. Average Time: 2613L > │ Test case 10. Average Time: 2599L > │ Test case 7. Average Time: 2505L > │ Test case 11. Average Time: 1474L > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let solutions = [[ > "A", > fun input -> > input > |> Seq.toList > |> List.fold (fun acc x -> if List.contains x acc then acc else acc @ [[ > x ]]) [[]] > |> Seq.toArray > |> String > > "B", > fun input -> > input > |> Seq.rev > |> fun list -> Seq.foldBack (fun x acc -> if List.contains x acc then > acc else x :: acc) list [[]] > |> Seq.rev > |> Seq.toArray > |> String > > "C", > fun input -> > input > |> Seq.rev > |> fun list -> Seq.foldBack (fun x (set, acc) -> if Set.contains x set > then set, acc else set.Add x, x :: acc) list (Set.empty, [[]]) > |> snd > |> Seq.rev > |> Seq.toArray > |> String > > "D", > fun input -> > input > |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc > else set.Add x, Array.append acc [[| x |]]) (Set.empty, [[||]]) > |> snd > |> String > > "E", > fun input -> > input > |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc > else set.Add x, x :: acc) (Set.empty, [[]]) > |> snd > |> List.rev > |> List.toArray > |> String > > "F", > fun input -> > input > |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc > else set.Add x, acc @ [[ x ]]) (Set.empty, [[]]) > |> snd > |> List.toArray > |> String > > "G", > fun input -> > input > |> Seq.fold (fun (set, acc) x -> if Set.contains x set then set, acc > else set.Add x, x :: acc) (Set.empty, [[]]) > |> snd > |> List.toArray > |> Array.rev > |> String > > "H", > fun input -> > input > |> Seq.toList > |> fun list -> > let rec 루프 set = function > | head :: tail when Set.contains head set -> 루프 set tail > | head :: tail -> (루프 (set.Add head) tail) @ [[ head ]] > | [[]] -> [[]] > 루프 Set.empty list > |> List.rev > |> List.toArray > |> String > > "I", > fun input -> > input > |> Seq.toList > |> fun list -> > let rec 루프 set = function > | head :: tail when Set.contains head set -> 루프 set tail > | head :: tail -> 루프 (set.Add head) tail |> Array.append [[| > head |]] > | [[]] -> [[||]] > 루프 Set.empty list > |> String > > "J", > fun input -> > input > |> Seq.toList > |> fun list -> > let rec 루프 set = function > | head :: tail when Set.contains head set -> 루프 set tail > | head :: tail -> head :: 루프 (set.Add head) tail > | [[]] -> [[]] > 루프 Set.empty list > |> List.toArray > |> String > > "K", > fun input -> > input > |> Seq.distinct > |> Seq.toArray > |> String > ]] > let testCases = seq { > "abc", "abc" > "accabb", "acb" > "pprrqqpp", "prq" > > "aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb > ", "acb" > } > let rec uniqueLettersTests = runAll (nameof uniqueLettersTests) _count solutions > testCases > uniqueLettersTests > |> sortResultList > > ── [ 48.14s - stdout ] ───────────────────────────────────────────────────────── > │ > │ > │ Test: uniqueLettersTests > │ > │ Solution: abc > │ Test case 1. A. Time: 710L > │ Test case 2. B. Time: 1235L > │ Test case 3. C. Time: 1428L > │ Test case 4. D. Time: 732L > │ Test case 5. E. Time: 811L > │ Test case 6. F. Time: 890L > │ Test case 7. G. Time: 810L > │ Test case 8. H. Time: 862L > │ Test case 9. I. Time: 708L > │ Test case 10. J. Time: 989L > │ Test case 11. K. Time: 689L > │ > │ Solution: accabb > │ Test case 1. A. Time: 950L > │ Test case 2. B. Time: 1279L > │ Test case 3. C. Time: 687L > │ Test case 4. D. Time: 449L > │ Test case 5. E. Time: 459L > │ Test case 6. F. Time: 447L > │ Test case 7. G. Time: 465L > │ Test case 8. H. Time: 478L > │ Test case 9. I. Time: 448L > │ Test case 10. J. Time: 356L > │ Test case 11. K. Time: 459L > │ > │ Solution: pprrqqpp > │ Test case 1. A. Time: 409L > │ Test case 2. B. Time: 534L > │ Test case 3. C. Time: 738L > │ Test case 4. D. Time: 493L > │ Test case 5. E. Time: 499L > │ Test case 6. F. Time: 513L > │ Test case 7. G. Time: 469L > │ Test case 8. H. Time: 503L > │ Test case 9. I. Time: 468L > │ Test case 10. J. Time: 422L > │ Test case 11. K. Time: 377L > │ > │ Solution: > aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb│ Test case 1. A. Time: 1547L > │ Test case 2. B. Time: 1787L > │ Test case 3. C. Time: 3131L > │ Test case 4. D. Time: 1666L > │ Test case 5. E. Time: 1962L > │ Test case 6. F. Time: 1815L > │ Test case 7. G. Time: 1936L > │ Test case 8. H. Time: 1720L > │ Test case 9. I. Time: 1799L > │ Test case 10. J. Time: 1523L > │ Test case 11. K. Time: 838L > │ > │ Input > | Expected | Result | Best > │ --- > | --- | --- | --- > │ abc > | abc | abc | (11, 689) > │ accabb > | acb | acb | (10, 356) > │ pprrqqpp > | prq | prq | (11, 377) > │ > aaaaaaaaaaaaaaccccccabbbbbbbaaacccbbbaaccccccccccacbbbbbbbbbbbbbcccccccbbbbbbbb | > acb | acb | (11, 838) > │ > │ Average Ranking > │ Test case 11. Average Time: 590L > │ Test case 10. Average Time: 822L > │ Test case 4. Average Time: 835L > │ Test case 9. Average Time: 855L > │ Test case 8. Average Time: 890L > │ Test case 1. Average Time: 904L > │ Test case 6. Average Time: 916L > │ Test case 7. Average Time: 920L > │ Test case 5. Average Time: 932L > │ Test case 2. Average Time: 1208L > │ Test case 3. Average Time: 1496L > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## rotateStringsTests > > ── markdown ──────────────────────────────────────────────────────────────────── > │ https://www.hackerrank.com/challenges/rotate-string/forum > │ > │ Test: RotateStrings > │ > │ Solution: abc > │ Test case 1. A. Time: 1842L > │ Test case 2. B. Time: 1846L > │ Test case 3. C. Time: 1936L > │ Test case 4. CA. Time: 2224L > │ Test case 5. CB. Time: 2329L > │ Test case 6. D. Time: 2474L > │ Test case 7. E. Time: 1664L > │ Test case 8. F. Time: 1517L > │ Test case 9. FA. Time: 1651L > │ Test case 10. FB. Time: 3764L > │ Test case 11. FC. Time: 5415L > │ > │ Solution: abcde > │ Test case 1. A. Time: 3356L > │ Test case 2. B. Time: 2592L > │ Test case 3. C. Time: 2346L > │ Test case 4. CA. Time: 2997L > │ Test case 5. CB. Time: 3061L > │ Test case 6. D. Time: 4051L > │ Test case 7. E. Time: 1905L > │ Test case 8. F. Time: 1771L > │ Test case 9. FA. Time: 2175L > │ Test case 10. FB. Time: 3275L > │ Test case 11. FC. Time: 5266L > │ > │ Solution: abcdefghi > │ Test case 1. A. Time: 4492L > │ Test case 2. B. Time: 3526L > │ Test case 3. C. Time: 3583L > │ Test case 4. CA. Time: 3711L > │ Test case 5. CB. Time: 4783L > │ Test case 6. D. Time: 7557L > │ Test case 7. E. Time: 3452L > │ Test case 8. F. Time: 3050L > │ Test case 9. FA. Time: 3275L > │ Test case 10. FB. Time: 4635L > │ Test case 11. FC. Time: 5616L > │ > │ Solution: abab > │ Test case 1. A. Time: 2093L > │ Test case 2. B. Time: 1843L > │ Test case 3. C. Time: 1746L > │ Test case 4. CA. Time: 2085L > │ Test case 5. CB. Time: 2139L > │ Test case 6. D. Time: 2095L > │ Test case 7. E. Time: 1723L > │ Test case 8. F. Time: 1558L > │ Test case 9. FA. Time: 1620L > │ Test case 10. FB. Time: 2319L > │ Test case 11. FC. Time: 3918L > │ > │ Solution: aa > │ Test case 1. A. Time: 1107L > │ Test case 2. B. Time: 1241L > │ Test case 3. C. Time: 1183L > │ Test case 4. CA. Time: 1563L > │ Test case 5. CB. Time: 1525L > │ Test case 6. D. Time: 1591L > │ Test case 7. E. Time: 1327L > │ Test case 8. F. Time: 1151L > │ Test case 9. FA. Time: 1180L > │ Test case 10. FB. Time: 1733L > │ Test case 11. FC. Time: 2817L > │ > │ Solution: z > │ Test case 1. A. Time: 816L > │ Test case 2. B. Time: 745L > │ Test case 3. C. Time: 928L > │ Test case 4. CA. Time: 1375L > │ Test case 5. CB. Time: 1029L > │ Test case 6. D. Time: 852L > │ Test case 7. E. Time: 712L > │ Test case 8. F. Time: 263L > │ Test case 9. FA. Time: 232L > │ Test case 10. FB. Time: 773L > │ Test case 11. FC. Time: 1789L > │ > │ Input | Expected > > | Result > > | Best > │ --- | --- > > | --- > > | --- > │ abc | bca cab abc > > | bca cab abc > > | (8, 1517) > │ abcde | bcdea cdeab deabc eabcd abcde > | bcdea cdeab deabc eabcd abcde > | (8, 1771) > │ abcdefghi | bcdefghia cdefghiab defghiabc efghiabcd > fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi | bcdefghia cdefghiab > defghiabc efghiabcd fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi | > (8, 3050) > │ abab | baba abab baba abab > | baba abab baba abab > | (8, 1558) > │ aa | aa aa > > | aa aa > > | (1, 1107) > │ z | z > > | z > > | (9, 232) > │ > │ Averages > │ Test case 1. Average Time: 2284L > │ Test case 2. Average Time: 1965L > │ Test case 3. Average Time: 1953L > │ Test case 4. Average Time: 2325L > │ Test case 5. Average Time: 2477L > │ Test case 6. Average Time: 3103L > │ Test case 7. Average Time: 1797L > │ Test case 8. Average Time: 1551L > │ Test case 9. Average Time: 1688L > │ Test case 10. Average Time: 2749L > │ Test case 11. Average Time: 4136L > │ > │ Ranking > │ Test case 11. Average Time: 4136L > │ Test case 6. Average Time: 3103L > │ Test case 10. Average Time: 2749L > │ Test case 5. Average Time: 2477L > │ Test case 4. Average Time: 2325L > │ Test case 1. Average Time: 2284L > │ Test case 2. Average Time: 1965L > │ Test case 3. Average Time: 1953L > │ Test case 7. Average Time: 1797L > │ Test case 9. Average Time: 1688L > │ Test case 8. Average Time: 1551L > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let solutions = [[ > "A", > fun (input: string) -> > let resultList = > List.fold (fun acc x -> > let rotate (text: string) (letter: string) = (text |> > SpiralSm.slice 1 (input.Length - 1)) + letter > [[ rotate (if acc.IsEmpty then input else acc.Head) (string x) > ]] @ acc > ) [[]] (Seq.toList input) > > (resultList, "") > ||> List.foldBack (fun acc x -> x + acc + " ") > |> _.TrimEnd() > > "B", > fun input -> > input > |> Seq.toList > |> List.fold (fun (acc: string list) letter -> > let last = > if acc.IsEmpty > then input > else acc.Head > > let item = last.[[1 .. input.Length - 1]] + string letter > > item :: acc > ) [[]] > |> List.rev > |> SpiralSm.concat " " > > "C", > fun input -> > input > |> Seq.toList > |> List.fold (fun (acc: string list) letter -> acc.Head.[[ 1 .. > input.Length - 1 ]] + string letter :: acc) [[ input ]] > |> List.rev > |> List.skip 1 > |> SpiralSm.concat " " > > "CA", > fun input -> > input > |> Seq.fold (fun (acc: string list) letter -> acc.Head.[[ 1 .. > input.Length - 1 ]] + string letter :: acc) [[ input ]] > |> Seq.rev > |> Seq.skip 1 > |> SpiralSm.concat " " > > "CB", > fun input -> > input > |> Seq.toArray > |> Array.fold (fun (acc: string[[]]) letter -> acc |> Array.append [[| > acc.[[0]].[[ 1 .. input.Length - 1 ]] + string letter |]]) [[| input |]] > |> Array.rev > |> Array.skip 1 > |> SpiralSm.concat " " > > "D", > fun input -> > input > |> Seq.toList > |> fun list -> > let rec 루프 (acc: char list list) = function > | _ when acc.Length = list.Length -> acc > | head :: tail -> > let item = tail @ [[ head ]] > 루프 (item :: acc) item > | [[]] -> [[]] > 루프 [[]] list > |> List.rev > |> List.map (List.toArray >> String) > |> SpiralSm.concat " " > > "E", > fun input -> > input > |> Seq.toList > |> fun list -> > let rec 루프 (last: string) = function > | head :: tail -> > let item = last.[[1 .. input.Length - 1]] + string head > item :: 루프 item tail > | [[]] -> [[]] > 루프 input list > |> SpiralSm.concat " " > > "F", > fun input -> > Array.singleton 0 > |> Array.append [[| 1 .. input.Length - 1 |]] > |> Array.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]]) > |> SpiralSm.concat " " > > "FA", > fun input -> > List.singleton 0 > |> List.append [[ 1 .. input.Length - 1 ]] > |> List.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]]) > |> SpiralSm.concat " " > > "FB", > fun input -> > Seq.singleton 0 > |> Seq.append (seq { 1 .. input.Length - 1 }) > |> Seq.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]]) > |> SpiralSm.concat " " > > "FC", > fun input -> > Array.singleton 0 > |> Array.append [[| 1 .. input.Length - 1 |]] > |> Array.Parallel.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]]) > |> SpiralSm.concat " " > ]] > let testCases = seq { > "abc", "bca cab abc" > "abcde", "bcdea cdeab deabc eabcd abcde" > "abcdefghi", "bcdefghia cdefghiab defghiabc efghiabcd fghiabcde ghiabcdef > hiabcdefg iabcdefgh abcdefghi" > "abab", "baba abab baba abab" > "aa", "aa aa" > "z", "z" > } > let rec rotateStringsTests = runAll (nameof rotateStringsTests) _count solutions > testCases > rotateStringsTests > |> sortResultList > > ── [ 57.11s - stdout ] ───────────────────────────────────────────────────────── > │ > │ > │ Test: rotateStringsTests > │ > │ Solution: abc > │ Test case 1. A. Time: 621L > │ Test case 2. B. Time: 516L > │ Test case 3. C. Time: 536L > │ Test case 4. CA. Time: 740L > │ Test case 5. CB. Time: 728L > │ Test case 6. D. Time: 623L > │ Test case 7. E. Time: 485L > │ Test case 8. F. Time: 288L > │ Test case 9. FA. Time: 444L > │ Test case 10. FB. Time: 900L > │ Test case 11. FC. Time: 1199L > │ > │ Solution: abcde > │ Test case 1. A. Time: 870L > │ Test case 2. B. Time: 633L > │ Test case 3. C. Time: 693L > │ Test case 4. CA. Time: 772L > │ Test case 5. CB. Time: 834L > │ Test case 6. D. Time: 889L > │ Test case 7. E. Time: 605L > │ Test case 8. F. Time: 439L > │ Test case 9. FA. Time: 618L > │ Test case 10. FB. Time: 985L > │ Test case 11. FC. Time: 1269L > │ > │ Solution: abcdefghi > │ Test case 1. A. Time: 1450L > │ Test case 2. B. Time: 1016L > │ Test case 3. C. Time: 1122L > │ Test case 4. CA. Time: 1149L > │ Test case 5. CB. Time: 1294L > │ Test case 6. D. Time: 1921L > │ Test case 7. E. Time: 958L > │ Test case 8. F. Time: 774L > │ Test case 9. FA. Time: 1008L > │ Test case 10. FB. Time: 1442L > │ Test case 11. FC. Time: 1727L > │ > │ Solution: abab > │ Test case 1. A. Time: 675L > │ Test case 2. B. Time: 562L > │ Test case 3. C. Time: 577L > │ Test case 4. CA. Time: 687L > │ Test case 5. CB. Time: 658L > │ Test case 6. D. Time: 764L > │ Test case 7. E. Time: 513L > │ Test case 8. F. Time: 369L > │ Test case 9. FA. Time: 520L > │ Test case 10. FB. Time: 880L > │ Test case 11. FC. Time: 1211L > │ > │ Solution: aa > │ Test case 1. A. Time: 403L > │ Test case 2. B. Time: 375L > │ Test case 3. C. Time: 376L > │ Test case 4. CA. Time: 531L > │ Test case 5. CB. Time: 450L > │ Test case 6. D. Time: 450L > │ Test case 7. E. Time: 329L > │ Test case 8. F. Time: 255L > │ Test case 9. FA. Time: 263L > │ Test case 10. FB. Time: 676L > │ Test case 11. FC. Time: 1154L > │ > │ Solution: z > │ Test case 1. A. Time: 233L > │ Test case 2. B. Time: 181L > │ Test case 3. C. Time: 256L > │ Test case 4. CA. Time: 436L > │ Test case 5. CB. Time: 296L > │ Test case 6. D. Time: 263L > │ Test case 7. E. Time: 171L > │ Test case 8. F. Time: 69L > │ Test case 9. FA. Time: 90L > │ Test case 10. FB. Time: 365L > │ Test case 11. FC. Time: 939L > │ > │ Input | Expected > | Result > > | Best > │ --- | --- > > | --- > > | --- > │ abc | bca cab abc > | bca cab abc > | (8, 288) > │ abcde | bcdea cdeab deabc eabcd abcde > | bcdea cdeab deabc eabcd abcde > | (8, 439) > │ abcdefghi | bcdefghia cdefghiab defghiabc efghiabcd fghiabcde > ghiabcdef hiabcdefg iabcdefgh abcdefghi | bcdefghia cdefghiab defghiabc efghiabcd > fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi | (8, 774) > │ abab | baba abab baba abab > | baba abab baba abab > | (8, 369) > │ aa | aa aa > > | aa aa > > | (8, 255) > │ z | z > > | z > > | (8, 69) > │ > │ Average Ranking > │ Test case 8. Average Time: 365L > │ Test case 9. Average Time: 490L > │ Test case 7. Average Time: 510L > │ Test case 2. Average Time: 547L > │ Test case 3. Average Time: 593L > │ Test case 1. Average Time: 708L > │ Test case 5. Average Time: 710L > │ Test case 4. Average Time: 719L > │ Test case 6. Average Time: 818L > │ Test case 10. Average Time: 874L > │ Test case 11. Average Time: 1249L > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## rotate_strings_tests > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ``` > │ 02:21:12 verbose #1 benchmark.run_all / {count = > 2000000; test_name = rotate_strings_tests} > │ > │ 02:21:12 verbose #2 benchmark.run / {input_str = > "abc"} > │ 02:21:13 verbose #3 benchmark.run / solutions.map / {i > = 1; test_name = F; time = 638} > │ 02:21:14 verbose #4 benchmark.run / solutions.map / {i > = 2; test_name = FA; time = 779} > │ > │ 02:21:14 verbose #5 benchmark.run / {input_str = > "abcde"} > │ 02:21:15 verbose #6 benchmark.run / solutions.map / {i > = 1; test_name = F; time = 745} > │ 02:21:16 verbose #7 benchmark.run / solutions.map / {i > = 2; test_name = FA; time = 809} > │ > │ 02:21:16 verbose #8 benchmark.run / {input_str = > "abcdefghi"} > │ 02:21:17 verbose #9 benchmark.run / solutions.map / {i > = 1; test_name = F; time = 1092} > │ 02:21:18 verbose #10 benchmark.run / solutions.map / > {i = 2; test_name = FA; time = 1304} > │ > │ 02:21:18 verbose #11 benchmark.run / {input_str = > "abab"} > │ 02:21:19 verbose #12 benchmark.run / solutions.map / > {i = 1; test_name = F; time = 536} > │ 02:21:20 verbose #13 benchmark.run / solutions.map / > {i = 2; test_name = FA; time = 620} > │ > │ 02:21:20 verbose #14 benchmark.run / {input_str = > "aa"} > │ 02:21:21 verbose #15 benchmark.run / solutions.map / > {i = 1; test_name = F; time = 365} > │ 02:21:21 verbose #16 benchmark.run / solutions.map / > {i = 2; test_name = FA; time = 396} > │ > │ 02:21:21 verbose #17 benchmark.run / {input_str = "z"} > │ 02:21:22 verbose #18 benchmark.run / solutions.map / > {i = 1; test_name = F; time = 158} > │ 02:21:22 verbose #19 benchmark.run / solutions.map / > {i = 2; test_name = FA; time = 143} > │ ``` > │ input | expected > > | result > > | best > │ --- | --- > > | --- > > | --- > │ "abc" | "bca cab abc" > | "bca cab abc" > | 1, 638 > │ "abcde" | "bcdea cdeab deabc eabcd abcde" > | "bcdea cdeab deabc eabcd abcde" > | 1, 745 > │ "abcdefghi" | "bcdefghia cdefghiab defghiabc efghiabcd > fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi" | "bcdefghia cdefghiab > defghiabc efghiabcd fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi" | 1, 1092 > │ "abab" | "baba abab baba abab" > | "baba abab baba abab" > | 1, 536 > │ "aa" | "aa aa" > > | "aa aa" > > | 1, 365 > │ "z" | "z" > > | "z" > > | 2, 143 > │ ``` > │ 02:21:22 verbose #20 benchmark.sort_result_list / > averages.iter / {avg = 589; i = 1} > │ 02:21:22 verbose #21 benchmark.sort_result_list / > averages.iter / {avg = 675; i = 2} > │ ``` > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > //// timeout=60000 > > inl get_solutions () = > [[ > // "A", > // fun (input : string) => > // let resultList = > // List.fold (fun acc x => > // let rotate (text : string) (letter : string) = > text.Substring (1, input.Length - 1) + letter > // [[ rotate (if acc.IsEmpty then input else acc.Head) > (string x) ]] ++ acc > // ) [[]] (Seq.toList input) > > // List.foldBack (fun acc x => x + acc + " ") resultList "" > // |> fun x => x.TrimEnd () > > // "B", > // fun input => > // input > // |> Seq.toList > // |> List.fold (fun (acc : string list) letter => > // let last = > // if acc.IsEmpty > // then input > // else acc.Head > > // let item = last.[[1 .. input.Length - 1]] + string letter > > // item :: acc > // ) [[]] > // |> List.rev > // |> SpiralSm.concat " " > > // "C", > // fun input => > // input > // |> Seq.toList > // |> List.fold (fun (acc : list string) letter => acc.Head.[[ 1 .. > input.Length - 1 ]] + string letter :: acc) [[ input ]] > // |> List.rev > // |> List.skip 1 > // |> SpiralSm.concat " " > > // "CA", > // fun input => > // input > // |> Seq.fold (fun (acc : list string) letter => acc.Head.[[ 1 .. > input.Length - 1 ]] + string letter :: acc) [[ input ]] > // |> Seq.rev > // |> Seq.skip 1 > // |> SpiralSm.concat " " > > // "CB", > // fun input => > // input > // |> Seq.toArray > // |> Array.fold (fun (acc : a _ string) letter => acc |> > Array.append (a ;[[ acc.[[0]].[[ 1 .. input.Length - 1 ]] + string letter ]])) > (a ;[[ input ]]) > // |> Array.rev > // |> Array.skip 1 > // |> SpiralSm.concat " " > > // "D", > // fun input => > // input > // |> Seq.toList > // |> fun list => > // let rec 루프 (acc : list (list char)) = function > // | _ when acc.Length = list.Length => acc > // | head :: tail => > // let item = tail ++ [[ head ]] > // 루프 (item :: acc) item > // | [[]] => [[]] > // 루프 [[]] list > // |> List.rev > // |> List.map (List.toArray >> String) > // |> SpiralSm.concat " " > > // "E", > // fun input => > // input > // |> Seq.toList > // |> fun list => > // let rec 루프 (last : string) = function > // | head :: tail => > // let item = last.[[1 .. input.Length - 1]] + string > head > // item :: 루프 item tail > // | [[]] => [[]] > // 루프 input list > // |> SpiralSm.concat " " > > "F", > fun input => > // Array.singleton 0 > // |> Array.append [[| 1 .. input.Length - 1 |]] > // |> Array.map (fun i -> input.[[ i .. ]] + input.[[ .. i - 1 ]]) > // |> SpiralSm.concat " " > inl input_length = input |> sm.length > am.singleton 0i32 > |> am.append (am'.init_series 1 (input_length - 1) 1 |> fun x => a x > : _ int _) > |> fun (a x) => x > |> am'.map_base fun i => > inl a = input |> sm'.slice i (input_length - 1) > inl b = input |> sm'.slice 0 (i - 1) > a +. b > |> fun x => a x : _ int _ > |> seq.of_array > |> sm'.concat " " > > "FA", > fun input => > // List.singleton 0 > // |> List.append [[ 1 .. input.Length - 1 ]] > // // |> List.map (fun i => input.[[ i .. ]] + input.[[ .. i - 1 ]]) > // |> SpiralSm.concat " " > inl input_length = input |> sm.length > listm.singleton 0i32 > |> listm.append (listm'.init_series 1 (input_length - 1) 1) > |> listm.map (fun i => > inl a = input |> sm'.slice i (input_length - 1) > inl b = if i = 0 then "" else input |> sm'.slice 0 (i - 1) > a +. b > ) > |> listm'.box > |> listm'.to_array' > |> fun x => a x : _ int _ > |> seq.of_array > |> sm'.concat " " > > // "FB", > // fun input => > // Seq.singleton 0 > // // |> Seq.append (seq { 1 .. input.Length - 1 }) > // // |> Seq.map (fun i => input.[[ i .. ]] + input.[[ .. i - 1 ]]) > // |> SpiralSm.concat " " > > // "FC", > // fun input => > // Array.singleton 0 > // |> Array.append (a ;[[ 1 .. input.Length - 1 ]]) > //// |> Array.Parallel.map (fun i => input.[[ i .. ]] + input.[[ .. i > - 1 ]]) > // |> SpiralSm.concat " " > ]] > > inl rec rotate_strings_tests () = > inl test_cases = [[ > "abc", "bca cab abc" > "abcde", "bcdea cdeab deabc eabcd abcde" > "abcdefghi", "bcdefghia cdefghiab defghiabc efghiabcd fghiabcde > ghiabcdef hiabcdefg iabcdefgh abcdefghi" > "abab", "baba abab baba abab" > "aa", "aa aa" > "z", "z" > ]] > > inl solutions = get_solutions () > > // inl is_fast () = true > > inl count = > if is_fast () > then 1000i32 > else 2000000i32 > > run_all (reflection.nameof { rotate_strings_tests }) count solutions > test_cases > |> sort_result_list > > rotate_strings_tests () > > ── [ 10.11s - stdout ] ───────────────────────────────────────────────────────── > │ > │ ``` > │ 00:00:00 v #1 benchmark.run_all / { test_name = > rotate_strings_tests; count = 2000000 } > │ > │ 00:00:00 v #2 benchmark.run / { input_str = abc } > │ 00:00:00 v #3 benchmark.run / solutions.map / { i = 1; > test_name = F; time = 534 } > │ 00:00:01 v #4 benchmark.run / solutions.map / { i = 2; > test_name = FA; time = 547 } > │ > │ 00:00:01 v #5 benchmark.run / { input_str = abcde } > │ 00:00:02 v #6 benchmark.run / solutions.map / { i = 1; > test_name = F; time = 545 } > │ 00:00:02 v #7 benchmark.run / solutions.map / { i = 2; > test_name = FA; time = 714 } > │ > │ 00:00:02 v #8 benchmark.run / { input_str = abcdefghi } > │ 00:00:04 v #9 benchmark.run / solutions.map / { i = 1; > test_name = F; time = 886 } > │ 00:00:05 v #10 benchmark.run / solutions.map / { i = 2; > test_name = FA; time = 1147 } > │ > │ 00:00:05 v #11 benchmark.run / { input_str = abab } > │ 00:00:06 v #12 benchmark.run / solutions.map / { i = 1; > test_name = F; time = 452 } > │ 00:00:06 v #13 benchmark.run / solutions.map / { i = 2; > test_name = FA; time = 615 } > │ > │ 00:00:06 v #14 benchmark.run / { input_str = aa } > │ 00:00:07 v #15 benchmark.run / solutions.map / { i = 1; > test_name = F; time = 287 } > │ 00:00:07 v #16 benchmark.run / solutions.map / { i = 2; > test_name = FA; time = 366 } > │ > │ 00:00:07 v #17 benchmark.run / { input_str = z } > │ 00:00:08 v #18 benchmark.run / solutions.map / { i = 1; > test_name = F; time = 104 } > │ 00:00:08 v #19 benchmark.run / solutions.map / { i = 2; > test_name = FA; time = 119 } > │ ``` > │ input | expected > | result > > | best > │ --- | --- > > | --- > > | --- > │ abc | bca cab abc > | bca cab abc > | 1, 534 > │ abcde | bcdea cdeab deabc eabcd abcde > | bcdea cdeab deabc eabcd abcde > | 1, 545 > │ abcdefghi | bcdefghia cdefghiab defghiabc efghiabcd fghiabcde > ghiabcdef hiabcdefg iabcdefgh abcdefghi | bcdefghia cdefghiab defghiabc efghiabcd > fghiabcde ghiabcdef hiabcdefg iabcdefgh abcdefghi | 1, 886 > │ abab | baba abab baba abab > | baba abab baba abab > | 1, 452 > │ aa | aa aa > > | aa aa > > | 1, 287 > │ z | z > > | z > > | 1, 104 > │ ``` > │ 00:00:08 v #20 benchmark.sort_result_list / > averages.iter / { i = 1; avg = 468 } > │ 00:00:08 v #21 benchmark.sort_result_list / > averages.iter / { i = 2; avg = 584 } > │ ``` > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > // rotate_strings_tests () > () > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## binary_search_tests > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ``` > │ 02:19:29 verbose #1 benchmark.run_all / {count = > 10000000; test_name = binary_search_tests} > │ > │ 02:19:29 verbose #2 benchmark.run / {input_str = > struct ([|1; 3; 4; 6; 8; 9; 11|], 6, 7)} > │ 02:19:30 verbose #3 benchmark.run / solutions.map / {i > = 1; test_name = semi_open_1; time = 662} > │ 02:19:30 verbose #4 benchmark.run / solutions.map / {i > = 2; test_name = closed_1; time = 619} > │ 02:19:31 verbose #5 benchmark.run / solutions.map / {i > = 3; test_name = semi_open_2; time = 644} > │ 02:19:32 verbose #6 benchmark.run / solutions.map / {i > = 4; test_name = closed_2; time = 610} > │ > │ 02:19:32 verbose #7 benchmark.run / {input_str = > struct ([|1; 3; 4; 6; 8; 9; 11|], 1, 7)} > │ 02:19:33 verbose #8 benchmark.run / solutions.map / {i > = 1; test_name = semi_open_1; time = 607} > │ 02:19:33 verbose #9 benchmark.run / solutions.map / {i > = 2; test_name = closed_1; time = 559} > │ 02:19:34 verbose #10 benchmark.run / solutions.map / > {i = 3; test_name = semi_open_2; time = 612} > │ 02:19:35 verbose #11 benchmark.run / solutions.map / > {i = 4; test_name = closed_2; time = 577} > │ > │ 02:19:35 verbose #12 benchmark.run / {input_str = > struct ([|1; 3; 4; 6; 8; 9; 11|], 11, 7)} > │ 02:19:35 verbose #13 benchmark.run / solutions.map / > {i = 1; test_name = semi_open_1; time = 550} > │ 02:19:36 verbose #14 benchmark.run / solutions.map / > {i = 2; test_name = closed_1; time = 580} > │ 02:19:37 verbose #15 benchmark.run / solutions.map / > {i = 3; test_name = semi_open_2; time = 624} > │ 02:19:37 verbose #16 benchmark.run / solutions.map / > {i = 4; test_name = closed_2; time = 590} > │ > │ 02:19:37 verbose #17 benchmark.run / {input_str = > struct ([|1; 3; 4; 6; 8; 9; 11|], 12, 7)} > │ 02:19:38 verbose #18 benchmark.run / solutions.map / > {i = 1; test_name = semi_open_1; time = 574} > │ 02:19:39 verbose #19 benchmark.run / solutions.map / > {i = 2; test_name = closed_1; time = 577} > │ 02:19:39 verbose #20 benchmark.run / solutions.map / > {i = 3; test_name = semi_open_2; time = 582} > │ 02:19:40 verbose #21 benchmark.run / solutions.map / > {i = 4; test_name = closed_2; time = 585} > │ > │ 02:19:40 verbose #22 benchmark.run / {input_str = > struct ([|1; 2; 3; 4...00; ...|], 60, 1000)} > │ 02:19:41 verbose #23 benchmark.run / solutions.map / > {i = 1; test_name = semi_open_1; time = 610} > │ 02:19:42 verbose #24 benchmark.run / solutions.map / > {i = 2; test_name = closed_1; time = 672} > │ 02:19:42 verbose #25 benchmark.run / solutions.map / > {i = 3; test_name = semi_open_2; time = 636} > │ 02:19:43 verbose #26 benchmark.run / solutions.map / > {i = 4; test_name = closed_2; time = 629} > │ > │ 02:19:43 verbose #27 benchmark.run / {input_str = > struct ([|1; 3; 4; 6; 8; 9; 11|], 6, 7)} > │ 02:19:44 verbose #28 benchmark.run / solutions.map / > {i = 1; test_name = semi_open_1; time = 599} > │ 02:19:44 verbose #29 benchmark.run / solutions.map / > {i = 2; test_name = closed_1; time = 561} > │ 02:19:45 verbose #30 benchmark.run / solutions.map / > {i = 3; test_name = semi_open_2; time = 604} > │ 02:19:46 verbose #31 benchmark.run / solutions.map / > {i = 4; test_name = closed_2; time = 573} > │ > │ 02:19:46 verbose #32 benchmark.run / {input_str = > struct ([|1; 3; 4; 6; 8; 9; 11|], 1, 7)} > │ 02:19:47 verbose #33 benchmark.run / solutions.map / > {i = 1; test_name = semi_open_1; time = 635} > │ 02:19:47 verbose #34 benchmark.run / solutions.map / > {i = 2; test_name = closed_1; time = 603} > │ 02:19:48 verbose #35 benchmark.run / solutions.map / > {i = 3; test_name = semi_open_2; time = 644} > │ 02:19:49 verbose #36 benchmark.run / solutions.map / > {i = 4; test_name = closed_2; time = 628} > │ > │ 02:19:49 verbose #37 benchmark.run / {input_str = > struct ([|1; 3; 4; 6; 8; 9; 11|], 11, 7)} > │ 02:19:49 verbose #38 benchmark.run / solutions.map / > {i = 1; test_name = semi_open_1; time = 643} > │ 02:19:50 verbose #39 benchmark.run / solutions.map / > {i = 2; test_name = closed_1; time = 606} > │ 02:19:51 verbose #40 benchmark.run / solutions.map / > {i = 3; test_name = semi_open_2; time = 636} > │ 02:19:52 verbose #41 benchmark.run / solutions.map / > {i = 4; test_name = closed_2; time = 624} > │ > │ 02:19:52 verbose #42 benchmark.run / {input_str = > struct ([|1; 3; 4; 6; 8; 9; 11|], 12, 7)} > │ 02:19:52 verbose #43 benchmark.run / solutions.map / > {i = 1; test_name = semi_open_1; time = 689} > │ 02:19:53 verbose #44 benchmark.run / solutions.map / > {i = 2; test_name = closed_1; time = 613} > │ 02:19:54 verbose #45 benchmark.run / solutions.map / > {i = 3; test_name = semi_open_2; time = 623} > │ 02:19:55 verbose #46 benchmark.run / solutions.map / > {i = 4; test_name = closed_2; time = 613} > │ > │ 02:19:55 verbose #47 benchmark.run / {input_str = > struct ([|1; 2; 3; 4...100; ...|], 60, 100)} > │ 02:19:55 verbose #48 benchmark.run / solutions.map / > {i = 1; test_name = semi_open_1; time = 630} > │ 02:19:56 verbose #49 benchmark.run / solutions.map / > {i = 2; test_name = closed_1; time = 633} > │ 02:19:57 verbose #50 benchmark.run / solutions.map / > {i = 3; test_name = semi_open_2; time = 653} > │ 02:19:58 verbose #51 benchmark.run / solutions.map / > {i = 4; test_name = closed_2; time = 646} > │ ``` > │ input | expected | result | > best > │ --- | --- | --- | > --- > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7) | US4_0 3 | US4_0 3 | > 4, 610 > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7) | US4_0 0 | US4_0 0 | > 2, 559 > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7) | US4_0 6 | US4_0 6 | > 1, 550 > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7) | US4_1 | US4_1 | > 1, 574 > │ struct ([1; 2; 3; 4...00; ...], 60, 1000) | US4_0 59 | US4_0 59 | > 1, 610 > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7) | US4_0 3 | US4_0 3 | > 2, 561 > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7) | US4_0 0 | US4_0 0 | > 2, 603 > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7) | US4_0 6 | US4_0 6 | > 2, 606 > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7) | US4_1 | US4_1 | > 2, 613 > │ struct ([1; 2; 3; 4...100; ...], 60, 100) | US4_0 59 | US4_0 59 | > 1, 630 > │ ``` > │ 02:19:58 verbose #52 benchmark.sort_result_list / > averages.iter / {avg = 602; i = 2} > │ 02:19:58 verbose #53 benchmark.sort_result_list / > averages.iter / {avg = 607; i = 4} > │ 02:19:58 verbose #54 benchmark.sort_result_list / > averages.iter / {avg = 619; i = 1} > │ 02:19:58 verbose #55 benchmark.sort_result_list / > averages.iter / {avg = 625; i = 3} > │ ``` > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > //// timeout=90000 > > inl binary_search_semi_open_1 arr target left right = > inl rec body left right = > if left >= right > then None > else > inl mid = (left + right) / 2 > inl item = index arr mid > if item = target > then Some mid > elif item < target > then 루프 (mid + 1) right > else 루프 left mid > and inl 루프 left right = > if var_is right |> not > then body left right > else > inl left = dyn left > join body left right > 루프 left right > > inl binary_search_closed_1 arr target left right = > inl rec body left right = > if left > right > then None > else > inl mid = (left + right) / 2 > inl item = index arr mid > if item = target > then Some mid > elif item < target > then 루프 (mid + 1) right > else 루프 left (mid - 1) > and inl 루프 left right = > if var_is right |> not > then body left right > else > inl left = dyn left > join body left right > 루프 left right > > inl binary_search_semi_open_2 arr target left right = > let rec body left right = > if left >= right > then None > else > inl mid = (left + right) / 2 > inl item = index arr mid > if item = target > then Some mid > elif item < target > then 루프 (mid + 1) right > else 루프 left mid > and inl 루프 left right = body left right > 루프 left right > > inl binary_search_closed_2 arr target left right = > let rec body left right = > if left > right > then None > else > inl mid = (left + right) / 2 > inl item = index arr mid > if item = target > then Some mid > elif item < target > then 루프 (mid + 1) right > else 루프 left (mid - 1) > and inl 루프 left right = body left right > 루프 left right > > inl get_solutions () = > [[ > "semi_open_1", > fun (arr, (target, len)) => > binary_search_semi_open_1 arr target 0 len > > "closed_1", > fun (arr, (target, len)) => > binary_search_closed_1 arr target 0 (len - 1) > > "semi_open_2", > fun (arr, (target, len)) => > binary_search_semi_open_2 arr target 0 len > > "closed_2", > fun (arr, (target, len)) => > binary_search_closed_2 arr target 0 (len - 1) > ]] > > inl rec binary_search_tests () = > inl arr_with_len target len arr = > arr, (target, (len |> optionm'.default_with fun () => length arr)) > > inl test_cases = [[ > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 6 None), (Some 3i32) > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 1 None), (Some 0i32) > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 11 None), (Some 6i32) > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 12 None), None > ((am'.init_series 1i32 1000 1 |> fun x => a x : _ int _) |> arr_with_len > 60 None), (Some 59) > > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 6 (Some 7)), (Some > 3i32) > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 1 (Some 7)), (Some > 0i32) > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 11 (Some 7)), (Some > 6i32) > (a ;[[ 1i32; 3; 4; 6; 8; 9; 11 ]] |> arr_with_len 12 (Some 7)), None > ((am'.init_series 1i32 1000 1 |> fun x => a x : _ int _) |> arr_with_len > 60 (Some 100)), (Some 59) > ]] > > inl solutions = get_solutions () > > // inl is_fast () = true > > inl count = > if is_fast () > then 1000i32 > else 10000000i32 > > run_all (reflection.nameof { binary_search_tests }) count solutions > test_cases > |> sort_result_list > > > let main () = > binary_search_tests () > > ── [ 9.52s - stdout ] ────────────────────────────────────────────────────────── > │ > │ ``` > │ 00:00:00 v #1 benchmark.run_all / { test_name = > binary_search_tests; count = 10000000 } > │ > │ 00:00:00 v #2 benchmark.run / { input_str = struct ([|1; > 3; 4; 6; 8; 9; 11|], 6, 7) } > │ 00:00:00 v #3 benchmark.run / solutions.map / { i = 1; > test_name = semi_open_1; time = 172 } > │ 00:00:00 v #4 benchmark.run / solutions.map / { i = 2; > test_name = closed_1; time = 159 } > │ 00:00:00 v #5 benchmark.run / solutions.map / { i = 3; > test_name = semi_open_2; time = 231 } > │ 00:00:01 v #6 benchmark.run / solutions.map / { i = 4; > test_name = closed_2; time = 143 } > │ > │ 00:00:01 v #7 benchmark.run / { input_str = struct ([|1; > 3; 4; 6; 8; 9; 11|], 1, 7) } > │ 00:00:01 v #8 benchmark.run / solutions.map / { i = 1; > test_name = semi_open_1; time = 143 } > │ 00:00:01 v #9 benchmark.run / solutions.map / { i = 2; > test_name = closed_1; time = 87 } > │ 00:00:01 v #10 benchmark.run / solutions.map / { i = 3; > test_name = semi_open_2; time = 78 } > │ 00:00:01 v #11 benchmark.run / solutions.map / { i = 4; > test_name = closed_2; time = 81 } > │ > │ 00:00:01 v #12 benchmark.run / { input_str = struct > ([|1; 3; 4; 6; 8; 9; 11|], 11, 7) } > │ 00:00:02 v #13 benchmark.run / solutions.map / { i = 1; > test_name = semi_open_1; time = 82 } > │ 00:00:02 v #14 benchmark.run / solutions.map / { i = 2; > test_name = closed_1; time = 82 } > │ 00:00:02 v #15 benchmark.run / solutions.map / { i = 3; > test_name = semi_open_2; time = 79 } > │ 00:00:02 v #16 benchmark.run / solutions.map / { i = 4; > test_name = closed_2; time = 82 } > │ > │ 00:00:02 v #17 benchmark.run / { input_str = struct > ([|1; 3; 4; 6; 8; 9; 11|], 12, 7) } > │ 00:00:02 v #18 benchmark.run / solutions.map / { i = 1; > test_name = semi_open_1; time = 86 } > │ 00:00:03 v #19 benchmark.run / solutions.map / { i = 2; > test_name = closed_1; time = 88 } > │ 00:00:03 v #20 benchmark.run / solutions.map / { i = 3; > test_name = semi_open_2; time = 87 } > │ 00:00:03 v #21 benchmark.run / solutions.map / { i = 4; > test_name = closed_2; time = 90 } > │ > │ 00:00:03 v #22 benchmark.run / { input_str = struct > ([|1; 2; 3; 4...00; ...|], 60, 1000) } > │ 00:00:03 v #23 benchmark.run / solutions.map / { i = 1; > test_name = semi_open_1; time = 113 } > │ 00:00:03 v #24 benchmark.run / solutions.map / { i = 2; > test_name = closed_1; time = 117 } > │ 00:00:04 v #25 benchmark.run / solutions.map / { i = 3; > test_name = semi_open_2; time = 110 } > │ 00:00:04 v #26 benchmark.run / solutions.map / { i = 4; > test_name = closed_2; time = 118 } > │ > │ 00:00:04 v #27 benchmark.run / { input_str = struct > ([|1; 3; 4; 6; 8; 9; 11|], 6, 7) } > │ 00:00:04 v #28 benchmark.run / solutions.map / { i = 1; > test_name = semi_open_1; time = 74 } > │ 00:00:04 v #29 benchmark.run / solutions.map / { i = 2; > test_name = closed_1; time = 75 } > │ 00:00:04 v #30 benchmark.run / solutions.map / { i = 3; > test_name = semi_open_2; time = 77 } > │ 00:00:04 v #31 benchmark.run / solutions.map / { i = 4; > test_name = closed_2; time = 75 } > │ > │ 00:00:04 v #32 benchmark.run / { input_str = struct > ([|1; 3; 4; 6; 8; 9; 11|], 1, 7) } > │ 00:00:05 v #33 benchmark.run / solutions.map / { i = 1; > test_name = semi_open_1; time = 78 } > │ 00:00:05 v #34 benchmark.run / solutions.map / { i = 2; > test_name = closed_1; time = 80 } > │ 00:00:05 v #35 benchmark.run / solutions.map / { i = 3; > test_name = semi_open_2; time = 77 } > │ 00:00:05 v #36 benchmark.run / solutions.map / { i = 4; > test_name = closed_2; time = 79 } > │ > │ 00:00:05 v #37 benchmark.run / { input_str = struct > ([|1; 3; 4; 6; 8; 9; 11|], 11, 7) } > │ 00:00:05 v #38 benchmark.run / solutions.map / { i = 1; > test_name = semi_open_1; time = 80 } > │ 00:00:05 v #39 benchmark.run / solutions.map / { i = 2; > test_name = closed_1; time = 87 } > │ 00:00:06 v #40 benchmark.run / solutions.map / { i = 3; > test_name = semi_open_2; time = 81 } > │ 00:00:06 v #41 benchmark.run / solutions.map / { i = 4; > test_name = closed_2; time = 86 } > │ > │ 00:00:06 v #42 benchmark.run / { input_str = struct > ([|1; 3; 4; 6; 8; 9; 11|], 12, 7) } > │ 00:00:06 v #43 benchmark.run / solutions.map / { i = 1; > test_name = semi_open_1; time = 91 } > │ 00:00:06 v #44 benchmark.run / solutions.map / { i = 2; > test_name = closed_1; time = 86 } > │ 00:00:06 v #45 benchmark.run / solutions.map / { i = 3; > test_name = semi_open_2; time = 85 } > │ 00:00:07 v #46 benchmark.run / solutions.map / { i = 4; > test_name = closed_2; time = 90 } > │ > │ 00:00:07 v #47 benchmark.run / { input_str = struct > ([|1; 2; 3; 4...100; ...|], 60, 100) } > │ 00:00:07 v #48 benchmark.run / solutions.map / { i = 1; > test_name = semi_open_1; time = 100 } > │ 00:00:07 v #49 benchmark.run / solutions.map / { i = 2; > test_name = closed_1; time = 104 } > │ 00:00:07 v #50 benchmark.run / solutions.map / { i = 3; > test_name = semi_open_2; time = 101 } > │ 00:00:07 v #51 benchmark.run / solutions.map / { i = 4; > test_name = closed_2; time = 104 } > │ ``` > │ input | expected | result | > best > │ --- | --- | --- | > --- > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7) | US7_0 3 | US7_0 3 | > 4, 143 > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7) | US7_0 0 | US7_0 0 | > 3, 78 > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7) | US7_0 6 | US7_0 6 | > 3, 79 > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7) | US7_1 | US7_1 | > 1, 86 > │ struct ([1; 2; 3; 4...00; ...], 60, 1000) | US7_0 59 | US7_0 59 | > 3, 110 > │ struct ([1; 3; 4; 6; 8; 9; 11], 6, 7) | US7_0 3 | US7_0 3 | > 1, 74 > │ struct ([1; 3; 4; 6; 8; 9; 11], 1, 7) | US7_0 0 | US7_0 0 | > 3, 77 > │ struct ([1; 3; 4; 6; 8; 9; 11], 11, 7) | US7_0 6 | US7_0 6 | > 1, 80 > │ struct ([1; 3; 4; 6; 8; 9; 11], 12, 7) | US7_1 | US7_1 | > 3, 85 > │ struct ([1; 2; 3; 4...100; ...], 60, 100) | US7_0 59 | US7_0 59 | > 1, 100 > │ ``` > │ 00:00:07 v #52 benchmark.sort_result_list / > averages.iter / { i = 4; avg = 94 } > │ 00:00:07 v #53 benchmark.sort_result_list / > averages.iter / { i = 2; avg = 96 } > │ 00:00:07 v #54 benchmark.sort_result_list / > averages.iter / { i = 3; avg = 100 } > │ 00:00:07 v #55 benchmark.sort_result_list / > averages.iter / { i = 1; avg = 101 } > │ ``` > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## returnLettersWithOddCountTests > > ── markdown ──────────────────────────────────────────────────────────────────── > │ Test: ReturnLettersWithOddCount > │ > │ Solution: 1 > │ Test case 1. A. Time: 645L > │ > │ Solution: 2 > │ Test case 1. A. Time: 663L > │ > │ Solution: 3 > │ Test case 1. A. Time: 680L > │ > │ Solution: 9 > │ Test case 1. A. Time: 730L > │ > │ Solution: 10 > │ Test case 1. A. Time: 815L > │ > │ Input | Expected | Result | Best > │ --- | --- | --- | --- > │ 1 | a | a | (1, 645) > │ 2 | ba | ba | (1, 663) > │ 3 | aaa | aaa | (1, 680) > │ 9 | aaaaaaaaa | aaaaaaaaa | (1, 730) > │ 10 | baaaaaaaaa | baaaaaaaaa | (1, 815) > │ > │ Averages > │ Test case 1. Average Time: 706L > │ > │ Ranking > │ Test case 1. Average Time: 706L > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let solutions = [[ > "A", > fun n -> > let mutable _builder = StringBuilder (new string('a', n)) > if n % 2 = 0 then > _builder.[[0]] <- 'b' > > _builder.ToString () > ]] > let testCases = seq { > 1, "a" > 2, "ba" > 3, "aaa" > 9, "aaaaaaaaa" > 10, "baaaaaaaaa" > } > let rec returnLettersWithOddCountTests = > runAll (nameof returnLettersWithOddCountTests) _count solutions testCases > returnLettersWithOddCountTests > |> sortResultList > > ── [ 1.52s - stdout ] ────────────────────────────────────────────────────────── > │ > │ > │ Test: returnLettersWithOddCountTests > │ > │ Solution: 1 > │ Test case 1. A. Time: 143L > │ > │ Solution: 2 > │ Test case 1. A. Time: 151L > │ > │ Solution: 3 > │ Test case 1. A. Time: 136L > │ > │ Solution: 9 > │ Test case 1. A. Time: 137L > │ > │ Solution: 10 > │ Test case 1. A. Time: 140L > │ > │ Input | Expected | Result | Best > │ --- | --- | --- | --- > │ 1 | a | a | (1, 143) > │ 2 | ba | ba | (1, 151) > │ 3 | aaa | aaa | (1, 136) > │ 9 | aaaaaaaaa | aaaaaaaaa | (1, 137) > │ 10 | baaaaaaaaa | baaaaaaaaa | (1, 140) > │ > │ Average Ranking > │ Test case 1. Average Time: 141L > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## hasAnyPairCloseToEachotherTests > > ── markdown ──────────────────────────────────────────────────────────────────── > │ Test: HasAnyPairCloseToEachother > │ > │ Solution: 0 > │ Test case 1. A. Time: 137L > │ > │ Solution: 1,2 > │ Test case 1. A. Time: 186L > │ > │ Solution: 3,5 > │ Test case 1. A. Time: 206L > │ > │ Solution: 3,4,6 > │ Test case 1. A. Time: 149L > │ > │ Solution: 2,4,6 > │ Test case 1. A. Time: 150L > │ > │ Input | Expected | Result | Best > │ --- | --- | --- | --- > │ 0 | False | False | (1, 137) > │ 1,2 | True | True | (1, 186) > │ 3,5 | False | False | (1, 206) > │ 3,4,6 | True | True | (1, 149) > │ 2,4,6 | False | False | (1, 150) > │ > │ Averages > │ Test case 1. Average Time: 165L > │ > │ Ranking > │ Test case 1. Average Time: 165L > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let solutions = [[ > "A", > fun (a: int[[]]) -> > let indices = System.Linq.Enumerable.Range(0, a.Length) |> > System.Linq.Enumerable.ToArray > System.Array.Sort (a, indices) > > indices > |> Array.take (a.Length - 1) > |> Array.exists (fun i -> a.[[i + 1]] - a.[[i]] = 1) > ]] > let testCases = seq { > [[| 0 |]], false > [[| 1; 2 |]], true > [[| 3; 5 |]], false > [[| 3; 4; 6 |]], true > [[| 2; 4; 6 |]], false > } > let rec hasAnyPairCloseToEachotherTests = > runAll (nameof hasAnyPairCloseToEachotherTests) _count solutions testCases > hasAnyPairCloseToEachotherTests > |> sortResultList > > ── [ 1.32s - stdout ] ────────────────────────────────────────────────────────── > │ > │ > │ Test: hasAnyPairCloseToEachotherTests > │ > │ Solution: 0 > │ Test case 1. A. Time: 140L > │ > │ Solution: 1,2 > │ Test case 1. A. Time: 151L > │ > │ Solution: 3,5 > │ Test case 1. A. Time: 78L > │ > │ Solution: 3,4,6 > │ Test case 1. A. Time: 62L > │ > │ Solution: 2,4,6 > │ Test case 1. A. Time: 64L > │ > │ Input | Expected | Result | Best > │ --- | --- | --- | --- > │ 0 | False | False | (1, 140) > │ 1,2 | True | True | (1, 151) > │ 3,5 | False | False | (1, 78) > │ 3,4,6 | True | True | (1, 62) > │ 2,4,6 | False | False | (1, 64) > │ > │ Average Ranking > │ Test case 1. Average Time: 99L > │ 00:02:28 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 85547 } 00:02:28 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:02:28 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.ipynb to html 00:02:28 v #6 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:02:28 v #7 ! validate(nb) 00:02:29 v #8 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:02:29 v #9 ! return _pygments_highlight( 00:02:29 v #10 ! [NbConvertApp] Writing 457908 bytes to /home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.html 00:02:29 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 892 } 00:02:29 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 892 } 00:02:29 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/perf/Perf.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:02:30 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:02:30 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:02:30 d #16 spiral.run / dib / { exit_code = 0; result_length = 86498 } 00:00:00 d #1 writeDibCode / output: Fs / path: Perf.dib 00:00:00 d #2 parseDibCode / output: Fs / file: Perf.dib
In [ ]:
{ pwsh ../apps/dir-tree-html/build.ps1 } | Invoke-Block
00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "DirTreeHtml.dib"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None; stderr = true } } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ # DirTreeHtml (Polyglot) > > ── fsharp ────────────────────────────────────────────────────────────────────── > #r > @"../../../../../../../.nuget/packages/fsharp.control.asyncseq/3.2.1/lib/netstan > dard2.1/FSharp.Control.AsyncSeq.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive/6.0.1-preview.1/lib/net6. > 0/System.Reactive.dll" > #r > @"../../../../../../../.nuget/packages/system.reactive.linq/6.0.1-preview.1/lib/ > netstandard2.0/System.Reactive.Linq.dll" > #r > @"../../../../../../../.nuget/packages/argu/6.2.4/lib/netstandard2.0/Argu.dll" > #r > @"../../../../../../../.nuget/packages/falco.markup/1.1.1/lib/netstandard2.0/Fal > co.Markup.dll" > > ── fsharp ────────────────────────────────────────────────────────────────────── > #if !INTERACTIVE > open Lib > #endif > > ── fsharp ────────────────────────────────────────────────────────────────────── > open SpiralFileSystem.Operators > open Falco.Markup > > ── fsharp ────────────────────────────────────────────────────────────────────── > type FileSystemNode = > | File of string * string * int64 > | Folder of string * string * FileSystemNode list > | Root of FileSystemNode list > > let rec scanDirectory isRoot (basePath : string) (path : string) = > let relativePath = > path > |> SpiralSm.replace basePath "" > |> SpiralSm.replace "\\" "/" > |> SpiralSm.replace "//" "/" > |> SpiralSm.trim_start [[| '/' |]] > > let directories = > path > |> System.IO.Directory.GetDirectories > |> Array.toList > |> List.sort > |> List.map (scanDirectory false basePath) > let files = > path > |> System.IO.Directory.GetFiles > |> Array.toList > |> List.sort > |> List.map (fun f -> File (System.IO.Path.GetFileName f, relativePath, > System.IO.FileInfo(f).Length)) > > let children = directories @ files > if isRoot > then Root children > else Folder (path |> System.IO.Path.GetFileName, relativePath, children) > > let rec generateHtml fsNode = > let sizeLabel size = > match float size with > | size when size > 1024.0 * 1024.0 -> $"%.2f{size / 1024.0 / 1024.0} MB" > | size when size > 1024.0 -> $"%.2f{size / 1024.0} KB" > | size -> $"%.2f{size} B" > match fsNode with > | File (fileName, relativePath, size) -> > Elem.div [[]] [[ > Text.raw "📄 " > Elem.a [[ > Attr.href $"""{relativePath}{if relativePath = "" then "" else > "/"}{fileName}""" > ]] [[ > Text.raw fileName > ]] > Elem.span [[]] [[ > Text.raw $" ({size |> sizeLabel})" > ]] > ]] > | Folder (folderName, relativePath, children) -> > let size = > let rec 루프 children = > children > |> List.sumBy (function > | File (_, _, size) -> size > | Folder (_, _, children) > | Root children -> 루프 children > ) > 루프 children > Elem.details [[ > Attr.open' "true" > ]] [[ > Elem.summary [[]] [[ > Text.raw "📂 " > Elem.a [[ > Attr.href relativePath > ]] [[ > Text.raw folderName > ]] > Elem.span [[]] [[ > Text.raw $" ({size |> sizeLabel})" > ]] > ]] > Elem.div [[]] [[ > yield! children |> List.map generateHtml > ]] > ]] > | Root children -> > Elem.div [[]] [[ > yield! children |> List.map generateHtml > ]] > > let generateHtmlForFileSystem root = > $"""<!DOCTYPE html> > <html lang="en"> > <head> > <meta charset="UTF-8"> > <style> > body {{ > background-color: #222; > color: #ccc; > }} > a {{ > color: #777; > font-size: 15px; > }} > span {{ > font-size: 11px; > }} > div > div {{ > padding-left: 10px; > }} > details > div {{ > padding-left: 19px; > }} > </style> > </head> > <body> > {root |> generateHtml |> renderNode} > </body> > </html> > """ > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let expected = """<!DOCTYPE html> > <html lang="en"> > <head> > <meta charset="UTF-8"> > <style> > body { > background-color: #222; > color: #ccc; > } > a { > color: #777; > font-size: 15px; > } > span { > font-size: 11px; > } > div > div { > padding-left: 10px; > } > details > div { > padding-left: 19px; > } > </style> > </head> > <body> > <div><details open="true"><summary>📂 <a href="_.root">_.root</a><span> > (10.00 B)</span></summary><div><details open="true"><summary>📂 <a > href="_.root/3">3</a><span> (6.00 B)</span></summary><div><details > open="true"><summary>📂 <a href="_.root/3/2">2</a><span> (3.00 > B)</span></summary><div><details open="true"><summary>📂 <a > href="_.root/3/2/1">1</a><span> (1.00 B)</span></summary><div><div>📄 <a > href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00 > B)</span></div></div></details><div>📄 <a > href="_.root/3/2/file.txt">file.txt</a><span> (2.00 > B)</span></div></div></details><div>📄 <a > href="_.root/3/file.txt">file.txt</a><span> (3.00 > B)</span></div></div></details><div>📄 <a > href="_.root/file.txt">file.txt</a><span> (4.00 > B)</span></div></div></details></div> > </body> > </html> > """ > > let struct (tempFolder, disposable) = expected |> SpiralCrypto.hash_text |> > SpiralFileSystem.create_temp_dir' > let rec 루프 d n = async { > if n >= 0 then > tempFolder </> d |> System.IO.Directory.CreateDirectory |> ignore > do! > n > |> string > |> String.replicate (n + 1) > |> SpiralFileSystem.write_all_text_async (tempFolder </> d </> > $"file.txt") > do! 루프 $"{d}/{n}" (n - 1) > } > 루프 "_.root" 3 > |> Async.RunSynchronously > > let html = > scanDirectory true tempFolder tempFolder > |> generateHtmlForFileSystem > > html > |> _assertEqual expected > > disposable.Dispose () > > html |> Microsoft.DotNet.Interactive.Formatting.Html.ToHtmlContent > > ── [ 115.11ms - return value ] ───────────────────────────────────────────────── > │ <!DOCTYPE html> > │ <html lang="en"> > │ <head> > │ <meta charset="UTF-8"> > │ <style> > │ body { > │ background-color: #222; > │ color: #ccc; > │ } > │ a { > │ color: #777; > │ font-size: 15px; > │ } > │ span { > │ font-size: 11px; > │ } > │ div > div { > │ padding-left: 10px; > │ } > │ details > div { > │ padding-left: 19px; > │ } > │ </style> > │ </head> > │ <body> > │ <div><details open="true"><summary>📂 <a > href="_.root">_.root</a><span> (10.00 B)</span></summary><div><details > open="true"><summary>📂 <a href="_.root/3">3</a><span> (6.00 > B)</span></summary><div><details open="true"><summary>📂 <a > href="_.root/3/2">2</a><span> (3.00 B)</span></summary><div><details > open="true"><summary>📂 <a href="_.root/3/2/1">1</a><span> (1.00 > B)</span></summary><div><div>📄 <a > href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00 > B)</span></div></div></details><div>📄 <a > href="_.root/3/2/file.txt">file.txt</a><span> (2.00 > B)</span></div></div></details><div>📄 <a > href="_.root/3/file.txt">file.txt</a><span> (3.00 > B)</span></div></div></details><div>📄 <a > href="_.root/file.txt">file.txt</a><span> (4.00 > B)</span></div></div></details></div> > │ </body> > │ </html> > │ > > ── [ 118.44ms - stdout ] ─────────────────────────────────────────────────────── > │ "<!DOCTYPE html> > │ <html lang="en"> > │ <head> > │ <meta charset="UTF-8"> > │ <style> > │ body { > │ background-color: #222; > │ color: #ccc; > │ } > │ a { > │ color: #777; > │ font-size: 15px; > │ } > │ span { > │ font-size: 11px; > │ } > │ div > div { > │ padding-left: 10px; > │ } > │ details > div { > │ padding-left: 19px; > │ } > │ </style> > │ </head> > │ <body> > │ <div><details open="true"><summary>📂 <a > href="_.root">_.root</a><span> (10.00 B)</span></summary><div><details > open="true"><summary>📂 <a href="_.root/3">3</a><span> (6.00 > B)</span></summary><div><details open="true"><summary>📂 <a > href="_.root/3/2">2</a><span> (3.00 B)</span></summary><div><details > open="true"><summary>📂 <a href="_.root/3/2/1">1</a><span> (1.00 > B)</span></summary><div><div>📄 <a > href="_.root/3/2/1/file.txt">file.txt</a><span> (1.00 > B)</span></div></div></details><div>📄 <a > href="_.root/3/2/file.txt">file.txt</a><span> (2.00 > B)</span></div></div></details><div>📄 <a > href="_.root/3/file.txt">file.txt</a><span> (3.00 > B)</span></div></div></details><div>📄 <a > href="_.root/file.txt">file.txt</a><span> (4.00 > B)</span></div></div></details></div> > │ </body> > │ </html> > │ " > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## Arguments > > ── fsharp ────────────────────────────────────────────────────────────────────── > [[<RequireQualifiedAccess>]] > type Arguments = > | [[<Argu.ArguAttributes.ExactlyOnce>]] Dir of string > | [[<Argu.ArguAttributes.ExactlyOnce>]] Html of string > > interface Argu.IArgParserTemplate with > member s.Usage = > match s with > | Dir _ -> nameof Dir > | Html _ -> nameof Html > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > Argu.ArgumentParser.Create<Arguments>().PrintUsage () > > ── [ 63.53ms - return value ] ────────────────────────────────────────────────── > │ "USAGE: dotnet-repl [--help] --dir <string> --html <string> > │ > │ OPTIONS: > │ > │ --dir <string> Dir > │ --html <string> Html > │ --help display this list of options. > │ " > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## main > > ── fsharp ────────────────────────────────────────────────────────────────────── > let main args = > let argsMap = args |> Runtime.parseArgsMap<Arguments> > > let dir = > match argsMap.[[nameof Arguments.Dir]] with > | [[ Arguments.Dir dir ]] -> Some dir > | _ -> None > |> Option.get > > let htmlPath = > match argsMap.[[nameof Arguments.Html]] with > | [[ Arguments.Html html ]] -> Some html > | _ -> None > |> Option.get > > let fileSystem = scanDirectory true dir dir > let html = generateHtmlForFileSystem fileSystem > > html |> SpiralFileSystem.write_all_text_async htmlPath > |> Async.runWithTimeout 30000 > |> function > | Some () -> 0 > | None -> 1 > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let args = > System.Environment.GetEnvironmentVariable "ARGS" > |> SpiralRuntime.split_args > |> Result.toArray > |> Array.collect id > > match args with > | [[||]] -> 0 > | args -> if main args = 0 then 0 else failwith "main failed" > > ── [ 60.15ms - return value ] ────────────────────────────────────────────────── > │ <div class="dni-plaintext"><pre>0 > │ </pre></div><style> > │ .dni-code-hint { > │ font-style: italic; > │ overflow: hidden; > │ white-space: nowrap; > │ } > │ .dni-treeview { > │ white-space: nowrap; > │ } > │ .dni-treeview td { > │ vertical-align: top; > │ text-align: start; > │ } > │ details.dni-treeview { > │ padding-left: 1em; > │ } > │ table td { > │ text-align: start; > │ } > │ table tr { > │ vertical-align: top; > │ margin: 0em 0px; > │ } > │ table tr td pre > │ { > │ vertical-align: top !important; > │ margin: 0em 0px !important; > │ } > │ table th { > │ text-align: start; > │ } > │ </style> 00:00:16 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 13908 } 00:00:16 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:00:17 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.ipynb to html 00:00:17 v #6 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:17 v #7 ! validate(nb) 00:00:17 v #8 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:17 v #9 ! return _pygments_highlight( 00:00:17 v #10 ! [NbConvertApp] Writing 310043 bytes to /home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.html 00:00:17 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 924 } 00:00:17 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 924 } 00:00:17 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/dir-tree-html/DirTreeHtml.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:00:18 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:18 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:18 d #16 spiral.run / dib / { exit_code = 0; result_length = 14891 } 00:00:00 d #1 writeDibCode / output: Fs / path: DirTreeHtml.dib 00:00:00 d #2 parseDibCode / output: Fs / file: DirTreeHtml.dib 00:00:00 d #1 persistCodeProject / packages: [Argu; Falco.Markup; FSharp.Control.AsyncSeq; ... ] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: DirTreeHtml / hash: / code.Length: 4632 00:00:00 d #2 buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/DirTreeHtml.fsproj 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "/home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/DirTreeHtml.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/dist" --runtime linux-x64"; options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/DirTreeHtml.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml"; stderr = true } } 00:00:00 v #2 > Determining projects to restore... 00:00:01 v #3 > Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 00:00:01 v #4 > The last full restore is still up to date. Nothing left to do. 00:00:01 v #5 > Total time taken: 0 milliseconds 00:00:01 v #6 > Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 00:00:01 v #7 > Restoring /home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/DirTreeHtml.fsproj 00:00:01 v #8 > Starting restore process. 00:00:01 v #9 > Total time taken: 0 milliseconds 00:00:02 v #10 > Restored /home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/DirTreeHtml.fsproj (in 265 ms). 00:00:14 v #11 > DirTreeHtml -> /home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/bin/Release/net9.0/linux-x64/DirTreeHtml.dll 00:00:14 v #12 > DirTreeHtml -> /home/runner/work/polyglot/polyglot/apps/dir-tree-html/dist 00:00:14 d #13 runtime.execute_with_options_async / { exit_code = 0; output_length = 728; options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml/DirTreeHtml.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/dir-tree-html/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/DirTreeHtml"; stderr = true } } polyglot/apps/dir-tree-html/build.ps1 / $env:CI:'true'
In [ ]:
{ pwsh ../apps/scheduler/build.ps1 } | Invoke-Block
00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "Tasks.dib", "--retries", "3"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None; stderr = true } } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## Tasks (Polyglot) > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > open testing > > ── spiral ────────────────────────────────────────────────────────────────────── > open sm'_operators > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## task_id > > ── spiral ────────────────────────────────────────────────────────────────────── > nominal task_id = string > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## task_name > > ── spiral ────────────────────────────────────────────────────────────────────── > nominal task_name = string > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## manual_scheduling > > ── spiral ────────────────────────────────────────────────────────────────────── > union manual_scheduling = > | WithSuggestion > | WithoutSuggestion > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## recurrency_offset > > ── spiral ────────────────────────────────────────────────────────────────────── > union recurrency_offset = > | Days : int > | Weeks : int > | Months : int > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## fixed_recurrency > > ── spiral ────────────────────────────────────────────────────────────────────── > union fixed_recurrency = > | Weekly : date_time.day_of_week > | Monthly : date_time.day > | Yearly : date_time.day * date_time.month > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## recurrency > > ── spiral ────────────────────────────────────────────────────────────────────── > union recurrency = > | Offset : recurrency_offset > | Fixed : list fixed_recurrency > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## scheduling > > ── spiral ────────────────────────────────────────────────────────────────────── > union scheduling = > | Manual : manual_scheduling > | Recurrent : recurrency > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## task > > ── spiral ────────────────────────────────────────────────────────────────────── > type task = > { > id : task_id > name : task_name > scheduling : scheduling > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## date > > ── spiral ────────────────────────────────────────────────────────────────────── > type date = > { > year : date_time.year > month : date_time.month > day : date_time.day > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## status > > ── spiral ────────────────────────────────────────────────────────────────────── > union status = > | Postponed : option () > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### action > > ── spiral ────────────────────────────────────────────────────────────────────── > union action = > | SetDate : date > | AddTask : task > | SetScheduling : task * scheduling > | AddStatus : task * date * status > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## get_actions (test) > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > inl get_actions () : list action = > open date_time > [[ > SetDate { > year = year 2000 > month = February > day = day 29 > } > AddTask { > id = task_id "1" > name = task_name "1" > scheduling = Manual WithSuggestion > } > AddTask { > id = task_id "02" > name = task_name "02" > scheduling = Manual WithSuggestion > } > AddTask { > id = task_id "003" > name = task_name "003" > scheduling = Manual WithSuggestion > } > ]] > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! gleam > ///! fsharp > ///! cuda > ///! rust > ///! typescript > ///! python > > get_actions () > |> sm'.format_debug > |> _assert sm'.contains "003" > > ── [ 17.69s - return value ] ─────────────────────────────────────────────────── > │ .py output (Python): > │ { name = __assert; actual = 003; expected = > UH1_1(v0=US1_0(v0=2000, v1=US0_1(), v2=29), v1=UH1_1(v0=US1_1(v0='1', v1='1', > v2=US2_0(v0=US3_0())), v1=UH1_1(v0=US1_1(v0='02', v1='02', > v2=US2_0(v0=US3_0())), v1=UH1_1(v0=US1_1(v0='003', v1='003', > v2=US2_0(v0=US3_0())), v1=UH1_0())))) } > │ > │ .rs output: > │ { name = __assert; actual = 003; expected = UH1_1(US1_0(2000, > US0_1, 29), UH1_1(US1_1("1", "1", US2_0(US3_0)), UH1_1(US1_1("02", "02", > US2_0(US3_0)), UH1_1(US1_1("003", "003", US2_0(US3_0)), UH1_0)))) } > │ > │ .ts output: > │ { name = __assert; actual = 003; expected = UH1_1 (US1_0 > (2000, US0_1, 29), UH1_1 (US1_1 (1, 1, US2_0 US3_0), UH1_1 (US1_1 (02, 02, US2_0 > US3_0), UH1_1 (US1_1 (003, 003, US2_0 US3_0), UH1_0)))) } > │ > │ .py output: > │ { name = __assert; actual = 003; expected = UH1_1 (US1_0 > (2000, US0_1, 29), UH1_1 (US1_1 ("1", "1", US2_0 US3_0), UH1_1 (US1_1 ("02", > "02", US2_0 US3_0), UH1_1 (US1_1 ("003", "003", US2_0 US3_0), UH1_0)))) } > │ > │ .gleam output (Gleam): > │ { name = __assert; actual = 003; expected = Uh1i1(Us1i0(2000, > Us0i1, 29), Uh1i1(Us1i1("1", "1", Us2i0(Us3i0)), Uh1i1(Us1i1("02", "02", > Us2i0(Us3i0)), Uh1i1(Us1i1("003", "003", Us2i0(Us3i0)), Uh1i0)))) } > │ > │ > > ── [ 17.69s - stdout ] ───────────────────────────────────────────────────────── > │ .fsx output: > │ { name = __assert; actual = 003; expected = UH1_1 > │ (US1_0 (2000, US0_1, 29), > │ UH1_1 > │ (US1_1 ("1", "1", US2_0 US3_0), > │ UH1_1 > │ (US1_1 ("02", "02", US2_0 US3_0), > │ UH1_1 (US1_1 ("003", "003", US2_0 US3_0), UH1_0)))) > } > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! gleam > ///! fsharp > ///! cuda > ///! rust > ///! typescript > ///! python > > get_actions () > |> listm'.try_item 3i32 > |> fun (Some action) => > match action with > | AddTask { name } => name > |> _assert_eq (task_name "003") > > ── [ 10.38s - return value ] ─────────────────────────────────────────────────── > │ .py output (Python): > │ { name = __assert_eq; actual = 003; expected = 003 } > │ > │ .rs output: > │ { name = __assert_eq; actual = "003"; expected = "003" } > │ > │ .ts output: > │ { name = __assert_eq; actual = 003; expected = 003 } > │ > │ .py output: > │ { name = __assert_eq; actual = 003; expected = 003 } > │ > │ .gleam output (Gleam): > │ { name = __assert_eq; actual = "003"; expected = "003" } > │ > │ > > ── [ 10.38s - stdout ] ───────────────────────────────────────────────────────── > │ .fsx output: > │ { name = __assert_eq; actual = "003"; expected = "003" } > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > inl print padding cols = > ({ lines = [[]]; last_lines = [[]]; max_acc = 0i32 }, cols) > ||> listm.fold fun { last_lines max_acc } lines => > inl { count max } = > (lines, { count = 0i32; max = 0i32 }) > ||> listm.foldBack fun line { count max } => { > count = count + 1 > max = > inl len = line |> sm'.length > if len > max > then len > else max > } > inl { lines } = > (lines, { lines = [[]]; i = 0i32 }) > ||> listm.foldBack fun line { lines i } => { > lines = > inl last_line = > last_lines > |> listm'.try_item (count - i - 1) > |> optionm'.default_with fun () => > " " |> sm'.replicate max_acc > inl line = > if padding = 0 > then line > else > inl padding = " " |> sm'.replicate padding > line ++# padding > inl line = line |> sm'.pad_right (max + padding) ' ' > last_line ++# line :: lines > i = i + 1 > } > { > lines > last_lines = lines > max_acc = max_acc + max + padding > } > |> fun x => x.lines > |> listm'.box > |> seq.of_list' > |> sm'.concat "\n" > > inl col () = > [[ "Task" ]] > ++ ( > get_actions () > |> listm.map fun action => > match action with > | AddTask { name } => > inl (task_name name) = name > name > | _ => "" > ) > > inl cols () = > [[ > col () > col () > [[ "a"; "b"; "c"; "d"; "e" ]] > ]] > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! gleam > ///! fsharp > ///! cuda > ///! rust > ///! typescript > ///! python > ///// print_code > > cols () > |> print 1i32 > |> console.write_line > > ── [ 10.79s - return value ] ─────────────────────────────────────────────────── > │ > │ .py output (Python): > │ Task Task a > │ b > │ 1 1 c > │ 02 02 d > │ 003 003 e > │ > │ > │ .rs output: > │ Task Task a > │ b > │ 1 1 c > │ 02 02 d > │ 003 003 e > │ > │ > │ .ts output: > │ Task Task a > │ b > │ 1 1 c > │ 02 02 d > │ 003 003 e > │ > │ > │ .py output: > │ Task Task a > │ b > │ 1 1 c > │ 02 02 d > │ 003 003 e > │ > │ > │ .gleam output (Gleam): > │ Task Task a > │ b > │ 1 1 c > │ 02 02 d > │ 003 003 e > │ > │ > │ > > ── [ 10.79s - stdout ] ───────────────────────────────────────────────────────── > │ .fsx output: > │ Task Task a > │ b > │ 1 1 c > │ 02 02 d > │ 003 003 e > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > inl task_name_width = > (0, get_actions ()) > ||> listm.fold fun acc action => > match action with > | AddTask { name } => > inl (task_name name) = name > inl l = name |> sm'.length > if l > acc > then l > else acc > | _ => acc > |> (+) 1 > > > ("" |> sm'.pad_right task_name_width ' ') > ++# "|" ++# " 2000 " > ++# "|" > |> console.write_line > > ("" |> sm'.pad_right task_name_width ' ') > ++# "|" ++# " february " > ++# "|" ++# " march " > ++# "|" > |> console.write_line > > ("" |> sm'.pad_right task_name_width ' ') > ++# "|" ++# "sa" > ++# "|" ++# "su" > ++# "|" ++# "mo" > ++# "|" ++# "tu" > ++# "|" ++# "we" > ++# "|" ++# "th" > ++# "|" ++# "fr" > ++# "|" > |> console.write_line > > ("" |> sm'.pad_right task_name_width ' ') > ++# "|" ++# "26" > ++# "|" ++# "27" > ++# "|" ++# "28" > ++# "|" ++# "29" > ++# "|" ++# "01" > ++# "|" ++# "02" > ++# "|" ++# "03" > ++# "|" > |> console.write_line > > inl lines = > ("", get_actions ()) > ||> listm.fold fun acc action => > match action with > | AddTask { name } => > inl (task_name name) = name > if acc = "" > then acc > else acc ++# "\n" > ++# (name |> sm'.pad_right task_name_width ' ') > ++# "|" ++# console.color_bright_white () ++# "??" ++# > console.color_reset () > ++# "|" ++# console.color_bright_white () ++# "??" ++# > console.color_reset () > ++# "|" ++# console.color_bright_green () ++# "??" ++# > console.color_reset () > ++# "|" ++# console.color_yellow () ++# "??" ++# console.color_reset > () > ++# "|" ++# console.color_bright_red () ++# "??" ++# > console.color_reset () > ++# "|" ++# console.color_bright_magenta () ++# "??" ++# > console.color_reset () > ++# "|" ++# console.color_bright_cyan () ++# "??" ++# > console.color_reset () > ++# "|" > | _ => "" > lines |> console.write_line > > ── [ 626.69ms - stdout ] ─────────────────────────────────────────────────────── > │ | 2000 | > │ | february | march | > │ |sa|su|mo|tu|we|th|fr| > │ |26|27|28|29|01|02|03| > │ 1 |??|??|??|??|??|??|??| > │ 02 |??|??|??|??|??|??|??| > │ 003 |??|??|??|??|??|??|??| > │ 00:00:49 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 15236 } 00:00:49 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:00:50 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.ipynb to html 00:00:50 v #6 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:50 v #7 ! validate(nb) 00:00:50 v #8 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:50 v #9 ! return _pygments_highlight( 00:00:51 v #10 ! [NbConvertApp] Writing 317175 bytes to /home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.html 00:00:51 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 904 } 00:00:51 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 904 } 00:00:51 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/scheduler/Tasks.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:00:51 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:51 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:51 d #16 spiral.run / dib / { exit_code = 0; result_length = 16199 } 00:00:00 d #1 writeDibCode / output: Spi / path: Tasks.dib 00:00:00 d #2 parseDibCode / output: Spi / file: Tasks.dib
In [ ]:
{ pwsh ../apps/chat/build.ps1 } | Invoke-Block
00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "chat_contract.dib", "--retries", "5"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None; stderr = true } } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ # chat_contract > > ── spiral ────────────────────────────────────────────────────────────────────── > open rust > open rust.rust_operators > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > > open testing > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## chat_contract > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### state > > ── spiral ────────────────────────────────────────────────────────────────────── > type state = > { > version : u32 > account_set : near.iterable_set near.account_id > alias_set : near.iterable_set sm'.std_string > account_map : near.lookup_map near.account_id sm'.std_string > alias_map : near.lookup_map sm'.std_string (mapm.hash_map > near.account_id (u64 * u32)) > } > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -c > > () > > ── [ 49.31s - return value ] ─────────────────────────────────────────────────── > │ Installed near-sandbox into > /home/runner/work/polyglot/spiral/workspace/target/release/build/near-sandbox-ut > ils-cdf556a7364ec456/out/.near/near-sandbox-1.40.0_7dd0b5993577f592be15eb102e5a3 > da37be66271/near-sandbox > │ > │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1; > total_gas_burnt_usd = +0.000808; total_gas_burnt = 1209318065396 } > │ 00:00:02 i #3 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:02 i #4 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000602; tokens_burnt_usd = +0.000602; > gas_burnt = 901236206056; tokens_burnt = 90123620605600000000 } > │ 00:00:02 w #5 spiral_wasm.run / Error error / { retry = > 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" } > │ > │ > │ > │ 00:00:04 i #8 near_workspaces.print_usd / { retry = 2; > total_gas_burnt_usd = +0.000808; total_gas_burnt = 1209318065396 } > │ 00:00:04 i #9 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:04 i #10 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000602; tokens_burnt_usd = +0.000602; > gas_burnt = 901236206056; tokens_burnt = 90123620605600000000 } > │ 00:00:04 w #11 spiral_wasm.run / Error error ...n / > Error error / { retry = 13; error = "{ receipt_outcomes_len = 1; retry = 13; > receipt_failures = [] }" } > │ > │ > │ > │ 00:00:29 i #80 near_workspaces.print_usd / { retry = > 14; total_gas_burnt_usd = +0.000808; total_gas_burnt = 1209318065396 } > │ 00:00:29 i #81 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:29 i #82 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000602; tokens_burnt_usd = +0.000602; > gas_burnt = 901236206056; tokens_burnt = 90123620605600000000 } > │ 00:00:29 w #83 spiral_wasm.run / Error error / { retry > = 14; error = "{ receipt_outcomes_len = 1; retry = 14; receipt_failures = [] }" > } > │ > │ > │ > │ 00:00:31 i #86 near_workspaces.print_usd / { retry = > 15; total_gas_burnt_usd = +0.000808; total_gas_burnt = 1209318065396 } > │ 00:00:31 i #87 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:31 i #88 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000602; tokens_burnt_usd = +0.000602; > gas_burnt = 901236206056; tokens_burnt = 90123620605600000000 } > │ 00:00:31 w #89 spiral_wasm.run / Error error / { retry > = 15; error = "{ receipt_outcomes_len = 1; retry = 15; receipt_failures = [] }" > } > │ > │ > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -c > > trace Verbose (fun () => "") id > > ── [ 40.14s - return value ] ─────────────────────────────────────────────────── > │ > │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1; > total_gas_burnt_usd = +0.000873; total_gas_burnt = 1306519448315 } > │ 00:00:02 i #3 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:02 i #4 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000667; tokens_burnt_usd = +0.000667; > gas_burnt = 998437588975; tokens_burnt = 99843758897500000000 } > │ 00:00:02 w #5 spiral_wasm.run / Error error / { retry = > 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" } > │ > │ > │ > │ 00:00:04 i #8 near_workspaces.print_usd / { retry = 2; > total_gas_burnt_usd = +0.000873; total_gas_burnt = 1306519448315 } > │ 00:00:04 i #9 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:04 i #10 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000667; tokens_burnt_usd = +0.000667; > gas_burnt = 998437588975; tokens_burnt = 99843758897500000000 } > │ 00:00:04 w #11 spiral_wasm.run / Error error / { retry > = 2; error = "{ receipt_outcomes_len = 1; retry = 2; receipt_failures = [] }" } > │ > │ > │ > │ 00:00:06 i #14 near_workspaces.print_usd / { retry = 3; > total_gas_burnt_usd = +0.000873; total_gas_burnt = 13...n / Error error / { > retry = 13; error = "{ receipt_outcomes_len = 1; retry = 13; receipt_failures = > [] }" } > │ > │ > │ > │ 00:00:28 i #80 near_workspaces.print_usd / { retry = > 14; total_gas_burnt_usd = +0.000873; total_gas_burnt = 1306519448315 } > │ 00:00:28 i #81 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:28 i #82 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000667; tokens_burnt_usd = +0.000667; > gas_burnt = 998437588975; tokens_burnt = 99843758897500000000 } > │ 00:00:28 w #83 spiral_wasm.run / Error error / { retry > = 14; error = "{ receipt_outcomes_len = 1; retry = 14; receipt_failures = [] }" > } > │ > │ > │ > │ 00:00:30 i #86 near_workspaces.print_usd / { retry = > 15; total_gas_burnt_usd = +0.000873; total_gas_burnt = 1306519448315 } > │ 00:00:30 i #87 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:30 i #88 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000667; tokens_burnt_usd = +0.000667; > gas_burnt = 998437588975; tokens_burnt = 99843758897500000000 } > │ 00:00:30 w #89 spiral_wasm.run / Error error / { retry > = 15; error = "{ receipt_outcomes_len = 1; retry = 15; receipt_failures = [] }" > } > │ > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### new > > ── spiral ────────────────────────────────────────────────────────────────────── > inl new () : state = > { > version = 2 > account_set = "account_set" |> sm'.byte_slice |> near.new_iterable_set > alias_set = "alias_set" |> sm'.byte_slice |> near.new_iterable_set > account_map = "account_map" |> sm'.byte_slice |> near.new_lookup_map > alias_map = "alias_map" |> sm'.byte_slice |> near.new_lookup_map > } > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -c > > inl state = new () > trace Verbose (fun () => "chat_contract") fun () => { state = state |> > sm'.format_debug } > trace Verbose (fun () => "") id > > ── [ 42.55s - return value ] ─────────────────────────────────────────────────── > │ 00:00:00 v #1 chat_contract / { state = (2, IterableSet > { elements: Vector { len: 0, prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115, > 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116, > 95, 115, 101, 116, 109] } }, IterableSet { elements: Vector { len: 0, prefix: > [97, 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: LookupMap { prefix: > [97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, LookupMap { prefix: [97, > 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, LookupMap { prefix: [97, 108, > 105, 97, 115, 95, 109, 97, 112] }) } > │ > │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1; > total_gas_burnt_usd = +0.001389; total_gas_burnt = 2078662496092 } > │ 00:00:02 i #3 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:02 i #4 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.001183; tokens_burnt_usd = +0.001183; > gas_burnt = 1770580636752; tokens_burnt = 177058063675200000000 } > │ 00:00:02 w #5 spiral_wasm.run / Error error / { retry = > 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" } > │ > │ > │ 00:00:00 v #1 chat_contract / { state = (2, IterableSet > { elements: Vector { len: 0, prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115, > 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116, > 95, 115, 101,...d = +0.001183; gas_burnt = 1770580636752; tokens_burnt = > 177058063675200000000 } > │ 00:00:29 w #83 spiral_wasm.run / Error error / { retry > = 14; error = "{ receipt_outcomes_len = 1; retry = 14; receipt_failures = [] }" > } > │ > │ > │ 00:00:00 v #1 chat_contract / { state = (2, IterableSet > { elements: Vector { len: 0, prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115, > 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116, > 95, 115, 101, 116, 109] } }, IterableSet { elements: Vector { len: 0, prefix: > [97, 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: LookupMap { prefix: > [97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, LookupMap { prefix: [97, > 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, LookupMap { prefix: [97, 108, > 105, 97, 115, 95, 109, 97, 112] }) } > │ > │ 00:00:32 i #86 near_workspaces.print_usd / { retry = > 15; total_gas_burnt_usd = +0.001389; total_gas_burnt = 2078662496092 } > │ 00:00:32 i #87 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:32 i #88 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.001183; tokens_burnt_usd = +0.001183; > gas_burnt = 1770580636752; tokens_burnt = 177058063675200000000 } > │ 00:00:32 w #89 spiral_wasm.run / Error error / { retry > = 15; error = "{ receipt_outcomes_len = 1; retry = 15; receipt_failures = [] }" > } > │ > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### is_valid_alias > > ── spiral ────────────────────────────────────────────────────────────────────── > inl is_valid_alias (alias : sm'.std_string) : bool = > inl alias' = alias |> sm'.from_std_string > inl alias_len = alias' |> sm'.length > > alias_len > 0i32 > && alias_len < 64 > && (alias' |> sm'.starts_with "-" |> not) > && (alias' |> sm'.ends_with "-" |> not) > && (alias' |> sm'.as_str |> sm'.chars |> iter.all (fun c => (c |> > sm'.char_is_alphanumeric) || c = '-')) > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -c > > "" > |> sm'.to_std_string > |> is_valid_alias > |> _assert_eq false > > ── [ 28.92s - return value ] ─────────────────────────────────────────────────── > │ > │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1; > total_gas_burnt_usd = +0.000863; total_gas_burnt = 1291850637872 } > │ 00:00:02 i #3 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:02 i #4 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000657; tokens_burnt_usd = +0.000657; > gas_burnt = 983768778532; tokens_burnt = 98376877853200000000 } > │ 00:00:02 w #5 spiral_wasm.run / Error error / { retry = > 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" } > │ > │ > │ > │ 00:00:04 i #8 near_workspaces.print_usd / { retry = 2; > total_gas_burnt_usd = +0.000863; total_gas_burnt = 1291850637872 } > │ 00:00:04 i #9 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:04 i #10 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000657; tokens_burnt_usd = +0.000657; > gas_burnt = 983768778532; tokens_burnt = 98376877853200000000 } > │ 00:00:04 w #11 spiral_wasm.run / Error error / { retry > = 2; error = "{ receipt_outcomes_len = 1; retry = 2; receipt_failures = [] }" } > │ > │ > │ > │ 00:00:06 i #14 near_workspaces.print_usd / { retry = 3; > total_gas_burnt_usd = +0.000863; total_gas_burnt = 12...rror = "{ > receipt_outcomes_len = 1; retry = 8; receipt_failures = [] }" } > │ > │ > │ > │ 00:00:18 i #50 near_workspaces.print_usd / { retry = 9; > total_gas_burnt_usd = +0.000863; total_gas_burnt = 1291850637872 } > │ 00:00:18 i #51 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:18 i #52 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000657; tokens_burnt_usd = +0.000657; > gas_burnt = 983768778532; tokens_burnt = 98376877853200000000 } > │ 00:00:18 w #53 spiral_wasm.run / Error error / { retry > = 9; error = "{ receipt_outcomes_len = 1; retry = 9; receipt_failures = [] }" } > │ > │ > │ > │ 00:00:20 i #56 near_workspaces.print_usd / { retry = > 10; total_gas_burnt_usd = +0.001012; total_gas_burnt = 1515033200372 } > │ 00:00:20 i #57 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:20 i #58 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000657; tokens_burnt_usd = +0.000657; > gas_burnt = 983768778532; tokens_burnt = 98376877853200000000 } > │ 00:00:20 i #59 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -c > > "a-" > |> sm'.to_std_string > |> is_valid_alias > |> _assert_eq false > > ── [ 20.80s - return value ] ─────────────────────────────────────────────────── > │ > │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1; > total_gas_burnt_usd = +0.000864; total_gas_burnt = 1293900876407 } > │ 00:00:02 i #3 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:02 i #4 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000659; tokens_burnt_usd = +0.000659; > gas_burnt = 985819017067; tokens_burnt = 98581901706700000000 } > │ 00:00:02 w #5 spiral_wasm.run / Error error / { retry = > 1; error = "{ receipt_outcomes_len = 1; retry = 1; receipt_failures = [] }" } > │ > │ > │ > │ 00:00:04 i #8 near_workspaces.print_usd / { retry = 2; > total_gas_burnt_usd = +0.000864; total_gas_burnt = 1293900876407 } > │ 00:00:04 i #9 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:04 i #10 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000659; tokens_burnt_usd = +0.000659; > gas_burnt = 985819017067; tokens_burnt = 98581901706700000000 } > │ 00:00:04 w #11 spiral_wasm.run / Error error / { retry > = 2; error = "{ receipt_outcomes_len = 1; retry = 2; receipt_failures = [] }" } > │ > │ > │ > │ 00:00:06 i #14 near_workspaces.print_usd / { retry = 3; > total_gas_burnt_usd = +0.000864; total_gas_burnt = 12...error = "{ > receipt_outcomes_len = 1; retry = 4; receipt_failures = [] }" } > │ > │ > │ > │ 00:00:10 i #26 near_workspaces.print_usd / { retry = 5; > total_gas_burnt_usd = +0.000864; total_gas_burnt = 1293900876407 } > │ 00:00:10 i #27 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:10 i #28 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000659; tokens_burnt_usd = +0.000659; > gas_burnt = 985819017067; tokens_burnt = 98581901706700000000 } > │ 00:00:10 w #29 spiral_wasm.run / Error error / { retry > = 5; error = "{ receipt_outcomes_len = 1; retry = 5; receipt_failures = [] }" } > │ > │ > │ > │ 00:00:12 i #32 near_workspaces.print_usd / { retry = 6; > total_gas_burnt_usd = +0.001013; total_gas_burnt = 1517083438907 } > │ 00:00:12 i #33 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:12 i #34 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000659; tokens_burnt_usd = +0.000659; > gas_burnt = 985819017067; tokens_burnt = 98581901706700000000 } > │ 00:00:12 i #35 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -c > > "a-a" > |> sm'.to_std_string > |> is_valid_alias > |> _assert_eq true > > ── [ 10.62s - return value ] ─────────────────────────────────────────────────── > │ > │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1; > total_gas_burnt_usd = +0.001014; total_gas_burnt = 1518480432317 } > │ 00:00:02 i #3 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:02 i #4 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000659; tokens_burnt_usd = +0.000659; > gas_burnt = 987216010477; tokens_burnt = 98721601047700000000 } > │ 00:00:02 i #5 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### generate_cid > > ── spiral ────────────────────────────────────────────────────────────────────── > inl generate_cid (content : am'.vec u8) : sm'.std_string = > !\($'" fn encode_u64(value: u64) -> Vec<u8> { //"') : () > !\($'" let mut buffer = unsigned_varint::encode::u64_buffer(); //"') : () > !\($'" unsigned_varint::encode::u64(value, &mut buffer).to_vec() //"') : > () > !\($'" } //"') : () > > !\($'" fn sha256_hash(content: &[[u8]]) -> Vec<u8> { //"') : () > !\($'" let mut hasher: sha2::Sha256 = sha2::Digest::new(); //"') : () > !\($'" sha2::Digest::update(&mut hasher, content); //"') : () > !\($'" sha2::Digest::finalize(hasher).to_vec() //"') : () > !\($'" } //"') : () > > !\($'" let version: u8 = 1; //"') : () > !\($'" let codec_raw: u64 = 0x55; //"') : () > > !\($'" let codec_bytes = encode_u64(codec_raw); //"') : () > !\($'" let hash_result = sha256_hash(&!content); //"') : () > !\($'" let multihash = std::iter::once(0x12) //"') : () > !\($'" .chain(std::iter::once(32)) //"') : () > !\($'" .chain(hash_result.into_iter()) //"') : () > !\($'" .collect(); //"') : () > !\($'" let cid_bytes = [[vec\![[version]], codec_bytes, > multihash]].concat(); //"') : () > !\($'" let result = multibase::encode(multibase::Base::Base32Lower, > &cid_bytes); //"') : () > !\($'"result"') > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -c -d multibase sha2 unsigned-varint > > ;[[]] > |> am'.to_vec > |> generate_cid > |> sm'.from_std_string > |> _assert_eq "bafkreihdwdcefgh4dqkjv67uzcmw7ojee6xedzdetojuzjevtenxquvyku" > > ── [ 12.22s - return value ] ─────────────────────────────────────────────────── > │ > │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1; > total_gas_burnt_usd = +0.001078; total_gas_burnt = 1613051130325 } > │ 00:00:02 i #3 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:02 i #4 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000723; tokens_burnt_usd = +0.000723; > gas_burnt = 1081786708485; tokens_burnt = 108178670848500000000 } > │ 00:00:02 i #5 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### claim_alias > > ── spiral ────────────────────────────────────────────────────────────────────── > inl claim_alias (state : rust.ref (rust.mut' state)) (alias : sm'.std_string) : > () = > inl account_set : rust.ref (rust.mut' (near.iterable_set near.account_id)) = > !\($'$"&mut !state.1"') > > inl alias_set : rust.ref (rust.mut' (near.iterable_set sm'.std_string)) = > !\($'$"&mut !state.2"') > > inl account_map : rust.ref (rust.mut' (near.lookup_map near.account_id > sm'.std_string)) = > !\($'$"&mut !state.3"') > > inl alias_map : rust.ref (rust.mut' (near.lookup_map sm'.std_string > (mapm.hash_map near.account_id (u64 * u32)))) = > !\($'$"&mut !state.4"') > > inl signer_account_id = near.signer_account_id () > inl predecessor_account_id = near.predecessor_account_id () > inl block_timestamp = near.block_timestamp () > > trace Debug > fun () => "chat_contract.claim_alias" > fun () => { > alias > block_timestamp > signer_account_id = signer_account_id |> sm'.to_string' > predecessor_account_id = predecessor_account_id |> sm'.to_string' > } > > if alias |> is_valid_alias |> not > then near.panic_str "chat_contract.claim_alias / invalid alias" . true > else false > |> ignore > > inl account_alias = > account_map > |> near.lookup_get signer_account_id > |> optionm'.cloned > > match account_alias |> optionm'.unbox with > | Some account_alias when account_alias =. alias => > trace Warning > fun () => "chat_contract.claim_alias / alias already claimed" > fun () => { account_alias = account_alias |> sm'.format_debug } > | account_alias' => > trace Debug > fun () => "chat_contract.claim_alias" > fun () => { account_alias = account_alias |> sm'.format_debug } > > match account_alias' with > | Some account_alias => > !\($'" !alias_map //"') : () > !\($'" .get_mut(&!account_alias) //"') : () > !\($'" .unwrap() //"') : () > !\\(signer_account_id, $'" .remove(&$0); //"') : () > | None => () > > !\\((signer_account_id, alias), $'" !account_map.insert($0.clone(), > $1.clone()); //"') : () > > account_set |> near.iterable_set_insert signer_account_id |> ignore > alias_set |> near.iterable_set_insert alias |> ignore > > !\\(alias, $'" let new_alias_account_map = match !alias_map.get(&$0) { > //"') : () > !\($'" None => { //"') : () > !\($'" let mut new_map = std::collections::HashMap::new(); //"') : > () > !\\((signer_account_id, block_timestamp), $'" new_map.insert($0, > ($1, 0u32)); //"') : () > !\($'" new_map //"') : () > !\($'" } //"') : () > !\($'" Some(accounts) => { //"') : () > !\($'" let mut accounts_vec = accounts.iter().collect::<Vec<_>>(); > //"') : () > !\($'" accounts_vec.sort_unstable_by_key(|(_, (_, index))| index); > //"') : () > !\($'" let mut new_map = accounts_vec //"') : () > !\($'" .iter() //"') : () > !\($'" .enumerate() //"') : () > !\($'" .map(|(i, (signer_account_id, (timestamp, _)))| { //"') : > () > !\($'" ((*signer_account_id).clone(), (*timestamp, i as u32)) > //"') : () > !\($'" }) //"') : () > !\($'" .collect::<std::collections::HashMap<_, _>>(); //"') : () > !\\(signer_account_id, $'" new_map.insert($0, (!block_timestamp, > accounts_vec.len() as u32)); //"') : () > !\($'" new_map //"') : () > !\($'" } //"') : () > !\($'" }; //"') : () > > !\\(alias, $'" !alias_map.insert($0, new_alias_account_map); //"') : () > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -c > > inl state = new () > inl version = state.version > inl account_set = state.account_set > inl alias_set = state.alias_set > inl account_map = state.account_map > inl alias_map = state.alias_map > inl version = join version > inl account_set = join account_set > inl alias_set = join alias_set > inl account_map = join account_map > inl alias_map = join alias_map > inl state : rust.ref (rust.mut' state) = > !\\( > version, > $'$"&mut ($0, !account_set, !alias_set, !account_map, !alias_map)"' > ) > > "alias1" > |> sm'.to_std_string > |> claim_alias state > > trace Verbose > fun () => "chat_contract" > fun () => { state = state |> sm'.format_debug } > > trace Debug (fun () => "") id > > ── [ 17.59s - return value ] ─────────────────────────────────────────────────── > │ 00:00:00 d #1 chat_contract.claim_alias / { alias = > "alias1"; block_timestamp = 1751562454486095597; signer_account_id = > "dev-20250703170733-31282462385281"; predecessor_account_id = > "dev-20250703170733-31282462385281" } > │ 00:00:00 d #2 chat_contract.claim_alias / { > account_alias = None } > │ 00:00:00 v #3 chat_contract / { state = (2, IterableSet > { elements: Vector { len: 1, prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115, > 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116, > 95, 115, 101, 116, 109] } }, IterableSet { elements: Vector { len: 1, prefix: > [97, 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: LookupMap { prefix: > [97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, LookupMap { prefix: [97, > 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, LookupMap { prefix: [97, 108, > 105, 97, 115, 95, 109, 97, 112] }) } > │ > │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1; > total_gas_burnt_usd = +0.002685; total_gas_burnt = 4019024038204 } > │ 00:00:02 i #3 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:02 i #4 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.002479; tokens_burnt_usd = +0.002479; > gas_burnt = 3710942178864; tokens_burnt = 371094217886400000000 } > │ 00:00:02 w #5 spiral_wasm.run / Error error / { retry = > 1; error...igner_account_id = "dev-20250703170735-93746382385208"; > predecessor_account_id = "dev-20250703170735-93746382385208" } > │ 00:00:00 d #2 chat_contract.claim_alias / { > account_alias = None } > │ 00:00:00 v #3 chat_contract / { state = (2, IterableSet > { elements: Vector { len: 1, prefix: [97, 99, 99, 111, 117, 110, 116, 95, 115, > 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116, > 95, 115, 101, 116, 109] } }, IterableSet { elements: Vector { len: 1, prefix: > [97, 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: LookupMap { prefix: > [97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, LookupMap { prefix: [97, > 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, LookupMap { prefix: [97, 108, > 105, 97, 115, 95, 109, 97, 112] }) } > │ > │ 00:00:05 i #8 near_workspaces.print_usd / { retry = 2; > total_gas_burnt_usd = +0.002834; total_gas_burnt = 4242206600704 } > │ 00:00:05 i #9 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:05 i #10 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.002479; tokens_burnt_usd = +0.002479; > gas_burnt = 3710942178864; tokens_burnt = 371094217886400000000 } > │ 00:00:05 i #11 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust \"-c=-e=\\\"chat_contract.claim_alias / invalid alias\\\"\" > > "" > |> sm'.to_std_string > |> claim_alias ( > inl state = new () > inl version = state.version > inl account_set = state.account_set > inl alias_set = state.alias_set > inl account_map = state.account_map > inl alias_map = state.alias_map > !\\(version, $'$"&mut ($0, !account_set, !alias_set, !account_map, > !alias_map)"') > ) > trace Debug (fun () => "") id > > ── [ 14.16s - return value ] ─────────────────────────────────────────────────── > │ > │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1; > total_gas_burnt_usd = +0.001198; total_gas_burnt = 1793210376839 } > │ 00:00:02 i #3 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:02 i #4 near_workspaces.print_usd / outcome / { > is_success = false; gas_burnt_usd = +0.000992; tokens_burnt_usd = +0.000992; > gas_burnt = 1485128517499; tokens_burnt = 148512851749900000000 } > │ 00:00:02 c #5 spiral_wasm.run / Ok (Some error) / { > retry = 1; error = { receipt_outcomes_len = 1; retry = 1; receipt_failures = [ > │ ExecutionOutcome { > │ transaction_hash: > BmS2Cnw7DVBESfUNyyLvd1Bam26LkWPts1GvWvambcQs, > │ block_hash: > 5paFijNaJjHH8kKS8v33Gcj7R6EB73VcF3uphEtdEwdo, > │ logs: [], > │ receipt_ids: [ > │ Eb9QQuoEhc86Txuqmf22vqYojeW4QtfyFC3MKSByG2BB, > │ ], > │ gas_burnt: NearGas { > │ inner: 1485128517499, > │ }, > │ tokens_burnt: NearToken { > │ inner: 148512851749900000000, > │ }, > │ executor_id: AccountId( > │ "dev-20250703170750-81992773788696", > │ ), > │ status: Failure(ActionError(ActionError { index: > Some(0), kind: FunctionCallError(ExecutionError("Smart contract panicked: > chat_contract.claim_alias / invalid alias")) })), > │ }, > │ ] } } > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -cd borsh > > inl state' = new () > inl state = state' > inl version = state.version > inl account_set = state.account_set > inl alias_set = state.alias_set > inl account_map = state.account_map > inl alias_map = state.alias_map > inl version = join version > inl account_set = join account_set > inl alias_set = join alias_set > inl account_map = join account_map > inl alias_map = join alias_map > > inl state = > !\\( > (version, account_set, alias_set), > $'$"&mut ($0, $1, $2, !account_map, !alias_map)"' > ) > > "alias1" > |> sm'.to_std_string > |> claim_alias state > > "alias1" > |> sm'.to_std_string > |> claim_alias state > > "alias1" > |> sm'.to_std_string > |> claim_alias state > > inl account_set' : rust.ref (near.iterable_set near.account_id) = > !\($'$"&!state.1"') > > inl alias_set' : rust.ref (near.iterable_set sm'.std_string) = > !\($'$"&!state.2"') > > inl account_set' = > account_set' > |> iter.iter_ref'' > |> iter.cloned > |> iter_collect > > inl alias_set' = > alias_set' > |> iter.iter_ref'' > |> iter.cloned > |> iter_collect > |> am'.vec_map sm'.from_std_string > > trace Verbose > fun () => "chat_contract" > fun () => { > account_set' = account_set' |> sm'.format_debug > alias_set' = alias_set' |> sm'.format_debug > state = state |> sm'.format_debug > } > > trace Debug (fun () => "") id > > account_set' > |> am'.vec_len > |> convert > |> _assert_eq 1u32 > > alias_set' > |> am'.from_vec_base > |> _assert_eq' ;[[ "alias1" ]] > > ── [ 17.94s - return value ] ─────────────────────────────────────────────────── > │ 00:00:00 d #1 chat_contract.claim_alias / { alias = > "alias1"; block_timestamp = 1751562486501585491; signer_account_id = > "dev-20250703170805-40464889166497"; predecessor_account_id = > "dev-20250703170805-40464889166497" } > │ 00:00:00 d #2 chat_contract.claim_alias / { > account_alias = None } > │ 00:00:00 d #3 chat_contract.claim_alias / { alias = > "alias1"; block_timestamp = 1751562486501585491; signer_account_id = > "dev-20250703170805-40464889166497"; predecessor_account_id = > "dev-20250703170805-40464889166497" } > │ 00:00:00 d #4 chat_contract.claim_alias / { > account_alias = Some("alias1") } > │ 00:00:00 d #5 chat_contract.claim_alias / { alias = > "alias1"; block_timestamp = 1751562486501585491; signer_account_id = > "dev-20250703170805-40464889166497"; predecessor_account_id = > "dev-20250703170805-40464889166497" } > │ 00:00:00 d #6 chat_contract.claim_alias / { > account_alias = Some("alias1") } > │ 00:00:00 v #7 chat_contract / { account_set' = > [AccountId("dev-20250703170805-40464889166497")]; alias_set' = ["alias1"]; state > = (2, IterableSet { elements: Vector { len: 1, prefix: [97, 99, 99, 111, 117, > 110, 116, 95, 115, 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, > 111, 117, 110, 116, 95, 115, 101, 116, 109] } }, IterableSet { elements: Vector > { len: 1, prefix: [97, 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: > LookupMap { prefix: [97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, > LookupMap { prefix: [97, 99, 99, ...-77841210359330" } > │ 00:00:00 d #6 chat_contract.claim_alias / { > account_alias = Some("alias1") } > │ 00:00:00 v #7 chat_contract / { account_set' = > [AccountId("dev-20250703170807-77841210359330")]; alias_set' = ["alias1"]; state > = (2, IterableSet { elements: Vector { len: 1, prefix: [97, 99, 99, 111, 117, > 110, 116, 95, 115, 101, 116, 118] }, index: LookupMap { prefix: [97, 99, 99, > 111, 117, 110, 116, 95, 115, 101, 116, 109] } }, IterableSet { elements: Vector > { len: 1, prefix: [97, 108, 105, 97, 115, 95, 115, 101, 116, 118] }, index: > LookupMap { prefix: [97, 108, 105, 97, 115, 95, 115, 101, 116, 109] } }, > LookupMap { prefix: [97, 99, 99, 111, 117, 110, 116, 95, 109, 97, 112] }, > LookupMap { prefix: [97, 108, 105, 97, 115, 95, 109, 97, 112] }) } > │ > │ 00:00:04 i #8 near_workspaces.print_usd / { retry = 2; > total_gas_burnt_usd = +0.005043; total_gas_burnt = 7549380428811 } > │ 00:00:04 i #9 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:04 i #10 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.004688; tokens_burnt_usd = +0.004688; > gas_burnt = 7018116006971; tokens_burnt = 701811600697100000000 } > │ 00:00:04 i #11 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### get_account_info > > ── spiral ────────────────────────────────────────────────────────────────────── > inl get_account_info > (state : rust.ref state) > (account_id : near.account_id) > : optionm'.option' (sm'.std_string * (u64 * u32)) > = > inl account_map : rust.ref (near.lookup_map near.account_id sm'.std_string) > = > !\($'$"&!state.3"') > > inl alias_map : rust.ref (near.lookup_map sm'.std_string (mapm.hash_map > near.account_id (u64 * u32))) = > !\($'$"&!state.4"') > > (!\\(account_id, $'"true; let result = > !account_map.get(&$0).and_then(|alias| { //"') : bool) |> ignore > (!\($'"true; !alias_map.get(alias).map(|accounts| { //"') : bool) |> > ignore > (!\($'"true; let result = (alias.clone(), > *accounts.get(&!account_id).unwrap()); //"') : bool) |> ignore > (!\($'"true; (result.0, result.1.0, result.1.1) }) }); //"') : bool) > |> ignore > > inl result = !\($'"result"') > > trace Debug > fun () => "chat_contract.get_account_info" > fun () => { account_id result } > > trace Debug (fun () => "") id > > result > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! rust -cd borsh > > inl state' = new () > inl state = state' > inl version = state.version > inl account_set = state.account_set > inl alias_set = state.alias_set > inl account_map = state.account_map > inl alias_map = state.alias_map > inl version = join version > inl account_set = join account_set > inl alias_set = join alias_set > inl account_map = join account_map > inl alias_map = join alias_map > > inl state_ref_mut = > !\\( > version, > $'$"&mut ($0, !account_set, !alias_set, !account_map, !alias_map)"' > ) > > inl state_ref = !\($'$"!state_ref_mut"') > near.predecessor_account_id () > |> get_account_info state_ref > |> _assert_eq' (optionm'.none' ()) > > inl state_ref = !\($'$"!state_ref_mut"') > near.signer_account_id () > |> get_account_info state_ref > |> _assert_eq' (optionm'.none' ()) > > "alias1" > |> sm'.to_std_string > |> claim_alias state_ref_mut > > inl state_ref = !\($'$"!state_ref_mut"') > near.predecessor_account_id () > |> get_account_info state_ref > |> optionm'.get' > |> fun alias, (timestamp, i) => > alias > |> sm'.from_std_string > |> _assert_eq "alias1" > > timestamp > |> _assert_gt 0 > > i > |> _assert_eq 0 > > inl state_ref = !\($'$"!state_ref_mut"') > near.signer_account_id () > |> get_account_info state_ref > |> optionm'.get' > |> fun alias, (timestamp, i) => > alias > |> sm'.from_std_string > |> _assert_eq "alias1" > > timestamp > |> _assert_gt 0 > > i > |> _assert_eq 0 > > ── [ 23.78s - return value ] ─────────────────────────────────────────────────── > │ 00:00:00 d #1 chat_contract.get_account_info / { > account_id = AccountId( > │ "dev-20250703170823-52533777113249", > │ ); result = None } > │ 00:00:00 d #3 chat_contract.get_account_info / { > account_id = AccountId( > │ "dev-20250703170823-52533777113249", > │ ); result = None } > │ 00:00:00 d #5 chat_contract.claim_alias / { alias = > "alias1"; block_timestamp = 1751562504312878655; signer_account_id = > "dev-20250703170823-52533777113249"; predecessor_account_id = > "dev-20250703170823-52533777113249" } > │ 00:00:00 d #6 chat_contract.claim_alias / { > account_alias = None } > │ 00:00:00 d #7 chat_contract.get_account_info / { > account_id = AccountId( > │ "dev-20250703170823-52533777113249", > │ ); result = Some( > │ ( > │ "alias1", > │ 1751562504312878655, > │ 0, > │ ), > │ ) } > │ 00:00:00 d #9 chat_contract.get_account_info / { > account_id = AccountId( > │ "dev-20250703170823-52533777113249", > │ ); result = Some( > │ ( > │ "alias1", > │ 1751562504312878655, > │ 0, > │ ), > │ ) } > │ > │ 00:00:02 i #2 near_workspaces.print_usd / { retry = 1; > total_gas_burnt_usd = +0.003834; total_gas_burnt = 5739044865590 } > │ 00:00:02 i #3 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:02 i #4 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.003628; tokens_burnt_usd = +0.0...806", > │ ); result = None } > │ 00:00:00 d #5 chat_contract.claim_alias / { alias = > "alias1"; block_timestamp = 1751562512841186215; signer_account_id = > "dev-20250703170831-39065816747806"; predecessor_account_id = > "dev-20250703170831-39065816747806" } > │ 00:00:00 d #6 chat_contract.claim_alias / { > account_alias = None } > │ 00:00:00 d #7 chat_contract.get_account_info / { > account_id = AccountId( > │ "dev-20250703170831-39065816747806", > │ ); result = Some( > │ ( > │ "alias1", > │ 1751562512841186215, > │ 0, > │ ), > │ ) } > │ 00:00:00 d #9 chat_contract.get_account_info / { > account_id = AccountId( > │ "dev-20250703170831-39065816747806", > │ ); result = Some( > │ ( > │ "alias1", > │ 1751562512841186215, > │ 0, > │ ), > │ ) } > │ > │ 00:00:10 i #26 near_workspaces.print_usd / { retry = 5; > total_gas_burnt_usd = +0.003983; total_gas_burnt = 5962227428090 } > │ 00:00:10 i #27 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000206; tokens_burnt_usd = +0.000206; > gas_burnt = 308081859340; tokens_burnt = 30808185934000000000 } > │ 00:00:10 i #28 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.003628; tokens_burnt_usd = +0.003628; > gas_burnt = 5430963006250; tokens_burnt = 543096300625000000000 } > │ 00:00:10 i #29 near_workspaces.print_usd / outcome / { > is_success = true; gas_burnt_usd = +0.000149; tokens_burnt_usd = +0.000000; > gas_burnt = 223182562500; tokens_burnt = 0 } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### main > > ── spiral ────────────────────────────────────────────────────────────────────── > ///! _ > > inl main () = > !\($'"} //"') : () > > !\($'"\#[[near_sdk::near_bindgen]] //"') : () > > !\($'"\#[[derive( //"') : () > !\($'" near_sdk::PanicOnDefault, //"') : () > !\($'" borsh::BorshDeserialize, //"') : () > !\($'" borsh::BorshSerialize, //"') : () > !\($'")]] //"') : () > > !\($'"pub struct State ( //"') : () > > !\($'"/*"') : () > (null () : rust.type_emit state) |> ignore > !\($'"*/ )"') : () > > inl new_ () = > !\($'"\#[[init]] //"') : () > !\($'"pub fn new() -> Self { // 1"') : () > > (!\($'"true; /*"') : bool) |> ignore > > (null () : rust.type_emit ()) |> ignore > > (!\($'"true; */"') : bool) |> ignore > > inl result = new () > > $'let _result = !result in _result |> (fun x -> > Fable.Core.RustInterop.emitRustExpr x $"Self($0) // x") // 2' : () > > !\($'"} // 2."') : () > > !\($'"} // 1."') : () > > 2 > > inl is_valid_alias () = > !\($'"fn is_valid_alias(alias: String) -> bool { //"') : () > inl alias = !\($'$"alias"') > inl result = alias |> is_valid_alias > $'let _result = !result in _result |> (fun x -> > Fable.Core.RustInterop.emitRustExpr x "$0 }") // 2' : () > !\($'"} //"') : () > 1 > > inl generate_cid () = > !\($'"pub fn generate_cid( //"') : () > !\($'" &self, //"') : () > !\($'" content: Vec<u8>, //"') : () > !\($'") -> String { //"') : () > inl content = !\($'$"content"') > inl result = generate_cid content > $'let _result = !result in _result |> (fun x -> > Fable.Core.RustInterop.emitRustExpr x "$0 }") // 2' : () > !\($'"} //"') : () > 2 > > inl generate_cid_borsh () = > !\($'"\#[[result_serializer(borsh)]] //"') : () > !\($'"pub fn generate_cid_borsh( //"') : () > !\($'" &self, //"') : () > !\($'" \#[[serializer(borsh)]] content: Vec<u8>, //"') : () > !\($'") -> String { //"') : () > !\($'" self.generate_cid(content) //"') : () > !\($'"} //"') : () > 1 > > inl claim_alias () = > !\($'"pub fn claim_alias( //"') : () > !\($'" &mut self, //"') : () > !\($'" alias: String, //"') : () > !\($'") { //"') : () > > inl state = !\($'$"&mut self.0"') > inl alias = !\($'$"alias"') > > inl result = claim_alias state alias > trace Debug (fun () => "") (join id) > > !\($'"} //"') : () > > !\($'"} //"') : () > > !\($'"} //"') : () > > 3 > > inl get_account_info () = > !\($'"pub fn get_account_info( //"') : () > !\($'" &self, //"') : () > !\($'" account_id: near_sdk::AccountId, //"') : () > !\($'") -> Option<(String, u64, u32)> { //"') : () > > inl state = !\($'$"&self.0"') > inl account_id : near.account_id = !\($'$"account_id"') > > inl result = account_id |> get_account_info state > $'let _result = !result in _result |> (fun x -> > Fable.Core.RustInterop.emitRustExpr x "$0 } // 4") // 3' : () > > !\($'"} // 1"') : () > > 1 > > inl get_alias_map () = > !\($'"pub fn get_alias_map( //"') : () > !\($'" &self, //"') : () > !\($'" alias: String, //"') : () > !\($'") -> Option<std::collections::HashMap<near_sdk::AccountId, (u64, > u32)>> { //"') : () > > inl alias_map : rust.ref (near.lookup_map sm'.std_string (mapm.hash_map > near.account_id (u64 * u32))) = > !\($'$"&self.0.4"') > > inl alias : sm'.std_string = !\($'$"alias"') > > trace Debug > fun () => "chat_contract.get_alias_map" > fun () => { alias } > > trace Debug (fun () => "") (join id) > > !\\(alias, $'" !alias_map.get(&$0).cloned() //"') : () > !\($'"} //"') : () > > !\($'"} //"') : () > > 2 > > inl get_alias_map_borsh () = > !\($'"\#[[result_serializer(borsh)]] //"') : () > !\($'"pub fn get_alias_map_borsh( //"') : () > !\($'" &self, //"') : () > !\($'" \#[[serializer(borsh)]] alias: String, //"') : () > !\($'") -> Option<std::collections::HashMap<near_sdk::AccountId, (u64, > u32)>> { //"') : () > !\($'" self.get_alias_map(alias) //"') : () > !\($'"} //"') : () > 1 > > inl fns = > [[ > new_ > is_valid_alias > generate_cid > generate_cid_borsh > claim_alias > get_account_info > get_alias_map > get_alias_map_borsh > ]] > > // inl rec 루프 acc fns i = > inl rec 루프 forall i {number} j {number}. (acc : i) (fns : list (() -> i)) > (i : j) : i = > match fns with > | [[]] => acc > | x :: xs => > !\($'"\#[[near_sdk::near_bindgen]] //"') : () > !\($'"impl State { //"') : () > inl n = x () > !\($'"} /* c"') : () > // inl rec 루프' i' = > inl rec 루프' forall t {number}. (i' : t) : () = > if i' <> 1 // <= n > then (!\($'"true; */ // ???? / i: !i / i\': !i' / acc: !acc / n: > !n"') : bool) |> ignore > else > (!\($'"true; // ??? / i: !i / i\': !i' / acc: !acc / n: > !n"') : bool) |> ignore > 루프' (i' + 1) > 루프' 1u8 > 루프 (acc + n) xs (i + 1) > inl n = 루프 0u8 fns 1u8 > > > // !\($'"/* a"') : () > > // !\($'"} // b"') : () > > !\($'"fn _main() //"') : () > !\($'"{ { //"') : () > > inl rec 루프' i' = > if i' <= n > then > (!\($'"true; { (); // ?? / i\': !i' / n: !n"') : bool) |> ignore > 루프' (i' + 1) > else > (!\($'"true; { { (); // ? / i\': !i' / n: !n"') : bool) |> ignore > // (!\($'"true; */ // ?? / i\': !i' / n: !n"') : bool) |> ignore > 루프' 1u8 > > inl main () = > $'!main |> ignore' : () 00:04:48 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 55096 } 00:04:48 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:04:48 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib.ipynb to html 00:04:48 v #6 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:04:48 v #7 ! validate(nb) 00:04:49 v #8 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:04:49 v #9 ! return _pygments_highlight( 00:04:49 v #10 ! [NbConvertApp] Writing 448972 bytes to /home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib.html 00:04:49 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 928 } 00:04:49 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 928 } 00:04:49 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/chat/contract/chat_contract.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:04:50 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:04:50 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:04:50 d #16 spiral.run / dib / { exit_code = 0; result_length = 56083 } 00:00:00 d #1 writeDibCode / output: Spi / path: chat_contract.dib 00:00:00 d #2 parseDibCode / output: Spi / file: chat_contract.dib 00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: chat_contract / hash: / code.Length: 204383 00:00:00 d #2 buildProject / fullPath: /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj 00:00:00 d #1 runtime.execute_with_options_async / { file_name = dotnet; arguments = US5_0 "publish "/home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/chat/contract/dist" --runtime linux-x64"; options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/chat/contract/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/chat_contract"; stderr = true } } 00:00:00 v #2 > Determining projects to restore... 00:00:01 v #3 > Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 00:00:01 v #4 > The last full restore is still up to date. Nothing left to do. 00:00:01 v #5 > Total time taken: 0 milliseconds 00:00:01 v #6 > Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 00:00:01 v #7 > Restoring /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj 00:00:01 v #8 > Starting restore process. 00:00:01 v #9 > Total time taken: 0 milliseconds 00:00:02 v #10 > Restored /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj (in 275 ms). 00:00:09 v #11 > /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fs(4632,15): warning FS0025: Incomplete pattern matches on this expression. For example, the value 'US7_0 (_)' may indicate a case not covered by the pattern(s). [/home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj] 00:00:13 v #12 > chat_contract -> /home/runner/work/polyglot/polyglot/target/Builder/chat_contract/bin/Release/net9.0/linux-x64/chat_contract.dll 00:00:14 v #13 > chat_contract -> /home/runner/work/polyglot/polyglot/apps/chat/contract/dist 00:00:14 d #14 runtime.execute_with_options_async / { exit_code = 0; output_length = 1073; options = { command = dotnet publish "/home/runner/work/polyglot/polyglot/target/Builder/chat_contract/chat_contract.fsproj" --configuration Release --output "/home/runner/work/polyglot/polyglot/apps/chat/contract/dist" --runtime linux-x64; cancellation_token = None; environment_variables = [||]; on_line = None; stdin = None; trace = true; working_directory = Some "/home/runner/work/polyglot/polyglot/target/Builder/chat_contract"; stderr = true } } spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: /home/runner/work/polyglot/polyglot/target/Builder/chat_contract polyglot/scripts/core.ps1/ResolveLink #4 / Path: /home/runner/work/polyglot/polyglot/deps/spiral/lib/spiral/../../deps/polyglot / parent_target: / path_target: /home/runner/work/polyglot/polyglot / parent: /home/runner/work/polyglot/polyglot/deps/spiral/lib/spiral/../../deps / End: polyglot spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: /home/runner/work/polyglot/polyglot/target/Builder/chat_contract / ProjectName: chat_contract / Language: rs / Runtime: CONTRACT / root: /home/runner/work/polyglot/polyglot Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha) Thanks to the contributor! @damonmcminn Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target/Builder/chat_contract/chat_contract.fsproj... Project and references (14 source files) parsed in 2959ms Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Started Fable compilation... Fable compilation finished in 9660ms ./target/Builder/chat_contract/chat_contract.fs(4632,15): (4632,19) warning FSHARP: Incomplete pattern matches on this expression. For example, the value 'US7_0 (_)' may indicate a case not covered by the pattern(s). (code 25) ./deps/spiral/lib/spiral/sm.fsx(561,0): (561,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/common.fsx(2339,0): (2339,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/async_.fsx(252,0): (252,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/threading.fsx(139,0): (139,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/crypto.fsx(2569,0): (2569,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/date_time.fsx(2553,0): (2553,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/platform.fsx(122,0): (122,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/networking.fsx(5637,0): (5637,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/trace.fsx(2897,0): (2897,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/runtime.fsx(9581,0): (9581,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/file_system.fsx(21240,0): (21240,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./target/Builder/chat_contract/chat_contract.fs(4838,6): (4838,12) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! Updating crates.io index Downloading crates ... Downloaded darling_macro v0.20.10 Downloaded data-encoding v2.6.0 Downloaded data-encoding-macro v0.1.15 Downloaded crypto-common v0.2.0-rc.1 Downloaded cpufeatures v0.2.16 Downloaded equivalent v1.0.1 Downloaded digest v0.11.0-pre.9 Downloaded tinyvec v1.8.0 Downloaded unicode-ident v1.0.14 Downloaded winnow v0.6.20 Downloaded toml_datetime v0.6.8 Downloaded proc-macro-crate v3.2.0 Downloaded sha2 v0.11.0-pre.4 Downloaded hybrid-array v0.2.3 Downloaded toml_edit v0.22.22 Downloaded indexmap v2.7.0 Downloaded hashbrown v0.15.2 Downloaded syn v2.0.90 Downloaded syn v1.0.109 Downloaded getrandom v0.2.15 Downloaded serde_json v1.0.133 Downloaded proc-macro2 v1.0.92 Downloaded memchr v2.7.4 Downloaded itoa v1.0.14 Downloaded near-account-id v1.0.0 Downloaded serde v1.0.216 Downloaded rustversion v1.0.18 Downloaded rand_core v0.6.4 Downloaded quote v1.0.37 Downloaded once_cell v1.20.2 Downloaded near-sdk-macros v5.6.0 Downloaded libc v0.2.168 Downloaded near-sys v0.2.2 Downloaded cfg-if v1.0.0 Downloaded block-buffer v0.11.0-rc.3 Downloaded ryu v1.0.18 Downloaded data-encoding-macro-internal v0.1.13 Downloaded darling_core v0.20.10 Downloaded typenum v1.17.0 Downloaded serde_derive v1.0.216 Downloaded near-sdk v5.6.0 Downloaded const-oid v0.10.0-rc.3 Downloaded borsh v1.5.3 Downloaded borsh-derive v1.5.3 Downloaded darling v0.20.10 Compiling proc-macro2 v1.0.92 Compiling unicode-ident v1.0.14 Compiling hashbrown v0.15.2 Compiling equivalent v1.0.1 Compiling winnow v0.6.20 Compiling toml_datetime v0.6.8 Compiling cfg_aliases v0.2.1 Compiling serde v1.0.216 Compiling typenum v1.17.0 Compiling indexmap v2.7.0 Compiling quote v1.0.37 Compiling syn v2.0.90 Compiling borsh v1.5.3 Compiling serde_json v1.0.133 Compiling once_cell v1.20.2 Compiling ident_case v1.0.1 Compiling rustversion v1.0.18 Compiling toml_edit v0.22.22 Compiling syn v1.0.109 Compiling fnv v1.0.7 Compiling hybrid-array v0.2.3 Compiling memchr v2.7.4 Compiling proc-macro-crate v3.2.0 Compiling near-sdk-macros v5.6.0 Compiling itoa v1.0.14 Compiling data-encoding v2.6.0 Compiling ryu v1.0.18 Compiling heck v0.5.0 Compiling darling_core v0.20.10 Compiling wee_alloc v0.4.5 Compiling data-encoding-macro-internal v0.1.13 Compiling block-buffer v0.11.0-rc.3 Compiling crypto-common v0.2.0-rc.1 Compiling Inflector v0.11.4 Compiling strum v0.26.3 Compiling cfg-if v0.1.10 Compiling memory_units v0.4.0 Compiling const-oid v0.10.0-rc.3 Compiling digest v0.11.0-pre.9 Compiling serde_derive v1.0.216 Compiling borsh-derive v1.5.3 Compiling darling_macro v0.20.10 Compiling darling v0.20.10 Compiling strum_macros v0.26.4 Compiling data-encoding-macro v0.1.15 Compiling base-x v0.2.11 Compiling bs58 v0.5.1 Compiling base64 v0.22.1 Compiling near-sys v0.2.2 Compiling cfg-if v1.0.0 Compiling sha2 v0.11.0-pre.4 Compiling multibase v0.9.1 Compiling fable_library_rust v0.1.0 (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library-rust) Compiling unsigned-varint v0.8.0 Compiling inline_colorization v0.1.6 Compiling near-account-id v1.0.0 Compiling near-gas v0.3.0 Compiling near-token v0.3.0 Compiling near-sdk v5.6.0 Compiling chat_contract v0.0.1 (/home/runner/work/polyglot/polyglot/apps/chat/contract) Finished `release` profile [optimized] target(s) in 20.24s polyglot/apps/chat/contract/build.ps1 / $targetDir = /home/runner/work/polyglot/polyglot/target/Builder/chat_contract / $projectName: chat_contract / $env:CI:'true' warning: /home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /home/runner/work/polyglot/polyglot/apps/chat/contract/tests/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /home/runner/work/polyglot/polyglot/examples/rust/exercism/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /home/runner/work/polyglot/polyglot/lib/math/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /home/runner/work/polyglot/polyglot/apps/chat/contract/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /home/runner/work/polyglot/polyglot/apps/plot/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. Downloading crates ... Downloaded enumflags2 v0.7.10 Downloaded native-tls v0.2.12 Downloaded tokio-macros v2.4.0 Downloaded tracing-indicatif v0.3.8 Downloaded hyper v0.14.31 Downloaded reqwest v0.12.9 Downloaded rustls v0.23.20 Downloaded derive_more v0.99.18 Downloaded is-terminal v0.4.13 Downloaded zerofrom v0.1.5 Downloaded enumflags2_derive v0.7.10 Downloaded zerofrom-derive v0.1.5 Downloaded open v5.3.1 Downloaded string_cache v0.8.7 Downloaded litemap v0.7.4 Downloaded xml-rs v0.8.24 Downloaded tar v0.4.43 Downloaded serde_derive v1.0.216 Downloaded indexmap v2.7.0 Downloaded hyper v1.5.1 Downloaded tokio-util v0.7.13 Downloaded serde_with v3.11.0 Downloaded h2 v0.4.7 Downloaded near-sdk v5.6.0 Downloaded clap_builder v4.5.23 Downloaded time v0.3.37 Downloaded cc v1.2.4 Downloaded openssl v0.10.68 Downloaded webpki-roots v0.26.7 Downloaded schemars v0.8.21 Downloaded rustls-pki-types v1.10.1 Downloaded openssl-sys v0.9.104 Downloaded indicatif v0.17.9 Downloaded rustix v0.37.27 Downloaded borsh v1.5.3 Downloaded rustix v0.38.42 Downloaded pin-project v1.1.7 Downloaded bytes v1.9.0 Downloaded tokio-rustls v0.26.1 Downloaded time-macros v0.2.19 Downloaded textwrap v0.16.1 Downloaded tempfile v3.14.0 Downloaded semver v1.0.24 Downloaded schemars_derive v0.8.21 Downloaded pin-project-internal v1.1.7 Downloaded near-sandbox-utils v0.12.0 Downloaded event-listener v5.3.1 Downloaded clap v4.5.23 Downloaded anyhow v1.0.94 Downloaded serde_repr v0.1.19 Downloaded rustversion v1.0.18 Downloaded proc-macro-crate v3.2.0 Downloaded csv-core v0.1.11 Downloaded ordered-float v4.5.0 Downloaded hyper-rustls v0.27.3 Downloaded phf_shared v0.10.0 Downloaded tokio v1.42.0 Downloaded dyn-clone v1.0.17 Downloaded ipnet v2.10.1 Downloaded httparse v1.9.5 Downloaded futures-lite v2.5.0 Downloaded crunchy v0.2.2 Downloaded portable-atomic v1.10.0 Downloaded http-body-util v0.1.2 Downloaded http v1.2.0 Downloaded flate2 v1.0.35 Downloaded serde_with_macros v3.11.0 Downloaded near-sdk-macros v5.6.0 Downloaded borsh-derive v1.5.3 Downloaded async-trait v0.1.83 Downloaded openssl-src v300.4.1+3.4.0 Compiling libc v0.2.168 Compiling serde v1.0.216 Compiling syn v2.0.90 Compiling version_check v0.9.5 Compiling shlex v1.3.0 Compiling once_cell v1.20.2 Compiling jobserver v0.1.32 Compiling typenum v1.17.0 Compiling cc v1.2.4 Compiling generic-array v0.14.7 Compiling smallvec v1.13.2 Compiling pkg-config v0.3.31 Compiling futures-core v0.3.31 Compiling lock_api v0.4.12 Compiling parking_lot_core v0.9.10 Compiling scopeguard v1.2.0 Compiling log v0.4.22 Compiling byteorder v1.5.0 Compiling bytes v1.9.0 Compiling parking_lot v0.12.3 Compiling getrandom v0.2.15 Compiling signal-hook-registry v1.4.2 Compiling hashbrown v0.15.2 Compiling equivalent v1.0.1 Compiling toml_datetime v0.6.8 Compiling tracing-core v0.1.33 Compiling futures-io v0.3.31 Compiling socket2 v0.5.8 Compiling synstructure v0.13.1 Compiling indexmap v2.7.0 Compiling mio v1.0.3 Compiling futures-sink v0.3.31 Compiling subtle v2.6.1 Compiling rand_core v0.6.4 Compiling crypto-common v0.1.6 Compiling futures-channel v0.3.31 Compiling anyhow v1.0.94 Compiling block-buffer v0.10.4 Compiling num-traits v0.2.19 Compiling cfg_aliases v0.2.1 Compiling syn v1.0.109 Compiling fnv v1.0.7 Compiling digest v0.10.7 Compiling winnow v0.6.20 Compiling serde_derive v1.0.216 Compiling zerofrom-derive v0.1.5 Compiling yoke-derive v0.7.5 Compiling tracing-attributes v0.1.28 Compiling tokio-macros v2.4.0 Compiling zerovec-derive v0.10.3 Compiling tracing v0.1.41 Compiling tokio v1.42.0 Compiling displaydoc v0.2.5 Compiling futures-macro v0.3.31 Compiling futures-util v0.3.31 Compiling zerocopy-derive v0.7.35 Compiling zerocopy v0.7.35 Compiling toml_edit v0.22.22 Compiling zstd-sys v2.0.13+zstd.1.5.6 Compiling rustversion v1.0.18 Compiling crossbeam-utils v0.8.21 Compiling icu_provider_macros v1.5.0 Compiling bitflags v2.6.0 Compiling lazy_static v1.5.0 Compiling thiserror v1.0.69 Compiling proc-macro-crate v3.2.0 Compiling ppv-lite86 v0.2.20 Compiling thiserror-impl v1.0.69 Compiling borsh-derive v1.5.3 Compiling rand_chacha v0.3.1 Compiling serde_json v1.0.133 Compiling rand v0.8.5 Compiling borsh v1.5.3 Compiling stable_deref_trait v1.2.0 Compiling tokio-util v0.7.13 Compiling sha2 v0.10.8 Compiling semver v1.0.24 Compiling percent-encoding v2.3.1 Compiling zerofrom v0.1.5 Compiling bitflags v1.3.2 Compiling yoke v0.7.5 Compiling num-integer v0.1.46 Compiling memchr v2.7.4 Compiling httparse v1.9.5 Compiling zerovec v0.10.4 Compiling hex v0.4.3 Compiling ring v0.17.8 Compiling tower-service v0.3.3 Compiling cfg-if v1.0.0 Compiling try-lock v0.2.5 Compiling want v0.3.1 Compiling async-trait v0.1.83 Compiling static_assertions v1.1.0 Compiling tinystr v0.7.6 Compiling http v0.2.12 Compiling thread_local v1.1.8 Compiling powerfmt v0.2.0 Compiling utf8parse v0.2.2 Compiling regex-syntax v0.6.29 Compiling writeable v0.5.5 Compiling litemap v0.7.4 Compiling deranged v0.3.11 Compiling icu_locid v1.5.0 Compiling regex-automata v0.1.10 Compiling openssl-src v300.4.1+3.4.0 Compiling overload v0.1.1 Compiling vcpkg v0.2.15 Compiling num-conv v0.1.0 Compiling time-core v0.1.2 Compiling openssl-sys v0.9.104 Compiling time v0.3.37 Compiling matchers v0.1.0 Compiling nu-ansi-term v0.46.0 Compiling icu_provider v1.5.0 Compiling http-body v0.4.6 Compiling aho-corasick v1.1.3 Compiling rustc_version v0.4.1 Compiling crossbeam-channel v0.5.14 Compiling sharded-slab v0.1.7 Compiling pin-project-internal v1.1.7 Compiling serde_repr v0.1.19 Compiling tracing-log v0.2.0 Compiling bzip2-sys v0.1.11+1.0.8 Compiling num-bigint v0.3.3 Compiling indexmap v1.9.3 Compiling zstd-safe v5.0.2+zstd.1.5.2 Compiling regex-syntax v0.8.5 Compiling atomic-waker v1.1.2 Compiling base64 v0.21.7 Compiling icu_locid_transform_data v1.5.0 Compiling icu_locid_transform v1.5.0 Compiling pin-project v1.1.7 Compiling tracing-subscriber v0.3.19 Compiling curve25519-dalek v4.1.3 Compiling regex-automata v0.4.9 Compiling h2 v0.3.26 Compiling icu_collections v1.5.0 Compiling near-account-id v1.0.0 Compiling axum-core v0.3.4 Compiling futures-executor v0.3.31 Compiling num-rational v0.3.2 Compiling ident_case v1.0.1 Compiling hashbrown v0.12.3 Compiling httpdate v1.0.3 Compiling tower-layer v0.3.3 Compiling either v1.13.0 Compiling strsim v0.11.1 Compiling icu_properties_data v1.5.0 Compiling convert_case v0.4.0 Compiling crunchy v0.2.2 Compiling base64 v0.22.1 Compiling mime v0.3.17 Compiling derive_more v0.99.18 Compiling icu_properties v1.5.1 Compiling darling_core v0.20.10 Compiling itertools v0.12.1 Compiling hyper v0.14.31 Compiling regex v1.11.1 Compiling axum v0.6.20 Compiling tokio-stream v0.1.17 Compiling derive_arbitrary v1.4.1 Compiling enum-map-derive v0.17.0 Compiling curve25519-dalek-derive v0.1.1 Compiling secp256k1-sys v0.8.1 Compiling write16 v1.0.0 Compiling rustls v0.23.20 Compiling schemars v0.8.21 Compiling urlencoding v2.1.3 Compiling heck v0.4.1 Compiling bs58 v0.4.0 Compiling rustls-pki-types v1.10.1 Compiling utf8_iter v1.0.4 Compiling utf16_iter v1.0.5 Compiling icu_normalizer_data v1.5.0 Compiling signature v2.2.0 Compiling ed25519 v2.2.3 Compiling icu_normalizer v1.5.0 Compiling strum_macros v0.24.3 Compiling opentelemetry v0.22.0 Compiling arbitrary v1.4.1 Compiling enum-map v2.7.3 Compiling tower v0.4.13 Compiling darling_macro v0.20.10 Compiling prost-derive v0.12.6 Compiling anstyle-parse v0.2.6 Compiling concurrent-queue v2.5.0 Compiling tokio-io-timeout v1.2.0 Compiling ordered-float v4.5.0 Compiling async-stream-impl v0.3.6 Compiling serde_derive_internals v0.29.1 Compiling block-padding v0.3.3 Compiling openssl v0.10.68 Compiling anstyle v1.0.10 Compiling is_terminal_polyfill v1.70.1 Compiling colorchoice v1.0.3 Compiling foreign-types-shared v0.1.1 Compiling anstyle-query v1.1.2 Compiling glob v0.3.1 Compiling parking v2.2.1 Compiling matchit v0.7.3 Compiling sync_wrapper v0.1.2 Compiling schemars_derive v0.8.21 Compiling opentelemetry_sdk v0.22.1 Compiling anstream v0.6.18 Compiling foreign-types v0.3.2 Compiling inout v0.1.3 Compiling async-stream v0.3.6 Compiling prost v0.12.6 Compiling hyper-timeout v0.4.1 Compiling uint v0.9.5 Compiling darling v0.20.10 Compiling near-primitives-core v0.23.0 Compiling ed25519-dalek v2.1.1 Compiling strum v0.24.1 Compiling idna_adapter v1.2.0 Compiling fixed-hash v0.7.0 Compiling form_urlencoded v1.2.1 Compiling openssl-macros v0.1.1 Compiling http v1.2.0 Compiling fastrand v2.3.0 Compiling winnow v0.5.40 Compiling protobuf v2.28.0 Compiling json_comments v0.2.2 Compiling rustix v0.38.42 Compiling near-config-utils v0.23.0 Compiling primitive-types v0.10.1 Compiling toml_edit v0.19.15 Compiling idna v1.0.3 Compiling tonic v0.11.0 Compiling secp256k1 v0.27.0 Compiling cipher v0.4.4 Compiling actix-rt v2.10.0 Compiling actix-macros v0.2.4 Compiling actix_derive v0.6.2 Compiling hmac v0.12.1 Compiling blake2 v0.10.6 Compiling proc-macro-error-attr v1.0.4 Compiling clap_lex v0.7.4 Compiling prometheus v0.13.4 Compiling ryu v1.0.18 Compiling near-stdx v0.23.0 Compiling zstd-safe v7.2.1 Compiling itoa v1.0.14 Compiling linux-raw-sys v0.4.14 Compiling arrayvec v0.7.6 Compiling adler2 v2.0.0 Compiling miniz_oxide v0.8.0 Compiling clap_builder v4.5.23 Compiling near-crypto v0.23.0 Compiling actix v0.13.5 Compiling opentelemetry-proto v0.5.0 Compiling proc-macro-crate v1.3.1 Compiling url v2.5.4 Compiling http-body v1.0.1 Compiling event-listener v5.3.1 Compiling clap_derive v4.5.18 Compiling sha1 v0.10.6 Compiling zvariant_utils v1.0.1 Compiling proc-macro-error v1.0.4 Compiling crc32fast v1.4.2 Compiling event-listener v2.5.3 Compiling unicode-width v0.1.14 Compiling reed-solomon-erasure v4.0.2 Compiling native-tls v0.2.12 Compiling cpufeatures v0.2.16 Compiling opentelemetry-semantic-conventions v0.14.0 Compiling unsafe-libyaml v0.2.11 Compiling io-lifetimes v1.0.11 Compiling serde_yaml v0.9.34+deprecated Compiling opentelemetry-otlp v0.15.0 Compiling flate2 v1.0.35 Compiling clap v4.5.23 Compiling event-listener-strategy v0.5.3 Compiling aes v0.8.4 Compiling h2 v0.4.7 Compiling serde_with_macros v3.11.0 Compiling tracing-opentelemetry v0.23.0 Compiling futures v0.3.31 Compiling tracing-appender v0.2.3 Compiling near-time v0.23.0 Compiling near-rpc-error-core v0.23.0 Compiling enumflags2_derive v0.7.10 Compiling futures-lite v2.5.0 Compiling dirs-sys-next v0.1.2 Compiling memoffset v0.7.1 Compiling polling v2.8.0 Compiling siphasher v0.3.11 Compiling waker-fn v1.2.0 Compiling spin v0.9.8 Compiling rustix v0.37.27 Compiling dyn-clone v1.0.17 Compiling untrusted v0.9.0 Compiling openssl-probe v0.1.5 Compiling keccak v0.1.5 Compiling async-task v4.7.1 Compiling fastrand v1.9.0 Compiling futures-lite v1.13.0 Compiling sha3 v0.10.8 Compiling itertools v0.10.5 Compiling chrono v0.4.39 Compiling dirs-next v2.0.0 Compiling enumflags2 v0.7.10 Compiling near-rpc-error-macro v0.23.0 Compiling hyper v1.5.1 Compiling near-o11y v0.23.0 Compiling near-performance-metrics v0.23.0 Compiling serde_with v3.11.0 Compiling zstd v0.13.2 Compiling async-channel v2.3.1 Compiling near-parameters v0.23.0 Compiling async-lock v2.8.0 Compiling zvariant_derive v3.15.2 Compiling piper v0.2.4 Compiling near-fmt v0.23.0 Compiling bytesize v1.3.0 Compiling smart-default v0.6.0 Compiling near-async-derive v0.23.0 Compiling filetime v0.2.25 Compiling async-fs v1.6.0 Compiling async-io v1.13.0 Compiling proc-macro2 v1.0.92 Compiling easy-ext v0.2.9 Compiling unicode-ident v1.0.14 Compiling base64ct v1.6.0 Compiling linux-raw-sys v0.3.8 Compiling signal-hook v0.3.17 Compiling near-primitives v0.23.0 Compiling password-hash v0.4.2 Compiling near-async v0.23.0 Compiling zvariant v3.15.2 Compiling blocking v1.6.1 Compiling interactive-clap-derive v0.2.10 Compiling hyper-util v0.1.10 Compiling rustls-webpki v0.102.8 Compiling Inflector v0.11.4 Compiling http-body-util v0.1.2 Compiling num-bigint v0.4.6 Compiling backtrace v0.3.71 Compiling socket2 v0.4.10 Compiling ahash v0.8.11 Compiling vte_generate_state_changes v0.1.2 Compiling eyre v0.6.12 Compiling zeroize v1.8.1 Compiling adler v1.0.2 Compiling portable-atomic v1.10.0 Compiling gimli v0.28.1 Compiling bitcoin-internals v0.2.0 Compiling addr2line v0.21.0 Compiling near-chain-configs v0.23.0 Compiling miniz_oxide v0.7.4 Compiling vte v0.11.1 Compiling num-rational v0.4.2 Compiling pbkdf2 v0.11.0 Compiling nix v0.26.4 Compiling zstd v0.11.2+zstd.1.5.2 Compiling interactive-clap v0.2.10 Compiling zbus_names v2.6.1 Compiling bzip2 v0.4.4 Compiling quote v1.0.37 Compiling xattr v1.3.1 Compiling async-executor v1.13.1 Compiling webpki-roots v0.26.7 Compiling async-broadcast v0.5.1 Compiling zbus_macros v3.15.2 Compiling serde_urlencoded v0.7.1 Compiling rustls-pemfile v2.2.0 Compiling tracing-error v0.2.1 Compiling num-iter v0.1.45 Compiling derivative v2.2.0 Compiling num-complex v0.4.6 Compiling async-recursion v1.1.1 Compiling digest v0.9.0 Compiling mio v0.8.11 Compiling ordered-stream v0.2.0 Compiling sync_wrapper v1.0.2 Compiling xdg-home v1.3.0 Compiling object v0.32.2 Compiling encoding_rs v0.8.35 Compiling ipnet v2.10.1 Compiling rustc-demangle v0.1.24 Compiling indenter v0.3.3 Compiling constant_time_eq v0.1.5 Compiling tinyvec_macros v0.1.1 Compiling owo-colors v3.5.0 Compiling radium v0.7.0 Compiling option-ext v0.2.0 Compiling uuid v0.8.2 Compiling ureq v2.12.1 Compiling dirs-sys v0.4.1 Compiling color-spantrace v0.2.1 Compiling zip v0.6.6 Compiling tinyvec v1.8.0 Compiling zbus v3.15.2 Compiling signal-hook-mio v0.2.4 Compiling num v0.4.3 Compiling tar v0.4.43 Compiling vt100 v0.15.2 Compiling near-jsonrpc-primitives v0.23.0 Compiling near-abi v0.4.3 Compiling uriparse v0.6.4 Compiling phf_shared v0.10.0 Compiling console v0.15.8 Compiling near_schemafy_core v0.7.0 Compiling hkdf v0.12.4 Compiling cbc v0.1.2 Compiling serde_spanned v0.6.8 Compiling scroll_derive v0.11.1 Compiling crypto-mac v0.9.1 Compiling block-buffer v0.9.0 Compiling fs2 v0.4.3 Compiling is-docker v0.2.0 Compiling csv-core v0.1.11 Compiling new_debug_unreachable v1.0.6 Compiling hex v0.3.2 Compiling near-sandbox-utils v0.8.0 Compiling unicode-segmentation v1.12.0 Compiling same-file v1.0.6 Compiling tap v1.0.1 Compiling minimal-lexical v0.2.1 Compiling camino v1.1.9 Compiling fallible-iterator v0.2.0 Compiling hex-conservative v0.1.2 Compiling rust_decimal v1.36.0 Compiling is_executable v0.1.2 Compiling unicode-width v0.2.0 Compiling opaque-debug v0.3.1 Compiling pin-project-lite v0.2.15 Compiling iana-time-zone v0.1.61 Compiling number_prefix v0.4.0 Compiling precomputed-hash v0.1.1 Compiling string_cache v0.8.7 Compiling indicatif v0.17.9 Compiling sha2 v0.9.9 Compiling binary-install v0.2.0 Compiling bitcoin_hashes v0.13.0 Compiling nom v7.1.3 Compiling wyz v0.5.1 Compiling newline-converter v0.3.0 Compiling walkdir v2.5.0 Compiling csv v1.3.1 Compiling is-wsl v0.4.0 Compiling scroll v0.11.0 Compiling hmac v0.9.0 Compiling secret-service v3.1.0 Compiling near_schemafy_lib v0.7.0 Compiling hashbrown v0.14.5 Compiling crossterm v0.25.0 Compiling unicode-normalization v0.1.22 Compiling color-eyre v0.6.3 Compiling dirs v5.0.1 Compiling debugid v0.7.3 Compiling near-token v0.2.1 Compiling term v0.7.0 Compiling tempfile v3.14.0 Compiling brownstone v1.1.0 Compiling fuzzy-matcher v0.3.7 Compiling linux-keyutils v0.2.4 Compiling fxhash v0.2.1 Compiling memmap2 v0.5.10 Compiling is-terminal v0.4.13 Compiling xml-rs v0.8.24 Compiling funty v2.0.0 Compiling smawk v0.3.2 Compiling shell-escape v0.1.5 Compiling unicode-linebreak v0.1.5 Compiling scroll v0.10.2 Compiling plain v0.2.3 Compiling prettyplease v0.1.25 Compiling indent_write v2.2.0 Compiling bs58 v0.5.1 Compiling home v0.5.9 Compiling encode_unicode v1.0.0 Compiling joinery v2.1.0 Compiling names v0.14.0 Compiling pathdiff v0.2.3 Compiling open v5.3.1 Compiling nom-supreme v0.6.0 Compiling prettytable v0.10.0 Compiling pdb v0.7.0 Compiling goblin v0.5.4 Compiling textwrap v0.16.1 Compiling elementtree v0.7.0 Compiling bitvec v1.0.1 Compiling symbolic-common v8.8.0 Compiling keyring v2.3.3 Compiling inquire v0.7.5 Compiling shellexpand v3.1.0 Compiling bip39 v2.1.0 Compiling near-abi-client-impl v0.1.1 Compiling wasmparser v0.211.1 Compiling slipped10 v0.4.6 Compiling toml v0.8.19 Compiling tracing-indicatif v0.3.8 Compiling gimli v0.26.2 Compiling near-gas v0.2.5 Compiling zip v0.5.13 Compiling env_filter v0.1.2 Compiling cargo-platform v0.1.9 Compiling linked-hash-map v0.5.6 Compiling smart-default v0.7.1 Compiling humantime v2.1.0 Compiling near-sandbox-utils v0.9.0 Compiling near-sdk-macros v5.6.0 Compiling wasmparser v0.83.0 Compiling shell-words v1.1.0 Compiling lazycell v1.3.0 Compiling dmsort v1.0.2 Compiling easy-ext v1.0.2 Compiling env_logger v0.11.5 Compiling cargo_metadata v0.18.1 Compiling symbolic-debuginfo v8.8.0 Compiling near-abi-client-macros v0.1.1 Compiling near-workspaces v0.11.1 Compiling strum_macros v0.26.4 Compiling jsonptr v0.4.7 Compiling colored v2.2.0 Compiling atty v0.2.14 Compiling libloading v0.8.6 Compiling convert_case v0.5.0 Compiling strum v0.26.3 Compiling near-sandbox-utils v0.12.0 Compiling dunce v1.0.5 Compiling near-abi-client v0.1.1 Compiling json-patch v2.0.0 Compiling tokio-retry v0.3.0 Compiling near-token v0.3.0 Compiling near-gas v0.3.0 Compiling near-sys v0.2.2 Compiling near-sdk v5.6.0 Compiling crypto-hash v0.3.4 Compiling cargo-util v0.1.2 Compiling tokio-native-tls v0.3.1 Compiling hyper-tls v0.6.0 Compiling reqwest v0.12.9 Compiling near-jsonrpc-client v0.10.1 Compiling near-socialdb-client v0.3.2 Compiling near-cli-rs v0.11.1 Compiling cargo-near v0.6.4 Compiling chat_contract_tests v0.0.1 (/home/runner/work/polyglot/polyglot/apps/chat/contract/tests) Finished `release` profile [optimized] target(s) in 4m 21s Running `/home/runner/work/polyglot/polyglot/workspace/target/release/chat_contract_tests` Installed near-sandbox into /home/runner/work/polyglot/polyglot/workspace/target/release/build/near-sandbox-utils-cdf556a7364ec456/out/.near/near-sandbox-1.40.0_7dd0b5993577f592be15eb102e5a3da37be66271/near-sandbox new: ExecutionFinalResult { total_gas_burnt: NearGas { inner: 1658519404782, }, transaction: ExecutionOutcome { transaction_hash: BamyxitoirisaCNzedZJedkdYjbcrRMiCSmkAmuZVPYt, block_hash: 4zoZMNy6FZiMypmBks7iCF6f3GK38XkQPyVMnWXJrZRv, logs: [], receipt_ids: [ 3Xbe97NHxvxQ9gdUBE1hQBsoPUQYKrXaJNP1qhofdHfX, ], gas_burnt: NearGas { inner: 308066207802, }, tokens_burnt: NearToken { inner: 30806620780200000000, }, executor_id: AccountId( "dev-20250703171356-98619842368822", ), status: SuccessReceiptId(3Xbe97NHxvxQ9gdUBE1hQBsoPUQYKrXaJNP1qhofdHfX), }, receipts: [ ExecutionOutcome { transaction_hash: 3Xbe97NHxvxQ9gdUBE1hQBsoPUQYKrXaJNP1qhofdHfX, block_hash: 4zoZMNy6FZiMypmBks7iCF6f3GK38XkQPyVMnWXJrZRv, logs: [], receipt_ids: [ DBPuNHBaUeHd9cdADF2tbyphrjqH5WJCH9ZUFkCrT6bf, ], gas_burnt: NearGas { inner: 1350453196980, }, tokens_burnt: NearToken { inner: 135045319698000000000, }, executor_id: AccountId( "dev-20250703171356-98619842368822", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.0011078909623943758 outcome (success: true): outcome_gas_burnt_usd: 0.000205788226811736 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00090210273558264 outcome_tokens_burnt_usd: 0.0 claim_alias(contract, ''): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 2009587525147, }, transaction: ExecutionOutcome { transaction_hash: GUDPPBnvTDdsygB6ijHffwm99pMS8a4EsdX5oyMaVoKf, block_hash: C3mmwgXDXj7kznN4mAmZECRXUxQGK5KkUB53wF2KvfkK, logs: [], receipt_ids: [ 5ok9wGJGMNWfmUWBdW59SAeMu5fJyf5Jraj8dPYuyUHf, ], gas_burnt: NearGas { inner: 308110926482, }, tokens_burnt: NearToken { inner: 30811092648200000000, }, executor_id: AccountId( "dev-20250703171356-98619842368822", ), status: SuccessReceiptId(5ok9wGJGMNWfmUWBdW59SAeMu5fJyf5Jraj8dPYuyUHf), }, receipts: [ ExecutionOutcome { transaction_hash: 5ok9wGJGMNWfmUWBdW59SAeMu5fJyf5Jraj8dPYuyUHf, block_hash: C3mmwgXDXj7kznN4mAmZECRXUxQGK5KkUB53wF2KvfkK, logs: [], receipt_ids: [ GijbwXHCadvG6FTCsxqYxvbfcNajKxxqk5Ty4rxcSXiA, ], gas_burnt: NearGas { inner: 1701476598665, }, tokens_burnt: NearToken { inner: 170147659866500000000, }, executor_id: AccountId( "dev-20250703171356-98619842368822", ), status: Failure(ActionError(ActionError { index: Some(0), kind: FunctionCallError(ExecutionError("Smart contract panicked: chat_contract.claim_alias / invalid alias")) })), }, ], status: Failure(ActionError(ActionError { index: Some(0), kind: FunctionCallError(ExecutionError("Smart contract panicked: chat_contract.claim_alias / invalid alias")) })), } total_gas_burnt_usd: 0.001342404466798196 outcome (success: true): outcome_gas_burnt_usd: 0.000205818098889976 outcome_tokens_burnt_usd: 0.0 outcome (success: false): outcome_gas_burnt_usd: 0.00113658636790822 outcome_tokens_burnt_usd: 0.0 dev_create_account(account1): Account { id: AccountId( "dev-20250703171358-54971682898579", ), } generate_cid_borsh(account1): ViewResultDetails { result: [59, 0, 0, 0, 98, 97, 102, 107, 114, 101, 105, 104, 100, 119, 100, 99, 101, 102, 103, 104, 52, 100, 113, 107, 106, 118, 54, 55, 117, 122, 99, 109, 119, 55, 111, 106, 101, 101, 54, 120, 101, 100, 122, 100, 101, 116, 111, 106, 117, 122, 106, 101, 118, 116, 101, 110, 120, 113, 117, 118, 121, 107, 117], logs: [] } claim_alias(account1, alias1): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 3640741594783, }, transaction: ExecutionOutcome { transaction_hash: 98zNFBjG3kETsG9yCvFkhS5xrfNXPWgy9JCK4fJcMXUL, block_hash: 3Epg6JvsqSa8kUUB8xDuzQ3VJuHmJXvZh7HjwpKc6RbH, logs: [], receipt_ids: [ 2YPp69EwRUZTAhzDBsuNyrRWKvbiZJTGvgU1ia6BFiAM, ], gas_burnt: NearGas { inner: 308124342086, }, tokens_burnt: NearToken { inner: 30812434208600000000, }, executor_id: AccountId( "dev-20250703171358-54971682898579", ), status: SuccessReceiptId(2YPp69EwRUZTAhzDBsuNyrRWKvbiZJTGvgU1ia6BFiAM), }, receipts: [ ExecutionOutcome { transaction_hash: 2YPp69EwRUZTAhzDBsuNyrRWKvbiZJTGvgU1ia6BFiAM, block_hash: 4vCXBBqWJe5Pz2h4niNd6jJNaDRaV9ifuh5UafMfQ1Fa, logs: [ "17:13:59 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = 1751562839648774477; signer_account_id = \"dev-20250703171358-54971682898579\"; predecessor_account_id = \"dev-20250703171358-54971682898579\" }\n17:13:59 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = None }", ], receipt_ids: [ EFJyCVyYDkAZF6GmyfPyKeRQbh3v8JKxiRTi4e1j6dTj, ], gas_burnt: NearGas { inner: 3109434690197, }, tokens_burnt: NearToken { inner: 310943469019700000000, }, executor_id: AccountId( "dev-20250703171356-98619842368822", ), status: SuccessValue(''), }, ExecutionOutcome { transaction_hash: EFJyCVyYDkAZF6GmyfPyKeRQbh3v8JKxiRTi4e1j6dTj, block_hash: 6u31WUQqcUA9u2gkHkUikT6LpG3BWjSaauu2Xkf5wd3q, logs: [], receipt_ids: [], gas_burnt: NearGas { inner: 223182562500, }, tokens_burnt: NearToken { inner: 0, }, executor_id: AccountId( "dev-20250703171358-54971682898579", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.002432015385315044 outcome (success: true): outcome_gas_burnt_usd: 0.000205827060513448 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.002077102373051596 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00014908595175 outcome_tokens_burnt_usd: 0.0 claim_alias(account1, alias1): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 3774407546725, }, transaction: ExecutionOutcome { transaction_hash: 6kw8sfW376z6ciPB6YUq6hGh5Ge93MVCn81tBtjNaggW, block_hash: 42TjxDEGsNAtLstqrNeZbxXg5KAmXVfLqv8jox6JNABH, logs: [], receipt_ids: [ AMY3ufAGwTx2z3Hcz6LfuZMmacbmSVuFbydYvyHVvvwC, ], gas_burnt: NearGas { inner: 308124342086, }, tokens_burnt: NearToken { inner: 30812434208600000000, }, executor_id: AccountId( "dev-20250703171358-54971682898579", ), status: SuccessReceiptId(AMY3ufAGwTx2z3Hcz6LfuZMmacbmSVuFbydYvyHVvvwC), }, receipts: [ ExecutionOutcome { transaction_hash: AMY3ufAGwTx2z3Hcz6LfuZMmacbmSVuFbydYvyHVvvwC, block_hash: GUkoVvLRRQWSJc8C3mLgnsEa7Yegf4CLcjU8D13MqkXg, logs: [ "17:14:00 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = 1751562840659857188; signer_account_id = \"dev-20250703171358-54971682898579\"; predecessor_account_id = \"dev-20250703171358-54971682898579\" }\n17:14:00 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = Some(\"alias1\") }", ], receipt_ids: [ 7PZnfSf7avuavS8K8Xi3Hr8evGwQVeCq6kxzYnhLQWJp, ], gas_burnt: NearGas { inner: 3243100642139, }, tokens_burnt: NearToken { inner: 324310064213900000000, }, executor_id: AccountId( "dev-20250703171356-98619842368822", ), status: SuccessValue(''), }, ExecutionOutcome { transaction_hash: 7PZnfSf7avuavS8K8Xi3Hr8evGwQVeCq6kxzYnhLQWJp, block_hash: GSdYMv7VpLUveG34TcAvbFPYJ9mpwZ7UGtGeSLnT7Cni, logs: [], receipt_ids: [], gas_burnt: NearGas { inner: 223182562500, }, tokens_burnt: NearToken { inner: 0, }, executor_id: AccountId( "dev-20250703171358-54971682898579", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.0025213042412123 outcome (success: true): outcome_gas_burnt_usd: 0.000205827060513448 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.0021663912289488518 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00014908595175 outcome_tokens_burnt_usd: 0.0 get_account_info(account1): Some( ( "alias1", 1751562840659857188, 0, ), ) get_alias_map(account1, alias1): Some( { AccountId( "dev-20250703171358-54971682898579", ): ( 1751562840659857188, 0, ), }, ) dev_create_account(account2): Account { id: AccountId( "dev-20250703171401-70709746006332", ), } claim_alias(alias2): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 3872949678283, }, transaction: ExecutionOutcome { transaction_hash: 513XCzEuv3GQ6hh8c4z1KY7f745uLDWbDiBTGR6oRyKu, block_hash: Gqjb8f4QnXUCA1AVwHyRL5Uxy5AcefgRzBEPoMfrz3Sn, logs: [], receipt_ids: [ G5adazTfUreYwUAc6EE8LgQsWzGY3P6hEbKSuHFCyioW, ], gas_burnt: NearGas { inner: 308124342086, }, tokens_burnt: NearToken { inner: 30812434208600000000, }, executor_id: AccountId( "dev-20250703171401-70709746006332", ), status: SuccessReceiptId(G5adazTfUreYwUAc6EE8LgQsWzGY3P6hEbKSuHFCyioW), }, receipts: [ ExecutionOutcome { transaction_hash: G5adazTfUreYwUAc6EE8LgQsWzGY3P6hEbKSuHFCyioW, block_hash: BFhYN6hrNqX3BpoSxsxj4rPAo1xXMpPCYLwAFbqMwd4z, logs: [ "17:14:02 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias2\"; block_timestamp = 1751562842685283416; signer_account_id = \"dev-20250703171401-70709746006332\"; predecessor_account_id = \"dev-20250703171401-70709746006332\" }\n17:14:02 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = None }", ], receipt_ids: [ 8RXeL4gbLP9b7eDpFSHQ6RBYR8GwvNH5qrdSPaDY8uVr, ], gas_burnt: NearGas { inner: 3341642773697, }, tokens_burnt: NearToken { inner: 334164277369700000000, }, executor_id: AccountId( "dev-20250703171356-98619842368822", ), status: SuccessValue(''), }, ExecutionOutcome { transaction_hash: 8RXeL4gbLP9b7eDpFSHQ6RBYR8GwvNH5qrdSPaDY8uVr, block_hash: 2gTFzZAmPVpxaG6XsGL7dcv1t85xyps5ft66A5TKi3rZ, logs: [], receipt_ids: [], gas_burnt: NearGas { inner: 223182562500, }, tokens_burnt: NearToken { inner: 0, }, executor_id: AccountId( "dev-20250703171401-70709746006332", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.002587130385093044 outcome (success: true): outcome_gas_burnt_usd: 0.000205827060513448 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.0022322173728295956 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00014908595175 outcome_tokens_burnt_usd: 0.0 get_account_info(account2): Some( ( "alias2", 1751562842685283416, 0, ), ) get_alias_map_borsh(alias2): Some( { AccountId( "dev-20250703171401-70709746006332", ): ( 1751562842685283416, 0, ), }, ) claim_alias(account2, alias1): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 4064318222338, }, transaction: ExecutionOutcome { transaction_hash: CvpT2hToE6WpQ9pLvBit6Mvz98tBcwFfQmaEetzgWt5V, block_hash: AkZnkwF9pR2DAYt79LNPnfGobsWdhnZibv8uFxdB7ycm, logs: [], receipt_ids: [ ATjwVirQuNJLh3a3Ms8An1B92GtKq6bXKwZqXrTUvZo8, ], gas_burnt: NearGas { inner: 308124342086, }, tokens_burnt: NearToken { inner: 30812434208600000000, }, executor_id: AccountId( "dev-20250703171401-70709746006332", ), status: SuccessReceiptId(ATjwVirQuNJLh3a3Ms8An1B92GtKq6bXKwZqXrTUvZo8), }, receipts: [ ExecutionOutcome { transaction_hash: ATjwVirQuNJLh3a3Ms8An1B92GtKq6bXKwZqXrTUvZo8, block_hash: EkXckQzFmP9hc7C3xiRKJyawcvjbwfw5BREMmwYuBjJm, logs: [ "17:14:03 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = 1751562843695302691; signer_account_id = \"dev-20250703171401-70709746006332\"; predecessor_account_id = \"dev-20250703171401-70709746006332\" }\n17:14:03 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = Some(\"alias2\") }", ], receipt_ids: [ FbRgcQnXPZ1DG3JiRV4EehFA7zj79WyUajPTA3Jtd6ao, ], gas_burnt: NearGas { inner: 3533011317752, }, tokens_burnt: NearToken { inner: 353301131775200000000, }, executor_id: AccountId( "dev-20250703171356-98619842368822", ), status: SuccessValue(''), }, ExecutionOutcome { transaction_hash: FbRgcQnXPZ1DG3JiRV4EehFA7zj79WyUajPTA3Jtd6ao, block_hash: 2iZdTuR3disYkPf7DSmTYrEz14M4hR3W3nk3wf8tiYjf, logs: [], receipt_ids: [], gas_burnt: NearGas { inner: 223182562500, }, tokens_burnt: NearToken { inner: 0, }, executor_id: AccountId( "dev-20250703171401-70709746006332", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.0027149645725217837 outcome (success: true): outcome_gas_burnt_usd: 0.000205827060513448 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.002360051560258336 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00014908595175 outcome_tokens_burnt_usd: 0.0 get_account_info(account2): Some( ( "alias1", 1751562843695302691, 1, ), ) get_alias_map(account2, alias1): Some( { AccountId( "dev-20250703171401-70709746006332", ): ( 1751562843695302691, 1, ), AccountId( "dev-20250703171358-54971682898579", ): ( 1751562840659857188, 0, ), }, ) get_alias_map(account2, alias2): Some( {}, ) claim_alias(account1, alias2): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 4061688014530, }, transaction: ExecutionOutcome { transaction_hash: HiAJ7ALm6RwkH8VaGFjP93YzBp9dyw38SdGh1WPDcjd1, block_hash: 4Xq91gcPDaWtGoDeRJXZJg6qUoy1WCiRPgK5kPAGfB42, logs: [], receipt_ids: [ 2H5FKBdCABXtkyVC3HiD3i5TGYfLYa167csn21Fk9x4R, ], gas_burnt: NearGas { inner: 308124342086, }, tokens_burnt: NearToken { inner: 30812434208600000000, }, executor_id: AccountId( "dev-20250703171358-54971682898579", ), status: SuccessReceiptId(2H5FKBdCABXtkyVC3HiD3i5TGYfLYa167csn21Fk9x4R), }, receipts: [ ExecutionOutcome { transaction_hash: 2H5FKBdCABXtkyVC3HiD3i5TGYfLYa167csn21Fk9x4R, block_hash: 3DVNFjEAidLQ3xfXKeF93GHE2udqjLQK4v9B2Nwgm6k1, logs: [ "17:14:04 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias2\"; block_timestamp = 1751562844705722741; signer_account_id = \"dev-20250703171358-54971682898579\"; predecessor_account_id = \"dev-20250703171358-54971682898579\" }\n17:14:04 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = Some(\"alias1\") }", ], receipt_ids: [ 2AzFDnye2Mtxii1ZUz7ahCYK7oUjc2jS1z7t1BBsqr9E, ], gas_burnt: NearGas { inner: 3530381109944, }, tokens_burnt: NearToken { inner: 353038110994400000000, }, executor_id: AccountId( "dev-20250703171356-98619842368822", ), status: SuccessValue(''), }, ExecutionOutcome { transaction_hash: 2AzFDnye2Mtxii1ZUz7ahCYK7oUjc2jS1z7t1BBsqr9E, block_hash: 52QuurUZmq1AuMUxY2rfBf97ZbxfMnXfXnEUd6uKghnq, logs: [], receipt_ids: [], gas_burnt: NearGas { inner: 223182562500, }, tokens_burnt: NearToken { inner: 0, }, executor_id: AccountId( "dev-20250703171358-54971682898579", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.0027132075937060397 outcome (success: true): outcome_gas_burnt_usd: 0.000205827060513448 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.002358294581442592 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00014908595175 outcome_tokens_burnt_usd: 0.0 get_account_info(account1): Some( ( "alias2", 1751562844705722741, 0, ), ) get_alias_map(account1, alias2): Some( { AccountId( "dev-20250703171358-54971682898579", ): ( 1751562844705722741, 0, ), }, ) get_alias_map(account1, alias1): Some( { AccountId( "dev-20250703171401-70709746006332", ): ( 1751562843695302691, 1, ), }, ) claim_alias(account1, alias1): ExecutionFinalResult { total_gas_burnt: NearGas { inner: 4064388979354, }, transaction: ExecutionOutcome { transaction_hash: Ewj1EMZUcd8RRiTzumUwaLzGzcX3nHSd56LhN8wPrMyt, block_hash: FgHhoNDQbbN5vxSUN1B9PRbaDAHi3BHvG71ke1wdUqkb, logs: [], receipt_ids: [ EtunQY5bbzTn9qrX5WokgFgiP2uLVYTpWczxLgBB2dFJ, ], gas_burnt: NearGas { inner: 308124342086, }, tokens_burnt: NearToken { inner: 30812434208600000000, }, executor_id: AccountId( "dev-20250703171358-54971682898579", ), status: SuccessReceiptId(EtunQY5bbzTn9qrX5WokgFgiP2uLVYTpWczxLgBB2dFJ), }, receipts: [ ExecutionOutcome { transaction_hash: EtunQY5bbzTn9qrX5WokgFgiP2uLVYTpWczxLgBB2dFJ, block_hash: GtYG2Svar3UHyQkTJgyF5ntAiNuW75vB7drgb2zKewAu, logs: [ "17:14:05 \u{1b}[94md\u{1b}[39m #1 chat_contract.claim_alias / { alias = \"alias1\"; block_timestamp = 1751562845717361031; signer_account_id = \"dev-20250703171358-54971682898579\"; predecessor_account_id = \"dev-20250703171358-54971682898579\" }\n17:14:05 \u{1b}[94md\u{1b}[39m #2 chat_contract.claim_alias / { account_alias = Some(\"alias2\") }", ], receipt_ids: [ 8GHYLzmX6Wrm84uq6Zan22AQ7rt7LCw6pfbvbpq9aYzg, ], gas_burnt: NearGas { inner: 3533082074768, }, tokens_burnt: NearToken { inner: 353308207476800000000, }, executor_id: AccountId( "dev-20250703171356-98619842368822", ), status: SuccessValue(''), }, ExecutionOutcome { transaction_hash: 8GHYLzmX6Wrm84uq6Zan22AQ7rt7LCw6pfbvbpq9aYzg, block_hash: 9muspnbvSwvcYkvB7TyMficmXcQQ2N2Vbd4pG1wxABw8, logs: [], receipt_ids: [], gas_burnt: NearGas { inner: 223182562500, }, tokens_burnt: NearToken { inner: 0, }, executor_id: AccountId( "dev-20250703171358-54971682898579", ), status: SuccessValue(''), }, ], status: SuccessValue(''), } total_gas_burnt_usd: 0.0027150118382084716 outcome (success: true): outcome_gas_burnt_usd: 0.000205827060513448 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.002360098825945024 outcome_tokens_burnt_usd: 0.0 outcome (success: true): outcome_gas_burnt_usd: 0.00014908595175 outcome_tokens_burnt_usd: 0.0 get_account_info(account1): Some( ( "alias1", 1751562845717361031, 1, ), ) get_alias_map(account1, alias1): Some( { AccountId( "dev-20250703171358-54971682898579", ): ( 1751562845717361031, 1, ), AccountId( "dev-20250703171401-70709746006332", ): ( 1751562843695302691, 0, ), }, ) get_alias_map(account1, alias2): Some( {}, )
In [ ]:
{ pwsh ../apps/spiral/temp/build.ps1 } | Invoke-Block
00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "cube.dib"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None; stderr = true } } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ # cube > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## cube > > ── fsharp ────────────────────────────────────────────────────────────────────── > open System > open System.Threading.Tasks > open System.Text > > ── fsharp ────────────────────────────────────────────────────────────────────── > let width = 160 > let height = 44 > let backgroundChar = '.' > let distanceFromCam = 100.0 > let k1 = 40.0 > let incrementSpeed = 0.6 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### get_width > > ── spiral ────────────────────────────────────────────────────────────────────── > inl get_width () = > 160i32 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### get_height > > ── spiral ────────────────────────────────────────────────────────────────────── > inl get_height () = > 44i32 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### get_background_char > > ── spiral ────────────────────────────────────────────────────────────────────── > inl get_background_char () = > '.' > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### get_distance_from_cam > > ── spiral ────────────────────────────────────────────────────────────────────── > inl get_distance_from_cam () = > 100f64 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### get_k1 > > ── spiral ────────────────────────────────────────────────────────────────────── > inl get_k1 () = > 40f64 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### get_increment_speed > > ── spiral ────────────────────────────────────────────────────────────────────── > inl get_increment_speed () = > 0.6f64 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### rotation > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Rotation = { a: float; b: float; c: float } > > ── spiral ────────────────────────────────────────────────────────────────────── > type rotation = > { > a : f64 > b : f64 > c : f64 > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### cube > > ── fsharp ────────────────────────────────────────────────────────────────────── > type Cube = { cubeWidth: float; horizontalOffset: float } > > ── spiral ────────────────────────────────────────────────────────────────────── > type cube = > { > cube_width : f64 > horizontal_offset : f64 > } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### get_cubes > > ── fsharp ────────────────────────────────────────────────────────────────────── > let cubes = [[ > { cubeWidth = 20.0; horizontalOffset = -40.0 } > { cubeWidth = 10.0; horizontalOffset = 10.0 } > { cubeWidth = 5.0; horizontalOffset = 40.0 } > ]] > > ── spiral ────────────────────────────────────────────────────────────────────── > inl get_cubes () : list cube = > [[ > { cube_width = 20; horizontal_offset = -40 } > { cube_width = 10; horizontal_offset = 10 } > { cube_width = 5; horizontal_offset = 40 } > ]] > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### calculate_x > > ── fsharp ────────────────────────────────────────────────────────────────────── > let calculateX i j k (rot: Rotation) = > let a, b, c = rot.a, rot.b, rot.c > j * sin a * sin b * cos c - k * cos a * sin b * cos c + > j * cos a * sin c + k * sin a * sin c + i * cos b * cos c > > ── spiral ────────────────────────────────────────────────────────────────────── > inl calculate_x i j k (rot : rotation) = > inl a, b, c = rot.a, rot.b, rot.c > j * sin a * sin b * cos c - k * cos a * sin b * cos c + > j * cos a * sin c + k * sin a * sin c + i * cos b * cos c > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### calculate_y > > ── fsharp ────────────────────────────────────────────────────────────────────── > let calculateY i j k (rot: Rotation) = > let a, b, c = rot.a, rot.b, rot.c > j * cos a * cos c + k * sin a * cos c - > j * sin a * sin b * sin c + k * cos a * sin b * sin c - > i * cos b * sin c > > ── spiral ────────────────────────────────────────────────────────────────────── > inl calculate_y i j k (rot : rotation) = > inl a, b, c = rot.a, rot.b, rot.c > j * cos a * cos c + k * sin a * cos c - > j * sin a * sin b * sin c + k * cos a * sin b * sin c - > i * cos b * sin c > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### calculate_z > > ── fsharp ────────────────────────────────────────────────────────────────────── > let calculateZ i j k (rot: Rotation) = > let a, b, c = rot.a, rot.b, rot.c > k * cos a * cos b - j * sin a * cos b + i * sin b > > ── spiral ────────────────────────────────────────────────────────────────────── > inl calculate_z i j k (rot : rotation) = > inl a, b, c = rot.a, rot.b, rot.c > k * cos a * cos b - j * sin a * cos b + i * sin b > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### calculate_for_surface > > ── fsharp ────────────────────────────────────────────────────────────────────── > let calculateForSurface cubeX cubeY cubeZ ch rot horizontalOffset = > let x = calculateX cubeX cubeY cubeZ rot > let y = calculateY cubeX cubeY cubeZ rot > let z = calculateZ cubeX cubeY cubeZ rot + distanceFromCam > let ooz = 1.0 / z > let xp = int (float width / 2.0 + horizontalOffset + k1 * ooz * x * 2.0) > let yp = int (float height / 2.0 + k1 * ooz * y) > let idx = xp + yp * width > if idx >= 0 && idx < width * height > then Some (idx, (ooz, ch)) > else None > > ── spiral ────────────────────────────────────────────────────────────────────── > let calculate_for_surface cube_x cube_y cube_z ch rot horizontal_offset = > inl x = calculate_x cube_x cube_y cube_z rot > inl y = calculate_y cube_x cube_y cube_z rot > inl z = calculate_z cube_x cube_y cube_z rot + get_distance_from_cam () > inl ooz = 1.0 / z > inl xp = i32 (f64 (get_width ()) / 2.0 + horizontal_offset + get_k1 () * ooz > * x * 2.0) > inl yp = i32 (f64 (get_height ()) / 2.0 + get_k1 () * ooz * y) > inl idx = xp + yp * get_width () > if idx >= 0 && idx < get_width () * get_height () > then Some (idx, (ooz, ch)) > else None > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### frange > > ── fsharp ────────────────────────────────────────────────────────────────────── > let frange start stop step = > seq { > let mutable current = start > while (step > 0.0 && current < stop) || (step < 0.0 && current > stop) > do > yield current > current <- current + step > } > > ── spiral ────────────────────────────────────────────────────────────────────── > inl frange start stop step : _ f64 = > fun () => > inl current = mut start > loopw.while > fun () => (step > 0f64 && *current < stop) || (step < 0 && *current > > stop) > fun () => > *current |> yield > current <- *current + step > |> seq.new_seq > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### get_cube_points > > ── fsharp ────────────────────────────────────────────────────────────────────── > let getCubePoints (cube: Cube) rot = > let cw = cube.cubeWidth > let ho = cube.horizontalOffset > let cubeRange = frange (-cw) cw incrementSpeed > seq { > for cubeX in cubeRange do > for cubeY in cubeRange do > let x = > [[ > calculateForSurface cubeX cubeY (-cw) '@' rot ho > calculateForSurface cw cubeY cubeX '$' rot ho > calculateForSurface (-cw) cubeY (-cubeX) '~' rot ho > calculateForSurface (-cubeX) cubeY cw '#' rot ho > calculateForSurface cubeX (-cw) (-cubeY) ';' rot ho > calculateForSurface cubeX cw cubeY '+' rot ho > ]] > |> Seq.choose id > yield! x > } > > ── spiral ────────────────────────────────────────────────────────────────────── > inl get_cube_points (cube : cube) rot = > inl cw = cube.cube_width > inl ho = cube.horizontal_offset > inl cube_range = frange -cw cw (get_increment_speed ()) > inl cube_range = join cube_range > inl get cube_x cube_y = > [[ > calculate_for_surface cube_x cube_y -cw ';' rot ho > calculate_for_surface cw cube_y cube_x '\\' rot ho > calculate_for_surface -cw cube_y -cube_x '/' rot ho > calculate_for_surface -cube_x cube_y cw '=' rot ho > calculate_for_surface cube_x -cw -cube_y '>' rot ho > calculate_for_surface cube_x cw cube_y '<' rot ho > ]] > |> listm'.box > inl get = join get > inl box x : _ (i32 * f64 * char) = > optionm'.box x > inl box = join box > fun () => > backend_switch { > Fsharp = fun () => > $'for cube_x in !cube_range do' > $'for cube_y in !cube_range do' > $'let x = !get cube_x cube_y |> Seq.choose !box ' > $'yield\! x' : () > Python = fun () => > $'cube_range = !cube_range ' > $'get = !get ' > $'box = !box ' > $'for cube_x in cube_range:' > $' for cube_y in cube_range:' > $' x = get(cube_x)(cube_y)' > $' for i in x:' > $' i_ = box(i)' > $' if i_ is not None: yield i' : () > } > |> seq.new_seq > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### generate_frame > > ── fsharp ────────────────────────────────────────────────────────────────────── > let generateFrame rot = > let updates = > cubes > |> Seq.collect (fun cube -> getCubePoints cube rot) > let buffer = Array.create (width * height) None > updates > |> Seq.iter (fun (idx, (ooz, ch)) -> > match buffer.[[idx]] with > | Some (prevOoz, _) when prevOoz >= ooz -> () > | _ -> buffer.[[idx]] <- Some (ooz, ch) > ) > let sb = StringBuilder() > for row in 0 .. (height - 1) do > for col in 0 .. (width - 1) do > let idx = col + row * width > let ch = > match buffer.[[idx]] with > | Some (_, ch) -> ch > | None -> backgroundChar > sb.Append(ch) |> ignore > sb.AppendLine() |> ignore > sb.ToString() > > ── fsharp ────────────────────────────────────────────────────────────────────── > //// test > > let rot = { a = 0.0; b = 0.0; c = 0.0 } > let frame = generateFrame rot > Console.Write frame > > ── [ 34.53ms - stdout ] ──────────────────────────────────────────────────────── > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > ................................................................................ > │ > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > ................................................................................ > │ > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > ................................................................................ > │ > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > ................................................................................ > │ > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > ................................................................................ > │ > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > .@@@@@@@@@@@@@@@@@$............................................................. > │ > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > .@@@@@@@@@@@@@@@@@$............................................................. > │ > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$................................... > │ > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$................................... > │ > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$................................... > │ > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$................................... > │ > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > .@@@@@@@@@@@@@@@@@$................@@@@@@@@@$................................... > │ > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > .@@@@@@@@@@@@@@@@@$................+++++++++.................................... > │ > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > .@@@@@@@@@@@@@@@@@$............................................................. > │ > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > .+++++++++++++++++$............................................................. > │ > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > ................................................................................ > │ > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > ................................................................................ > │ > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > ................................................................................ > │ > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > ................................................................................ > │ > ....................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@$................... > ................................................................................ > │ > ....................++++++++++++++++++++++++++++++++++++++++.................... > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > > ── spiral ────────────────────────────────────────────────────────────────────── > inl generate_frame rot = > inl updates : seq.seq' (int * (f64 * char)) = > inl get_cube_points' cube : seq.seq' (int * (f64 * char)) = > get_cube_points cube rot > inl cubes = get_cubes () |> listm'.box > backend_switch { > Fsharp = fun () => > inl get_cube_points' = join get_cube_points' > (cubes |> $'Seq.collect !get_cube_points' ') : seq.seq' (int * > (f64 * char)) > Python = fun () => > $'cubes = !cubes ' > $'get_cube_points = !get_cube_points' ' > $'[[x for cube in cubes for x in get_cube_points(*cube)]]' : > seq.seq' (int * (f64 * char)) > } > inl none : _ (f64 * char) = None > inl width = get_width () > inl height = get_height () > inl buffer = > backend_switch { > Fsharp = fun () => > $'Array.create (!width * !height) !none ' : a int (option (f64 * > char)) > Python = fun () => > $'[[!none for _ in range(!width * !height)]]' : a int (option > (f64 * char)) > } > > inl fn idx ((ooz : f64), (ch : char)) = > match buffer |> am'.index idx with > | Some (prev_ooz, _) when prev_ooz >= ooz => () > | _ => > inl x = (ooz, ch) |> Some > backend_switch { > Fsharp = fun () => > $'!buffer.[[!idx]] <- !x ' : () > Python = fun () => > $'!buffer[[!idx]] = !x ' : () > } > backend_switch { > Fsharp = fun () => > updates > |> $'Seq.iter (fun (struct (idx, ooz, ch)) -> !fn idx (ooz, ch))' : > () > Python = fun () => > $'for (idx, ooz, ch) in !updates: !fn(idx)(ooz, ch)' : () > } > > inl sb = "" |> sm'.string_builder > inl fn1 row = > inl fn2 col = > inl idx = col + row * width > inl ch = > match buffer |> am'.index idx with > | Some (_, ch) => ch > | None => get_background_char () > sb |> sm'.builder_append (ch |> sm'.obj_to_string) |> ignore > > backend_switch { > Fsharp = fun () => > $'for col in 0 .. (!width - 1) do !fn2 col' : () > Python = fun () => > $'for col in range(!width): !fn2(col)' : () > } > sb |> sm'.builder_append_line |> ignore > > backend_switch { > Fsharp = fun () => > $'for row in 0 .. (!height - 1) do !fn1 row' : () > Python = fun () => > $'for row in range(!height): !fn1(row)' : () > } > sb |> sm'.obj_to_string > > ── spiral ────────────────────────────────────────────────────────────────────── > //// test > ///! fsharp > ///! cuda > ///! rust > ///! typescript > ///! python > > { a = 0.0; b = 0.0; c = 0.0 } > |> generate_frame > |> console.write_line > > ── [ 10.74s - return value ] ─────────────────────────────────────────────────── > │ " > │ .py output (Python): > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ........................................................................... > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > │ > │ " > │ > > ── [ 10.74s - stdout ] ───────────────────────────────────────────────────────── > │ .fsx output: > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > ................................................................................ > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > ................................................................................ > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > ................................................................................ > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > ................................................................................ > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > ................................................................................ > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > .;;;;;;;;;;;;;;;;;\............................................................. > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > .;;;;;;;;;;;;;;;;;\............................................................. > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > .;;;;;;;;;;;;;;;;;\................<<<<<<<<<.................................... > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > .;;;;;;;;;;;;;;;;;\............................................................. > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > .<<<<<<<<<<<<<<<<<\............................................................. > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > ................................................................................ > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > ................................................................................ > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > ................................................................................ > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > ................................................................................ > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > ................................................................................ > │ > ....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<.................... > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### main_루프 > > ── fsharp ────────────────────────────────────────────────────────────────────── > let rec mainLoop rot = async { > let frame = generateFrame rot > // Console.SetCursorPosition(0, 0) > Console.Write(frame) > let rot' = { a = rot.a + 0.05; b = rot.b + 0.05; c = rot.c + 0.01 } > do! Async.Sleep 16 > return! mainLoop rot' > } > > ── spiral ────────────────────────────────────────────────────────────────────── > let rec main_루프 max i rot = > fun () => > inl rot = join rot > inl frame = rot |> generate_frame > if max < 0 then > run_target function > | Fsharp (Native) => fun () => > $'System.Console.SetCursorPosition (0, 0)' > | Rust _ => fun () => > open rust.rust_operators > !\($'$"print\!(\\\"\\\\x1B[[1;1H\\\")"') > | TypeScript _ => fun () => > open typescript_operators > !\($'$"process.stdout.write(\'\\\\u001B[[1;1H\')"') > | Python _ => fun () => > open python_operators > // global "import sys" > !\($'$"sys.stdout.write(\\\"\\\\033[[1;1H\\\")"') > | Cuda _ => fun () => > global "import sys" > $'sys.stdout.write("\\033[[1;1H")' > | _ => fun () => () > frame |> console.write_line > async.sleep 1 |> async.do > if max > 0 && i >= max > then () > else > { a = rot.a + 0.05; b = rot.b + 0.05; c = rot.c + 0.01 } > |> main_루프 max (i + 1) > |> async.return_await' > |> async.new_async_unit > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### main > > ── fsharp ────────────────────────────────────────────────────────────────────── > // [[<EntryPoint>]] > let main argv = > // Console.CursorVisible <- false > Async.StartImmediate (mainLoop { a = 0.0; b = 0.0; c = 0.0 }) > System.Threading.Thread.Sleep(1000) > > ── fsharp ────────────────────────────────────────────────────────────────────── > // main [[||]] > > ── spiral ────────────────────────────────────────────────────────────────────── > inl main (_args : array_base string) = > inl console = > run_target function > | Fsharp (Wasm) => fun () => false > | _ => fun () => > ((join "VSCODE_PID") |> env.get_environment_variable |> sm'.length > |> (=) 0i32) > && ("AUTOMATION" |> env.get_environment_variable |> sm'.length > |> (=) 0i32) > if console then > run_target function > | Fsharp (Native) => fun () => $'System.Console.CursorVisible <- > false' > | Rust _ => fun () => > open rust.rust_operators > !\($'$"print\!(\\\"\\\\x1B[[?25l\\\")"') > | TypeScript _ => fun () => > open typescript_operators > !\($'$"process.stdout.write(\'\\\\u001B[[?25l\')"') > | Python _ => fun () => > open python_operators > python.import_all "sys" > !\($'$"sys.stdout.write(\\\"\\\\033[[?25l\\\")"') > | _ => fun () => () > main_루프 (if console then -1i32 else 50) 1i32 { a = 0.0; b = 0.0; c = 0.0 } > |> fun x => > run_target_args' x function > | Fsharp (Wasm) > | TypeScript _ => fun x => > x > |> async.start_child > |> ignore > | Python _ => fun x => > x > |> async.start_immediate > threading.sleep 2000 > | _ => fun x => > x > |> async.run_synchronously > > inl main () = > backend_switch { > Fsharp = fun () => > $'let main_ = !main ' > $'\#if \!FABLE_COMPILER_RUST' > $'main_ [[||]]' : () > $'\#else' > $'let main args = main_ [[||]]; 0' : () > $'\#endif' : () > Python = fun () => > main ;[[]] > } > : () > > ── [ 4.52s - stdout ] ────────────────────────────────────────────────────────── > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > ................................................................................ > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > ................................................................................ > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > ................................................................................ > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > ................................................................................ > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > ................................................................................ > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > .;;;;;;;;;;;;;;;;;\............................................................. > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > .;;;;;;;;;;;;;;;;;\............................................................. > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > .;;;;;;;;;;;;;;;;;\................;;;;;;;;;\................................... > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > .;;;;;;;;;;;;;;;;;\................<<<<<<<<<.................................... > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > .;;;;;;;;;;;;;;;;;\............................................................. > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > .<<<<<<<<<<<<<<<<<\............................................................. > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > ................................................................................ > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > ................................................................................ > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > ................................................................................ > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > ................................................................................ > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > ................................................................................ > │ > ....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<.................... > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > ................................................................................ > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > ................................................................................ > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > ................................................................................ > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > ................................................................................ > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > ................................................................................ > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > ................................................................................ > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > .;;;;;;;;;;;;;;;;;;\............................................................ > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > .;;;;;;;;;;;;;;;;;;\............................................................ > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > .;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;................................... > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > .;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;................................... > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > .;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;................................... > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > .;;;;;;;;;;;;;;;;;;;...............;;;;;;;;;;................................... > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > .;;;;;;;;;;;;;;;;;;;................;;;;;<<<<................................... > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > .;;;;;;;;;;;;;;;;;;;................<<<<<....................................... > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > .;;;;;;;;;;;;;;;;;;;............................................................ > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > .<<<<<<<<<<<<<<<<<<<............................................................ > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > ................................................................................ > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > ................................................................................ > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > ................................................................................ > │ > ....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > ................................................................................ > │ > ....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<\.................. > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > ................................................................................ > │ > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > ................................................................................ > │ > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > ................................................................................ > │ > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > ................................................................................ > │ > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > ................................................................................ > │ > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > ................................................................................ > │ > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > .;;;;;;;;;;;;;;;;;;;............................................................ > │ > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > .;;;;;;;;;;;;;;;;;;;............................................................ > │ > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > .;;;;;;;;;;;;;;;;;;;...............>;;;;;;;;;................................... > │ > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > .;;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;................................... > │ > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > .;;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;................................... > │ > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > .;;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;................................... > │ > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > .;;;;;;;;;;;;;;;;;;;.............../<<<<<<<<<................................... > │ > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > ..;;;;;;;;;;;;;;;;;;...............<<<<<<<<<.................................... > │ > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > ..;;;;;;;;;;<<<<<<<<............................................................ > │ > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > ..<<<<<<<<<<.................................................................... > │ > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. > ................................................................................ > │ > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. > ................................................................................ > │ > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. > ................................................................................ > │ > .....................;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<\................. > ................................................................................ > │ > .....................<<<<<<<<<<<<<<<<<<<<<<<<<<<<............................... > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ......................;;;;;;;;;;;............................................... > ................................................................................ > │ > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > ................................................................................ > │ > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > ................................................................................ > │ > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > ................................................................................ > │ > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > ................................................................................ > │ > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > ................................................................................ > │ > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > ..............;;;;;;............................................................ > │ > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > .>;;;;;;;;;;;;;;;;;;............................................................ > │ > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > ./;;;;;;;;;;;;;;;;;;............................................................ > │ > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > ./;;;;;;;;;;;;;;;;;;...............>;;;;;;;;;................................... > │ > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > ./;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;................................... > │ > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. > ./;;;;;;;;;;;;;;;;;;.............../;;;;;;;;;................................... > │ > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. > ./;;;;;;;;;;;;;;;;;;\............../;;;;;;;;;................................... > │ > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > ./;;;;;;;;;;;;;;;;;;;............../<<<<<<<<<................................... > │ > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > ./;;;;;;;;;;;;;;;;;;;............../<<<<<<<<.................................... > │ > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > ./<<<<<<<<<<<<<<<<<<<........................................................... > │ > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > ./<<<<<<<<<<<<<<<............................................................... > │ > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ > ................................................................................ > │ > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ > ................................................................................ > │ > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ > ................................................................................ > │ > ......................;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<................ > ................................................................................ > │ > ......................<<<<<<<<<<................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > ................................................................................ > │ > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > ................................................................................ > │ > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > ................................................................................ > │ > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > ................................................................................ > │ > ......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > ................................................................................ > │ > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > ................................................................................ > │ > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > ..;;;;;;;;;;;;;;;;;;............................................................ > │ > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > .>;;;;;;;;;;;;;;;;;;............................................................ > │ > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > ./;;;;;;;;;;;;;;;;;;............................................................ > │ > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. > >/;;;;;;;;;;;;;;;;;;...............>;;;;;;;;;................................... > │ > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > ./;;;;;;;;;;;;;;;;;;\............../;;;;;;;;;................................... > │ > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > ./;;;;;;;;;;;;;;;;;;;............../;;;;;;;;;................................... > │ > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > ./;;;;;;;;;;;;;;;;;;;............../;;;;;;;;;\.................................. > │ > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ > .//;;;;;;;;;;;;;;;;;;............../<<<<<<<<<\.................................. > │ > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ > .//;;;;;;;;;;;;;;;;;;............../<<<<<<<<.................................... > │ > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ > .//<<<<<<<<<<<<<<<<<<........................................................... > │ > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ > ./<<<<<<<<<<<<<<<<.............................................................. > │ > ........................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... > ................................................................................ > │ > ........................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... > ................................................................................ > │ > ........................;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<............... > ................................................................................ > │ > ........................<<<<<<<<<<<<<<<<<<<<<<.................................. > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................... > ................................................................................ > │ > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > ................................................................................ > │ > ......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > ................................................................................ > │ > ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > ................................................................................ > │ > ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > ................................................................................ > │ > ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > ................................................................................ > │ > ....................../;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > ..;;;;;;;;;;;;;;;;;;............................................................ > │ > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > .>;;;;;;;;;;;;;;;;;;............................................................ > │ > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. > >/;;;;;;;;;;;;;;;;;;............................................................ > │ > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > //;;;;;;;;;;;;;;;;;;\..............>;;;;;;;;;................................... > │ > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > ///;;;;;;;;;;;;;;;;;;............../;;;;;;;;;................................... > │ > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ > ///;;;;;;;;;;;;;;;;;;............../;;;;;;;;;\.................................. > │ > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ > ///;;;;;;;;;;;;;;;;;;............../;;;;;;;;;;.................................. > │ > ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ > .//;;;;;;;;;;;;;;;;;;;.............//<<<<<<<<<.................................. > │ > .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... > .//;;;;;;;;;;;;;;;;<<<............./<<<<<<<<.................................... > │ > .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... > .///<<<<<<<<<<<<<<<<<........................................................... > │ > .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. > ./<<<<<<<<<<<<<<<<.............................................................. > │ > .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. > ................................................................................ > │ > .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<.............. > ................................................................................ > │ > .......................//;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<................... > ................................................................................ > │ > .......................//<<<<<<<<<<<<<<<<<<<<<<<<<.............................. > ................................................................................ > │ > ........................<<<<<<<................................................. > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... > ................................................................................ > │ > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... > ................................................................................ > │ > ......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > ................................................................................ > │ > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > ................................................................................ > │ > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > ................................................................................ > │ > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > ................................................................................ > │ > .....................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > ..;;;;;;;;;;;;;;;;;............................................................. > │ > .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > .>;;;;;;;;;;;;;;;;;;............................................................ > │ > .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. > >//;;;;;;;;;;;;;;;;;............................................................ > │ > .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > ///;;;;;;;;;;;;;;;;;\..............>;;;;;;;;;................................... > │ > .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ > ///;;;;;;;;;;;;;;;;;;.............>/;;;;;;;;;................................... > │ > ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ > ///;;;;;;;;;;;;;;;;;;.............//;;;;;;;;;\.................................. > │ > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............... > ////;;;;;;;;;;;;;;;;;;.............//;;;;;;;;;.................................. > │ > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... > ////;;;;;;;;;;;;;;;;;;.............//<<<<<<<<<.................................. > │ > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. > ////;;;;;;;<<<<<<<<<<<............./<<<<<<<<.................................... > │ > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. > .///<<<<<<<<<<<<<<<<<........................................................... > │ > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............. > .//<<<<<<<<<<<<<<<.............................................................. > │ > .......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<............. > .<<<............................................................................ > │ > .......................////;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<............... > ................................................................................ > │ > .......................////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<...................... > ................................................................................ > │ > .......................////<<<<<<<<<<<<<<<<<<<<<<<<<............................ > ................................................................................ > │ > .......................//<<<<<<<<<<<<<.......................................... > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > .......................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................... > ................................................................................ > │ > ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... > ................................................................................ > │ > ......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................... > ................................................................................ > │ > ......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > ................................................................................ > │ > ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > ................................................................................ > │ > .....................>///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > ................................................................................ > │ > .....................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > ..;;;;;;;;;;;;;;;;;............................................................. > │ > ....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > .>/;;;;;;;;;;;;;;;;;............................................................ > │ > ....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > >//;;;;;;;;;;;;;;;;;............................................................ > │ > ....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...............> > ///;;;;;;;;;;;;;;;;;;..............>;;;;;;;;;................................... > │ > ...................../////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............../ > ////;;;;;;;;;;;;;;;;;.............//;;;;;;;;;................................... > │ > .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............../ > ////;;;;;;;;;;;;;;;;;;............///;;;;;;;;;.................................. > │ > .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... > ////;;;;;;;;;;;;;;;;;;............///;;;;;;;;;.................................. > │ > .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. > ////;;;;;;;;;;;;;;;;;;;............//;<<<<<<<<.................................. > │ > .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............. > /////<<<<<<<<<<<<<<<<<<............/<<<<<<<<.................................... > │ > ......................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. > .///<<<<<<<<<<<<<<<<............................................................ > │ > ......................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<............ > .//<<<<<<<<<<<<<<<.............................................................. > │ > ......................//////;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<............. > .<<<<<<......................................................................... > │ > ......................///////;;;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<.................. > ................................................................................ > │ > .......................//////<<<<<<<<<<<<<<<<<<<<<<<<<<<<....................... > ................................................................................ > │ > .......................////<<<<<<<<<<<<<<<<<<<<<<<<<<........................... > ................................................................................ > │ > .......................///<<<<<<<<<<<<<<<<...................................... > ................................................................................ > │ > ......................./<<<<<................................................... > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ........................;;;;;;.................................................. > ................................................................................ > │ > .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................... > ................................................................................ > │ > ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................... > ................................................................................ > │ > ......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... > ................................................................................ > │ > ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................... > ................................................................................ > │ > .....................>///;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > ................................................................................ > │ > ...................../////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > ................................................................................ > │ > ....................>/////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > ..;;;;;;;;;;;;;;;;;............................................................. > │ > ....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. > .>/;;;;;;;;;;;;;;;;\............................................................ > │ > ...................>///////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > >//;;;;;;;;;;;;;;;;;............................................................ > │ > ...................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............../ > ///;;;;;;;;;;;;;;;;;;..............>;;;;;;;;;................................... > │ > ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............../ > ////;;;;;;;;;;;;;;;;;\............>/;;;;;;;;;\.................................. > │ > ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............./ > ////;;;;;;;;;;;;;;;;;;............///;;;;;;;;;.................................. > │ > ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............./ > /////;;;;;;;;;;;;;;;;;;...........///;;;;;;;<<\................................. > │ > .....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............. > /////;;;;;;;;;;;;;;<<<<............///<<<<<<<<.................................. > │ > .....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\............ > //////<<<<<<<<<<<<<<<<<............//<<<<<<<.................................... > │ > ...................../////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............ > /////<<<<<<<<<<<<<<<............................................................ > │ > ...................../////////;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<............ > .//<<<<<<<<<<<<<<<.............................................................. > │ > ......................////////;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<<<................ > ./<<<<<<<<...................................................................... > │ > ....................../////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<................... > ................................................................................ > │ > ......................////////<<<<<<<<<<<<<<<<<<<<<<<<<<<....................... > ................................................................................ > │ > ......................./////<<<<<<<<<<<<<<<<<<<<<<<<<........................... > ................................................................................ > │ > .......................///<<<<<<<<<<<<<<<<<<<<.................................. > ................................................................................ > │ > .......................//<<<<<<<<<.............................................. > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ........................;;;;;;;;;............................................... > ................................................................................ > │ > .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................ > ................................................................................ > │ > ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................... > ................................................................................ > │ > ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................... > ................................................................................ > │ > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... > ................................................................................ > │ > .....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > ................................................................................ > │ > ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > ................................................................................ > │ > ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > ..;;;;;;;;;;;;;;;;;............................................................. > │ > ...................>////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. > .>/;;;;;;;;;;;;;;;;\............................................................ > │ > .................../////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ > >///;;;;;;;;;;;;;;;;............................................................ > │ > ..................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...............> > ////;;;;;;;;;;;;;;;;;..............>;;;;;;;;;................................... > │ > ...................//////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............>/ > ////;;;;;;;;;;;;;;;;;;............>//;;;;;;;;\.................................. > │ > ...................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............// > /////;;;;;;;;;;;;;;;;;\...........///;;;;;;;;;.................................. > │ > ...................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............/ > //////;;;;;;;;;;;;;;;;;...........////;;;<<<<<<................................. > │ > ....................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........../ > ///////;;;;;;;<<<<<<<<<<...........///<<<<<<<<.................................. > │ > ....................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........... > ///////<<<<<<<<<<<<<<<.............//<<<<<<<.................................... > │ > .....................//////////;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<........... > /////<<<<<<<<<<<<<<<............................................................ > │ > .....................///////////;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<<<<.............. > .///<<<<<<<<<<<<<<.............................................................. > │ > .....................////////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<................. > .//<<<<<<<<<.................................................................... > │ > ......................//////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<.................... > ................................................................................ > │ > ....................../////////<<<<<<<<<<<<<<<<<<<<<<<<<<....................... > ................................................................................ > │ > ......................///////<<<<<<<<<<<<<<<<<<<<<<<<<.......................... > ................................................................................ > │ > ......................./////<<<<<<<<<<<<<<<<<<<<................................ > ................................................................................ > │ > .......................///<<<<<<<<<<<<.......................................... > ................................................................................ > │ > ........................<<<<<................................................... > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ........................;;;;;;;;;;.............................................. > ................................................................................ > │ > .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................... > ................................................................................ > │ > .......................//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................ > ................................................................................ > │ > ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................... > ................................................................................ > │ > .....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................... > ................................................................................ > │ > .....................//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... > ................................................................................ > │ > ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................... > ................................................................................ > │ > ....................////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > ../;;;;;;;;;;;;;;;.............................................................. > │ > ...................>/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................. > .>/;;;;;;;;;;;;;;;;............................................................. > │ > ..................>//////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ > >///;;;;;;;;;;;;;;;;............................................................ > │ > ..................////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..............> > ////;;;;;;;;;;;;;;;;;..............>;;;;;;;;;................................... > │ > ................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............>/ > /////;;;;;;;;;;;;;;;;;............>//;;;;;;;;\.................................. > │ > ................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...........// > //////;;;;;;;;;;;;;;;;;..........////;;;;;;;;;\................................. > │ > .................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........// > //////;;;;;;;;;;;;;;;;;;..........////;<<<<<<<<................................. > │ > .................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........../ > ///////;;<<<<<<<<<<<<<<<...........///<<<<<<<<.................................. > │ > ..................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<<<........... > ////////<<<<<<<<<<<<<<.............//<<<<<<<.................................... > │ > ....................//////////////;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<<<............. > //////<<<<<<<<<<<<<<............................................................ > │ > ....................//////////////;;<<<<<<<<<<<<<<<<<<<<<<<<<<<<<............... > .////<<<<<<<<<<<<<.............................................................. > │ > ...................../////////////<<<<<<<<<<<<<<<<<<<<<<<<<<<<.................. > ..<<<<<<<<<<<................................................................... > │ > .....................////////////<<<<<<<<<<<<<<<<<<<<<<<<<<..................... > ................................................................................ > │ > ....................../////////<<<<<<<<<<<<<<<<<<<<<<<<<........................ > ................................................................................ > │ > ......................///////<<<<<<<<<<<<<<<<<<<<<<<<<.......................... > ................................................................................ > │ > ......................./////<<<<<<<<<<<<<<<<<<<<<<.............................. > ................................................................................ > │ > .......................////<<<<<<<<<<<<<<....................................... > ................................................................................ > │ > ......................../<<<<<<<<............................................... > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ........................;;;;;;;;;............................................... > ................................................................................ > │ > .......................>;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................... > ................................................................................ > │ > ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;......................... > ................................................................................ > │ > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................ > ................................................................................ > │ > .....................>/////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................... > ................................................................................ > │ > ....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... > ................................................................................ > │ > ....................>///////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > ................................................................................ > │ > ...................>/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > ..;;;;;;;;;;;;;;;;.............................................................. > │ > ...................///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > .>//;;;;;;;;;;;;;;;............................................................. > │ > ..................>////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ > >///;;;;;;;;;;;;;;;;............................................................ > │ > ................../////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............> > /////;;;;;;;;;;;;;;;;..............>;;;;;;;;\................................... > │ > .................>//////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...........>/ > //////;;;;;;;;;;;;;;;;............>//;;;;;;;;\.................................. > │ > .................////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........./// > //////;;;;;;;;;;;;;;;;;..........>////;;;;;;;;;................................. > │ > ..................////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.........// > ///////;;;;;;;;;;;;<<<<<........../////<<<<<<<<................................. > │ > ................../////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<<<........./ > ////////;<<<<<<<<<<<<<<...........////<<<<<<<<.................................. > │ > ...................////////////////;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<<<.........../ > ////////<<<<<<<<<<<<<<.............//<<<<<<<.................................... > │ > .................../////////////////;;;<<<<<<<<<<<<<<<<<<<<<<<<<<<.............. > //////<<<<<<<<<<<<<<............................................................ > │ > ....................////////////////<<<<<<<<<<<<<<<<<<<<<<<<<<<................. > .///<<<<<<<<<<<<<<.............................................................. > │ > .....................//////////////<<<<<<<<<<<<<<<<<<<<<<<<<<................... > ..//<<<<<<<<<<.................................................................. > │ > ...................../////////////<<<<<<<<<<<<<<<<<<<<<<<<<..................... > ..<............................................................................. > │ > ......................//////////<<<<<<<<<<<<<<<<<<<<<<<<........................ > ................................................................................ > │ > ....................../////////<<<<<<<<<<<<<<<<<<<<<<<.......................... > ................................................................................ > │ > .......................//////<<<<<<<<<<<<<<<<<<<<<<............................. > ................................................................................ > │ > ........................////<<<<<<<<<<<<<<<..................................... > ................................................................................ > │ > ........................//<<<<<<<<<<............................................ > ................................................................................ > │ > .........................<<<.................................................... > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > .......................>;;;;;;;;................................................ > ................................................................................ > │ > .......................>/;;;;;;;;;;;;;;;;;;;;;;;;;;;\........................... > ................................................................................ > │ > ......................>//;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................... > ................................................................................ > │ > ......................////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\........................ > ................................................................................ > │ > .....................>//////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;....................... > ................................................................................ > │ > ....................>////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..................... > ................................................................................ > │ > ..................../////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > ................................................................................ > │ > ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > ..;;;;;;;;;;;;;;;\.............................................................. > │ > ..................>/////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > .>/;;;;;;;;;;;;;;;;............................................................. > │ > ..................///////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................ > >///;;;;;;;;;;;;;;;;............................................................ > │ > .................>////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............> > /////;;;;;;;;;;;;;;;;..............>/;;;;;;;\................................... > │ > ................>//////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\..........>/ > //////;;;;;;;;;;;;;;;;\...........>///;;;;;;;\.................................. > │ > ................>///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;........>// > ///////;;;;;;;;;;;;;;;;;.........>////;;;;;;;;;................................. > │ > .................///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<<<......./// > ////////;;;;;;<<<<<<<<<<.........//////<<<<<<<<................................. > │ > ................./////////////////////;;;;;;;;;;;;;;;;<<<<<<<<<<<<<<<.........// > /////////<<<<<<<<<<<<<<...........////<<<<<<<<.................................. > │ > ..................////////////////////;;;;<<<<<<<<<<<<<<<<<<<<<<<<<............/ > ////////<<<<<<<<<<<<<..............//<<<<<<<.................................... > │ > ...................////////////////////<<<<<<<<<<<<<<<<<<<<<<<<<<............... > ///////<<<<<<<<<<<<<............................................................ > │ > ...................//////////////////<<<<<<<<<<<<<<<<<<<<<<<<<.................. > .////<<<<<<<<<<<<<.............................................................. > │ > ....................////////////////<<<<<<<<<<<<<<<<<<<<<<<<.................... > ..//<<<<<<<<<<<................................................................. > │ > .....................//////////////<<<<<<<<<<<<<<<<<<<<<<<...................... > ...<<........................................................................... > │ > ......................////////////<<<<<<<<<<<<<<<<<<<<<<........................ > ................................................................................ > │ > ......................//////////<<<<<<<<<<<<<<<<<<<<<<.......................... > ................................................................................ > │ > .......................///////<<<<<<<<<<<<<<<<<<<<<<............................ > ................................................................................ > │ > ......................../////<<<<<<<<<<<<<<<<................................... > ................................................................................ > │ > ........................////<<<<<<<<<<.......................................... > ................................................................................ > │ > ........................./<<<<<<................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > .......................;;;;;;;.................................................. > ................................................................................ > │ > ......................./;;;;;;;;;;;;;;;;;;;;;;;;;;;............................. > ................................................................................ > │ > ......................>///;;;;;;;;;;;;;;;;;;;;;;;;;;;........................... > ................................................................................ > │ > .....................>////;;;;;;;;;;;;;;;;;;;;;;;;;;;;.......................... > ................................................................................ > │ > .....................///////;;;;;;;;;;;;;;;;;;;;;;;;;;;;........................ > ................................................................................ > │ > ....................>/////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;...................... > ................................................................................ > │ > ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;.................... > ................................................................................ > │ > ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > ../;;;;;;;;;;;;;;............................................................... > │ > ..................>/////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;................. > .>/;;;;;;;;;;;;;;;;............................................................. > │ > ..................////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............... > >///;;;;;;;;;;;;;;;;............................................................ > │ > .................>//////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;............> > ///////;;;;;;;;;;;;;;..............>/;;;;;;;.................................... > │ > ................>////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........>/ > ////////;;;;;;;;;;;;;;;...........>///;;;;;;;;.................................. > │ > ................/////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<<<.......>// > /////////;;;;;;;;;;;;;;<.........>////;;;;;;;;<................................. > │ > ...............////////////////////////;;;;;;;;;;;;;;;;;<<<<<<<<<<<<<......../// > /////////;<<<<<<<<<<<<<<.........//////;<<<<<<<................................. > │ > ................////////////////////////;;;;<<<<<<<<<<<<<<<<<<<<<<<...........// > //////////<<<<<<<<<<<<<.........../////<<<<<<<.................................. > │ > .................////////////////////////<<<<<<<<<<<<<<<<<<<<<<<<<............./ > /////////<<<<<<<<<<<<..............//<<<<<<<.................................... > │ > ..................//////////////////////<<<<<<<<<<<<<<<<<<<<<<<<................ > ////////<<<<<<<<<<<<............................................................ > │ > ...................///////////////////<<<<<<<<<<<<<<<<<<<<<<<<.................. > ./////<<<<<<<<<<<<.............................................................. > │ > ..................../////////////////<<<<<<<<<<<<<<<<<<<<<<<.................... > ..///<<<<<<<<<<................................................................. > │ > .....................///////////////<<<<<<<<<<<<<<<<<<<<<<...................... > .../<<<......................................................................... > │ > .....................//////////////<<<<<<<<<<<<<<<<<<<<<........................ > ................................................................................ > │ > ......................///////////<<<<<<<<<<<<<<<<<<<<<.......................... > ................................................................................ > │ > ......................./////////<<<<<<<<<<<<<<<<<<<<............................ > ................................................................................ > │ > ........................///////<<<<<<<<<<<<<<<.................................. > ................................................................................ > │ > .........................////<<<<<<<<<<<........................................ > ................................................................................ > │ > ..........................//<<<<<<<............................................. > ................................................................................ > │ > ...........................<<................................................... > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > .......................;;;;..................................................... > ................................................................................ > │ > ......................>/;;;;;;;;;;;;;;;;;;;;;;;;................................ > ................................................................................ > │ > ......................///;;;;;;;;;;;;;;;;;;;;;;;;;;............................. > ................................................................................ > │ > .....................>////;/;;;;;;;;;;;;;;;;;;;;;;;;;........................... > ................................................................................ > │ > ....................>////////;;;;;;;;;;;;;;;;;;;;;;;;;;......................... > ................................................................................ > │ > ....................>////////;/;;;;;;;;;;;;;;;;;;;;;;;;;;....................... > ................................................................................ > │ > ...................>///////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................... > ................................................................................ > │ > ...................///////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;................... > ..;;;;;;;;;;;;;;\............................................................... > │ > ..................>////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;\................ > .>/;;;;;;;;;;;;;;;.............................................................. > │ > .................>///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;\.............. > >///;/;;;;;;;;;;;;;;............................................................ > │ > ................./////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\...........> > //////;;;;;;;;;;;;;;;;.............>/;;;;;;;.................................... > │ > ................>//////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;\........>/ > ///////;/;;;;;;;;;;;;;;...........>///;;;;;;;;.................................. > │ > ...............>////////////////////////;;;;;;;;;;;;;;;;;;<<<<<<<<<<<<.......>// > /////////;;;;;;;;;<<<<<<.........>////;;;;;;<<<................................. > │ > ...............>//////////////////////////;;;;<<<<<<<<<<<<<<<<<<<<<<........./// > //////////;<<<<<<<<<<<<<.........///////<<<<<<<................................. > │ > ...............///////////////////////////<<<<<<<<<<<<<<<<<<<<<<<<.........../// > //////////<<<<<<<<<<<<............/////<<<<<<................................... > │ > ................//////////////////////////<<<<<<<<<<<<<<<<<<<<<<.............../ > /////////<<<<<<<<<<<<..............///<<<<<<.................................... > │ > .................///////////////////////<<<<<<<<<<<<<<<<<<<<<<<................. > ///////<<<<<<<<<<<<..................<.......................................... > │ > ..................//////////////////////<<<<<<<<<<<<<<<<<<<<<................... > .//////<<<<<<<<<<<.............................................................. > │ > ...................//////////////////<<<<<<<<<<<<<<<<<<<<<<..................... > ...//<<<<<<<<<<................................................................. > │ > ....................////////////////<<<<<<<<<<<<<<<<<<<<<<...................... > ..../<<<........................................................................ > │ > .....................///////////////<<<<<<<<<<<<<<<<<<<<........................ > ................................................................................ > │ > ....................../////////////<<<<<<<<<<<<<<<<<<<.......................... > ................................................................................ > │ > .......................//////////<<<<<<<<<<<<<<<<<<<<........................... > ................................................................................ > │ > ........................////////<<<<<<<<<<<<<<<................................. > ................................................................................ > │ > ..........................////<<<<<<<<<<<<...................................... > ................................................................................ > │ > ..........................////<<<<<<<........................................... > ................................................................................ > │ > ............................<<<<................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > .......................;;....................................................... > ................................................................................ > │ > ......................>;;;;;;;;;;;;;;;;;;;;..................................... > ................................................................................ > │ > ......................///;;;;;;;;;;;;;;;;;;;;;;;;;.............................. > ................................................................................ > │ > .....................>/////;;;;;;;;;;;;;;;;;;;;;;;;;............................ > ................................................................................ > │ > ....................>////////;;;;;;;;;;;;;;;;;;;;;;;;;\......................... > ................................................................................ > │ > ....................//////////;;;;;;;;;;;;;;;;;;;;;;;;;;;....................... > ................................................................................ > │ > ...................>////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;..................... > ................................................................................ > │ > ..................>///////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;\.................. > .>/;;;;;;;;;;;;;................................................................ > │ > ..................///////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;................ > >//;;;;;;;;;;;;;;;.............................................................. > │ > .................>////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;.............. > >////;;;;;;;;;;;;;;;............................................................ > │ > .................///////////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;;;;..........> > ///////;;;;;;;;;;;;;;;.............>/;;;;;;;.................................... > │ > ................>/////////////////////////;;;;;;;;;;;;;;;;;;<<<<<<<<<.........>/ > ////////;;;;;;;;;;;;;;;;..........>//;;;;;;;;;.................................. > │ > ...............>/////////////////////////////;;;<<<<<<<<<<<<<<<<<<<<.........>// > //////////;;;<<<<<<<<<<<.........>/////;;;<<<<<................................. > │ > ...............//////////////////////////////<<<<<<<<<<<<<<<<<<<<<<.........//// > ////////////<<<<<<<<<<<..........///////<<<<<<<................................. > │ > ..............>////////////////////////////<<<<<<<<<<<<<<<<<<<<<<............/// > ///////////<<<<<<<<<<<............/////<<<<<<................................... > │ > ...............////////////////////////////<<<<<<<<<<<<<<<<<<<<...............// > //////////<<<<<<<<<<<..............///<<<<<<.................................... > │ > ................/////////////////////////<<<<<<<<<<<<<<<<<<<<<.................. > ////////<<<<<<<<<<<..................<.......................................... > │ > .................///////////////////////<<<<<<<<<<<<<<<<<<<<<................... > .//////<<<<<<<<<<<.............................................................. > │ > ...................////////////////////<<<<<<<<<<<<<<<<<<<<..................... > ...///<<<<<<<<<<................................................................ > │ > ....................//////////////////<<<<<<<<<<<<<<<<<<<<...................... > ..../<<<<....................................................................... > │ > .....................////////////////<<<<<<<<<<<<<<<<<<<........................ > ................................................................................ > │ > ......................//////////////<<<<<<<<<<<<<<<<<<.......................... > ................................................................................ > │ > ........................///////////<<<<<<<<<<<<<<<<<<........................... > ................................................................................ > │ > .........................////////<<<<<<<<<<<<<<<................................ > ................................................................................ > │ > ..........................//////<<<<<<<<<<<..................................... > ................................................................................ > │ > ...........................////<<<<<<<<......................................... > ................................................................................ > │ > ............................//<<<<.............................................. > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ....................../;;;;;;;;;;;;;;;;......................................... > ................................................................................ > │ > .....................>///;;;;;;;;;;;;;;;;;;;;;;;................................ > ................................................................................ > │ > .....................//////;;;;;;;;;;;;;;;;;;;;;;;;............................. > ................................................................................ > │ > ..................../////////;;;;;;;;;;;;;;;;;;;;;;;;........................... > ................................................................................ > │ > ...................>///////////;/;;;;;;;;;;;;;;;;;;;;;;;........................ > ................................................................................ > │ > ...................///////////////;;;;;;;;;;;;;;;;;;;;;;;;;..................... > ................................................................................ > │ > ..................>/////////////////;;;;;;;;;;;;;;;;;;;;;;;;;;.................. > .>;;;;;;;;;;;;;................................................................. > │ > ..................////////////////////;/;;;;;;;;;;;;;;;;;;;;;;;;................ > >//;/;;;;;;;;;;;;............................................................... > │ > .................>//////////////////////;/;;;;;;;;;;;;;;;;;;;;;;;;;\............ > //////;;;;;;;;;;;;;;............................................................ > │ > ................>//////////////////////////;;;;;;;;;;;;;;;;;;;<<<<<<<..........> > ///////;;;;;;;;;;;;;;;.............>/;;;;;;;.................................... > │ > ................/////////////////////////////;;;;<<<<<<<<<<<<<<<<<<<..........>/ > ///////////;;;;;;;;;;;<<..........>//;;;;;;;;;.................................. > │ > ...............>//////////////////////////////<<<<<<<<<<<<<<<<<<<<<..........>// > ///////////;<<<<<<<<<<<<.........>/////;;<<<<<<................................. > │ > ...............///////////////////////////////<<<<<<<<<<<<<<<<<<<............/// > ////////////<<<<<<<<<<<..........///////<<<<<<.................................. > │ > ..............>//////////////////////////////<<<<<<<<<<<<<<<<<<<............//// > ///////////<<<<<<<<<<<............/////<<<<<<................................... > │ > ..............//////////////////////////////<<<<<<<<<<<<<<<<<<<...............// > //////////<<<<<<<<<<<...............///<<<<<.................................... > │ > ...............///////////////////////////<<<<<<<<<<<<<<<<<<<................... > /////////<<<<<<<<<<................../.......................................... > │ > ................//////////////////////////<<<<<<<<<<<<<<<<<<.................... > .///////<<<<<<<<<<.............................................................. > │ > ..................//////////////////////<<<<<<<<<<<<<<<<<<<..................... > ...////<<<<<<<<<................................................................ > │ > ....................///////////////////<<<<<<<<<<<<<<<<<<....................... > ...../<<<....................................................................... > │ > ...................../////////////////<<<<<<<<<<<<<<<<<<........................ > ................................................................................ > │ > ......................///////////////<<<<<<<<<<<<<<<<<<......................... > ................................................................................ > │ > ........................////////////<<<<<<<<<<<<<<<<<........................... > ................................................................................ > │ > .........................//////////<<<<<<<<<<<<<<............................... > ................................................................................ > │ > ...........................///////<<<<<<<<<<<................................... > ................................................................................ > │ > ............................/////<<<<<<<........................................ > ................................................................................ > │ > ..............................//<<<<............................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > .....................>;;;;;;;;;;;;.............................................. > ................................................................................ > │ > .....................///;;;;;;;;;;;;;;;;;;;;;;.................................. > ................................................................................ > │ > ....................>//////;;;;;;;;;;;;;;;;;;;;;;............................... > ................................................................................ > │ > ..................../////////;/;;;;;;;;;;;;;;;;;;;;;\........................... > ................................................................................ > │ > ...................>/////////////;;;;;;;;;;;;;;;;;;;;;;\........................ > ................................................................................ > │ > ...................////////////////;/;;;;;;;;;;;;;;;;;;;;;;..................... > ................................................................................ > │ > ..................>///////////////////;/;;;;;;;;;;;;;;;;;;;;;;.................. > .;;;;;;;;;;;;;.................................................................. > │ > .................>///////////////////////;;;;;;;;;;;;;;;;;;;;;;;;\.............. > >///;;;;;;;;;;;;;............................................................... > │ > .................//////////////////////////;;;;;;;;;;;;;;;;;;;;;;<<<............ > /////;;;;;;;;;;;;;;;............................................................ > │ > ................>/////////////////////////////;;;;<<<<<<<<<<<<<<<<<<...........> > ////////;/;;;;;;;;;;;;;............>/;;;;;;;.................................... > │ > ................////////////////////////////////<<<<<<<<<<<<<<<<<<<...........>/ > //////////;;;;;;;<<<<<<<..........>//;;;;;;;;;.................................. > │ > ...............>///////////////////////////////<<<<<<<<<<<<<<<<<<<...........>// > /////////////<<<<<<<<<<..........>///////<<<<<<................................. > │ > ...............///////////////////////////////<<<<<<<<<<<<<<<<<<............./// > ////////////<<<<<<<<<<...........////////<<<<<.................................. > │ > ..............>///////////////////////////////<<<<<<<<<<<<<<<<<.............>/// > ///////////<<<<<<<<<<............///////<<<<<................................... > │ > ..............//////////////////////////////<<<<<<<<<<<<<<<<<<.............../// > ///////////<<<<<<<<<................///<<<<<.................................... > │ > ..............//////////////////////////////<<<<<<<<<<<<<<<<<................../ > //////////<<<<<<<<<.................../......................................... > │ > ...............////////////////////////////<<<<<<<<<<<<<<<<<.................... > ..///////<<<<<<<<<.............................................................. > │ > ................./////////////////////////<<<<<<<<<<<<<<<<...................... > ....////<<<<<<<<................................................................ > │ > ...................//////////////////////<<<<<<<<<<<<<<<<....................... > ....../<<<...................................................................... > │ > .....................//////////////////<<<<<<<<<<<<<<<<<........................ > ................................................................................ > │ > ....................../////////////////<<<<<<<<<<<<<<<<......................... > ................................................................................ > │ > ........................//////////////<<<<<<<<<<<<<<<........................... > ................................................................................ > │ > ..........................///////////<<<<<<<<<<<<............................... > ................................................................................ > │ > ............................////////<<<<<<<<<<.................................. > ................................................................................ > │ > .............................//////<<<<<<<...................................... > ................................................................................ > │ > ...............................///<<<<.......................................... > ................................................................................ > │ > .................................<.............................................. > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ...................../;;;;;;;;.................................................. > ................................................................................ > │ > ....................>//;;;;;;;;;;;;;;;;;;;;;.................................... > ................................................................................ > │ > ....................//////;;;;;;;;;;;;;;;;;;;;;................................. > ................................................................................ > │ > ...................>//////////;/;;;;;;;;;;;;;;;;;;;............................. > ................................................................................ > │ > ...................//////////////;/;;;;;;;;;;;;;;;;;;;;......................... > ................................................................................ > │ > ..................>////////////////////;;;;;;;;;;;;;;;;;;;;..................... > ................................................................................ > │ > ..................//////////////////////;;;;;;;;;;;;;;;;;;;;;;;................. > .;;;;;;;;;;;;\.................................................................. > │ > .................>/////////////////////////;;;;;;;;;;;;;;;;;;;;;;;.............. > >/;;/;;;;;;;;;;;;............................................................... > │ > .................////////////////////////////////;;;<<<<<<<<<<<<<<<<............ > /////;;/;;;;;;;;;;;;............................................................ > │ > ................>/////////////////////////////////<<<<<<<<<<<<<<<<<............> > ////////;;;;;;;;;;;;;;;............;;;;;;;;;.................................... > │ > ................/////////////////////////////////<<<<<<<<<<<<<<<<.............>/ > ////////////;;<<<<<<<<<<..........>////;;;;;;;;................................. > │ > ...............>////////////////////////////////<<<<<<<<<<<<<<<<..............// > //////////////<<<<<<<<<...........//////;<<<<<<................................. > │ > ...............////////////////////////////////<<<<<<<<<<<<<<<<..............>// > /////////////<<<<<<<<<...........>///////<<<<<.................................. > │ > ..............>///////////////////////////////<<<<<<<<<<<<<<<<..............>/// > ////////////<<<<<<<<<............///////<<<<<................................... > │ > ..............///////////////////////////////<<<<<<<<<<<<<<<<................/// > ///////////<<<<<<<<<................///<<<<<.................................... > │ > .............>///////////////////////////////<<<<<<<<<<<<<<<.................../ > //////////<<<<<<<<<............................................................. > │ > ..............//////////////////////////////<<<<<<<<<<<<<<<..................... > ..///////<<<<<<<<<.............................................................. > │ > ................///////////////////////////<<<<<<<<<<<<<<<...................... > ..../////<<<<<<<................................................................ > │ > ..................////////////////////////<<<<<<<<<<<<<<<....................... > ......./<<...................................................................... > │ > ..................../////////////////////<<<<<<<<<<<<<<<........................ > ................................................................................ > │ > ......................//////////////////<<<<<<<<<<<<<<<......................... > ................................................................................ > │ > ........................///////////////<<<<<<<<<<<<<<........................... > ................................................................................ > │ > ...........................///////////<<<<<<<<<<<<.............................. > ................................................................................ > │ > ............................//////////<<<<<<<<<................................. > ................................................................................ > │ > ..............................///////<<<<<<..................................... > ................................................................................ > │ > ................................////<<<<........................................ > ................................................................................ > │ > ...................................<............................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > .....................;;;;;...................................................... > ................................................................................ > │ > ....................>/;/;;;;;;;;;;;;;;.......................................... > ................................................................................ > │ > ....................//////;/;;;;;;;;;;;;;;;;;................................... > ................................................................................ > │ > ...................>//////////;;/;;;;;;;;;;;;;;;;;.............................. > ................................................................................ > │ > ...................////////////////;;;;;;;;;;;;;;;;;;;;......................... > ................................................................................ > │ > ..................>///////////////////////;;;;;;;;;;;;;;;;;..................... > ................................................................................ > │ > ................../////////////////////////;;;;;;;;;;;;;;;;;;;;;................ > .;;;;;;;;;;;.................................................................... > │ > .................>///////////////////////////////;;;;;<<<<<<<<<<<<<............. > >//;/;;;;;;;;;;;................................................................ > │ > .................//////////////////////////////////<<<<<<<<<<<<<<<.............> > //////;//;;;;;;;;;;;............................................................ > │ > ................>/////////////////////////////////<<<<<<<<<<<<<<<..............> > /////////;/;;;;;;;;;<<<<...........;;;;;;;;..................................... > │ > ................//////////////////////////////////<<<<<<<<<<<<<<..............>/ > //////////////<<<<<<<<<...........>///;;;;;;;<<................................. > │ > ...............>/////////////////////////////////<<<<<<<<<<<<<<<..............// > //////////////<<<<<<<<<...........///////;<<<<<................................. > │ > .............../////////////////////////////////<<<<<<<<<<<<<<<..............>// > /////////////<<<<<<<<<...........>///////<<<<<.................................. > │ > ..............>////////////////////////////////<<<<<<<<<<<<<<<..............>/// > ////////////<<<<<<<<<............///////<<<<<................................... > │ > ..............>///////////////////////////////<<<<<<<<<<<<<<<...............//// > ////////////<<<<<<<<................////<<<<<................................... > │ > ..............////////////////////////////////<<<<<<<<<<<<<<.................../ > ///////////<<<<<<<<............................................................. > │ > .............>///////////////////////////////<<<<<<<<<<<<<<..................... > ..////////<<<<<<<<.............................................................. > │ > .............../////////////////////////////<<<<<<<<<<<<<<...................... > .....////<<<<<<<................................................................ > │ > .................//////////////////////////<<<<<<<<<<<<<<....................... > .......//<<..................................................................... > │ > ....................///////////////////////<<<<<<<<<<<<<........................ > ................................................................................ > │ > ......................////////////////////<<<<<<<<<<<<<......................... > ................................................................................ > │ > ......................../////////////////<<<<<<<<<<<<........................... > ................................................................................ > │ > .........................../////////////<<<<<<<<<<.............................. > ................................................................................ > │ > .............................//////////<<<<<<<<................................. > ................................................................................ > │ > ................................///////<<<<<.................................... > ................................................................................ > │ > ..................................////<<<....................................... > ................................................................................ > │ > .....................................<.......................................... > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ....................;;.......................................................... > ................................................................................ > │ > ....................//;/;;;;;;;;;............................................... > ................................................................................ > │ > ...................>//////;;;/;;;;;;;;;;;;;..................................... > ................................................................................ > │ > ...................////////////;;;;;;;;;;;;;;;;;................................ > ................................................................................ > │ > ..................>/////////////////////;;;;;;;;;;;;;;.......................... > ................................................................................ > │ > ..................>///////////////////////;;;/;;;;;;;;;;;;;;.................... > ................................................................................ > │ > ................../////////////////////////////;;/;;;;;;;;;;;;;;;............... > ;;;;;;;;;;;..................................................................... > │ > .................>//////////////////////////////////<<<<<<<<<<<<<<.............. > >/;/;;;;;;;;;;;;................................................................ > │ > .................//////////////////////////////////<<<<<<<<<<<<<<..............> > ///////;;/;;;;;;;;;;;........................................................... > │ > ................>//////////////////////////////////<<<<<<<<<<<<<...............> > //////////;;/;;;<<<<<<<............/;;;;;;;\.................................... > │ > ................//////////////////////////////////<<<<<<<<<<<<<...............>/ > ///////////////<<<<<<<<...........>//;;/;;;;<<<................................. > │ > ...............>//////////////////////////////////<<<<<<<<<<<<................// > //////////////<<<<<<<<............>///////<<<<.................................. > │ > ...............>/////////////////////////////////<<<<<<<<<<<<<...............>// > /////////////<<<<<<<<............>///////<<<<<.................................. > │ > .............../////////////////////////////////<<<<<<<<<<<<<................>// > /////////////<<<<<<<<............////////<<<<................................... > │ > ..............>////////////////////////////////<<<<<<<<<<<<<................./// > ////////////<<<<<<<<................////<<<<<................................... > │ > ............../////////////////////////////////<<<<<<<<<<<<...................// > ///////////<<<<<<<<............................................................. > │ > .............>////////////////////////////////<<<<<<<<<<<<<..................... > ../////////<<<<<<<<............................................................. > │ > .............////////////////////////////////<<<<<<<<<<<<<...................... > ...../////<<<<<<................................................................ > │ > ................/////////////////////////////<<<<<<<<<<<<....................... > ........./<..................................................................... > │ > .................../////////////////////////<<<<<<<<<<<<........................ > ................................................................................ > │ > ....................../////////////////////<<<<<<<<<<<<......................... > ................................................................................ > │ > ........................///////////////////<<<<<<<<<<........................... > ................................................................................ > │ > ............................//////////////<<<<<<<<<............................. > ................................................................................ > │ > ...............................//////////<<<<<<<................................ > ................................................................................ > │ > ..................................///////<<<<<.................................. > ................................................................................ > │ > ....................................////<<<..................................... > ................................................................................ > │ > ......................................./........................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ...................;/;;;;;;;;................................................... > ................................................................................ > │ > ...................//////;///;;;;;;;;;;......................................... > ................................................................................ > │ > ..................>/////////////;;;;;;;;;;;;;;;................................. > ................................................................................ > │ > ..................>////////////////////;//;;;;;;;;;;;;.......................... > ................................................................................ > │ > ................../////////////////////////////;/;;;;;;;;;;;;................... > ................................................................................ > │ > .................>///////////////////////////////////<<<<<<<<<<<<............... > ................................................................................ > │ > .................>//////////////////////////////////<<<<<<<<<<<<................ > /;;/;;;;;;;;;;;................................................................. > │ > .................///////////////////////////////////<<<<<<<<<<<<...............> > ///////;;;;;;;;;;;;;;........................................................... > │ > ................>//////////////////////////////////<<<<<<<<<<<<................> > /////////////;;<<<<<<<<............;;;;;;;;..................................... > │ > ................>//////////////////////////////////<<<<<<<<<<<................>/ > ///////////////<<<<<<<............>//;;/;;<<<<<................................. > │ > ................//////////////////////////////////<<<<<<<<<<<<................>/ > ///////////////<<<<<<<............>///////<<<<.................................. > │ > ...............>//////////////////////////////////<<<<<<<<<<<.................// > //////////////<<<<<<<............>///////<<<<<.................................. > │ > ...............//////////////////////////////////<<<<<<<<<<<.................>// > /////////////<<<<<<<.............>///////<<<<................................... > │ > ...............//////////////////////////////////<<<<<<<<<<<................./// > /////////////<<<<<<<................////<<<<<................................... > │ > ..............>/////////////////////////////////<<<<<<<<<<<................../// > ////////////<<<<<<<............................................................. > │ > ............../////////////////////////////////<<<<<<<<<<<...................... > ..//////////<<<<<<<............................................................. > │ > .............//////////////////////////////////<<<<<<<<<<<...................... > ....../////<<<<<................................................................ > │ > ..............////////////////////////////////<<<<<<<<<<<....................... > ........../<.................................................................... > │ > ................./////////////////////////////<<<<<<<<<<........................ > ................................................................................ > │ > .....................////////////////////////<<<<<<<<<<<........................ > ................................................................................ > │ > ........................////////////////////<<<<<<<<<<.......................... > ................................................................................ > │ > ............................////////////////<<<<<<<............................. > ................................................................................ > │ > ................................///////////<<<<<<............................... > ................................................................................ > │ > ...................................////////<<<<................................. > ................................................................................ > │ > .......................................///<<.................................... > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ...................;;;;;........................................................ > ................................................................................ > │ > ..................>//////;;;;;;;;;;............................................. > ................................................................................ > │ > ..................>//////////////;;;;/;;;;;;.................................... > ................................................................................ > │ > ..................//////////////////////////;;;;;;;;;;.......................... > ................................................................................ > │ > ..................//////////////////////////////////;/<<<<<<<<<................. > ................................................................................ > │ > .................>///////////////////////////////////<<<<<<<<<<................. > ................................................................................ > │ > .................////////////////////////////////////<<<<<<<<<<................. > ;/;;;;;;;;;;;;;................................................................. > │ > .................///////////////////////////////////<<<<<<<<<<.................> > ///////;;;;;;;;;;;;;;<.......................................................... > │ > ................>///////////////////////////////////<<<<<<<<<<................./ > //////////////;<<<<<<<.............;;;;;;;;..................................... > │ > ................>///////////////////////////////////<<<<<<<<<................../ > ///////////////<<<<<<<............>//;;//;<<<<.................................. > │ > ................///////////////////////////////////<<<<<<<<<<.................>/ > ///////////////<<<<<<.............>///////<<<<.................................. > │ > ...............>//////////////////////////////////<<<<<<<<<<..................// > //////////////<<<<<<<.............////////<<<<.................................. > │ > ...............>//////////////////////////////////<<<<<<<<<<..................// > ///////////////<<<<<.............>///////<<<<................................... > │ > ...............///////////////////////////////////<<<<<<<<<..................>// > /////////////<<<<<<<................/////<<<<................................... > │ > ...............//////////////////////////////////<<<<<<<<<<................../// > /////////////<<<<<<............................................................. > │ > ..............>//////////////////////////////////<<<<<<<<<...................... > .///////////<<<<<<<............................................................. > │ > ..............>/////////////////////////////////<<<<<<<<<<...................... > ......./////<<<<................................................................ > │ > ..............//////////////////////////////////<<<<<<<<<....................... > ................................................................................ > │ > ...............////////////////////////////////<<<<<<<<<<....................... > ................................................................................ > │ > ....................///////////////////////////<<<<<<<<<........................ > ................................................................................ > │ > ........................//////////////////////<<<<<<<<.......................... > ................................................................................ > │ > ............................./////////////////<<<<<<............................ > ................................................................................ > │ > .................................////////////<<<<<.............................. > ................................................................................ > │ > ......................................///////<<<................................ > ................................................................................ > │ > ..........................................//<<.................................. > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ..................;;;........................................................... > ................................................................................ > │ > ..................//;;;;;;/;;;;;;;;............................................. > ................................................................................ > │ > ..................////////////////;;//;;;;;;;;;;;............................... > ................................................................................ > │ > .................>///////////////////////////////;;;/;<<<<<..................... > ................................................................................ > │ > .................>////////////////////////////////////<<<<<<<<.................. > ................................................................................ > │ > ................./////////////////////////////////////<<<<<<<<.................. > ................................................................................ > │ > .................////////////////////////////////////<<<<<<<<<.................> > /;;;;;;;;;;;;;.................................................................. > │ > .................////////////////////////////////////<<<<<<<<..................> > ///////;;;;;;;;/<<<<<<.......................................................... > │ > ................>///////////////////////////////////<<<<<<<<<................../ > ////////////////<<<<<<.............;;;;;;;;..................................... > │ > ................>///////////////////////////////////<<<<<<<<.................../ > ///////////////<<<<<<.............>//;;;//<<<<.................................. > │ > ................////////////////////////////////////<<<<<<<<..................>/ > ///////////////<<<<<<.............>///////<<<<.................................. > │ > ................///////////////////////////////////<<<<<<<<<..................>/ > //////////////<<<<<<..............////////<<<................................... > │ > ................///////////////////////////////////<<<<<<<<...................// > //////////////<<<<<<..............///////<<<<................................... > │ > ...............>///////////////////////////////////<<<<<<<<...................// > //////////////<<<<<<................/////<<<<................................... > │ > ...............>//////////////////////////////////<<<<<<<<...................>// > /////////////<<<<<<............................................................. > │ > ...............///////////////////////////////////<<<<<<<<...................... > .////////////<<<<<<............................................................. > │ > ...............///////////////////////////////////<<<<<<<<...................... > ......../////<<<................................................................ > │ > ..............>//////////////////////////////////<<<<<<<<....................... > ................................................................................ > │ > ..............>//////////////////////////////////<<<<<<<<....................... > ................................................................................ > │ > ..................//////////////////////////////<<<<<<<<........................ > ................................................................................ > │ > ......................./////////////////////////<<<<<<.......................... > ................................................................................ > │ > .............................///////////////////<<<<............................ > ................................................................................ > │ > ...................................////////////<<<<............................. > ................................................................................ > │ > .........................................//////<<............................... > ................................................................................ > │ > ............................................../................................. > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > .................>;;;;;;;;;;;;/;;;;;;;;......................................... > ................................................................................ > │ > .................>////////////////////;;/;;/;;/;;;;;;;;<<....................... > ................................................................................ > │ > .................>////////////////////////////////////<<<<<<.................... > ................................................................................ > │ > ................./////////////////////////////////////<<<<<<<................... > ................................................................................ > │ > ................./////////////////////////////////////<<<<<<<................... > ................................................................................ > │ > ................./////////////////////////////////////<<<<<<...................; > ;;;;;/;;;;;;;................................................................... > │ > .................////////////////////////////////////<<<<<<<...................> > ////////;;;///;;<<<<<........................................................... > │ > ................>////////////////////////////////////<<<<<<<.................../ > ////////////////<<<<<..............;;;;;;;;..................................... > │ > ................>////////////////////////////////////<<<<<<..................../ > ///////////////<<<<<<.............>//;;;;;<<<<.................................. > │ > ................>////////////////////////////////////<<<<<<..................../ > ///////////////<<<<<..............>///////<<<<.................................. > │ > ................>///////////////////////////////////<<<<<<<...................>/ > ///////////////<<<<<..............>///////<<<................................... > │ > ................////////////////////////////////////<<<<<<<...................>/ > ///////////////<<<<<..............////////<<<................................... > │ > ................////////////////////////////////////<<<<<<....................>/ > ///////////////<<<<<...............///////<<=................................... > │ > ................////////////////////////////////////<<<<<<....................// > //////////////<<<<<............................................................. > │ > ...............>///////////////////////////////////<<<<<<<...................../ > //////////////<<<<<............................................................. > │ > ...............>///////////////////////////////////<<<<<<....................... > ........./////<<................................................................ > │ > ...............>///////////////////////////////////<<<<<<....................... > ................................................................................ > │ > ...............>///////////////////////////////////<<<<<<....................... > ................................................................................ > │ > ...............///////////////////////////////////<<<<<<........................ > ................................................................................ > │ > ......................////////////////////////////<<<<<......................... > ................................................................................ > │ > ..............................////////////////////<<<........................... > ................................................................................ > │ > ...................................../////////////<<............................ > ................................................................................ > │ > .............................................////<<............................. > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > .................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<........................ > ................................................................................ > │ > .................//////////////////////////////////////<<<...................... > ................................................................................ > │ > .................//////////////////////////////////////<<<<..................... > ................................................................................ > │ > ................./////////////////////////////////////<<<<<..................... > ................................................................................ > │ > ................./////////////////////////////////////<<<<<..................... > ................................................................................ > │ > ................./////////////////////////////////////<<<<<....................; > ;/;;;;;;;;;;.................................................................... > │ > ................./////////////////////////////////////<<<<<..................../ > ////////////;;;;<<<<............................................................ > │ > ................./////////////////////////////////////<<<<<..................../ > ////////////////<<<<...............;;;;;;;;..................................... > │ > ................>/////////////////////////////////////<<<<<..................../ > ////////////////<<<<..............>//;;;;;<<<<.................................. > │ > ................>/////////////////////////////////////<<<<...................../ > ////////////////<<<<..............>///////<<<................................... > │ > ................>////////////////////////////////////<<<<<...................../ > ///////////////<<<<<..............>///////<<<................................... > │ > ................>////////////////////////////////////<<<<<...................../ > ///////////////<<<<<..............>///////<<<................................... > │ > ................>////////////////////////////////////<<<<<...................../ > ///////////////<<<<<..............////////<<.................................... > │ > ................>////////////////////////////////////<<<<<....................>/ > ///////////////<<<<............................................................. > │ > ................>////////////////////////////////////<<<<<....................// > ///////////////<<<<............................................................. > │ > ................>////////////////////////////////////<<<<....................... > ............///<................................................................ > │ > ................>////////////////////////////////////<<<<....................... > ................................................................................ > │ > ................////////////////////////////////////<<<<<....................... > ................................................................................ > │ > ................////////////////////////////////////<<<<........................ > ................................................................................ > │ > .................///////////////////////////////////<<<......................... > ................................................................................ > │ > .............................///////////////////////<<.......................... > ................................................................................ > │ > .........................................///////////<........................... > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > .................;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;<........................ > ................................................................................ > │ > ................;//////////////////////////////////////<<....................... > ................................................................................ > │ > ................>//////////////////////////////////////<<<...................... > ................................................................................ > │ > ................>//////////////////////////////////////<<<...................... > ................................................................................ > │ > ................>//////////////////////////////////////<<<...................... > ................................................................................ > │ > ................>//////////////////////////////////////<<<.....................; > ;;;;;;;;;;;;;;;;<<<............................................................. > │ > .................//////////////////////////////////////<<<...................../ > ////////////////<<<<............................................................ > │ > .................//////////////////////////////////////<<<...................../ > ////////////////<<<<...............;;;;;;;;;<................................... > │ > .................//////////////////////////////////////<<<...................../ > ////////////////<<<<..............;;;;;;;;;<<................................... > │ > .................//////////////////////////////////////<<<...................../ > ////////////////<<<<..............>////////<<................................... > │ > ................./////////////////////////////////////<<<<...................../ > ////////////////<<<<..............>////////<<................................... > │ > ................./////////////////////////////////////<<<<...................../ > ////////////////<<<<..............>////////<<................................... > │ > ................./////////////////////////////////////<<<<...................../ > ////////////////<<<<..............////////<<.................................... > │ > ................./////////////////////////////////////<<<<...................../ > ////////////////<<<<............................................................ > │ > ................./////////////////////////////////////<<<<.....................> > ////////////////<<.............................................................. > │ > ................./////////////////////////////////////<<<....................... > ................................................................................ > │ > ................./////////////////////////////////////<<<....................... > ................................................................................ > │ > ................./////////////////////////////////////<<<....................... > ................................................................................ > │ > ................./////////////////////////////////////<<<....................... > ................................................................................ > │ > .................>////////////////////////////////////<<........................ > ................................................................................ > │ > ..........................////////////////////////////<<........................ > ................................................................................ > │ > ................................................//////<......................... > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ..............................................;;;;;;;;;<........................ > ................................................................................ > │ > .........................;;;;;;;;;;;;;;;;;;;;;/////////<........................ > ................................................................................ > │ > ................;;;;;;;;;//////////////////////////////<........................ > ................................................................................ > │ > ................///////////////////////////////////////<........................ > ................................................................................ > │ > ................>//////////////////////////////////////<<....................... > ................................................................................ > │ > ................>//////////////////////////////////////<<....................... > ................................................................................ > │ > ................>//////////////////////////////////////<<....................... > ..;;;;;;;;;;;;;;<<<............................................................. > │ > ................>//////////////////////////////////////<<......................; > ;;//////////////<<<............................................................. > │ > .................//////////////////////////////////////<<....................../ > ////////////////<<<....................;;;;<<................................... > │ > .................//////////////////////////////////////<<....................../ > ////////////////<<<...............;;;;;////<<................................... > │ > .................//////////////////////////////////////<<......................> > ////////////////<<<...............>////////<<................................... > │ > .................>//////////////////////////////////////<......................> > ////////////////<<<................////////<<................................... > │ > .................>//////////////////////////////////////<......................> > /////////////////<<<...............////////<<................................... > │ > .................>//////////////////////////////////////<......................> > /////////////////<<<.............../////////.................................... > │ > .................>//////////////////////////////////////<....................... > /////////////////<<<............................................................ > │ > ..................//////////////////////////////////////<....................... > /////////////////<<............................................................. > │ > ..................//////////////////////////////////////<<...................... > ................................................................................ > │ > ..................//////////////////////////////////////<<...................... > ................................................................................ > │ > ..................//////////////////////////////////////<<...................... > ................................................................................ > │ > ..................>/////////////////////////////////////<<...................... > ................................................................................ > │ > ..................>/////////////////////////////////////<....................... > ................................................................................ > │ > ..................//////////////////////////////////////<....................... > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ......................................................<......................... > ................................................................................ > │ > .........................................;;;;;;;;;;;;;<......................... > ................................................................................ > │ > ...........................;;;;;;;;;;;;;;//////////////<........................ > ................................................................................ > │ > ...............;;;;;;;;;;;;;///////////////////////////<........................ > ................................................................................ > │ > ...............>///////////////////////////////////////<........................ > ................................................................................ > │ > ................///////////////////////////////////////<........................ > ................................................................................ > │ > ................///////////////////////////////////////<<....................... > ................................................................................ > │ > ................>///////////////////////////////////////<....................... > ....;;;;;;;;;;;;<<.............................................................. > │ > ................>///////////////////////////////////////<......................; > ;;;;////////////<<.............................................................. > │ > .................///////////////////////////////////////<....................../ > ////////////////<<<....................;;;<<.................................... > │ > .................///////////////////////////////////////<....................../ > /////////////////<<...............;;;;;////<<................................... > │ > .................>//////////////////////////////////////<<.....................> > /////////////////<<...............>////////<<................................... > │ > .................>///////////////////////////////////////<.....................> > /////////////////<<................////////<<................................... > │ > ..................///////////////////////////////////////<...................... > /////////////////<<................////////<<................................... > │ > ..................///////////////////////////////////////<...................... > /////////////////<<<...............>////////.................................... > │ > ..................>//////////////////////////////////////<...................... > >/////////////////<<............................................................ > │ > ..................>///////////////////////////////////////<..................... > >/////////////////<............................................................. > │ > ...................///////////////////////////////////////<..................... > ................................................................................ > │ > ...................///////////////////////////////////////<..................... > ................................................................................ > │ > ...................>//////////////////////////////////////<..................... > ................................................................................ > │ > ...................>//////////////////////////////////////<..................... > ................................................................................ > │ > ...................>///////////////////////////////////////<.................... > ................................................................................ > │ > ....................////////////////////////////................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > .................................................;;;;;<......................... > ................................................................................ > │ > .......................................;;;;;;;;;;/////<......................... > ................................................................................ > │ > .............................;;;;;;;;;;///////////////<<........................ > ................................................................................ > │ > ...................;;;;;;;;;;//////////////////////////<........................ > ................................................................................ > │ > ...............;;;;////////////////////////////////////<........................ > ................................................................................ > │ > ...............>///////////////////////////////////////<<....................... > ................................................................................ > │ > ...............>////////////////////////////////////////<....................... > ................<............................................................... > │ > ................////////////////////////////////////////<....................... > .....;;;;;;;;;;;<............................................................... > │ > ................>///////////////////////////////////////<<....................;; > ;;;;;///////////<<.............................................................. > │ > .................////////////////////////////////////////<...................../ > ////////////////<<.....................;;;<<.................................... > │ > .................>///////////////////////////////////////<...................../ > /////////////////<................;;;;;////<.................................... > │ > .................>///////////////////////////////////////<<....................> > /////////////////<<...............>////////<<................................... > │ > ..................////////////////////////////////////////<..................... > /////////////////<<................////////<<................................... > │ > ..................>///////////////////////////////////////<..................... > //////////////////<................>////////<................................... > │ > ..................>///////////////////////////////////////<<.................... > >/////////////////<<................//////...................................... > │ > ...................////////////////////////////////////////<.................... > .//////////////////<............................................................ > │ > ...................>///////////////////////////////////////<.................... > .>///////////////............................................................... > │ > ...................>///////////////////////////////////////<<................... > .///............................................................................ > │ > ....................////////////////////////////////////////<................... > ................................................................................ > │ > ....................>///////////////////////////////////////<................... > ................................................................................ > │ > ....................>///////////////////////////////////////<<.................. > ................................................................................ > │ > ...................../////////////////////////////////////...................... > ................................................................................ > │ > .....................>/////////////////////..................................... > ................................................................................ > │ > ......................///////................................................... > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > .....................................................<.......................... > ................................................................................ > │ > ..............................................;;;;;;;<<......................... > ................................................................................ > │ > .....................................;;;;;;;;;////////<......................... > ................................................................................ > │ > .............................;;;;;;;;;////////////////<<........................ > ................................................................................ > │ > ......................;;;;;;;//////////////////////////<........................ > ................................................................................ > │ > ...............;;;;;;;/////////////////////////////////<........................ > ................................................................................ > │ > .............../////////////////////////////////////////<....................... > ................................................................................ > │ > ...............>////////////////////////////////////////<....................... > .............;;;<............................................................... > │ > ................/////////////////////////////////////////<...................... > .....;;;;;;;;///<............................................................... > │ > ................>////////////////////////////////////////<....................;; > ;;;;;///////////<<.............................................................. > │ > ................./////////////////////////////////////////<...................>/ > /////////////////<.....................;;;<<.................................... > │ > .................>////////////////////////////////////////<..................../ > /////////////////<<...............;;;;;////<.................................... > │ > ................../////////////////////////////////////////<...................> > //////////////////<...............>////////<<................................... > │ > ..................>////////////////////////////////////////<.................... > //////////////////<................/////////<................................... > │ > ..................>////////////////////////////////////////<<................... > >//////////////////<...............>////////<................................... > │ > ...................>////////////////////////////////////////<................... > .//////////////////<................/////=...................................... > │ > ...................>////////////////////////////////////////<<.................. > .>/////////////////<<........................................................... > │ > ....................>////////////////////////////////////////<.................. > ../////////////................................................................. > │ > ....................>////////////////////////////////////////<<................. > ..>///.......................................................................... > │ > ...................../////////////////////////////////////////<................. > ................................................................................ > │ > .....................>////////////////////////////////////////<................. > ................................................................................ > │ > ......................///////////////////////////////////////................... > ................................................................................ > │ > ......................>/////////////////////////////............................ > ................................................................................ > │ > .......................////////////////////..................................... > ................................................................................ > │ > .......................>//////////.............................................. > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ..................................................;;;<.......................... > ................................................................................ > │ > ............................................;;;;;;///<.......................... > ................................................................................ > │ > .....................................;;;;;;;/////////<<......................... > ................................................................................ > │ > ..............................;;;;;;;/////////////////<<........................ > ................................................................................ > │ > .......................;;;;;;;/////////////////////////<........................ > ................................................................................ > │ > .................;;;;;;;///////////////////////////////<<....................... > ................................................................................ > │ > ..............;;;///////////////////////////////////////<....................... > ................................................................................ > │ > ...............//////////////////////////////////////////<...................... > ............;;;<................................................................ > │ > ...............>/////////////////////////////////////////<<..................... > .....;;;;;;;////<............................................................... > │ > ................>/////////////////////////////////////////<....................; > ;;;;;///////////<<.............................................................. > │ > ................./////////////////////////////////////////<<..................;/ > /////////////////<.....................;;;<<.................................... > │ > .................>/////////////////////////////////////////<.................../ > /////////////////<<...............;;;;;////<.................................... > │ > ..................//////////////////////////////////////////<................... > //////////////////<<..............>////////<<................................... > │ > ..................>/////////////////////////////////////////<<.................. > >//////////////////<...............>////////<................................... > │ > ...................>/////////////////////////////////////////<.................. > .//////////////////<<...............////////<<.................................. > │ > ..................../////////////////////////////////////////<<................. > .>//////////////////<...............>////....................................... > │ > ....................>/////////////////////////////////////////<................. > ..///////////////////........................................................... > │ > ...................../////////////////////////////////////////<<................ > ..>////////////................................................................. > │ > .....................>/////////////////////////////////////////<................ > ...>////........................................................................ > │ > ......................>/////////////////////////////////////////<............... > ................................................................................ > │ > ......................./////////////////////////////////////////................ > ................................................................................ > │ > .......................>/////////////////////////////////....................... > ................................................................................ > │ > ........................//////////////////////////.............................. > ................................................................................ > │ > ........................>//////////////////..................................... > ................................................................................ > │ > .........................>//////////............................................ > ................................................................................ > │ > ..........................////.................................................. > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................;;;/;........................... > ................................................................................ > │ > ..........................................;;;;/;//////.......................... > ................................................................................ > │ > ....................................;;;;///////////////......................... > ................................................................................ > │ > ...............................;;/;;///////////////////<........................ > ................................................................................ > │ > .........................;;;;/;/////////////////////////........................ > ................................................................................ > │ > ...................;;;;//;///////////////////////////////....................... > ................................................................................ > │ > ..............;;/;;//////////////////////////////////////<...................... > ................................................................................ > │ > ..............>>//////////////////////////////////////////...................... > ...........;;;//................................................................ > │ > ...............>>//////////////////////////////////////////..................... > ......;;/////////............................................................... > │ > ................>///////////////////////////////////////////.................... > ;;;///////////////.............................................................. > │ > .................>//////////////////////////////////////////<.................;> > //////////////////<...................;;///<.................................... > │ > .................>>//////////////////////////////////////////..................> > ///////////////////...............;;;;//////.................................... > │ > ..................>>//////////////////////////////////////////.................. > >///////////////////...............>/////////................................... > │ > ...................>//////////////////////////////////////////<................. > >>///////////////////..............>>////////<.................................. > │ > ....................>//////////////////////////////////////////................. > .>>//////////////////...............>>////////.................................. > │ > ....................>>//////////////////////////////////////////................ > ..>///////////////////...............>///....................................... > │ > .....................>///////////////////////////////////////////............... > ...>////////////////............................................................ > │ > ......................>//////////////////////////////////////////<.............. > ...>>/////////.................................................................. > │ > ......................>>//////////////////////////////////////////.............. > ....>////....................................................................... > │ > .......................>>/////////////////////////////////////////.............. > ................................................................................ > │ > ........................>>//////////////////////////////////.................... > ................................................................................ > │ > .........................>////////////////////////////.......................... > ................................................................................ > │ > .........................>>//////////////////////............................... > ................................................................................ > │ > ..........................>>////////////////.................................... > ................................................................................ > │ > ...........................>///////////......................................... > ................................................................................ > │ > ............................>////............................................... > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ...................................................;............................ > ................................................................................ > │ > ..............................................;/;;///........................... > ................................................................................ > │ > .........................................;;;//////////.......................... > ................................................................................ > │ > ....................................;;;///////////////<......................... > ................................................................................ > │ > ...............................;;;/;///////////////////<........................ > ................................................................................ > │ > ..........................;;;/;/////////////////////////<....................... > ................................................................................ > │ > ......................;;/////////////////////////////////....................... > ................................................................................ > │ > .................;;;//////////////////////////////////////...................... > ................................................................................ > │ > ..............;>///////////////////////////////////////////..................... > ...........;;;;/................................................................ > │ > ...............>///////////////////////////////////////////<.................... > ......;;/////////............................................................... > │ > ................>///////////////////////////////////////////<................... > .;;;//////////////.............................................................. > │ > .................>///////////////////////////////////////////<................;> > ///////////////////...................;;///<.................................... > │ > .................>>///////////////////////////////////////////.................> > >///////////////////..............;;;;//////.................................... > │ > ..................>>///////////////////////////////////////////................. > >///////////////////<.............>>/////////................................... > │ > ...................>>///////////////////////////////////////////................ > .>///////////////////<.............>>/////////.................................. > │ > ....................>>///////////////////////////////////////////............... > .>>///////////////////..............>>////////.................................. > │ > .....................>///////////////////////////////////////////<.............. > ..>>///////////////////..............>////...................................... > │ > ......................>///////////////////////////////////////////<............. > ...>>//////////////............................................................. > │ > .......................>///////////////////////////////////////////............. > ....>>////////.................................................................. > │ > ........................>//////////////////////////////////////////............. > .....>////...................................................................... > │ > ........................>>/////////////////////////////////////................. > ................................................................................ > │ > .........................>>///////////////////////////////...................... > ................................................................................ > │ > ..........................>>//////////////////////////.......................... > ................................................................................ > │ > ...........................>>////////////////////............................... > ................................................................................ > │ > ............................>>///////////////................................... > ................................................................................ > │ > .............................>>/////////........................................ > ................................................................................ > │ > ..............................>/////............................................ > ................................................................................ > │ > .............................../................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................;;/<............................ > ................................................................................ > │ > ............................................;;//////<........................... > ................................................................................ > │ > ........................................;;;//////////<.......................... > ................................................................................ > │ > ....................................;/;;//////////////<......................... > ................................................................................ > │ > ................................;;/////////////////////<........................ > ................................................................................ > │ > ...........................;;//;////////////////////////........................ > ................................................................................ > │ > .......................;;;///////////////////////////////<...................... > ................................................................................ > │ > ...................;/;////////////////////////////////////<..................... > ..............;................................................................. > │ > ..............;;;;/////////////////////////////////////////<.................... > ..........;/////................................................................ > │ > ..............;>////////////////////////////////////////////<................... > ......;;;;///////............................................................... > │ > ................>////////////////////////////////////////////<.................. > ..;///////////////.............................................................. > │ > .................>////////////////////////////////////////////.................; > ;//////////////////...................;;;//<.................................... > │ > ..................>////////////////////////////////////////////................> > >///////////////////..............;;;///////<................................... > │ > ...................>////////////////////////////////////////////<..............> > >>///////////////////.............>>/////////<.................................. > │ > ....................>////////////////////////////////////////////<.............. > >>>///////////////////.............>>/////////.................................. > │ > .....................>////////////////////////////////////////////<............. > .>>>///////////////////.............>>////////.................................. > │ > ......................>////////////////////////////////////////////<............ > ..>>>/////////////////...............>>///...................................... > │ > .......................>////////////////////////////////////////////............ > ...>>>////////////.............................................................. > │ > ........................>///////////////////////////////////////////............ > ....>>>///////.................................................................. > │ > .........................>>/////////////////////////////////////................ > .....>>////..................................................................... > │ > ..........................>/////////////////////////////////.................... > ................................................................................ > │ > ...........................>>////////////////////////////....................... > ................................................................................ > │ > ............................>>///////////////////////........................... > ................................................................................ > │ > .............................>////////////////////.............................. > ................................................................................ > │ > ..............................>>//////////////.................................. > ................................................................................ > │ > ...............................>>/////////...................................... > ................................................................................ > │ > ................................>>////.......................................... > ................................................................................ > │ > .................................>/............................................. > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ...............................................;;;/............................. > ................................................................................ > │ > ...........................................;;;//////............................ > ................................................................................ > │ > .......................................;;;///////////........................... > ................................................................................ > │ > ....................................;;////////////////.......................... > ................................................................................ > │ > ................................;;;////////////////////<........................ > ................................................................................ > │ > ............................;;/;////////////////////////<....................... > ................................................................................ > │ > .........................;;//////////////////////////////<...................... > ................................................................................ > │ > .....................;/////////////////////////////////////..................... > .............;;................................................................. > │ > .................;/;////////////////////////////////////////.................... > ..........;;////................................................................ > │ > ...............;/////////////////////////////////////////////................... > ......;;;////////............................................................... > │ > ...............>>/////////////////////////////////////////////.................. > ...;//////////////<............................................................. > │ > ................>>/////////////////////////////////////////////................; > ;///////////////////..................;;;//<.................................... > │ > ..................>>////////////////////////////////////////////<.............;; > >////////////////////..............;/////////................................... > │ > ...................>>////////////////////////////////////////////<............\> > >>////////////////////............;>//////////.................................. > │ > ....................>>////////////////////////////////////////////<............. > >>>////////////////////...........\>>//////////................................. > │ > .....................>>/////////////////////////////////////////////............ > .>>>////////////////////............>>>//////................................... > │ > .......................>/////////////////////////////////////////////........... > ..>>>////////////////................>>///...................................... > │ > ........................>////////////////////////////////////////////........... > ...>>>////////////.............................................................. > │ > .........................>>///////////////////////////////////////.............. > ....>>>>///////................................................................. > │ > ..........................>>///////////////////////////////////................. > .....\>>>///.................................................................... > │ > ...........................>>//////////////////////////////..................... > ................................................................................ > │ > ............................>>//////////////////////////........................ > ................................................................................ > │ > .............................>>//////////////////////........................... > ................................................................................ > │ > ...............................>//////////////////.............................. > ................................................................................ > │ > ................................>>/////////////................................. > ................................................................................ > │ > .................................>>/////////.................................... > ................................................................................ > │ > ..................................>>/////....................................... > ................................................................................ > │ > ...................................>//.......................................... > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > .............................................;;///.............................. > ................................................................................ > │ > ..........................................;;;//////<............................ > ................................................................................ > │ > .......................................;////////////<........................... > ................................................................................ > │ > ....................................;/////////////////.......................... > ................................................................................ > │ > ................................;;;////////////////////<........................ > ................................................................................ > │ > .............................;;;////////////////////////<....................... > ................................................................................ > │ > ..........................;///////////////////////////////...................... > ................................................................................ > │ > ......................;;///////////////////////////////////..................... > .............;/................................................................. > │ > ...................;;;//////////////////////////////////////<................... > ..........;;////................................................................ > │ > ................;;////////////////////////////////////////////.................. > ......;;;////////............................................................... > │ > ...............;>//////////////////////////////////////////////................. > ...;;//////////////......................<...................................... > │ > ................>>//////////////////////////////////////////////................ > ;///////////////////..................;;;//<.................................... > │ > .................>>>//////////////////////////////////////////////............;; > >////////////////////..............;;;///////................................... > │ > ..................>>>//////////////////////////////////////////////...........>> > >>////////////////////<..........;;;>/////////.................................. > │ > ...................>>>//////////////////////////////////////////////...........> > >>>/////////////////////..........>>>>/////////................................. > │ > .....................>>>/////////////////////////////////////////////<.......... > >>>>>//////////////////............>>>>//////................................... > │ > ......................>>>////////////////////////////////////////////........... > .\>>>>///////////////................>>>//...................................... > │ > ........................>>>////////////////////////////////////////............. > ...>>>>///////////.............................................................. > │ > .........................>>>////////////////////////////////////................ > ....>>>>>//////................................................................. > │ > ..........................>>>////////////////////////////////................... > ......>>>>//.................................................................... > │ > ............................>>>////////////////////////////..................... > ................................................................................ > │ > .............................>>>////////////////////////........................ > ................................................................................ > │ > ..............................>>>////////////////////........................... > ................................................................................ > │ > ................................>>>////////////////............................. > ................................................................................ > │ > .................................>>>////////////................................ > ................................................................................ > │ > ...................................>>>////////.................................. > ................................................................................ > │ > ....................................>>>////..................................... > ................................................................................ > │ > ......................................>//....................................... > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ...............................................;<............................... > ................................................................................ > │ > ............................................;;;//<.............................. > ................................................................................ > │ > ..........................................;;///////<............................ > ................................................................................ > │ > .......................................;////////////<........................... > ................................................................................ > │ > ....................................;/////////////////.......................... > ................................................................................ > │ > .................................;/////////////////////<........................ > ................................................................................ > │ > ..............................;;/////////////////////////....................... > ................................................................................ > │ > ...........................;;/////////////////////////////...................... > ................................................................................ > │ > ........................;;//////////////////////////////////.................... > ............;;<................................................................. > │ > .....................;;//////////////////////////////////////................... > .........;//////................................................................ > │ > ..................;///////////////////////////////////////////<................. > .......;//////////.............................................................. > │ > ................;///////////////////////////////////////////////................ > ....;;/////////////......................;...................................... > │ > ................>>>//////////////////////////////////////////////<.............. > .;;/////////////////<.................;;///<.................................... > │ > ................>>>>///////////////////////////////////////////////............; > >/////////////////////.............;;////////................................... > │ > ................;>>>>>//////////////////////////////////////////////<........;;> > >>/////////////////////<.........;;;>/////////<................................. > │ > ..................>>>>>//////////////////////////////////////////////<........>> > >>>>////////////////////..........>>>>/////////................................. > │ > ...................>>>>>//////////////////////////////////////////////.......... > >>>>>//////////////////............>>>>>/////................................... > │ > .....................>>>>>//////////////////////////////////////////............ > .>>>>>>/////////////.................>>>>/...................................... > │ > ......................>>>>>>/////////////////////////////////////............... > ...>>>>>//////////.............................................................. > │ > ........................>>>>>//////////////////////////////////................. > ....>>>>>>/////................................................................. > │ > ..........................>>>>>//////////////////////////////................... > ......>>>>>//................................................................... > │ > ...........................>>>>>///////////////////////////..................... > ................................................................................ > │ > .............................>>>>>///////////////////////....................... > ................................................................................ > │ > ..............................>>>>>///////////////////.......................... > ................................................................................ > │ > ................................>>>>>///////////////............................ > ................................................................................ > │ > .................................>>>>>>///////////.............................. > ................................................................................ > │ > ...................................=>>>>///////................................. > ................................................................................ > │ > ......................................>>>>///................................... > ................................................................................ > │ > ........................................=>/..................................... > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ..............................................;/................................ > ................................................................................ > │ > ............................................;////............................... > ................................................................................ > │ > .........................................;;///////<............................. > ................................................................................ > │ > ......................................;;////////////............................ > ................................................................................ > │ > ....................................;;///////////////<.......................... > ................................................................................ > │ > .................................;/////////////////////<........................ > ................................................................................ > │ > ..............................;;;////////////////////////....................... > ................................................................................ > │ > ............................;/////////////////////////////<..................... > ................................................................................ > │ > .........................;;/////////////////////////////////.................... > ...........;;/.................................................................. > │ > .......................;;/////////////////////////////////////.................. > .........;;/////................................................................ > │ > ....................;;/////////////////////////////////////////................. > .......;//////////.............................................................. > │ > ..................;;/////////////////////////////////////////////............... > ....;;/////////////......................;...................................... > │ > ................;;>///////////////////////////////////////////////<............. > ..;;/////////////////.................;;///<.................................... > │ > ................;>>>////////////////////////////////////////////////...........; > ;/////////////////////.............\;////////<.................................. > │ > ................>>>>>>///////////////////////////////////////////////<.......;;; > >>>/////////////////////.........;;;>//////////................................. > │ > ................>>>>>>>>//////////////////////////////////////////////.......>>> > >>>>////////////////////.........>>>>>>////////................................. > │ > ..................>>>>>>>>//////////////////////////////////////////...........> > >>>>>>////////////////.............>>>>>/////................................... > │ > ...................\>>>>>>>///////////////////////////////////////.............. > .>>>>>>>////////////.................>>>>//..................................... > │ > .....................>>>>>>>>///////////////////////////////////................ > ..>>>>>>>/////////.............................................................. > │ > .......................>>>>>>>>///////////////////////////////.................. > ....>>>>>>>/////................................................................ > │ > .........................>>>>>>>/////////////////////////////................... > ......>>>>>>//.................................................................. > │ > ..........................>>>>>>>>/////////////////////////..................... > ................................................................................ > │ > ............................>>>>>>>>/////////////////////....................... > ................................................................................ > │ > ..............................>>>>>>>>/////////////////......................... > ................................................................................ > │ > ................................>>>>>>>//////////////........................... > ................................................................................ > │ > .................................>>>>>>>>//////////............................. > ................................................................................ > │ > ....................................>>>>>>>//////............................... > ................................................................................ > │ > ........................................>>>>///................................. > ................................................................................ > │ > ...........................................>>/.................................. > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > .............................................;/................................. > ................................................................................ > │ > ...........................................;;////............................... > ................................................................................ > │ > ........................................;;////////<............................. > ................................................................................ > │ > ......................................;/////////////............................ > ................................................................................ > │ > ....................................;/////////////////.......................... > ................................................................................ > │ > .................................;;////////////////////<........................ > ................................................................................ > │ > ...............................;/////////////////////////....................... > ................................................................................ > │ > .............................;/////////////////////////////..................... > ................................................................................ > │ > ..........................;;////////////////////////////////<................... > ...........;;/.................................................................. > │ > ........................;;////////////////////////////////////.................. > ........;;//////................................................................ > │ > ......................;/////////////////////////////////////////................ > ......;;//////////.............................................................. > │ > ...................;;////////////////////////////////////////////<.............. > ....;;;////////////<....................;;...................................... > │ > .................;;////////////////////////////////////////////////<............ > ..;;/////////////////................;;;////.................................... > │ > ................;;>>>////////////////////////////////////////////////........... > ;;/////////////////////............\;;///////<.................................. > │ > ................;>>>>>>///////////////////////////////////////////////.......;;; > ;>>/////////////////////.........;;;>//////////................................. > │ > ...............;>>>>>>>>/////////////////////////////////////////////........;>> > >>>>>///////////////////.........;>>>>>////////................................. > │ > ................>>>>>>>>>>/////////////////////////////////////////...........>> > >>>>>>>///////////////.............>>>>>>////................................... > │ > ..................>>>>>>>>>>>////////////////////////////////////............... > >>>>>>>>>///////////................\>>>>>/..................................... > │ > ....................>>>>>>>>>>//////////////////////////////////................ > ..>>>>>>>>////////.............................................................. > │ > ......................>>>>>>>>>>//////////////////////////////.................. > ....>>>>>>>>////................................................................ > │ > ........................>>>>>>>>>>///////////////////////////................... > ......>>>>>>>//................................................................. > │ > ..........................>>>>>>>>>>///////////////////////..................... > ................................................................................ > │ > ............................>>>>>>>>>>///////////////////....................... > ................................................................................ > │ > ..............................>>>>>>>>>>////////////////........................ > ................................................................................ > │ > ................................>>>>>>>>>>////////////.......................... > ................................................................................ > │ > ..................................>>>>>>>>>>////////............................ > ................................................................................ > │ > ....................................=>>>>>>>>>/////............................. > ................................................................................ > │ > ..........................................>>>>>//............................... > ................................................................................ > │ > .............................................../................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ............................................;;.................................. > ................................................................................ > │ > ..........................................;;////................................ > ................................................................................ > │ > ........................................;;////////.............................. > ................................................................................ > │ > ......................................;////////////<............................ > ................................................................................ > │ > ....................................;////////////////<.......................... > ................................................................................ > │ > ..................................;////////////////////<........................ > ................................................................................ > │ > ................................;////////////////////////<...................... > ................................................................................ > │ > ..............................;////////////////////////////..................... > ................................................................................ > │ > ............................;////////////////////////////////................... > ..........;;//.................................................................. > │ > ..........................;////////////////////////////////////................. > ........;;//////................................................................ > │ > ........................;///////////////////////////////////////<............... > .....;;;//////////.............................................................. > │ > ......................;///////////////////////////////////////////<............. > ...\;;//////////////....................;<...................................... > │ > ....................;;//////////////////////////////////////////////<........... > ..;;;/////////////////...............;;;///<.................................... > │ > ..................;;>////////////////////////////////////////////////........... > ;;;/////////////////////...........;;;///////<.................................. > │ > ................;;>>>>>//////////////////////////////////////////////.........;; > ;;>/////////////////////..........;;;//////////................................. > │ > ...............;;>>>>>>>>//////////////////////////////////////////.........\;;> > >>>>>//////////////////..........;;>>>>////////................................. > │ > ..............;>>>>>>>>>>>>///////////////////////////////////////...........>>> > >>>>>>>///////////////.............>>>>>>////................................... > │ > ................>>>>>>>>>>>>>////////////////////////////////////............... > >>>>>>>>>>//////////.................>>>>>/..................................... > │ > ..................>>>>>>>>>>>>>>///////////////////////////////................. > .\>>>>>>>>>////////...................=......................................... > │ > ....................\>>>>>>>>>>>>>////////////////////////////.................. > ....>>>>>>>>>////............................................................... > │ > .......................>>>>>>>>>>>>>/////////////////////////................... > ......>>>>>>>>>/................................................................ > │ > .........................>>>>>>>>>>>>>/////////////////////..................... > ................................................................................ > │ > ...........................>>>>>>>>>>>>>//////////////////...................... > ................................................................................ > │ > .............................>>>>>>>>>>>>>///////////////....................... > ................................................................................ > │ > ...............................>>>>>>>>>>>>>>//////////......................... > ................................................................................ > │ > ..................................>>>>>>>>>>>>>///////.......................... > ................................................................................ > │ > ....................................=>>>>>>>>>>>>////........................... > ................................................................................ > │ > ............................................=>>>>>/............................. > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ...........................................;/<.................................. > ................................................................................ > │ > .........................................;;////<................................ > ................................................................................ > │ > .......................................;;////////<.............................. > ................................................................................ > │ > .....................................;;////////////<............................ > ................................................................................ > │ > ...................................;;;///////////////<.......................... > ................................................................................ > │ > .................................;;////////////////////<........................ > ................................................................................ > │ > ................................;;///////////////////////<...................... > ................................................................................ > │ > ..............................;;///////////////////////////<.................... > ................................................................................ > │ > ............................;;///////////////////////////////<.................. > ..........;;//.................................................................. > │ > ..........................;;;//////////////////////////////////................. > .......;;;//////................................................................ > │ > .........................;;//////////////////////////////////////............... > .....;;;//////////.............................................................. > │ > .......................;;//////////////////////////////////////////<............ > ...;;;;/////////////....................;/...................................... > │ > .....................;;//////////////////////////////////////////////........... > .;;;;/////////////////...............;;;////.................................... > │ > ...................;;;///////////////////////////////////////////////........... > ;;;;////////////////////...........;;;////////.................................. > │ > ..................;;>>>>////////////////////////////////////////////..........;; > ;;;>////////////////////..........;;;//////////................................. > │ > ................;;>>>>>>>>////////////////////////////////////////...........;;; > >>>>>>/////////////////..........;;>>>>///////.................................. > │ > ..............;;>>>>>>>>>>>>/////////////////////////////////////...........;>>> > >>>>>>>>/////////////.............>>>>>>>>///................................... > │ > ..............>>>>>>>>>>>>>>>>>/////////////////////////////////...............> > >>>>>>>>>>//////////................\>>>>>>/.................................... > │ > ................\>>>>>>>>>>>>>>>>//////////////////////////////................. > .>>>>>>>>>>>///////....................=........................................ > │ > ...................>>>>>>>>>>>>>>>>///////////////////////////.................. > ...>>>>>>>>>>>>///.............................................................. > │ > .....................\>>>>>>>>>>>>>>>>///////////////////////................... > ......>>>>>>>>>>................................................................ > │ > ........................>>>>>>>>>>>>>>>>////////////////////.................... > ................................................................................ > │ > ..........................>>>>>>>>>>>>>>>>/////////////////..................... > ................................................................................ > │ > .............................>>>>>>>>>>>>>>>>/////////////...................... > ................................................................................ > │ > ...............................>>>>>>>>>>>>>>>>/////////........................ > ................................................................................ > │ > ..................................>>>>>>>>>>>>>>>>/////......................... > ................................................................................ > │ > ....................................=>>>>>>>>>>>>>>>//.......................... > ................................................................................ > │ > .................................................>>>>........................... > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ..........................................;//................................... > ................................................................................ > │ > ........................................;;/////................................. > ................................................................................ > │ > ......................................;;/////////............................... > ................................................................................ > │ > ....................................;;;////////////............................. > ................................................................................ > │ > ..................................;;;////////////////........................... > ................................................................................ > │ > ................................;;;;///////////////////<........................ > ................................................................................ > │ > ..............................;;;;///////////////////////<...................... > ................................................................................ > │ > .............................;;;;//////////////////////////<.................... > ................................................................................ > │ > ...........................;;;;///////////////////////////////.................. > .........;;;//.................................................................. > │ > ..........................;;;;//////////////////////////////////................ > ......;;;;//////................................................................ > │ > ........................;;;;//////////////////////////////////////.............. > ....;;;;;/////////.............................................................. > │ > ......................;;;;;/////////////////////////////////////////............ > ...;;;;/////////////<..................<;<...................................... > │ > .....................;;;;///////////////////////////////////////////............ > .;;;;;/////////////////..............;;;////.................................... > │ > ...................;;;;;////////////////////////////////////////////............ > ;;;;////////////////////...........;;;;///////.................................. > │ > ..................;;;;;>///////////////////////////////////////////...........;; > ;;;>////////////////////..........;;;//////////................................. > │ > ................;;;;;>>>>>////////////////////////////////////////...........;;; > ;;>>>>/////////////////..........;;;>>>>//////.................................. > │ > ...............;;;>>>>>>>>>>>////////////////////////////////////...........;;>> > >>>>>>>>>/////////////............>>>>>>>>///................................... > │ > .............;;;>>>>>>>>>>>>>>>>////////////////////////////////..............>> > >>>>>>>>>>>/////////................>>>>>>>/.................................... > │ > ..............\>>>>>>>>>>>>>>>>>>>/////////////////////////////................. > .>>>>>>>>>>>>>/////....................>........................................ > │ > .................>>>>>>>>>>>>>>>>>>>>/////////////////////////.................. > ...>>>>>>>>>>>>>//.............................................................. > │ > ....................>>>>>>>>>>>>>>>>>>>>/////////////////////................... > ......>>>>>>>>>>>............................................................... > │ > .......................>>>>>>>>>>>>>>>>>>>//////////////////.................... > ................................................................................ > │ > ..........................>>>>>>>>>>>>>>>>>>>//////////////..................... > ................................................................................ > │ > ............................>>>>>>>>>>>>>>>>>>>>///////////..................... > ................................................................................ > │ > ...............................>>>>>>>>>>>>>>>>>>>////////...................... > ................................................................................ > │ > ..................................>>>>>>>>>>>>>>>>>>>////....................... > ................................................................................ > │ > .....................................>>>>>>>>>>>>>>>>>>/........................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > .........................................;;/.................................... > ................................................................................ > │ > .......................................;;/////<................................. > ................................................................................ > │ > .....................................;;;/////////............................... > ................................................................................ > │ > ...................................;;;;////////////............................. > ................................................................................ > │ > .................................;;;;;///////////////........................... > ................................................................................ > │ > ...............................;;;;;///////////////////<........................ > ................................................................................ > │ > .............................;;;;;;//////////////////////<...................... > ................................................................................ > │ > ...........................;;;;;;;//////////////////////////.................... > ................................................................................ > │ > ..........................;;;;;;//////////////////////////////.................. > .........;;//<.................................................................. > │ > .........................;;;;;;/////////////////////////////////................ > ......;;;;//////................................................................ > │ > .......................;;;;;;;////////////////////////////////////<............. > ...;;;;;;/////////<............................................................. > │ > ......................;;;;;;;///////////////////////////////////////............ > ..;;;;;//////////////..................;;....................................... > │ > .....................;;;;;;////////////////////////////////////////............. > .;;;;;;////////////////.............;;;;////.................................... > │ > ...................;;;;;;;////////////////////////////////////////.............. > ;;;;;;//////////////////...........;;;;///////<................................. > │ > ..................;;;;;;;/////////////////////////////////////////............\; > ;;;;///////////////////...........;;;;/////////................................. > │ > .................;;;;;;;>>>//////////////////////////////////////............;;; > ;;;>>>>///////////////...........;;;;>>>//////.................................. > │ > ...............;;;;;;>>>>>>>>>>/////////////////////////////////............;;;> > >>>>>>>>>////////////............\>>>>>>>>>//................................... > │ > ..............;;;;>>>>>>>>>>>>>>>///////////////////////////////.............>>> > >>>>>>>>>>>>/////////...............>>>>>>>>.................................... > │ > .............;;>>>>>>>>>>>>>>>>>>>>>///////////////////////////................. > >>>>>>>>>>>>>>>/////...................>........................................ > │ > ...............>>>>>>>>>>>>>>>>>>>>>>>>///////////////////////.................. > ...>>>>>>>>>>>>>>>/............................................................. > │ > ..................>>>>>>>>>>>>>>>>>>>>>>>>////////////////////.................. > ......>>>>>>>>>>>/.............................................................. > │ > .....................>>>>>>>>>>>>>>>>>>>>>>>>////////////////................... > ................................................................................ > │ > ........................>>>>>>>>>>>>>>>>>>>>>>>>////////////.................... > ................................................................................ > │ > ............................>>>>>>>>>>>>>>>>>>>>>>>/////////.................... > ................................................................................ > │ > ...............................>>>>>>>>>>>>>>>>>>>>>>>/////..................... > ................................................................................ > │ > ..................................>>>>>>>>>>>>>>>>>>>>>>//...................... > ................................................................................ > │ > .....................................>>>>>>>>>>>>>>>>>>>>/...................... > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ........................................;;/<.................................... > ................................................................................ > │ > ......................................;;;/////.................................. > ................................................................................ > │ > ....................................;;;;////////................................ > ................................................................................ > │ > ..................................;;;;;////////////............................. > ................................................................................ > │ > ................................;;;;;;///////////////........................... > ................................................................................ > │ > ..............................;;;;;;;//////////////////......................... > ................................................................................ > │ > ............................;;;;;;;;//////////////////////...................... > ................................................................................ > │ > ..........................;;;;;;;;//////////////////////////.................... > ................................................................................ > │ > .........................;;;;;;;;/////////////////////////////<................. > ........;;;//................................................................... > │ > ........................;;;;;;;;////////////////////////////////<............... > .....;;;;;//////................................................................ > │ > .......................;;;;;;;;////////////////////////////////////............. > ..<;;;;;;/////////<............................................................. > │ > .....................\;;;;;;;;/////////////////////////////////////............. > ..;;;;;;/////////////..................;;<...................................... > │ > ....................;;;;;;;;;/////////////////////////////////////.............. > \;;;;;;/////////////////............;;;;////.................................... > │ > ...................;;;;;;;;;//////////////////////////////////////.............. > ;;;;;;/////////////////............;;;;////////................................. > │ > ..................;;;;;;;;;//////////////////////////////////////.............\; > ;;;;;//////////////////...........;;;;/////////................................. > │ > .................;;;;;;;;;;>/////////////////////////////////////............\;; > ;;;;;>>///////////////...........;;;;;>>>/////.................................. > │ > ................;;;;;;;;>>>>>>>>////////////////////////////////............\;;; > ;>>>>>>>>>////////////...........;>>>>>>>>>//................................... > │ > ...............;;;;;;>>>>>>>>>>>>>>/////////////////////////////............;>>> > >>>>>>>>>>>>>////////...............>>>>>>>>/................................... > │ > ..............;;;;>>>>>>>>>>>>>>>>>>>>/////////////////////////................> > >>>>>>>>>>>>>>>>////...................=>....................................... > │ > .............;>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////////////................. > ..\>>>>>>>>>>>>>>>>............................................................. > │ > ................>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////////.................. > ......>>>>>>>>>=>............................................................... > │ > ....................>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////.................. > ................................................................................ > │ > .......................>>>>>>>>>>>>>>>>>>>>>>>>>>>///////////................... > ................................................................................ > │ > ...........................>>>>>>>>>>>>>>>>>>>>>>>>>>>///////................... > ................................................................................ > │ > ..............................>>>>>>>>>>>>>>>>>>>>>>>>>>>///.................... > ................................................................................ > │ > ..................................>>>>>>>>>>>>>>>>>>>>>>>>>/.................... > ................................................................................ > │ > ......................................>>>>>=>=>>................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > .......................................;;//..................................... > ................................................................................ > │ > .....................................;;;/////<.................................. > ................................................................................ > │ > ...................................;;;;/////////................................ > ................................................................................ > │ > .................................;;;;;;///////////<............................. > ................................................................................ > │ > ...............................;;;;;;;///////////////........................... > ................................................................................ > │ > .............................;;;;;;;;//////////////////......................... > ................................................................................ > │ > ...........................;;;;;;;;;//////////////////////...................... > ................................................................................ > │ > .........................;;;;;;;;;;/////////////////////////.................... > ................................................................................ > │ > ........................;;;;;;;;;;;///////////////////////////<................. > ........;;;//................................................................... > │ > .......................;;;;;;;;;;;///////////////////////////////............... > .....;;;;;//////................................................................ > │ > ......................;;;;;;;;;;;/////////////////////////////////.............. > ..;;;;;;;/////////<............................................................. > │ > .....................;;;;;;;;;;;//////////////////////////////////.............. > .;;;;;;;/////////////..................;;<...................................... > │ > ....................;;;;;;;;;;;//////////////////////////////////............... > ;;;;;;;;///////////////.............;;;;////<................................... > │ > ...................;;;;;;;;;;;;//////////////////////////////////..............; > ;;;;;;;////////////////............;;;;////////................................. > │ > ..................;;;;;;;;;;;;///////////////////////////////////..............; > ;;;;;;/////////////////...........;;;;;////////................................. > │ > .................;;;;;;;;;;;;///////////////////////////////////..............;; > ;;;;;;>>//////////////...........;;;;;>>>/////.................................. > │ > ................;;;;;;;;;;;;>>>>>///////////////////////////////.............;;; > ;;>>>>>>>>>///////////...........;>>>>>>>>>>//.................................. > │ > ...............;;;;;;;;;>>>>>>>>>>>>////////////////////////////............\;;> > >>>>>>>>>>>>>>///////...............>>>>>>>>>................................... > │ > ..............;;;;;;;>>>>>>>>>>>>>>>>>>>///////////////////////...............\> > >>>>>>>>>>>>>>>>>>///..................>=....................................... > │ > .............;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>////////////////////................. > ..>>>>>>>>>>>>>>>>>>............................................................ > │ > .............>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////////////////................. > ......>>>>>>>>>>=............................................................... > │ > .................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////////.................. > ................................................................................ > │ > ......................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////.................. > ................................................................................ > │ > ..........................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////.................. > ................................................................................ > │ > ..............................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//.................. > ................................................................................ > │ > ..................................>>>>>>>>>>>>>>>>>>>>>>>>>>>................... > ................................................................................ > │ > ......................................>>>==..................................... > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > .......................................;;/<..................................... > ................................................................................ > │ > ....................................<;;;/////................................... > ................................................................................ > │ > ..................................;;;;;////////<................................ > ................................................................................ > │ > ................................;;;;;;;///////////.............................. > ................................................................................ > │ > ..............................;;;;;;;;//////////////<........................... > ................................................................................ > │ > ............................;;;;;;;;;;/////////////////......................... > ................................................................................ > │ > ..........................;;;;;;;;;;;////////////////////<...................... > ................................................................................ > │ > ........................;;;;;;;;;;;;////////////////////////.................... > ................................................................................ > │ > .......................;;;;;;;;;;;;;///////////////////////////................. > ........;;///................................................................... > │ > ......................;;;;;;;;;;;;;//////////////////////////////............... > .....;;;;;//////................................................................ > │ > .....................;;;;;;;;;;;;;;//////////////////////////////............... > ..;;;;;;;//////////............................................................. > │ > ....................;;;;;;;;;;;;;;///////////////////////////////............... > \;;;;;;;;////////////<.................;;....................................... > │ > ...................\;;;;;;;;;;;;;///////////////////////////////................ > ;;;;;;;;///////////////............<;;;;////<................................... > │ > ...................;;;;;;;;;;;;;;///////////////////////////////...............; > ;;;;;;;;///////////////...........\;;;;////////................................. > │ > ..................;;;;;;;;;;;;;;////////////////////////////////..............\; > ;;;;;;;///////////////............;;;;;////////................................. > │ > .................;;;;;;;;;;;;;;;////////////////////////////////..............;; > ;;;;;;;>//////////////...........\;;;;;>>>////.................................. > │ > ................;;;;;;;;;;;;;;;>>>//////////////////////////////.............;;; > ;;;;>>>>>>>>//////////...........;;>>>>>>>>>>/.................................. > │ > ................;;;;;;;;;;;;>>>>>>>>>>//////////////////////////.............;;; > >>>>>>>>>>>>>>>>/////..............\>>>>>>>>/................................... > │ > ...............;;;;;;;;;>>>>>>>>>>>>>>>>>>//////////////////////.............\>> > >>>>>>>>>>>>>>>>>>>//..................\=....................................... > │ > ..............;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>//////////////////................ > .\>>>>>>>>>>>>>>>>>>/........................................................... > │ > .............;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////////////................. > ......>>>>>>>>>>................................................................ > │ > ...............>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////................. > ................................................................................ > │ > ...................\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////................. > ................................................................................ > │ > ........................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//................. > ................................................................................ > │ > .............................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/................. > ................................................................................ > │ > ..................................>>>>>>>>>>>>>>>>>>>>==........................ > ................................................................................ > │ > .......................................>==...................................... > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ......................................;;//...................................... > ................................................................................ > │ > ....................................;;;;////.................................... > ................................................................................ > │ > ..................................;;;;;////////................................. > ................................................................................ > │ > ...............................<;;;;;;;///////////.............................. > ................................................................................ > │ > .............................;;;;;;;;;//////////////............................ > ................................................................................ > │ > ...........................;;;;;;;;;;;/////////////////......................... > ................................................................................ > │ > .........................;;;;;;;;;;;;;///////////////////<...................... > ................................................................................ > │ > .......................;;;;;;;;;;;;;;///////////////////////.................... > ................................................................................ > │ > .....................\;;;;;;;;;;;;;;;//////////////////////////................. > .......<;;//<................................................................... > │ > .....................;;;;;;;;;;;;;;;;///////////////////////////................ > ....<;;;;;//////................................................................ > │ > ....................;;;;;;;;;;;;;;;;////////////////////////////................ > ..;;;;;;;;/////////............................................................. > │ > ....................;;;;;;;;;;;;;;;;////////////////////////////................ > ;;;;;;;;;/////////////.................;/....................................... > │ > ...................;;;;;;;;;;;;;;;;/////////////////////////////...............; > ;;;;;;;;;/////////////.............<;;;;////<................................... > │ > ..................;;;;;;;;;;;;;;;;;/////////////////////////////...............; > ;;;;;;;;//////////////............\;;;;;//////.................................. > │ > ..................;;;;;;;;;;;;;;;;;/////////////////////////////..............\; > ;;;;;;;;//////////////............;;;;;///////.................................. > │ > .................;;;;;;;;;;;;;;;;;//////////////////////////////..............;; > ;;;;;;;;>/////////////............;;;;;>>>////.................................. > │ > .................;;;;;;;;;;;;;;;;;>/////////////////////////////..............;; > ;;;;;;>>>>>>>/////////...........;;;>>>>>>>>>/.................................. > │ > ................;;;;;;;;;;;;;;;;>>>>>>>/////////////////////////.............;;; > ;;>>>>>>>>>>>>>>>/////.............\>>>>>>>>>=.................................. > │ > ...............;;;;;;;;;;;;;>>>>>>>>>>>>>>>/////////////////////.............;>> > >>>>>>>>>>>>>>>>>>>>>/..................>....................................... > │ > ...............;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>////////////////................ > .>>>>>>>>>>>>>>>>>>>/........................................................... > │ > ..............;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////////................ > ......>>>>>>>>>>................................................................ > │ > ..............;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////////................ > ................................................................................ > │ > .................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>////................ > ................................................................................ > │ > ......................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>................ > ................................................................................ > │ > ............................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.................. > ................................................................................ > │ > ..................................>>>>>>>>>>>>>>>>>>............................ > ................................................................................ > │ > .......................................>=....................................... > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > .....................................<;;/<...................................... > ................................................................................ > │ > ...................................;;;;;///<.................................... > ................................................................................ > │ > .................................;;;;;;///////<................................. > ................................................................................ > │ > ...............................;;;;;;;;//////////<.............................. > ................................................................................ > │ > ............................<;;;;;;;;;;/////////////............................ > ................................................................................ > │ > ..........................<;;;;;;;;;;;;///////////////<......................... > ................................................................................ > │ > ........................;;;;;;;;;;;;;;;//////////////////<...................... > ................................................................................ > │ > ......................;;;;;;;;;;;;;;;;//////////////////////.................... > ................................................................................ > │ > ....................;;;;;;;;;;;;;;;;;;////////////////////////.................. > .......;;;//.................................................................... > │ > ....................;;;;;;;;;;;;;;;;;;/////////////////////////................. > ....;;;;;;//////................................................................ > │ > ...................;;;;;;;;;;;;;;;;;;;/////////////////////////................. > .<;;;;;;;;////////<............................................................. > │ > ...................;;;;;;;;;;;;;;;;;;;/////////////////////////................; > ;;;;;;;;;;////////////.................;/....................................... > │ > ..................\;;;;;;;;;;;;;;;;;;//////////////////////////................; > ;;;;;;;;;/////////////.............<;;;;////<................................... > │ > ..................;;;;;;;;;;;;;;;;;;;//////////////////////////................; > ;;;;;;;;;/////////////............;;;;;;//////.................................. > │ > ..................;;;;;;;;;;;;;;;;;;;///////////////////////////..............;; > ;;;;;;;;;/////////////............;;;;;;//////.................................. > │ > .................;;;;;;;;;;;;;;;;;;;;///////////////////////////..............;; > ;;;;;;;;;>////////////............;;;;;;>>////.................................. > │ > .................;;;;;;;;;;;;;;;;;;;;///////////////////////////..............;; > ;;;;;;;;>>>>/>////////............;;;>>>>>>>>>.................................. > │ > ................;;;;;;;;;;;;;;;;;;;;>>>>>///////////////////////.............\;; > ;;;>>>>>>>>>>>>>/>////.............>>>>>>>>>=................................... > │ > ................;;;;;;;;;;;;;;;;>>>>>>>>>>>>>>//////////////////.............;;; > >>>>>>>>>>>>>>>>>>>>>>..................=....................................... > │ > ...............;;;;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>//////////////................ > >>>>>>>>>>>>>>>>>>>>>........................................................... > │ > ...............;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>//////////............... > .....\>>>>>>>>=................................................................. > │ > ..............;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/////............... > ................................................................................ > │ > ..............;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>/............... > ................................................................................ > │ > ....................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>............... > ................................................................................ > │ > ..........................\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>...................... > ................................................................................ > │ > .................................>>>>>>>>>>>>>>>>............................... > ................................................................................ > │ > ........................................=....................................... > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > .....................................;;//....................................... > ................................................................................ > │ > ...................................;;;;////<.................................... > ................................................................................ > │ > ................................<;;;;;;///////.................................. > ................................................................................ > │ > ..............................<;;;;;;;;/////////<............................... > ................................................................................ > │ > ............................;;;;;;;;;;;////////////<............................ > ................................................................................ > │ > ..........................;;;;;;;;;;;;;///////////////<......................... > ................................................................................ > │ > .......................<;;;;;;;;;;;;;;;//////////////////....................... > ................................................................................ > │ > .....................;;;;;;;;;;;;;;;;;;/////////////////////.................... > ................................................................................ > │ > ...................;;;;;;;;;;;;;;;;;;;;//////////////////////................... > .......;;;//.................................................................... > │ > ...................;;;;;;;;;;;;;;;;;;;;///////////////////////.................. > ....;;;;;;//////................................................................ > │ > ..................\;;;;;;;;;;;;;;;;;;;;///////////////////////.................. > .;;;;;;;;;/////////............................................................. > │ > ..................;;;;;;;;;;;;;;;;;;;;;///////////////////////.................; > ;;;;;;;;;;///////////..................;/....................................... > │ > ..................;;;;;;;;;;;;;;;;;;;;;////////////////////////................; > ;;;;;;;;;;////////////.............<;;;;////<................................... > │ > ..................;;;;;;;;;;;;;;;;;;;;;////////////////////////...............\; > ;;;;;;;;;;////////////............;;;;;;//////.................................. > │ > .................;;;;;;;;;;;;;;;;;;;;;;////////////////////////...............;; > ;;;;;;;;;;////////////............;;;;;;//////.................................. > │ > .................;;;;;;;;;;;;;;;;;;;;;;/////////////////////////..............;; > ;;;;;;;;;;>///////////............;;;;;;>>>///.................................. > │ > .................;;;;;;;;;;;;;;;;;;;;;;/////////////////////////..............;; > ;;;;;;;;;>>>>>>///////............;;;;>>>>>>>>.................................. > │ > ................;;;;;;;;;;;;;;;;;;;;;;;>>>>/////////////////////..............;; > ;;;;;;>>>>>>>>>>>>>>//.............>>>>>>>>>=................................... > │ > ................;;;;;;;;;;;;;;;;;;;>>>>>>>>>>>>>/////////////////.............;; > ;;>>>>>>>>>>>>>>>>>>>>..................=....................................... > │ > ................;;;;;;;;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>////////////..............\ > >>>>>>>>>>>>>>>>>>>>............................................................ > │ > ...............\;;;;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>///////............... > .....>>>>>>>>>=................................................................. > │ > ...............;;;;;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>///.............. > ................................................................................ > │ > ...............;;;;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>.............. > ................................................................................ > │ > ................>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>=.................. > ................................................................................ > │ > ........................\>>>>>>>>>>>>>>>>>>>>>>>>>>>>>=......................... > ................................................................................ > │ > .................................\>>>>>>>>>>>>>=................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > ................................................................................ > ................................................................................ > │ > │ 00:00:28 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 450030 } 00:00:28 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:00:29 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib.ipynb to html 00:00:29 v #6 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:29 v #7 ! validate(nb) 00:00:29 v #8 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:29 v #9 ! return _pygments_highlight( 00:00:29 v #10 ! [NbConvertApp] Writing 798024 bytes to /home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib.html 00:00:29 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 916 } 00:00:29 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 916 } 00:00:29 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/cube.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:00:30 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:30 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:30 d #16 spiral.run / dib / { exit_code = 0; result_length = 451005 } 00:00:00 d #1 writeDibCode / output: Spi / path: cube.dib 00:00:00 d #2 parseDibCode / output: Spi / file: cube.dib 00:00:00 d #1 persistCodeProject / packages: [Fable.Core] / modules: [deps/spiral/lib/spiral/common.fsx; deps/spiral/lib/spiral/sm.fsx; deps/spiral/lib/spiral/crypto.fsx; ... ] / name: cube / hash: / code.Length: 48903 spiral/lib/spiral/lib.ps1/GetTargetDir / targetDir: /home/runner/work/polyglot/polyglot/target/Builder/cube polyglot/scripts/core.ps1/ResolveLink #4 / Path: /home/runner/work/polyglot/polyglot/deps/spiral/lib/spiral/../../deps/polyglot / parent_target: / path_target: /home/runner/work/polyglot/polyglot / parent: /home/runner/work/polyglot/polyglot/deps/spiral/lib/spiral/../../deps / End: polyglot spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: /home/runner/work/polyglot/polyglot/target/Builder/cube / ProjectName: cube / Language: rs / Runtime: / root: /home/runner/work/polyglot/polyglot Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha) Thanks to the contributor! @kant2002 Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target/Builder/cube/cube.fsproj... Project and references (14 source files) parsed in 3044ms Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Started Fable compilation... Fable compilation finished in 8490ms ./deps/spiral/lib/spiral/common.fsx(2339,0): (2339,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/sm.fsx(561,0): (561,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/async_.fsx(252,0): (252,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/threading.fsx(139,0): (139,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/crypto.fsx(2569,0): (2569,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/date_time.fsx(2553,0): (2553,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/platform.fsx(122,0): (122,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/networking.fsx(5637,0): (5637,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/trace.fsx(2897,0): (2897,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/runtime.fsx(9581,0): (9581,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! ./deps/spiral/lib/spiral/file_system.fsx(21240,0): (21240,2) warning FABLE: For Rust, support for F# static and module do bindings is disabled by default. It can be enabled with the 'static_do_bindings' feature. Use at your own risk! polyglot/scripts/core.ps1/ResolveLink #4 / Path: /home/runner/work/polyglot/polyglot/deps/spiral/lib/spiral/../../deps/polyglot / parent_target: / path_target: /home/runner/work/polyglot/polyglot / parent: /home/runner/work/polyglot/polyglot/deps/spiral/lib/spiral/../../deps / End: polyglot spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: /home/runner/work/polyglot/polyglot/target/Builder/cube / ProjectName: cube / Language: ts / Runtime: / root: /home/runner/work/polyglot/polyglot Fable 5.0.0-alpha.9: F# to TypeScript compiler Minimum @fable-org/fable-library-ts version (when installed from npm): 1.10.0 Thanks to the contributor! @zpodlovics Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target/Builder/cube/cube.fsproj... Project and references (14 source files) parsed in 2066ms Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Started Fable compilation... Fable compilation finished in 8062ms ./deps/spiral/lib/spiral/sm.fsx(38,20): (38,49) warning FABLE: CultureInfo argument is ignored ./deps/spiral/lib/spiral/sm.fsx(307,20): (307,51) warning FABLE: CultureInfo argument is ignored polyglot/scripts/core.ps1/ResolveLink #4 / Path: /home/runner/work/polyglot/polyglot/deps/spiral/lib/spiral/../../deps/polyglot / parent_target: / path_target: /home/runner/work/polyglot/polyglot / parent: /home/runner/work/polyglot/polyglot/deps/spiral/lib/spiral/../../deps / End: polyglot spiral/lib/spiral/lib.ps1/BuildFable / TargetDir: /home/runner/work/polyglot/polyglot/target/Builder/cube / ProjectName: cube / Language: py / Runtime: / root: /home/runner/work/polyglot/polyglot Fable 5.0.0-alpha.9: F# to Python compiler (status: beta) Thanks to the contributor! @mastoj Stand with Ukraine! https://standwithukraine.com.ua/ Parsing target/Builder/cube/cube.fsproj... Project and references (14 source files) parsed in 1995ms Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.JSInterop.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Routing.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.ViewFeatures.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Mvc.Core.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Http.Abstractions.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Forms.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.Endpoints.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Could not scan /usr/share/dotnet/packs/Microsoft.AspNetCore.App.Ref/9.0.3/ref/net9.0/Microsoft.AspNetCore.Components.dll for Fable plugins, skipping this assembly. Original error: The exception has been reported. This internal exception should now be caught at an error recovery point on the stack. Original message: The type 'MetadataUpdateHandlerAttribute' is required here and is unavailable. You must add a reference to assembly 'System.Runtime.Loader, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a'.) Started Fable compilation... Fable compilation finished in 8428ms ./deps/spiral/lib/spiral/sm.fsx(38,20): (38,49) warning FABLE: CultureInfo argument is ignored ./deps/spiral/lib/spiral/sm.fsx(307,20): (307,51) warning FABLE: CultureInfo argument is ignored polyglot/apps/spiral/temp/cube/build.ps1 / $targetDir: /home/runner/work/polyglot/polyglot/target/Builder/cube / $projectName: cube / $env:CI:'true' bun install v1.2.18 (0d4089ea) + @playwright/test@1.44.0 + @types/chrome@0.0.268 + npm-check-updates@17.1.14 + buffer@6.0.3 11 packages installed [110.00ms] [INFO]: 🎯 Checking for the Wasm target... [INFO]: 🌀 Compiling to Wasm... warning: /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /home/runner/work/polyglot/polyglot/apps/chat/contract/tests/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /home/runner/work/polyglot/polyglot/lib/math/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /home/runner/work/polyglot/polyglot/apps/chat/contract/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /home/runner/work/polyglot/polyglot/apps/plot/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. warning: /home/runner/work/polyglot/polyglot/examples/rust/exercism/Cargo.toml: the cargo feature `edition2024` has been stabilized in the 1.85 release and is no longer necessary to be listed in the manifest See https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-field for more information about using this feature. Compiling proc-macro2 v1.0.92 Compiling unicode-ident v1.0.14 Compiling autocfg v1.4.0 Compiling serde v1.0.216 Compiling wasm-bindgen-shared v0.2.99 Compiling cfg-if v1.0.0 Compiling log v0.4.22 Compiling bumpalo v3.16.0 Compiling once_cell v1.20.2 Compiling wasm-bindgen v0.2.99 Compiling version_check v0.9.5 Compiling thiserror v1.0.69 Compiling memchr v2.7.4 Compiling quote v1.0.37 Compiling stable_deref_trait v1.2.0 Compiling pin-project-lite v0.2.15 Compiling syn v2.0.90 Compiling smallvec v1.13.2 Compiling writeable v0.5.5 Compiling futures-core v0.3.31 Compiling litemap v0.7.4 Compiling lock_api v0.4.12 Compiling slab v0.4.9 Compiling parking_lot_core v0.9.10 Compiling futures-sink v0.3.31 Compiling itoa v1.0.14 Compiling futures-channel v0.3.31 Compiling icu_locid_transform_data v1.5.0 Compiling futures-io v0.3.31 Compiling serde_json v1.0.133 Compiling libc v0.2.168 Compiling icu_properties_data v1.5.0 Compiling unicode-xid v0.2.6 Compiling futures-task v0.3.31 Compiling ryu v1.0.18 Compiling pin-utils v0.1.0 Compiling percent-encoding v2.3.1 Compiling const_format_proc_macros v0.2.34 Compiling proc-macro-error-attr v1.0.4 Compiling utf16_iter v1.0.5 Compiling icu_normalizer_data v1.5.0 Compiling hashbrown v0.15.2 Compiling utf8_iter v1.0.4 Compiling equivalent v1.0.1 Compiling write16 v1.0.0 Compiling indexmap v2.7.0 Compiling proc-macro-error v1.0.4 Compiling bytes v1.9.0 Compiling unicode-segmentation v1.12.0 Compiling fnv v1.0.7 Compiling const_format v0.2.34 Compiling convert_case v0.6.0 Compiling form_urlencoded v1.2.1 Compiling proc-macro-utils v0.10.0 Compiling proc-macro-utils v0.8.0 Compiling proc-macro2-diagnostics v0.10.1 Compiling xxhash-rust v0.8.12 Compiling manyhow-macros v0.10.4 Compiling slotmap v1.0.7 Compiling half v2.4.1 Compiling yansi v1.0.1 Compiling scopeguard v1.2.0 Compiling wasm-bindgen-backend v0.2.99 Compiling synstructure v0.13.1 Compiling server_fn_macro v0.6.15 Compiling paste v1.0.15 Compiling wasm-bindgen-macro-support v0.2.99 Compiling ciborium-io v0.2.2 Compiling camino v1.1.9 Compiling anyhow v1.0.94 Compiling ciborium-ll v0.2.2 Compiling manyhow v0.10.4 Compiling http v1.2.0 Compiling tracing-core v0.1.33 Compiling hashbrown v0.14.5 Compiling serde_derive v1.0.216 Compiling wasm-bindgen-macro v0.2.99 Compiling zerofrom-derive v0.1.5 Compiling yoke-derive v0.7.5 Compiling thiserror-impl v1.0.69 Compiling zerofrom v0.1.5 Compiling js-sys v0.3.76 Compiling yoke v0.7.5 Compiling zerovec-derive v0.10.3 Compiling displaydoc v0.2.5 Compiling zerovec v0.10.4 Compiling icu_provider_macros v1.5.0 Compiling tinystr v0.7.6 Compiling icu_locid v1.5.0 Compiling icu_collections v1.5.0 Compiling icu_provider v1.5.0 Compiling icu_locid_transform v1.5.0 Compiling futures-macro v0.3.31 Compiling futures-util v0.3.31 Compiling icu_properties v1.5.1 Compiling web-sys v0.3.76 Compiling wasm-bindgen-futures v0.4.49 Compiling icu_normalizer v1.5.0 Compiling idna_adapter v1.2.0 Compiling futures-executor v0.3.31 Compiling pin-project-internal v1.1.7 Compiling tracing-attributes v0.1.28 Compiling futures v0.3.31 Compiling idna v1.0.3 Compiling quote-use-macros v0.8.4 Compiling pin-project v1.1.7 Compiling url v2.5.4 Compiling quote-use v0.8.4 Compiling serde_spanned v0.6.8 Compiling toml_datetime v0.6.8 Compiling syn_derive v0.1.8 Compiling same-file v1.0.6 Compiling interpolator v0.5.0 Compiling prettyplease v0.2.25 Compiling winnow v0.6.20 Compiling collection_literals v1.0.1 Compiling attribute-derive-macro v0.9.2 Compiling rstml v0.11.2 Compiling toml_edit v0.22.22 Compiling walkdir v2.5.0 Compiling tracing v0.1.41 Compiling serde-wasm-bindgen v0.6.5 Compiling ciborium v0.2.2 Compiling oco_ref v0.1.1 Compiling serde_qs v0.12.0 Compiling dashmap v5.5.3 Compiling server_fn_macro_default v0.6.15 Compiling derive-where v1.2.7 Compiling parking_lot v0.12.3 Compiling getrandom v0.2.15 Compiling send_wrapper v0.6.0 Compiling proc-macro-error-attr2 v2.0.0 Compiling aho-corasick v1.1.3 Compiling minimal-lexical v0.2.1 Compiling rustc-hash v1.1.0 Compiling self_cell v1.1.0 Compiling utf8-width v0.1.7 Compiling base64 v0.22.1 Compiling regex-syntax v0.8.5 Compiling either v1.13.0 Compiling itertools v0.12.1 Compiling regex-automata v0.4.9 Compiling html-escape v0.2.13 Compiling nom v7.1.3 Compiling proc-macro-error2 v2.0.1 Compiling uuid v1.11.0 Compiling leptos_hot_reload v0.6.15 Compiling attribute-derive v0.9.2 Compiling toml v0.8.19 Compiling typed-builder-macro v0.18.2 Compiling pathdiff v0.2.3 Compiling leptos_macro v0.6.15 Compiling typed-builder v0.18.2 Compiling config v0.14.1 Compiling regex v1.11.1 Compiling async-recursion v1.1.1 Compiling num-traits v0.2.19 Compiling pad-adapter v0.1.1 Compiling lazy_static v1.5.0 Compiling inventory v0.3.15 Compiling drain_filter_polyfill v0.1.3 Compiling leptos_config v0.6.15 Compiling cfg_aliases v0.2.1 Compiling borsh v1.5.3 Compiling serde_test v1.0.177 Compiling tokio v1.42.0 Compiling linear-map v1.2.0 Compiling serde_urlencoded v0.7.1 Compiling serde_qs v0.13.0 Compiling http v0.2.12 Compiling base64 v0.13.1 Compiling tower-service v0.3.3 Compiling console_error_panic_hook v0.1.7 Compiling gloo-utils v0.2.0 Compiling leptos_reactive v0.6.15 Compiling idb v0.6.4 Compiling gloo-net v0.6.0 Compiling console_log v1.0.0 Compiling reqwest-wasm v0.11.16 Compiling wasm-streams v0.4.2 Compiling rexie v0.6.2 Compiling server_fn v0.6.15 Compiling leptos_server v0.6.15 Compiling leptos_dom v0.6.15 Compiling leptos v0.6.15 Compiling leptos_router v0.6.15 Compiling leptos_meta v0.6.15 Compiling spiral_temp_extension v0.0.1 (/home/runner/work/polyglot/polyglot/apps/spiral/temp/extension) Finished `dev` profile [unoptimized + debuginfo] target(s) in 50.63s [INFO]: ⬇️ Installing wasm-bindgen... [INFO]: Optional field missing from Cargo.toml: 'description'. This is not necessary, but recommended [INFO]: ✨ Done in 52.38s [INFO]: 📦 Your wasm pkg is ready to publish at /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension/pkg. Resolving dependencies Resolved, downloaded and extracted [56] Saved lockfile ▲ [WARNING] "import.meta" is not available with the "iife" output format and will be empty [empty-import-meta] System.Management.Automation.RemoteException pkg/spiral_temp_extension.js:1455:66: 1455 │ ...ath = new URL('spiral_temp_extension_bg.wasm', import.meta.url); ╵ ~~~~~~~~~~~ System.Management.Automation.RemoteException You need to set the output format to "esm" for "import.meta" to work correctly. System.Management.Automation.RemoteException 1 warning System.Management.Automation.RemoteException dist/spiral_temp_extension_bg-GWESY6VZ.wasm 4.4mb ⚠️ dist/devtools.js 29.0kb dist/content_script.js 26.7kb dist/service_worker.js 2.2kb System.Management.Automation.RemoteException ⚡ Done in 40ms $ playwright test [WebServer] =: The term '=' is not recognized as a name of a cmdlet, function, script file, or executable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again. Error: Timed out waiting 60000ms from config.webServer. error: script "test:e2e" exited with code 1 # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock: '. $(Search-Command bun) test:e2e' 00:00:00 d #1 spiral.main / { args = Array(MutCell(["dib", "--path", "build.dib"])) } 00:00:00 d #2 runtime.execute_with_options / { file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib", "--output-path", "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.ipynb"]; options = { command = dotnet repl --exit-after-run --run "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib" --output-path "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.ipynb"; cancellation_token = None; environment_variables = Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = None; stdin = None; trace = false; working_directory = None; stderr = true } } > > ── markdown ──────────────────────────────────────────────────────────────────── > │ # test > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## include scripts > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### include notebook core > > ── pwsh ──────────────────────────────────────────────────────────────────────── > . ../../../../scripts/nbs_header.ps1 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Include core functions script > > ── pwsh ──────────────────────────────────────────────────────────────────────── > . ../../../../scripts/core.ps1 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### Include spiral library > > ── pwsh ──────────────────────────────────────────────────────────────────────── > . ../../../../deps/spiral/lib/spiral/lib.ps1 > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## execute project commands > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### run notebook with retries using spiral supervisor > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { . ../../../../deps/spiral/workspace/target/release/spiral$(_exe) dib --path > test.dib --retries 3 } | Invoke-Block > > ── [ 13.51s - stdout ] ───────────────────────────────────────────────────────── > │ 00:00:00 d #1 spiral.main / { args = > Array(MutCell(["dib", "--path", "test.dib", "--retries", "3"])) } > │ 00:00:00 d #2 runtime.execute_with_options / { > file_name = dotnet; arguments = ["repl", "--exit-after-run", "--run", > "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib", > "--output-path", > "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.ipynb"]; > options = { command = dotnet repl --exit-after-run --run > "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib" > --output-path > "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.ipynb"; > cancellation_token = None; environment_variables = > Array(MutCell([("TRACE_LEVEL", "Verbose"), ("AUTOMATION", "True")])); on_line = > None; stdin = None; trace = false; working_directory = None; stderr = true } } > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ # test (Polyglot) > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > > │ > open testing > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > //// print_code > │ > > │ > inl jp = [[ "J"; "P" ]] > │ > inl tf = [[ "T"; "F" ]] > │ > inl sn = [[ "S"; "N" ]] > │ > inl ie = [[ "I"; "E" ]] > │ > > │ > (ie, ([[]] : _ string)) > │ > ||> listm.foldBack fun ie' acc => > │ > inl ssnn acc' jp' = > │ > (sn, acc') > │ > ||> listm.foldBack fun sn' acc' => > │ > inl c' ie' sn' tf' jp' = > │ > $'$"{!ie'}{!sn'}{!tf'}{!jp'}"' > │ > > │ > if listm.length acc' % 4i32 = 2 then > │ > (tf, acc') > │ > ||> listm.foldBack fun tf' acc'' => > │ > c' ie' sn' tf' jp' :: acc'' > │ > else > │ > (acc', tf) > │ > ||> listm.fold fun acc'' tf' => > │ > c' ie' sn' tf' jp' :: acc'' > │ > if acc = [[]] then > │ > (acc, jp) > │ > ||> listm.fold fun acc' jp' => > │ > ssnn acc' jp' > │ > else > │ > (jp, acc) > │ > ||> listm.foldBack fun jp' acc' => > │ > ssnn acc' jp' > │ > |> listm'.box > │ > |> listm'.to_array' > │ > |> _assert_eq' ;[[ > │ > "ISTJ"; "ISFJ"; "INFJ"; "INTJ" > │ > "ISTP"; "ISFP"; "INFP"; "INTP" > │ > "ESTP"; "ESFP"; "ENFP"; "ENTP" > │ > "ESTJ"; "ESFJ"; "ENFJ"; "ENTJ" > │ > ]] > │ > > │ > ── [ 1.16s - stdout ] > ────────────────────────────────────────────────────────── > │ > │ type Mut0 = {mutable l0 : string} > │ > │ let rec method1 (v0 : bool) : bool = > │ > │ v0 > │ > │ and method3 () : string = > │ > │ let v0 : string = "" > │ > │ v0 > │ > │ and closure0 (v0 : Mut0, v1 : string) () > : unit = > │ > │ let v2 : string = v0.l0 > │ > │ let v4 : string = v2 + v1 > │ > │ v0.l0 <- v4 > │ > │ () > │ > │ and method2 (v0 : string, v1 : (string > []), v2 : (string [])) > │ > : string = > │ > │ let v3 : string = method3() > │ > │ let v4 : Mut0 = {l0 = v3} : Mut0 > │ > │ let v7 : string = "{ " > │ > │ let v8 : string = $"{v7}" > │ > │ let v16 : unit = () > │ > │ let v17 : (unit -> unit) = > closure0(v4, v8) > │ > │ let v18 : unit = (fun () -> v17 (); > v16) () > │ > │ let v26 : string = "name" > │ > │ let v27 : string = $"{v26}" > │ > │ let v35 : unit = () > │ > │ let v36 : (unit -> unit) = > closure0(v4, v27) > │ > │ let v37 : unit = (fun () -> v36 (); > v35) () > │ > │ let v45 : string = " = " > │ > │ let v46 : string = $"{v45}" > │ > │ let v54 : unit = () > │ > │ let v55 : (unit -> unit) = > closure0(v4, v46) > │ > │ let v56 : unit = (fun () -> v55 (); > v54) () > │ > │ let v63 : string = $"{v0}" > │ > │ let v71 : unit = () > │ > │ let v72 : (unit -> unit) = > closure0(v4, v63) > │ > │ let v73 : unit = (fun () -> v72 (); > v71) () > │ > │ let v81 : string = "; " > │ > │ let v82 : string = $"{v81}" > │ > │ let v90 : unit = () > │ > │ let v91 : (unit -> unit) = > closure0(v4, v82) > │ > │ let v92 : unit = (fun () -> v91 (); > v90) () > │ > │ let v100 : string = "actual" > │ > │ let v101 : string = $"{v100}" > │ > │ let v109 : unit = () > │ > │ let v110 : (unit -> unit) = > closure0(v4, v101) > │ > │ let v111 : unit = (fun () -> v110 > (); v109) () > │ > │ let v118 : string = $"{v45}" > │ > │ let v126 : unit = () > │ > │ let v127 : (unit -> unit) = > closure0(v4, v118) > │ > │ let v128 : unit = (fun () -> v127 > (); v126) () > │ > │ let v136 : string = $"%A{v1}" > │ > │ let v140 : string = $"{v136}" > │ > │ let v148 : unit = () > │ > │ let v149 : (unit -> unit) = > closure0(v4, v140) > │ > │ let v150 : unit = (fun () -> v149 > (); v148) () > │ > │ let v157 : string = $"{v81}" > │ > │ let v165 : unit = () > │ > │ let v166 : (unit -> unit) = > closure0(v4, v157) > │ > │ let v167 : unit = (fun () -> v166 > (); v165) () > │ > │ let v175 : string = "expected" > │ > │ let v176 : string = $"{v175}" > │ > │ let v184 : unit = () > │ > │ let v185 : (unit -> unit) = > closure0(v4, v176) > │ > │ let v186 : unit = (fun () -> v185 > (); v184) () > │ > │ let v193 : string = $"{v45}" > │ > │ let v201 : unit = () > │ > │ let v202 : (unit -> unit) = > closure0(v4, v193) > │ > │ let v203 : unit = (fun () -> v202 > (); v201) () > │ > │ let v211 : string = $"%A{v2}" > │ > │ let v215 : string = $"{v211}" > │ > │ let v223 : unit = () > │ > │ let v224 : (unit -> unit) = > closure0(v4, v215) > │ > │ let v225 : unit = (fun () -> v224 > (); v223) () > │ > │ let v233 : string = " }" > │ > │ let v234 : string = $"{v233}" > │ > │ let v242 : unit = () > │ > │ let v243 : (unit -> unit) = > closure0(v4, v234) > │ > │ let v244 : unit = (fun () -> v243 > (); v242) () > │ > │ let v250 : string = v4.l0 > │ > │ v250 > │ > │ and closure1 (v0 : string) () : unit = > │ > │ let v1 : (string -> unit) = > System.Console.WriteLine > │ > │ v1 v0 > │ > │ and method0 () : unit = > │ > │ let v0 : string = "E" > │ > │ let v1 : string = "N" > │ > │ let v2 : string = "T" > │ > │ let v3 : string = "J" > │ > │ let v4 : string = > $"{v0}{v1}{v2}{v3}" > │ > │ let v5 : string = "F" > │ > │ let v6 : string = > $"{v0}{v1}{v5}{v3}" > │ > │ let v7 : string = "S" > │ > │ let v8 : string = > $"{v0}{v7}{v5}{v3}" > │ > │ let v9 : string = > $"{v0}{v7}{v2}{v3}" > │ > │ let v10 : string = "P" > │ > │ let v11 : string = > $"{v0}{v1}{v2}{v10}" > │ > │ let v12 : string = > $"{v0}{v1}{v5}{v10}" > │ > │ let v13 : string = > $"{v0}{v7}{v5}{v10}" > │ > │ let v14 : string = > $"{v0}{v7}{v2}{v10}" > │ > │ let v15 : string = "I" > │ > │ let v16 : string = > $"{v15}{v1}{v2}{v10}" > │ > │ let v17 : string = > $"{v15}{v1}{v5}{v10}" > │ > │ let v18 : string = > $"{v15}{v7}{v5}{v10}" > │ > │ let v19 : string = > $"{v15}{v7}{v2}{v10}" > │ > │ let v20 : string = > $"{v15}{v1}{v2}{v3}" > │ > │ let v21 : string = > $"{v15}{v1}{v5}{v3}" > │ > │ let v22 : string = > $"{v15}{v7}{v5}{v3}" > │ > │ let v23 : string = > $"{v15}{v7}{v2}{v3}" > │ > │ let v24 : string list = [] > │ > │ let v26 : string list = v4 :: v24 > │ > │ let v30 : string list = v6 :: v26 > │ > │ let v34 : string list = v8 :: v30 > │ > │ let v38 : string list = v9 :: v34 > │ > │ let v42 : string list = v11 :: v38 > │ > │ let v46 : string list = v12 :: v42 > │ > │ let v50 : string list = v13 :: v46 > │ > │ let v54 : string list = v14 :: v50 > │ > │ let v58 : string list = v16 :: v54 > │ > │ let v62 : string list = v17 :: v58 > │ > │ let v66 : string list = v18 :: v62 > │ > │ let v70 : string list = v19 :: v66 > │ > │ let v74 : string list = v20 :: v70 > │ > │ let v78 : string list = v21 :: v74 > │ > │ let v82 : string list = v22 :: v78 > │ > │ let v86 : string list = v23 :: v82 > │ > │ let v93 : (string list -> (string > [])) = List.toArray > │ > │ let v94 : (string []) = v93 v86 > │ > │ let v97 : string = "ISTJ" > │ > │ let v98 : string = "ISFJ" > │ > │ let v99 : string = "INFJ" > │ > │ let v100 : string = "INTJ" > │ > │ let v101 : string = "ISTP" > │ > │ let v102 : string = "ISFP" > │ > │ let v103 : string = "INFP" > │ > │ let v104 : string = "INTP" > │ > │ let v105 : string = "ESTP" > │ > │ let v106 : string = "ESFP" > │ > │ let v107 : string = "ENFP" > │ > │ let v108 : string = "ENTP" > │ > │ let v109 : string = "ESTJ" > │ > │ let v110 : string = "ESFJ" > │ > │ let v111 : string = "ENFJ" > │ > │ let v112 : string = "ENTJ" > │ > │ let v113 : (string []) = [|v97; v98; > v99; v100; v101; > │ > v102; v103; v104; v105; v106; v107; v108; v109; v110; v111; > v112|] > │ > │ let v115 : bool = v94 = v113 > │ > │ let v119 : bool = > │ > │ if v115 then > │ > │ true > │ > │ else > │ > │ method1(v115) > │ > │ let v120 : string = "__assert_eq'" > │ > │ let v121 : string = method2(v120, > v94, v113) > │ > │ let v123 : unit = () > │ > │ let v124 : (unit -> unit) = > closure1(v121) > │ > │ let v125 : unit = (fun () -> v124 > (); v123) () > │ > │ let v127 : bool = v119 = false > │ > │ if v127 then > │ > │ failwith<unit> v121 > │ > │ method0() > │ > │ > │ > │ { name = __assert_eq'; actual = > [|"ISTJ"; "ISFJ"; "INFJ"; > │ > "INTJ"; "ISTP"; "ISFP"; "INFP"; "INTP"; "ESTP"; "ESFP"; > │ > │ "ENFP"; "ENTP"; "ESTJ"; "ESFJ"; > "ENFJ"; "ENTJ"|]; expected > │ > = [|"ISTJ"; "ISFJ"; "INFJ"; "INTJ"; "ISTP"; "ISFP"; "INFP"; > "INTP"; "ESTP"; > │ > "ESFP"; > │ > │ "ENFP"; "ENTP"; "ESTJ"; "ESFJ"; > "ENFJ"; "ENTJ"|] } > │ > │ > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > //// print_code > │ > > │ > inl i_e = > │ > listm'.replicate 8i32 "I" ++ listm'.replicate 8i32 "E" > │ > inl s_n = > │ > [[ "S"; "S"; "N"; "N" ]] > │ > |> listm'.replicate 4i32 > │ > |> listm'.collect id > │ > inl t_f = > │ > [[ "T"; "F"; "F"; "T" ]] > │ > |> listm'.replicate 4i32 > │ > |> listm'.collect id > │ > inl j_p = > │ > [[ "J"; "J"; "J"; "J" ]] > │ > ++ [[ "P"; "P"; "P"; "P" ]] > │ > ++ [[ "P"; "P"; "P"; "P" ]] > │ > ++ [[ "J"; "J"; "J"; "J" ]] > │ > inl mbti = > │ > listm'.map4 (fun a b c d => $'$"{!a}{!b}{!c}{!d}"') i_e > s_n t_f j_p > │ > > │ > mbti > │ > |> listm'.box > │ > |> listm'.to_array' > │ > |> _assert_eq' ;[[ > │ > "ISTJ"; "ISFJ"; "INFJ"; "INTJ" > │ > "ISTP"; "ISFP"; "INFP"; "INTP" > │ > "ESTP"; "ESFP"; "ENFP"; "ENTP" > │ > "ESTJ"; "ESFJ"; "ENFJ"; "ENTJ" > │ > ]] > │ > > │ > ── [ 361.97ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ type Mut0 = {mutable l0 : string} > │ > │ let rec method1 (v0 : bool) : bool = > │ > │ v0 > │ > │ and method3 () : string = > │ > │ let v0 : string = "" > │ > │ v0 > │ > │ and closure0 (v0 : Mut0, v1 : string) () > : unit = > │ > │ let v2 : string = v0.l0 > │ > │ let v4 : string = v2 + v1 > │ > │ v0.l0 <- v4 > │ > │ () > │ > │ and method2 (v0 : string, v1 : (string > []), v2 : (string [])) > │ > : string = > │ > │ let v3 : string = method3() > │ > │ let v4 : Mut0 = {l0 = v3} : Mut0 > │ > │ let v7 : string = "{ " > │ > │ let v8 : string = $"{v7}" > │ > │ let v16 : unit = () > │ > │ let v17 : (unit -> unit) = > closure0(v4, v8) > │ > │ let v18 : unit = (fun () -> v17 (); > v16) () > │ > │ let v26 : string = "name" > │ > │ let v27 : string = $"{v26}" > │ > │ let v35 : unit = () > │ > │ let v36 : (unit -> unit) = > closure0(v4, v27) > │ > │ let v37 : unit = (fun () -> v36 (); > v35) () > │ > │ let v45 : string = " = " > │ > │ let v46 : string = $"{v45}" > │ > │ let v54 : unit = () > │ > │ let v55 : (unit -> unit) = > closure0(v4, v46) > │ > │ let v56 : unit = (fun () -> v55 (); > v54) () > │ > │ let v63 : string = $"{v0}" > │ > │ let v71 : unit = () > │ > │ let v72 : (unit -> unit) = > closure0(v4, v63) > │ > │ let v73 : unit = (fun () -> v72 (); > v71) () > │ > │ let v81 : string = "; " > │ > │ let v82 : string = $"{v81}" > │ > │ let v90 : unit = () > │ > │ let v91 : (unit -> unit) = > closure0(v4, v82) > │ > │ let v92 : unit = (fun () -> v91 (); > v90) () > │ > │ let v100 : string = "actual" > │ > │ let v101 : string = $"{v100}" > │ > │ let v109 : unit = () > │ > │ let v110 : (unit -> unit) = > closure0(v4, v101) > │ > │ let v111 : unit = (fun () -> v110 > (); v109) () > │ > │ let v118 : string = $"{v45}" > │ > │ let v126 : unit = () > │ > │ let v127 : (unit -> unit) = > closure0(v4, v118) > │ > │ let v128 : unit = (fun () -> v127 > (); v126) () > │ > │ let v136 : string = $"%A{v1}" > │ > │ let v140 : string = $"{v136}" > │ > │ let v148 : unit = () > │ > │ let v149 : (unit -> unit) = > closure0(v4, v140) > │ > │ let v150 : unit = (fun () -> v149 > (); v148) () > │ > │ let v157 : string = $"{v81}" > │ > │ let v165 : unit = () > │ > │ let v166 : (unit -> unit) = > closure0(v4, v157) > │ > │ let v167 : unit = (fun () -> v166 > (); v165) () > │ > │ let v175 : string = "expected" > │ > │ let v176 : string = $"{v175}" > │ > │ let v184 : unit = () > │ > │ let v185 : (unit -> unit) = > closure0(v4, v176) > │ > │ let v186 : unit = (fun () -> v185 > (); v184) () > │ > │ let v193 : string = $"{v45}" > │ > │ let v201 : unit = () > │ > │ let v202 : (unit -> unit) = > closure0(v4, v193) > │ > │ let v203 : unit = (fun () -> v202 > (); v201) () > │ > │ let v211 : string = $"%A{v2}" > │ > │ let v215 : string = $"{v211}" > │ > │ let v223 : unit = () > │ > │ let v224 : (unit -> unit) = > closure0(v4, v215) > │ > │ let v225 : unit = (fun () -> v224 > (); v223) () > │ > │ let v233 : string = " }" > │ > │ let v234 : string = $"{v233}" > │ > │ let v242 : unit = () > │ > │ let v243 : (unit -> unit) = > closure0(v4, v234) > │ > │ let v244 : unit = (fun () -> v243 > (); v242) () > │ > │ let v250 : string = v4.l0 > │ > │ v250 > │ > │ and closure1 (v0 : string) () : unit = > │ > │ let v1 : (string -> unit) = > System.Console.WriteLine > │ > │ v1 v0 > │ > │ and method0 () : unit = > │ > │ let v0 : string = "I" > │ > │ let v1 : string = "S" > │ > │ let v2 : string = "T" > │ > │ let v3 : string = "J" > │ > │ let v4 : string = > $"{v0}{v1}{v2}{v3}" > │ > │ let v5 : string = "F" > │ > │ let v6 : string = > $"{v0}{v1}{v5}{v3}" > │ > │ let v7 : string = "N" > │ > │ let v8 : string = > $"{v0}{v7}{v5}{v3}" > │ > │ let v9 : string = > $"{v0}{v7}{v2}{v3}" > │ > │ let v10 : string = "P" > │ > │ let v11 : string = > $"{v0}{v1}{v2}{v10}" > │ > │ let v12 : string = > $"{v0}{v1}{v5}{v10}" > │ > │ let v13 : string = > $"{v0}{v7}{v5}{v10}" > │ > │ let v14 : string = > $"{v0}{v7}{v2}{v10}" > │ > │ let v15 : string = "E" > │ > │ let v16 : string = > $"{v15}{v1}{v2}{v10}" > │ > │ let v17 : string = > $"{v15}{v1}{v5}{v10}" > │ > │ let v18 : string = > $"{v15}{v7}{v5}{v10}" > │ > │ let v19 : string = > $"{v15}{v7}{v2}{v10}" > │ > │ let v20 : string = > $"{v15}{v1}{v2}{v3}" > │ > │ let v21 : string = > $"{v15}{v1}{v5}{v3}" > │ > │ let v22 : string = > $"{v15}{v7}{v5}{v3}" > │ > │ let v23 : string = > $"{v15}{v7}{v2}{v3}" > │ > │ let v24 : string list = [] > │ > │ let v26 : string list = v23 :: v24 > │ > │ let v30 : string list = v22 :: v26 > │ > │ let v34 : string list = v21 :: v30 > │ > │ let v38 : string list = v20 :: v34 > │ > │ let v42 : string list = v19 :: v38 > │ > │ let v46 : string list = v18 :: v42 > │ > │ let v50 : string list = v17 :: v46 > │ > │ let v54 : string list = v16 :: v50 > │ > │ let v58 : string list = v14 :: v54 > │ > │ let v62 : string list = v13 :: v58 > │ > │ let v66 : string list = v12 :: v62 > │ > │ let v70 : string list = v11 :: v66 > │ > │ let v74 : string list = v9 :: v70 > │ > │ let v78 : string list = v8 :: v74 > │ > │ let v82 : string list = v6 :: v78 > │ > │ let v86 : string list = v4 :: v82 > │ > │ let v93 : (string list -> (string > [])) = List.toArray > │ > │ let v94 : (string []) = v93 v86 > │ > │ let v97 : string = "ISTJ" > │ > │ let v98 : string = "ISFJ" > │ > │ let v99 : string = "INFJ" > │ > │ let v100 : string = "INTJ" > │ > │ let v101 : string = "ISTP" > │ > │ let v102 : string = "ISFP" > │ > │ let v103 : string = "INFP" > │ > │ let v104 : string = "INTP" > │ > │ let v105 : string = "ESTP" > │ > │ let v106 : string = "ESFP" > │ > │ let v107 : string = "ENFP" > │ > │ let v108 : string = "ENTP" > │ > │ let v109 : string = "ESTJ" > │ > │ let v110 : string = "ESFJ" > │ > │ let v111 : string = "ENFJ" > │ > │ let v112 : string = "ENTJ" > │ > │ let v113 : (string []) = [|v97; v98; > v99; v100; v101; > │ > v102; v103; v104; v105; v106; v107; v108; v109; v110; v111; > v112|] > │ > │ let v115 : bool = v94 = v113 > │ > │ let v119 : bool = > │ > │ if v115 then > │ > │ true > │ > │ else > │ > │ method1(v115) > │ > │ let v120 : string = "__assert_eq'" > │ > │ let v121 : string = method2(v120, > v94, v113) > │ > │ let v123 : unit = () > │ > │ let v124 : (unit -> unit) = > closure1(v121) > │ > │ let v125 : unit = (fun () -> v124 > (); v123) () > │ > │ let v127 : bool = v119 = false > │ > │ if v127 then > │ > │ failwith<unit> v121 > │ > │ method0() > │ > │ > │ > │ { name = __assert_eq'; actual = > [|"ISTJ"; "ISFJ"; "INFJ"; > │ > "INTJ"; "ISTP"; "ISFP"; "INFP"; "INTP"; "ESTP"; "ESFP"; > │ > │ "ENFP"; "ENTP"; "ESTJ"; "ESFJ"; > "ENFJ"; "ENTJ"|]; expected > │ > = [|"ISTJ"; "ISFJ"; "INFJ"; "INTJ"; "ISTP"; "ISFP"; "INFP"; > "INTP"; "ESTP"; > │ > "ESFP"; > │ > │ "ENFP"; "ENTP"; "ESTJ"; "ESFJ"; > "ENFJ"; "ENTJ"|] } > │ > │ > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > //// test > │ > //// print_code > │ > > │ > fun i => > │ > inl i_e = > │ > if i < 8 > │ > then "I" > │ > else "E" > │ > inl s_n = > │ > inl group = (i / 2) % 2 > │ > if group = 0 > │ > then "S" > │ > else "N" > │ > inl t_f = > │ > match i % 4 with > │ > | 0 => "T" > │ > | 1 => "F" > │ > | 2 => "F" > │ > | _ => "T" > │ > inl j_p = > │ > if i < 4 > │ > then "J" > │ > elif i < 12 > │ > then "P" > │ > else "J" > │ > $'$"{!i_e}{!s_n}{!t_f}{!j_p}"' > │ > |> listm.init 16i32 > │ > |> listm'.box > │ > |> listm'.to_array' > │ > |> _assert_eq' ;[[ > │ > "ISTJ"; "ISFJ"; "INFJ"; "INTJ" > │ > "ISTP"; "ISFP"; "INFP"; "INTP" > │ > "ESTP"; "ESFP"; "ENFP"; "ENTP" > │ > "ESTJ"; "ESFJ"; "ENFJ"; "ENTJ" > │ > ]] > │ > > │ > ── [ 385.35ms - stdout ] > ─────────────────────────────────────────────────────── > │ > │ type Mut0 = {mutable l0 : string} > │ > │ let rec method1 (v0 : bool) : bool = > │ > │ v0 > │ > │ and method3 () : string = > │ > │ let v0 : string = "" > │ > │ v0 > │ > │ and closure0 (v0 : Mut0, v1 : string) () > : unit = > │ > │ let v2 : string = v0.l0 > │ > │ let v4 : string = v2 + v1 > │ > │ v0.l0 <- v4 > │ > │ () > │ > │ and method2 (v0 : string, v1 : (string > []), v2 : (string [])) > │ > : string = > │ > │ let v3 : string = method3() > │ > │ let v4 : Mut0 = {l0 = v3} : Mut0 > │ > │ let v7 : string = "{ " > │ > │ let v8 : string = $"{v7}" > │ > │ let v16 : unit = () > │ > │ let v17 : (unit -> unit) = > closure0(v4, v8) > │ > │ let v18 : unit = (fun () -> v17 (); > v16) () > │ > │ let v26 : string = "name" > │ > │ let v27 : string = $"{v26}" > │ > │ let v35 : unit = () > │ > │ let v36 : (unit -> unit) = > closure0(v4, v27) > │ > │ let v37 : unit = (fun () -> v36 (); > v35) () > │ > │ let v45 : string = " = " > │ > │ let v46 : string = $"{v45}" > │ > │ let v54 : unit = () > │ > │ let v55 : (unit -> unit) = > closure0(v4, v46) > │ > │ let v56 : unit = (fun () -> v55 (); > v54) () > │ > │ let v63 : string = $"{v0}" > │ > │ let v71 : unit = () > │ > │ let v72 : (unit -> unit) = > closure0(v4, v63) > │ > │ let v73 : unit = (fun () -> v72 (); > v71) () > │ > │ let v81 : string = "; " > │ > │ let v82 : string = $"{v81}" > │ > │ let v90 : unit = () > │ > │ let v91 : (unit -> unit) = > closure0(v4, v82) > │ > │ let v92 : unit = (fun () -> v91 (); > v90) () > │ > │ let v100 : string = "actual" > │ > │ let v101 : string = $"{v100}" > │ > │ let v109 : unit = () > │ > │ let v110 : (unit -> unit) = > closure0(v4, v101) > │ > │ let v111 : unit = (fun () -> v110 > (); v109) () > │ > │ let v118 : string = $"{v45}" > │ > │ let v126 : unit = () > │ > │ let v127 : (unit -> unit) = > closure0(v4, v118) > │ > │ let v128 : unit = (fun () -> v127 > (); v126) () > │ > │ let v136 : string = $"%A{v1}" > │ > │ let v140 : string = $"{v136}" > │ > │ let v148 : unit = () > │ > │ let v149 : (unit -> unit) = > closure0(v4, v140) > │ > │ let v150 : unit = (fun () -> v149 > (); v148) () > │ > │ let v157 : string = $"{v81}" > │ > │ let v165 : unit = () > │ > │ let v166 : (unit -> unit) = > closure0(v4, v157) > │ > │ let v167 : unit = (fun () -> v166 > (); v165) () > │ > │ let v175 : string = "expected" > │ > │ let v176 : string = $"{v175}" > │ > │ let v184 : unit = () > │ > │ let v185 : (unit -> unit) = > closure0(v4, v176) > │ > │ let v186 : unit = (fun () -> v185 > (); v184) () > │ > │ let v193 : string = $"{v45}" > │ > │ let v201 : unit = () > │ > │ let v202 : (unit -> unit) = > closure0(v4, v193) > │ > │ let v203 : unit = (fun () -> v202 > (); v201) () > │ > │ let v211 : string = $"%A{v2}" > │ > │ let v215 : string = $"{v211}" > │ > │ let v223 : unit = () > │ > │ let v224 : (unit -> unit) = > closure0(v4, v215) > │ > │ let v225 : unit = (fun () -> v224 > (); v223) () > │ > │ let v233 : string = " }" > │ > │ let v234 : string = $"{v233}" > │ > │ let v242 : unit = () > │ > │ let v243 : (unit -> unit) = > closure0(v4, v234) > │ > │ let v244 : unit = (fun () -> v243 > (); v242) () > │ > │ let v250 : string = v4.l0 > │ > │ v250 > │ > │ and closure1 (v0 : string) () : unit = > │ > │ let v1 : (string -> unit) = > System.Console.WriteLine > │ > │ v1 v0 > │ > │ and method0 () : unit = > │ > │ let v0 : string = "I" > │ > │ let v1 : string = "S" > │ > │ let v2 : string = "T" > │ > │ let v3 : string = "J" > │ > │ let v4 : string = > $"{v0}{v1}{v2}{v3}" > │ > │ let v5 : string = "F" > │ > │ let v6 : string = > $"{v0}{v1}{v5}{v3}" > │ > │ let v7 : string = "N" > │ > │ let v8 : string = > $"{v0}{v7}{v5}{v3}" > │ > │ let v9 : string = > $"{v0}{v7}{v2}{v3}" > │ > │ let v10 : string = "P" > │ > │ let v11 : string = > $"{v0}{v1}{v2}{v10}" > │ > │ let v12 : string = > $"{v0}{v1}{v5}{v10}" > │ > │ let v13 : string = > $"{v0}{v7}{v5}{v10}" > │ > │ let v14 : string = > $"{v0}{v7}{v2}{v10}" > │ > │ let v15 : string = "E" > │ > │ let v16 : string = > $"{v15}{v1}{v2}{v10}" > │ > │ let v17 : string = > $"{v15}{v1}{v5}{v10}" > │ > │ let v18 : string = > $"{v15}{v7}{v5}{v10}" > │ > │ let v19 : string = > $"{v15}{v7}{v2}{v10}" > │ > │ let v20 : string = > $"{v15}{v1}{v2}{v3}" > │ > │ let v21 : string = > $"{v15}{v1}{v5}{v3}" > │ > │ let v22 : string = > $"{v15}{v7}{v5}{v3}" > │ > │ let v23 : string = > $"{v15}{v7}{v2}{v3}" > │ > │ let v24 : string list = [] > │ > │ let v26 : string list = v23 :: v24 > │ > │ let v30 : string list = v22 :: v26 > │ > │ let v34 : string list = v21 :: v30 > │ > │ let v38 : string list = v20 :: v34 > │ > │ let v42 : string list = v19 :: v38 > │ > │ let v46 : string list = v18 :: v42 > │ > │ let v50 : string list = v17 :: v46 > │ > │ let v54 : string list = v16 :: v50 > │ > │ let v58 : string list = v14 :: v54 > │ > │ let v62 : string list = v13 :: v58 > │ > │ let v66 : string list = v12 :: v62 > │ > │ let v70 : string list = v11 :: v66 > │ > │ let v74 : string list = v9 :: v70 > │ > │ let v78 : string list = v8 :: v74 > │ > │ let v82 : string list = v6 :: v78 > │ > │ let v86 : string list = v4 :: v82 > │ > │ let v93 : (string list -> (string > [])) = List.toArray > │ > │ let v94 : (string []) = v93 v86 > │ > │ let v97 : string = "ISTJ" > │ > │ let v98 : string = "ISFJ" > │ > │ let v99 : string = "INFJ" > │ > │ let v100 : string = "INTJ" > │ > │ let v101 : string = "ISTP" > │ > │ let v102 : string = "ISFP" > │ > │ let v103 : string = "INFP" > │ > │ let v104 : string = "INTP" > │ > │ let v105 : string = "ESTP" > │ > │ let v106 : string = "ESFP" > │ > │ let v107 : string = "ENFP" > │ > │ let v108 : string = "ENTP" > │ > │ let v109 : string = "ESTJ" > │ > │ let v110 : string = "ESFJ" > │ > │ let v111 : string = "ENFJ" > │ > │ let v112 : string = "ENTJ" > │ > │ let v113 : (string []) = [|v97; v98; > v99; v100; v101; > │ > v102; v103; v104; v105; v106; v107; v108; v109; v110; v111; > v112|] > │ > │ let v115 : bool = v94 = v113 > │ > │ let v119 : bool = > │ > │ if v115 then > │ > │ true > │ > │ else > │ > │ method1(v115) > │ > │ let v120 : string = "__assert_eq'" > │ > │ let v121 : string = method2(v120, > v94, v113) > │ > │ let v123 : unit = () > │ > │ let v124 : (unit -> unit) = > closure1(v121) > │ > │ let v125 : unit = (fun () -> v124 > (); v123) () > │ > │ let v127 : bool = v119 = false > │ > │ if v127 then > │ > │ failwith<unit> v121 > │ > │ method0() > │ > │ > │ > │ { name = __assert_eq'; actual = > [|"ISTJ"; "ISFJ"; "INFJ"; > │ > "INTJ"; "ISTP"; "ISFP"; "INFP"; "INTP"; "ESTP"; "ESFP"; > │ > │ "ENFP"; "ENTP"; "ESTJ"; "ESFJ"; > "ENFJ"; "ENTJ"|]; expected > │ > = [|"ISTJ"; "ISFJ"; "INFJ"; "INTJ"; "ISTP"; "ISFP"; "INFP"; > "INTP"; "ESTP"; > │ > "ESFP"; > │ > │ "ENFP"; "ENTP"; "ESTJ"; "ESFJ"; > "ENFJ"; "ENTJ"|] } > │ > │ > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > type PhonologicalFeature = > │ > | VowelFeature of > │ > height: Height > │ > * backness: Backness > │ > * roundedness: Roundedness > │ > * tone: Option<Tone> > │ > * stress: Option<Stress> > │ > * length: Option<Length> > │ > | ConsonantFeature of > │ > place: PlaceOfArticulation > │ > * manner: MannerOfArticulation > │ > * voicing: Voicing > │ > * length: Option<Length> > │ > | VowelHarmonyFeature > │ > | PitchAccentFeature > │ > > │ > and Stress = Primary | Secondary > │ > and Length = Long | Short | HalfLong > │ > > │ > and Height = > │ > | High | NearHigh | HighMid > │ > | Mid | LowMid | NearLow > │ > | Low > │ > > │ > and Backness = Front | Central | Back > │ > > │ > and Roundedness = Rounded | Unrounded > │ > > │ > and PlaceOfArticulation = > │ > | Bilabial | Labiodental | Dental > │ > | Alveolar | Postalveolar | Retroflex > │ > | Palatal | Velar | Uvular > │ > | Pharyngeal | Epiglottal | Glottal > │ > > │ > and MannerOfArticulation = > │ > | Plosive | Nasal | Trill > │ > | TapOrFlap | Fricative | LateralFricative > │ > | Approximant | LateralApproximant > │ > > │ > and Voicing = Voiced | Voiceless > │ > > │ > and SecondaryArticulation = > │ > | Labialization | Palatalization | Velarization > │ > | Pharyngealization | Aspiration > │ > > │ > and Tone = > │ > | LevelTone of int > │ > | ContourTone of int list > │ > > │ > and MorphologicalFeature = > │ > | RootFeature of string > │ > | AffixFeature of AffixType * string > │ > | IncorporationFeature of string * MorphologicalFeature > │ > | NonConcatenativePattern of string * string > │ > | AgglutinativeAffixFeature of AgglutinativeAffixType * > string > │ > | HonorificFeature of HonorificType * string > │ > > │ > and AgglutinativeAffixType = Suffix | Prefix > │ > > │ > and HonorificType = VerbHonorific | NounHonorific > │ > > │ > and AffixType = > │ > | Prefix | Suffix | Infix > │ > | Circumfix > │ > > │ > type SyntacticFeature = > │ > | WordFeature of MorphologicalFeature list * > LexicalCategory > │ > | PhraseFeature of PhraseType * SyntacticFeature list > │ > | GrammaticalRelation of GrammaticalRelationType * > SyntacticFeature list > │ > | SOVOrderFeature > │ > | TopicCommentFeature > │ > > │ > and GrammaticalRelationType = > │ > | Ergative | Absolutive | Nominative > │ > | Accusative > │ > > │ > and LexicalCategory = > │ > | Noun | Verb | Adjective > │ > | Adverb | Pronoun | Preposition > │ > | Conjunction | Determiner | Interjection > │ > > │ > and PhraseType = > │ > | NP | VP | AP > │ > | PP | CP > │ > > │ > and SemanticFeature = > │ > | Meaning of string > │ > | SemanticRole of SemanticRoleType * SemanticFeature > │ > > │ > and SemanticRoleType = > │ > | Agent | Patient | Instrument > │ > | Location | Time | Cause > │ > > │ > and PragmaticFeature = > │ > | UseContext of string > │ > | PolitenessLevel of Politeness > │ > | SpeechAct of SpeechActType > │ > | SpeechLevel of SpeechLevelType > │ > > │ > and Politeness = Formal | Informal | Neutral > │ > > │ > and SpeechActType = > │ > | Assertive | Directive | Commissive > │ > | Expressive | Declarative > │ > > │ > and SpeechLevelType = > │ > | FormalHigh | FormalLow | InformalHigh > │ > | InformalLow | Neutral > │ > > │ > type LinguisticFeature = > │ > | Phonological of PhonologicalFeature > │ > | Morphological of MorphologicalFeature > │ > | Syntactic of SyntacticFeature > │ > | Semantic of SemanticFeature > │ > | Pragmatic of PragmaticFeature > │ > > │ > type LanguageConstruct = > │ > | LanguageElement of LinguisticFeature > │ > | LanguageStructure of LanguageConstruct list > │ > | TranslationElement of TranslationFeature > │ > > │ > and TranslationFeature = > │ > | LinkedPhonological of PhonologicalFeature * > PhonologicalFeature > │ > | LinkedMorphological of MorphologicalFeature * > MorphologicalFeature > │ > | LinkedSyntactic of SyntacticFeature * > SyntacticFeature > │ > | LinkedSemantic of SemanticFeature * SemanticFeature > │ > > │ > type Discourse = DiscourseUnit of LanguageConstruct list > │ > > │ > type LanguageModel = > │ > | Model of discourse: Discourse > │ > > │ > ── fsharp > ────────────────────────────────────────────────────────────────────── > │ > let testEnglish = > │ > Model( > │ > DiscourseUnit [[ > │ > LanguageElement (Phonological (ConsonantFeature > (Alveolar, Nasal, > │ > Voiced, Some(HalfLong)))); > │ > LanguageElement (Phonological (VowelFeature > (High, Front, Unrounded, > │ > Some(LevelTone 1), Some(Primary), Some(Short)))); > │ > LanguageElement (Phonological (VowelFeature > (Low, Front, Unrounded, > │ > Some(LevelTone 2), Some(Secondary), Some(Long)))); > │ > LanguageElement (Phonological (ConsonantFeature > (Velar, Plosive, > │ > Voiceless, Some(HalfLong)))); > │ > LanguageElement (Morphological (RootFeature > "I")); > │ > LanguageElement (Morphological (RootFeature > "see")); > │ > LanguageElement (Morphological (RootFeature > "a")); > │ > LanguageElement (Morphological (RootFeature > "cat")); > │ > LanguageElement (Syntactic (PhraseFeature (NP, > [[WordFeature > │ > ([[RootFeature "I"]], Pronoun)]]))); > │ > LanguageElement (Syntactic (PhraseFeature (VP, > [[WordFeature > │ > ([[RootFeature "see"]], Verb)]]))); > │ > LanguageElement (Syntactic (PhraseFeature (NP, > [[WordFeature > │ > ([[RootFeature "a"; RootFeature "cat"]], Noun)]]))); > │ > LanguageElement (Semantic (Meaning "Perception > act of a feline by > │ > the speaker")); > │ > LanguageElement (Pragmatic (UseContext > "Statement of an action being > │ > observed")) > │ > ]] > │ > ) > │ > > │ > let testPortuguese = > │ > Model( > │ > DiscourseUnit [[ > │ > LanguageElement (Phonological (VowelFeature > (High, Front, Unrounded, > │ > Some(LevelTone 1), Some(Primary), Some(Short)))); > │ > LanguageElement (Phonological (VowelFeature > (Low, Front, Unrounded, > │ > Some(LevelTone 2), Some(Secondary), Some(Long)))); > │ > LanguageElement (Phonological (VowelFeature > (Mid, Back, Rounded, > │ > Some(LevelTone 3), Some(Primary), Some(Short)))); > │ > LanguageElement (Phonological (ConsonantFeature > (Velar, Plosive, > │ > Voiceless, Some(HalfLong)))); > │ > LanguageElement (Morphological (RootFeature > "Eu")); > │ > LanguageElement (Morphological (RootFeature > "ver" |> ignore; > │ > AffixFeature (Suffix, "o"))); > │ > LanguageElement (Morphological (RootFeature > "um")); > │ > LanguageElement (Morphological (RootFeature > "gato")); > │ > LanguageElement (Syntactic (PhraseFeature (NP, > [[WordFeature > │ > ([[RootFeature "Eu"]], Pronoun)]]))); > │ > LanguageElement (Syntactic (PhraseFeature (VP, > [[WordFeature > │ > ([[RootFeature "vejo"]], Verb)]]))); > │ > LanguageElement (Syntactic (PhraseFeature (NP, > [[WordFeature > │ > ([[RootFeature "um"; RootFeature "gato"]], Noun)]]))); > │ > LanguageElement (Semantic (Meaning "Ação de > percepção de um felino > │ > pelo falante")); > │ > LanguageElement (Pragmatic (UseContext > "Declaração de uma ação sendo > │ > observada")) > │ > ]] > │ > ) > │ > > │ > let testKorean = > │ > Model( > │ > DiscourseUnit [[ > │ > LanguageElement (Phonological (ConsonantFeature > (Alveolar, Nasal, > │ > Voiced, Some(Short)))); > │ > LanguageElement (Phonological (VowelFeature > (High, Back, Rounded, > │ > None, None, Some(Short)))); > │ > LanguageElement (Phonological (VowelFeature > (Mid, Front, Unrounded, > │ > None, None, Some(Long)))); > │ > LanguageElement (Phonological (ConsonantFeature > (Bilabial, Plosive, > │ > Voiceless, Some(Short)))); > │ > LanguageElement (Morphological (RootFeature > "나")); > │ > LanguageElement (Morphological (RootFeature > "보다")); > │ > LanguageElement (Morphological (AffixFeature > (Suffix, "아"))); > │ > LanguageElement (Morphological (RootFeature > "고양이")); > │ > LanguageElement (Syntactic (PhraseFeature (NP, > [[WordFeature > │ > ([[RootFeature "나"]], Pronoun)]]))); > │ > LanguageElement (Syntactic (PhraseFeature (VP, > [[WordFeature > │ > ([[RootFeature "보다"; AffixFeature (Suffix, "아")]], > Verb)]]))); > │ > LanguageElement (Syntactic (PhraseFeature (NP, > [[WordFeature > │ > ([[RootFeature "고양이"]], Noun)]]))); > │ > LanguageElement (Semantic (Meaning "화자에 의한 > 고양이의 관찰 > │ > 행위")); > │ > LanguageElement (Pragmatic (UseContext > "관찰되고 있는 행동의 진술")) > │ > ]] > │ > ) > │ > > │ > ── markdown > ──────────────────────────────────────────────────────────────────── > │ > │ ## main > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl main (_args : array_base string) = > │ > 0i32 > │ > > │ > inl main () = > │ > $'let main args = !main args' : () > │ > > │ > ── spiral > ────────────────────────────────────────────────────────────────────── > │ > inl app () = > │ > "test" |> console.write_line > │ > 0i32 > │ > > │ > inl main () = > │ > print_static "<test>" > │ > > │ > app > │ > |> dyn > │ > |> ignore > │ > > │ > print_static "</test>" > │ 00:00:11 v #3 runtime.execute_with_options / result / { > exit_code = 0; std_trace_length = 40633 } > │ 00:00:11 d #4 runtime.execute_with_options / { > file_name = jupyter; arguments = ["nbconvert", > "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.ipynb", > "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter > nbconvert > "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.ipynb" --to > html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables > = Array(MutCell([])); on_line = None; stdin = None; trace = true; > working_directory = None; stderr = true } } > │ 00:00:12 v #5 ! [NbConvertApp] Converting notebook > /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.ipynb to html > │ 00:00:12 v #6 ! > /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbformat/__ > init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will > become a hard error in future nbformat versions. You may want to use > `normalize()` on your notebooks before validations (available since nbformat > 5.1.4). Previous versions of nbformat are fixing this issue transparently, and > will stop doing so in the future. > │ 00:00:12 v #7 ! validate(nb) > │ 00:00:12 v #8 ! > /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbconvert/f > ilters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on > Python 3 > │ 00:00:12 v #9 ! return _pygments_highlight( > │ 00:00:13 v #10 ! [NbConvertApp] Writing 341234 bytes to > /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.html > │ 00:00:13 v #11 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 916 } > │ 00:00:13 d #12 spiral.run / dib / jupyter nbconvert / { > exit_code = 0; jupyter_result_length = 916 } > │ 00:00:13 d #13 runtime.execute_with_options / { > file_name = pwsh; arguments = ["-c", "$counter = 1; $path = > '/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.html'; > (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { > $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = > pwsh -c "$counter = 1; $path = > '/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/test.dib.html'; > (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { > $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = > None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; > trace = true; working_directory = None; stderr = true } } > │ 00:00:13 v #14 runtime.execute_with_options / result / > { exit_code = 0; std_trace_length = 0 } > │ 00:00:13 d #15 spiral.run / dib / html cell ids / { > exit_code = 0; pwsh_replace_html_result_length = 0 } > │ 00:00:13 d #16 spiral.run / dib / { exit_code = 0; > result_length = 41608 } > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### parse the .dib file into .spi format with dibparser > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { . ../../../../apps/parser/dist/DibParser$(_exe) test.dib spi } | Invoke-Block > > ── [ 367.56ms - stdout ] ─────────────────────────────────────────────────────── > │ 00:00:00 d #1 writeDibCode / output: Spi / path: > test.dib > │ 00:00:00 d #2 parseDibCode / output: Spi / file: > test.dib > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### build .fsx file from .spi using supervisor > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { . ../../../../apps/spiral/dist/Supervisor$(_exe) --build-file test.spi > test.fsx } | Invoke-Block > > ── [ 3.37s - stdout ] ────────────────────────────────────────────────────────── > │ <test> > │ </test> > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## compile and format the project > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### compile project with fable targeting optimized rust > > ── pwsh ──────────────────────────────────────────────────────────────────────── > dotnet fable --optimize --lang rs --extension .rs > > ── [ 4.51s - stdout ] ────────────────────────────────────────────────────────── > │ Fable 5.0.0-alpha.9: F# to Rust compiler (status: alpha) > │ > │ Thanks to the contributor! @xtuc > │ Stand with Ukraine! https://standwithukraine.com.ua/ > │ > │ Parsing test.fsproj... > │ Project and references (1 source files) parsed in 2353ms > │ > │ Started Fable compilation... > │ > │ Fable compilation finished in 1103ms > │ > │ ./test.fsx(11,0): (11,2) warning FABLE: For Rust, support > for F# static and module do bindings is disabled by default. It can be enabled > with the 'static_do_bindings' feature. Use at your own risk! > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### fix formatting issues in the .rs file using regex and > set-content > > ── pwsh ──────────────────────────────────────────────────────────────────────── > (Get-Content test.rs) ` > -replace [[regex]]::Escape("),);"), "));" ` > | FixRust ` > | Set-Content test.rs > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### format the rust code using cargo fmt > > ── pwsh ──────────────────────────────────────────────────────────────────────── > cargo fmt -- > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ## build and test the project > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### build the project in release mode using nightly rust > compiler > > ── pwsh ──────────────────────────────────────────────────────────────────────── > cargo build --release > > ── [ 10.22s - stdout ] ───────────────────────────────────────────────────────── > │ warning: > /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/Cargo.toml: the cargo > feature `edition2024` has been stabilized in the 1.85 release and is no longer > necessary to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension/Cargo.toml: the > cargo feature `edition2024` has been stabilized in the 1.85 release and is no > longer necessary to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > /home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/Cargo.toml: the cargo > feature `edition2024` has been stabilized in the 1.85 release and is no longer > necessary to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > /home/runner/work/polyglot/polyglot/apps/chat/contract/Cargo.toml: the cargo > feature `edition2024` has been stabilized in the 1.85 release and is no longer > necessary to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > /home/runner/work/polyglot/polyglot/apps/plot/Cargo.toml: the cargo feature > `edition2024` has been stabilized in the 1.85 release and is no longer necessary > to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > /home/runner/work/polyglot/polyglot/apps/chat/contract/tests/Cargo.toml: the > cargo feature `edition2024` has been stabilized in the 1.85 release and is no > longer necessary to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > /home/runner/work/polyglot/polyglot/examples/rust/exercism/Cargo.toml: the cargo > feature `edition2024` has been stabilized in the 1.85 release and is no longer > necessary to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > /home/runner/work/polyglot/polyglot/lib/math/Cargo.toml: the cargo feature > `edition2024` has been stabilized in the 1.85 release and is no longer necessary > to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ Compiling syn v2.0.90 > │ Compiling byteorder v1.5.0 > │ Compiling linux-raw-sys v0.4.14 > │ Compiling getrandom v0.2.15 > │ Compiling rand_core v0.6.4 > │ Compiling num-traits v0.2.19 > │ Compiling once_cell v1.20.2 > │ Compiling libm v0.2.11 > │ Compiling rustix v0.38.42 > │ Compiling wait-timeout v0.2.0 > │ Compiling quick-error v1.2.3 > │ Compiling bit-vec v0.6.3 > │ Compiling bit-set v0.5.3 > │ Compiling rand_xorshift v0.3.0 > │ Compiling unarray v0.1.4 > │ Compiling memchr v2.7.4 > │ Compiling fable_library_rust v0.1.0 > (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library- > rust) > │ Compiling nom v7.1.3 > │ Compiling zerocopy-derive v0.7.35 > │ Compiling tempfile v3.14.0 > │ Compiling zerocopy v0.7.35 > │ Compiling rusty-fork v0.3.0 > │ Compiling thiserror-impl v1.0.69 > │ Compiling ppv-lite86 v0.2.20 > │ Compiling rand_chacha v0.3.1 > │ Compiling rand v0.8.5 > │ Compiling thiserror v1.0.69 > │ Compiling proptest v1.5.0 > │ Compiling spiral_temp_test v0.0.1 > (/home/runner/work/polyglot/polyglot/apps/spiral/temp/test) > │ Finished `release` profile [optimized] target(s) > in 10.16s > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### run release tests with output enabled > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { cargo test --release -- --show-output } | Invoke-Block > > ── [ 14.83s - stdout ] ───────────────────────────────────────────────────────── > │ warning: > /home/runner/work/polyglot/polyglot/lib/math/Cargo.toml: the cargo feature > `edition2024` has been stabilized in the 1.85 release and is no longer necessary > to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > /home/runner/work/polyglot/polyglot/apps/plot/Cargo.toml: the cargo feature > `edition2024` has been stabilized in the 1.85 release and is no longer necessary > to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > /home/runner/work/polyglot/polyglot/apps/chat/contract/tests/Cargo.toml: the > cargo feature `edition2024` has been stabilized in the 1.85 release and is no > longer necessary to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/Cargo.toml: the cargo > feature `edition2024` has been stabilized in the 1.85 release and is no longer > necessary to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > /home/runner/work/polyglot/polyglot/examples/rust/exercism/Cargo.toml: the cargo > feature `edition2024` has been stabilized in the 1.85 release and is no longer > necessary to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > /home/runner/work/polyglot/polyglot/apps/chat/contract/Cargo.toml: the cargo > feature `edition2024` has been stabilized in the 1.85 release and is no longer > necessary to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension/Cargo.toml: the > cargo feature `edition2024` has been stabilized in the 1.85 release and is no > longer necessary to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ warning: > /home/runner/work/polyglot/polyglot/apps/spiral/temp/cube/Cargo.toml: the cargo > feature `edition2024` has been stabilized in the 1.85 release and is no longer > necessary to be listed in the manifest > │ See > https://doc.rust-lang.org/nightly/cargo/reference/manifest.html#the-edition-fiel > d for more information about using this feature. > │ Compiling bitflags v2.6.0 > │ Compiling zerocopy v0.7.35 > │ Compiling linux-raw-sys v0.4.14 > │ Compiling fastrand v2.3.0 > │ Compiling once_cell v1.20.2 > │ Compiling wait-timeout v0.2.0 > │ Compiling quick-error v1.2.3 > │ Compiling fnv v1.0.7 > │ Compiling bit-vec v0.6.3 > │ Compiling rustix v0.38.42 > │ Compiling num-traits v0.2.19 > │ Compiling ppv-lite86 v0.2.20 > │ Compiling bit-set v0.5.3 > │ Compiling rand_xorshift v0.3.0 > │ Compiling memchr v2.7.4 > │ Compiling rand_chacha v0.3.1 > │ Compiling rand v0.8.5 > │ Compiling unarray v0.1.4 > │ Compiling lazy_static v1.5.0 > │ Compiling minimal-lexical v0.2.1 > │ Compiling fable_library_rust v0.1.0 > (/home/runner/work/polyglot/polyglot/lib/rust/fable/fable_modules/fable-library- > rust) > │ Compiling nom v7.1.3 > │ Compiling thiserror v1.0.69 > │ Compiling tempfile v3.14.0 > │ Compiling rusty-fork v0.3.0 > │ Compiling proptest v1.5.0 > │ Compiling spiral_temp_test v0.0.1 > (/home/runner/work/polyglot/polyglot/apps/spiral/temp/test) > │ Finished `release` profile [optimized] target(s) > in 14.70s > │ Running unittests main.rs > (/home/runner/work/polyglot/polyglot/workspace/target/release/deps/spiral_temp_t > est-be45c853cf37e114) > │ > │ running 3 tests > │ test test_parse_number ... ok > │ test prop_parse_format_idempotent ... ok > │ test > adding_and_then_removing_an_item_from_the_cart_leaves_the_cart_unchanged ... ok > │ > │ successes: > │ > │ ---- prop_parse_format_idempotent stdout ---- > │ input=StringLiteral("{^q{;A*oIN:tM/}Kf-") > │ input=Integer(-783498312442272161) > │ input=Operator("/") > │ input=Integer(6656901008445763153) > │ input=Integer(-3006170582180803873) > │ input=Identifier("s1") > │ input=StringLiteral("lUY:OB.Mo=/IMZ$Tq./{<F.PJ39=") > │ input=Comment("4R|vM%;@0,") > │ input=Comment("$$X$6V%%-N*") > │ input=Identifier("w1Kdc6tx8GlWIg471yiNetTkcRU4Xeu") > │ input=StringLiteral(".:>qO</?^lWD.bjX") > │ input=Integer(-3801654648727455996) > │ input=Comment("%E+t`$=URB,?J.:[fM?Q/:*d,/$&R[.Q") > │ input=Operator(")") > │ input=Identifier("w35wtHVx66wN03bFtDjG") > │ input=Identifier("w0y3WVTZDdlV6txeykFEMLzMFK7p59") > │ input=StringLiteral("`,f=KL5o&;O>H*kF/WG.'8e',ZL+='") > │ input=Integer(1484173259892452089) > │ input=Comment("}_*<\\0~N|sR_E8@@r`A;! \"Q9?Y`") > │ input=Identifier("n99J4ps9c") > │ input=Identifier("n281uDCG3e8v0nt121Nn8QXTkRR") > │ input=StringLiteral(")p%`N?&<{,") > │ input=Operator("-") > │ input=Integer(-264600127641722069) > │ input=StringLiteral("rh") > │ input=StringLiteral("?Z'.v*Y/EcuU") > │ input=Identifier("mLzuHWgqt8bM21F") > │ input=Integer(-1953786740257329514) > │ input=Comment("JW{i%w#pQlb'MM ") > │ input=Comment("%%j#Dh$L7'=;wYC0^\"=%JF<{&ec@.`") > │ input=StringLiteral("HCB8x_/B{[") > │ input=Operator("(") > │ input=Identifier("OnfnZVp5KNK3b4ROh4") > │ input=Identifier("Odn3x0ZVaPBrKs5RY1T1C") > │ input=Comment("Fq{z?&") > │ input=Operator("(") > │ input=Comment("=q:(") > │ input=StringLiteral("s<*^yX&OmF$vS$7h.>") > │ input=Comment("n<`q*IZ<n/h/N\"bq?d?Ju{6'") > │ input=Comment("\"=B^B+p`V2*`zYt`\\,\\+l?*E4W2b&h.Y") > │ input=Integer(-9026580337223446830) > │ input=Identifier("D") > │ input=Operator("-") > │ input=Identifier("eP0A") > │ input=Identifier("AJap8twD74mw") > │ input=Operator("=") > │ input=StringLiteral("'/I%nB:<, S{eIkM0%%3%/$") > │ input=Integer(-7206074084960861920) > │ input=StringLiteral("PRoy/.@0-<C/a") > │ input=Identifier("MISQmnjJ2xHmz29lOEAa6A4FvueCS1") > │ input=Comment("k.]]48sH\\X$ix") > │ input=Comment("R_<9@v:wPV$ Kfw[z%F8/jni>GW7") > │ input=Comment(":Sj.JrED,G | /`q7mP2BEM&?") > │ input=Identifier("Hj7JTB18kEN1SKNVM1gAw3QKlPzxnk9pL") > │ input=StringLiteral("_IAT&Wdadch{IorGCO'r<Es") > │ input=Identifier("lvMqPiac9R9m2EB3") > │ input=Identifier("Xr36Yh3p9r1K") > │ input=StringLiteral("O]HJD^sjH!") > │ input=Comment("'pzPA") > │ input=Integer(-7802712747953158856) > │ input=Comment("y05\"@)1,K|f") > │ input=Comment("%:</kF0") > │ input=Comment("Xe{ku") > │ input=Identifier("i78mZ3Ac1BZPZ7Sl6SMB70IcuWLfBaF") > │ input=Identifier("l6N95ZdWE7LsVQ6dQMCHEqqCI") > │ input=Comment("-b&)e[r `]>m`") > │ input=Identifier("OQuLY") > │ input=StringLiteral("{") > │ input=Operator("(") > │ input=Integer(5548233779901595419) > │ input=StringLiteral("j6Nw{i^bw+%,2:") > │ input=Identifier("Q8vw") > │ input=Integer(8845627017356029180) > │ input=Integer(-937404015976027772) > │ input=StringLiteral("g$Q0qZ:<Q.}$'M:`|*9H`aA]_VG/l/s") > │ input=Identifier("NyaP1tnigOklcC5Es") > │ input=Comment("$&[#\"i{2Q ") > │ input=Identifier("OtM3DaDvN5N6iy2Zrts3kz66Lxi3") > │ input=Comment("d+rzK") > │ input=Identifier("BPm5zwbrpJ5vINEXWExHq7PabPSPn") > │ input=Integer(-7401299599497781158) > │ input=Operator("=") > │ input=StringLiteral(";:R[<%`~)^Em&J|E`N`//&*W/s$") > │ input=Comment("xo<'{\"") > │ input=Integer(-417535586042745459) > │ input=Integer(3774457177682950076) > │ input=Comment("") > │ input=Operator("/") > │ input=StringLiteral("}{`&,o/(h.tX") > │ input=Identifier("J1j") > │ input=StringLiteral(";)") > │ input=StringLiteral("}i<@K<=4cs':BQBv") > │ input=Identifier("T2RN") > │ input=Integer(-8026950628763238246) > │ input=Comment("") > │ input=Integer(1839320284795969634) > │ input=Identifier("e82RemqgZXrMfkp3a7Lfx8tDeOgqzi3As") > │ input=StringLiteral(":_'1yP!~$&$>`*2") > │ input=Comment("`rtxt") > │ input=Comment("{Pi") > │ input=StringLiteral("APB`C#=0x.wdw{p") > │ input=Integer(-3538823895023690303) > │ input=Comment("y:13d`EZ&M<{?~'F&?/t:\"%{=5-y\"<") > │ input=StringLiteral("[OW?x Z5`Wq=%H={JN}=&1D`3]F") > │ input=Operator("*") > │ input=StringLiteral("`]7{=&oe;sNn%}5:0.,hy:G=>5.YL") > │ input=StringLiteral("]9/?c}`=)#ue") > │ input=Comment("X$?0=") > │ input=Comment("v-<S<\"\\YT") > │ input=Identifier("z28Z1fPq4K4H4V") > │ input=Operator("-") > │ input=StringLiteral("") > │ input=StringLiteral("{A(k'kL?/q|T:4") > │ input=Comment("=-1d);9U_I 6`.%=F:)h@g=M<B") > │ input=Operator(")") > │ input=Operator("(") > │ input=StringLiteral("92wWZ1pj{i{W0{&$") > │ input=Comment("?<Po5{\"z<T<'Ew`@pm\\iA0|?d\\K") > │ input=Comment("J\\*^=LIT(tI\"bW~mM:") > │ input=Integer(-6944100891339678850) > │ input=Operator(")") > │ input=StringLiteral("<v2-$?e{&~S/0[_$:+Q") > │ input=Identifier("Ol") > │ input=Operator("(") > │ input=Comment("@RQ\"`zV=") > │ input=StringLiteral("x.')K{=%e*U^g:") > │ input=Operator("/") > │ input=StringLiteral("'5TN") > │ input=Identifier("ie0pYO1vW7h645kNbIfPDmsXyzvu7U9D") > │ input=Operator("-") > │ input=Operator("=") > │ input=Operator("+") > │ input=Identifier("G25X5j40r2eCKLg4yEPMxsaHl18x4bzdb") > │ input=Identifier("E1yBAZUBLCSxrTwTBHGm5cWav719") > │ input=Integer(7842392086551509438) > │ input=StringLiteral("") > │ input=Identifier("ahmsxPQ4Ds0DbLfDENoyXmLK59") > │ input=StringLiteral("nhfY") > │ input=Identifier("XhrKe") > │ input=Comment("$hPZ'';2Ysgnv") > │ input=Operator("+") > │ input=Identifier("A9o7") > │ input=StringLiteral("&U*Fh.") > │ input=Integer(5555137377653682191) > │ input=StringLiteral("n$=G)$f%M/~?Rd") > │ input=Operator("=") > │ input=Integer(403936982257904102) > │ input=Identifier("iisazcZhB5R29fU1UK2ZTE4rpRM2sf") > │ input=StringLiteral("|Ss&j-8GpyGvF1V7`@FyN^{KY[") > │ input=StringLiteral("O|%/')4os>f@?`.=J'2d-'%0TE.?") > │ input=Operator("/") > │ input=Identifier("Om8TQ6jYhBS0u5") > │ input=Comment("O?pI?vN<Rk{/{'z$D%T.3w?2=") > │ input=StringLiteral("@$ZT=YR9") > │ input=Operator("+") > │ input=Operator("(") > │ input=Operator("+") > │ input=Operator(")") > │ input=Integer(-9017859850632012847) > │ input=Operator("=") > │ input=Comment("0tz %w$~=O}/q`Q-]TVe") > │ input=Operator("+") > │ input=Operator("(") > │ input=StringLiteral("|J.s?%?`BJBl>ihX=cj(U76%") > │ input=StringLiteral("z?prTEL_5v'{I`U") > │ input=Identifier("nA80EL51lqW5k4aW") > │ input=Identifier("IFS17s9jI") > │ input=Integer(1036055419133102259) > │ input=StringLiteral("C&6q^~{Sty@U/Cd=o9fSm|") > │ input=Comment("ALl&") > │ input=Operator("-") > │ input=Integer(-7089178766501993029) > │ input=Operator("*") > │ input=StringLiteral("r{&gwPC6") > │ input=StringLiteral("PM@CCu0R=Xd0iy*:f]h3WK*J") > │ input=Identifier("C20GGldV9RSL3MopeJf7VCz56") > │ input=Operator("(") > │ input=Operator("(") > │ input=Operator("*") > │ input=Identifier("vJFqj2BDyWGqyF0Xm") > │ input=Operator("(") > │ input=Integer(-3133798926969914182) > │ input=Comment("P\\tJqG:yaN]0`") > │ input=StringLiteral("/n") > │ input=Integer(-4943033530227650789) > │ input=StringLiteral("<% xc$<$E$,Ax$~rqs;q") > │ input=Comment("") > │ input=Operator("*") > │ input=Identifier("U") > │ input=StringLiteral("$61(%.8%lH8@].*t<") > │ input=Operator("=") > │ input=StringLiteral("/") > │ input=StringLiteral("=/2|ul[%z'oS9ovx`:&,2l$") > │ input=Operator("=") > │ input=StringLiteral("&nV= I{L`r.yvC*Z('=") > │ input=Operator("=") > │ input=Integer(6858368592611446591) > │ input=Operator(")") > │ input=Integer(-7476157701708945265) > │ input=Operator(")") > │ input=Comment("aA.} :,D\\I") > │ input=Identifier("l19Uui8x4vNS0") > │ input=Integer(-5685433002927856652) > │ input=StringLiteral("e!722Ik<_hW2lo(M`e!h7!,?;m| .") > │ input=Comment("e@") > │ input=Comment("|HS?'?P =&`M\\)b&9h?}:`\\!\\=Y0{<\\") > │ input=Comment("K]`N&F_9DA%QA~\\") > │ input=Comment("P]fIoo") > │ input=Operator("(") > │ input=Identifier("M3wPiWicIJ4N6Pa") > │ input=Integer(2849056086393693560) > │ input=Identifier("Opjc9JfUfM44") > │ input=Operator("+") > │ input=StringLiteral("o13LHD> v(/Eb8rq=H$&!&:D") > │ input=Identifier("pSCO4rUSzaBnEvhJf8lA0CF") > │ input=Comment("oMOt`\"7@.m\\*.U`]\\u*@=") > │ input=Operator("(") > │ input=StringLiteral("%P") > │ input=Integer(-7565699573165095762) > │ input=StringLiteral("'U+%,9/XT%") > │ input=Operator("=") > │ input=Operator("-") > │ input=Identifier("dNV5P4586l1dH697") > │ input=Operator("*") > │ input=Operator("/") > │ input=Integer(8210267912921340675) > │ input=Comment("!:\"qU\\'HqD\\-0{^?\"") > │ input=Identifier("W9") > │ input=Comment("=d$&9$") > │ input=Identifier("l7ixH5p2DkZmytO76cVo9LY") > │ input=StringLiteral("0A=F]Rz'K' :+h%c,? vHBI?") > │ input=Identifier("LN7v9A300L91gYPBG2QB08sujiWDB") > │ input=Identifier("Y") > │ input=Comment("1#\"91;&%R&+vI*<H.{1N#/{/NI\"\"..%:") > │ input=Operator("-") > │ input=StringLiteral("s-' Wg`VN!<") > │ input=StringLiteral("?%R .(<>Ge") > │ input=Operator("(") > │ input=Identifier("MKv0AgbCIvYXj8i8zrmlzFz6Q7Ya") > │ input=Identifier("MWwoO3z28Xnst5q4czANosDDZBfZSC9z") > │ input=Comment("&/CaOWA%n[$2]6=v/R==^;4h?=Y5=`") > │ input=Operator("*") > │ input=Comment("%l>7a[{O*") > │ input=Identifier("DJLtsJXZ806T11nRfyUCj") > │ input=Integer(-5551813085294007871) > │ input=Identifier("l8cx") > │ input=Comment("7`~(c{uo+9:\"") > │ input=Integer(6019813581810744448) > │ input=Integer(-7448440149538356722) > │ input=Integer(-5847805533978286491) > │ input=Identifier("PZTIvWIn4N8rN0uA1uITqyjEJiC1g") > │ input=Integer(8856444247118404768) > │ input=Operator("(") > │ input=Operator("*") > │ input=Integer(3327878944632248319) > │ input=Comment("pYF_{=") > │ > │ > │ successes: > │ > adding_and_then_removing_an_item_from_the_cart_leaves_the_cart_unchanged > │ prop_parse_format_idempotent > │ test_parse_number > │ > │ test result: ok. 3 passed; 0 failed; 0 ignored; 0 measured; 0 > filtered out; finished in 0.07s > │ > │ > > ── markdown ──────────────────────────────────────────────────────────────────── > │ ### execute the binary in release mode > > ── pwsh ──────────────────────────────────────────────────────────────────────── > { . $ScriptDir/../../../../workspace/target/release/spiral_temp_test$(_exe) } | > Invoke-Block > > ── [ 7.67ms - stdout ] ───────────────────────────────────────────────────────── > │ app=test > │ 00:00:49 v #3 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 99486 } 00:00:49 d #4 runtime.execute_with_options / { file_name = jupyter; arguments = ["nbconvert", "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.ipynb", "--to", "html", "--HTMLExporter.theme=dark"]; options = { command = jupyter nbconvert "/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.ipynb" --to html --HTMLExporter.theme=dark; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:00:49 v #5 ! [NbConvertApp] Converting notebook /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.ipynb to html 00:00:49 v #6 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbformat/__init__.py:96: MissingIDFieldWarning: Cell is missing an id field, this will become a hard error in future nbformat versions. You may want to use `normalize()` on your notebooks before validations (available since nbformat 5.1.4). Previous versions of nbformat are fixing this issue transparently, and will stop doing so in the future. 00:00:49 v #7 ! validate(nb) 00:00:50 v #8 ! /opt/hostedtoolcache/Python/3.12.11/x64/lib/python3.12/site-packages/nbconvert/filters/highlight.py:71: UserWarning: IPython3 lexer unavailable, falling back on Python 3 00:00:50 v #9 ! return _pygments_highlight( 00:00:50 v #10 ! [NbConvertApp] Writing 377469 bytes to /home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.html 00:00:50 v #11 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 918 } 00:00:50 d #12 spiral.run / dib / jupyter nbconvert / { exit_code = 0; jupyter_result_length = 918 } 00:00:50 d #13 runtime.execute_with_options / { file_name = pwsh; arguments = ["-c", "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.html'; (Get-Content $path -Raw) -replace '(id=\\\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"]; options = { command = pwsh -c "$counter = 1; $path = '/home/runner/work/polyglot/polyglot/apps/spiral/temp/test/build.dib.html'; (Get-Content $path -Raw) -replace '(id=\"cell-id=)[a-fA-F0-9]{8}', { $_.Groups[1].Value + $counter++ } | Set-Content $path"; cancellation_token = None; environment_variables = Array(MutCell([])); on_line = None; stdin = None; trace = true; working_directory = None; stderr = true } } 00:00:50 v #14 runtime.execute_with_options / result / { exit_code = 0; std_trace_length = 0 } 00:00:50 d #15 spiral.run / dib / html cell ids / { exit_code = 0; pwsh_replace_html_result_length = 0 } 00:00:50 d #16 spiral.run / dib / { exit_code = 0; result_length = 100463 }
In [ ]:
{ pwsh ../apps/spiral/vscode/build.ps1 } | Invoke-Block
bun install v1.2.18 (0d4089ea) + @types/node@22.10.10 + @types/vscode@1.96.0 + @vscode/vsce@3.2.1 + npm-check-updates@17.1.14 + typescript@5.5.0-dev.20240514 + vscode@1.1.37 225 packages installed [1062.00ms] Blocked 1 postinstall. Run `bun pm untrusted` for details. polyglot/scripts/core.ps1/GetFullPath / Path: ./LICENSE / Location: /home/runner/work/polyglot/polyglot/apps/spiral/vscode / ResolvedLocation: /home/runner/work/polyglot/polyglot/apps/spiral/vscode polyglot/scripts/core.ps1/GetFullPath / FullPath: /home/runner/work/polyglot/polyglot/apps/spiral/vscode/LICENSE polyglot/scripts/core.ps1/EnsureSymbolicLink / Parent: /home/runner/work/polyglot/polyglot/apps/spiral/vscode / Path: /home/runner/work/polyglot/polyglot/apps/spiral/vscode/LICENSE polyglot/scripts/core.ps1/GetFullPath / Path: ../../../LICENSE / Location: /home/runner/work/polyglot/polyglot/apps/spiral/vscode / ResolvedLocation: /home/runner/work/polyglot/polyglot/apps/spiral/vscode polyglot/scripts/core.ps1/GetFullPath / FullPath: /home/runner/work/polyglot/polyglot/LICENSE polyglot/scripts/core.ps1/EnsureSymbolicLink / FullPath: /home/runner/work/polyglot/polyglot/apps/spiral/vscode/LICENSE / Target: /home/runner/work/polyglot/polyglot/LICENSE / ResolvedTarget: /home/runner/work/polyglot/polyglot/LICENSE polyglot/scripts/core.ps1/EnsureSymbolicLink / Creating symlink: /home/runner/work/polyglot/polyglot/apps/spiral/vscode/LICENSE -> /home/runner/work/polyglot/polyglot/LICENSE System.Management.Automation.RemoteException out/src/extension.js 2.4kb out/media/cellOutputScrollButtons.js 1.9kb System.Management.Automation.RemoteException ⚡ Done in 3ms ::warning::Neither a .vscodeignore file nor a "files" property in package.json was found. To ensure only necessary files are included in your extension, add a .vscodeignore file or specify the "files" property in package.json. More info: https://aka.ms/vscode-vscodeignore%0A Files included in the VSIX: spiral-vscode-0.0.1.vsix ├─ [Content_Types].xml ├─ extension.vsixmanifest └─ extension/ ├─ .gitignore [0.01 KB] ├─ LICENSE.txt [33.71 KB] ├─ build.ps1 [0.41 KB] ├─ bun.lockb [86.98 KB] ├─ compile.ps1 [0.48 KB] ├─ package.json [1.55 KB] ├─ media/ │ └─ cellOutputScrollButtons.ts [1.8 KB] ├─ out/ │ ├─ media/ │ │ └─ cellOutputScrollButtons.js [1.86 KB] │ └─ src/ │ └─ extension.js [2.44 KB] └─ src/ └─ extension.ts [1.38 KB] Packaged: out/spiral-vscode-0.0.1.vsix (12 files, 49.06 KB)
In [ ]:
{ pwsh ../apps/ipfs/build.ps1 } | Invoke-Block
bun install v1.2.18 (0d4089ea) + @types/node@22.10.10 + npm-check-updates@17.1.14 + typescript@5.5.0-dev.20240401 + nft.storage@7.2.0 220 packages installed [534.00ms] Blocked 1 postinstall. Run `bun pm untrusted` for details.
In [ ]:
{ pwsh ./outdated.ps1 } | Invoke-Block
Paket version 9.0.2+a9b12aaeb8d8d5e47a415a3442b7920ed04e98e0 Resolving dependency graph... Could not detect any platforms from 'net10.0' in Microsoft.AspNetCore.Connections.Abstractions 10.0.0-preview.5.25277.114, please tell the package authors Could not detect any platforms from 'net10.0' in System.Management 10.0.0-preview.5.25277.114, please tell the package authors Could not detect any platforms from 'net10.0' in Microsoft.AspNetCore.Http.Connections.Common 10.0.0-preview.5.25277.114, please tell the package authors Could not detect any platforms from 'net10.0' in Microsoft.AspNetCore.Http.Connections.Client 10.0.0-preview.5.25277.114, please tell the package authors Could not detect any platforms from 'net10.0' in Microsoft.AspNetCore.SignalR.Common 10.0.0-preview.5.25277.114, please tell the package authors Could not detect any platforms from 'net10.0' in Microsoft.AspNetCore.SignalR.Client 10.0.0-preview.5.25277.114, please tell the package authors Could not detect any platforms from 'net10.0' in Microsoft.AspNetCore.SignalR.Client.Core 10.0.0-preview.5.25277.114, please tell the package authors Could not detect any platforms from 'net10.0' in Microsoft.AspNetCore.SignalR.Protocols.Json 10.0.0-preview.5.25277.114, please tell the package authors Could not detect any platforms from 'net10.0' in Microsoft.Extensions.Features 10.0.0-preview.5.25277.114, please tell the package authors Could not detect any platforms from 'net10.0' in System.IO.Pipelines 10.0.0-preview.5.25277.114, please tell the package authors Could not detect any platforms from 'net10.0' in Microsoft.Extensions.Logging.Abstractions 10.0.0-preview.5.25277.114, please tell the package authors Could not detect any platforms from 'net10.0' in Microsoft.Extensions.Options 10.0.0-preview.5.25277.114, please tell the package authors Could not detect any platforms from 'net10.0' in System.Net.ServerSentEvents 10.0.0-preview.5.25277.114, please tell the package authors Could not detect any platforms from 'net10.0' in System.Text.Json 10.0.0-preview.5.25277.114, please tell the package authors Could not detect any platforms from 'net10.0' in Microsoft.Extensions.DependencyInjection 10.0.0-preview.5.25277.114, please tell the package authors Could not detect any platforms from 'net10.0' in Microsoft.Extensions.Logging 10.0.0-preview.5.25277.114, please tell the package authors Could not detect any platforms from 'net10.0' in System.Threading.Channels 10.0.0-preview.5.25277.114, please tell the package authors Could not detect any platforms from 'net10.0' in System.CodeDom 10.0.0-preview.5.25277.114, please tell the package authors Could not detect any platforms from 'net10.0' in Microsoft.Extensions.DependencyInjection.Abstractions 10.0.0-preview.5.25277.114, please tell the package authors Could not detect any platforms from 'net10.0' in System.Diagnostics.DiagnosticSource 10.0.0-preview.5.25277.114, please tell the package authors Could not detect any platforms from 'net10.0' in Microsoft.Extensions.Primitives 10.0.0-preview.5.25277.114, please tell the package authors Could not detect any platforms from 'net10.0' in System.Text.Encodings.Web 10.0.0-preview.5.25277.114, please tell the package authors Outdated packages found: Group: Main * Argu 6.2.4 -> 6.2.5 * Expecto.FsCheck 11.0.0-alpha8 -> 11.0.0-alpha8-fscheck2 * Fable.Core 4.3 -> 4.5.0 * Falco.Markup 1.1.1 -> 1.2.0 * FsCheck 3.1 -> 2.16.6 * FSharp.Core 9.0.300-beta.25124.4 -> 10.0.100-beta.25277.114 * Microsoft.AspNetCore.App.Ref 9.0.3 -> 10.0.0-preview.5.25277.114 * Microsoft.AspNetCore.Connections.Abstractions 7.0 -> 10.0.0-preview.5.25277.114 * Microsoft.AspNetCore.Http.Connections.Client 7.0 -> 10.0.0-preview.5.25277.114 * Microsoft.AspNetCore.Http.Connections.Common 7.0 -> 10.0.0-preview.5.25277.114 * Microsoft.AspNetCore.SignalR.Client 7.0 -> 10.0.0-preview.5.25277.114 * Microsoft.AspNetCore.SignalR.Client.Core 7.0 -> 10.0.0-preview.5.25277.114 * Microsoft.AspNetCore.SignalR.Common 7.0 -> 10.0.0-preview.5.25277.114 * Microsoft.AspNetCore.SignalR.Protocols.Json 7.0 -> 10.0.0-preview.5.25277.114 * Microsoft.Bcl.AsyncInterfaces 9.0.3 -> 10.0.0-preview.5.25277.114 * Microsoft.Extensions.DependencyInjection 9.0.3 -> 10.0.0-preview.5.25277.114 * Microsoft.Extensions.DependencyInjection.Abstractions 9.0.3 -> 10.0.0-preview.5.25277.114 * Microsoft.Extensions.Features 7.0 -> 10.0.0-preview.5.25277.114 * Microsoft.Extensions.Logging 9.0.3 -> 10.0.0-preview.5.25277.114 * Microsoft.Extensions.Logging.Abstractions 9.0.3 -> 10.0.0-preview.5.25277.114 * Microsoft.Extensions.Options 9.0.3 -> 10.0.0-preview.5.25277.114 * Microsoft.Extensions.Primitives 9.0.3 -> 10.0.0-preview.5.25277.114 * System.CodeDom 9.0.3 -> 10.0.0-preview.5.25277.114 * System.Configuration.ConfigurationManager 9.0.3 -> 9.0.6 * System.Diagnostics.EventLog 9.0.3 -> 9.0.6 * System.IO.Pipelines 9.0.3 -> 10.0.0-preview.5.25277.114 * System.Management 7.0 -> 10.0.0-preview.5.25277.114 * System.Security.Cryptography.ProtectedData 9.0.3 -> 9.0.6 * System.Threading.Channels 9.0.3 -> 10.0.0-preview.5.25277.114 * System.Threading.Tasks.Extensions 4.6.1 -> 4.6.3 Total time taken: 13 seconds Paket omitted 22 warnings. You can see them in verbose mode. CheckToml / toml: /home/runner/work/polyglot/polyglot/workspace/Cargo.toml chat_contract_tests ================ Name Project Compat Latest Kind Platform ---- ------- ------ ------ ---- -------- android-tzdata 0.1.1 Removed Removed Normal cfg(target_os = "android") android_system_properties 0.1.5 Removed Removed Normal cfg(target_os = "android") autocfg 1.4.0 Removed Removed Build --- bumpalo 3.16.0 Removed Removed Normal --- cc 1.2.4 Removed Removed Build --- cfg-if 1.0.0 Removed Removed Normal --- chrono 0.4.39 Removed Removed Normal --- core-foundation-sys 0.8.7 Removed Removed Normal cfg(any(target_os = "macos", target_os = "ios")) equivalent 1.0.1 Removed Removed Normal --- hashbrown 0.15.2 0.12.3 0.12.3 Normal --- iana-time-zone 0.1.61 Removed Removed Normal cfg(unix) iana-time-zone-haiku 0.1.2 Removed Removed Normal cfg(target_os = "haiku") indexmap 2.7.0 1.9.3 1.9.3 Normal --- jobserver 0.1.32 Removed Removed Normal --- js-sys 0.3.76 Removed Removed Normal cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi")))) js-sys 0.3.76 Removed Removed Normal cfg(all(target_arch = "wasm32", target_os = "unknown")) libc 0.2.168 Removed Removed Normal --- libc 0.2.168 Removed Removed Normal cfg(unix) libm 0.2.11 Removed Removed Normal --- log 0.4.22 Removed Removed Normal --- near-sandbox-utils 0.8.0 0.9.0 0.9.0 Build --- num-traits 0.2.19 Removed Removed Normal --- once_cell 1.20.2 Removed Removed Normal --- proc-macro2 1.0.92 Removed Removed Normal --- quote 1.0.37 Removed Removed Normal --- serde 1.0.216 Removed Removed Normal --- serde_derive 1.0.216 Removed Removed Normal --- shlex 1.3.0 Removed Removed Normal --- syn 2.0.90 Removed Removed Normal --- unicode-ident 1.0.14 Removed Removed Normal --- wasm-bindgen 0.2.99 Removed Removed Normal --- wasm-bindgen 0.2.99 Removed Removed Normal cfg(all(target_arch = "wasm32", not(any(target_os = "emscripten", target_os = "wasi")))) wasm-bindgen 0.2.99 Removed Removed Normal cfg(all(target_arch = "wasm32", target_os = "unknown")) wasm-bindgen-backend 0.2.99 Removed Removed Normal --- wasm-bindgen-macro 0.2.99 Removed Removed Normal --- wasm-bindgen-macro-support 0.2.99 Removed Removed Normal --- wasm-bindgen-shared 0.2.99 Removed Removed Normal --- windows-core 0.52.0 Removed Removed Normal cfg(target_os = "windows") windows-targets 0.52.6 Removed Removed Normal --- windows-targets 0.52.6 Removed Removed Normal cfg(windows) windows_aarch64_gnullvm 0.52.6 Removed Removed Normal aarch64-pc-windows-gnullvm windows_aarch64_msvc 0.52.6 Removed Removed Normal cfg(all(target_arch = "aarch64", target_env = "msvc", not(windows_raw_dylib))) windows_i686_gnu 0.52.6 Removed Removed Normal cfg(all(target_arch = "x86", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib))) windows_i686_gnullvm 0.52.6 Removed Removed Normal i686-pc-windows-gnullvm windows_i686_msvc 0.52.6 Removed Removed Normal cfg(all(target_arch = "x86", target_env = "msvc", not(windows_raw_dylib))) windows_x86_64_gnu 0.52.6 Removed Removed Normal cfg(all(target_arch = "x86_64", target_env = "gnu", not(target_abi = "llvm"), not(windows_raw_dylib))) windows_x86_64_gnullvm 0.52.6 Removed Removed Normal x86_64-pc-windows-gnullvm windows_x86_64_msvc 0.52.6 Removed Removed Normal cfg(all(any(target_arch = "x86_64", target_arch = "arm64ec"), target_env = "msvc", not(windows_raw_dylib))) CheckToml / toml: /home/runner/work/polyglot/polyglot/apps/chat/contract/Cargo.toml error: failed to parse manifest at `/home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/sha2-0.11.0-rc.0/Cargo.toml` System.Management.Automation.RemoteException Caused by: feature `edition2024` is required System.Management.Automation.RemoteException The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0). Consider trying a more recent nightly release. See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature. # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: /home/runner/work/polyglot/polyglot/scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock: 'cargo outdated -m $toml @_args' CheckToml / toml: /home/runner/work/polyglot/polyglot/apps/chat/contract/tests/Cargo.toml error: failed to download `sha2 v0.11.0-rc.0` System.Management.Automation.RemoteException Caused by: unable to get packages from source System.Management.Automation.RemoteException Caused by: failed to parse manifest at `/home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/sha2-0.11.0-rc.0/Cargo.toml` System.Management.Automation.RemoteException Caused by: feature `edition2024` is required System.Management.Automation.RemoteException The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0). Consider trying a more recent nightly release. See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature. # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: /home/runner/work/polyglot/polyglot/scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock: 'cargo outdated -m $toml @_args' CheckToml / toml: /home/runner/work/polyglot/polyglot/apps/plot/Cargo.toml error: failed to download `sha2 v0.11.0-rc.0` System.Management.Automation.RemoteException Caused by: unable to get packages from source System.Management.Automation.RemoteException Caused by: failed to parse manifest at `/home/runner/.cargo/registry/src/index.crates.io-6f17d22bba15001f/sha2-0.11.0-rc.0/Cargo.toml` System.Management.Automation.RemoteException Caused by: feature `edition2024` is required System.Management.Automation.RemoteException The package requires the Cargo feature called `edition2024`, but that feature is not stabilized in this version of Cargo (1.81.0). Consider trying a more recent nightly release. See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2024 for more information about the status of this feature. # Invoke-Block / $retry: 1/1 / $Location: / Get-Location: /home/runner/work/polyglot/polyglot/scripts / $OnError: Continue / $exitcode: 1 / $Error: '' / $ScriptBlock: 'cargo outdated -m $toml @_args' CheckJson / json: /home/runner/work/polyglot/polyglot $ npm-check-updates --target greatest Using bun Checking /home/runner/work/polyglot/polyglot/package.json System.Management.Automation.RemoteException @types/node ~22.10 → ~24.0 npm-check-updates ~17.1.14 → ~18.0.1 Run ncu --target greatest -u to upgrade package.json CheckJson / json: /home/runner/work/polyglot/polyglot/apps/ipfs $ npm-check-updates --target greatest Using bun Checking /home/runner/work/polyglot/polyglot/apps/ipfs/package.json System.Management.Automation.RemoteException @types/node ~22.10 → ~24.0 npm-check-updates ~17.1.14 → ~18.0.1 Run ncu --target greatest -u to upgrade package.json CheckJson / json: /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension $ npm-check-updates --target greatest Using bun Checking /home/runner/work/polyglot/polyglot/apps/spiral/temp/extension/package.json System.Management.Automation.RemoteException @playwright/test 1.44.0 → 1.54.0-alpha-2025-07-03 @types/chrome ~0.0.268 → ~0.0.329 npm-check-updates ~17.1.14 → ~18.0.1 Run ncu --target greatest -u to upgrade package.json CheckJson / json: /home/runner/work/polyglot/polyglot/apps/spiral/vscode $ npm-check-updates --target greatest Using bun Checking /home/runner/work/polyglot/polyglot/apps/spiral/vscode/package.json System.Management.Automation.RemoteException @types/node ~22.10 → ~24.0 @types/vscode ~1.96 → ~1.101 npm-check-updates ~17.1.14 → ~18.0.1 Run ncu --target greatest -u to upgrade package.json CheckJson / json: /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/VS Code Plugin $ npm-check-updates --target greatest Checking /home/runner/work/polyglot/polyglot/deps/The-Spiral-Language/VS Code Plugin/package.json System.Management.Automation.RemoteException @microsoft/signalr 8.0.0 → 8.0.7 @types/node ~22.10 → ~24.0 @types/vscode ~1.95 → ~1.101 @vscode/vsce ~3.2 → ~3.6 esbuild ~0.24 → ~0.25 npm-check-updates ~17.1.14 → ~18.0.1 portfinder ^1.0.32 → ^1.0.37 Run ncu --target greatest -u to upgrade package.json