- 64-bit
makefilenow supports native/default MacOS®Clangcompiler AuxInfos inCLIversion ofInChIare now identical tov1.06- Intel® oneAPI DPC++/C++ compiler can now be used with Microsoft®
Visual Studiosolutions/projects on Microsoft® Windows - "Replace memchr() check with a new function to check the element group" pull request merged
- "Faster Element Symbol Handling" pull request merged
- "replace all instances of old license text. Fixes #33" pull request merged
- "Issues with InChI I/O with /FixedH / Issue #27 and "Seqmentation fault in inchi-1.exe with /InChI2InChI validation / Issue #28 have been fixed
- Addressing
Google® oss-fuzzissues - Minor bugs fixes
64-bit and 32-bit precompiled binaries (executable, .dll/.so and ELF files) are located in the following folders:
| Microsoft® Windows | ||
Files (given in compressed .zip format)
|
Location(s) | Compiler |
inchi-1.exe
|
64-bit: INCHI-1-BIN/windows/64bit
|
Microsoft® Visual Studio C++ (MSVC)
|
32-bit: INCHI-1-BIN/windows/32bit
|
MinGW-w64/GCC
|
|
libinchi.dll+ corresponding inchi_main.exe
|
64-bit: INCHI-1-BIN/windows/64bit/dll
|
Microsoft® Visual Studio C++ (MSVC)
|
32-bit: INCHI-1-BIN/windows/32bit/dll
|
MinGW-w64/GCC
|
|
| UNIX-based OSs (except MacOS®) | ||
Files (given in compressed .gz format)
|
Location(s) | Compiler |
inchi-1 (ELF file)
|
64-bit: INCHI-1-BIN/linux/64bit/32-bit: INCHI-1-BIN/linux/32bit/
|
GCC
|
libinchi.so.1.07+ corresponding inchi_main (ELF file)
|
64-bit: INCHI-1-BIN/linux/64bit/so/32-bit: INCHI-1-BIN/linux/32bit/so/
|
GCC
|
Precompiled binaries for MacOS® (i.e.
.app executables and .dylib libraries) will be provided very soon. Until then, please note that InChI can now be compiled from source on MacOS® using native/default Clang or GCC (if installed).
Microsoft® Windows:
Solution/project files for Microsoft® Visual C++ (MSVC)/Clang/LLVM and Intel® oneAPI DPC++/C++ Compiler are provided for both command line and API versions of InChI v.1.07. The solution/project files are located in the following folders:
INCHI-1-SRC/INCHI_EXE/inchi-1/vc14(command line version)INCHI-1-SRC/INCHI_API/demos/inchi_main/vc14(API version consisting oflibinchi.dlland its corresponding executableinchi_main.exe)INCHI-1-SRC/INCHI_API/libinchi/vc14(API version consisting only oflibinchi.dll).
UNIX-based OSs/MacOS®/Microsoft® Windows:
For GCC and Clang/LLVM compilers, InChI v.1.07 can be compiled from the source using Make software. makefile/makefile32 files are provided in the following folders:
INCHI-1-SRC/INCHI_EXE/inchi-1/gcc(command line version)INCHI-1-SRC/INCHI_API/demos/inchi_main/gcc(API version consisting oflibinchi.dll/libinchi.so.1.07/libinchi.dylib.1.07and its corresponding executable/ELFinchi_main.exe/inchi_main)INCHI-1-SRC/INCHI_API/libinchi/gcc(API version consisting only oflibinchi.dll/libinchi.so.1.07/libinchi.dylib.1.07).
makefile/makefile32 files are configured to detect OSs automatically, so it is no longer needed to specify OS explicitly or run batch/bash script(s) before compiling.
GCC and Clang/LLVM compilers are also automatically detected by makefile/makefile32 files, with GCC set as default compiler.
If both GCC and Clang/LLVM compilers are installed, setting Clang/LLVM as default compiler can be done simply by changing CCN parameter from value 1 to 2 in makefile/makefile32.
Support for native/default MacOS® Clang compiler is now provided with 64-bit versions of makefile files (we would like to thank John Mayfield for his assistance with this matter).
If makefile/makefile32 is used for compiling libinchi on Microsoft® Windows, libinchi.dll is now generated instead of libinchi.so.1.07.
Additional notes:
- Intel® oneAPI DPC++/C++ compiler support for UNIX-based OSs/MacOS® will be available in
v.1.07.2. Please note that the support will not be provided for Intel® C++ Compiler Classic (icc) as it has been discontinued sinceoneAPI 2024.0 release. - Compiling from source using CMake will be available soon. In the meanwhile, you can check Gianluca Sforna's fork.
If API version (i.e. libinchi.so.1.07 and inchi_main ELF file) is compiled using Clang/LLVM on Linux OS, and libinchi.so.1.07 cannot be found by inchi_main, LD_LIBRARY_PATH should be set either temporarily or permanently before inchi_main ELF file is used.
It might be worth trying to change the value of LINKER_CWD_PATH to -Wl,-R,"",-rpath,$(LIB_DIR) (i.e. replacing = with ,) in corresponding makefile/makefile32; however, please note that during our tests, this option failed to generate libinchi.so.1.07 with Clang/LLVM on Linux.
More reliably, LD_LIBRARY_PATH can be set in several ways:
-
Temporarily:
-
by running a shell script
ldlp_fix.sh(located in/INCHI_API/bin/Linux) with either of these two commands:-
. ldlp_fix.sh -
source ldlp_fix.sh;path to
libinchi.so.1.07can be edited inldlp_fix.sh
-
-
using command line interface:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/path/to/libinchi.so.1.07
-
-
Permanently:
-
by adding the following line in
~/.bashrc:``` LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/path/to/libinchi.so.1.07" ``` -
by adding the
libinchi.so.1.07path told.so.conf, which means adding a file/etc/ld.so.conf.d/local.confcontaining just one line:``` path/to/libinchi.so.1.07 ``` and then running `sudo ldconfig`. -
Open-source utility patchelf can also be of use.
-
If a similar issue occurs on MacOS®, one of the above solutions should be applied for setting DYLD_LIBRARY_PATH and/or DYLD_FALLBACK_LIBRARY_PATH (which behave like LD_LIBRARY_PATH).
-
In order to further improve code security, bounds checking functions (see Annex K of C11 standard) can be optionally used in
InChI v.1.07. Since a number of C compilers (e.g.GNU GCC) do not support bounds checking functions, they can be installed using some of the third-party open-source libraries such as:- safec libc extension with all C11 Annex K functions -- actively maintained
- Safe C lib
- Implementation of C11 Annex K "Bounds-checking interfaces" ISO/IEC 9899:2011
The use of bounds checking functions in
InChI v.1.07can be enabled/disabled inbcf_s.h. -
If you wish to use Intel® oneAPI Threading Building Blocks (oneTBB), please follow the instructions given in header files
mode.handtbbmalloc_proxy.h. Please note that the pre-compiled binaries do not useoneTBB.
Some of the experimental/engineering/hidden options featured in InChI 1.07 which are known to be not fully functional are:
-
In command line version:
-
32-bit
Microsoft® Visual Studio C++ (MSVC) Win32compiler-specific issue with the following options:AMIAllow multiple input files (wildcards supported)AMIOutStdWrite output to stdout (in AMI mode)AMILogStdWrite log to stderr (in AMI mode)AMIPrbNoneSuppress creation of problem files (in AMI mode)
-
- In API/
.dll/.soversion:PT_22_00Account for PT_22_00 tautomerism (experimental)PT_16_00Account for PT_16_00 tautomerism (experimental)PT_06_00Account for PT_06_00 tautomerism (experimental)PT_39_00Account for PT_39_00 tautomerism (experimental)PT_13_00Account for PT_13_00 tautomerism (experimental)PT_18_00Account for PT_18_00 tautomerism (experimental)Polymers105Allow processing of polymers (experimental, legacy mode of v. 1.05)NoEditsDisable polymer CRU frame shift and foldingNPZzAllow non-polymer-related Zz atoms (pseudo element placeholders)SAtZzAllow stereo at atoms connected to Zz(default: disabled)InChI2StructTest mode: Mol/SDfile -> InChI -> Structure -> (InChI+AuxInfo) -- producesFatal Error (2)3just like inInChI v.1.06InChI2InChIConvert Convert InChI string(s) into InChI string(s) -- producesFatal Error(2)3just like inInChI v.1.06
Please refrain from using the above mentioned options as they might not function properly, or will not be recognised. Regular updates with regard to their functionality will be posted on this page.