tala-core 0.1.0 → 0.2.0
raw patch · 42 files changed
+124/−87 lines, 42 filesdep ~tala-coredep ~tala-syntax
Dependency ranges changed: tala-core, tala-syntax
Files
- Benches/Main.hs +1/−1
- LICENSE-EXCEPTION +78/−41
- src/Progmasoft/Tala/Core.hs +1/−1
- src/Progmasoft/Tala/Core/Artifact.hs +1/−1
- src/Progmasoft/Tala/Core/CorePrep.hs +1/−1
- src/Progmasoft/Tala/Core/CorePrep/Verifier.hs +1/−1
- src/Progmasoft/Tala/Core/CorePrep/Wire.hs +1/−1
- src/Progmasoft/Tala/Core/CorePrep/Wire/Decode.hs +1/−1
- src/Progmasoft/Tala/Core/CorePrep/Wire/Encode.hs +1/−1
- src/Progmasoft/Tala/Core/CorePrep/Wire/Format.hs +1/−1
- src/Progmasoft/Tala/Core/Monomorphization.hs +1/−1
- src/Progmasoft/Tala/Core/Monomorphization/Discovery.hs +1/−1
- src/Progmasoft/Tala/Core/Monomorphization/Graph.hs +1/−1
- src/Progmasoft/Tala/Core/Monomorphization/Types.hs +1/−1
- src/Progmasoft/Tala/Core/Optimizer.hs +1/−1
- src/Progmasoft/Tala/Core/Optimizer/Analysis.hs +1/−1
- src/Progmasoft/Tala/Core/Optimizer/Constant.hs +1/−1
- src/Progmasoft/Tala/Core/Optimizer/ControlFlow.hs +1/−1
- src/Progmasoft/Tala/Core/Optimizer/EffectInference.hs +1/−1
- src/Progmasoft/Tala/Core/Optimizer/Floating.hs +1/−1
- src/Progmasoft/Tala/Core/Optimizer/Inline.hs +1/−1
- src/Progmasoft/Tala/Core/Optimizer/IntegerFacts.hs +1/−1
- src/Progmasoft/Tala/Core/Optimizer/Liveness.hs +1/−1
- src/Progmasoft/Tala/Core/Optimizer/Pipeline.hs +1/−1
- src/Progmasoft/Tala/Core/Optimizer/Types.hs +1/−1
- src/Progmasoft/Tala/Core/Scalar.hs +1/−1
- src/Progmasoft/Tala/Core/Specialization.hs +1/−1
- src/Progmasoft/Tala/Core/Symbols.hs +1/−1
- src/Progmasoft/Tala/Core/Template.hs +1/−1
- src/Progmasoft/Tala/Core/Verifier.hs +1/−1
- src/Progmasoft/Tala/Core/Wire.hs +1/−1
- src/Progmasoft/Tala/Desugarer.hs +1/−1
- src/Progmasoft/Tala/Desugarer/Boundary.hs +1/−1
- src/Progmasoft/Tala/Desugarer/Branching.hs +1/−1
- src/Progmasoft/Tala/Desugarer/Captures.hs +1/−1
- src/Progmasoft/Tala/Desugarer/Effects.hs +1/−1
- src/Progmasoft/Tala/Desugarer/Handing.hs +1/−1
- src/Progmasoft/Tala/Desugarer/Laziness.hs +1/−1
- src/Progmasoft/Tala/Desugarer/Sequencing.hs +1/−1
- src/Progmasoft/Tala/Desugarer/Symbols.hs +1/−1
- src/Progmasoft/Tala/Desugarer/Workers.hs +1/−1
- tala-core.cabal +6/−6
Benches/Main.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 module Main (main) where
LICENSE-EXCEPTION view
@@ -1,81 +1,118 @@-Progmasoft Linking Exception, Version 1.1 +Progmasoft Linking Exception, Version 2.0 -This Exception is an additional permission to the Mozilla Public License, version 2.0 ("MPL-2.0"). It is intended to preserve MPL-2.0's file-level obligations for Covered Software while removing doubt about combining that software with independent code. Capitalized terms not defined here have the meanings given in MPL-2.0. +This Exception is an additional permission granted with the Mozilla Public License, version 2.0 ("MPL-2.0"). It keeps MPL-2.0's file-level copyleft for Covered Software and removes doubt about four things: combining Covered Software with other work, what compilers do to code, what programs built with Covered Software tools owe, and the interfaces other work needs in order to use Covered Software. It does not change the text of MPL-2.0. Capitalized terms not defined here have the meanings given in MPL-2.0, and "You" has the meaning given there. 1. Definitions -"Independent Component" means software contained in one or more Source Code Form files that neither contain Covered Software nor are Modifications of Covered Software. A component does not cease to be independent merely because compilation, static or dynamic linking, loading, packaging, or deployment places its Executable Form in the same file, process, address space, archive, image, or distribution as Covered Software. +"Independent Work" means software or other material, in any form, that is neither Covered Software nor a Modification. Sections 3 and 5 say what does not change that. -"Combined Work" means a Larger Work that combines Covered Software with one or more Independent Components by any technical means, including static or dynamic linking, loading, embedding, plugins, extensions, language bindings, an API, ABI, FFI boundary, command-line interface, protocol, inter-process communication mechanism, or file format. +"Tool" means Covered Software that You run to produce material: a compiler, linker, code generator, build system, package manager, formatter, or similar program. -"Output" means material produced by executing Covered Software, including generated source, object code, executable code, intermediate representations, documentation, reports, diagnostics, formatted text, and analysis results. +"Input" means the material You give a Tool to process, other than the Tool's own files. -2. Additional Permission for Combined Works +"Output" means the material a Tool writes when it runs, including source code, intermediate representations, object code, executable code, packages, documentation, reports, diagnostics, formatted text, and analysis results. -Subject to compliance with MPL-2.0 for the Covered Software, each recipient has a worldwide, royalty-free, non-exclusive, irrevocable additional copyright permission to create, reproduce, use, modify, display, perform, make available, and distribute a Combined Work under terms of the recipient's choice, including proprietary or closed-source terms. +"Generated Code" means the part of an Output that a Tool copies, expands, or derives from its own Covered Software in its ordinary operation, rather than from Input. Examples are templates, parser skeletons, entry points, stubs, thunks, tables, metadata, instantiated generics, and project scaffolding. -Those chosen terms may govern Independent Components and other portions of the Combined Work, but must not restrict or alter any recipient's rights in the Covered Software under MPL-2.0 and this Exception. No distributor is required to relicense an Independent Component merely because it forms part of a Combined Work. +"Runtime Material" means Covered Software that (a) the copyright holders of a Tool identify, in the documentation they publish, as that Tool's runtime library or standard library, and (b) is compiled, linked, embedded into, or placed beside an Output because the Output uses it when it runs. A license text or other file installed for documentation only is not Runtime Material. -3. Boundary of Covered Software +"Interface Material" means declarations, type and data layouts, constants, enumerations, macros, function and method signatures, attributes, wire and file formats, and the short inline definitions that an interface needs in order to be used, to the minimum extent necessary to call, implement, extend, bind to, or interoperate with Covered Software. -Linking, loading, calling, communicating with, packaging, installing, or distributing an Independent Component with Covered Software does not, by itself: +2. Larger Works -(a) make the Independent Component Covered Software or a Modification; -(b) subject the Independent Component's Source Code Form to MPL-2.0; or -(c) expand MPL-2.0 beyond files that are Covered Software or Modifications under MPL-2.0. +You may create, reproduce, use, modify, make available, and distribute a Larger Work that combines Covered Software with Independent Work under terms of Your choice, including proprietary terms, provided You comply with MPL-2.0 for the Covered Software as this Exception adjusts it. The combination may be made by any technical means, including static or dynamic linking, loading, embedding, plugins, language bindings, an API, ABI, or FFI boundary, a command-line interface, a protocol, inter-process communication, or a file format. It does not matter whether the works end up in one file, process, address space, archive, image, or deployment. The word "separate" in the definition of Larger Work in MPL-2.0 Section 1.7 refers to Source Code Form. -If Source Code Form from Covered Software is copied into another file, or a new Source Code Form file contains Covered Software, MPL-2.0 determines whether that file is a Modification. Labels, file extensions, build boundaries, code generation, or later separation of files do not avoid that determination. +Your terms may govern the Independent Work and the Larger Work as a whole. They must not limit or alter a recipient's rights in the Source Code Form of the Covered Software. -4. Outputs +Neither MPL-2.0 nor this Exception requires You, for a Larger Work, to provide the Source Code Form of Independent Work, to provide object files or anything else that allows relinking, to allow reverse engineering of Independent Work, or to provide installation information, keys, or credentials. -An Output does not become Covered Software merely because Covered Software produced, transformed, linked, or processed it. The copyright license chosen for input material does not change merely because Covered Software processes that material. +3. What Compilation Does Not Change -If an Output contains copyrightable Source Code Form or other copyrightable material copied or derived from Covered Software, this Exception does not remove MPL-2.0 obligations from that incorporated material. Facts, ideas, interfaces, names, signatures, diagnostics, and other material not protected by copyright are not converted into Covered Software by this Exception. +The following do not make Independent Work into Covered Software or a Modification, and do not subject its Source Code Form to MPL-2.0: -5. Preservation of MPL-2.0 Obligations +(a) calling, linking to, loading, subclassing, implementing, or otherwise using Covered Software through its interfaces; +(b) including, importing, or referring to a Covered Software header, module, or package from a file of Independent Work; and +(c) macro expansion, template or generic instantiation, specialization, inlining, link-time or whole-program optimization, just-in-time compilation, or any comparable compiler transformation that places Covered Software in the compiled form of Independent Work. -This Exception does not remove, replace, waive, or narrow any MPL-2.0 obligation applicable to Covered Software. In particular: +Material placed in a compiled form under (c) is the Executable Form of the Covered Software it came from. Section 4 or Section 5 releases it when it is Generated Code, Runtime Material, or Interface Material. Otherwise MPL-2.0 Section 3.2 applies to it, and Section 7 says how to meet that Section. -(a) Covered Software in Source Code Form and every Modification remain subject to MPL-2.0; -(b) distribution in Executable Form remains subject to MPL-2.0 Section 3.2, including the obligation to inform recipients how to obtain the corresponding Source Code Form when that section applies; -(c) notices protected by MPL-2.0 Section 3.4 must be retained; and -(d) this Exception grants no permission to withhold Source Code Form that MPL-2.0 requires to be made available. +If You copy Covered Software in Source Code Form into a file, other than as Section 4 or Section 5 allows, that file is a Modification. Labels, file extensions, build boundaries, or later separation of files do not change that. -Distribution of a Combined Work under terms of choice is permission for the Combined Work as a whole and its Independent Components. It is not permission to relicense a Covered Software file. +4. Generated Code and Programs Built with Tools -6. Packaging and Deployment +4.1 Output is not Covered Software merely because a Tool produced it. Running a Tool over Input does not change the license of the Input, and material in an Output that comes from Input has the same license as that Input. -Placing Covered Software and an Independent Component in the same archive, package, installer, application bundle, container image, firmware image, distribution medium, hosted deployment, or process does not change their respective copyright licenses. Network interaction or operation as separate processes is not required for independence. +4.2 You may use, modify, and distribute Generated Code, in any form, under terms of Your choice. MPL-2.0 Sections 3.1 through 3.4 do not apply to it. You need not offer its source, keep its notices, or attribute it. -7. Direct Grant to Recipients +4.3 You may distribute Runtime Material in Executable Form as part of, or together with, an Output that uses it, under terms of Your choice. MPL-2.0 Sections 3.1 through 3.4 do not apply to that distribution. The Source Code Form of Runtime Material stays under MPL-2.0, and this Section does not permit distributing Runtime Material on its own. This Section covers Runtime Material You have not changed, and a Modification of it only when You make that Modification available under Section 7. -The additional permission in this Exception is granted directly by the copyright holders applying it to every recipient of the applicable Covered Software. A distributor need not sublicense this Exception. Distribution through one or more intermediaries does not reduce the permission, and termination of an upstream distributor's rights does not terminate rights already received by a compliant downstream recipient. +4.4 Limits. This Section 4 does not apply to: -8. Termination and Reinstatement +(a) Covered Software given to a Tool as Input, unless it is Runtime Material. Compiling, formatting, or transforming Covered Software with a Tool leaves its obligations in place; +(b) material that an unmodified Tool would not write for the same Input and options, unless You make the change that causes it available under Section 7. Changing a Tool so that it copies more of its Covered Software into Output does not widen this Section; or +(c) an Output produced for the purpose of obtaining a Tool's Covered Software rather than for using the Tool. Such material remains subject to MPL-2.0. -This Exception has no separate patent-litigation, field-of-use, combination, or compatibility termination condition. A recipient may exercise it only while entitled to exercise the corresponding MPL-2.0 copyright rights. If those rights terminate under MPL-2.0 Section 5.1, exercise of this Exception for the affected Covered Software is suspended to the same extent and is reinstated when, and to the extent that, the MPL-2.0 rights are reinstated. +4.5 Intermediate representations and every other kind of Output are treated alike. An Output keeps the permissions of this Section after it leaves You. If Your rights in a Tool end, that does not affect Output You have already made or the rights of anyone who received it. -A recipient may elect to use Covered Software under MPL-2.0 without relying on this Exception. +4.6 These permissions lift conditions; they do not end the license. Generated Code and Runtime Material stay licensed to You under MPL-2.0 Section 2, and MPL-2.0 Sections 6 and 7 continue to apply to them. -9. Other Rights +5. Interface Material and Examples -This Exception grants copyright permission only. It grants no trademark, trade dress, service mark, publicity, confidential-information, or patent rights. Patent rights, if any, arise only under MPL-2.0 or a separately applicable patent grant. Nothing in this Exception limits rights arising independently under exhaustion, fair use, fair dealing, implied license, estoppel, or other applicable law. +You may copy Interface Material into Independent Work, and translate it into another language, to the extent needed to use or interoperate with Covered Software. The result is not a Modification, and MPL-2.0 Section 3 does not apply to it, in Source Code Form or in Executable Form. This covers header files, bindings, and declarations in another language. It does not cover the implementation behind an interface. +You may use, copy, and adapt code that the documentation of Covered Software presents as an example or as a starting point for Your own project, under terms of Your choice and without any obligation of MPL-2.0 Section 3. + +6. What This Exception Keeps + +Except where Sections 4 and 5 say otherwise: + +(a) Covered Software in Source Code Form, and every Modification, stay under MPL-2.0 and cannot be relicensed through this Exception; +(b) distributing Covered Software in Executable Form stays subject to MPL-2.0 Section 3.2, as Section 7 explains; +(c) notices protected by MPL-2.0 Section 3.4 stay in place in Source Code Form; and +(d) nothing here allows You to withhold Source Code Form that MPL-2.0 requires You to make available. + +7. Telling Recipients How to Obtain Source + +For Covered Software You have not changed, You satisfy MPL-2.0 Section 3.2(a) by giving recipients of the Executable Form a notice that names the Covered Software and its version and gives an address where the corresponding Source Code Form is publicly available. You may put that notice in documentation, in an about screen, in a notice file, or in a software bill of materials. The copyright holders' own public release of that version is a sufficient source; You need not host a copy, and You are not in breach if that release later stops being available. + +For a Modification, the same notice must give an address where the Source Code Form of the exact version You distributed can be obtained by reasonable means and in a timely manner. An address that follows a branch or otherwise changes over time is not enough. + +8. Contributors and Direct Grant + +Every Contributor who distributes Covered Software that carries an identification under Section 12 grants this Exception for that Contributor's Contributions. + +This Exception is granted directly to every recipient of Covered Software, for the duration of the copyright in it. A distributor need not sublicense it. Distribution through intermediaries does not reduce it, and the end of a distributor's rights does not end rights already received by others. + +You may use Covered Software under MPL-2.0 without relying on this Exception. As an exception to MPL-2.0 Section 3.4, You may remove the identification of this Exception from a file You modify; Your version of that file is then offered by You under MPL-2.0 alone. Earlier copies keep this Exception. + +9. Termination + +This Exception has no termination condition of its own. You may rely on Sections 2, 3, and 5 only while You hold the corresponding rights under MPL-2.0. If those rights end under MPL-2.0 Section 5.1 or 5.2, those permissions end for the affected Covered Software to the same extent, and return if and to the extent those rights are reinstated. This does not reach Independent Work, nor the rights of recipients that MPL-2.0 Section 5.3 preserves, nor Section 4.5. + 10. Relationship to MPL-2.0 -MPL-2.0 and this Exception are read together. If this Exception and MPL-2.0 cannot both be given effect with respect to the creation or distribution of a Combined Work, this Exception controls only to the minimum extent necessary to provide the additional permission stated in Sections 2 through 6. MPL-2.0 controls in every other respect. +MPL-2.0 and this Exception are read together. This Exception is a permission from copyright holders and is not a modified version of MPL-2.0. Where the two cannot both be given effect, this Exception controls only as far as needed to give the permissions in Sections 2 through 5 and 7 through 9, and MPL-2.0 controls in every other respect. This Exception continues to apply if You use Covered Software under a later version of the Mozilla Public License as MPL-2.0 Section 10.2 allows. -Nothing here changes whether Covered Software is "Incompatible With Secondary Licenses" or changes the operation of MPL-2.0 Section 3.3 for a work governed by a Secondary License. +MPL-2.0 Sections 6, 7, 8, and 9 apply to this Exception. It is provided without warranty. -11. Applicability and Version +Nothing here changes whether Covered Software is "Incompatible With Secondary Licenses" or changes the operation of MPL-2.0 Section 3.3 for a work governed by a Secondary License. When You distribute under a Secondary License as that Section allows, the Secondary License governs that distribution. -This Exception applies only to a file that expressly identifies it with this exact SPDX license expression: +11. Other Rights -MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +This Exception concerns copyright only. It grants no trademark, trade dress, service mark, publicity, or confidential-information rights, and no patent rights beyond those MPL-2.0 or a separately applicable patent grant provides. Nothing here limits rights that arise independently under exhaustion, fair use, fair dealing, implied license, estoppel, or other applicable law. -Reference to Version 1.1 does not incorporate any later version. A copy of this text supplied in a repository or distribution identifies the permission; the per-file expression determines which files receive it. +12. Applicability and Versions -12. Severability +This Exception applies to Covered Software identified with this SPDX license expression, or an expression that contains it: -If any provision of this Exception is held unenforceable, it shall be reformed only to the minimum extent necessary to make it enforceable. If reformation is unavailable, that provision is severed and the remaining provisions continue to the maximum extent permitted by law. +MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 +The identification may be in the file itself, in a companion license file, in a machine-readable file such as REUSE.toml that assigns the expression to that file, or in a notice of the project that names the file or the directory holding it. A compiled form has the identification of the source it was compiled from and does not need to carry it. + +Progmasoft may publish later versions of this Exception. You may use Covered Software under the version that identifies it or under any later version Progmasoft publishes. + +Progmasoft also grants this version for its own Contributions in every release it has made under Version 1.0 or Version 1.1 of this Exception. For those releases You may rely on either version. + +13. Severability + +If any provision of this Exception is held unenforceable, it shall be reformed only to the minimum extent necessary to make it enforceable. If reformation is unavailable, that provision is severed and the remaining provisions continue to the maximum extent permitted by law.
src/Progmasoft/Tala/Core.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 {-# LANGUAGE PatternSynonyms #-} {- | Target-independent, verified compiler IR retained before CorePrep.
src/Progmasoft/Tala/Core/Artifact.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 {- | Bounded, verified persistence for standalone Core artifacts. Readers decode and semantically verify before returning a module; writers
src/Progmasoft/Tala/Core/CorePrep.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 {- | Normalize tree-shaped Core into typed operations and explicit basic blocks.
src/Progmasoft/Tala/Core/CorePrep/Verifier.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 {- | Structural verifier for lowered CorePrep control flow and storage. Verification is required after decoding artifacts and before native lowering.
src/Progmasoft/Tala/Core/CorePrep/Wire.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 {- | Public facade combining CorePrep wire encoding, decoding, and schema types. The binary format is an internal compiler boundary and is not a user-facing
src/Progmasoft/Tala/Core/CorePrep/Wire/Decode.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 {- | Strict bounded decoder for untrusted CorePrep wire documents.
src/Progmasoft/Tala/Core/CorePrep/Wire/Encode.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 {- | Bounded encoder for the private CorePrep interchange document.
src/Progmasoft/Tala/Core/CorePrep/Wire/Format.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 {- | Constants and bounded error representation for the CorePrep wire format. The format version is independent of Core and Xpp wire schemas; every decoder
src/Progmasoft/Tala/Core/Monomorphization.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 {- | Fixed-point specialization-demand planning over verified Core.
src/Progmasoft/Tala/Core/Monomorphization/Discovery.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 {- | Lossless discovery of concrete template occurrences in Core.
src/Progmasoft/Tala/Core/Monomorphization/Graph.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 {- | Queries and invariants for a completed specialization-demand graph.
src/Progmasoft/Tala/Core/Monomorphization/Types.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 {- | Data carried by the Core specialization-demand planner.
src/Progmasoft/Tala/Core/Optimizer.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 {- | Public facade for the target-independent Core optimization pipeline.
src/Progmasoft/Tala/Core/Optimizer/Analysis.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 module Progmasoft.Tala.Core.Optimizer.Analysis ( Effect (..)
src/Progmasoft/Tala/Core/Optimizer/Constant.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 module Progmasoft.Tala.Core.Optimizer.Constant ( propagateConstants
src/Progmasoft/Tala/Core/Optimizer/ControlFlow.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 module Progmasoft.Tala.Core.Optimizer.ControlFlow ( simplifyControlFlow
src/Progmasoft/Tala/Core/Optimizer/EffectInference.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 {- | Interprocedural effect inference for verified Core.
src/Progmasoft/Tala/Core/Optimizer/Floating.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 {- | Target-independent IEEE-754 folding for the Core optimizer.
src/Progmasoft/Tala/Core/Optimizer/Inline.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 {- | Capture-avoiding linear-body inlining for verified Core.
src/Progmasoft/Tala/Core/Optimizer/IntegerFacts.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 {- | Path-sensitive integer facts for Core optimization and effect analysis.
src/Progmasoft/Tala/Core/Optimizer/Liveness.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 module Progmasoft.Tala.Core.Optimizer.Liveness ( eliminateDeadCode
src/Progmasoft/Tala/Core/Optimizer/Pipeline.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 module Progmasoft.Tala.Core.Optimizer.Pipeline (runOptimizationPipeline) where
src/Progmasoft/Tala/Core/Optimizer/Types.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 module Progmasoft.Tala.Core.Optimizer.Types ( OptimizerOptions (..)
src/Progmasoft/Tala/Core/Scalar.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 -- | Canonical scalar facts shared by Core verification and optimization. module Progmasoft.Tala.Core.Scalar
src/Progmasoft/Tala/Core/Specialization.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 {- | Deterministic specialization planning for Core monomorphization.
src/Progmasoft/Tala/Core/Symbols.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 {- | Complete SymbolId inventory for Core.
src/Progmasoft/Tala/Core/Template.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 {- | Template specialization identity and substitution.
src/Progmasoft/Tala/Core/Verifier.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 {- | Semantic trust boundary for target-independent Core. Decoded artifacts and generated Core trees must pass this verifier before
src/Progmasoft/Tala/Core/Wire.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 {- | Versioned, bounded binary codec for the compiler's private Core IR.
src/Progmasoft/Tala/Desugarer.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 -- | Lower the typed source AST into target-independent, source-attributed Core. module Progmasoft.Tala.Desugarer (Desugarer (..), defaultDesugarer, desugarerWithin, runDesugarer) where
src/Progmasoft/Tala/Desugarer/Boundary.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 {- | What crosses from the Typed AST into Core without the lowering state: types, literals, patterns, type identities and the source catalog. Each is a
src/Progmasoft/Tala/Desugarer/Branching.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 {- | Lowering of value blocks and of @match@ to Core statements.
src/Progmasoft/Tala/Desugarer/Captures.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 {- | What a closure takes from the place that creates it.
src/Progmasoft/Tala/Desugarer/Effects.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 {- | Which calls do something that can be observed.
src/Progmasoft/Tala/Desugarer/Handing.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 {- | What the lowering needs to know to hand a value on by need.
src/Progmasoft/Tala/Desugarer/Laziness.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 {- | What the lowering needs to know to evaluate a value by need.
src/Progmasoft/Tala/Desugarer/Sequencing.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 {- | Pure building blocks for lowering expressions that store into locals.
src/Progmasoft/Tala/Desugarer/Symbols.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 {- | Tables the lowering to Core reads and does not change: the symbols a typed tree already uses, and the Core primitive each source operator stands
src/Progmasoft/Tala/Desugarer/Workers.hs view
@@ -1,5 +1,5 @@ -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 {- | Giving a second lowering of a method body symbols of its own.
tala-core.cabal view
@@ -1,8 +1,8 @@ cabal-version: 3.12 -- SPDX-FileCopyrightText: 2026 Progmasoft <support@progmasoft.com> --- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-1.1 +-- SPDX-License-Identifier: MPL-2.0 WITH AdditionRef-Progmasoft-Exception-2.0 name: tala-core -version: 0.1.0 +version: 0.2.0 synopsis: Tala Core and CorePrep models, verification, and wire codecs description: The Core and CorePrep intermediate languages of Tala: their models, @@ -11,7 +11,7 @@ This is an implementation package of the Tala compiler. Its modules may change in any release; tools should depend on tala-tooling instead. . - The source is also offered under the Progmasoft Linking Exception 1.1 + The source is also offered under the Progmasoft Linking Exception 2.0 (LICENSE-EXCEPTION), an additional permission to MPL-2.0 for works that combine this package with independent code. license: MPL-2.0 @@ -75,7 +75,7 @@ containers >=0.7 && <0.9, filepath >=1.5 && <1.6, mtl >=2.3 && <2.4, - tala-syntax >=0.1.0 && <0.2 + tala-syntax >=0.2.0 && <0.3 default-language: GHC2024 benchmark core-benches @@ -86,8 +86,8 @@ base >=4.20 && <4.23, criterion >=1.6.4 && <1.7, deepseq >=1.5 && <1.6, - tala-core >=0.1.0 && <0.2, - tala-syntax >=0.1.0 && <0.2 + tala-core >=0.2.0 && <0.3, + tala-syntax >=0.2.0 && <0.3 default-language: GHC2024 ghc-options: -threaded -rtsopts