Skip to content

Commit 300f640

Browse files
authored
Merge branch 'master' into kellertuer/JuMP-on-non-array-points
2 parents 7b0873f + e34397f commit 300f640

107 files changed

Lines changed: 1767 additions & 2337 deletions

File tree

Some content is hidden

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

.github/workflows/CompatHelper.yml

Lines changed: 0 additions & 25 deletions
This file was deleted.

.github/workflows/ci.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
- uses: julia-actions/julia-buildpkg@v1
2323
- uses: julia-actions/julia-runtest@v1
2424
- uses: julia-actions/julia-processcoverage@v1
25-
- uses: codecov/codecov-action@v5
25+
- uses: codecov/codecov-action@v6
2626
with:
2727
token: ${{ secrets.CODECOV_TOKEN }}
2828
file: ./lcov.info

.github/workflows/documenter.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ jobs:
1818
with:
1919
version: "1.12"
2020
- name: Julia Cache
21-
uses: julia-actions/cache@v2
21+
uses: julia-actions/cache@v3
2222
- name: Cache Quarto
2323
id: cache-quarto
24-
uses: actions/cache@v4
24+
uses: actions/cache@v5
2525
env:
2626
cache-name: cache-quarto
2727
with:
@@ -31,7 +31,7 @@ jobs:
3131
${{ runner.os }}-${{ env.cache-name }}-
3232
- name: Cache Documenter
3333
id: cache-documenter
34-
uses: actions/cache@v4
34+
uses: actions/cache@v5
3535
env:
3636
cache-name: cache-documenter
3737
with:

.github/workflows/spell_check.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
name: Spell Check
2+
3+
on: [pull_request, workflow_dispatch]
4+
5+
jobs:
6+
typos-check:
7+
name: Spell Check with Typos
8+
runs-on: ubuntu-latest
9+
steps:
10+
- name: Checkout Actions Repository
11+
uses: actions/checkout@v6
12+
- name: Check spelling
13+
uses: crate-ci/typos@v1.45.0

