Skip to content

highs 1.13.0 - #265829

Merged
BrewTestBot merged 4 commits into
mainfrom
bump-highs-1.13.0
Feb 4, 2026
Merged

highs 1.13.0#265829
BrewTestBot merged 4 commits into
mainfrom
bump-highs-1.13.0

Conversation

@BrewTestBot

Copy link
Copy Markdown
Contributor

Created by brew bump


Created with brew bump-formula-pr.

Details

release notes
## Code changes

The HiPO release exposed various issues flagged up via GitHub and email.

  • Fix some overflows when computing statistics of analyse phase.
  • Free memory used for normal equations, if augmented system is preferred.
  • Fix bug in supernode amalgamation.
  • Print the BLAS library used in the HiGHS header, so it is visible when using HiPO without logging.
  • Add the ability to use AMD and RCM rather than Metis
  • Use 64-bit integers
  • Fixed the time limit

Following PR #2623,
singleton column stuffing added to MIP presolve - see Gamrath et al.,
Progress in presolving for mixed integer
programming. Math. Prog. Comp. 7, 367–398 (2015).

Following user PR
#2625, callback data
structs are named, allowing them to be forward-declared data types if
a callback needs to be declared in a public header

Following PR #2626,
IPX is used by default when switching to IPM after simplex reaches
iteration limit in HighsLpRelaxation::run

Following user PR
#2628, #include <functional> has been added in highs/mip/HighsGFkSolve.h and
highs/mip/HighsNodeQueue.h to avoid compilation failures for some
compilers.

Prompted by #2633,
the constraint matrix is passed by reference (rather than value) for
each constraint when writing a LP file.

Following PR #2639,
the dominated columns reduction is speeded up for models with many
columns.

Prompted by #2643,
primal simplex is avoided when the unscaled LP problem has primal
infeasibilities but is dual feasible.

