Skip to content

Commit 5eade75

Browse files
authored
Merge pull request #727 from control-toolbox/develop
Develop
2 parents dae55b2 + bddc748 commit 5eade75

28 files changed

+2348
-521
lines changed

CHANGELOG.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,30 @@ Versions follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
4646

4747
---
4848

49+
## [1.3.0-beta] — 2026-03-16
50+
51+
### Added
52+
53+
- **Level 3 signature freezing tests** for reexport API across all CTX packages:
54+
- Type hierarchy checks for inheritance relationships (e.g., `Collocation <: AbstractDiscretizer`)
55+
- Method signature checks with `hasmethod()` for key functions (e.g., `discretize`, `solve`, `ocp_model`)
56+
- Missing symbols `solve` and `plot!` now properly tested
57+
- 503 reexport tests passing, up from 497
58+
59+
### Changed
60+
61+
- **Simplified ExaModels documentation**: removed warnings about coordinate-by-coordinate
62+
dynamics and scalar nonlinear constraints requirements, improving user experience
63+
when using the `:exa` modeler for GPU solving
64+
- **Removed outdated API documentation**: `docs/src/api/private.md` deleted
65+
66+
### Fixed
67+
68+
- **API breakage detection**: tests now detect when CTX packages modify their APIs,
69+
preventing silent breakages in OptimalControl.jl
70+
71+
---
72+
4973
## [1.2.3-beta] — 2026-03-07
5074

5175
### Added

Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
name = "OptimalControl"
22
uuid = "5f98b655-cc9a-415a-b60e-744165666948"
3-
version = "1.2.4-beta"
3+
version = "1.3.0-beta"
44
authors = ["Olivier Cots <olivier.cots@toulouse-inp.fr>"]
55

66
[deps]

docs/Project.toml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ CTModels = "34c4fa32-2049-4079-8329-de33c2a22e2d"
77
CTParser = "32681960-a1b1-40db-9bff-a1ca817385d1"
88
CTSolvers = "d3e8d392-8e4b-4d9b-8e92-d7d4e3650ef6"
99
CommonSolve = "38540f10-b2f7-11e9-35d8-d573e4eb0ff2"
10+
CUDA = "052768ef-5323-5732-b1bb-66c8b64840ba"
1011
DataFrames = "a93c6f00-e57d-5684-b7b6-d8193f3e46c0"
1112
Documenter = "e30172f5-a6a5-5a46-863b-614d45cd2de4"
1213
DocumenterInterLinks = "d12716ef-a0f6-4df4-a9f1-a5a34e75c656"
@@ -16,6 +17,7 @@ JLD2 = "033835bb-8acc-5ee8-8aae-3f567f8a3819"
1617
JSON3 = "0f8b85d8-7281-11e9-16c2-39a750bddbf1"
1718
MadNCL = "434a0bcb-5a7c-42b2-a9d3-9e3f760e7af0"
1819
MadNLP = "2621e9c9-9eb4-46b1-8089-e8c72242dfb6"
20+
MadNLPGPU = "d72a61cc-809d-412f-99be-fd81f4b8a598"
1921
MarkdownAST = "d0879d2d-cac2-40c8-9cee-1863dc0c7391"
2022
NLPModelsIpopt = "f4238b75-b362-5c4c-b852-0801c9a21d71"
2123
NLPModelsKnitro = "bec4dd0d-7755-52d5-9a02-22f0ffc7efcb"
@@ -32,6 +34,7 @@ CTModels = "0.9"
3234
CTParser = "0.8"
3335
CTSolvers = "0.4"
3436
CommonSolve = "0.2"
37+
CUDA = "5"
3538
DataFrames = "1"
3639
Documenter = "1"
3740
DocumenterInterLinks = "1"
@@ -41,6 +44,7 @@ JLD2 = "0.6"
4144
JSON3 = "1"
4245
MadNCL = "0.2"
4346
MadNLP = "0.9"
47+
MadNLPGPU = "0.8"
4448
MarkdownAST = "0.1"
4549
NLPModelsIpopt = "0.11"
4650
NLPModelsKnitro = "0.10"

docs/make.jl

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,8 @@
1+
# to run the documentation generation:
2+
# julia --project=. docs/make.jl
3+
pushfirst!(LOAD_PATH, joinpath(@__DIR__, ".."))
4+
pushfirst!(LOAD_PATH, @__DIR__)
5+
16
# control-toolbox packages
27
using OptimalControl
38
using CTBase
@@ -148,7 +153,7 @@ cp(
148153
Draft = false
149154
```
150155
=#
151-
draft = true # Draft mode: if true, @example blocks in markdown are not executed
156+
draft = false # Draft mode: if true, @example blocks in markdown are not executed
152157

153158
# ═══════════════════════════════════════════════════════════════════════════════
154159
# Load extensions
@@ -208,8 +213,12 @@ with_api_reference(src_dir, ext_dir) do api_pages
208213
"Use AI" => "manual-ai-llm.md",
209214
"Problem characteristics" => "manual-model.md",
210215
"Set an initial guess" => "manual-initial-guess.md",
211-
"Solve a problem" => "manual-solve.md",
212-
"Solve on GPU" => "manual-solve-gpu.md",
216+
"Solve a problem" => [
217+
"Basic usage" => "manual-solve.md",
218+
"Advanced options" => "manual-solve-advanced.md",
219+
"Explicit mode" => "manual-solve-explicit.md",
220+
"GPU solving" => "manual-solve-gpu.md",
221+
],
213222
"Solution characteristics" => "manual-solution.md",
214223
"Plot a solution" => "manual-plot.md",
215224
"Compute flows" => [

0 commit comments

Comments
 (0)