@@ -15,7 +15,7 @@ changes.
1515### Breaking
1616
1717 * This release involved a substantial rewrite of Convex.jl to integrate better
18- with MathOptInterface. (#504 )
18+ with MathOptInterface. (#504 ), ( # 551 ), ( # 584 ), ( # 588 ), ( # 637 )
1919 * ` x + A ` will error if ` x ` is a scalar variable and ` A ` is an array.
2020 Instead, use ` x * ones(size(A)) + A ` .
2121 * The ` RelativeEntropyAtom ` now returns a scalar value instead o
@@ -28,8 +28,19 @@ changes.
2828 (Following the convention in MathOptInterface, the dual of ` a <= b ` is
2929 always negative, regardless of optimization sense.) (#593 )
3030 * 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 )
3344 * The syntaxes ` dot(*) ` , ` dot(/) ` and ` dot(^) ` have been removed in favor of
3445 explicit broadcasting (` x .* y ` , ` x ./ y ` , and ` x .^ y ` ). These were (mild)
3546 type piracy. In addition, ` vecdot(x,y) ` has been removed. Call
@@ -38,43 +49,71 @@ changes.
3849 individual variable, has been renamed ` get_constraints ` (#527 )
3950 * DCP violations now throw a ` DCPViolationError ` exception, rather than a
4051 warning. Relatedly, ` Convex.emit_dcp_warnings ` has been removed (#523 )
41- * Removed the undocumented an internal function ` latex_formulation ` (#551 )
4252 * The strict inequalities ` > ` and ` < ` have been deprecated. They will be
4353 removed in the next breaking release. Note that these never enforced strict
4454 inequalities, but instead were equivalent to ` >= ` and ` <= ` respectively (#555 )
4555 * The functions ` norm_inf ` , ` norm_1 ` , and ` norm_fro ` have been deprecated. They
4656 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 )
4766
4867### Added
4968
5069 * SDP, SOC, and exponential cone constraints now have dual values populated
5170 (#504 )
5271 * ` geomean ` supports more than 2 arguments (#504 )
5372 * Added ` Convex.Optimizer ` (#511 ), (#530 ), (#534 )
54- * Added ` write_to_file ` (#531 )
73+ * Added ` write_to_file ` (#531 ), ( # 591 )
5574 * Added ` entropy_elementwise ` (#570 )
5675 * ` norm ` on ` AbstractExpr ` objects now supports matrices (treating them like
5776 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 )
5885
5986### Fixed
6087
6188 * ` sumlargesteigs ` now enforces that it's argument is hermitian. (#504 )
6289 * [ 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 )
67100
68101### Other
69102
70- * Improved the documentation (#517 ), (#529 )
103+ * Improved the documentation (#506 ), (#517 ), (#529 ), (#571 ), (#573 ), (#574 ),
104+ (#576 ), (#579 ), (#587 ), (#594 ), (#628 ), (#652 ), (#656 )
71105 * Refactored the tests into a functional form (#532 )
106+ * Updated ` Project.toml ` (#535 )
72107 * Added ` test/Project.toml ` (#536 )
73108 * Refactored imports to explicitly overload methods (#537 )
74109 * Tidied and renamed various atoms and files clarity. This should be
75110 non-breaking as no public API was changed. (#538 ), (#539 ), (#540 ), (#541 ),
76- (#543 ), (#545 )
111+ (#543 ), (#545 ), ( # 549 ), ( # 553 ), ( # 582 ), ( # 583 )
77112 * 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 )
78117
79118## v0.15.4 (October 24, 2023)
80119
0 commit comments