Following PR #2644,
the irreducible infeasibility system detection facility has been
refactored and is much more robust. Rather than have
HighsOption::iis_strategy be one from an enum of "strategy
scenarios" it is now a bit map

  • 0 => "light strategy", which is always performed when Highs::getIis is called.
  • 1 => From dual ray, which is currently unavailable.
  • 2 => From the whole LP (solving an elasticity LP repeatedly (fixing positive elastic variables at zero) until no more elastic variables are positive, and using the fixed elastic variables to determine a set of infeasible rows, for which there is a corresponding set of columns with nonzeros in those rows that form an infeasibility set (IS).
  • 4 => Attempt to reduce the IS to an IIS.
  • 8 => Prioritize low numbers of columns (rather than low numbers of rows) when reducing the IS.

Hence, by just setting the 2-bit, an IS is formed reliably, and at not great expense (for an LP).

Prompted by #2653,
the very rare report of spurious primal infeasibilities in the optimal
solution of MIPs with large bounds on variables or constraints is
eliminated.

Prompted by #2655,
#2766 and
#2744,
changeRowsBounds has been added to highspy.

Following PR #2671,
implications gathered by the MIP solver are applied when performing a
bound change.

Prompted by #2676,
the getIis method in highspy is now correct.

Following PR #2678, an
option mip_allow_cut_separation_at_nodes (default true) has been
added for models where time is spent on separating cuts at branching
nodes is a considerable fraction of the solution time.

Prompted by #2681,
Highs_getPresolvedColName and Highs_getPresolvedRowName have been
added to the C API.

Following PR #2695,
HPresolve::enumerateSolutions enumerates all solutions to pure
binary constraints with up to 8 variables. This is run before probing
to avoid (expensive) probing on binary variables that could be
fixed.

Prompted by #2696,
the simplex solver sets dual values of basic variables to zero,
translating this numerical error measure to nonzero residuals in the
dual equations.

Prompted by #2705, a
presolved MIP can be passed from C if it contains implied integers.

Following user PR
#2713, scalar
entries of the HighsLp class are not used after the corresponding
instance undergoes std::move in highs/mip/HighsLpRelaxation.cpp.

Prompted by #2721, examples
of using solution in Python examples have been improved.

Following user PR
#2747, save_value is
initialised wen a HighsSimplexBadBasisChangeRecord is created.

Following PR #2761,
presolve now checks if all binary variables (from a constraint) form a
clique.

Following PR #2762,
the vector is passed by reference rather than value to freeVector in
highs/ipm/hipo/auxiliary/Auxiliary.h.

Following PR #2768,
the HiPO wrapper no longer makes an unnecessary copy of the LP.

Prompted by #2769,
now initialising sense in struct Model of LP file reader

Compiler warnings have been fixed

All unguarded printf statements have been removed.

Build changes

Added Python 3.14 wheels.

Added a CMake option BUILD_OPENBLAS for Windows and Linux, when HIPO is ON and BUILD_OPENBLAS is ON, OpenBLAS is downloaded and built as a subproject. The default value is OFF.

Update rules_cuda for the bazel build.

Filereader is now in highs/ rather than extern/.

Metis, AMD and RCM are now in extern/. Metis is no longer an external dependency.

Binaries are now available. Standard HiGHS binaries are MIT-licensed and HiGHS with HiPO are Apache-licensed.

Licensing

Code not written for HiGHS is now maintained in the /extern
directory, and THIRD_PARTY_NOTICES.md contains a statement of the
licenses of all such external code, some of which are permissive
non-MIT licenses.

When HiGHS is built from code, the conditions of the non-MIT licenses
are such that the resulting binaries and executable remain MIT
licensed. However, since the interior point solver HiPO makes use of
some of this external code, we believe that the MIT license is lost
when users link to our precompiled binaries. Hence there are binaries
without HiPO (MIT license), and with HiPO (Apache 2.0 license).

We believe that this is a conservative stance, and we are taking
expert advice that may allow us to relax this distinction.

View the full release notes at https://github.com/ERGO-Code/HiGHS/releases/tag/v1.13.0.


@github-actions github-actions Bot added the bump-formula-pr PR was created using `brew bump-formula-pr` label Feb 4, 2026
@chenrui333

Copy link
Copy Markdown
Member
  ==> ./simple_sat_program
  I0204 11:44:47.233573   48005 simple_sat_program.cc:56] x = 1
  I0204 11:44:47.233628   48005 simple_sat_program.cc:57] y = 0
  I0204 11:44:47.233631   48005 simple_sat_program.cc:58] z = 0
  ==> pkg-config --cflags --libs absl_check absl_log_initialize absl_flags absl_flags_parse
  ==> /usr/bin/clang++ -std=c++17 highs_test.cc -I/opt/homebrew/Cellar/or-tools/9.15_1/include -L/opt/homebrew/Cellar/or-tools/9.15_1/lib -lortools -DOR_PROTO_DLL= -DPROTOBUF_USE_DLLS -I/opt/homebrew/Cellar/abseil/20260107.0/include -Wno-float-conversion -Wno-implicit-float-conversion -Wno-implicit-int-float-conversion -Wno-unknown-warning-option -Wno-unused-command-line-argument -DNOMINMAX -L/opt/homebrew/Cellar/abseil/20260107.0/lib -labsl_log_internal_check_op -labsl_leak_check -labsl_log_internal_conditions -labsl_log_internal_message -labsl_examine_stack -labsl_log_internal_format -labsl_log_internal_nullguard -labsl_log_internal_structured_proto -labsl_log_internal_log_sink_set -labsl_log_sink -labsl_log_entry -labsl_log_internal_proto -labsl_strerror -labsl_log_initialize -labsl_log_globals -labsl_vlog_config_internal -labsl_log_internal_fnmatch -labsl_log_internal_globals -labsl_flags_parse -labsl_flags_usage -labsl_flags_usage_internal -labsl_flags_internal -labsl_flags_marshalling -labsl_flags_reflection -labsl_flags_private_handle_accessor -labsl_flags_commandlineflag -labsl_flags_commandlineflag_internal -labsl_flags_config -labsl_flags_program_name -labsl_raw_hash_set -labsl_cord -labsl_cordz_info -labsl_cord_internal -labsl_cordz_functions -labsl_cordz_handle -labsl_crc_cord_state -labsl_crc32c -labsl_crc_internal -labsl_crc_cpu_detect -labsl_str_format_internal -labsl_hashtablez_sampler -labsl_exponential_biased -labsl_synchronization -labsl_graphcycles_internal -labsl_kernel_timeout_internal -labsl_stacktrace -labsl_borrowed_fixup_buffer -labsl_hash -labsl_city -labsl_symbolize -labsl_debugging_internal -labsl_demangle_internal -labsl_demangle_rust -labsl_decode_rust_punycode -labsl_utf8_for_code_point -labsl_malloc_internal -labsl_time -labsl_civil_time -labsl_strings -labsl_strings_internal -labsl_int128 -labsl_throw_delegate -labsl_time_zone -labsl_tracing_internal -labsl_base -labsl_raw_logging_internal -labsl_log_severity -labsl_spinlock_wait -o highs_test
  In file included from highs_test.cc:1:
  In file included from /opt/homebrew/Cellar/or-tools/9.15_1/include/ortools/linear_solver/linear_solver.h:164:
  In file included from /opt/homebrew/Cellar/or-tools/9.15_1/include/ortools/linear_solver/linear_solver.pb.h:34:
  /opt/homebrew/include/google/protobuf/map_field.h:416:11: warning: 'RepeatedPtrField' is deprecated: Use Arena::Create<RepeatedPtrField<...>>(Arena*) instead [-Wdeprecated-declarations]
          : repeated_field_(arena), prototype_(prototype) {}
            ^
  /opt/homebrew/include/google/protobuf/repeated_ptr_field.h:1035:5: note: 'RepeatedPtrField' has been explicitly marked deprecated here
    [[deprecated("Use Arena::Create<RepeatedPtrField<...>>(Arena*) instead")]]
      ^
  1 warning generated.
  ==> ./highs_test
  Running HiGHS 1.13.0 (git hash: n/a): Copyright (c) 2026 under MIT licence terms
  Error: or-tools: failed
  An exception occurred within a child process:
    BuildError: Failed executing: ./highs_test

