From e00f570fad20dbb91bfd1419c677566cb2c677aa Mon Sep 17 00:00:00 2001 From: ashuang Date: Thu, 17 Jul 2014 06:48:00 +0000 Subject: [PATCH] Release 1.1.0 git-svn-id: https://lcm.googlecode.com/svn/trunk@805 989093bb-e83e-0410-a25a-9184cbcad8d0 --- ChangeLog | 391 ++++++++++++++++++++++++++++++++++++++++++++ NEWS | 52 +++++- configure.in | 8 +- lcm-python/setup.py | 2 +- lcm/lcm.h | 2 +- 5 files changed, 448 insertions(+), 7 deletions(-) diff --git a/ChangeLog b/ChangeLog index f334428be..a77b40e0c 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,394 @@ +2014-07-16 tprk77@gmail.com + + * [r803] docs/content/lua-api.dox, docs/content/tutorial-lua.dox, + lcm-lua/lualcm_lcm.c: Added handle_timeout to the Lua binding. + Deprecated timedhandle. Also updated the doc. + +2014-07-11 ashuang + + * [r802] lcmgen/emit_python.c: lcm-gen: - python sub-types are + initialized to valid instances instead of None. + + e.g., for the following types: struct inner_t { int32_t value; } + struct outer_t { inner_t data; } + + the generated .py for outer_t will have: class outer_t(object): + def __init__(self): self.data = inner_t() + + instead of: class outer_t(object): def __init__(self): self.data + = None + +2014-07-09 ashuang + + * [r801] lcm/eventlog.c, lcm/eventlog.h, test/c, test/c/Makefile, + test/c/eventlog_test.cpp: robustify eventlog against + corrupt/invalid data files. + * [r800] lcmgen/emit_cpp.c, lcmgen/tokenize.c: windows bugfixes + * [r799] lcm/lcm.vcproj, lcm/lcm_memq.c: fix windows build + +2014-07-07 ashuang + + * [r797] lcm/lcm_file.c, lcm/lcm_mpudpm.c, lcm/lcm_udpm.c: udpm, + mpudpm ensure receive thread is running before returning from + lcm_get_fileno() use DBG_LCM instead of DBG_ERROR + * [r796] lcm/lcm_file.c, test/Makefile, test/cpp, + test/cpp/memq_test.cpp, test/python/lcm_file_test.py, + test/run_tests.py: misc bugfixes. restore mode=r in C file:// + provider add missing file test/cpp/memq_test.cpp fix + test/python/lcm_file_test.py - no more rw mode + * [r795] lcm/eventlog.c, lcm/eventlog.h, lcm/lcm_file.c: revert + r757. selective revert r778 for lcm/eventlog.c + + This reverts file:// rw support + * [r794] lcm-logger/lcm_logger.c, lcm/lcm_file.c, lcmgen/emit_c.c, + liblcm-test/lcm-sink.c: Start reverting file:// rw changes. + revert r785, r782 + * [r793] lcm-python/pylcm.c, lcm/lcm-cpp-impl.hpp, lcm/lcm-cpp.hpp, + lcm/lcm.c, lcm/lcm.h, test/c/memq_test.cpp, test/cpp/Makefile, + test/python/lcm_memq_test.py: C: Add lcm_handle_timeout() C++: + Add lcm::LCM::handleTimeout() Python: Add + lcm.LCM.handle_timeout() + +2014-07-01 ashuang + + * [r792] ., lcm-java/Makefile.am, lcm-java/lcm/lcm/LCM.java, + lcm-java/lcm/lcm/MemqProvider.java, lcm/Makefile.am, lcm/lcm.c, + lcm/lcm.h, lcm/lcm_memq.c, test, test/Makefile, test/c, + test/c/Makefile, test/c/memq_test.cpp, test/gtest, + test/gtest/LICENSE, test/gtest/Makefile, test/gtest/README, + test/gtest/include, test/gtest/include/gtest, + test/gtest/include/gtest/gtest-death-test.h, + test/gtest/include/gtest/gtest-message.h, + test/gtest/include/gtest/gtest-param-test.h, + test/gtest/include/gtest/gtest-param-test.h.pump, + test/gtest/include/gtest/gtest-printers.h, + test/gtest/include/gtest/gtest-spi.h, + test/gtest/include/gtest/gtest-test-part.h, + test/gtest/include/gtest/gtest-typed-test.h, + test/gtest/include/gtest/gtest.h, + test/gtest/include/gtest/gtest_pred_impl.h, + test/gtest/include/gtest/gtest_prod.h, + test/gtest/include/gtest/internal, + test/gtest/include/gtest/internal/gtest-death-test-internal.h, + test/gtest/include/gtest/internal/gtest-filepath.h, + test/gtest/include/gtest/internal/gtest-internal.h, + test/gtest/include/gtest/internal/gtest-linked_ptr.h, + test/gtest/include/gtest/internal/gtest-param-util-generated.h, + test/gtest/include/gtest/internal/gtest-param-util-generated.h.pump, + test/gtest/include/gtest/internal/gtest-param-util.h, + test/gtest/include/gtest/internal/gtest-port.h, + test/gtest/include/gtest/internal/gtest-string.h, + test/gtest/include/gtest/internal/gtest-tuple.h, + test/gtest/include/gtest/internal/gtest-tuple.h.pump, + test/gtest/include/gtest/internal/gtest-type-util.h, + test/gtest/include/gtest/internal/gtest-type-util.h.pump, + test/gtest/src, test/gtest/src/gtest-all.cc, + test/gtest/src/gtest-death-test.cc, + test/gtest/src/gtest-filepath.cc, + test/gtest/src/gtest-internal-inl.h, + test/gtest/src/gtest-port.cc, test/gtest/src/gtest-printers.cc, + test/gtest/src/gtest-test-part.cc, + test/gtest/src/gtest-typed-test.cc, test/gtest/src/gtest.cc, + test/gtest/src/gtest_main.cc, test/java, test/python: reintegrate + memq branch. Add memq:// provider to C, Java backends (C also + provides for C++, Python, Lua) + +2014-06-27 ashuang + + * [r788] lcm/lcm_mpudpm.c, lcm/lcm_udpm.c: mask out signals in + receive thread + +2014-06-25 ashuang + + * [r786] lcmgen/emit_python.c, test/c, test/cpp: emit_python: - + emit arrays of bytes initializer as empty string, not empty list + +2014-06-19 ashuang + + * [r785] lcm-logger/lcm_logger.c, lcm/lcm_file.c, lcmgen/emit_c.c, + liblcm-test/lcm-sink.c: fix gcc compile warnings + * [r784] lcmgen/emit_c.c: lcmgen: C emit_hash_recursive function + explicit cast result to int64_t closes #81 + +2014-06-18 ashuang + + * [r783] lcm-logger/lcm_logger.c: revert r755, which introduced + regressions in lcm-logger + * [r782] lcm/lcm_file.c: Apply fix to lcm_file.c from riroberts + +2014-06-15 ashuang + + * [r781] lcm-logger/lcm-logger.vcproj, + lcm-logger/lcm-logplayer.vcproj, lcm/lcm.vcproj, + lcm/lcm_mpudpm.c, lcmgen/lcm-gen.vcproj, + liblcm-test/lcm-example.vcproj, liblcm-test/lcm-logfilter.vcproj, + liblcm-test/lcm-sink.vcproj, liblcm-test/lcm-source.vcproj, + liblcm-test/lcm-tester.vcproj: windows build fixes + +2014-05-05 mrwalter@gmail.com + + * [r780] docs/content/multicast-setup.dox: updated multicast setup + for osx to include settings for outgoing datagram sizes, which + seems necessary as of r768 + +2014-04-27 abachrach@gmail.com + + * [r779] lcm/lcm-cpp-impl.hpp, lcm/lcm-cpp.hpp: Fix the c++ + bindings so that the raw buffer publish() method take a const + pointer + * [r778] lcm/eventlog.c, lcm/lcm_mpudpm.c, lcm/udpm_util.h, + lcmgen/emit_c.c: Make some fixes so that LCM builds on windows. + + The visual studio project files still need to be updated to + handle the new and renamed files. + +2014-04-21 ashuang + + * [r777] lcmgen/lcmgen.c, lcmgen/main.c: lcmgen: fail if duplicate + types are detected in input. + +2014-04-10 ashuang + + * [r776] lcmgen/emit_python.c: emit_python use g_hash_table_replace + instead of g_hash_table_insert + +2014-04-02 abachrach@gmail.com + + * [r775] lcm/lcm-cpp.hpp: revert changes that allowed people to + create child classes derived from LCM + +2014-03-26 abachrach@gmail.com + + * [r774] lcm/lcm-cpp.hpp: make publish() and good() methods of the + c++ bindings virtual so that child classes can override them. + +2014-03-25 mrwalter@gmail.com + + * [r773] lcm/lcm_mpudpm.c, lcm/lcm_udpm.c: removed duplicate + typedef + +2014-03-24 abachrach@gmail.com + + * [r771] ., lcm-logger/lcm_logger.c, lcm/Makefile.am, lcm/lcm.c, + lcm/lcm_internal.h, lcm/lcm_mpudpm.c, lcm/lcm_udp.c, + lcm/lcm_udpm.c, lcm/lcmtypes, lcm/udpm_util.c, lcm/udpm_util.h, + liblcm-test/lcm-logfilter.c, test/Makefile: merge the + multiport_udp_multicast branch into trunk. + +2014-03-20 ashuang + + * [r769] lcm/lcm_udp.c, liblcm-test/lcm-sink.c, + liblcm-test/lcm-source.c: fragmentation threshold bugfixes + instrument lcm-sink, lcm-source to count messages sent/received + lcm_udp add dbg message to indicate when dropping fragmented + messages + * [r768] lcm/lcm_udp.c: increase fragmentation threshold for + C-based bindings + +2014-03-13 ashuang + + * [r767] lcm-logger/lcm_logplayer.c: resolves #83 lcm-logplayer + actually accept -l/--lcm-url option + * [r766] lcm-java/lcm/spy/ObjectPanel.java: resolves #84 apply + patch from brady.tom315 to better draw long type names in spy + +2014-02-23 abachrach@gmail.com + + * [r764] lcm/lcm-cpp.hpp: make the c++ destructor virtual so that + we can create classes derived from the LCM object, and clean up + by calling delete on a pointer to the base class + +2014-02-19 abachrach@gmail.com + + * [r761] lcm-logger/lcm_logger.c, test/run_tests.py: minor + portability fixes + * [r760] lcmgen/lcmgen.c, lcmgen/main.c: add a --package-prefix + option to lcmgen that adds the supplied package name as a prefix + for all of the generated lcm bidings + * [r759] lcmgen/Makefile.am, lcmgen/emit_c.c, lcmgen/emit_cpp.c, + lcmgen/emit_csharp.c, lcmgen/emit_java.c, lcmgen/lcm-gen.vcproj, + lcmgen/lcmgen.c, lcmgen/sprintfalloc.c, lcmgen/sprintfalloc.h: + get rid of sprintfalloc() in place of g_strdup_printf(). There + were incomplete logic paths, and it seemed redundant with the + glib function + * [r758] lcm-python/pylcm.c, lcm-python/pylcm.h, + test/python/lcm_file_test.py, test/run_tests.py: Add unit tests + for the lcm_file_provider, and fix the way pylcm managed the + global interpreter lock so that it's lcm_handle() semantics + matched C. + + Previously, the python version of lcm_handle() would block + indefinitely if a call to lcm_handle() would have returned -1. + + This was due to the fact that it internally called select on the + lcm file handle rather than just calling lcm_handle(). It had to + do this because of the way we were previous managing access to + python's global interpreter lock. + + I added functions pylcm_begin_allow_threads() and + pylcm_end_allow_threads(), that worked like + Py_BEGIN_ALLOW_THREADS/Py_END_ALLOW_THREADS, but allowed them to + be called from different functions, so that we could call + pylcm_end_allow_threads() inside pylcm_msg_handler() right before + dispatching to the underlying python handler. + * [r757] lcm/eventlog.c, lcm/eventlog.h, lcm/lcm_file.c: Add a + read/write mode to eventlog, and modify the lcm_file provider to + use it. + + The read/write mode allows you to both publish and subscribe to + messages using the file provider. + + If you call lcm_handle() before publishing anything it will + return -1, however once you publish, lcm_handle() will succeed. + + This functionality is useful for writing unit tests where you + want the reliability, determinism, and process separation + provided by using a file for transport. + * [r756] lcmgen/emit_cpp.c: For const int32_t fields, declare the + variable using an enum instead of a static const int. + + As it is right now, the variables cause a linker error if you + pass the constant into a function by const reference. The + alternative would be to generate a .cpp file with the static + member definition :-/ + + see: + http://stackoverflow.com/questions/3460034/declaring-and-initializing-a-static-int-in-a-header + or + http://stackoverflow.com/questions/3025997/c-defining-static-const-integer-members-in-class-definition + for more info. + * [r755] lcm-logger/lcm_logger.c: modify the behavior of the + increment option to count logs with a '.synced' suffix, so that + scripts can mark that logs have been synced from the robot + * [r754] lcm-logger/lcm_logger.c: perform a full fdatasync() after + flush to make sure the data gets all the way out to the disk. + +2014-01-17 tderensis@gmail.com + + * [r749] test/README, test/c/client.c, test/c/common.c, + test/c/server.c, test/cpp/client.cpp, test/python/client.py: Test + cleanups. Now each client/server also prints it's language and + everything is indented nicely. Fixed a small memory leak in the c + test. + +2014-01-15 tderensis@gmail.com + + * [r748] test/Makefile, test/c/common.c, test/c/common.h, + test/cpp/Makefile, test/cpp/common.cpp, test/cpp/common.hpp, + test/java, test/java/Makefile, test/java/lcm-spy.sh: Updated the + cpp tests to work with the new cross_package_t. Added java for + lcm-spy inspection during tests and the apropriate make file. + Tested with python 2.7.6 and 3.3.3. + * [r747] lcmgen/emit_python.c: Fixed the python imports bug + detailed in issue 72. Hopefully this completes the python 3 + support as well. + +2014-01-10 ashuang + + * [r746] test/README, test/c/Makefile, test/c/common.c, + test/python/client.py, test/types/lcmtest2/another_type_t.lcm, + test/types/lcmtest2/cross_package_t.lcm: Apply Python + compatibility patches from tderensis + https://code.google.com/u/118390866925911832845/ + +2013-12-31 abachrach@gmail.com + + * [r742] test/Makefile, test/c/Makefile, test/c/common.c, test/cpp, + test/cpp/Makefile, test/cpp/client.cpp, test/cpp/common.cpp, + test/cpp/common.hpp, test/python/Makefile, + test/python/cleanup.sh, test/python/gen-types.sh, + test/run_tests.py, test/test.py: Add units tests for the C++ + bindings, and add a top level makefile for the unit tests + +2013-12-15 ashuang + + * [r739] lcm/lcm_coretypes.h: lcm_field_type_t bugfix + +2013-12-12 ashuang + + * [r738] lcm-python/lcm/__init__.py, lcm-python/module.c, + lcm-python/pyeventlog.c, lcm-python/pylcm.c, + lcm-python/pylcm_subscription.c, lcmgen/emit_python.c, + m4/python.m4: apply patch from tderensis for python3 + compatibility + * [r737] test/README, test/c/Makefile, test/c/client.c, + test/c/common.c, test/c/common.h, test/c/server.c, + test/lua/gen-types.sh, test/python/cleanup.sh, + test/python/client.py, test/python/gen-types.sh, test/test.py, + test/types/exampleconst_t.lcm, test/types/lcmtest, + test/types/lcmtest/exampleconst_t.lcm, + test/types/lcmtest/multidim_array_t.lcm, + test/types/lcmtest/node_t.lcm, + test/types/lcmtest/primitives_list_t.lcm, + test/types/lcmtest/primitives_t.lcm, test/types/lcmtest2, + test/types/lcmtest2/cross_package_t.lcm, + test/types/multidim_array_t.lcm, test/types/node_t.lcm, + test/types/primitives_list_t.lcm, test/types/primitives_t.lcm: + add cross-package unit test for C, Python + * [r736] lcm/lcm_coretypes.h, lcmgen/emit_c.c: apply Anthony + Bonkoski's patch for adding type introspection to generated C + types + +2013-12-05 ashuang + + * [r735] lcm-logger/lcm_logger.c: re #78 remove unnecessary ENOENT + check for windows compatibility + * [r734] lcm/lcm_tcpq.c: lcm_tcpq.c add missing #include + +2013-10-26 abachrach@gmail.com + + * [r733] lcmgen/emit_cpp.c: fix emit_cpp for messages that contain + a single non-primitive type + +2013-10-26 ashuang + + * [r732] WinSpecific/LCM.sln, WinSpecific/getopt/getopt.vcproj, + lcm-logger/glib_util.c, lcm-logger/lcm-logger.vcproj, + lcm-logger/lcm-logplayer.vcproj, lcm-logger/lcm_logger.c, + lcm/lcm.c, lcm/lcm.vcproj, lcm/lcm_file.c, lcm/lcm_udp.c, + lcmgen/lcm-gen.vcproj, liblcm-test/lcm-example.vcproj, + liblcm-test/lcm-logfilter.vcproj, liblcm-test/lcm-sink.vcproj, + liblcm-test/lcm-source.vcproj, liblcm-test/lcm-tester.vcproj: + revert r730 for compatibility issues + +2013-10-21 ashuang + + * [r731] lcmgen/emit_cpp.c: re issue #75 C++: for non-string + primitive types with variable size final dimension, add an + optimization to only call the primitive encode functions only if + the final dimension size is non-zero. + +2013-08-23 ashuang + + * [r730] lcm-logger/glib_util.c, lcm-logger/lcm_logger.c, + lcm/lcm.c, lcm/lcm_file.c, lcm/lcm_udp.c: stop using deprecated + GLib symbols. + +2013-08-14 ashuang + + * [r729] lcm/lcm_coretypes.h, lcmgen/emit_c.c: apply patch from + spaceMORT to fix compile issues on TI C2000 cross compiler + (cl2000) + +2013-08-05 ashuang + + * [r728] lcm-logger/lcm_logger.c: lcm-logger bugfix: allow -q + +2013-07-24 ashuang + + * [r727] lcm-logger/lcm-logger.1: update man page + * [r726] lcm-logger/lcm_logger.c, lcm/eventlog.c, lcm/eventlog.h: + lcm/eventlog: - add "a" mode for appending + + lcm-logger: - remove --auto-split-hours option - rename + --auto-split-mb to --split-mb - add --rotate option for rotating + log files - add --quiet option + +2013-06-08 ashuang + + * [r722] ChangeLog, NEWS, configure.in, lcm-python/setup.py, + lcm/lcm.h: LCM release 1.0.0 + 2013-06-04 ashuang * [r721] lcm/lcm_tcpq.c: fix whitespace diff --git a/NEWS b/NEWS index d409837ba..06e2b4adb 100644 --- a/NEWS +++ b/NEWS @@ -1,7 +1,57 @@ +Jul 16, 2014 +============ + + Release 1.1.0 + + General: + - Add "memq://" provider to support unit testing code that uses LCM. + Supported in C, C++, Python, lua, Java. + + C: + - lcm_tcpq.c add missing #include + - Add introspection to generated C types + - Increase fragmentation threshold. + - Add lcm_handle_timeout() function + + C++: + - Fix emit_cpp for messages that contain a single non-primitive type + - Declare const fields using enums instead of static const int + - Some const correctness + - Add lcm::LCM::handleTimeout() function + + Python: + - Add Python3 compatibility + - Add lcm.LCM.handle_timeout() function + - Sub-types are initialized to valid instances instead of None + + lua: + - Add handle_timeout() function, deprecate timedhandle() + + lcm-logger: + - Remove --auto-split-hours option + - Rename --auto-split-mb option to --split-mb + - Add --rotate option for rotating log files + - Add --quiet option + + lcm-gen: + - Add --package-prefix option + - Detect duplicate types in input. + - C emit_hash_recursive function explicit cast result to int64_t (closes #81) + - Detect corrupt log files. + + lcm-spy: + - Better drawing of long type names + + lcm-logplayer: + - Actually accept -l/--lcm-url optin + + misc: + - Add more unit tests + Jun 8, 2013 =========== - Release 1.0 + Release 1.0.0 This release adds experimental support for Lua (contributed by Tim Perkins) diff --git a/configure.in b/configure.in index 8e420b18a..02ec1aee0 100644 --- a/configure.in +++ b/configure.in @@ -1,5 +1,5 @@ AC_PREREQ(2.50) -AC_INIT([lcm], 1.0.0) +AC_INIT([lcm], 1.1.0) AC_CONFIG_SRCDIR([lcm/lcm.h]) AC_CANONICAL_SYSTEM AM_INIT_AUTOMAKE([foreign]) @@ -22,9 +22,9 @@ dnl CURRENT, and set REVISION to 0. dnl 3. If the interface changes consist solely of additions, increment AGE. dnl 4. If the interface has removed or changed elements, set AGE to 0. dnl --------------------------------------------------------------------------- -LIBLCM_AGE=2 -LIBLCM_REVISION=2 -LIBLCM_CURRENT=3 +LIBLCM_AGE=3 +LIBLCM_REVISION=0 +LIBLCM_CURRENT=4 AC_SUBST(LIBLCM_AGE) AC_SUBST(LIBLCM_REVISION) AC_SUBST(LIBLCM_CURRENT) diff --git a/lcm-python/setup.py b/lcm-python/setup.py index 3ea14707c..3c2793097 100644 --- a/lcm-python/setup.py +++ b/lcm-python/setup.py @@ -84,6 +84,6 @@ libraries=libraries, extra_compile_args=extra_compile_args) -setup(name="lcm", version="1.0.0", +setup(name="lcm", version="1.1.0", ext_modules=[pylcm_extension], packages=["lcm"]) diff --git a/lcm/lcm.h b/lcm/lcm.h index aed67520a..bb58a6d47 100644 --- a/lcm/lcm.h +++ b/lcm/lcm.h @@ -315,7 +315,7 @@ int lcm_handle (lcm_t *lcm); * milliseconds. If 0, then dispatches any available messages and then * returns immediately. Values less than 0 are not allowed. * - * @return >1 if a message was handled, 0 if the function timed out, and <0 if + * @return >0 if a message was handled, 0 if the function timed out, and <0 if * an error occured. */ LCM_API_FUNCTION