@@ -15,7 +15,7 @@ changes.
15
15
### Breaking
16
16
17
17
* This release involved a substantial rewrite of Convex.jl to integrate better
18
- with MathOptInterface. (#504 )
18
+ with MathOptInterface. (#504 ), ( # 551 ), ( # 584 ), ( # 588 ), ( # 637 )
19
19
* ` x + A ` will error if ` x ` is a scalar variable and ` A ` is an array.
20
20
Instead, use ` x * ones(size(A)) + A ` .
21
21
* The ` RelativeEntropyAtom ` now returns a scalar value instead o
@@ -28,8 +28,19 @@ changes.
28
28
(Following the convention in MathOptInterface, the dual of ` a <= b ` is
29
29
always negative, regardless of optimization sense.) (#593 )
30
30
* The structs ` LtConstraint ` , ` GtConstraint ` , ` EqConstraint `
31
- ` SOCConstraint ` and ` SDPConstraint ` have
32
- been replaced by ` GenericConstraint{S} ` where ` S<:MOI.AbstractSet ` (#590 )
31
+ ` SOCConstraint ` , ` ExpConstraint ` , ` GeoMeanEpiConeConstraint ` ,
32
+ ` GeoMeanHypoConeConstraint ` , and ` SDPConstraint ` have been replaced by
33
+ ` GenericConstraint{S} ` where ` S<:MOI.AbstractSet ` (#590 ), (#597 ), (#598 ),
34
+ (#599 ), (#601 ), (#602 ), (#604 ), (#623 ), (#632 ), (#648 )
35
+ * The set ` GeomMeanEpiCone ` has been renamed to ` GeometricMeanEpiConeSquare `
36
+ and ` GeomMeanHypoCone ` has been renamed to ` GeometricMeanHypoConeSquare `
37
+ (#638 )
38
+ * ** Subtle breaking change** : scalar row indexing like ` x[i, :] ` now produces a
39
+ column vector instead of a row vector. This better aligns with Julia Base,
40
+ but it can result in subtle differences, particularly for code like
41
+ ` x[i, :] * y[i, :]' ` : this used to be equivalent to the inner product, but it
42
+ is now the outer product. In Base Julia, this is the outer product, so the
43
+ previous code may be been silently broken (#624 )
33
44
* The syntaxes ` dot(*) ` , ` dot(/) ` and ` dot(^) ` have been removed in favor of
34
45
explicit broadcasting (` x .* y ` , ` x ./ y ` , and ` x .^ y ` ). These were (mild)
35
46
type piracy. In addition, ` vecdot(x,y) ` has been removed. Call
@@ -38,43 +49,71 @@ changes.
38
49
individual variable, has been renamed ` get_constraints ` (#527 )
39
50
* DCP violations now throw a ` DCPViolationError ` exception, rather than a
40
51
warning. Relatedly, ` Convex.emit_dcp_warnings ` has been removed (#523 )
41
- * Removed the undocumented an internal function ` latex_formulation ` (#551 )
42
52
* The strict inequalities ` > ` and ` < ` have been deprecated. They will be
43
53
removed in the next breaking release. Note that these never enforced strict
44
54
inequalities, but instead were equivalent to ` >= ` and ` <= ` respectively (#555 )
45
55
* The functions ` norm_inf ` , ` norm_1 ` , and ` norm_fro ` have been deprecated. They
46
56
will be removed in the next breaking release (#567 )
57
+ * The syntax ` x in :PSD ` to create a semidefinite constraint is deprecated and
58
+ will be removed in the next breaking release (#578 )
59
+ * Fixed setting a ` Constant ` objective function. This is breaking because it
60
+ now has an objective sense instead of ignoring the objective. (#581 )
61
+ * ` quadform ` now errors when fixed variables are used instead of silently
62
+ giving incorrect answers if the value of the fixed variable is modified
63
+ between solves (#586 )
64
+ * The ` Context ` struct has been refactored and various fields have been
65
+ changed. The internal details are now considered private. (#645 )
47
66
48
67
### Added
49
68
50
69
* SDP, SOC, and exponential cone constraints now have dual values populated
51
70
(#504 )
52
71
* ` geomean ` supports more than 2 arguments (#504 )
53
72
* Added ` Convex.Optimizer ` (#511 ), (#530 ), (#534 )
54
- * Added ` write_to_file ` (#531 )
73
+ * Added ` write_to_file ` (#531 ), ( # 591 )
55
74
* Added ` entropy_elementwise ` (#570 )
56
75
* ` norm ` on ` AbstractExpr ` objects now supports matrices (treating them like
57
76
vectors), matching Base's behavior (#528 )
77
+ * Added ` root_det ` (#605 )
78
+ * Added ` VcatAtom ` which is a more efficient implementation of ` vcat ` (#607 )
79
+ * Added support for ` SparseArrays.SparseMatrixCSC ` in ` Constant ` . This fixed
80
+ performance problems with some atoms (#631 )
81
+ * ` solve! ` now reports the time and memory allocation during compilation from
82
+ the DCP expression graph to MathOptInterface (#633 )
83
+ * Added support for using ` Problem ` as an atom (#646 )
84
+ * ` show(::IO, ::Problem) ` now includes some problem statistics (#650 )
58
85
59
86
### Fixed
60
87
61
88
* ` sumlargesteigs ` now enforces that it's argument is hermitian. (#504 )
62
89
* [ Type piracy] ( https://docs.julialang.org/en/v1/manual/style-guide/#Avoid-type-piracy )
63
- of ` imag ` and ` real ` has been removed. This should not affect use of Convex. (#504 )
64
- * Bugfix: ` dot ` now correctly complex-conjugates its first argument (#524 )
65
- * Add tests and fix a number of bugs in various atoms (#546 ), (#550 ), (#554 ),
66
- (#556 ), (#558 ), (#559 ), (#561 ), (#562 ), (#563 ), (#565 ), (#566 ), (#567 ) (#568 )
90
+ of ` imag ` and ` real ` has been removed. This should not affect use of Convex.
91
+ (#504 )
92
+ * Fix ` dot ` to now correctly complex-conjugates its first argument (#524 )
93
+ * Fixed ambiguities identified by Aqua.jl (#642 ), (#647 )
94
+ * Add tests and fix a number of bugs in various atoms (#546 ), (#547 ), (#550 ),
95
+ (#554 ), (#556 ), (#558 ), (#559 ), (#561 ), (#562 ), (#563 ), (#565 ), (#566 ),
96
+ (#567 ), (#568 ), (#608 ), (#609 ), (#617 ), (#626 ), (#654 ), (#655 )
97
+ * Fixed performance issues in a number of issues related to scalar indexing
98
+ (#618 ), (#619 ), (#620 ), (#621 ), (#625 ), (#634 )
99
+ * Fixed ` show ` for ` Problem ` (#649 )
67
100
68
101
### Other
69
102
70
- * Improved the documentation (#517 ), (#529 )
103
+ * Improved the documentation (#506 ), (#517 ), (#529 ), (#571 ), (#573 ), (#574 ),
104
+ (#576 ), (#579 ), (#587 ), (#594 ), (#628 ), (#652 ), (#656 )
71
105
* Refactored the tests into a functional form (#532 )
106
+ * Updated ` Project.toml ` (#535 )
72
107
* Added ` test/Project.toml ` (#536 )
73
108
* Refactored imports to explicitly overload methods (#537 )
74
109
* Tidied and renamed various atoms and files clarity. This should be
75
110
non-breaking as no public API was changed. (#538 ), (#539 ), (#540 ), (#541 ),
76
- (#543 ), (#545 )
111
+ (#543 ), (#545 ), ( # 549 ), ( # 553 ), ( # 582 ), ( # 583 )
77
112
* Removed the unused file ` src/problem_depot/problems/benchmark.jl ` (#560 )
113
+ * Added various tests to improve code coverage (#522 ), (#572 ), (#575 ), (#577 ),
114
+ (#580 )
115
+ * Updated versions in GitHub actions (#596 ), (#612 ), (#629 )
116
+ * Added license headers (#606 )
78
117
79
118
## v0.15.4 (October 24, 2023)
80
119
0 commit comments