diff --git a/.coin-or/projDesc.xml b/.coin-or/projDesc.xml
index b656b18fdeb..180d366a1fd 100644
--- a/.coin-or/projDesc.xml
+++ b/.coin-or/projDesc.xml
@@ -227,8 +227,8 @@ Carl D. Laird, Chair, Pyomo Management Committee, claird at andrew dot cmu dot e
Use explicit overrides to disable use of automated
version reporting.
-->
- 6.8.0
- 6.8.0
+ 6.8.1
+ 6.8.1
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 5d16105d24b..c8392ac8106 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,6 +1,67 @@
Pyomo CHANGELOG
===============
+-------------------------------------------------------------------------------
+Pyomo 6.8.1 (15 Nov 2024)
+-------------------------------------------------------------------------------
+
+"Annie"
+
+SIGNIFICANT CHANGE NOTICE
+
+- This will be the last release to support Python 3.8
+- This is the first release to be tested against Python 3.13
+- Complete reorganization of our online documentation (#3382, #3378)
+
+CHANGELOG
+
+- General
+ - Add a 'Do not delete' Disclaimer to Issues/PR Templates (#3361)
+ - Add URL Status Badge to README (#3373)
+ - Resolve change in `InvalidNumber` handling in writers (#3390)
+ - Update `common.timing` to make tests more deterministic (#3397)
+ - Defer processing `ConfigValue`/`ConfigList` default until first use (#3394)
+ - Improved support for moved/renamed/deprecated modules (#3385)
+ - Fix `ConfigValue` initialization in multithreaded environments (#3405)
+ - `ConfigDict`: prevent recursion on partially-constructed objects (#3409)
+ - Fix bug in `AutoSlots` deepcopy (#3412, #3413)
+ - Update `mpi4py_available` to work around `conda-forge/openmpi` (#3416)
+- Core
+ - Resolve bugs in `create_node_with_local_data` (#3376)
+ - Resolve issue in filter/validate deprecation path (#3368)
+ - Support `Param.pprint()` for non-finite Params (#3387)
+ - Add (parameterized) linear programming dual transformation (#3402)
+- Documentation
+ - Autogenerate API documentation (#3378)
+ - Add Alternative Solutions documentation (#3370)
+ - Reorganize online documentation (#3382)
+ - Fix broken doc URLs (#3398)
+ - Improved autoenum documentation (#3389)
+ - Reduce the number of formats built on readthedocs to avoid timeout (#3404)
+- Solver Interfaces
+ - Remove deprecated `gurobipy` `addConstr` call (#3350)
+ - Update Xpress interfaces to support 9.5 (#3392)
+ - Add support for templatized models in `gurobi_direct_v2` (#3362)
+ - Update test for GAMS mapping 'infeasible or unbounded' to infeasible (#3396)
+ - `XpressDirect.available()`: check there is a valid license (#3400)
+ - Move away from dependence on gurobi.sh (#3384)
+ - Fix error when xpress is imported before `xpress_direct` (#3410)
+- Testing
+ - Move URL Checker to Weekly Job (#3360)
+ - Correct newly discovered typos (#3365, #3399)
+ - Remove Octeract from NEOS solvers list (and other testing fixes) (#3374)
+ - Guard tests against broken Gurobi licenses (#3383)
+ - Remove pin to Gurobi 10.0.3 (#3393)
+ - Add Python 3.13 to Testing Infrastructure (#3401)
+ - Resolve `timeout()` failures on Windows/py3.13 (#3415)
+- GDP
+ - Fix performance degradation in hull transformation (#3366)
+- Contributed Packages
+ - DoE: Fix bug from using hardcoded value (#3358)
+ - iis: Catch catastrophic solver failure when building MIS (#3403)
+ - PyNumero: Reverse `BlockVector`/`MPIBlockVector` base class order (#3380)
+ - PyNumero: Resolve incompatibilities with NumPy2 (#3408)
+ - PyROS: Overhaul preprocessor subroutine and subproblem objects (#3341)
-------------------------------------------------------------------------------
Pyomo 6.8.0 (20 Aug 2024)
diff --git a/RELEASE.md b/RELEASE.md
index ec1e532cbcc..1334ea8d2a6 100644
--- a/RELEASE.md
+++ b/RELEASE.md
@@ -1,4 +1,4 @@
-We are pleased to announce the release of Pyomo 6.8.0.
+We are pleased to announce the release of Pyomo 6.8.1.
Pyomo is a collection of Python software packages that supports a
diverse set of optimization capabilities for formulating and analyzing
@@ -6,7 +6,10 @@ optimization models.
The following are highlights of the 6.8 release series:
-- Support for Numpy2
+- Complete Documentation Reorganization
+- Added support for Python 3.13
+- Refactor default Gurobi interface to support version 12
+- Support for NumPy2
- Refactor of Design of Experiments (`contrib.doe`)
- New packages:
- alternative_solutions: alternative (near) optimal solutions
diff --git a/pyomo/common/deprecation.py b/pyomo/common/deprecation.py
index 313c834ffe4..50ad43ff1f8 100644
--- a/pyomo/common/deprecation.py
+++ b/pyomo/common/deprecation.py
@@ -307,7 +307,7 @@ def _import_object(name, target, version, remove_in, msg):
@deprecated(
"relocated_module() has been deprecated. Please use moved_module()",
- version='6.8.1.dev0',
+ version='6.8.1',
)
def relocated_module(new_name, msg=None, logger=None, version=None, remove_in=None):
"""Provide a deprecation path for moved / renamed modules
diff --git a/pyomo/opt/results/__init__.py b/pyomo/opt/results/__init__.py
index 524b9e0706a..fb52575f134 100644
--- a/pyomo/opt/results/__init__.py
+++ b/pyomo/opt/results/__init__.py
@@ -31,7 +31,7 @@
for _attr in ('ScalarData', 'ScalarType', 'default_print_options', 'strict'):
relocated_module_attribute(
- _attr, 'pyomo.opt.results.container.' + _attr, version='6.8.1.dev0'
+ _attr, 'pyomo.opt.results.container.' + _attr, version='6.8.1'
)
del _attr
del relocated_module_attribute
diff --git a/pyomo/repn/linear.py b/pyomo/repn/linear.py
index 90dc58eabc0..3cb3106b9cb 100644
--- a/pyomo/repn/linear.py
+++ b/pyomo/repn/linear.py
@@ -716,7 +716,7 @@ def __init__(
deprecation_warning(
"var_map, var_order, and sorter are deprecated arguments to "
"LinearRepnVisitor(). Please pass the VarRecorder object directly.",
- version='6.7.4.dev0',
+ version='6.8.1',
)
var_recorder = OrderedVarRecorder(var_map, var_order, sorter)
if var_recorder is None:
diff --git a/pyomo/version/info.py b/pyomo/version/info.py
index 858e90f8c77..8d75a31ee61 100644
--- a/pyomo/version/info.py
+++ b/pyomo/version/info.py
@@ -27,8 +27,8 @@
major = 6
minor = 8
micro = 1
-releaselevel = 'invalid'
-# releaselevel = 'final'
+# releaselevel = 'invalid'
+releaselevel = 'final'
serial = 0
if releaselevel == 'final':