CONTRIBUTING.md

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ The following is a set of guidelines to [`Manopt.jl`](https://juliamanifolds.git
1717
- [Provide a new example](#Provide-a-new-example)
1818
- [Code style](#Code-style)
1919
- [Concerning the documentation](#Concerning-the-documentation)
20+
- [Spell checking](#Spell-checking)
2021
## I just have a question
2122

2223
The developer can most easily be reached in the Julia Slack channel [#manifolds](https://julialang.slack.com/archives/CP4QF0K5Z).
@@ -83,4 +84,20 @@ Please follow a few internal conventions:
8384

8485
If you implement a new feature, a tutorial how to use it would be appreciated as well. Tutorials are written as [Quarto](https://quarto.org/) documents and stored in the `tutorials/` folder. This is rendered automatically into the documentation page, you just have to add a menu entry within the tutorial sub menu.
8586

86-
If you implement an algorithm with a certain numerical example in mind, it would be great, if this could be added to the [ManoptExamples.jl](https://github.com/JuliaManifolds/ManoptExamples.jl) package as well.
87+
If you implement an algorithm with a certain numerical example in mind, it would be great, if this could be added to the [ManoptExamples.jl](https://github.com/JuliaManifolds/ManoptExamples.jl) package as well.
88+
89+
### Spell checking
90+
91+
We use [crate-ci/typos](https://github.com/crate-ci/typos) for spell checking, which is run automatically on GitHub Actions, but you can also run it locally using their command line tool.
92+
93+
### On the use of AI
94+
95+
Following the [Julia Discourse Guidelines – Keep it tidy](https://discourse.julialang.org/faq#keep-tidy),
96+
please do not open PRs or issues that are pure AI generated. `Manopt.jl` is in its aspects,
97+
especially the code, the documentation, as well as the tests, carefully curated to be concise,
98+
well-documented, comprehensive, but in tests also in a (hopefully) good balance between
99+
ensuring functionality and “over testing”.
100+
101+
Of course it is ok to get help from an AI, e.g. when refactoring parts of the code,
102+
but please always carefully reflect on the results proposed and do not “[vibe code](https://en.wikipedia.org/wiki/Vibe_coding)”. That usually does not work well nor fit the exact mathematical definitions,
103+
reliability and stability as well as and abstractions of the provided algorithms `Manopt.jl` aims to provide.

Changelog.md

Lines changed: 57 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,18 +6,70 @@ The file was started with Version `0.4`.
66
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
77
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
88

9-
## [0.5.30] unreleased
9+
## [0.6.0] unreleased
10+
11+
This is a breaking change since the JuMP extension is dropped.
12+
13+
### Changed
14+
15+
* removed the JuMP extension, since it was a bit incomplete and hard to maintain, and not possible to extend to all manifolds. The main reason is, that matrices are a bit tough to represent in JuMP, which is vector based, and types points are nearly impossible to represent. Distinguishing between points and tangent vectors is also a bit hard to track.
16+
17+
## [0.5.35] April 3, 2026
18+
19+
### Changed
20+
21+
* Improved formatting of the references in the Readme.md (#586)
22+
* Bump compat for RecursiveArrayTools.jl to include version 4
23+
* deactivate CompatHelper Action and solely use dependabot
24+
25+
## [0.5.34] March 3, 2026
26+
27+
### Fixed
28+
29+
* `Float32` support in `trust_regions` solver was broken in the previous release, which is now fixed.
30+
31+
## [0.5.33] February 18, 2026
32+
33+
### Added
34+
35+
* A clarification on the use of AI in the [CONTRIBUTING.md](https://manoptjl.org/stable/contributing/) (#573)
36+
* `_produce_type` now accepts the point `p` as an optional third argument, which can be used to produce objects with specific point type for internal buffers. The addition has been utilized in `DirectionUpdateRule`s and `Stepsize`s to improve GPU and custom floating point type compatibility. (#577)
37+
* Added another package and paper using `Manopt.jl` to the about page (#576).
38+
39+
### Fixed
40+
41+
* `DistanceOverGradientsStepsize` now requires explicitly passing a point as the second argument because it logically depends on receiving the initial point. (#577)
42+
43+
## [0.5.32] January 15, 2026
44+
45+
### Fixed
46+
47+
* Fixed failing precompilation related to the release of Glossaries.jl v0.1.1 (#567).
48+
49+
## [0.5.31] January 11, 2026
1050

1151
### Changed
1252

13-
* removed the JuMP extension, since it was a bit incomplete and hard to maintain,
14-
and not possible to extend to all manifolds. The main reason is, that matrices are a bit tough to represent in JuMP, which is vector based, and types points are nearly impossible to represent. Distinguishing between points and tangent vectors is also a bit hard to track.
53+
Moved the documentation glossaries to using the new [Glossaries.jl](https://github.com/JuliaManifolds/Glossaries.jl) package.
54+
55+
## [0.5.30] December 10, 2025
56+
57+
### Added
58+
59+
* add keyword argument `is_feasible_error` to `interior_point_Newton` to control how to handle infeasible starting points (#556)
60+
* add keyword argument `at_init` to some debug options to control whether they print already at the initialisation and hence before the first iteration (#552)
61+
62+
### Fixed
63+
64+
* fixed a few typos in the documentation (#557)
65+
* fixed a bug in `StopWhenRepeated` where it stopped already at initialisation if the interior stopping criterion was satisfied (#558)
1566

1667
## [0.5.29] November 26, 2025
1768

1869
### Added
1970

2071
* a keyword argument `atol` to the `ConstrainedManifoldObjective` to set a tolerance for constraint satisfaction. (#545)
72+
* a spell checker following [crate-ci/typos](https://github.com/crate-ci/typos)
2173

2274
### Fixed
2375

@@ -28,7 +80,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
2880
* Removed `atol` from `DebugFeasibility` and instead use the one newly added `atol` from the `ConstrainedManifoldObjective`. (#546)
2981
* Move from CompatHelper to dependabot to keep track of dependency updates in Julia packages. (#547)
3082
* moved the `ManoptTestSuite` module to a sub module `Manopt.Test` within `Manopt.jl`,
31-
so it can be easier resused by others as well (#550)
83+
so it can be easier reused by others as well (#550)
3284
* moved to using a `Project.toml` for tests and an overall `[Workspace]`.
3385
This also allows finally to run single test files without installing all packages manually, but instead just switching to and instantiating the test environment. (#550)
3486
* for compatibility, state also `[source]` entries consistently in the sub `Project.toml` files. (#550)
@@ -253,7 +305,7 @@ present; they were changed to `retact_fused!`.
253305
* A scaling error that appeared only when calling `get_cost_function` on the new `ScaledManifoldObjective`.
254306
* Documentation issues for quasi-Newton solvers.
255307
* fixes a scaling error in quasi newton
256-
* Fixes printing of JuMP models containg Manopt solver.
308+
* Fixes printing of JuMP models containing Manopt solver.
257309

258310
## [0.5.12] April 13, 2025
259311

Project.toml

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,18 @@
11
name = "Manopt"
22
uuid = "0fc0a36d-df90-57f3-8f93-d78a9fc72bb5"
3-
authors = ["Ronny Bergmann <manopt@ronnybergmann.net>"]
4-
version = "0.5.29"
3+
version = "0.5.34"
4+
authors = [{family-names = "Bergmann", given-names = "Ronny", alias = "kellertuer", city = "Trondheim", affiliation = "Norwegian University of Science and Technology", country = "NO", email = "manopt@ronnybergmann.net", orcid = "https://orcid.org/0000-0001-8342-7218", website = "https://ronnybergmann.net"}]
5+
6+
[workspace]
7+
projects = ["test", "docs", "tutorials"]
58

69
[deps]
710
ColorSchemes = "35d6a980-a343-548e-a6ea-1d62b119f2f4"
811
ColorTypes = "3da002f7-5984-5a60-b8a6-cbb66c0b333f"
912
Colors = "5ae59095-9a9b-59fe-a467-6f913c188581"
1013
DataStructures = "864edb3b-99cc-5e75-8d2d-829cb0a9cfe8"
1114
Dates = "ade2ca70-3891-5945-98fb-dc099432e06a"
15+
Glossaries = "8f48dd54-e453-4cdc-9500-53b96149560b"
1216
LinearAlgebra = "37e2e46d-f89d-539d-b4ee-838fcccc9c8e"
1317
ManifoldDiff = "af67fdf4-a580-4b9f-bbec-742ef357defd"
1418
ManifoldsBase = "3362f125-f0bb-47a3-aa74-596ffd7ef2fb"
@@ -42,24 +46,22 @@ ColorTypes = "0.9.1, 0.10, 0.11, 0.12"
4246
Colors = "0.11.2, 0.12, 0.13"
4347
DataStructures = "0.17, 0.18, 0.19"
4448
Dates = "1.10"
49+
Glossaries = "0.1.1"
4550
JuMP = "1.15"
46-
LinearAlgebra = "1.10"
47-
LineSearches = "7.2.0"
4851
LRUCache = "1.4"
52+
LineSearches = "7.2.0"
53+
LinearAlgebra = "1.10"
4954
ManifoldDiff = "0.3.8, 0.4"
50-
ManifoldsBase = "2.2.0"
5155
Manifolds = "0.11.2"
56+
ManifoldsBase = "2.3.1"
5257
Markdown = "1.10"
5358
Plots = "1.30"
5459
Preferences = "1.4"
5560
Printf = "1.10"
5661
QuadraticModels = "0.9"
5762
Random = "1.10"
58-
RecursiveArrayTools = "2, 3"
63+
RecursiveArrayTools = "2, 3, 4"
5964
RipQP = "0.6.4, 0.7"
6065
SparseArrays = "1.10"
6166
Statistics = "1.10"
6267
julia = "1.10"
63-
64-
[workspace]
65-
projects = ["test", "docs", "tutorials"]

Readme.md

Lines changed: 41 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,13 @@ using Pkg; Pkg.add("Manopt");
3838

3939
and then checkout the [🏔️ Get started with Manopt.jl](https://manoptjl.org/stable/tutorials/getstarted/) tutorial.
4040

41+
You can also watch an introduction given at JuliaCon 2022
42+
43+
[<img src ="https://img.youtube.com/vi/thbekfsyhCE/maxresdefault.jpg" style="width:66%; align:center;">](https://youtu.be/thbekfsyhCE)
44+
45+
or look at the slides from the presentation [here](https://ronnybergmann.net/talks/2022-JuliaCon-Manoptjl-extended.pdf).
46+
47+
4148
## Related packages
4249

4350
Manopt.jl is based on [`ManifoldsBase.jl`](https://juliamanifolds.github.io/ManifoldsBase.jl/stable/),
@@ -54,6 +61,15 @@ The following packages are related to `Manopt.jl`
5461

5562
If you use `Manopt.jl` in your work, please cite the following
5663

64+
> _Bergmann, R._ (2022).
65+
> **Manopt.jl: Optimization on Manifolds in Julia**,
66+
> Journal of Open Source Software, 7(70), 3866.<br/>
67+
> doi: [10.21105/joss.03866](https://doi.org/10.21105/joss.03866)
68+
69+
<details>
70+
71+
<summary><code>Bergmann:2022</code> (BibLaTeX) </summary>
72+
5773
```biblatex
5874
@article{Bergmann2022,
5975
Author = {Ronny Bergmann},
@@ -68,8 +84,17 @@ If you use `Manopt.jl` in your work, please cite the following
6884
}
6985
```
7086

87+
</details>
88+
7189
To refer to a certain version or the source code in general please cite for example
7290

91+
> _Bergmann, R._ (2026). **Manopt.jl**, Zenodo. <br/>
92+
> doi: [10.5281/zenodo.4290905](https://doi.org/10.5281/zenodo.4290905)
93+
94+
<details>
95+
96+
<summary><code>Manoptjl-zenodo-mostrecent</code> (BibLaTeX)</summary>
97+
7398
```biblatex
7499
@software{manoptjl-zenodo-mostrecent,
75100
Author = {Ronny Bergmann},
@@ -81,10 +106,22 @@ To refer to a certain version or the source code in general please cite for exam
81106
}
82107
```
83108

84-
for the most recent version or a corresponding version specific DOI, see [the list of all versions](https://zenodo.org/search?page=1&size=20&q=conceptrecid:%224290905%22&sort=-version&all_versions=True).
109+
</details>
110+
111+
for the most recent version.
112+
For a corresponding version specific DOI, see [the list of all versions](https://zenodo.org/search?page=1&size=20&q=conceptrecid:%224290905%22&sort=-version&all_versions=True).
85113

86114
If you are also using [`Manifolds.jl`](https://juliamanifolds.github.io/Manifolds.jl/stable/) please consider to cite
87115

116+
> _Axen, S. D., Baran, M., Bergmann, R., Rzecki, K._ (2023).
117+
> **Manifolds.jl: An Extensible Julia Framework for Data Analysis on Manifolds**,
118+
> ACM Transactions on Mathematical Software, Volume 49, Issue 4, Article No. 33, pages 1–23. <br>
119+
> doi: [10.1145/3618296](https://doi.org/10.1145/3618296),
120+
> arXiv: [2106.08777](https://arxiv.org/abs/2106.08777)
121+
<details>
122+
123+
<summary><code>AxenBaranBergmannRzecki:2023</code>(BibLaTeX)</summary>
124+
88125
```biblatex
89126
@article{AxenBaranBergmannRzecki:2023,
90127
AUTHOR = {Axen, Seth D. and Baran, Mateusz and Bergmann, Ronny and Rzecki, Krzysztof},
@@ -93,14 +130,15 @@ If you are also using [`Manifolds.jl`](https://juliamanifolds.github.io/Manifold
93130
JOURNAL = {ACM Transactions on Mathematical Software},
94131
MONTH = {dec},
95132
NUMBER = {4},
96-
TITLE = {Manifolds.jl: An Extensible Julia Framework for Data Analysis on Manifolds},
133+
TITLE = {Manifolds.Jl: An Extensible Julia Framework for Data Analysis on Manifolds},
97134
VOLUME = {49},
98135
YEAR = {2023}
99136
}
100137
```
101138

139+
</details>
140+
102141
as well.
103-
Note that all citations are in [BibLaTeX](https://ctan.org/pkg/biblatex) format.
104142

105143
`Manopt.jl` belongs to the Manopt family:
106144

_typos.toml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
[default.extend-words]
2+
methodes = "methodes" # french
3+
Serie = "Serie" # french
4+
sur = "sur" # french
5+
cmo = "cmo" # often used abbreviation for constrained manifold objective
6+
7+
[files]
8+
extend-exclude = [
9+
"tutorials/*.html",
10+
# rendered from tutorials/*.qmd -Z we do not want typos twice
11+
"docs/src/tutorials/*.md",
12+
"joss/paper.md",
13+
]

docs/Project.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,5 +44,5 @@ ManifoldsBase = "2"
4444
Manopt = "0.5"
4545
Plots = "1"
4646
QuadraticModels = "0.9.6"
47-
RecursiveArrayTools = "2, 3"
47+
RecursiveArrayTools = "2, 3, 4"
4848
RipQP = "0.6.4, 0.7"

0 commit comments

Comments
 (0)