@chenrui333 chenrui333 added CI-skip-recursive-dependents Pass --skip-recursive-dependents to brew test-bot. long build Set a long timeout for formula testing CI-no-fail-fast Continue CI tests despite failing GitHub Actions matrix builds. labels Feb 4, 2026
BrewTestBot and others added 2 commits February 4, 2026 12:44
highs: add `compatibility_version`

Signed-off-by: Rui Chen <rui@chenrui.dev>
Signed-off-by: Rui Chen <rui@chenrui.dev>
@chenrui333 chenrui333 added the ready to merge PR can be merged once CI is green label Feb 4, 2026
@github-actions

github-actions Bot commented Feb 4, 2026

Copy link
Copy Markdown
Contributor

🤖 An automated task has requested bottles to be published to this PR.

Caution

Please do not push to this PR branch before the bottle commits have been pushed, as this results in a state that is difficult to recover from. If you need to resolve a merge conflict, please use a merge commit. Do not force-push to this PR branch.

@github-actions github-actions Bot added the CI-published-bottle-commits The commits for the built bottles have been pushed to the PR branch. label Feb 4, 2026
@BrewTestBot
BrewTestBot enabled auto-merge February 4, 2026 19:07
@BrewTestBot
BrewTestBot added this pull request to the merge queue Feb 4, 2026
Merged via the queue into main with commit f8df4c9 Feb 4, 2026
22 checks passed
@BrewTestBot
BrewTestBot deleted the bump-highs-1.13.0 branch February 4, 2026 19:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bump-formula-pr PR was created using `brew bump-formula-pr` CI-no-fail-fast Continue CI tests despite failing GitHub Actions matrix builds. CI-published-bottle-commits The commits for the built bottles have been pushed to the PR branch. CI-skip-recursive-dependents Pass --skip-recursive-dependents to brew test-bot. long build Set a long timeout for formula testing ready to merge PR can be merged once CI is green

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants