Skip to content

Commit e8fb0d2

Browse files
authored
Merge pull request #293 from ortus-boxlang/development
v1.4.0 Release
2 parents 9317a8f + 36fe729 commit e8fb0d2

File tree

233 files changed

+10643
-2357
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

233 files changed

+10643
-2357
lines changed

.github/copilot-instructions.md

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# Copilot Instructions for BoxLang
2+
3+
## Project Overview
4+
5+
- **BoxLang** is a dynamic JVM language and runtime, supporting multiple deployment targets (CLI, web, lambda, etc.).
6+
- The main entry point is `ortus.boxlang.runtime.BoxRunner` (see `build.gradle: mainClass`) for the CLI.
7+
- The runtime is modular, allowing for extensible components, functions, and services.
8+
- Core runtime logic is in `src/main/java/ortus/boxlang/runtime/`.
9+
- Language parsing uses ANTLR grammars in `src/main/antlr/`.
10+
- Built-in services (e.g., `ComponentService`, `FunctionService`) are in `runtime/services/` and auto-registered via the `IService` interface.
11+
- Components and functions are extensible via annotations (`@BoxComponent`) and service registration.
12+
- Modules (see `modules/`) can provide BIFs, interceptors, tags, and Java libs, and are loaded with their own classloader.
13+
14+
## Key Developer Workflows
15+
16+
- **Development:** Use IntelliJ IDEA or VSCode with the BoxLang extension for code editing and navigation.
17+
- **Build & Test:** Use Gradle for building and testing. The project is structured with a `build.gradle` file in the root directory.
18+
- **Run:** Use the CLI binary (`boxlang`) or run `BoxRunner` directly for scripts/classes.
19+
- **Build:** Use Gradle (`./gradlew build`) to compile, test, and package. The project targets JDK 21.
20+
- **Test:** JUnit 5 is used for tests in `src/test/java/`. Run with `./gradlew test`.
21+
- **Assertions:** Uses Google Truth for assertions in tests.
22+
- **Run:** Use the CLI binary (`boxlang`) or run `BoxRunner` directly for scripts/classes.
23+
- **Debug:** The BoxLang VSCode extension provides debugging, code navigation, and language tooling.
24+
25+
## Project Conventions & Patterns
26+
27+
- **Services:** Implement `IService` and register in `BoxRuntime` for global services.
28+
- **Components:** Annotate with `@BoxComponent` and place in `runtime/components/` for auto-discovery.
29+
- **Functions (BIFs):** Register via `FunctionService` and use `BIFDescriptor`/`BoxBIF` patterns.
30+
- **Modules:** Each module has a `ModuleConfig.bx` and `box.json` for metadata/configuration.
31+
- **Configuration:** Runtime config is loaded via CLI flags or config files (see `BoxRunner` docs).
32+
- **Testing Modules:** Example: `modules/bx-derby` is used for DB testing in CI.
33+
- **Code Style:** Follow Java conventions found in the workbench/ortus-java-style.xml file.
34+
- **New Files**: Must have the workbench header comment at the top of the file.
35+
- **Documentation:** Use Javadoc for public APIs and inline comments for complex logic.
36+
- **Error Handling:** Use `BoxRuntimeException` for runtime errors, and `BoxParseException` for parsing errors.
37+
38+
## Integration Points
39+
40+
- **Java Interop:** 100% Java interop; Java classes can be used directly in BoxLang code.
41+
- **ANTLR:** Language grammar and parsing are defined in `src/main/antlr/`.
42+
- **ServiceLoader:** Used for dynamic service/component/function discovery.
43+
- **VSCode Extension:** See [marketplace](https://marketplace.visualstudio.com/items?itemName=ortus-solutions.vscode-boxlang) for IDE integration.
44+
45+
## Examples
46+
47+
- To add a new component: create a class in `runtime/components/`, annotate with `@BoxComponent`, and implement logic.
48+
- To add a new service: implement `IService`, place in `runtime/services/`, and register in `BoxRuntime`.
49+
- To add a new BIF: create a class in `runtime/bifs/`, annotate with `@BoxBIF`, and register in `FunctionService`.
50+
- To add a module: create a folder in `modules/` with `ModuleConfig.bx` and `box.json`.
51+
52+
## References
53+
54+
- [README.md](../../README.md) for high-level project info
55+
- [BoxLang Docs](https://boxlang.ortusbooks.com/) for language and runtime details
56+
57+
---
58+
If any conventions or workflows are unclear, please ask for clarification or examples from the codebase.

.github/dependabot.yml

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
1-
# To get started with Dependabot version updates, you'll need to specify which
2-
# package ecosystems to update and where the package manifests are located.
3-
# Please see the documentation for all configuration options:
4-
# https://docs.github.com/code-security/dependabot/dependabot-version-updates/configuration-options-for-the-dependabot.yml-file
51
version: 2
62
updates:
7-
- package-ecosystem: "gradle" # See documentation for possible values
8-
directory: "/" # Location of package manifests
3+
# GitHub Actions - updates uses: statements in workflows
4+
- package-ecosystem: "github-actions"
5+
directory: "/" # Where your .github/workflows/ folder is
96
schedule:
10-
interval: "weekly"
7+
interval: "monthly"
8+
9+
# Gradle - updates dependencies in build.gradle or build.gradle.kts
10+
- package-ecosystem: "gradle"
11+
directory: "/" # Adjust if build.gradle is in a subfolder
12+
schedule:
13+
interval: "monthly"

.github/workflows/release.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ jobs:
7676
fi
7777
7878
- name: Update changelog [unreleased] with latest version
79-
uses: thomaseizinger/keep-a-changelog-new-release@2.0.0
79+
uses: thomaseizinger/keep-a-changelog-new-release@3.1.0
8080
if: env.SNAPSHOT == 'false'
8181
with:
8282
changelogPath: ./changelog.md
@@ -169,7 +169,7 @@ jobs:
169169
MAVEN_PASSWORD: ${{ secrets.MAVEN_PASSWORD }}
170170

171171
- name: Create Github Release
172-
uses: taiki-e/create-gh-release-action@v1.8.0
172+
uses: taiki-e/create-gh-release-action@v1.9.1
173173
continue-on-error: true
174174
if: env.SNAPSHOT == 'false'
175175
id: create_release

.github/workflows/snapshot.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ jobs:
3939
run: ./gradlew spotlessApply --stacktrace
4040

4141
- name: Commit Format Changes
42-
uses: stefanzweifel/git-auto-commit-action@v5
42+
uses: stefanzweifel/git-auto-commit-action@v6
4343
with:
4444
commit_message: Apply cfformat changes
4545

.github/workflows/tests.yml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ jobs:
2626
jdkVersion: [ "21" ]
2727
experimental: [ false ]
2828
compiler: [ "java", "asm" ]
29+
exclude:
30+
- os: windows-latest
31+
compiler: java
2932
steps:
3033
- name: Checkout Repository
3134
uses: actions/checkout@v4
@@ -48,9 +51,11 @@ jobs:
4851
run: box install testbox@be src/test/resources --verbose --noSave
4952

5053
- name: Test Module
54+
env:
55+
BOXLANG_EXPERIMENTAL_COMPILER: ${{ matrix.compiler }}
5156
run: |
52-
./gradlew :src:modules:test:build "-Dboxlang.experimental.compiler=${{ matrix.compiler }}" --stacktrace --console=plain
53-
./gradlew test "-Dboxlang.experimental.compiler=${{ matrix.compiler }}" --stacktrace --console=plain
57+
./gradlew :src:modules:test:build --stacktrace --console=plain
58+
./gradlew test --stacktrace --console=plain
5459
5560
- name: Upload Test Results
5661
if: always()

build.gradle

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,9 @@ plugins {
1313
id "application"
1414
id 'antlr'
1515
// For source code formatting
16-
id "com.diffplug.spotless" version "7.0.4"
16+
id "com.diffplug.spotless" version "7.2.0"
1717
// Shadow
18-
id "com.gradleup.shadow" version "9.0.0-beta16"
18+
id "com.gradleup.shadow" version "9.0.0-rc1"
1919
// For dependency updates
2020
id 'com.github.ben-manes.versions' version '0.52.0'
2121
// For building service loader files
@@ -95,7 +95,7 @@ repositories {
9595
*/
9696
dependencies {
9797
// Testing Dependencies
98-
testImplementation "org.junit.jupiter:junit-jupiter:5.13.1"
98+
testImplementation "org.junit.jupiter:junit-jupiter:5.13.4"
9999
testImplementation "org.mockito:mockito-core:5.+"
100100
testImplementation "com.google.truth:truth:1.+"
101101
testImplementation "commons-cli:commons-cli:1.9.0"
@@ -110,24 +110,24 @@ dependencies {
110110

111111
// Implementation Dependencies
112112
// https://mvnrepository.com/artifact/commons-io/commons-io
113-
implementation "commons-io:commons-io:2.19.0"
113+
implementation "commons-io:commons-io:2.20.0"
114114
// https://mvnrepository.com/artifact/com.github.javaparser/javaparser-symbol-solver-core
115115
implementation 'com.github.javaparser:javaparser-symbol-solver-core:3.27.0'
116116
// https://mvnrepository.com/artifact/org.apache.commons/commons-lang3
117-
implementation 'org.apache.commons:commons-lang3:3.17.0'
117+
implementation 'org.apache.commons:commons-lang3:3.18.0'
118118
// https://mvnrepository.com/artifact/org.apache.commons/commons-text
119119
// Many of these classes ( e.g. StringEscapeUtils ) are currently deprecated in commons-lang and others will be moved in the future
120-
implementation 'org.apache.commons:commons-text:1.13.1'
120+
implementation 'org.apache.commons:commons-text:1.14.0'
121121
// https://mvnrepository.com/artifact/org.apache.commons/commons-cli
122122
implementation "commons-cli:commons-cli:1.9.0"
123123
// https://mvnrepository.com/artifact/com.fasterxml.jackson.jr/jackson-jr-objects
124-
implementation 'com.fasterxml.jackson.jr:jackson-jr-objects:2.19.1'
124+
implementation 'com.fasterxml.jackson.jr:jackson-jr-objects:2.19.2'
125125
// https://mvnrepository.com/artifact/com.fasterxml.jackson.jr/jackson-jr-extension-javatime
126-
implementation 'com.fasterxml.jackson.jr:jackson-jr-extension-javatime:2.19.1'
126+
implementation 'com.fasterxml.jackson.jr:jackson-jr-extension-javatime:2.19.2'
127127
// https://mvnrepository.com/artifact/com.fasterxml.jackson.jr/jackson-jr-stree
128-
implementation 'com.fasterxml.jackson.jr:jackson-jr-stree:2.19.1'
128+
implementation 'com.fasterxml.jackson.jr:jackson-jr-stree:2.19.2'
129129
// https://mvnrepository.com/artifact/com.fasterxml.jackson.jr/jackson-jr-annotation-support
130-
implementation 'com.fasterxml.jackson.jr:jackson-jr-annotation-support:2.19.1'
130+
implementation 'com.fasterxml.jackson.jr:jackson-jr-annotation-support:2.19.2'
131131
// https://mvnrepository.com/artifact/org.slf4j/slf4j-api
132132
implementation 'org.slf4j:slf4j-api:2.0.17'
133133
// https://mvnrepository.com/artifact/ch.qos.logback/logback-classic
@@ -138,12 +138,14 @@ dependencies {
138138
implementation 'org.ow2.asm:asm-tree:9.8'
139139
// https://mvnrepository.com/artifact/org.ow2.asm/asm-util
140140
implementation 'org.ow2.asm:asm-util:9.8'
141+
// https://mvnrepository.com/artifact/org.ow2.asm/asm-commons
142+
implementation 'org.ow2.asm:asm-commons:9.8'
141143
// https://mvnrepository.com/artifact/org.semver4j/semver4j
142-
implementation 'org.semver4j:semver4j:5.7.1'
144+
implementation 'org.semver4j:semver4j:6.0.0'
143145

144146
// Compile Only Dependencies
145147
// Java Annotations Checks, this are for compile documentation only. It's not included in the final build
146-
compileOnly 'org.checkerframework:checker-qual:3.49.4'
148+
compileOnly 'org.checkerframework:checker-qual:3.49.5'
147149

148150
}
149151

gradle.properties

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#Thu May 29 14:59:26 UTC 2025
1+
#Mon Jun 23 16:02:13 UTC 2025
22
antlrVersion=4.13.1
33
jdkVersion=21
4-
version=1.3.0
4+
version=1.4.0

0 commit comments

Comments
 (0)