mirror of
https://github.com/apple/pkl.git
synced 2026-05-26 00:29:14 +02:00
Compare commits
31 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 29c3e77e81 | |||
| e48256942c | |||
| 0a328fafed | |||
| 91820100f7 | |||
| 4ae98b4bf6 | |||
| 4006c087d9 | |||
| 87d91b1950 | |||
| 29cb8ea4f2 | |||
| a490e9d811 | |||
| c8786f61e3 | |||
| f3a93cdd78 | |||
| e5a81b6803 | |||
| 441bc5861a | |||
| de4f0e995b | |||
| 346880f9cf | |||
| 906111d327 | |||
| 08be512fe1 | |||
| 6b04e1d606 | |||
| 1452dc5af3 | |||
| 3421a97478 | |||
| 0829ac486c | |||
| 8209ea78bd | |||
| d9f8b8efa9 | |||
| a210bfd6a3 | |||
| f26195509f | |||
| 49556737c6 | |||
| 2ccebd3aed | |||
| 504c4a3213 | |||
| f7921f0c6f | |||
| 56d88c9efc | |||
| f260c8553c |
+65
-8
@@ -14,14 +14,16 @@
|
||||
// limitations under the License.
|
||||
//===----------------------------------------------------------------------===//
|
||||
// File gets rendered to .circleci/config.yml via git hook.
|
||||
amends "package://pkg.pkl-lang.org/pkl-project-commons/pkl.impl.circleci@1.0.1#/PklCI.pkl"
|
||||
amends "package://pkg.pkl-lang.org/pkl-project-commons/pkl.impl.circleci@1.1.0#/PklCI.pkl"
|
||||
|
||||
import "jobs/BuildNativeJob.pkl"
|
||||
import "jobs/GradleCheckJob.pkl"
|
||||
import "jobs/DeployJob.pkl"
|
||||
import "jobs/SimpleGradleJob.pkl"
|
||||
|
||||
local prbJobs: Listing<String> = gradleCheckJobs.keys.toListing()
|
||||
local prbJobs: Listing<String> = (gradleCheckJobs.keys.toListing()) {
|
||||
"check-patch-file"
|
||||
}
|
||||
|
||||
local buildAndTestJobs = (prbJobs) {
|
||||
"bench"
|
||||
@@ -51,6 +53,44 @@ main {
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: remove me once policy allows these jobs without approval
|
||||
circleCi {
|
||||
workflows {
|
||||
["release-branch"] {
|
||||
jobs = new Listing<*Mapping<String, WorkflowJob>|String> {
|
||||
new {
|
||||
["hold"] {
|
||||
type = "approval"
|
||||
}
|
||||
}
|
||||
new {
|
||||
["pr-approval/authenticate"] {
|
||||
context = "pkl-pr-approval"
|
||||
}
|
||||
}
|
||||
for (job in super.jobs) {
|
||||
job |> requireApproval
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: remove me once policy allows these jobs without approval
|
||||
local requireApproval = (it: String|Mapping<String, WorkflowJob>) ->
|
||||
if (it is String)
|
||||
new Mapping<String, WorkflowJob> {
|
||||
[it] {
|
||||
requires { "hold" }
|
||||
}
|
||||
}
|
||||
else
|
||||
(it) {
|
||||
[it.keys.first] {
|
||||
requires { "hold" }
|
||||
}
|
||||
}
|
||||
|
||||
release {
|
||||
jobs {
|
||||
...releaseJobs
|
||||
@@ -71,6 +111,10 @@ release {
|
||||
}
|
||||
}
|
||||
|
||||
releaseBranch {
|
||||
jobs = releaseJobs
|
||||
}
|
||||
|
||||
triggerDocsBuild = "both"
|
||||
|
||||
triggerPackageDocsBuild = "release"
|
||||
@@ -122,24 +166,22 @@ jobs {
|
||||
:pkl-gradle:compatibilityTestCandidate
|
||||
"""#
|
||||
}.job
|
||||
["deploy-snapshot"] = new DeployJob {
|
||||
command = "publishToSonatype"
|
||||
}.job
|
||||
["deploy-snapshot"] = new DeployJob { command = "publishToSonatype" }.job
|
||||
["deploy-release"] = new DeployJob {
|
||||
isRelease = true
|
||||
command = "publishToSonatype closeAndReleaseSonatypeStagingRepository"
|
||||
}.job
|
||||
["github-release"] {
|
||||
docker {
|
||||
new {
|
||||
image = "maniator/gh:v2.40.1"
|
||||
}
|
||||
new { image = "maniator/gh:v2.40.1" }
|
||||
}
|
||||
steps {
|
||||
new AttachWorkspaceStep { at = "." }
|
||||
new RunStep {
|
||||
name = "Publish release on GitHub"
|
||||
command = #"""
|
||||
# exclude build_artifacts.txt from publish
|
||||
rm pkl-cli/build/executable/*.build_artifacts.txt
|
||||
gh release create "${CIRCLE_TAG}" \
|
||||
--title "${CIRCLE_TAG}" \
|
||||
--target "${CIRCLE_SHA1}" \
|
||||
@@ -151,4 +193,19 @@ jobs {
|
||||
}
|
||||
}
|
||||
}
|
||||
["check-patch-file"] {
|
||||
docker {
|
||||
new { image = "cimg/base:current" }
|
||||
}
|
||||
steps {
|
||||
"checkout"
|
||||
new RunStep {
|
||||
// language=bash
|
||||
command = #"""
|
||||
git apply --reject patches/graalVm23.patch
|
||||
"""#
|
||||
}
|
||||
}
|
||||
resource_class = "small"
|
||||
}
|
||||
}
|
||||
|
||||
+67
-2
@@ -661,6 +661,10 @@ jobs:
|
||||
at: '.'
|
||||
- run:
|
||||
command: ./gradlew --info --stacktrace publishToSonatype
|
||||
- persist_to_workspace:
|
||||
root: '.'
|
||||
paths:
|
||||
- pkl-cli/build/executable/
|
||||
- run:
|
||||
command: |-
|
||||
mkdir ~/test-results/
|
||||
@@ -680,6 +684,10 @@ jobs:
|
||||
at: '.'
|
||||
- run:
|
||||
command: ./gradlew --info --stacktrace -DreleaseBuild=true publishToSonatype closeAndReleaseSonatypeStagingRepository
|
||||
- persist_to_workspace:
|
||||
root: '.'
|
||||
paths:
|
||||
- pkl-cli/build/executable/
|
||||
- run:
|
||||
command: |-
|
||||
mkdir ~/test-results/
|
||||
@@ -698,6 +706,8 @@ jobs:
|
||||
at: '.'
|
||||
- run:
|
||||
command: |-
|
||||
# exclude build_artifacts.txt from publish
|
||||
rm pkl-cli/build/executable/*.build_artifacts.txt
|
||||
gh release create "${CIRCLE_TAG}" \
|
||||
--title "${CIRCLE_TAG}" \
|
||||
--target "${CIRCLE_SHA1}" \
|
||||
@@ -708,6 +718,14 @@ jobs:
|
||||
name: Publish release on GitHub
|
||||
docker:
|
||||
- image: maniator/gh:v2.40.1
|
||||
check-patch-file:
|
||||
steps:
|
||||
- checkout
|
||||
- run:
|
||||
command: git apply --reject patches/graalVm23.patch
|
||||
resource_class: small
|
||||
docker:
|
||||
- image: cimg/base:current
|
||||
trigger-docsite-build:
|
||||
steps:
|
||||
- run:
|
||||
@@ -744,11 +762,12 @@ workflows:
|
||||
- gradle-check-jdk11:
|
||||
requires:
|
||||
- hold
|
||||
- pr-approval/authenticate
|
||||
- gradle-check-jdk17:
|
||||
requires:
|
||||
- hold
|
||||
- pr-approval/authenticate
|
||||
- check-patch-file:
|
||||
requires:
|
||||
- hold
|
||||
when:
|
||||
matches:
|
||||
value: << pipeline.git.branch >>
|
||||
@@ -757,6 +776,7 @@ workflows:
|
||||
jobs:
|
||||
- gradle-check-jdk11
|
||||
- gradle-check-jdk17
|
||||
- check-patch-file
|
||||
- bench
|
||||
- pkl-cli-macOS-amd64-snapshot
|
||||
- pkl-cli-linux-amd64-snapshot
|
||||
@@ -767,6 +787,7 @@ workflows:
|
||||
requires:
|
||||
- gradle-check-jdk11
|
||||
- gradle-check-jdk17
|
||||
- check-patch-file
|
||||
- bench
|
||||
- pkl-cli-macOS-amd64-snapshot
|
||||
- pkl-cli-linux-amd64-snapshot
|
||||
@@ -797,6 +818,12 @@ workflows:
|
||||
ignore: /.*/
|
||||
tags:
|
||||
only: /^v?\d+\.\d+\.\d+$/
|
||||
- check-patch-file:
|
||||
filters:
|
||||
branches:
|
||||
ignore: /.*/
|
||||
tags:
|
||||
only: /^v?\d+\.\d+\.\d+$/
|
||||
- bench:
|
||||
filters:
|
||||
branches:
|
||||
@@ -837,6 +864,7 @@ workflows:
|
||||
requires:
|
||||
- gradle-check-jdk11
|
||||
- gradle-check-jdk17
|
||||
- check-patch-file
|
||||
- bench
|
||||
- pkl-cli-macOS-amd64-release
|
||||
- pkl-cli-linux-amd64-release
|
||||
@@ -868,3 +896,40 @@ workflows:
|
||||
ignore: /.*/
|
||||
tags:
|
||||
only: /^v?\d+\.\d+\.\d+$/
|
||||
release-branch:
|
||||
jobs:
|
||||
- hold:
|
||||
type: approval
|
||||
- pr-approval/authenticate:
|
||||
context: pkl-pr-approval
|
||||
- gradle-check-jdk11:
|
||||
requires:
|
||||
- hold
|
||||
- gradle-check-jdk17:
|
||||
requires:
|
||||
- hold
|
||||
- check-patch-file:
|
||||
requires:
|
||||
- hold
|
||||
- bench:
|
||||
requires:
|
||||
- hold
|
||||
- pkl-cli-macOS-amd64-release:
|
||||
requires:
|
||||
- hold
|
||||
- pkl-cli-linux-amd64-release:
|
||||
requires:
|
||||
- hold
|
||||
- pkl-cli-macOS-aarch64-release:
|
||||
requires:
|
||||
- hold
|
||||
- pkl-cli-linux-aarch64-release:
|
||||
requires:
|
||||
- hold
|
||||
- pkl-cli-linux-alpine-amd64-release:
|
||||
requires:
|
||||
- hold
|
||||
when:
|
||||
matches:
|
||||
value: << pipeline.git.branch >>
|
||||
pattern: ^release/\d+\.\d+$
|
||||
|
||||
@@ -16,7 +16,7 @@
|
||||
/// Builds the native `pkl` CLI
|
||||
extends "GradleJob.pkl"
|
||||
|
||||
import "package://pkg.pkl-lang.org/pkl-pantry/com.circleci.v2@1.0.0#/Config.pkl"
|
||||
import "package://pkg.pkl-lang.org/pkl-pantry/com.circleci.v2@1.1.0#/Config.pkl"
|
||||
import "package://pkg.pkl-lang.org/pkl-pantry/pkl.experimental.uri@1.0.0#/URI.pkl"
|
||||
|
||||
/// The OS to run on
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
extends "GradleJob.pkl"
|
||||
|
||||
import "package://pkg.pkl-lang.org/pkl-pantry/com.circleci.v2@1.0.0#/Config.pkl"
|
||||
import "package://pkg.pkl-lang.org/pkl-pantry/com.circleci.v2@1.1.0#/Config.pkl"
|
||||
|
||||
local self = this
|
||||
|
||||
@@ -32,4 +32,11 @@ steps {
|
||||
new Config.RunStep {
|
||||
command = "./gradlew \(self.gradleArgs) \(module.command)"
|
||||
}
|
||||
// add jpkl to workspace so it gets published as a GitHub release
|
||||
new Config.PersistToWorkspaceStep {
|
||||
root = "."
|
||||
paths {
|
||||
"pkl-cli/build/executable/"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
extends "GradleJob.pkl"
|
||||
|
||||
import "package://pkg.pkl-lang.org/pkl-pantry/com.circleci.v2@1.0.0#/Config.pkl"
|
||||
import "package://pkg.pkl-lang.org/pkl-pantry/com.circleci.v2@1.1.0#/Config.pkl"
|
||||
|
||||
javaVersion: "11.0"|"17.0"
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
abstract module GradleJob
|
||||
|
||||
import "package://pkg.pkl-lang.org/pkl-pantry/com.circleci.v2@1.0.0#/Config.pkl"
|
||||
import "package://pkg.pkl-lang.org/pkl-pantry/com.circleci.v2@1.1.0#/Config.pkl"
|
||||
|
||||
/// Whether this is a release build or not.
|
||||
isRelease: Boolean = false
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
//===----------------------------------------------------------------------===//
|
||||
extends "GradleJob.pkl"
|
||||
|
||||
import "package://pkg.pkl-lang.org/pkl-pantry/com.circleci.v2@1.0.0#/Config.pkl"
|
||||
import "package://pkg.pkl-lang.org/pkl-pantry/com.circleci.v2@1.1.0#/Config.pkl"
|
||||
|
||||
name: String = command
|
||||
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
name: main
|
||||
title: Main Project
|
||||
version: 0.25.2
|
||||
version: 0.25.3
|
||||
prerelease: false
|
||||
nav:
|
||||
- nav.adoc
|
||||
|
||||
@@ -4,3 +4,6 @@
|
||||
* xref:kotlin-binding:index.adoc[Kotlin]
|
||||
* xref:swift:ROOT:index.adoc[Swift]
|
||||
* xref:go:ROOT:index.adoc[Go]
|
||||
* xref:bindings-specification:index.adoc[Specification]
|
||||
** xref:bindings-specification:message-passing-api.adoc[Message Passing API]
|
||||
** xref:bindings-specification:binary-encoding.adoc[Pkl Binary Encoding]
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
// the following attributes must be updated immediately before a release
|
||||
|
||||
// pkl version corresponding to current git commit without -dev suffix or git hash
|
||||
:pkl-version-no-suffix: 0.25.2
|
||||
:pkl-version-no-suffix: 0.25.3
|
||||
// tells whether pkl version corresponding to current git commit
|
||||
// is a release version (:is-release-version: '') or dev version (:!is-release-version:)
|
||||
:is-release-version: ''
|
||||
@@ -66,3 +66,76 @@ endif::[]
|
||||
:uri-config-java-example: {uri-pkl-examples-tree}/config-java
|
||||
:uri-config-kotlin-example: {uri-pkl-examples-tree}/config-kotlin
|
||||
:uri-pkldoc-example: {uri-pkl-examples-tree}/pkldoc
|
||||
|
||||
:uri-stdlib-baseModule: {uri-pkl-stdlib-docs}/base
|
||||
:uri-stdlib-jsonnetModule: {uri-pkl-stdlib-docs}/jsonnet
|
||||
:uri-stdlib-reflectModule: {uri-pkl-stdlib-docs}/reflect
|
||||
:uri-stdlib-xmlModule: {uri-pkl-stdlib-docs}/xml
|
||||
:uri-stdlib-protobufModule: {uri-pkl-stdlib-docs}/protobuf
|
||||
:uri-stdlib-Boolean: {uri-stdlib-baseModule}/Boolean
|
||||
:uri-stdlib-xor: {uri-stdlib-baseModule}/Boolean#xor()
|
||||
:uri-stdlib-implies: {uri-stdlib-baseModule}/Boolean#implies()
|
||||
:uri-stdlib-Any: {uri-stdlib-baseModule}/Any
|
||||
:uri-stdlib-String: {uri-stdlib-baseModule}/String
|
||||
:uri-stdlib-Int: {uri-stdlib-baseModule}/Int
|
||||
:uri-stdlib-Float: {uri-stdlib-baseModule}/Float
|
||||
:uri-stdlib-Number: {uri-stdlib-baseModule}/Number
|
||||
:uri-stdlib-NaN: {uri-stdlib-baseModule}/#NaN
|
||||
:uri-stdlib-Infinity: {uri-stdlib-baseModule}/#Infinity
|
||||
:uri-stdlib-isBetween: {uri-stdlib-baseModule}/Number#isBetween
|
||||
:uri-stdlib-isFinite: {uri-stdlib-baseModule}/Number#isFinite
|
||||
:uri-stdlib-Int8: {uri-stdlib-baseModule}/#Int8
|
||||
:uri-stdlib-Int16: {uri-stdlib-baseModule}/#Int16
|
||||
:uri-stdlib-Int32: {uri-stdlib-baseModule}/#Int32
|
||||
:uri-stdlib-UInt8: {uri-stdlib-baseModule}/#UInt8
|
||||
:uri-stdlib-UInt16: {uri-stdlib-baseModule}/#UInt16
|
||||
:uri-stdlib-UInt32: {uri-stdlib-baseModule}/#UInt32
|
||||
:uri-stdlib-UInt: {uri-stdlib-baseModule}/#UInt
|
||||
:uri-stdlib-Uri: {uri-stdlib-baseModule}/#Uri
|
||||
:uri-stdlib-matches: {uri-stdlib-baseModule}/String#matches()
|
||||
:uri-stdlib-Null: {uri-stdlib-baseModule}/Null
|
||||
:uri-stdlib-ifNonNull: {uri-stdlib-baseModule}/Null#ifNonNull()
|
||||
:uri-stdlib-List: {uri-stdlib-baseModule}/List
|
||||
:uri-stdlib-Set: {uri-stdlib-baseModule}/Set
|
||||
:uri-stdlib-Map: {uri-stdlib-baseModule}/Map
|
||||
:uri-stdlib-Listing: {uri-stdlib-baseModule}/Listing
|
||||
:uri-stdlib-Listing-default: {uri-stdlib-baseModule}/Listing#default
|
||||
:uri-stdlib-Listing-isDistinct: {uri-stdlib-baseModule}/Listing#isDistinct
|
||||
:uri-stdlib-Listing-isDistinctBy: {uri-stdlib-baseModule}/Listing#isDistinctBy()
|
||||
:uri-stdlib-Mapping: {uri-stdlib-baseModule}/Mapping
|
||||
:uri-stdlib-Mapping-default: {uri-stdlib-baseModule}/Mapping#default
|
||||
:uri-stdlib-Duration: {uri-stdlib-baseModule}/Duration
|
||||
:uri-stdlib-Duration-value: {uri-stdlib-baseModule}/Duration#value
|
||||
:uri-stdlib-Duration-unit: {uri-stdlib-baseModule}/Duration#unit
|
||||
:uri-stdlib-DurationUnit: {uri-stdlib-baseModule}/#DurationUnit
|
||||
:uri-stdlib-DataSize: {uri-stdlib-baseModule}/DataSize
|
||||
:uri-stdlib-DataSize-value: {uri-stdlib-baseModule}/DataSize#value
|
||||
:uri-stdlib-DataSize-unit: {uri-stdlib-baseModule}/DataSize#unit
|
||||
:uri-stdlib-DataSizeUnit: {uri-stdlib-baseModule}/#DataSizeUnit
|
||||
:uri-stdlib-Dynamic: {uri-stdlib-baseModule}/Dynamic
|
||||
:uri-stdlib-Dynamic-toTyped: {uri-stdlib-baseModule}/Dynamic#toTyped()
|
||||
:uri-stdlib-Typed: {uri-stdlib-baseModule}/Typed
|
||||
:uri-stdlib-Regex: {uri-stdlib-baseModule}/Regex
|
||||
:uri-stdlib-Regex-method: {uri-stdlib-baseModule}/#Regex()
|
||||
:uri-stdlib-Regex-match: {uri-stdlib-baseModule}/Regex#match
|
||||
:uri-stdlib-RegexMatch: {uri-stdlib-baseModule}/RegexMatch
|
||||
:uri-stdlib-Pair: {uri-stdlib-baseModule}/Pair
|
||||
:uri-stdlib-IntSeq: {uri-stdlib-baseModule}/IntSeq
|
||||
:uri-stdlib-Class: {uri-stdlib-baseModule}/Class
|
||||
:uri-stdlib-TypeAlias: {uri-stdlib-baseModule}/TypeAlias
|
||||
:uri-stdlib-Deprecated: {uri-stdlib-baseModule}/Deprecated
|
||||
:uri-stdlib-ValueRenderer: {uri-stdlib-baseModule}/ValueRenderer
|
||||
:uri-stdlib-PcfRenderer-converters: {uri-stdlib-baseModule}/PcfRenderer#converters
|
||||
:uri-stdlib-Function: {uri-stdlib-baseModule}/Function
|
||||
:uri-stdlib-Function0: {uri-stdlib-baseModule}/Function0
|
||||
:uri-stdlib-Function1: {uri-stdlib-baseModule}/Function1
|
||||
:uri-stdlib-Function1-apply: {uri-stdlib-baseModule}/Function1#apply()
|
||||
:uri-stdlib-Function2: {uri-stdlib-baseModule}/Function2
|
||||
:uri-stdlib-Function3: {uri-stdlib-baseModule}/Function3
|
||||
:uri-stdlib-Function4: {uri-stdlib-baseModule}/Function4
|
||||
:uri-stdlib-Function5: {uri-stdlib-baseModule}/Function5
|
||||
:uri-stdlib-Resource: {uri-stdlib-baseModule}/Resource
|
||||
:uri-stdlib-outputFiles: {uri-stdlib-baseModule}/ModuleOutput#files
|
||||
|
||||
:uri-messagepack: https://msgpack.org/index.html
|
||||
:uri-messagepack-spec: https://github.com/msgpack/msgpack/blob/master/spec.md
|
||||
|
||||
@@ -0,0 +1,197 @@
|
||||
= Pkl Binary Encoding
|
||||
include::ROOT:partial$component-attributes.adoc[]
|
||||
include::partial$component-attributes.adoc[]
|
||||
|
||||
Pkl values can be encoded into a binary format.
|
||||
This format is used for Pkl's non-JVM language bindings, for example, for its Go and Swift bindings.
|
||||
|
||||
The binary format is uses link:{uri-messagepack}[MessagePack] encoding.
|
||||
|
||||
== Primitives
|
||||
|
||||
All Pkl primitives turn into their respective MessagePack primitive.
|
||||
|
||||
|===
|
||||
|Pkl Type|MessagePack format
|
||||
|
||||
|link:{uri-stdlib-Int}[Int]
|
||||
|link:{uri-messagepack-int}[int]
|
||||
|
||||
|link:{uri-stdlib-Float}[Float]
|
||||
|link:{uri-messagepack-float}[float]
|
||||
|
||||
|link:{uri-stdlib-String}[String]
|
||||
|link:{uri-messagepack-str}[string]
|
||||
|
||||
|link:{uri-stdlib-Boolean}[Boolean]
|
||||
|link:{uri-messagepack-bool}[bool]
|
||||
|
||||
|link:{uri-stdlib-Null}[Null]
|
||||
|link:{uri-messagepack-nil}[nil]
|
||||
|===
|
||||
|
||||
NOTE: Pkl integers are encoded into the smallest int type that the number will fit into.
|
||||
For example, value `8` gets encoded as MessagePack `int8` format.
|
||||
|
||||
== Non-primitives
|
||||
|
||||
All non-primitive values are encoded as MessagePack arrays.
|
||||
The first slot of the array designates the value's type. The remaining slots have fixed meanings depending on the type.
|
||||
|
||||
The array's length is the number of slots that are filled. For example, xref:{uri-stdlib-List}[List] is encoded as an MessagePack array with two elements.
|
||||
|
||||
|===
|
||||
|Pkl type |Slot 1 2+|Slot 2 2+|Slot 3 2+|Slot 4
|
||||
|
||||
||code |type |description |type |description |type |description
|
||||
|
||||
|link:{uri-stdlib-Typed}[Typed], link:{uri-stdlib-Dynamic}[Dynamic]
|
||||
|`0x1`
|
||||
|link:{uri-messagepack-str}[str]
|
||||
|Fully qualified class name
|
||||
|link:{uri-messagepack-str}[str]
|
||||
|Enclosing module URI
|
||||
|link:{uri-messagepack-array}[array]
|
||||
|Array of <<object-members,object members>>
|
||||
|
||||
|link:{uri-stdlib-Map}[Map]
|
||||
|`0x2`
|
||||
|link:{uri-messagepack-map}[map]
|
||||
|Map of `<value>` to `<value>`
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
||||
|link:{uri-stdlib-Mapping}[Mapping]
|
||||
|`0x3`
|
||||
|link:{uri-messagepack-map}[map]
|
||||
|Map of `<value>` to `<value>`
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
||||
|link:{uri-stdlib-List}[List]
|
||||
|`0x4`
|
||||
|link:{uri-messagepack-array}[array]
|
||||
|Array of `<value>`
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
||||
|link:{uri-stdlib-Listing}[Listing]
|
||||
|`0x5`
|
||||
|link:{uri-messagepack-array}[array]
|
||||
|Array of `<value>`
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
||||
|link:{uri-stdlib-Set}[Set]
|
||||
|`0x6`
|
||||
|link:{uri-messagepack-array}[array]
|
||||
|Array of `<value>`
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
||||
|link:{uri-stdlib-Duration}[Duration]
|
||||
|`0x7`
|
||||
|{uri-messagepack-float}[float64]
|
||||
|Duration value
|
||||
|link:{uri-messagepack-str}[str]
|
||||
|link:{uri-stdlib-DurationUnit}[Duration unit] (`"ns"`, `"ms"`, etc.)
|
||||
|
|
||||
|
|
||||
|
||||
|link:{uri-stdlib-DataSize}[DataSize]
|
||||
|`0x8`
|
||||
|link:{uri-messagepack-float}[float64]
|
||||
|Value (float64)
|
||||
|link:{uri-messagepack-str}[str]
|
||||
|link:{uri-stdlib-DataSizeUnit}[DataSize unit] (`"b"`, `"kb"`, etc.)
|
||||
|
|
||||
|
|
||||
|
||||
|link:{uri-stdlib-Pair}[Pair]
|
||||
|`0x9`
|
||||
|`<value>`
|
||||
|First value
|
||||
|`<value>`
|
||||
|Second value
|
||||
|
|
||||
|
|
||||
|
||||
|link:{uri-stdlib-IntSeq}[IntSeq]
|
||||
|`0xA`
|
||||
|link:{uri-messagepack-int}[int]
|
||||
|Start
|
||||
|link:{uri-messagepack-int}[int]
|
||||
|End
|
||||
|link:{uri-messagepack-int}[int]
|
||||
|Step
|
||||
|
||||
|link:{uri-stdlib-Regex}[Regex]
|
||||
|`0xB`
|
||||
|link:{uri-messagepack-str}[str]
|
||||
|Regex string representation
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
||||
|link:{uri-stdlib-Class}[Class]
|
||||
|`0xC`
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
||||
|link:{uri-stdlib-TypeAlias}[TypeAlias]
|
||||
|`0xD`
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|
|
||||
|===
|
||||
|
||||
[[object-members]]
|
||||
== Object Members
|
||||
|
||||
Like non-primitive values, object members are encoded as MessagePack arrays, where the first slot designates the value's type.
|
||||
|
||||
|===
|
||||
|Member type |Slot 1 2+|Slot 2 2+|Slot 3
|
||||
|
||||
| |code |type |description |type |description
|
||||
|
||||
|Property
|
||||
|`0x10`
|
||||
|link:{uri-messagepack-str}[str]
|
||||
|key
|
||||
|`<value>`
|
||||
|property value
|
||||
|
||||
|Entry
|
||||
|`0x11`
|
||||
|`<value>`
|
||||
|entry key
|
||||
|`<value>`
|
||||
|entry value
|
||||
|
||||
|Element
|
||||
|`0x12`
|
||||
|link:{uri-messagepack-int}[int]
|
||||
|index
|
||||
|`<value>`
|
||||
|element value
|
||||
|===
|
||||
|
||||
@@ -0,0 +1,173 @@
|
||||
= Language Binding Specification
|
||||
|
||||
:uri-pkl-go-github: https://github.com/apple/pkl-go
|
||||
:uri-pkl-swift-github: https://github.com/apple/pkl-swift
|
||||
|
||||
Pkl can be embedded within any host application.
|
||||
The host application has access to low level controls.
|
||||
It is able to manage the lifecycle of evaluators, as well as provide custom modules and resources to Pkl.
|
||||
|
||||
Currently, Pkl must be embedded as a child process, by shelling out to the CLI using the xref:pkl-cli:index.adoc#command-server[`pkl server`] command. In the future, a C library will also be provided.
|
||||
|
||||
When embedded, communication between a host application and Pkl happens via message passing.
|
||||
The message passing specification can be found in xref:message-passing-api.adoc[].
|
||||
|
||||
For examples of language bindings in practice, review the xref:{uri-pkl-go-github}[pkl-go], or the xref:{uri-pkl-swift-github}[pkl-swift] codebases.
|
||||
|
||||
NOTE: Pkl's Java and Kotlin libraries binds to Pkl directly, and do not use message passing.
|
||||
|
||||
== Features of a language binding
|
||||
|
||||
A language binding for Pkl should generally have the following components:
|
||||
|
||||
. A client that spawns `pkl server`, and talks to it using message passing.
|
||||
. A deserializer that turns xref:binary-encoding.adoc[pkl binary encoding] into a structure in the host language.
|
||||
. A code generator that transforms Pkl schemas into schemas written in the host language.
|
||||
The code generator is mostly written in Pkl, with a lightweight executable that acts as the glue layer.
|
||||
For examples of code generators, consult link:{uri-pkl-go-github}/tree/main/codegen[pkl-go] and link:{uri-pkl-swift-github}/tree/main/codegen[pkl-swift].
|
||||
|
||||
== Sample flow
|
||||
|
||||
Here is a sample flow for evaluating a module with the following contents:
|
||||
|
||||
.\file:///path/to/myModule.pkl
|
||||
[source,{pkl}]
|
||||
----
|
||||
module MyModule
|
||||
|
||||
theModules = import*("customfs:/*.pkl")
|
||||
----
|
||||
|
||||
. Client sends xref:message-passing-api.adoc#create-evaluator-request[Create Evaluator Request], including `customfs` as a custom module reader.
|
||||
+
|
||||
[source,json]
|
||||
----
|
||||
[
|
||||
0x20,
|
||||
{
|
||||
"requestId": 135,
|
||||
"allowedModules": ["pkl:", "repl:", "file:", "customfs:"],
|
||||
"clientModuleReaders": [
|
||||
{
|
||||
"scheme": "customfs",
|
||||
"hasHierarchicalUris": true,
|
||||
"isGlobbable": true,
|
||||
"isLocal": true
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
----
|
||||
. Server sends xref:message-passing-api.adoc#create-evaluator-response[Create Evaluator Response], with an evaluator id.
|
||||
+
|
||||
[source,json]
|
||||
----
|
||||
[
|
||||
0x21,
|
||||
{
|
||||
"requestId": 135,
|
||||
"evaluatorId": -135901
|
||||
}
|
||||
]
|
||||
----
|
||||
. Client sends xref:message-passing-api.adoc#evaluate-request[Evaluate Request], providing the module's URI.
|
||||
+
|
||||
[source,json]
|
||||
----
|
||||
[
|
||||
0x23,
|
||||
{
|
||||
"requestId": 9805131,
|
||||
"evaluatorId": -13901,
|
||||
"moduleUri": "file:///path/to/myModule.pkl"
|
||||
}
|
||||
]
|
||||
----
|
||||
. During evaluation, server evaluates `import*("customfs:/*.pkl")`, and sends xref:message-passing-api.adoc#list-modules-request[List Modules Request].
|
||||
+
|
||||
[source,json]
|
||||
----
|
||||
[
|
||||
0x2c,
|
||||
{
|
||||
"requestId": -6478924,
|
||||
"evaluatorId": -13901,
|
||||
"uri": "customfs:/"
|
||||
}
|
||||
]
|
||||
----
|
||||
. Client responds with xref:message-passing-api.adoc#list-modules-response[List Modules Response].
|
||||
In our pretend scenario, there is only one file; `foo.pkl`.
|
||||
+
|
||||
[source,json]
|
||||
----
|
||||
[
|
||||
0x2d,
|
||||
{
|
||||
"requestId": -6478924,
|
||||
"evaluatorId": -13901,
|
||||
"pathElements": [
|
||||
{
|
||||
"name": "foo.pkl",
|
||||
"isDirectory": false
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
----
|
||||
. Server sends xref:message-passing-api.adoc#read-module-request[Read Module Request] to read `foo.pkl`.
|
||||
+
|
||||
[source,json]
|
||||
----
|
||||
[
|
||||
0x28,
|
||||
{
|
||||
"requestId": 36408291,
|
||||
"evaluatorId": -13901,
|
||||
"uri": "customfs:/foo.pkl"
|
||||
}
|
||||
]
|
||||
----
|
||||
. Client responds with the module's contents
|
||||
+
|
||||
[source,json]
|
||||
----
|
||||
[
|
||||
0x29,
|
||||
{
|
||||
"requestId": 36408291,
|
||||
"evaluatorId": -13901,
|
||||
"contents": "foo = 1"
|
||||
}
|
||||
]
|
||||
----
|
||||
. Server finishes evaluation, and responds with the xref:message-passing-api.adoc#evaluate-response[Evaluate Response].
|
||||
+
|
||||
[source,json]
|
||||
----
|
||||
[
|
||||
0x24,
|
||||
{
|
||||
"requestId": 9805131,
|
||||
"evaluatorId": -13901,
|
||||
"result": <pkl binary value>
|
||||
}
|
||||
]
|
||||
----
|
||||
. Client sends xref:message-passing-api.adoc#close-evaluator[Close Evaluator].
|
||||
+
|
||||
[source,json]
|
||||
----
|
||||
[
|
||||
0x22,
|
||||
{
|
||||
"evaluatorId": -13901
|
||||
}
|
||||
]
|
||||
----
|
||||
|
||||
== Debug logs
|
||||
|
||||
Set the env var `PKL_DEBUG=1` to enable more verbose logging from Pkl.
|
||||
It is recommended that clients also use this environment variable to enable debug logs of their own.
|
||||
|
||||
@@ -0,0 +1,531 @@
|
||||
= Message Passing API
|
||||
|
||||
include::ROOT:partial$component-attributes.adoc[]
|
||||
include::partial$component-attributes.adoc[]
|
||||
|
||||
All messages are encoded in link:{uri-messagepack}[MessagePack], as an array with two elements.
|
||||
|
||||
The first element of the array is a code that designates the message's type, encoded as an int.
|
||||
The second element of the array is the message body, encoded as a map.
|
||||
|
||||
Messages are passed between the _client_ and the _server_.
|
||||
The _client_ is the host language (for example, the Swift application when using pkl-swift).
|
||||
The _server_ is the entity that provides controls for interacting with Pkl.
|
||||
|
||||
For example, in JSON representation:
|
||||
|
||||
[source,json]
|
||||
----
|
||||
[
|
||||
1, // <1>
|
||||
{ "someKey": "someValue" } // <2>
|
||||
]
|
||||
----
|
||||
<1> Code indicating message type
|
||||
<2> Message body
|
||||
|
||||
== Message types
|
||||
|
||||
[[client-message]]
|
||||
=== Client Message
|
||||
A message passed from the client to the server.
|
||||
|
||||
[[server-message]]
|
||||
=== Server Message
|
||||
A message passed from the server to the client.
|
||||
|
||||
[[request-message]]
|
||||
=== Request Message
|
||||
A message sent with a `requestId` value.
|
||||
The `requestId` should be a unique number at the time of message send.
|
||||
The other side is expected to respond with a <<response-message>> with the same `requestId`.
|
||||
|
||||
[[response-message]]
|
||||
=== Response Message
|
||||
A message that is the response to a <<request-message>>.
|
||||
It contains the same `requestId` of the request message.
|
||||
|
||||
[[one-way-message]]
|
||||
=== One Way Message
|
||||
|
||||
A fire-and-forget message where no response is expected.
|
||||
|
||||
== Messages
|
||||
|
||||
All messages have their schema described in Pkl.
|
||||
A nullable type means that the property should be omitted (as opposed to the property's value being `nil`).
|
||||
|
||||
[[create-evaluator-request]]
|
||||
=== Create Evaluator Request
|
||||
|
||||
Code: `0x20` +
|
||||
Type: <<client-message,Client>> <<request-message,Request>>
|
||||
|
||||
Create an evaluator with the provided evaluator settings.
|
||||
Upon creating the evaluator, the server sends back a <<create-evaluator-response>> message.
|
||||
|
||||
Schema:
|
||||
[source,pkl]
|
||||
----
|
||||
/// A number identifying this request
|
||||
requestId: Int
|
||||
|
||||
/// Regex patterns to determine which modules are allowed for import.
|
||||
///
|
||||
/// API version of the CLI's `--allowed-modules` flag
|
||||
allowedModules: Listing<String>?
|
||||
|
||||
/// Regex patterns to dettermine which resources are allowed to be read.
|
||||
///
|
||||
/// API version of the CLI's `--allowed-resources` flag
|
||||
allowedResources: Listing<String>?
|
||||
|
||||
/// Register client-side module readers.
|
||||
clientModuleReaders: Listing<ClientModuleReader>?
|
||||
|
||||
/// Register client-side resource readers.
|
||||
clientResourceReaders: Listing<ClientResourceReader>?
|
||||
|
||||
/// Directories, ZIP archives, or JAR archives
|
||||
/// to search when resolving `modulepath:` URIs.
|
||||
///
|
||||
/// API version of the CLI's `--module-path` flag.
|
||||
modulePaths: Listing<String>?
|
||||
|
||||
/// Environment variable to set.
|
||||
///
|
||||
/// API version of the CLI's `--env-var` flag.
|
||||
env: Mapping<String, String>?
|
||||
|
||||
/// External properties to set.
|
||||
///
|
||||
/// API version of the CLI's `--properties` flag.
|
||||
properties: Mapping<String, String>?
|
||||
|
||||
/// Duration, in seconds, after which evaluation of a source module will be timed out.
|
||||
///
|
||||
/// API version of the CLI's `--timeout` flag.
|
||||
timeoutSeconds: Int?
|
||||
|
||||
/// Restricts access to file-based modules and resources to those located under the root directory.
|
||||
rootDir: String?
|
||||
|
||||
/// The cache directory for storing packages.
|
||||
cacheDir: String?
|
||||
|
||||
/// The format to generate.
|
||||
///
|
||||
/// This sets the `pkl.outputFormat` external property.
|
||||
outputFormat: String?
|
||||
|
||||
/// The project dependency settings.
|
||||
project: Project?
|
||||
|
||||
class ClientResourceReader {
|
||||
/// The URI scheme this reader is responsible for reading.
|
||||
scheme: String
|
||||
|
||||
/// Tells whether the path part of ths URI has a
|
||||
/// [hier-part](https://datatracker.ietf.org/doc/html/rfc3986#section-3).
|
||||
///
|
||||
/// An example of a hierarchical URI is `file:///path/to/my/file`, where
|
||||
/// `/path/to/my/file` designates a nested path through the `/` character.
|
||||
///
|
||||
/// An example of a non-hierarchical URI is `pkl.base`, where the `base` does not denote
|
||||
/// any form of hierarchy.
|
||||
hasHierarchicalUris: Boolean
|
||||
|
||||
/// Tells whether this reader supports globbing.
|
||||
isGlobbable: Boolean
|
||||
}
|
||||
|
||||
class ClientModuleReader {
|
||||
/// The URI scheme this reader is responsible for reading.
|
||||
scheme: String
|
||||
|
||||
/// Tells whether the path part of ths URI has a
|
||||
/// [hier-part](https://datatracker.ietf.org/doc/html/rfc3986#section-3).
|
||||
///
|
||||
/// An example of a hierarchical URI is `file:///path/to/my/file`, where
|
||||
/// `/path/to/my/file` designates a nested path through the `/` character.
|
||||
///
|
||||
/// An example of a non-hierarchical URI is `pkl.base`, where the `base` does not denote
|
||||
/// any form of hierarchy.
|
||||
hasHierarchicalUris: Boolean
|
||||
|
||||
/// Tells whether this reader supports globbing.
|
||||
isGlobbable: Boolean
|
||||
|
||||
/// Tells whether the module is local to the system.
|
||||
///
|
||||
/// A local resource that [hasHierarchicalUris] supports triple-dot imports.
|
||||
isLocal: Boolean
|
||||
}
|
||||
|
||||
class Project {
|
||||
type: "local"
|
||||
|
||||
/// The canonical URI of this project's package
|
||||
packageUri: String?
|
||||
|
||||
/// The URI pointing to the location of the project file.
|
||||
projectFileUri: String
|
||||
|
||||
/// The dependencies of this project.
|
||||
dependencies: Mapping<String, Project|RemoteDependency>
|
||||
}
|
||||
|
||||
class RemoteDependency {
|
||||
type: "remote"
|
||||
|
||||
/// The canonical URI of this dependency
|
||||
packageUri: String?
|
||||
|
||||
/// The checksums of this remote dependency
|
||||
checksums: Checksums?
|
||||
}
|
||||
|
||||
class Checksums {
|
||||
/// The sha-256 checksum of this dependency's metadata.
|
||||
sha256: String
|
||||
}
|
||||
----
|
||||
|
||||
Example:
|
||||
[source,json5]
|
||||
----
|
||||
[
|
||||
0x20,
|
||||
{
|
||||
"requestId": 193501,
|
||||
"allowedModules": ["pkl:", "repl:"],
|
||||
"allowedResources": ["file:", "package:", "projectpackage:"]
|
||||
}
|
||||
]
|
||||
----
|
||||
|
||||
[[create-evaluator-response]]
|
||||
=== Create Evaluator Response
|
||||
|
||||
Code: `0x21` +
|
||||
Type: <<server-message,Server>> <<response-message,Response>>
|
||||
|
||||
The response for a <<create-evaluator-request>>.
|
||||
If the evaluator was created successfully, `evaluatorId` is set. Otherwise, `error` is set to the resulting error.
|
||||
|
||||
[source,pkl]
|
||||
----
|
||||
/// A number identifying this request
|
||||
requestId: Int
|
||||
|
||||
/// A number identifying the created evaluator.
|
||||
evaluatorId: Int?
|
||||
|
||||
/// A message detailing why the evaluator was not created.
|
||||
error: String?
|
||||
----
|
||||
|
||||
[[close-evaluator]]
|
||||
=== Close Evaluator
|
||||
|
||||
Code: `0x22` +
|
||||
Type: <<client-message,Client>> <<one-way-message,One Way>>
|
||||
|
||||
Tells the Pkl server to close an evaluator, releasing any resources it may be holding.
|
||||
|
||||
[source,pkl]
|
||||
----
|
||||
/// A number identifying this evaluator.
|
||||
evaluatorId: Int
|
||||
----
|
||||
|
||||
[[evaluate-request]]
|
||||
=== Evaluate Request
|
||||
|
||||
Code: `0x23` +
|
||||
Type: <<client-message,Client>> <<request-message,Request>>
|
||||
|
||||
Evaluate a module.
|
||||
|
||||
[source,pkl]
|
||||
----
|
||||
/// A number identifying this request
|
||||
requestId: Int
|
||||
|
||||
/// A number identifying this evaluator.
|
||||
evaluatorId: Int
|
||||
|
||||
/// The absolute URI of the module to be evaluated.
|
||||
moduleUri: String
|
||||
|
||||
/// The module's contents.
|
||||
///
|
||||
/// If [null], Pkl will load the module at runtime.
|
||||
moduleText: String?
|
||||
|
||||
/// The Pkl expression to be evaluated within the module.
|
||||
///
|
||||
/// If [null], evaluates the whole module.
|
||||
expr: String?
|
||||
----
|
||||
|
||||
[[evaluate-response]]
|
||||
=== Evaluate Response
|
||||
|
||||
Code: `0x24` +
|
||||
Type: <<server-message,Server>> <<response-message,Response>>
|
||||
|
||||
The server's response to <<evaluate-request>>.
|
||||
If the evaluation is successful, the response is the Pkl value encoded in xref:binary-encoding.adoc[binary encoding].
|
||||
|
||||
[source,pkl]
|
||||
----
|
||||
/// The requestId of the Evaluate request
|
||||
requestId: Int
|
||||
|
||||
/// A number identifying this evaluator.
|
||||
evaluatorId: Int
|
||||
|
||||
/// The evaluation contents, if successful.
|
||||
result: Binary? // <1>
|
||||
|
||||
/// A message detailing why evaluation failed.
|
||||
error: String?
|
||||
|
||||
typealias Binary = Any // <1>
|
||||
----
|
||||
<1> xref:binary-encoding.adoc[Pkl Binary Encoding] in link:{uri-messagepack-bin}[bin format] (not expressable in Pkl)
|
||||
|
||||
[[log]]
|
||||
=== Log
|
||||
|
||||
Code: `0x25` +
|
||||
Type: <<server-message,Server>> <<one-way-message,One Way>>
|
||||
|
||||
Tells the client to emit a log message, during the execution of a Pkl program.
|
||||
A log can occur through a xref:language-reference:index.adoc#debugging[trace()] expression, or through a warning (for example, when encountering a link:{uri-stdlib-Deprecated}[Deprecated] value.)
|
||||
|
||||
[source,pkl]
|
||||
----
|
||||
/// A number identifying this evaluator.
|
||||
evaluatorId: Int
|
||||
|
||||
/// A number identifying the log level.
|
||||
///
|
||||
/// - 0: trace
|
||||
/// - 1: warn
|
||||
level: Int(this == 0 || this == 1)
|
||||
|
||||
/// The message to be logged
|
||||
message: String
|
||||
|
||||
/// A string representing the source location within Pkl code producing this log output.
|
||||
frameUri: String
|
||||
----
|
||||
|
||||
[[read-resource-request]]
|
||||
=== Read Resource Request
|
||||
|
||||
Code: `0x26` +
|
||||
Type: <<server-message,Server>> <<request-message,Request>>
|
||||
|
||||
Read a resource at the given URI.
|
||||
This message occurs when a read expression (`read`/`read?`/`read*`) is encountered within a program, and its scheme matches a client resource reader.
|
||||
|
||||
[source,pkl]
|
||||
----
|
||||
/// A number identifying this request.
|
||||
requestId: Int
|
||||
|
||||
/// A number identifying this evaluator.
|
||||
evaluatorId: Int
|
||||
|
||||
/// The URI of the resource.
|
||||
uri: String
|
||||
----
|
||||
|
||||
[[read-resource-response]]
|
||||
=== Read Resource Response
|
||||
|
||||
Code: `0x27` +
|
||||
Type: <<client-message,Client>> <<response-message,Response>>
|
||||
|
||||
The response to <<read-resource-request>>.
|
||||
If successful, `contents` is set.
|
||||
Otherwise, `error` is set.
|
||||
|
||||
[source,pkl]
|
||||
----
|
||||
/// A number identifying this request.
|
||||
requestId: Int
|
||||
|
||||
/// A number identifying this evaluator.
|
||||
evaluatorId: Int
|
||||
|
||||
/// The contents of the resource.
|
||||
contents: Binary? // <1>
|
||||
|
||||
/// The description of the error that occured when reading this resource.
|
||||
error: String?
|
||||
|
||||
typealias Binary = Any // <1>
|
||||
----
|
||||
<1> MessagePack's link:https://github.com/msgpack/msgpack/blob/master/spec.md#bin-format-family[bin format family] (not expressable in Pkl)
|
||||
|
||||
[[read-module-request]]
|
||||
=== Read Module Request
|
||||
|
||||
Code: `0x28` +
|
||||
Type: <<server-message,Server>> <<request-message,Request>>
|
||||
|
||||
Read a module at the given URI.
|
||||
This message occurs during the evaluation of an import statement or expression (`import`/`import*`), when a scheme matches a client module reader.
|
||||
|
||||
[source,pkl]
|
||||
----
|
||||
/// A number identifying this request.
|
||||
requestId: Int
|
||||
|
||||
/// A number identifying this evaluator.
|
||||
evaluatorId: Int
|
||||
|
||||
/// The URI of the module.
|
||||
uri: String
|
||||
----
|
||||
|
||||
[[read-module-response]]
|
||||
=== Read Module Response
|
||||
|
||||
Code: `0x29` +
|
||||
Type: <<client-message,Client>> <<response-message,Response>>
|
||||
|
||||
The response to <<read-module-request>>.
|
||||
If successful, `contents` is set.
|
||||
Otherwise, `error` is set.
|
||||
|
||||
[source,pkl]
|
||||
----
|
||||
/// A number identifying this request.
|
||||
requestId: Int
|
||||
|
||||
/// A number identifying this evaluator.
|
||||
evaluatorId: Int
|
||||
|
||||
/// The string contents of the module.
|
||||
contents: String?
|
||||
|
||||
/// The description of the error that occured when reading this resource.
|
||||
error: String?
|
||||
----
|
||||
|
||||
[[list-resources-request]]
|
||||
=== List Resources Request
|
||||
|
||||
Code: `0x2a` +
|
||||
Type: <<server-message,Server>> <<request-message,Request>>
|
||||
|
||||
List resources at the specified base path.
|
||||
This message occurs during the evaluation of a xref:language-reference:index.adoc#globbed-reads[globbed read], when a scheme matches a client resource reader's scheme.
|
||||
|
||||
If the resource reader does not have hierarchical URIs, `dummy` is used as the path, and the response is expected to contain all resource elements for that scheme.
|
||||
|
||||
[source,pkl]
|
||||
----
|
||||
/// A number identifying this request.
|
||||
requestId: Int
|
||||
|
||||
/// A number identifying this evaluator.
|
||||
evaluatorId: Int
|
||||
|
||||
/// The base URI to list resources.
|
||||
uri: String
|
||||
----
|
||||
|
||||
[[list-resources-response]]
|
||||
=== List Resources Response
|
||||
|
||||
Code: `0x2b` +
|
||||
Type: <<client-message,Client>> <<response-message,Response>>
|
||||
|
||||
The response to <<list-resources-request>>.
|
||||
If successful, `pathElements` is set.
|
||||
Otherwise, `error` is set.
|
||||
|
||||
[source,pkl]
|
||||
----
|
||||
/// A number identifying this request.
|
||||
requestId: Int
|
||||
|
||||
/// A number identifying this evaluator.
|
||||
evaluatorId: Int
|
||||
|
||||
/// The elements at the provided base path.
|
||||
pathElements: Listing<PathElement>?
|
||||
|
||||
/// The description of the error that occured when listing elements.
|
||||
error: String?
|
||||
|
||||
class PathElement {
|
||||
/// The name of the element at this path
|
||||
name: String
|
||||
|
||||
/// Tells whether the element is a directory.
|
||||
isDirectory: Boolean
|
||||
}
|
||||
----
|
||||
|
||||
[[list-modules-request]]
|
||||
=== List Modules Request
|
||||
|
||||
Code: `0x2c` +
|
||||
Type: <<server-message,Server>> <<request-message,Request>>
|
||||
|
||||
List modules at the specified base path.
|
||||
This message occurs during the evaluation of a xref:language-reference:index.adoc#globbed-imports[globbed import], when a scheme matches a client resource reader's scheme.
|
||||
|
||||
If the module reader does not have hierarchical URIs, `dummy` is used as the path, and the response is expected to contain all module elements for that scheme.
|
||||
|
||||
[source,pkl]
|
||||
----
|
||||
/// A number identifying this request.
|
||||
requestId: Int
|
||||
|
||||
/// A number identifying this evaluator.
|
||||
evaluatorId: Int
|
||||
|
||||
/// The base URI to list modules.
|
||||
uri: String
|
||||
----
|
||||
|
||||
[[list-modules-response]]
|
||||
=== List Modules Response
|
||||
|
||||
Code: `0x2d` +
|
||||
Type: <<client-message,Client>> <<response-message,Response>>
|
||||
|
||||
The response to <<list-modules-request>>.
|
||||
If successful, `pathElements` is set.
|
||||
Otherwise, `error` is set.
|
||||
|
||||
[source,pkl]
|
||||
----
|
||||
/// A number identifying this request.
|
||||
requestId: Int
|
||||
|
||||
/// A number identifying this evaluator.
|
||||
evaluatorId: Int
|
||||
|
||||
/// The elements at the provided base path.
|
||||
pathElements: Listing<PathElement>?
|
||||
|
||||
/// The description of the error that occured when listing elements.
|
||||
error: String?
|
||||
|
||||
class PathElement {
|
||||
/// The name of the element at this path
|
||||
name: String
|
||||
|
||||
/// Tells whether the element is a directory.
|
||||
isDirectory: Boolean
|
||||
}
|
||||
----
|
||||
@@ -0,0 +1,9 @@
|
||||
:uri-github-binary-encoding-snippet-tests: {uri-github-tree}/pkl-server/src/test/files/SnippetTests
|
||||
:uri-messagepack-bool: {uri-messagepack-spec}#bool-format-family
|
||||
:uri-messagepack-int: {uri-messagepack-spec}#int-format-family
|
||||
:uri-messagepack-float: {uri-messagepack-spec}#float-format-family
|
||||
:uri-messagepack-str: {uri-messagepack-spec}#str-format-family
|
||||
:uri-messagepack-bin: {uri-messagepack-spec}#bin-format-family
|
||||
:uri-messagepack-array: {uri-messagepack-spec}#array-format-family
|
||||
:uri-messagepack-map: {uri-messagepack-spec}#map-format-family
|
||||
:uri-messagepack-nil: {uri-messagepack-spec}#nil-format
|
||||
@@ -13,14 +13,14 @@ Also, Pkl's strong and weak points in comparison to other configuration language
|
||||
[[static-config-formats]]
|
||||
== Pkl vs. Static Config Formats
|
||||
|
||||
Static configuration formats such as JSON, YAML, and XML work reasonably well for simple configuration needs.
|
||||
Static configuration formats such as JSON, YAML, TOML, and XML work reasonably well for simple configuration needs.
|
||||
However, they do have some shortcomings, including:
|
||||
|
||||
. They are not very human-friendly to read and write. (JSON, XML)
|
||||
. They do not provide a way to split a large file into multiple smaller ones. (JSON, YAML)
|
||||
. They offer no way or very limited ways to abstract over repetitive configuration. (JSON, YAML, XML)
|
||||
. They do not offer standardized or widely available schema validators. (JSON, YAML)
|
||||
. They offer little or no schema-aware tooling. (JSON, YAML)
|
||||
. They do not provide a way to split a large file into multiple smaller ones. (JSON, YAML, TOML)
|
||||
. They offer no way or very limited ways to abstract over repetitive configuration. (JSON, YAML, TOML, XML)
|
||||
. They do not offer standardized or widely available schema validators. (JSON, YAML, TOML)
|
||||
. They offer little or no schema-aware tooling. (JSON, YAML, TOML)
|
||||
|
||||
Pkl addresses these shortcomings as follows:
|
||||
|
||||
|
||||
@@ -22,7 +22,7 @@ At the same time, anyone configuring your application -- whether that's your use
|
||||
+
|
||||
At the time of writing, Pkl offers configuration libraries for the JVM runtime, Swift, and also for Golang.
|
||||
+
|
||||
We maintian the following libraries:
|
||||
We maintain the following libraries:
|
||||
+
|
||||
* xref:java-binding:pkl-config-java.adoc[pkl-config-java] for Java compatible languages
|
||||
* xref:kotlin-binding:pkl-config-kotlin.adoc[pkl-config-kotlin] for the {uri-kotlin-homepage}[Kotlin] language.
|
||||
|
||||
@@ -45,11 +45,14 @@ dependencies {
|
||||
compile "org.pkl-lang:pkl-codegen-java:{pkl-artifact-version}"
|
||||
}
|
||||
|
||||
ifndef::is-release-build[]
|
||||
repositories {
|
||||
maven { url "{uri-sonatype}" }
|
||||
}
|
||||
ifdef::is-release-version[]
|
||||
mavenCentral()
|
||||
endif::[]
|
||||
ifndef::is-release-version[]
|
||||
maven { url "{uri-sonatype}" }
|
||||
endif::[]
|
||||
}
|
||||
----
|
||||
|
||||
Kotlin::
|
||||
@@ -61,11 +64,14 @@ dependencies {
|
||||
compile("org.pkl-lang:pkl-codegen-java:{pkl-artifact-version}")
|
||||
}
|
||||
|
||||
ifndef::is-release-build[]
|
||||
repositories {
|
||||
maven { url = uri("{uri-sonatype}") }
|
||||
}
|
||||
ifdef::is-release-version[]
|
||||
mavenCentral()
|
||||
endif::[]
|
||||
ifndef::is-release-version[]
|
||||
maven { url = uri("{uri-sonatype}") }
|
||||
endif::[]
|
||||
}
|
||||
----
|
||||
====
|
||||
|
||||
@@ -82,7 +88,7 @@ To use the library in a Maven project, declare the following dependency:
|
||||
<artifactId>pkl-codegen-java</artifactId>
|
||||
<version>{pkl-artifact-version}</version>
|
||||
</dependency>
|
||||
ifndef::is-release-build[]
|
||||
ifndef::is-release-version[]
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>sonatype-s01</id>
|
||||
|
||||
@@ -40,7 +40,12 @@ dependencies {
|
||||
compile "org.pkl-lang:pkl-config-java:{pkl-artifact-version}"
|
||||
}
|
||||
|
||||
ifndef::is-release-build[]
|
||||
ifdef::is-release-version[]
|
||||
repositories {
|
||||
mavenCentral()
|
||||
}
|
||||
endif::[]
|
||||
ifndef::is-release-version[]
|
||||
repositories {
|
||||
maven { url "{uri-sonatype}" }
|
||||
}
|
||||
@@ -56,11 +61,14 @@ dependencies {
|
||||
compile("org.pkl-lang:pkl-config-java:{pkl-artifact-version}")
|
||||
}
|
||||
|
||||
ifndef::is-release-build[]
|
||||
repositories {
|
||||
maven { url = uri("{uri-sonatype}") }
|
||||
}
|
||||
ifdef::is-release-version[]
|
||||
mavenCentral()
|
||||
endif::[]
|
||||
ifndef::is-release-version[]
|
||||
maven { url = uri("{uri-sonatype}") }
|
||||
endif::[]
|
||||
}
|
||||
----
|
||||
====
|
||||
|
||||
@@ -79,7 +87,7 @@ To use the library in a Maven project, declare the following dependency:
|
||||
<artifactId>pkl-config-java</artifactId>
|
||||
<version>{pkl-artifact-version}</version>
|
||||
</dependency>
|
||||
ifndef::is-release-build[]
|
||||
ifndef::is-release-version[]
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>sonatype-s01</id>
|
||||
|
||||
@@ -19,7 +19,7 @@ See xref:pkl-gradle:index.adoc#installation[Installation] in the Gradle plugin c
|
||||
=== Java Library
|
||||
|
||||
The `pkl-codegen-kotlin` library is available {uri-pkl-codegen-kotlin-maven-module}[from Maven Central].
|
||||
It requires Java 8 or higher and Kotlin 1.3 or higher.
|
||||
It requires Java 11 or higher and Kotlin 1.3 or higher.
|
||||
|
||||
==== Gradle
|
||||
|
||||
@@ -36,11 +36,14 @@ dependencies {
|
||||
compile "org.pkl-lang:pkl-codegen-kotlin:{pkl-artifact-version}"
|
||||
}
|
||||
|
||||
ifndef::is-release-build[]
|
||||
repositories {
|
||||
maven { url "{uri-sonatype}" }
|
||||
}
|
||||
ifdef::is-release-version[]
|
||||
mavenCentral()
|
||||
endif::[]
|
||||
ifndef::is-release-version[]
|
||||
maven { url "{uri-sonatype}" }
|
||||
endif::[]
|
||||
}
|
||||
----
|
||||
|
||||
Kotlin::
|
||||
@@ -52,11 +55,14 @@ dependencies {
|
||||
compile("org.pkl-lang:pkl-codegen-kotlin:{pkl-artifact-version}")
|
||||
}
|
||||
|
||||
ifndef::is-release-build[]
|
||||
repositories {
|
||||
maven { url = uri("{uri-sonatype}") }
|
||||
}
|
||||
ifdef::is-release-version[]
|
||||
mavenCentral()
|
||||
endif::[]
|
||||
ifndef::is-release-version[]
|
||||
maven { url = uri("{uri-sonatype}") }
|
||||
endif::[]
|
||||
}
|
||||
----
|
||||
====
|
||||
|
||||
|
||||
@@ -20,36 +20,43 @@ To use the library in a Gradle project, declare the following dependency:
|
||||
|
||||
[tabs]
|
||||
====
|
||||
Groovy::
|
||||
+
|
||||
.build.gradle
|
||||
[source,groovy,subs="+attributes"]
|
||||
----
|
||||
dependencies {
|
||||
compile "org.pkl-lang:pkl-config-kotlin:{pkl-artifact-version}"
|
||||
}
|
||||
|
||||
ifndef::is-release-build[]
|
||||
repositories {
|
||||
maven { url "{uri-sonatype}" }
|
||||
}
|
||||
endif::[]
|
||||
----
|
||||
|
||||
Kotlin::
|
||||
+
|
||||
.build.gradle.kts
|
||||
[source,kotlin,subs="+attributes"]
|
||||
----
|
||||
dependencies {
|
||||
compile("org.pkl-lang:pkl-config-kotlin:{pkl-artifact-version}")
|
||||
implementation("org.pkl-lang:pkl-config-kotlin:{pkl-artifact-version}")
|
||||
}
|
||||
|
||||
ifndef::is-release-build[]
|
||||
repositories {
|
||||
maven { url = uri("{uri-sonatype}") }
|
||||
}
|
||||
ifdef::is-release-version[]
|
||||
mavenCentral()
|
||||
endif::[]
|
||||
ifndef::is-release-version[]
|
||||
maven(url = "{uri-sonatype}")
|
||||
endif::[]
|
||||
}
|
||||
----
|
||||
|
||||
|
||||
Groovy::
|
||||
+
|
||||
.build.gradle
|
||||
[source,groovy,subs="+attributes"]
|
||||
----
|
||||
dependencies {
|
||||
implementation "org.pkl-lang:pkl-config-kotlin:{pkl-artifact-version}"
|
||||
}
|
||||
|
||||
repositories {
|
||||
ifdef::is-release-version[]
|
||||
mavenCentral()
|
||||
endif::[]
|
||||
ifndef::is-release-version[]
|
||||
maven { url "{uri-sonatype}" }
|
||||
endif::[]
|
||||
}
|
||||
----
|
||||
====
|
||||
|
||||
@@ -66,7 +73,7 @@ To use the library in a Maven project, declare the following dependency:
|
||||
<artifactId>pkl-config-kotlin</artifactId>
|
||||
<version>{pkl-artifact-version}</version>
|
||||
</dependency>
|
||||
ifndef::is-release-build[]
|
||||
ifndef::is-release-version[]
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>sonatype-s01</id>
|
||||
|
||||
@@ -9,70 +9,6 @@ include::ROOT:partial$component-attributes.adoc[]
|
||||
:uri-javadoc-Pattern: https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html
|
||||
:uri-github-PklLexer: {uri-github-tree}/pkl-core/src/main/antlr/PklLexer.g4
|
||||
:uri-github-PklParser: {uri-github-tree}/pkl-core/src/main/antlr/PklParser.g4
|
||||
:uri-stdlib-baseModule: {uri-pkl-stdlib-docs}/base
|
||||
:uri-stdlib-jsonnetModule: {uri-pkl-stdlib-docs}/jsonnet
|
||||
:uri-stdlib-reflectModule: {uri-pkl-stdlib-docs}/reflect
|
||||
:uri-stdlib-xmlModule: {uri-pkl-stdlib-docs}/xml
|
||||
:uri-stdlib-protobufModule: {uri-pkl-stdlib-docs}/protobuf
|
||||
:uri-stdlib-Boolean: {uri-stdlib-baseModule}/Boolean
|
||||
:uri-stdlib-xor: {uri-stdlib-baseModule}/Boolean#xor()
|
||||
:uri-stdlib-implies: {uri-stdlib-baseModule}/Boolean#implies()
|
||||
:uri-stdlib-Any: {uri-stdlib-baseModule}/Any
|
||||
:uri-stdlib-String: {uri-stdlib-baseModule}/String
|
||||
:uri-stdlib-Int: {uri-stdlib-baseModule}/Int
|
||||
:uri-stdlib-Float: {uri-stdlib-baseModule}/Float
|
||||
:uri-stdlib-Number: {uri-stdlib-baseModule}/Number
|
||||
:uri-stdlib-NaN: {uri-stdlib-baseModule}/#NaN
|
||||
:uri-stdlib-Infinity: {uri-stdlib-baseModule}/#Infinity
|
||||
:uri-stdlib-isBetween: {uri-stdlib-baseModule}/Number#isBetween
|
||||
:uri-stdlib-isFinite: {uri-stdlib-baseModule}/Number#isFinite
|
||||
:uri-stdlib-Int8: {uri-stdlib-baseModule}/#Int8
|
||||
:uri-stdlib-Int16: {uri-stdlib-baseModule}/#Int16
|
||||
:uri-stdlib-Int32: {uri-stdlib-baseModule}/#Int32
|
||||
:uri-stdlib-UInt8: {uri-stdlib-baseModule}/#UInt8
|
||||
:uri-stdlib-UInt16: {uri-stdlib-baseModule}/#UInt16
|
||||
:uri-stdlib-UInt32: {uri-stdlib-baseModule}/#UInt32
|
||||
:uri-stdlib-UInt: {uri-stdlib-baseModule}/#UInt
|
||||
:uri-stdlib-Uri: {uri-stdlib-baseModule}/#Uri
|
||||
:uri-stdlib-matches: {uri-stdlib-baseModule}/String#matches()
|
||||
:uri-stdlib-Null: {uri-stdlib-baseModule}/Null
|
||||
:uri-stdlib-ifNonNull: {uri-stdlib-baseModule}/Null#ifNonNull()
|
||||
:uri-stdlib-List: {uri-stdlib-baseModule}/List
|
||||
:uri-stdlib-Set: {uri-stdlib-baseModule}/Set
|
||||
:uri-stdlib-Map: {uri-stdlib-baseModule}/Map
|
||||
:uri-stdlib-Listing: {uri-stdlib-baseModule}/Listing
|
||||
:uri-stdlib-Listing-default: {uri-stdlib-baseModule}/Listing#default
|
||||
:uri-stdlib-Listing-isDistinct: {uri-stdlib-baseModule}/Listing#isDistinct
|
||||
:uri-stdlib-Listing-isDistinctBy: {uri-stdlib-baseModule}/Listing#isDistinctBy()
|
||||
:uri-stdlib-Mapping: {uri-stdlib-baseModule}/Mapping
|
||||
:uri-stdlib-Mapping-default: {uri-stdlib-baseModule}/Mapping#default
|
||||
:uri-stdlib-Duration: {uri-stdlib-baseModule}/Duration
|
||||
:uri-stdlib-Duration-value: {uri-stdlib-baseModule}/Duration#value
|
||||
:uri-stdlib-Duration-unit: {uri-stdlib-baseModule}/Duration#unit
|
||||
:uri-stdlib-DurationUnit: {uri-stdlib-baseModule}/#DurationUnit
|
||||
:uri-stdlib-DataSize: {uri-stdlib-baseModule}/DataSize
|
||||
:uri-stdlib-DataSize-value: {uri-stdlib-baseModule}/DataSize#value
|
||||
:uri-stdlib-DataSize-unit: {uri-stdlib-baseModule}/DataSize#unit
|
||||
:uri-stdlib-DataSizeUnit: {uri-stdlib-baseModule}/#DataSizeUnit
|
||||
:uri-stdlib-Dynamic: {uri-stdlib-baseModule}/Dynamic
|
||||
:uri-stdlib-Dynamic-toTyped: {uri-stdlib-baseModule}/Dynamic#toTyped()
|
||||
:uri-stdlib-Typed: {uri-stdlib-baseModule}/Typed
|
||||
:uri-stdlib-Regex: {uri-stdlib-baseModule}/Regex
|
||||
:uri-stdlib-Regex-method: {uri-stdlib-baseModule}/#Regex()
|
||||
:uri-stdlib-Regex-match: {uri-stdlib-baseModule}/Regex#match
|
||||
:uri-stdlib-RegexMatch: {uri-stdlib-baseModule}/RegexMatch
|
||||
:uri-stdlib-ValueRenderer: {uri-stdlib-baseModule}/ValueRenderer
|
||||
:uri-stdlib-PcfRenderer-converters: {uri-stdlib-baseModule}/PcfRenderer#converters
|
||||
:uri-stdlib-Function: {uri-stdlib-baseModule}/Function
|
||||
:uri-stdlib-Function0: {uri-stdlib-baseModule}/Function0
|
||||
:uri-stdlib-Function1: {uri-stdlib-baseModule}/Function1
|
||||
:uri-stdlib-Function1-apply: {uri-stdlib-baseModule}/Function1#apply()
|
||||
:uri-stdlib-Function2: {uri-stdlib-baseModule}/Function2
|
||||
:uri-stdlib-Function3: {uri-stdlib-baseModule}/Function3
|
||||
:uri-stdlib-Function4: {uri-stdlib-baseModule}/Function4
|
||||
:uri-stdlib-Function5: {uri-stdlib-baseModule}/Function5
|
||||
:uri-stdlib-Resource: {uri-stdlib-baseModule}/Resource
|
||||
:uri-stdlib-outputFiles: {uri-stdlib-baseModule}/ModuleOutput#files
|
||||
:uri-pkl-core-ModuleSchema: {uri-pkl-core-main-sources}/ModuleSchema.java
|
||||
:uri-pkl-core-SecurityManager: {uri-pkl-core-main-sources}/SecurityManager.java
|
||||
:uri-pkl-core-ResourceReader: {uri-pkl-core-main-sources}/resource/ResourceReader.java
|
||||
@@ -2813,7 +2749,7 @@ output {
|
||||
}
|
||||
----
|
||||
|
||||
Running `pkl eval -m output/ pigeon.pkl` produces the following output files:
|
||||
Running `pkl eval -m output/ birds.pkl` produces the following output files:
|
||||
|
||||
.output/birds/pigeon.json
|
||||
[source,json]
|
||||
@@ -3777,10 +3713,18 @@ The following class types are _generic types_:
|
||||
|
||||
* `Pair`
|
||||
* `Collection`
|
||||
* `Listing`
|
||||
* `List`
|
||||
* `Mapping`
|
||||
* `Set`
|
||||
* `Map`
|
||||
* `Container`
|
||||
* `Function0`
|
||||
* `Function1`
|
||||
* `Function2`
|
||||
* `Function3`
|
||||
* `Function4`
|
||||
* `Function5`
|
||||
* `Class`
|
||||
|
||||
A generic type has constituent types written in angle brackets (`<>`):
|
||||
|
||||
@@ -3791,7 +3735,7 @@ coll: Collection<Bird> // <2>
|
||||
list: List<Bird> // <3>
|
||||
set: Set<Bird> // <4>
|
||||
map: Map<String, Bird> // <5>
|
||||
cont: Mapping<String, Bird> // <6>
|
||||
mapping: Mapping<String, Bird> // <6>
|
||||
----
|
||||
|
||||
<1> a pair with first element of type `String` and second element of type `Bird`
|
||||
@@ -3799,7 +3743,7 @@ cont: Mapping<String, Bird> // <6>
|
||||
<3> a list of `Bird` elements
|
||||
<4> a set of `Bird` elements
|
||||
<5> a map with `String` keys and `Bird` values
|
||||
<6> a container of `Bird` elements
|
||||
<6> a mapping of `String` keys and `Bird` values
|
||||
|
||||
Omitting the constituent types is equivalent to declaring them as `unknown`:
|
||||
|
||||
@@ -3810,7 +3754,7 @@ coll: Collection // equivalent to `Collection<unknown>`
|
||||
list: List // equivalent to `List<unknown>`
|
||||
set: Set // equivalent to `Set<unknown>`
|
||||
map: Map // equivalent to `Map<unknown, unknown>`
|
||||
cont: Mapping // equivalent to `Mapping<unknown, unknown>`
|
||||
mapping: Mapping // equivalent to `Mapping<unknown, unknown>`
|
||||
----
|
||||
|
||||
The `unknown` type is both a top and a bottom type.
|
||||
@@ -3946,7 +3890,7 @@ nullish: Null // = null <11>
|
||||
<2> Properties of type `List` default to the empty list.
|
||||
<3> Properties of type `Set` default to the empty set.
|
||||
<4> Properties of type `Map` default to the empty map.
|
||||
<5> Properties of type `Listing<X>` default to an empty listing whose default element is the default for `Y`.
|
||||
<5> Properties of type `Listing<X>` default to an empty listing whose default element is the default for `X`.
|
||||
<6> Properties of type `Mapping<X, Y>` default to an empty mapping whose default value is the default for `Y`.
|
||||
<7> Properties of non-external class type `X` default to `new X {}`.
|
||||
<8> Properties of type `X?` default to `Null(x)` where `x` is the default for `X`.
|
||||
@@ -5301,7 +5245,7 @@ package {
|
||||
name = "birds"
|
||||
baseUri = "package://example.com/birds"
|
||||
version = "1.8.3"
|
||||
packageZipUrl = "https://example.com/birds@\(version).zip
|
||||
packageZipUrl = "https://example.com/birds@\(version).zip"
|
||||
}
|
||||
----
|
||||
<1> Specify relative project `../fruit` as a dependency.
|
||||
@@ -5315,7 +5259,7 @@ package {
|
||||
name = "fruit"
|
||||
baseUri = "package://example.com/fruit"
|
||||
version = "1.5.0"
|
||||
packageZipUrl = "https://example.com/fruit@\(version).zip
|
||||
packageZipUrl = "https://example.com/fruit@\(version).zip"
|
||||
}
|
||||
----
|
||||
|
||||
|
||||
@@ -39,7 +39,7 @@ When you run this, Pkl expands everything fully.
|
||||
[source,{pkl}]
|
||||
----
|
||||
bird {
|
||||
name = "Common wood pigeon"
|
||||
name = "Pigeon"
|
||||
diet = "Seeds"
|
||||
taxonomy {
|
||||
kingdom = "Animalia"
|
||||
@@ -225,7 +225,7 @@ parrot = (pigeon) {
|
||||
}
|
||||
}
|
||||
----
|
||||
<1> Importing `foo.pkl` creates the object `foo`, so you can refer to `pigeon` in this code, like you did before.
|
||||
<1> Importing `pigeon.pkl` creates the object `pigeon`, so you can refer to `pigeon` in this code, like you did before.
|
||||
|
||||
If you run Pkl on both, you will see that it works.
|
||||
Looking at the result, however, you see a (possibly) unexpected difference.
|
||||
@@ -372,11 +372,11 @@ pipelines {
|
||||
<1> There is no pipeline object to amend. The `new` keyword gives you an object to amend.
|
||||
|
||||
So far, you've defined objects the same way you amended them.
|
||||
When the name `foo` didn't occur before, `foo { ... }` _creates_ a property called `foo` and assigns to it the object specified on the `...`.
|
||||
If `foo` is an existing object, this notation is an _amend expression_; resulting in a new _object_ (value), but _not_ a new (named) property.
|
||||
When the `name` didn't occur before, `new { ... }` _creates_ a property called `name` and assigns to it the object specified on the `Listing`.
|
||||
If `name` is an existing object, this notation is an _amend expression_; resulting in a new _object_ (value), but _not_ a new (named) property.
|
||||
Since `pipelines` is a listing, you can _add_ elements by writing expressions in an amend expression.
|
||||
|
||||
In this case, though, there is no object to amend. Writing `myNewPipeline { ... }` defines a _property_, but listings may only include _elements_.
|
||||
In this case, though, there is no object to amend. Writing `pipelines { ... }` defines a _property_, but listings may only include _elements_.
|
||||
This is where you can use the keyword `new`.
|
||||
|
||||
`new` gives you an object to amend.
|
||||
|
||||
@@ -167,7 +167,7 @@ pklTutorialPart3 {
|
||||
|
||||
----
|
||||
|
||||
Sadly, `pklTutorialParts.pkl` is a _rewrite_ of `pklTutorial.pkl`.
|
||||
Sadly, `pklTutorialParts.pkl` is a _rewrite_ of `pklTutorialPart3.pkl`.
|
||||
It creates a separate `class TutorialPart` and instantiates three properties with it (`pklTutorialPart1`, `pklTutorialPart2` and `pklTutorialPart3`).
|
||||
In doing so, it implicitly moves everything "down" one level (`pklTutorialPart3` is now a property in the module `pklTutorialParts`, whereas above, in `pklTutorialPart3.pkl` it was its own module).
|
||||
This is not very DRY.
|
||||
@@ -262,7 +262,7 @@ Suppose you want to define what a live workshop for this tutorial looks like.
|
||||
Consider this example:
|
||||
|
||||
[source,{pkl}]
|
||||
.workshop2023.pkl
|
||||
.workshop2024.pkl
|
||||
----
|
||||
title = "Pkl: Configure your Systems in New Ways"
|
||||
interactive = true
|
||||
@@ -278,7 +278,7 @@ duration = 1.5.h
|
||||
|
||||
event {
|
||||
name = "Migrating Birds between hemispheres"
|
||||
year = 2023
|
||||
year = 2024
|
||||
}
|
||||
|
||||
instructors {
|
||||
@@ -288,11 +288,11 @@ instructors {
|
||||
|
||||
sessions {
|
||||
new {
|
||||
date = "8/14/2023"
|
||||
date = "2/1/2024"
|
||||
time = 30.min
|
||||
}
|
||||
new {
|
||||
date = "8/15/2023"
|
||||
date = "2/1/2024"
|
||||
time = 30.min
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,10 +32,10 @@ For interactive development, the CLI includes a Read-Eval-Print Loop (REPL).
|
||||
The CLI comes in multiple flavors:
|
||||
|
||||
* Native macOS executable for amd64 (tested on macOS 10.15)
|
||||
* Native Linux executable for amd64 (tested on Oracle Linux 8)
|
||||
* Native Linux executable for aarch64 (tested on Oracle Linux 8)
|
||||
* Native Linux executable for amd64
|
||||
* Native Linux executable for aarch64
|
||||
* Native Alpine Linux executable for amd64 (cross-compiled and tested on Oracle Linux 8)
|
||||
* Java executable (tested with Java 8/11/14 on macOS and Oracle Linux)
|
||||
* Java executable (tested with Java 11/17 on macOS and Oracle Linux)
|
||||
|
||||
On macOS and Linux, we recommend using the native executables.
|
||||
They are self-contained, start up instantly, and run complex Pkl code much faster than the Java executable.
|
||||
@@ -48,38 +48,37 @@ whereas, the Alpine Linux executable is statically linked against _musl libc_ an
|
||||
====
|
||||
|
||||
The Java executable works on multiple platforms and has a smaller binary size than the native executables.
|
||||
However, it requires a Java 8 (or higher) runtime on the system path, has a noticeable startup delay,
|
||||
However, it requires a Java 11 (or higher) runtime on the system path, has a noticeable startup delay,
|
||||
and runs complex Pkl code slower than the native executables.
|
||||
|
||||
All flavors are built from the same codebase and undergo the same automated testing.
|
||||
Except where noted otherwise, the rest of this page discusses the native executables.
|
||||
|
||||
//TODO uncomment this after brew formula is merged and available
|
||||
// [[homebrew]]
|
||||
// === Homebrew
|
||||
//
|
||||
// Release versions can be installed with {uri-homebrew}[Homebrew].
|
||||
//
|
||||
// ifdef::is-release-version[]
|
||||
// To install Pkl, run:
|
||||
//
|
||||
// [source,shell]
|
||||
// ----
|
||||
// brew install pkl
|
||||
// ----
|
||||
//
|
||||
// To update Pkl, run:
|
||||
//
|
||||
// [source,shell]
|
||||
// ----
|
||||
// brew update
|
||||
// brew upgrade pkl # or just `brew upgrade`
|
||||
// ----
|
||||
// endif::[]
|
||||
//
|
||||
// ifndef::is-release-version[]
|
||||
// For instructions, switch to a release version of this page.
|
||||
// endif::[]
|
||||
[[homebrew]]
|
||||
=== Homebrew
|
||||
|
||||
Release versions can be installed with {uri-homebrew}[Homebrew].
|
||||
|
||||
ifdef::is-release-version[]
|
||||
To install Pkl, run:
|
||||
|
||||
[source,shell]
|
||||
----
|
||||
brew install pkl
|
||||
----
|
||||
|
||||
To update Pkl, run:
|
||||
|
||||
[source,shell]
|
||||
----
|
||||
brew update
|
||||
brew upgrade pkl # or just `brew upgrade`
|
||||
----
|
||||
endif::[]
|
||||
|
||||
ifndef::is-release-version[]
|
||||
For instructions, switch to a release version of this page.
|
||||
endif::[]
|
||||
|
||||
[[download]]
|
||||
=== Download
|
||||
|
||||
@@ -39,11 +39,14 @@ dependencies {
|
||||
compile "org.pkl-lang:pkl-core:{pkl-artifact-version}"
|
||||
}
|
||||
|
||||
ifndef::is-release-build[]
|
||||
repositories {
|
||||
maven { url "{uri-sonatype}" }
|
||||
}
|
||||
ifdef::is-release-version[]
|
||||
mavenCentral()
|
||||
endif::[]
|
||||
ifndef::is-release-version[]
|
||||
maven { url "{uri-sonatype}" }
|
||||
endif::[]
|
||||
}
|
||||
----
|
||||
|
||||
Kotlin::
|
||||
@@ -55,11 +58,14 @@ dependencies {
|
||||
compile("org.pkl-lang:pkl-core:{pkl-artifact-version}")
|
||||
}
|
||||
|
||||
ifndef::is-release-build[]
|
||||
repositories {
|
||||
maven { url = uri("{uri-sonatype}") }
|
||||
}
|
||||
ifdef::is-release-version[]
|
||||
mavenCentral()
|
||||
endif::[]
|
||||
ifndef::is-release-version[]
|
||||
maven { url = uri("{uri-sonatype}") }
|
||||
endif::[]
|
||||
}
|
||||
----
|
||||
====
|
||||
|
||||
@@ -76,7 +82,7 @@ To use the library in a Maven project, declare the following dependency:
|
||||
<artifactId>pkl-core</artifactId>
|
||||
<version>{pkl-artifact-version}</version>
|
||||
</dependency>
|
||||
ifndef::is-release-build[]
|
||||
ifndef::is-release-version[]
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>sonatype-s01</id>
|
||||
|
||||
@@ -95,11 +95,14 @@ dependencies {
|
||||
compile "org.pkl-lang:pkl-doc:{pkl-artifact-version}"
|
||||
}
|
||||
|
||||
ifndef::is-release-build[]
|
||||
repositories {
|
||||
maven { url "{uri-sonatype}" }
|
||||
}
|
||||
ifdef::is-release-version[]
|
||||
mavenCentral()
|
||||
endif::[]
|
||||
ifndef::is-release-version[]
|
||||
maven { url "{uri-sonatype}" }
|
||||
endif::[]
|
||||
}
|
||||
----
|
||||
|
||||
Kotlin::
|
||||
@@ -111,11 +114,14 @@ dependencies {
|
||||
compile("org.pkl-lang:pkl-doc:{pkl-artifact-version}")
|
||||
}
|
||||
|
||||
ifndef::is-release-build[]
|
||||
repositories {
|
||||
maven { url = uri("{uri-sonatype}") }
|
||||
}
|
||||
ifdef::is-release-version[]
|
||||
mavenCentral()
|
||||
endif::[]
|
||||
ifndef::is-release-version[]
|
||||
maven { url = uri("{uri-sonatype}") }
|
||||
endif::[]
|
||||
}
|
||||
----
|
||||
====
|
||||
|
||||
@@ -132,7 +138,7 @@ To use the library in a Maven project, declare the following dependency:
|
||||
<artifactId>pkl-doc</artifactId>
|
||||
<version>{pkl-artifact-version}</version>
|
||||
</dependency>
|
||||
ifndef::is-release-build[]
|
||||
ifndef::is-release-version[]
|
||||
<repositories>
|
||||
<repository>
|
||||
<id>sonatype-s01</id>
|
||||
|
||||
@@ -47,10 +47,10 @@ plugins {
|
||||
----
|
||||
pluginManagement {
|
||||
repositories {
|
||||
ifdef::is-release-build[]
|
||||
ifdef::is-release-version[]
|
||||
mavenCentral()
|
||||
endif::[]
|
||||
ifndef::is-release-build[]
|
||||
ifndef::is-release-version[]
|
||||
maven { url "{uri-sonatype}" }
|
||||
endif::[]
|
||||
}
|
||||
@@ -72,10 +72,10 @@ plugins {
|
||||
----
|
||||
pluginManagement {
|
||||
repositories {
|
||||
ifdef::is-release-build[]
|
||||
ifdef::is-release-version[]
|
||||
mavenCentral()
|
||||
endif::[]
|
||||
ifndef::is-release-build[]
|
||||
ifndef::is-release-version[]
|
||||
maven { url = uri("{uri-sonatype}") }
|
||||
endif::[]
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
= Pkl 0.25 Release Notes
|
||||
:version: 0.25
|
||||
:version-minor: 0.25.2
|
||||
:version-minor: 0.25.3
|
||||
:release-date: February 1st, 2024
|
||||
|
||||
Pkl {version} was released on {release-date}. +
|
||||
|
||||
@@ -1,6 +1,38 @@
|
||||
= Changelog
|
||||
include::ROOT:partial$component-attributes.adoc[]
|
||||
|
||||
[[release-0.25.3]]
|
||||
== 0.25.3 (2024-03-26)
|
||||
|
||||
=== Fixes
|
||||
|
||||
* Fixes some issues with generated pkldoc websites (link:https://github.com/apple/pkl/pull/357[#357], link:https://github.com/apple/pkl/pull/362[#362])
|
||||
* Fixes a bug where amending a module that defines an abstract class might cause a Java `AssertionError` (link:https://github.com/apple/pkl/pull/319[#319])
|
||||
* Fixes a bug where a for/when generator within a lambda declared with `new {}` syntax might not resolve variables correctly (link:https://github.com/apple/pkl/pull/297[#297])
|
||||
* Fixes a bug where `const` and `local` modifiers are not exported when obtaining a class's mirror in `pkl:reflect` (link:https://github.com/apple/pkl/pull/265[#265]).
|
||||
|
||||
=== Miscellaneous
|
||||
|
||||
* Documentation improvements (link:https://github.com/apple/pkl/pull/93[#93], link:https://github.com/apple/pkl/pull/106[#106], link:https://github.com/apple/pkl/pull/143[#143], link:https://github.com/apple/pkl/pull/205[#205], link:https://github.com/apple/pkl/pull/214[#214], link:https://github.com/apple/pkl/pull/224[#224], link:https://github.com/apple/pkl/pull/257[#257], link:https://github.com/apple/pkl/pull/270[#270], link:https://github.com/apple/pkl/pull/282[#282], link:https://github.com/apple/pkl/pull/283[#283], link:https://github.com/apple/pkl/pull/299[#299], link:https://github.com/apple/pkl/pull/337[#337], link:https://github.com/apple/pkl/pull/340[#340])
|
||||
* Build script improvements (link:https://github.com/apple/pkl/pull/253[#253], link:https://github.com/apple/pkl/pull/314[#314], link:https://github.com/apple/pkl/pull/333[#333], link:https://github.com/apple/pkl/pull/338[#338])
|
||||
|
||||
=== Changes
|
||||
|
||||
* Add `jpkl` to the set of artifacts released to GitHub (link:https://github.com/apple/pkl/pull/314[#314])
|
||||
|
||||
=== Contributors ❤️
|
||||
|
||||
Thank you to all the contributors for this release!
|
||||
|
||||
* link:https://github.com/r1ft1[@r1ft1]
|
||||
* link:https://github.com/WardsParadox[@WardsParadox]
|
||||
* link:https://github.com/grantabbott[@grantabbott]
|
||||
* link:https://github.com/mshakhmaykin[@mshakhmaykin]
|
||||
* link:https://github.com/d4wae89d498[@d4wae89d498]
|
||||
* link:https://github.com/KushalP[@KushalP]
|
||||
* link:https://github.com/zihluwang[@zihluwang]
|
||||
* link:https://github.com/Malix-off[@Malix-off]
|
||||
|
||||
[[release-0.25.2]]
|
||||
== 0.25.2 (2024-02-08)
|
||||
|
||||
@@ -8,7 +40,6 @@ include::ROOT:partial$component-attributes.adoc[]
|
||||
|
||||
* Fixes some issues with generated pkldoc websites (link:https://github.com/apple/pkl/pull/70[#70],
|
||||
link:https://github.com/apple/pkl/pull/81[#81], link:https://github.com/apple/pkl/pull/96[#96])
|
||||
* Removes errorneously published artifact called "pkl-cli" (link:https://github.com/apple/pkl/pull/98[#98])
|
||||
* Fixes an issue where a PklBugException produces an incorrect URL to file issues (link:https://github.com/apple/pkl/pull/73[#73])
|
||||
|
||||
=== Miscellaneous
|
||||
|
||||
+21
-21
@@ -1,19 +1,31 @@
|
||||
* xref:pkl-cli:index.adoc#installation[Installation]
|
||||
* xref:language-tutorial:index.adoc[Tutorial]
|
||||
** xref:language-tutorial:01_basic_config.adoc[Basic Configuration]
|
||||
** xref:language-tutorial:02_filling_out_a_template.adoc[Filling out a Template]
|
||||
** xref:language-tutorial:03_writing_a_template.adoc[Writing a Template]
|
||||
* xref:language-reference:index.adoc[Language Reference]
|
||||
|
||||
* xref:introduction:index.adoc[Introduction]
|
||||
** xref:introduction:use-cases.adoc[Use Cases]
|
||||
** xref:introduction:concepts.adoc[Concepts]
|
||||
** xref:introduction:comparison.adoc[Comparison]
|
||||
|
||||
* xref:pkl-cli:index.adoc#installation[Installation]
|
||||
|
||||
* xref:language-tutorial:index.adoc[Tutorial]
|
||||
** xref:language-tutorial:01_basic_config.adoc[Basic Configuration]
|
||||
** xref:language-tutorial:02_filling_out_a_template.adoc[Filling out a Template]
|
||||
** xref:language-tutorial:03_writing_a_template.adoc[Writing a Template]
|
||||
|
||||
* xref:ROOT:language.adoc[Language]
|
||||
** xref:language-tutorial:index.adoc[Tutorial]
|
||||
** xref:language-reference:index.adoc[Language Reference]
|
||||
** xref:ROOT:standard-library.adoc[Standard Library]
|
||||
** xref:ROOT:language-bindings.adoc[Language Bindings]
|
||||
*** xref:java-binding:index.adoc[Java]
|
||||
**** xref:java-binding:codegen.adoc[Code Generator]
|
||||
**** xref:pkl-core:index.adoc[pkl-core Library]
|
||||
**** xref:java-binding:pkl-config-java.adoc[pkl-config-java Library]
|
||||
*** xref:kotlin-binding:index.adoc[Kotlin]
|
||||
**** xref:kotlin-binding:codegen.adoc[Code Generator]
|
||||
**** xref:kotlin-binding:pkl-config-kotlin.adoc[pkl-config-kotlin Library]
|
||||
*** xref:swift:ROOT:index.adoc[Swift]
|
||||
*** xref:go:ROOT:index.adoc[Go]
|
||||
*** xref:bindings-specification:index.adoc[Specification]
|
||||
**** xref:bindings-specification:message-passing-api.adoc[Message Passing API]
|
||||
**** xref:bindings-specification:binary-encoding.adoc[Pkl Binary Encoding]
|
||||
|
||||
* xref:ROOT:tools.adoc[Tools]
|
||||
** xref:pkl-cli:index.adoc[CLI]
|
||||
@@ -24,21 +36,9 @@
|
||||
*** xref:vscode:ROOT:index.adoc[VSCode]
|
||||
*** xref:neovim:ROOT:index.adoc[Neovim]
|
||||
|
||||
* xref:ROOT:language-bindings.adoc[Language Bindings]
|
||||
** xref:java-binding:index.adoc[Java]
|
||||
*** xref:java-binding:codegen.adoc[Code Generator]
|
||||
*** xref:pkl-core:index.adoc[pkl-core Library]
|
||||
*** xref:java-binding:pkl-config-java.adoc[pkl-config-java Library]
|
||||
|
||||
** xref:kotlin-binding:index.adoc[Kotlin]
|
||||
*** xref:kotlin-binding:codegen.adoc[Code Generator]
|
||||
*** xref:kotlin-binding:pkl-config-kotlin.adoc[pkl-config-kotlin Library]
|
||||
|
||||
** xref:swift:ROOT:index.adoc[Swift]
|
||||
** xref:go:ROOT:index.adoc[Go]
|
||||
|
||||
* xref:ROOT:examples.adoc[Examples]
|
||||
|
||||
* xref:release-notes:index.adoc[Release Notes]
|
||||
** xref:release-notes:0.25.adoc[0.25 Release Notes]
|
||||
** xref:release-notes:changelog.adoc[Changelog]
|
||||
|
||||
|
||||
+1
-1
@@ -1,7 +1,7 @@
|
||||
# suppress inspection "UnusedProperty" for whole file
|
||||
|
||||
group=org.pkl-lang
|
||||
version=0.25.2
|
||||
version=0.25.3
|
||||
|
||||
# google-java-format requires jdk.compiler exports
|
||||
org.gradle.jvmargs= \
|
||||
|
||||
@@ -72,6 +72,14 @@ public final class VmModifier {
|
||||
|
||||
public static final int VALID_OBJECT_MEMBER_MODIFIERS = LOCAL;
|
||||
|
||||
public static final int TYPEALIAS_OBJECT_MEMBER = TYPE_ALIAS | CONST;
|
||||
|
||||
public static final int LOCAL_TYPEALIAS_OBJECT_MEMBER = LOCAL | TYPEALIAS_OBJECT_MEMBER;
|
||||
|
||||
public static final int CLASS_OBJECT_MEMBER = CLASS | CONST;
|
||||
|
||||
public static final int LOCAL_CLASS_OBJECT_MEMBER = LOCAL | CLASS_OBJECT_MEMBER;
|
||||
|
||||
public static boolean isLocal(int modifiers) {
|
||||
return (modifiers & LOCAL) != 0;
|
||||
}
|
||||
@@ -164,6 +172,10 @@ public final class VmModifier {
|
||||
return "hidden";
|
||||
case EXTERNAL:
|
||||
return "external";
|
||||
case FIXED:
|
||||
return "fixed";
|
||||
case CONST:
|
||||
return "const";
|
||||
default:
|
||||
throw new VmExceptionBuilder()
|
||||
.bug("Cannot convert internal modifier `%s` to a string.", toString(modifier))
|
||||
@@ -179,6 +191,8 @@ public final class VmModifier {
|
||||
if (isHidden(modifiers)) builder.add(toString(HIDDEN));
|
||||
// `external` modifier is part of class contract but not part of property/method contract
|
||||
if (isExternal(modifiers) && isClass) builder.add(toString(EXTERNAL));
|
||||
if (isFixed(modifiers)) builder.add(toString(FIXED));
|
||||
if (isConst(modifiers)) builder.add(toString(CONST));
|
||||
|
||||
return builder.build();
|
||||
}
|
||||
|
||||
@@ -305,11 +305,13 @@ public final class AstBuilder extends AbstractAstBuilder<Object> {
|
||||
doVisitClassProperties(propertyCtxs, propertyNames),
|
||||
doVisitMethodDefs(methodCtxs));
|
||||
|
||||
var isLocal = VmModifier.isLocal(modifiers);
|
||||
|
||||
var result =
|
||||
new ObjectMember(
|
||||
sourceSection,
|
||||
headerSection,
|
||||
modifiers | VmModifier.CONST,
|
||||
isLocal ? VmModifier.LOCAL_CLASS_OBJECT_MEMBER : VmModifier.CLASS_OBJECT_MEMBER,
|
||||
scope.getName(),
|
||||
scope.getQualifiedName());
|
||||
|
||||
@@ -360,7 +362,9 @@ public final class AstBuilder extends AbstractAstBuilder<Object> {
|
||||
new ObjectMember(
|
||||
sourceSection,
|
||||
headerSection,
|
||||
modifiers | VmModifier.CONST,
|
||||
isLocal
|
||||
? VmModifier.LOCAL_TYPEALIAS_OBJECT_MEMBER
|
||||
: VmModifier.TYPEALIAS_OBJECT_MEMBER,
|
||||
scopeName,
|
||||
scope.getQualifiedName());
|
||||
|
||||
|
||||
@@ -61,6 +61,7 @@ public final class AmendFunctionNode extends PklNode {
|
||||
} else {
|
||||
parameterSlots = new int[0];
|
||||
}
|
||||
var hasForGenVars = false;
|
||||
for (var i = 0; i < hostFrameDesecriptor.getNumberOfSlots(); i++) {
|
||||
var slotInfo = hostFrameDesecriptor.getSlotInfo(i);
|
||||
// Copy for-generator variables from the outer frame descriptor into inner lambda.
|
||||
@@ -74,10 +75,22 @@ public final class AmendFunctionNode extends PklNode {
|
||||
// frame (e.g. with `new Mixin { ... }` syntax), so it injects for-generator vars into the
|
||||
// wrong frame.
|
||||
//
|
||||
// As a remedy, we simply copy outer for-generator variables into this frame.
|
||||
// As a remedy, we simply copy outer variables into this frame if there are any for generator
|
||||
// variables.
|
||||
//
|
||||
// We need to preserve the frame slot index, so we insert dummy identifiers
|
||||
// for other slots that aren't for generator variables.
|
||||
if (slotInfo != null && slotInfo.equals(SymbolTable.FOR_GENERATOR_VARIABLE)) {
|
||||
if (!hasForGenVars) {
|
||||
hasForGenVars = true;
|
||||
for (var j = 0; j < i; j++) {
|
||||
builder.addSlot(FrameSlotKind.Illegal, Identifier.DUMMY, null);
|
||||
}
|
||||
}
|
||||
builder.addSlot(
|
||||
hostFrameDesecriptor.getSlotKind(i), hostFrameDesecriptor.getSlotName(i), null);
|
||||
} else if (hasForGenVars) {
|
||||
builder.addSlot(FrameSlotKind.Illegal, Identifier.DUMMY, null);
|
||||
}
|
||||
}
|
||||
var objectToAmendSlot = builder.addSlot(FrameSlotKind.Object, new Object(), null);
|
||||
|
||||
@@ -152,6 +152,9 @@ public final class Identifier implements Comparable<Identifier> {
|
||||
// common in lambdas etc
|
||||
public static final Identifier IT = get("it");
|
||||
|
||||
// dummy, unrepresentable identifier
|
||||
public static final Identifier DUMMY = get("`#_");
|
||||
|
||||
private final String name;
|
||||
|
||||
private Identifier(String name) {
|
||||
|
||||
@@ -35,7 +35,7 @@ import org.pkl.core.util.Nullable;
|
||||
@TruffleLanguage.Registration(
|
||||
id = "pkl",
|
||||
name = "Pkl",
|
||||
version = "0.25.2",
|
||||
version = "0.25.3",
|
||||
characterMimeTypes = VmLanguage.MIME_TYPE,
|
||||
contextPolicy = ContextPolicy.SHARED)
|
||||
public final class VmLanguage extends TruffleLanguage<VmContext> {
|
||||
|
||||
+4
@@ -49,6 +49,10 @@ stringLiteral: "yes"
|
||||
constrained: String(length.isBetween(3, 10))
|
||||
aliased: MyMap<Person>
|
||||
|
||||
hidden hiddenProp: String
|
||||
const constProp: String = "the const prop"
|
||||
fixed fixedProp: String = "the fixed prop"
|
||||
|
||||
/// class doc comment
|
||||
@MyAnn { text = "class annotation" }
|
||||
open class Person {
|
||||
|
||||
@@ -0,0 +1,12 @@
|
||||
module Birds
|
||||
|
||||
abstract class Bird {
|
||||
name: String
|
||||
}
|
||||
|
||||
class Pigeon extends Bird {
|
||||
name = "Pigeon"
|
||||
passenger: Boolean
|
||||
}
|
||||
|
||||
pidgy: Pigeon?
|
||||
@@ -152,8 +152,11 @@ examples {
|
||||
personClassProperties.keys
|
||||
testHelpers.property(personClassProperties["name"], reflect.stringType)
|
||||
testHelpers.property(personClassProperties["age"], reflect.intType)
|
||||
modClassProps["hiddenProp"].modifiers
|
||||
modClassProps["constProp"].modifiers
|
||||
modClassProps["fixedProp"].modifiers
|
||||
}
|
||||
|
||||
|
||||
["Reflected class methods metadata"] {
|
||||
local personClassMethods = personClass.methods
|
||||
personClassMethods.keys
|
||||
@@ -162,7 +165,7 @@ examples {
|
||||
List(reflect.listType.withTypeArgument(reflect.stringType)),
|
||||
reflect.stringType)
|
||||
}
|
||||
|
||||
|
||||
["Reflected annotation class properties metadata"] {
|
||||
testHelpers.property(myAnnClass.properties["text"], reflect.stringType)
|
||||
}
|
||||
|
||||
+10
@@ -38,3 +38,13 @@ function mapEnvLiteral(_env: Dynamic) = (it) -> (it) {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
function addElements(keys: List<String>): Mixin<Mapping<String, String>> = new {
|
||||
for (key in keys) {
|
||||
[key] = key
|
||||
}
|
||||
}
|
||||
|
||||
res = new Mapping<String, String> {
|
||||
["base"] = "alreadyThere"
|
||||
} |> addElements(List("newElement"))
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
amends ".../input-helper/modules/Birds.pkl"
|
||||
@@ -67,7 +67,7 @@ facts {
|
||||
}
|
||||
examples {
|
||||
["Reflected module properties of unknown type metadata"] {
|
||||
Set("int", "float", "string", "boolean", "duration", "dataSize", "pair", "list", "set", "map", "listing", "mapping", "dynamic", "typed", "int2", "float2", "string2", "boolean2", "duration2", "dataSize2", "pair2", "list2", "set2", "map2", "listing2", "mapping2", "dynamic2", "typed2", "any", "noth", "unkn", "union", "nullable", "stringLiteral", "constrained", "aliased")
|
||||
Set("int", "float", "string", "boolean", "duration", "dataSize", "pair", "list", "set", "map", "listing", "mapping", "dynamic", "typed", "int2", "float2", "string2", "boolean2", "duration2", "dataSize2", "pair2", "list2", "set2", "map2", "listing2", "mapping2", "dynamic2", "typed2", "any", "noth", "unkn", "union", "nullable", "stringLiteral", "constrained", "aliased", "hiddenProp", "constProp", "fixedProp")
|
||||
new {
|
||||
hasExpectedLocation = true
|
||||
docComment = "module property doc comment"
|
||||
@@ -373,6 +373,9 @@ examples {
|
||||
defaultValue = 42
|
||||
hasExpectedType = true
|
||||
}
|
||||
Set("hidden")
|
||||
Set("const")
|
||||
Set("fixed")
|
||||
}
|
||||
["Reflected class methods metadata"] {
|
||||
Set("sing")
|
||||
|
||||
+4
@@ -36,3 +36,7 @@ foo {
|
||||
}
|
||||
}
|
||||
}
|
||||
res {
|
||||
["base"] = "alreadyThere"
|
||||
["newElement"] = "newElement"
|
||||
}
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
pidgy = null
|
||||
@@ -179,7 +179,7 @@ internal class DocPackage(val docPackageInfo: DocPackageInfo, val modules: List<
|
||||
mod,
|
||||
docPackageInfo.version,
|
||||
docPackageInfo.getModuleImportUri(mod.moduleName),
|
||||
docPackageInfo.getModuleSourceCode(mod.moduleName)?.toEncodedUri(),
|
||||
docPackageInfo.getModuleSourceCode(mod.moduleName),
|
||||
exampleModulesBySubject[mod.moduleName] ?: listOf()
|
||||
)
|
||||
}
|
||||
|
||||
@@ -160,19 +160,15 @@ data class DocPackageInfo(
|
||||
when (importUri) {
|
||||
"pkl:/" -> "pkl:${moduleName.substring(4)}".toUri()
|
||||
else -> {
|
||||
val path =
|
||||
getModulePath(moduleName, moduleNamePrefix)
|
||||
.split("/")
|
||||
.map { it.uriEncoded }
|
||||
.joinToString("/") { it } + ".pkl"
|
||||
URI(importUri).resolve(path)
|
||||
val path = getModulePath(moduleName, moduleNamePrefix).uriEncoded + ".pkl"
|
||||
URI(importUri + path)
|
||||
}
|
||||
}
|
||||
|
||||
internal fun getModuleSourceCode(moduleName: String): String? {
|
||||
val path = "/" + getModulePath(moduleName, moduleNamePrefix) + ".pkl"
|
||||
internal fun getModuleSourceCode(moduleName: String): URI? {
|
||||
val path = "/" + getModulePath(moduleName, moduleNamePrefix).uriEncoded + ".pkl"
|
||||
// assumption: the fragment is only used for line numbers
|
||||
return sourceCodeUrlScheme?.replace("%{path}", path)?.substringBefore('#')
|
||||
return sourceCodeUrlScheme?.replace("%{path}", path)?.substringBefore('#')?.let(URI::create)
|
||||
}
|
||||
|
||||
/** Information about a depended-on package. */
|
||||
|
||||
@@ -253,7 +253,7 @@ internal class PackageScope(
|
||||
private val moduleScopes: Map<String, ModuleScope> by lazy {
|
||||
modules.associate { module ->
|
||||
val docUrl =
|
||||
url.resolve(getModulePath(module.moduleName, modulePrefix).uriEncodedPath + "/index.html")
|
||||
url.resolve(getModulePath(module.moduleName, modulePrefix).uriEncoded + "/index.html")
|
||||
module.moduleName to ModuleScope(module, docUrl, this)
|
||||
}
|
||||
}
|
||||
@@ -326,7 +326,7 @@ internal class ModuleScope(
|
||||
get() = module.moduleName
|
||||
|
||||
val path: String by lazy {
|
||||
getModulePath(module.moduleName, parent!!.docPackageInfo.moduleNamePrefix).uriEncodedPath
|
||||
getModulePath(module.moduleName, parent!!.docPackageInfo.moduleNamePrefix).uriEncoded
|
||||
}
|
||||
|
||||
override val dataUrl: URI by lazy { parent!!.dataUrl.resolve("./$path/index.js") }
|
||||
@@ -386,11 +386,12 @@ internal class ClassScope(
|
||||
) : PageScope() {
|
||||
override val url: URI by lazy {
|
||||
// `isModuleClass` distinction is relevant when this scope is a link target
|
||||
if (clazz.isModuleClass) parentUrl else parentUrl.resolve("${clazz.simpleName.uriEncoded}.html")
|
||||
if (clazz.isModuleClass) parentUrl
|
||||
else parentUrl.resolve("${clazz.simpleName.uriEncodedComponent}.html")
|
||||
}
|
||||
|
||||
override val dataUrl: URI by lazy {
|
||||
parent!!.dataUrl.resolve("${clazz.simpleName.uriEncoded}.js")
|
||||
parent!!.dataUrl.resolve("${clazz.simpleName.uriEncodedComponent}.js")
|
||||
}
|
||||
|
||||
override fun getMethod(name: String): MethodScope? =
|
||||
|
||||
@@ -426,7 +426,7 @@ internal abstract class PageGenerator<out S>(
|
||||
// anchors, and requires no JS
|
||||
protected fun HtmlBlockTag.renderAnchor(anchorId: String, cssClass: String = "anchor") {
|
||||
div {
|
||||
id = anchorId.uriEncoded
|
||||
id = anchorId.uriEncodedComponent
|
||||
classes = setOf(cssClass)
|
||||
+" " // needs some content to be considered a valid anchor by browsers
|
||||
}
|
||||
@@ -457,7 +457,7 @@ internal abstract class PageGenerator<out S>(
|
||||
protected fun HtmlBlockTag.renderSelfLink(memberName: String) {
|
||||
a {
|
||||
classes = setOf("member-selflink", "material-icons")
|
||||
href = "#${memberName.uriEncoded}"
|
||||
href = "#${memberName.uriEncodedComponent}"
|
||||
+"link"
|
||||
}
|
||||
}
|
||||
@@ -600,7 +600,8 @@ internal abstract class PageGenerator<out S>(
|
||||
for (example in examples) {
|
||||
if (first) first = false else +", "
|
||||
a {
|
||||
href = docModule.parent.docPackageInfo.getModuleSourceCode(example.moduleName)!!
|
||||
href =
|
||||
docModule.parent.docPackageInfo.getModuleSourceCode(example.moduleName)!!.toString()
|
||||
+example.shortModuleName
|
||||
}
|
||||
}
|
||||
|
||||
@@ -119,7 +119,12 @@ internal fun String.replaceSourceCodePlaceholders(
|
||||
.replace("%{endLine}", sourceLocation.endLine.toString())
|
||||
}
|
||||
|
||||
internal val String.uriEncoded
|
||||
/**
|
||||
* Encodes a URI string, encoding characters that are part of URI syntax.
|
||||
*
|
||||
* Follows `encodeURIComponent` from ECMAScript.
|
||||
*/
|
||||
internal val String.uriEncodedComponent
|
||||
get(): String {
|
||||
val ret = URLEncoder.encode(this, StandardCharsets.UTF_8)
|
||||
// Replace `+` with `%20` to be safe
|
||||
@@ -128,13 +133,18 @@ internal val String.uriEncoded
|
||||
return ret.replace("+", "%20")
|
||||
}
|
||||
|
||||
internal val String.uriEncodedPath
|
||||
get(): String = split("/").map { it.uriEncoded }.joinToString("/") { it }
|
||||
/**
|
||||
* Encodes a URI string, preserving characters that are part of URI syntax.
|
||||
*
|
||||
* Follows `encodeURI` from ECMAScript.
|
||||
*/
|
||||
internal val String.uriEncoded
|
||||
get(): String = replace(Regex("([^;/?:@&=+\$,#]+)")) { it.value.uriEncodedComponent }
|
||||
|
||||
fun getModulePath(moduleName: String, packagePrefix: String): String =
|
||||
moduleName.substring(packagePrefix.length).replace('.', '/')
|
||||
|
||||
internal fun String.toEncodedUri(): URI = URI(uriEncodedPath)
|
||||
internal fun String.toEncodedUri(): URI = URI(uriEncoded)
|
||||
|
||||
/**
|
||||
* Turns `"foo.bar.baz-biz"` into ``"foo.bar.`baz-biz`"``.
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/Module%20Containing%20Spaces.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/Module%20Containing%20Spaces.pkl">Module Containing Spaces.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/Module%20Containing%20Spaces.pkl">Module Containing Spaces.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/baseModule.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/baseModule.pkl">baseModule.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/baseModule.pkl">baseModule.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
Vendored
+1
-1
@@ -31,7 +31,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/classAnnotations.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/classAnnotations.pkl">classAnnotations.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/classAnnotations.pkl">classAnnotations.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
+1
-1
@@ -33,7 +33,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/classComments.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/classComments.pkl">classComments.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/classComments.pkl">classComments.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
Vendored
+1
-1
@@ -32,7 +32,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/classInheritance.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/classInheritance.pkl">classInheritance.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/classInheritance.pkl">classInheritance.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
Vendored
+1
-1
@@ -32,7 +32,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/classMethodComments.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/classMethodComments.pkl">classMethodComments.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/classMethodComments.pkl">classMethodComments.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
Vendored
+1
-1
@@ -32,7 +32,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/classMethodModifiers.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/classMethodModifiers.pkl">classMethodModifiers.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/classMethodModifiers.pkl">classMethodModifiers.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/classMethodTypeAnnotations.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/classMethodTypeAnnotations.pkl">classMethodTypeAnnotations.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/classMethodTypeAnnotations.pkl">classMethodTypeAnnotations.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
+1
-1
@@ -33,7 +33,7 @@ the same module, a different module, and external modules.</p></div>
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/classMethodTypeReferences.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/classMethodTypeReferences.pkl">classMethodTypeReferences.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/classMethodTypeReferences.pkl">classMethodTypeReferences.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/classPropertyAnnotations.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/classPropertyAnnotations.pkl">classPropertyAnnotations.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/classPropertyAnnotations.pkl">classPropertyAnnotations.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
Vendored
+1
-1
@@ -32,7 +32,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/classPropertyComments.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/classPropertyComments.pkl">classPropertyComments.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/classPropertyComments.pkl">classPropertyComments.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
Vendored
+1
-1
@@ -32,7 +32,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/classPropertyModifiers.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/classPropertyModifiers.pkl">classPropertyModifiers.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/classPropertyModifiers.pkl">classPropertyModifiers.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/classPropertyTypeAnnotations.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/classPropertyTypeAnnotations.pkl">classPropertyTypeAnnotations.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/classPropertyTypeAnnotations.pkl">classPropertyTypeAnnotations.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
+1
-1
@@ -33,7 +33,7 @@ the same module, a different module, and external modules.</p></div>
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/classPropertyTypeReferences.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/classPropertyTypeReferences.pkl">classPropertyTypeReferences.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/classPropertyTypeReferences.pkl">classPropertyTypeReferences.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
Vendored
+1
-1
@@ -31,7 +31,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/classTypeConstraints.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/classTypeConstraints.pkl">classTypeConstraints.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/classTypeConstraints.pkl">classTypeConstraints.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
Vendored
+1
-1
@@ -30,7 +30,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/docExampleSubject1.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/docExampleSubject1.pkl">docExampleSubject1.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/docExampleSubject1.pkl">docExampleSubject1.pkl</a></dd>
|
||||
<dt class="">Examples:</dt>
|
||||
<dd><a href="https://example.com/package1/docExample.pkl">docExample</a>, <a href="https://example.com/package1/docExample2.pkl">docExample2</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
|
||||
Vendored
+1
-1
@@ -30,7 +30,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/docExampleSubject2.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/docExampleSubject2.pkl">docExampleSubject2.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/docExampleSubject2.pkl">docExampleSubject2.pkl</a></dd>
|
||||
<dt class="">Examples:</dt>
|
||||
<dd><a href="https://example.com/package1/docExample.pkl">docExample</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
|
||||
+1
-1
@@ -41,7 +41,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/docLinks.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/docLinks.pkl">docLinks.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/docLinks.pkl">docLinks.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
Vendored
+1
-1
@@ -30,7 +30,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/methodAnnotations.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/methodAnnotations.pkl">methodAnnotations.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/methodAnnotations.pkl">methodAnnotations.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
Vendored
+1
-1
@@ -32,7 +32,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/moduleComments.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/moduleComments.pkl">moduleComments.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/moduleComments.pkl">moduleComments.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/moduleExtend.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/moduleExtend.pkl">moduleExtend.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/moduleExtend.pkl">moduleExtend.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
Vendored
+1
-1
@@ -32,7 +32,7 @@
|
||||
<dt class="">Pkl version:</dt>
|
||||
<dd>0.10.0 or higher</dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/moduleInfoAnnotation.pkl">moduleInfoAnnotation.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/moduleInfoAnnotation.pkl">moduleInfoAnnotation.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/moduleMethodCommentInheritance.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/moduleMethodCommentInheritance.pkl">moduleMethodCommentInheritance.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/moduleMethodCommentInheritance.pkl">moduleMethodCommentInheritance.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
Vendored
+1
-1
@@ -31,7 +31,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/moduleMethodComments.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/moduleMethodComments.pkl">moduleMethodComments.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/moduleMethodComments.pkl">moduleMethodComments.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
Vendored
+1
-1
@@ -31,7 +31,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/moduleMethodModifiers.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/moduleMethodModifiers.pkl">moduleMethodModifiers.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/moduleMethodModifiers.pkl">moduleMethodModifiers.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/moduleMethodTypeAnnotations.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/moduleMethodTypeAnnotations.pkl">moduleMethodTypeAnnotations.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/moduleMethodTypeAnnotations.pkl">moduleMethodTypeAnnotations.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
+1
-1
@@ -33,7 +33,7 @@ the same module, a different module, and external modules.</p></div>
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/moduleMethodTypeReferences.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/moduleMethodTypeReferences.pkl">moduleMethodTypeReferences.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/moduleMethodTypeReferences.pkl">moduleMethodTypeReferences.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/modulePropertyAnnotations.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/modulePropertyAnnotations.pkl">modulePropertyAnnotations.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/modulePropertyAnnotations.pkl">modulePropertyAnnotations.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/modulePropertyCommentInheritance.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/modulePropertyCommentInheritance.pkl">modulePropertyCommentInheritance.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/modulePropertyCommentInheritance.pkl">modulePropertyCommentInheritance.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
Vendored
+1
-1
@@ -31,7 +31,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/modulePropertyComments.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/modulePropertyComments.pkl">modulePropertyComments.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/modulePropertyComments.pkl">modulePropertyComments.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
pkl-doc/src/test/files/DocGeneratorTest/output/com.package1/1.2.3/modulePropertyModifiers/index.html
Vendored
+1
-1
@@ -31,7 +31,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/modulePropertyModifiers.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/modulePropertyModifiers.pkl">modulePropertyModifiers.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/modulePropertyModifiers.pkl">modulePropertyModifiers.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/modulePropertyTypeAnnotations.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/modulePropertyTypeAnnotations.pkl">modulePropertyTypeAnnotations.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/modulePropertyTypeAnnotations.pkl">modulePropertyTypeAnnotations.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
+1
-1
@@ -33,7 +33,7 @@ the same module, a different module, and external modules.</p></div>
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/modulePropertyTypeReferences.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/modulePropertyTypeReferences.pkl">modulePropertyTypeReferences.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/modulePropertyTypeReferences.pkl">modulePropertyTypeReferences.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/moduleTypes1.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/moduleTypes1.pkl">moduleTypes1.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/moduleTypes1.pkl">moduleTypes1.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/moduleTypes2.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/moduleTypes2.pkl">moduleTypes2.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/moduleTypes2.pkl">moduleTypes2.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/nested/nested2/nestedModule.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/nested/nested2/nestedModule.pkl">nestedModule.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/nested/nested2/nestedModule.pkl">nestedModule.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/shared.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/shared.pkl">shared.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/shared.pkl">shared.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/ternalPackage.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/ternalPackage.pkl">ternalPackage.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/ternalPackage.pkl">ternalPackage.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
Vendored
+1
-1
@@ -32,7 +32,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/typeAliasInheritance.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/typeAliasInheritance.pkl">typeAliasInheritance.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/typeAliasInheritance.pkl">typeAliasInheritance.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/typealiases.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/typealiases.pkl">typealiases.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/typealiases.pkl">typealiases.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
+1
-1
@@ -32,7 +32,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/typealiases2.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/typealiases2.pkl">typealiases2.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/typealiases2.pkl">typealiases2.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/unionTypes.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/unionTypes.pkl">unionTypes.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/unionTypes.pkl">unionTypes.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
+1
-1
@@ -30,7 +30,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/unlistedClass.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/unlistedClass.pkl">unlistedClass.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/unlistedClass.pkl">unlistedClass.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
Vendored
+1
-1
@@ -31,7 +31,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/unlistedMethod.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/unlistedMethod.pkl">unlistedMethod.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/unlistedMethod.pkl">unlistedMethod.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
Vendored
+1
-1
@@ -31,7 +31,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">https://example.com/unlistedProperty.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/package1/unlistedProperty.pkl">unlistedProperty.pkl</a></dd>
|
||||
<dd><a href="https://example.com/package1/unlistedProperty.pkl">unlistedProperty.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
+1
-1
@@ -31,7 +31,7 @@
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">modulepath:/com/package2/Module3.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/blob/4.5.6/Module3.pkl">Module3.pkl</a></dd>
|
||||
<dd><a href="https://example.com/blob/4.5.6/Module3.pkl">Module3.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
+2
-2
@@ -28,9 +28,9 @@
|
||||
<div class="member-signature">open module <span class="name-decl">birds.Bird</span></div>
|
||||
<dl class="member-info">
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">package://localhost:12110/Bird.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dd><span class="import-uri">package://localhost:12110/birds@0.5.0#/Bird.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/birds/v0.5.0/blob/Bird.pkl">Bird.pkl</a></dd>
|
||||
<dd><a href="https://example.com/birds/v0.5.0/blob/Bird.pkl">Bird.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
Vendored
+2
-2
@@ -28,9 +28,9 @@
|
||||
<div class="member-signature">module <span class="name-decl">birds.allFruit</span></div>
|
||||
<dl class="member-info">
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">package://localhost:12110/allFruit.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dd><span class="import-uri">package://localhost:12110/birds@0.5.0#/allFruit.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/birds/v0.5.0/blob/allFruit.pkl">allFruit.pkl</a></dd>
|
||||
<dd><a href="https://example.com/birds/v0.5.0/blob/allFruit.pkl">allFruit.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
Vendored
+2
-2
@@ -28,9 +28,9 @@
|
||||
<div class="member-signature">module <span class="name-decl">birds.catalog</span></div>
|
||||
<dl class="member-info">
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">package://localhost:12110/catalog.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dd><span class="import-uri">package://localhost:12110/birds@0.5.0#/catalog.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="">Source code:</dt>
|
||||
<dd><a href="https%3A//example.com/birds/v0.5.0/blob/catalog.pkl">catalog.pkl</a></dd>
|
||||
<dd><a href="https://example.com/birds/v0.5.0/blob/catalog.pkl">catalog.pkl</a></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
Vendored
+1
-1
@@ -28,7 +28,7 @@
|
||||
<div class="member-signature">module <span class="name-decl">fruit.Fruit</span></div>
|
||||
<dl class="member-info">
|
||||
<dt class="">Module URI:</dt>
|
||||
<dd><span class="import-uri">package://localhost:12110/Fruit.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dd><span class="import-uri">package://localhost:12110/fruit@1.1.0#/Fruit.pkl</span><i class="copy-uri-button material-icons">content_copy</i></dd>
|
||||
<dt class="runtime-data hidden">Known subtypes:</dt>
|
||||
<dd id="known-subtypes" class="runtime-data hidden"></dd>
|
||||
<dt class="runtime-data hidden">Known usages:</dt>
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
///
|
||||
/// Warning: Although this module is ready for initial use,
|
||||
/// benchmark results may be inaccurate or inconsistent.
|
||||
@ModuleInfo { minPklVersion = "0.25.2" }
|
||||
@ModuleInfo { minPklVersion = "0.25.3" }
|
||||
module pkl.Benchmark
|
||||
|
||||
import "pkl:platform" as _platform
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user