Skip to content

Commit

Permalink
Merge branch 'release/2.0.9'
Browse files Browse the repository at this point in the history
  • Loading branch information
guidotack committed Dec 6, 2015
2 parents 34fb555 + 4e42a12 commit 23a91af
Show file tree
Hide file tree
Showing 50 changed files with 6,387 additions and 391 deletions.
46 changes: 46 additions & 0 deletions CHANGES.txt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,52 @@
All bug numbers refer to the issue tracker at
https://github.com/MiniZinc/libminizinc/issues

Version 2.0.9
=============

Bug fixes:

- Need to take return type into account when copying functions to output
model. Fixes #55.
- Evaluate calls that result in arrays using eval_arraylit. Fixes #57.
- Move inverse function to its own library file, so that it remains available
when a solver provides an alternative for the inverse predicate.
- Optimisation phase now recursively checks constraints when elements in an
array become fixed.
- Fix CMakeLists file to work for paths that contain spaces.
- Distinguish between infix operators and regular functions in the generated
html documentation. Fixes #61.
- Made parser more robust against incorrect code.
- Fix increment/decrement operators for IntVals and make all operations throw
correct overflow exceptions.
- Fix automatic type coercion for variables declared in let expressions.
- Fix a crash when printing some error messages.
- Fix compute_div_bounds builtin to return correct result for a division by
zero.
- Fix optimisation of Boolean constraints to use pointer equality instead of
structural equality (same expression can occur multiple times in the
FlatZinc).
- Only optimise constraints that have not been removed yet.
- Fix declaration of functional version of bin_packing_load. Fixes #64.
- Set type of arrays returned from polymorphic functions. Fixes #65.
- Fix parsing of quoted unary operator calls.
- Only compute set functions when bounds are valid. Fixes #66.
- Compute proper bounds for if-then-else expressions.
- Report error when no reified version of a constraint is available. Fixes #67.
- Fix type checking of annotations on binary operators.
- Keep annotations when rewriting linear constraints and remove is_defined_var
annotations from fixed variables. Fixes #69.

Changes:

- Integer, Boolean and float literals are now cached to achieve better memory
performance for some models.
- Improve performance of parsing integer literals.
- Improve handling of clause constraints.
- Add source files of MiniZinc specification to the repository.
- Limit maximum array size to enable better error messages.
- Add implied_constraint predicate as a synonym for redundant_constraint.

Version 2.0.8
=============

Expand Down
68 changes: 42 additions & 26 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ project (libminizinc CXX)
# The version number.
set (libminizinc_VERSION_MAJOR 2)
set (libminizinc_VERSION_MINOR 0)
set (libminizinc_VERSION_PATCH 8)
set (libminizinc_VERSION_PATCH 9)

if (ADDITIONAL_DATE_STRING)
set (libminizinc_VERSION_PATCH "${libminizinc_VERSION_PATCH}.${ADDITIONAL_DATE_STRING}")
Expand Down Expand Up @@ -115,17 +115,23 @@ SET (CMAKE_REQUIRED_DEFINITIONS "${SAFE_CMAKE_REQUIRED_DEFINITIONS}")

file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/minizinc)
file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/doc/html)
file(MAKE_DIRECTORY ${PROJECT_BINARY_DIR}/doc/pdf)

# configure a header file to pass some of the CMake settings
# to the source code
configure_file (
"${PROJECT_SOURCE_DIR}/include/minizinc/config.hh.in"
"${PROJECT_BINARY_DIR}/minizinc/config.hh"
${PROJECT_SOURCE_DIR}/include/minizinc/config.hh.in
${PROJECT_BINARY_DIR}/minizinc/config.hh
)

include_directories("${PROJECT_BINARY_DIR}")
configure_file (
${PROJECT_SOURCE_DIR}/doc/spec/version.tex.in
${PROJECT_BINARY_DIR}/doc/pdf/version.tex
)

include_directories("${PROJECT_SOURCE_DIR}/include")
include_directories(${PROJECT_BINARY_DIR})

include_directories(${PROJECT_SOURCE_DIR}/include)

add_custom_target(MZNParser echo "Creating parser")

Expand All @@ -141,38 +147,38 @@ endmacro(MD5)
find_program(FLEX_EXEC flex)
if(FLEX_EXEC)
add_custom_command(
OUTPUT "${PROJECT_BINARY_DIR}/lexer.yy.cpp"
DEPENDS "${PROJECT_SOURCE_DIR}/lib/lexer.lxx"
COMMAND "${FLEX_EXEC}" -L -o"${PROJECT_BINARY_DIR}/lexer.yy.cpp" "${PROJECT_SOURCE_DIR}/lib/lexer.lxx"
OUTPUT ${PROJECT_BINARY_DIR}/lexer.yy.cpp
DEPENDS ${PROJECT_SOURCE_DIR}/lib/lexer.lxx
COMMAND ${FLEX_EXEC} -L -o${PROJECT_BINARY_DIR}/lexer.yy.cpp ${PROJECT_SOURCE_DIR}/lib/lexer.lxx
)
set_source_files_properties("${PROJECT_BINARY_DIR}/lexer.yy.cpp" GENERATED)
set(lexer_cpp "${PROJECT_BINARY_DIR}/lexer.yy.cpp")
set_source_files_properties(${PROJECT_BINARY_DIR}/lexer.yy.cpp GENERATED)
set(lexer_cpp ${PROJECT_BINARY_DIR}/lexer.yy.cpp)
else(FLEX_EXEC)
MD5("${PROJECT_SOURCE_DIR}/lib/lexer.lxx" lexer_lxx_md5)
MD5(${PROJECT_SOURCE_DIR}/lib/lexer.lxx lexer_lxx_md5)
if(NOT "${lexer_lxx_md5}" STREQUAL "${lexer_lxx_md5_cached}")
message(FATAL_ERROR "The file lexer.lxx has been modified but flex cannot be run.")
endif()
set(lexer_cpp "${PROJECT_SOURCE_DIR}/lib/cached/lexer.yy.cpp")
set(lexer_cpp ${PROJECT_SOURCE_DIR}/lib/cached/lexer.yy.cpp)
endif(FLEX_EXEC)

find_program(BISON_EXEC bison)
if(BISON_EXEC)
add_custom_command(
OUTPUT "${PROJECT_BINARY_DIR}/parser.tab.cpp" "${PROJECT_BINARY_DIR}/minizinc/parser.tab.hh"
DEPENDS "${lexer_cpp}" "${PROJECT_SOURCE_DIR}/lib/parser.yxx"
COMMAND "${BISON_EXEC}" -l -o "${PROJECT_BINARY_DIR}/parser.tab.cpp" --defines="${PROJECT_BINARY_DIR}/minizinc/parser.tab.hh" "${PROJECT_SOURCE_DIR}/lib/parser.yxx"
OUTPUT ${PROJECT_BINARY_DIR}/parser.tab.cpp ${PROJECT_BINARY_DIR}/minizinc/parser.tab.hh
DEPENDS ${lexer_cpp} ${PROJECT_SOURCE_DIR}/lib/parser.yxx
COMMAND "${BISON_EXEC}" -l -o ${PROJECT_BINARY_DIR}/parser.tab.cpp --defines=${PROJECT_BINARY_DIR}/minizinc/parser.tab.hh ${PROJECT_SOURCE_DIR}/lib/parser.yxx
)
set_source_files_properties("${PROJECT_BINARY_DIR}/parser.tab.cpp" GENERATED)
set(parser_cpp "${PROJECT_BINARY_DIR}/parser.tab.cpp")
set(parser_hh "${PROJECT_BINARY_DIR}/minizinc/parser.tab.hh")
set_source_files_properties(${PROJECT_BINARY_DIR}/parser.tab.cpp GENERATED)
set(parser_cpp ${PROJECT_BINARY_DIR}/parser.tab.cpp)
set(parser_hh ${PROJECT_BINARY_DIR}/minizinc/parser.tab.hh)
else(BISON_EXEC)
MD5("${PROJECT_SOURCE_DIR}/lib/parser.yxx" parser_yxx_md5)
MD5(${PROJECT_SOURCE_DIR}/lib/parser.yxx parser_yxx_md5)
if(NOT "${parser_yxx_md5}" STREQUAL "${parser_yxx_md5_cached}")
message(FATAL_ERROR "The file parser.yxx has been modified but bison cannot be run.")
endif()
include_directories(${PROJECT_SOURCE_DIR}/lib/cached)
set(parser_cpp "${PROJECT_SOURCE_DIR}/lib/cached/parser.tab.cpp")
set(parser_hh "${PROJECT_SOURCE_DIR}/lib/cached/minizinc/parser.tab.hh")
set(parser_cpp ${PROJECT_SOURCE_DIR}/lib/cached/parser.tab.cpp)
set(parser_hh ${PROJECT_SOURCE_DIR}/lib/cached/minizinc/parser.tab.hh)
endif(BISON_EXEC)


Expand All @@ -187,9 +193,9 @@ lib/eval_par.cpp
lib/file_utils.cpp
lib/gc.cpp
lib/htmlprinter.cpp
"${lexer_cpp}"
${lexer_cpp}
lib/model.cpp
"${parser_cpp}"
${parser_cpp}
lib/prettyprinter.cpp
lib/typecheck.cpp
lib/flatten.cpp
Expand Down Expand Up @@ -227,7 +233,7 @@ include/minizinc/typecheck.hh
include/minizinc/values.hh
include/minizinc/stl_map_set.hh
include/minizinc/thirdparty/SafeInt3.hpp
"${parser_hh}"
${parser_hh}
)

# add the executable
Expand All @@ -251,7 +257,7 @@ option (BUILD_HTML_DOCUMENTATION "Build HTML documentation for the MiniZinc libr
if (BUILD_HTML_DOCUMENTATION)
add_custom_target(doc ALL
DEPENDS "mzn2doc"
WORKING_DIRECTORY "${PROJECT_SOURCE_DIR}"
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}
COMMAND mzn2doc --toplevel-groups 2
--include-stdlib
--html-header ${PROJECT_SOURCE_DIR}/doc/html/header.html
Expand All @@ -267,6 +273,16 @@ if (BUILD_HTML_DOCUMENTATION)
INSTALL(DIRECTORY ${PROJECT_BINARY_DIR}/doc/html DESTINATION doc)
endif()

option (BUILD_PDF_DOCUMENTATION "Build PDF documentation for the MiniZinc language" OFF)

if (BUILD_PDF_DOCUMENTATION)
add_custom_target(doc_spec ALL
DEPENDS doc/spec/common-spec.tex doc/spec/minizinc-spec.tex
WORKING_DIRECTORY ${PROJECT_SOURCE_DIR}/doc/spec
COMMAND latexmk -pdf -output-directory=${PROJECT_BINARY_DIR}/doc/pdf minizinc-spec
)
endif()

option (BUILD_STATIC_EXECUTABLE "Build statically linked executables" OFF)

if (BUILD_STATIC_EXECUTABLE)
Expand All @@ -283,7 +299,7 @@ INSTALL(FILES README.txt INSTALL.txt LICENSE.txt DESTINATION doc/..)
INSTALL(DIRECTORY doc/pdf DESTINATION doc)
INSTALL(DIRECTORY share/examples DESTINATION share)
INSTALL(DIRECTORY lib/cached DESTINATION lib PATTERN md5_cached.cmake EXCLUDE)
INSTALL(FILES "${parser_hh}" DESTINATION include/minizinc)
INSTALL(FILES ${parser_hh} DESTINATION include/minizinc)

SET(CPACK_PACKAGE_VERSION_MAJOR ${libminizinc_VERSION_MAJOR})
SET(CPACK_PACKAGE_VERSION_MINOR ${libminizinc_VERSION_MINOR})
Expand Down
Loading

0 comments on commit 23a91af

Please sign in to comment.