Changelog: Difference between revisions

From MidasWiki
Jump to navigation Jump to search
No edit summary
(The midas documentation has moved to https://midas.triumf.ca/docs/)
Tag: Replaced
 
(15 intermediate revisions by 2 users not shown)
Line 1: Line 1:
The midas git repository uses tags to denote specific releases. Tags are of the format <code>midas-YEAR-MONTH-SUFFIX</code>, e.g. <code>midas-2019-06-b</code>. This page details the major changes in each release, and highlights how to update client code to adapt to any changes that are not backwards-compatible.
The midas documentation has moved. See [https://midas.triumf.ca/docs/develop/about/releases/ Release notes] for the new list of changes in each midas release.
 
== 2019-06 ==
 
Releases <code>midas-2019-06-a</code>, <code>midas-2019-06-b</code>.
 
Relevant elog entries - [https://midas.triumf.ca/elog/Midas/1564 1564 (midas-2019-06 with cmake and c++)] and [https://midas.triumf.ca/elog/Midas/1526 1526 (How to convert C midas frontends to C++)].
 
=== Improvements ===
 
* Migration from C to C++. '''You will have to make changes to your clients''' (see upgrade guide below).
* Ability to compile using cmake/cmake3 as well as make. To use cmake, you can either build manually with <code>mkdir build; cd build; cmake ..; make; make install</code>, or use the handy shortcut <code>make cmake3</code>. '''Note that the location where libraries and executables are built has changed''' - the OS-specific subdirectories (e.g. <code>/linux/lib</code>) has been replaced by a common <code>/lib</code> and <code>/bin</code>.
* mxml and mscb are now included as git submodules. See the "upgrade guide" instructions for how to checkout the latest version of these modules.
 
=== Bug fixes ===
 
* [https://bitbucket.org/tmidas/midas/issues/183/mhttpd-expand_env-is-broken 183 - mhttpd could write garbage to midas.log, which would break webpages that try to show messages]
* [https://bitbucket.org/tmidas/midas/issues/181/sequencer-mhttpd-race-condition-causes 181 - race condition between msequencer and mhttpd could make sequencer webpage buttons useless]
* [https://bitbucket.org/tmidas/midas/issues/171/use-of-rpc_ftcp-is-not-thread-safe 171 - make RPC calls more thread-safe]
* [https://bitbucket.org/tmidas/midas/issues/180/remove-the-static-modifier-from-the-str 180 - addition of strcomb1 which is thread-safe; strcomb will be deprecated]
* [https://bitbucket.org/tmidas/midas/issues/179/mlogger-root-output-crash-from-odb-dump 179 - don't try to send an ODB dump to mlogger's ROOT output, as it would crash mlogger]
* [https://bitbucket.org/tmidas/midas/issues/184/broken-empty-elog 184 - don't trap the user in an error loop if elog doesn't exist]
* Minor fixes and stability improvements
 
=== Known issues ===
 
* cmake/cmake3 - ZLIB support is not detected, so gzipped files cannot be written by the logger. Will be fixed in the next release, or you can update midas to a commit after August 2.
* mxml can segfault due to a double free. Will be fixed in the next release, or you can update mxml to commit f6fc49d: <code>cd mxml; git checkout f6fc49d; cd ..</code> and re-compile midas.
 
=== Upgrade guide ===
 
==== Updating midas ====
 
<nowiki>
# Grab the new code
cd $MIDASSYS
git checkout develop
git pull
git checkout midas-2019-06-b
git pull
git submodule update --init # this will checkout correct versions of mxml and mscb
 
# Tidy up the old build - be sure to delete the deprecated linux directory!
make clean
make cclean
rm -rf linux/bin
rm -rf linux/lib
rmdir linux
 
# Build the new midas
make cmake3 # or "make cmake" on ubuntu and macos</nowiki>
 
If you have a script that sets up environment variables, you should change <code>PATH</code> from <code>$MIDASSYS/linux/bin</code> to <code>$MIDASSYS/bin</code>.
 
You should then restart <code>mserver</code>, <code>mlogger</code>, <code>mhttpd</code>, and any other midas programs that you run.
 
==== Cleanup old packages that are now submodules ====
 
As mxml and mscb are included as submodules now, you can remove the external packages that were downloaded previously (assuming they aren't used by other experiments on the same machine). E.g.
 
<nowiki>rm -r $HOME/packages/mxml # new location $MIDASSYS/mxml
rm -r $HOME/packages/mscb # new location $MIDASSYS/mscb</nowiki>
 
==== Update experiment frontends ====
 
The migration from C to C++ is one of the biggest user-facing changes in midas for a long time. Unfortunately it requires manual work from experimenters to update their client code:
 
# Update your Makefile
## Update library search path for code that links against libmidas or mfe.o (<code>$MIDASSYS/linux/lib</code> becomes <code>$MIDASSYS/lib</code>)
## If you reference mxml in your Makefile, change the include path to <code>$MIDASSYS/mxml</code>
## If you explicitly have the compiler as <code>gcc</code>, change it to <code>g++</code>
# Update frontend code to use mfe.h and build as C++
## Add <code>#include "mfe.h"</code> after including <code>midas.h</code>
## Remove <code>extern C</code> brackets around mfe-related code. Ideally there should be no <code>extern C</code> brackets anywhere.
## Ensure that <code>frontend_name</code> and <code>frontend_file_name</code> are <code>const char*</code> rather than <code>char*</code>.
## If you define your own global <code>HNDLE hDB</code>, change it to <code>extern HNDLE hDB</code> to pick up the one provided by mfe.
## Ensure that <code>poll_event</code> and <code>interrupt_configure()</code> use <code>INT</code> rather than <code>INT[]</code> for the <code>source</code> argument.
## If you use <code>extern int frontend_index</code>, change it to use the <code>get_frontend_index()</code> function from mfe.h instead.
## Ensure that the last argument to <code>bk_create</code> is cast to <code>(void**)</code>
# Try to compile, and fix any more compilation errors. Examples may include:
## Duplicate or mismatched declarations of functions defined in mfe.h (fix the mismatched declarations in your code)
## <code>bool debug</code> colliding with declaration in mfe.h (suggest to rename the variable in the client)
## Return value of <code>malloc()</code> etc needs to be cast to the correct data type (e.g. <code>char* s = (char*)malloc(...)</code>)
 
An example diff of a frontend is:
 
<nowiki>
  #include "midas.h"
+ #include "mfe.h"
  #include "msystem.h"
  #include "utils1.h"
 
- #ifdef __cplusplus
- extern "C" {
- #endif
 
- char *frontend_name = FE_NAME;
+ const char *frontend_name = FE_NAME;
 
- HNDLE hDB;
+ extern HNDLE hDB;
 
- #ifdef __cplusplus
- }
- #endif
 
- extern "C" int frontend_index;
 
  INT frontend_init() {
-  printf("We are running as frontend index %d", frontend_index);
+  printf("We are running as frontend index %d", get_frontend_index());
    return SUCCESS;
  }
 
- extern "C" INT interrupt_configure(INT cmd, INT[] source, PTYPE adr) {
+ INT interrupt_configure(INT cmd, INT source, PTYPE adr) {
  return 0;
  }</nowiki>
 
 
== 2019-05 ==
 
Releases <code>midas-2019-05-cxx</code> and <code>midas-2019-05-before-cmake</code> were development tags that are not intended to be used more widely.
 
== 2019-03 ==
 
Releases <code>midas-2019-03-f</code> through <code>midas-2019-03-h</code>.
 
Relevant elog entries: [https://midas.triumf.ca/elog/Midas/1513 1513 (midas-2019-03-f)], [https://midas.triumf.ca/elog/Midas/1530 1530 (midas-2019-03-g)], [https://midas.triumf.ca/elog/Midas/1543 1543 (midas-2019-03-h)].
 
=== Improvements ===
 
To be written...
 
=== Bug fixes ===
 
To be written...
 
=== Known issues ===
 
To be written...
 
=== Upgrade guide ===
 
<nowiki>
cd $MIDASSYS
git pull
git checkout midas-2019-03-h
make clean
make</nowiki>

Latest revision as of 22:00, 30 October 2026

The midas documentation has moved. See Release notes for the new list of changes in each midas release.