-
Notifications
You must be signed in to change notification settings - Fork 17
Expand file tree
/
Copy pathCHANGELOG
More file actions
369 lines (344 loc) · 21.4 KB
/
CHANGELOG
File metadata and controls
369 lines (344 loc) · 21.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
v2.2.8 2026-02-18
* MCNP tools ssw2mcpl and mcpl2ssw no longer emits "Unusual MCNP flavour
detected" warnings when working with MCNP 6.3 files (GitHub issue #127).
Thanks to @yrrepy for reporting the issue and providing sample files.
v2.2.6 2026-01-06
* Increase test timeout threshold by a factor of two, to avoid timeouts in
github Windows CI tests.
* Reduce interim disk usage when calling mcpl_merge_outfiles_mpi by
removing per-thread files before attempting output file compression
(GitHub issue #119).
* Bump end-year in copyright statements to 2026.
v2.2.4 2025-10-20
* Maintenance release to rerender various deployments.
v2.2.2 2025-05-22
* Minor fixes to ensure consistent error checking in
mcpl_merge_outfiles_mpi also for nproc=1 or nproc>65535.
* Fix MSCV compilation warning related to memchr usage.
v2.2.0 2025-05-22
* Add mcpl_create_outfile_mpi and mcpl_merge_outfiles_mpi utility C
functions, to handle some of the tedium needed for applications creating
multiple MCPL files from a number of MPI processes before finally
merging to a single file.
* Add mcpl_name_helper utility C function for easily parsing user input
strings into absolute or relative path names to a corresponding MCPL
file, with or without a .mcpl or .mcpl.gz suffix.
v2.1.0 2025-05-17
* This release brings an often-requested feature to MCPL: Statistics in
the header which are automatically combined when files are merged! The
support does not require an update of the on-disk MCPL format, but is
handled as a convention for encoding the parameters as key-value pairs
in comment fields in the MCPL headers, using a syntax like
"stat:sum:<key>:<value>". The various APIs (C/Python/cmdline) have been
updated to provide interfaces for interacting with these data items, and
all supported operations (merge/repair/extract/...) have been updated to
handle such entries appropriately. For a more complete introduction of
the new feature, please refer to the documentation at the
https://mctools.github.io/mcpl/format_statsum/ page. This fixes github
issues #6 and #82.
* The ssw2mcpl command now uses the new stat:sum feature to encode the
absolute value of the ssw np1 field into a "stat:sum:ssw_np1:<value>"
entry.
* Add new mcpl_set_print_handler function in the C API which can be used
to handle printouts from the MCPL library in a different manner than
simply putting them onto stdout via a call to printf. One use-case for
this would be for Python code using the MCPL C library (perhaps via the
ctypes module), which can now use the new feature to redirect all
printouts from the MCPL C library into the Python stdout streams.
* Add support for compiled C code in python tests, allowing C code in
tests/modules/lib_xxx/*.c to be accessed in Python test scripts in
tests/scripts.
* Trying to build on unsupported 32bit platforms now fails with a clear
CMake message, rather than with a static assert later (github issue
#88).
v2.0.0 2025-04-24
* After more than 200 commits affecting almost 300 files, this milestone
release brings new supported user platforms, new packaging and
deployment, and a huge restructuring of the environment in which MCPL is
developed and tested.
* One highly visible feature is that MCPL wheels on PyPI now provide
full-fledged installations with all features previously only available
via Conda or custom builds. Thus, `pip install mcpl` is now an
alternative to `conda install -c conda-forge mcpl` for getting all the
features.
* Another, and perhaps the biggest, user-visible feature is that MCPL now
also supports usage on Windows! This support is NOT considered
experimental, and Windows users can now install the `mcpl` package via
tools like `pip` and `conda` and expect the same features on both the
command-line and in the Python and C APIs as Unix users have had in the
past. Of course, there might be bugs or issues to iron out, so please
help us test out the new release on Windows and file issues at
https://github.com/mctools/mcpl/issues as appropriate!
* The website at https://mctools.github.io/mcpl/ has been fully updated
for the new release. Also note, that we have enabled the discussion
forum at https://github.com/mctools/mcpl/discussions, so feel free to
use it for questions or sharing anything with the MCPL community.
* Another, less exciting but still note-worthy, change is that MCPL code
is now released under the highly permissible and OSI approved Apache
2.0 license (http://www.apache.org/licenses/LICENSE-2.0). This change in
licensing was decided since the previous license (CC0) seems to have
fallen out of favour in the general open source community. Of course,
the license change was agreed to by all contributors, and technically it
was already applied in the first release candidate for release 2.0.0,
namely release 1.9.80.
* The MCPL-Geant4 hooks are moved out of the mcpl repository and into
https://github.com/mctools/mcpl-geant4.
* In order to keep the `mcpl` package more lean, tools like `ssw2mcpl`,
`mcpl2ssw`, `phits2mcpl`, and `mcpl2phits` have been moved to a separate
package named `mcpl-extra`, which users need to install with `pip` or
`conda` if they still need access to them.
* Keeping in line with general trends at github, the default branch of the
mcpl repository is named main rather than master, from this point
on. For a little while we will try to keep the master branch alive, in
case of any hardwired usage of the branch name "master" somewhere, but
this will not be the case for long. This change does not, however,
change the fact that we will in general try to keep the default branch
(now: main), synchronised with the latest release (apart possibly from
minor documentation and CI fixes), and keep the "develop" branch as the
main branch to target with pull requests between releases. NOTE: Any
local clones of the mcpl code repository should be updated to reflect
this change. If there is no local interesting content in the clone, one
option is to remove the local clone and get a fresh one from
GitHub. Otherwise, GitHub advices the following four commands to
"repair" your local clones (experts only):
git branch -m master main
git fetch origin
git branch -u origin/main main
git remote set-head origin -a
* The rest of this changelog goes through more detailed changes.
* Add a few utility functions for cross-platform reading of files in
mcpl.h. This is meant to simplify code in custom mcpl-related utilities,
and handles issues like gzipped files or filenames with unicode chars on
Windows.
* Add new mcpl_dump_particles function in mcpl.h, for filtered printing of
particles in a file.
* Completely redesigning package layouts.
* Removing "fat" installation options.
* Proper consistent support for files > 2GB, even on Windows and with
gzipped files.
* MCPL will no longer be available for building without zlib support, and
going forward all MCPL builds will be able to produce and read gzipped
MCPL files. Accordingly, the MCPL_ENABLE_ZLIB flag will now only have
the options: USEPREINSTALLED, FETCH and DEFAULT. The DEFAULT value will
in general imply USEPREINSTALLED, except on WINDOWS where it will imply
FETCH. Thus, the default is to fetch and embed zlib into the binaries in
Windows PyPI wheels, where zlib is otherwise unavailable. On
conda-forge, zlib is available also on Windows, and the packages will
always depend dynamically on zlib there.
* Support compilation with the MSVC compiler.
* Support GCC 14.
* Support the Intel One API compiler.
* Completely drop support for Python2.
* Many obsolete CMake options were changed or simply removed.
* Fix bug when files were not closed properly when merging empty files.
* When merging files in place, it is now an error if any of the files
being merged are repeated. This used to be merely a WARNING, but in
order to get consistent behaviour on all platforms, this now becomes an
error.
* Fix potential (but very unlikely) bug in
mcpl_transfer_last_read_particle.
* CMake targets MCPL::MCPL and MCPL::mcpl are now both valid aliases for
the MCPL library target.
* Fix bug where MCPL->MCNP5 conversion was encoding the particle type in
an incorrect manner.
* Renamed READMEs and INSTALL files to have .md suffix, and removed the
FILES file since it was annoying to maintain.
v1.9.81 2025-04-19
* Release candidate number 2 for release 2.0.0 (detailed changelog to be
added only for release 2.0.0).
v1.9.80 2025-04-14
* Release candidate number 1 for release 2.0.0 (detailed changelog to be
added only for release 2.0.0).
* Change license to the Apache 2.0 license. This license change was
agreed to by all contributors.
v1.6.2 2023-06-06
* Work again with latest numpy by removing usage of deprecated numpy.float
and numpy.int aliases (Thanks Milan Klausz and Jose Robledo, see also
github issue #72).
v1.6.1 2022-12-08
* Fixed mcplexample_pyread so it is able to work without the user setting
PYTHONPATH (this is still not very robust as it for now assumes that the
user did not modify the default installation location).
* Attempt to improve MCPL_ENABLE_ZLIB=FETCH mode by applying correct
private compilation definitions.
v1.6.0 2022-11-11
* Updated all MCPL CMake options to have named prefixed with MCPL_ and use
a more consistent naming scheme (mctools/mcpl#67). For example
BUILD_EXAMPLES is now instead MCPL_ENABLE_EXAMPLES. See the file
cmake/modules/mcpl_options.cmake for details.
* The default behaviour was until now to try to locate ZLIB and let the
configuration fail if not succesful, unless the old option
BUILD_WITHZLIB was explicitly set to OFF. The new option
MCPL_ENABLE_ZLIB is more flexible and supports one of several values:
IFAVAILABLE, FETCH, USEPREINSTALLED, ALWAYS, OFF, or NEVER. The default
value of IFAVAILABLE will try to locate ZLIB, but will simply disable
ZLIB support if unsuccesful. The aliased options OFF and NEVER are
obviously simply disabling ZLIB support irrespective of presence on the
system. The option ALWAYS will attempt to find ZLIB on the system, and
if it fails it will instead fetch the zlib sources from the official
zlib location at github, and build the appropriate capabilities right
into the MCPL binaries. The option, USEPREINSTALLED is actually like the
old default behaviour: look for ZLIB on the system and fail if it it is
not available. Finally, the option FETCH will always fetch sources
online, ignoring any ZLIB already present on the system.
* Add (hidden) option MCPL_ENABLE_CPACK. If set, a few CPACK-related
variables will be set and an "include(CPack)" statement is triggered
just after the "project(..)" statement (mctools/mcpl#68).
* We now newer fiddle with CMAKE_BUILD_TYPE if a multi-cfg generator is
detected.
* Add (hidden) option MCPL_DISABLE_CXX.. If set, C++ support is not
requested from CMake, potentially removing an unnecessary
dependency. This option should obviously not be used with
MCPL_ENABLE_GEANT4=ON.
v1.5.1 2022-11-07
* Allow MCPL_PYPATH and MCPL_CMAKEDIR to be modified by users.
* Avoid CMake warnings when setting MCPL_NOTOUCH_CMAKE_BUILD_TYPE.
* Rename CMake target "common" to "mcpl_common" to avoid clashes when
project is build as a subproject (mctools/mcpl#65).
v1.5.0 2022-10-05
* Add mcpl-config script which can be queried for details about a given
installation, or even used to setup the user environment by typing
"eval $(./path/to/mcpl/installation/bin/mcpl-config --setup)" in a
shell.
* Modify location of CMake config files provided by an MCPL installation,
to hopefully make it easier for downstream projects to locate an existing
MCPL installation (more details on github issue #58).
* Modify manner in which Geant4 bindings must be activated in downstream
CMake code. Previously they were enabled via a dedicated
"find_package(G4MCPL)" call, but now they are instead provided as an
optional COMPONENT when requesting the MCPL package:
"find_package(MCPL COMPONENTS GEANT4BINDINGS )". The Geant4 bindings
will not be enabled unless this component is explicitly requested.
v1.4.0 2022-08-16
* Major update to CMake code, which first and foremost makes it possible
for downstream CMake-based projects to use find_package( MCPL ) and
through that get access to variables MCPL-related variables and build
targets (i.e. the MCPL::mcpl target for projects needing to include
mcpl.h and link against the compiled mcpl library). This is done in
response to a request from Paul Romano (github issue #58).
* The new minimum CMake version required is 3.10. Users having issues with
this or other of the new CMake-related changes are recommended to stick
with release 1.3.2 for now (and open issues in the tracker at
https://github.com/mctools/mcpl/issues in case the problem is suspected
to be on the MCPL side of things).
* Now using the GNUInstallDirs module to determine locations of files in
the installation. This is considered best practice, and also provides
a fine-grained control to users who might need it.
* Changed the default to NOT build and install the examples and Geant4
hooks. These can still be enabled explicitly as needed of course with
-DBUILD_EXAMPLES=ON and/or -DBUILD_WITHG4=ON.
* Now attempting to use RPATH's in mcpltool and other installed examples
(to potentially help users avoid messing with LD_LIBRARY_PATH to run
commands such as mcpltool). To prevent this, set -DMODIFY_RPATH=OFF.
* All shebangs (#!/usr/bin/env python3) in Python scripts now refer to
python3 rather than merely python (github issue #55). Users having
issues with this due to being on very old platforms are recommended to
stick with release 1.3.2 for now (and open issues in the tracker at
https://github.com/mctools/mcpl/issues in case the problem is suspected
to not be related to having an ancient platform).
* Replaced a strncpy call in mcpl.c with memcpy, to avoid a compilation
warning under some conditions. Beyond fixing a potential compilation
warning, there should be no changes to functionality.
v1.3.2 2020-02-09
* Fix time conversion bug in phits2mcpl and mcpl2phits, where ms<->ns
factors had been mistakenly inverted (github issue #53). Thanks to
Douglas Di Julio (ESS) for reporting.
* Reorder link flags in documentation and "fat" Makefile to be correctly
placed after the compilation objects. This fixes modern GCC compilation
using as-needed flag, which is the default on Ubuntu (github issue #51).
v1.3.1 2019-06-29
* Fix length of all data arrays in Python API in the last particle block
in all files, making pymcpltool --stats work again for files with more
than blocklength particles (github issue #49).
* Python API accepts pathlib.Path objects introduced in Python 3.4 (github
issue #50).
v1.3.0 2019-06-21
* Introduce support for PHITS. This is done via mcpl2phits and phits2mcpl
command line tools for conversions to and from PHITS binary dump
files. Thanks to Douglas Di Julio (ESS) for help in adding this new feature.
* Introduce new --forcemerge option for the mcpltool and an associated
mcpl_forcemerge_files function in the C API. This makes it possible to
merge particles from otherwise incompatible files, at the heavy price of
discarding descriptive metadata like comments and blobs. This is
intended as a last-resort solution (github issue #43).
* Add new public function mcpl_transfer_last_read_particle, which makes it
possible to perform non-lossy filtering or merging of files using custom
C code (github issue #18).
* Fix pymcpltool --stats sum(weights) bug with python3 (github issue #46)
* Handle unexpected records at the end of SSW headers gracefully (github
issue #45).
v1.2.3 2018-09-26
* ssw2mcpl: Support MCNP 6.2.
v1.2.2 2018-03-07
* mcpl.py: Fix issues in MCPLParticleBlock.position() and
MCPLParticleBlock.polarisation() methods which could result in
exceptions or warnings being emitted for certain input files or for
certain versions of python and numpy.
v1.2.1 2018-01-23
* Correct _POSIX_C_SOURCE to address FreeBSD compilation (github issue #33).
* mcpl.py: Work around issues in numpy v1.14 to fix MCPLParticleBlock.position() and
MCPLParticleBlock.polarisation() methods (github issue #34).
* CMakeLists.txt: Always use absolute rpath (for OSX).
* Fix gcc7 compilation.
v1.2.0 2017-07-02
* Add pure python module for MCPL access, stat collection and
plotting. Also add a pure-python mcpltool which provides readonly access
to MCPL files, and includes statistics and plotting capabilities. Supports
both python2 and python3.
* Add --text option to mcpltool/pymcpltool, for producing column-based
ascii files from MCPL particle data.
* mcpl_repair now detects and treats truncated files properly.
* Particle listings no longer show weight columns when file has a
universal weight.
* Fixed casing of method names in comments in G4MCPLGenerator and G4MCPLWriter.
* Sanity check that endianness field in files is indeed "L" or "B".
* Minor code fixes caught in static analysis with clang analyze.
* Minor fixes in textual output.
v1.1.0 2017-03-29
* Introduced new and more precise unit vector packing scheme. Consequently,
MCPL_FORMATVERSION was increased from 2 to 3. Files in the old format
remain fully functional.
* Merging: Add mcpl_merge_files function which merges any number of
existing files into a new one and rename mcpl_merge to
mcpl_merge_inplace (the old obsolete form still works for now, but prints
a warning when used). The mcpltool --merge interface is updated
correspondingly. Gzipped files can now be merged directly. Warn users if
merging a file with itself and error for safety if output of extractions
or merges already exists.
* MCNP SSW support: Format decoding now relies purely on layout of fortran
records, allowing more files to be read, even from some custom
compilations of MCNP. Also replaced a static read buffer with a dynamic
one, fixing errors experienced by some users and support MCNP5 for the
first time. File load printouts are improved slightly and all warnings
about untested code paths now include a request for feedback.
* ssw2mcpl: Embed more useful meta-data in MCPL header.
* mcpl2ssw: Reference SSW file can now be gzipped.
* Add option for universal weights in MCPL files, to save 4 or 8 bytes
per particle in output from unweighted simulations.
* Add MCPL_VERSION_STR macro to mcpl.h for convenience.
* Bugfix: mcpl_particle_t userflags field changed from int32_t to uint32_t.
* Obsolete *_rc versions of gzipping functions (old obsolete forms still
work for now, but print warnings when used).
* Fix spelling of mcpl_hdr_universel_pdgcode (old obsolete form still
works for now, but prints a warning when used).
* G4MCPLWriter: Fix capitalisation of StorePreStep/StorePostStep.
* Build system and documentation: Add INSTALL file with more details
concerning build and integration, and add a simple makefile for "fat"
tools. Also add src_fat/LICENSE.zlib with the zlib license and reference
it where relevant, and include the full text of the zlib license towards
the top of all autogenerated "fat" files. Smaller updates to README and
related files.
* Simplify internal MCPL particle I/O by using buffer.
* Fix rare issue where mcpltool --extract could distort unit vectors.
* Guard against overflow in particle position during file navigation
* Add a few more platform compatibility checks.
* Fix flag name in CMakeLists.txt affecting zlib support in SSW converters.
* Workaround incomplete C99 support in version 12 of intels C compiler.
* Add small sample MCPL file (example/example.mcpl) to release.
v1.0.0 2016-09-07
* Identical to 0.99.1.
v0.99.1 2016-09-04
* Release candidate for MCPL 1.0.0
* Add --extract flag for the mcpltool.
v0.7.0 2016-08-25
* First github based public release of MCPL.