From 5518b5b5307a25c63c3c925746101129fbfd14a7 Mon Sep 17 00:00:00 2001 From: Philip Top Date: Fri, 4 Jun 2021 07:48:12 -0700 Subject: [PATCH] 2.7.1 merge (#1941) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Core naming fix (#1919) * Fix the issue with the automated naming of cores and add a max_federate and max_broker condition to cores and brokers as well * add additional test cases and files * Automated formatting of repo files (#1920) Co-authored-by: Philip Top Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * FIx cpplint issue * fix failing test cases due to broken function call * Automated formatting of repo files (#1925) Co-authored-by: Philip Top Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Environmental variables (#1921) * Add support for environmental variables * add tests for environmental variables * Automated formatting of repo files [skip ci] (#1922) * add a global status query (#1870) * add a global status query * Automated formatting of repo files (#1871) Co-authored-by: Philip Top Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * update date and duplicate naming race condition for cores * Automated formatting of repo files (#1872) Co-authored-by: Philip Top Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Automated formatting of repo files Co-authored-by: Philip Top Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Ryan Mast * fix a few missing clears and rename a variable and method in the comms to make it clearer. * Automated formatting of repo files (#1924) Co-authored-by: Philip Top Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * update docs to environment_variables Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Ryan Mast * Fix an issue with the recorder capture text file (#1910) * Fix an issue with the recorder capture text file storing the type in the wrong location which could cause issues on reading the file in a player * Automated formatting of repo files (#1911) Co-authored-by: Philip Top Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * clang-tidy fixes * use Json string converters instead of a custom escaping function * Automated formatting of repo files (#1918) Co-authored-by: Philip Top Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Update docs/apps/Player.md Co-authored-by: Ryan Mast Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Ryan Mast * signal handler (#1915) * add some test code for signal handling in the library * Make helicsLoadSignalHandler compile * add a signal handler callback operation and an abort operation * Add endline for signalHandler * add globalError call to broker and make abort all trigger on all federates, cores and brokers, but don't destroy the objects. * add functions and methods to the C++98 API and some docs * fix clang-tidy issues * Automated formatting of repo files (#1916) Co-authored-by: Philip Top Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * fix punctuation in docs * change error_code argument to match consistent Styles * Automated formatting of repo files (#1917) Co-authored-by: Philip Top Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * change the signal hander to have a boolean return value which controls whether the default handler is executed * change abort all to capture all autogenerated cores and brokers. * make changing the broker State restricted so it can't move from the error State easily. * fix callback to be C compatible * make the abort work for tcp cores as well * remove the death test from the circle ci execution * tweak the udp core timeouts and the abort calls * Fix test cases from rebase * fix some formatting issues * Automated formatting of repo files (#1927) Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * warning cleanup * Apply suggestions from code review Co-authored-by: Ryan Mast * Update src/helics/core/CommonCore.cpp Co-authored-by: Ryan Mast Co-authored-by: Dheepak Krishnamurthy Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Ryan Mast * Automated update to SWIG generated interface files (#1930) Co-authored-by: HELICS-bot * Query timeouts (#1931) * Add query timeouts and some additional checks to prevent deadlocks from queries * add a tickForwarding method to the brokerBase to clarify intentions and simplify constructions. * Automated formatting of repo files (#1932) Co-authored-by: Philip Top Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * fix cpplint warning Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * add a test case and try to fix the wait for current time bug (#1933) * add a test case and try to fix the wait for current time bug * Automated formatting of repo files (#1935) Co-authored-by: Philip Top Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Webserver tweaks (#1936) * Fix a few minor issues with the webserver and add a default page. * add svg index page * update some webserver tests * Automated formatting of repo files (#1938) Co-authored-by: Philip Top Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Add css for broker server page * Apply suggestions from code review Co-authored-by: Ryan Mast Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Dheepak Krishnamurthy Co-authored-by: Ryan Mast * Update some docs and other things related to version numbers in prepa… (#1939) * Update some docs and other things related to version numbers in preparation for the 2.7.1 release. * Automated formatting of repo files (#1940) Co-authored-by: Philip Top Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> * Apply suggestions from code review Co-authored-by: Ryan Mast Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Ryan Mast Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Ryan Mast Co-authored-by: Dheepak Krishnamurthy Co-authored-by: HELICS-bot --- CHANGELOG.md | 29 +- CMakeLists.txt | 4 +- README.md | 2 + ThirdParty/concurrency | 2 +- appveyor.yml | 2 +- docs/apps/Player.md | 2 +- docs/user-guide/debugging.md | 6 +- docs/user-guide/environment_variables.md | 24 + docs/user-guide/index.md | 2 + docs/user-guide/program_termination.md | 76 + docs/user-guide/queries.md | 6 +- docs/user-guide/webserver.md | 12 +- .../java/interface/SWIGTYPE_p_f_int__int.java | 26 + interfaces/java/interface/helics.java | 74 +- interfaces/java/interface/helicsJNI.java | 7 + interfaces/java/interface/helicsJava.c | 117 + .../java/interface/helics_error_types.java | 6 +- .../matlab/interface/+helics/helicsAbort.m | 3 + ...licsBrokerAddDestinationFilterToEndpoint.m | 2 +- .../helicsBrokerAddSourceFilterToEndpoint.m | 2 +- .../+helics/helicsBrokerClearTimeBarrier.m | 2 +- .../interface/+helics/helicsBrokerClone.m | 2 +- .../interface/+helics/helicsBrokerDataLink.m | 2 +- .../interface/+helics/helicsBrokerDestroy.m | 2 +- .../+helics/helicsBrokerDisconnect.m | 2 +- .../interface/+helics/helicsBrokerFree.m | 2 +- .../+helics/helicsBrokerGetAddress.m | 2 +- .../+helics/helicsBrokerGetIdentifier.m | 2 +- .../+helics/helicsBrokerGlobalError.m | 3 + .../+helics/helicsBrokerIsConnected.m | 2 +- .../interface/+helics/helicsBrokerIsValid.m | 2 +- .../+helics/helicsBrokerMakeConnections.m | 2 +- .../interface/+helics/helicsBrokerSetGlobal.m | 2 +- .../+helics/helicsBrokerSetLogFile.m | 2 +- .../+helics/helicsBrokerSetTimeBarrier.m | 2 +- .../+helics/helicsBrokerWaitForDisconnect.m | 2 +- .../interface/+helics/helicsCleanupLibrary.m | 2 +- .../+helics/helicsClearSignalHandler.m | 3 + .../interface/+helics/helicsCloseLibrary.m | 2 +- ...helicsCoreAddDestinationFilterToEndpoint.m | 2 +- .../helicsCoreAddSourceFilterToEndpoint.m | 2 +- .../interface/+helics/helicsCoreClone.m | 2 +- .../interface/+helics/helicsCoreConnect.m | 2 +- .../interface/+helics/helicsCoreDataLink.m | 2 +- .../interface/+helics/helicsCoreDestroy.m | 2 +- .../interface/+helics/helicsCoreDisconnect.m | 2 +- .../matlab/interface/+helics/helicsCoreFree.m | 2 +- .../interface/+helics/helicsCoreGetAddress.m | 2 +- .../+helics/helicsCoreGetIdentifier.m | 2 +- .../interface/+helics/helicsCoreGlobalError.m | 3 + .../interface/+helics/helicsCoreIsConnected.m | 2 +- .../interface/+helics/helicsCoreIsValid.m | 2 +- .../+helics/helicsCoreMakeConnections.m | 2 +- .../+helics/helicsCoreRegisterCloningFilter.m | 2 +- .../+helics/helicsCoreRegisterFilter.m | 2 +- .../interface/+helics/helicsCoreSetGlobal.m | 2 +- .../interface/+helics/helicsCoreSetLogFile.m | 2 +- .../+helics/helicsCoreSetReadyToInit.m | 2 +- .../+helics/helicsCoreWaitForDisconnect.m | 2 +- .../interface/+helics/helicsCreateBroker.m | 2 +- .../+helics/helicsCreateBrokerFromArgs.m | 2 +- .../+helics/helicsCreateCombinationFederate.m | 2 +- ...elicsCreateCombinationFederateFromConfig.m | 2 +- .../interface/+helics/helicsCreateCore.m | 2 +- .../+helics/helicsCreateCoreFromArgs.m | 2 +- .../+helics/helicsCreateFederateInfo.m | 2 +- .../+helics/helicsCreateMessageFederate.m | 2 +- .../helicsCreateMessageFederateFromConfig.m | 2 +- .../interface/+helics/helicsCreateQuery.m | 2 +- .../+helics/helicsCreateValueFederate.m | 2 +- .../helicsCreateValueFederateFromConfig.m | 2 +- .../+helics/helicsEndpointClearMessages.m | 2 +- .../helicsEndpointCreateMessageObject.m | 2 +- .../helicsEndpointGetDefaultDestination.m | 2 +- .../interface/+helics/helicsEndpointGetInfo.m | 2 +- .../+helics/helicsEndpointGetMessage.m | 2 +- .../+helics/helicsEndpointGetMessageObject.m | 2 +- .../interface/+helics/helicsEndpointGetName.m | 2 +- .../+helics/helicsEndpointGetOption.m | 2 +- .../interface/+helics/helicsEndpointGetType.m | 2 +- .../+helics/helicsEndpointHasMessage.m | 2 +- .../interface/+helics/helicsEndpointIsValid.m | 2 +- .../+helics/helicsEndpointPendingMessages.m | 2 +- .../+helics/helicsEndpointSendEventRaw.m | 2 +- .../+helics/helicsEndpointSendMessage.m | 2 +- .../+helics/helicsEndpointSendMessageObject.m | 2 +- .../helicsEndpointSendMessageObjectZeroCopy.m | 2 +- .../+helics/helicsEndpointSendMessageRaw.m | 2 +- .../helicsEndpointSetDefaultDestination.m | 2 +- .../interface/+helics/helicsEndpointSetInfo.m | 2 +- .../+helics/helicsEndpointSetOption.m | 2 +- .../+helics/helicsEndpointSubscribe.m | 2 +- .../+helics/helicsFederateAddDependency.m | 2 +- .../+helics/helicsFederateClearMessages.m | 2 +- .../+helics/helicsFederateClearUpdates.m | 2 +- .../interface/+helics/helicsFederateClone.m | 2 +- .../helicsFederateCreateMessageObject.m | 2 +- .../interface/+helics/helicsFederateDestroy.m | 2 +- .../helicsFederateEnterExecutingMode.m | 2 +- .../helicsFederateEnterExecutingModeAsync.m | 2 +- ...helicsFederateEnterExecutingModeComplete.m | 2 +- ...elicsFederateEnterExecutingModeIterative.m | 2 +- ...FederateEnterExecutingModeIterativeAsync.m | 2 +- ...erateEnterExecutingModeIterativeComplete.m | 2 +- .../helicsFederateEnterInitializingMode.m | 2 +- ...helicsFederateEnterInitializingModeAsync.m | 2 +- ...icsFederateEnterInitializingModeComplete.m | 2 +- .../+helics/helicsFederateFinalize.m | 2 +- .../+helics/helicsFederateFinalizeAsync.m | 2 +- .../+helics/helicsFederateFinalizeComplete.m | 2 +- .../interface/+helics/helicsFederateFree.m | 2 +- .../+helics/helicsFederateGetCoreObject.m | 2 +- .../+helics/helicsFederateGetCurrentTime.m | 2 +- .../+helics/helicsFederateGetEndpoint.m | 2 +- .../helicsFederateGetEndpointByIndex.m | 2 +- .../+helics/helicsFederateGetEndpointCount.m | 2 +- .../+helics/helicsFederateGetFilter.m | 2 +- .../+helics/helicsFederateGetFilterByIndex.m | 2 +- .../+helics/helicsFederateGetFilterCount.m | 2 +- .../+helics/helicsFederateGetFlagOption.m | 2 +- .../+helics/helicsFederateGetInput.m | 2 +- .../+helics/helicsFederateGetInputByIndex.m | 2 +- .../+helics/helicsFederateGetInputCount.m | 2 +- .../helicsFederateGetIntegerProperty.m | 2 +- .../+helics/helicsFederateGetMessage.m | 2 +- .../+helics/helicsFederateGetMessageObject.m | 2 +- .../interface/+helics/helicsFederateGetName.m | 2 +- .../+helics/helicsFederateGetPublication.m | 2 +- .../helicsFederateGetPublicationByIndex.m | 2 +- .../helicsFederateGetPublicationCount.m | 2 +- .../+helics/helicsFederateGetState.m | 2 +- .../+helics/helicsFederateGetSubscription.m | 2 +- .../+helics/helicsFederateGetTimeProperty.m | 2 +- .../+helics/helicsFederateGlobalError.m | 2 +- .../+helics/helicsFederateHasMessage.m | 2 +- .../+helics/helicsFederateInfoClone.m | 2 +- .../+helics/helicsFederateInfoFree.m | 2 +- .../+helics/helicsFederateInfoLoadFromArgs.m | 2 +- .../+helics/helicsFederateInfoSetBroker.m | 2 +- .../helicsFederateInfoSetBrokerInitString.m | 2 +- .../+helics/helicsFederateInfoSetBrokerKey.m | 2 +- .../+helics/helicsFederateInfoSetBrokerPort.m | 2 +- .../helicsFederateInfoSetCoreInitString.m | 2 +- .../+helics/helicsFederateInfoSetCoreName.m | 2 +- .../+helics/helicsFederateInfoSetCoreType.m | 2 +- .../helicsFederateInfoSetCoreTypeFromString.m | 2 +- .../+helics/helicsFederateInfoSetFlagOption.m | 2 +- .../helicsFederateInfoSetIntegerProperty.m | 2 +- .../+helics/helicsFederateInfoSetLocalPort.m | 2 +- .../+helics/helicsFederateInfoSetSeparator.m | 2 +- .../helicsFederateInfoSetTimeProperty.m | 2 +- .../helicsFederateIsAsyncOperationCompleted.m | 2 +- .../interface/+helics/helicsFederateIsValid.m | 2 +- .../+helics/helicsFederateLocalError.m | 2 +- .../+helics/helicsFederateLogDebugMessage.m | 2 +- .../+helics/helicsFederateLogErrorMessage.m | 2 +- .../+helics/helicsFederateLogInfoMessage.m | 2 +- .../+helics/helicsFederateLogLevelMessage.m | 2 +- .../+helics/helicsFederateLogWarningMessage.m | 2 +- .../+helics/helicsFederatePendingMessages.m | 2 +- .../+helics/helicsFederatePublishJSON.m | 2 +- .../helicsFederateRegisterCloningFilter.m | 2 +- .../+helics/helicsFederateRegisterEndpoint.m | 2 +- .../+helics/helicsFederateRegisterFilter.m | 2 +- ...elicsFederateRegisterFromPublicationJSON.m | 2 +- ...elicsFederateRegisterGlobalCloningFilter.m | 2 +- .../helicsFederateRegisterGlobalEndpoint.m | 2 +- .../helicsFederateRegisterGlobalFilter.m | 2 +- .../helicsFederateRegisterGlobalInput.m | 2 +- .../helicsFederateRegisterGlobalPublication.m | 2 +- .../helicsFederateRegisterGlobalTypeInput.m | 2 +- ...icsFederateRegisterGlobalTypePublication.m | 2 +- .../+helics/helicsFederateRegisterInput.m | 2 +- .../helicsFederateRegisterInterfaces.m | 2 +- .../helicsFederateRegisterPublication.m | 2 +- .../helicsFederateRegisterSubscription.m | 2 +- .../+helics/helicsFederateRegisterTypeInput.m | 2 +- .../helicsFederateRegisterTypePublication.m | 2 +- .../+helics/helicsFederateRequestNextStep.m | 2 +- .../+helics/helicsFederateRequestTime.m | 2 +- .../helicsFederateRequestTimeAdvance.m | 2 +- .../+helics/helicsFederateRequestTimeAsync.m | 2 +- .../helicsFederateRequestTimeComplete.m | 2 +- .../helicsFederateRequestTimeIterative.m | 2 +- .../helicsFederateRequestTimeIterativeAsync.m | 2 +- ...licsFederateRequestTimeIterativeComplete.m | 2 +- .../+helics/helicsFederateSetFlagOption.m | 2 +- .../+helics/helicsFederateSetGlobal.m | 2 +- .../helicsFederateSetIntegerProperty.m | 2 +- .../+helics/helicsFederateSetLogFile.m | 2 +- .../+helics/helicsFederateSetSeparator.m | 2 +- .../+helics/helicsFederateSetTimeProperty.m | 2 +- .../+helics/helicsFilterAddDeliveryEndpoint.m | 2 +- .../helicsFilterAddDestinationTarget.m | 2 +- .../+helics/helicsFilterAddSourceTarget.m | 2 +- .../interface/+helics/helicsFilterGetInfo.m | 2 +- .../interface/+helics/helicsFilterGetName.m | 2 +- .../interface/+helics/helicsFilterGetOption.m | 2 +- .../interface/+helics/helicsFilterIsValid.m | 2 +- .../helicsFilterRemoveDeliveryEndpoint.m | 2 +- .../+helics/helicsFilterRemoveTarget.m | 2 +- .../interface/+helics/helicsFilterSet.m | 2 +- .../interface/+helics/helicsFilterSetInfo.m | 2 +- .../interface/+helics/helicsFilterSetOption.m | 2 +- .../interface/+helics/helicsFilterSetString.m | 2 +- .../+helics/helicsGetFederateByName.m | 2 +- .../interface/+helics/helicsGetFlagIndex.m | 2 +- .../interface/+helics/helicsGetOptionIndex.m | 2 +- .../interface/+helics/helicsGetOptionValue.m | 2 +- .../+helics/helicsGetPropertyIndex.m | 2 +- .../interface/+helics/helicsInputAddTarget.m | 2 +- .../+helics/helicsInputClearUpdate.m | 2 +- .../interface/+helics/helicsInputGetBoolean.m | 2 +- .../interface/+helics/helicsInputGetChar.m | 2 +- .../interface/+helics/helicsInputGetComplex.m | 2 +- .../interface/+helics/helicsInputGetDouble.m | 2 +- .../+helics/helicsInputGetExtractionUnits.m | 2 +- .../interface/+helics/helicsInputGetInfo.m | 2 +- .../+helics/helicsInputGetInjectionUnits.m | 2 +- .../interface/+helics/helicsInputGetInteger.m | 2 +- .../interface/+helics/helicsInputGetKey.m | 2 +- .../+helics/helicsInputGetNamedPoint.m | 2 +- .../interface/+helics/helicsInputGetOption.m | 2 +- .../+helics/helicsInputGetPublicationType.m | 2 +- .../+helics/helicsInputGetRawValue.m | 2 +- .../+helics/helicsInputGetRawValueSize.m | 2 +- .../interface/+helics/helicsInputGetString.m | 2 +- .../+helics/helicsInputGetStringSize.m | 2 +- .../interface/+helics/helicsInputGetTime.m | 2 +- .../interface/+helics/helicsInputGetType.m | 2 +- .../interface/+helics/helicsInputGetUnits.m | 2 +- .../interface/+helics/helicsInputGetVector.m | 2 +- .../+helics/helicsInputGetVectorSize.m | 2 +- .../interface/+helics/helicsInputIsUpdated.m | 2 +- .../interface/+helics/helicsInputIsValid.m | 2 +- .../+helics/helicsInputLastUpdateTime.m | 2 +- .../+helics/helicsInputSetDefaultBoolean.m | 2 +- .../+helics/helicsInputSetDefaultChar.m | 2 +- .../+helics/helicsInputSetDefaultComplex.m | 2 +- .../+helics/helicsInputSetDefaultDouble.m | 2 +- .../+helics/helicsInputSetDefaultInteger.m | 2 +- .../+helics/helicsInputSetDefaultNamedPoint.m | 2 +- .../+helics/helicsInputSetDefaultRaw.m | 2 +- .../+helics/helicsInputSetDefaultString.m | 2 +- .../+helics/helicsInputSetDefaultTime.m | 2 +- .../+helics/helicsInputSetDefaultVector.m | 2 +- .../interface/+helics/helicsInputSetInfo.m | 2 +- .../+helics/helicsInputSetMinimumChange.m | 2 +- .../interface/+helics/helicsInputSetOption.m | 2 +- .../+helics/helicsIsCoreTypeAvailable.m | 2 +- .../+helics/helicsLoadSignalHandler.m | 3 + .../+helics/helicsLoadSignalHandlerCallback.m | 3 + .../+helics/helicsMessageAppendData.m | 2 +- .../+helics/helicsMessageCheckFlag.m | 2 +- .../interface/+helics/helicsMessageClear.m | 2 +- .../+helics/helicsMessageClearFlags.m | 2 +- .../interface/+helics/helicsMessageClone.m | 2 +- .../interface/+helics/helicsMessageCopy.m | 2 +- .../interface/+helics/helicsMessageFree.m | 2 +- .../+helics/helicsMessageGetDestination.m | 2 +- .../+helics/helicsMessageGetMessageID.m | 2 +- .../helicsMessageGetOriginalDestination.m | 2 +- .../+helics/helicsMessageGetOriginalSource.m | 2 +- .../+helics/helicsMessageGetRawData.m | 2 +- .../+helics/helicsMessageGetRawDataSize.m | 2 +- .../+helics/helicsMessageGetSource.m | 2 +- .../+helics/helicsMessageGetString.m | 2 +- .../interface/+helics/helicsMessageGetTime.m | 2 +- .../interface/+helics/helicsMessageIsValid.m | 2 +- .../interface/+helics/helicsMessageReserve.m | 2 +- .../interface/+helics/helicsMessageSetData.m | 2 +- .../+helics/helicsMessageSetDestination.m | 2 +- .../+helics/helicsMessageSetFlagOption.m | 2 +- .../+helics/helicsMessageSetMessageID.m | 2 +- .../helicsMessageSetOriginalDestination.m | 2 +- .../+helics/helicsMessageSetOriginalSource.m | 2 +- .../+helics/helicsMessageSetSource.m | 2 +- .../+helics/helicsMessageSetString.m | 2 +- .../interface/+helics/helicsMessageSetTime.m | 2 +- .../+helics/helicsPublicationAddTarget.m | 2 +- .../+helics/helicsPublicationGetInfo.m | 2 +- .../+helics/helicsPublicationGetKey.m | 2 +- .../+helics/helicsPublicationGetOption.m | 2 +- .../+helics/helicsPublicationGetType.m | 2 +- .../+helics/helicsPublicationGetUnits.m | 2 +- .../+helics/helicsPublicationIsValid.m | 2 +- .../+helics/helicsPublicationPublishBoolean.m | 2 +- .../+helics/helicsPublicationPublishChar.m | 2 +- .../+helics/helicsPublicationPublishComplex.m | 2 +- .../+helics/helicsPublicationPublishDouble.m | 2 +- .../+helics/helicsPublicationPublishInteger.m | 2 +- .../helicsPublicationPublishNamedPoint.m | 2 +- .../+helics/helicsPublicationPublishRaw.m | 2 +- .../+helics/helicsPublicationPublishString.m | 2 +- .../+helics/helicsPublicationPublishTime.m | 2 +- .../+helics/helicsPublicationPublishVector.m | 2 +- .../+helics/helicsPublicationSetInfo.m | 2 +- .../helicsPublicationSetMinimumChange.m | 2 +- .../+helics/helicsPublicationSetOption.m | 2 +- .../+helics/helicsQueryBrokerExecute.m | 2 +- .../+helics/helicsQueryCoreExecute.m | 2 +- .../interface/+helics/helicsQueryExecute.m | 2 +- .../+helics/helicsQueryExecuteAsync.m | 2 +- .../+helics/helicsQueryExecuteComplete.m | 2 +- .../interface/+helics/helicsQueryFree.m | 2 +- .../+helics/helicsQueryIsCompleted.m | 2 +- .../+helics/helicsQuerySetOrdering.m | 2 +- .../+helics/helicsQuerySetQueryString.m | 2 +- .../interface/+helics/helicsQuerySetTarget.m | 2 +- .../+helics/helicsSubscriptionGetKey.m | 2 +- .../+helics/helics_error_connection_failure.m | 2 +- .../interface/+helics/helics_error_discard.m | 2 +- .../+helics/helics_error_execution_failure.m | 2 +- .../+helics/helics_error_insufficient_space.m | 2 +- .../+helics/helics_error_invalid_argument.m | 2 +- .../helics_error_invalid_function_call.m | 2 +- .../+helics/helics_error_invalid_object.m | 2 +- .../helics_error_invalid_state_transition.m | 2 +- .../helics_error_registration_failure.m | 2 +- .../+helics/helics_error_system_failure.m | 2 +- .../+helics/helics_error_user_abort.m | 7 + .../+helics/helics_filter_type_clone.m | 2 +- .../+helics/helics_filter_type_custom.m | 2 +- .../+helics/helics_filter_type_delay.m | 2 +- .../+helics/helics_filter_type_firewall.m | 2 +- .../+helics/helics_filter_type_random_delay.m | 2 +- .../+helics/helics_filter_type_random_drop.m | 2 +- .../+helics/helics_filter_type_reroute.m | 2 +- .../helics_handle_option_buffer_data.m | 2 +- ...helics_handle_option_clear_priority_list.m | 2 +- ...helics_handle_option_connection_optional.m | 2 +- ...helics_handle_option_connection_required.m | 2 +- .../helics_handle_option_connections.m | 2 +- .../helics_handle_option_ignore_interrupts.m | 2 +- ...elics_handle_option_ignore_unit_mismatch.m | 2 +- ...cs_handle_option_input_priority_location.m | 2 +- ...andle_option_multi_input_handling_method.m | 2 +- ...ndle_option_multiple_connections_allowed.m | 2 +- ...cs_handle_option_only_transmit_on_change.m | 2 +- ...lics_handle_option_only_update_on_change.m | 2 +- ...ics_handle_option_single_connection_only.m | 2 +- ...elics_handle_option_strict_type_checking.m | 2 +- ...helics_iteration_request_force_iteration.m | 2 +- ...lics_iteration_request_iterate_if_needed.m | 2 +- .../helics_iteration_request_no_iteration.m | 2 +- .../+helics/helics_iteration_result_error.m | 2 +- .../+helics/helics_iteration_result_halted.m | 2 +- .../helics_iteration_result_iterating.m | 2 +- .../helics_iteration_result_next_step.m | 2 +- .../helics_multi_input_and_operation.m | 2 +- .../helics_multi_input_average_operation.m | 2 +- .../helics_multi_input_diff_operation.m | 2 +- .../helics_multi_input_max_operation.m | 2 +- .../helics_multi_input_min_operation.m | 2 +- .../+helics/helics_multi_input_no_op.m | 2 +- .../+helics/helics_multi_input_or_operation.m | 2 +- .../helics_multi_input_sum_operation.m | 2 +- .../helics_multi_input_vectorize_operation.m | 2 +- .../matlab/interface/+helics/helics_ok.m | 2 +- .../helics_property_int_console_log_level.m | 2 +- .../helics_property_int_file_log_level.m | 2 +- .../+helics/helics_property_int_log_level.m | 2 +- .../helics_property_int_max_iterations.m | 2 +- .../+helics/helics_property_time_delta.m | 2 +- .../helics_property_time_input_delay.m | 2 +- .../+helics/helics_property_time_offset.m | 2 +- .../helics_property_time_output_delay.m | 2 +- .../+helics/helics_property_time_period.m | 2 +- .../+helics/helics_property_time_rt_lag.m | 2 +- .../+helics/helics_property_time_rt_lead.m | 2 +- .../helics_property_time_rt_tolerance.m | 2 +- .../+helics/helics_sequencing_mode_fast.m | 2 +- .../+helics/helics_sequencing_mode_ordered.m | 2 +- .../interface/+helics/helics_state_error.m | 2 +- .../+helics/helics_state_execution.m | 2 +- .../interface/+helics/helics_state_finalize.m | 2 +- .../interface/+helics/helics_state_finished.m | 2 +- .../+helics/helics_state_initialization.m | 2 +- .../+helics/helics_state_pending_exec.m | 2 +- .../+helics/helics_state_pending_finalize.m | 2 +- .../+helics/helics_state_pending_init.m | 2 +- .../helics_state_pending_iterative_time.m | 2 +- .../+helics/helics_state_pending_time.m | 2 +- .../interface/+helics/helics_state_startup.m | 2 +- .../matlab/interface/+helics/helics_warning.m | 2 +- interfaces/matlab/interface/helicsMEX.cpp | 1715 +- interfaces/python/interface/helics.py | 82 +- interfaces/python/interface/helicsPython.c | 303 +- scripts/run-circleci-tests.sh | 4 +- src/docs/c_api_reference.dox | 21 + src/helics/application_api/BrokerApp.cpp | 7 + src/helics/application_api/BrokerApp.hpp | 2 + src/helics/application_api/CoreApp.cpp | 7 + src/helics/application_api/CoreApp.hpp | 2 + src/helics/application_api/Federate.cpp | 46 +- src/helics/application_api/FederateInfo.cpp | 23 +- src/helics/application_api/FederateInfo.hpp | 5 +- src/helics/apps/AsioBrokerServer.cpp | 27 + src/helics/apps/AsioBrokerServer.hpp | 1 + src/helics/apps/BrokerServer.cpp | 27 + src/helics/apps/BrokerServer.hpp | 6 + src/helics/apps/CMakeLists.txt | 2 +- src/helics/apps/Clone.cpp | 9 +- src/helics/apps/Player.cpp | 29 +- src/helics/apps/PrecHelper.cpp | 7 + src/helics/apps/PrecHelper.hpp | 3 + src/helics/apps/Recorder.cpp | 30 +- src/helics/apps/TypedBrokerServer.cpp | 3 + src/helics/apps/TypedBrokerServer.hpp | 2 + src/helics/apps/helics-broker-server.cpp | 5 +- src/helics/apps/helicsWebServer.cpp | 76 +- src/helics/apps/helicsWebServer.hpp | 7 +- src/helics/apps/indexPage.hpp | 575 + src/helics/apps/zmqBrokerServer.cpp | 33 +- src/helics/apps/zmqBrokerServer.hpp | 4 + src/helics/common/JsonBuilder.cpp | 6 + src/helics/common/JsonBuilder.hpp | 7 +- src/helics/common/JsonProcessingFunctions.hpp | 9 +- src/helics/core/ActionMessage.cpp | 2 + src/helics/core/ActionMessageDefintions.hpp | 2 + src/helics/core/Broker.hpp | 7 + src/helics/core/BrokerBase.cpp | 51 +- src/helics/core/BrokerBase.hpp | 36 +- src/helics/core/BrokerFactory.cpp | 9 + src/helics/core/BrokerFactory.hpp | 2 + src/helics/core/CommonCore.cpp | 282 +- src/helics/core/CommonCore.hpp | 18 +- src/helics/core/Core.hpp | 12 +- src/helics/core/CoreBroker.cpp | 213 +- src/helics/core/CoreBroker.hpp | 10 +- src/helics/core/CoreFactory.cpp | 13 + src/helics/core/CoreFactory.hpp | 5 + src/helics/core/FederateState.cpp | 7 +- src/helics/core/FederateState.hpp | 2 +- src/helics/core/TimeCoordinator.cpp | 6 +- src/helics/core/TimeCoordinator.hpp | 5 +- src/helics/core/helicsCLI11.hpp | 26 +- src/helics/cpp98/Broker.hpp | 5 + src/helics/cpp98/Core.hpp | 4 + src/helics/cpp98/Federate.hpp | 16 +- src/helics/cpp98/helics.hpp | 15 + src/helics/cpp98/helicsExceptions.hpp | 6 +- src/helics/helics_enums.h | 4 +- src/helics/network/CommsInterface.cpp | 27 +- src/helics/network/CommsInterface.hpp | 15 +- src/helics/network/NetworkBrokerData.cpp | 49 +- src/helics/network/NetworkBrokerData.hpp | 3 + src/helics/network/NetworkCommsInterface.cpp | 10 + src/helics/network/NetworkCore_impl.hpp | 1 + src/helics/network/tcp/TcpComms.cpp | 16 +- src/helics/network/tcp/TcpHelperClasses.cpp | 2 +- src/helics/network/udp/UdpComms.cpp | 47 +- src/helics/network/zmq/ZmqComms.cpp | 11 +- .../shared_api_library/FederateExport.cpp | 8 +- src/helics/shared_api_library/helics.h | 55 +- .../shared_api_library/helicsExport.cpp | 84 + .../shared_api_library/internal/api_objects.h | 1 + .../helics/application_api/FederateTests.cpp | 161 + .../ValueFederateAdditionalTests.cpp | 19 + tests/helics/application_api/testFixtures.cpp | 19 + tests/helics/application_api/testFixtures.hpp | 5 + tests/helics/apps/CloneTests.cpp | 4 +- tests/helics/apps/PlayerTests.cpp | 55 + tests/helics/apps/combo_tests.cpp | 116 + tests/helics/apps/test_files/bigtest.txt | 37104 ++++++++++++++++ tests/helics/core/CMakeLists.txt | 1 + tests/helics/core/CoreOperationsTests.cpp | 26 + tests/helics/core/TimeCoordinatorTests.cpp | 25 + tests/helics/shared_library/SystemTests.cpp | 26 + .../helics/shared_library/evilInputTests.cpp | 4 +- tests/helics/system_tests/QueryTests.cpp | 63 + tests/helics/system_tests/TimingTests2.cpp | 60 + tests/helics/system_tests/networkTests.cpp | 87 + tests/helics/test_files/name_config1.json | 6 + tests/helics/test_files/name_config2.json | 6 + tests/helics/webserver/webServerHttpTests.cpp | 10 + 476 files changed, 41618 insertions(+), 1495 deletions(-) create mode 100644 docs/user-guide/environment_variables.md create mode 100644 docs/user-guide/program_termination.md create mode 100644 interfaces/java/interface/SWIGTYPE_p_f_int__int.java create mode 100644 interfaces/matlab/interface/+helics/helicsAbort.m create mode 100644 interfaces/matlab/interface/+helics/helicsBrokerGlobalError.m create mode 100644 interfaces/matlab/interface/+helics/helicsClearSignalHandler.m create mode 100644 interfaces/matlab/interface/+helics/helicsCoreGlobalError.m create mode 100644 interfaces/matlab/interface/+helics/helicsLoadSignalHandler.m create mode 100644 interfaces/matlab/interface/+helics/helicsLoadSignalHandlerCallback.m create mode 100644 interfaces/matlab/interface/+helics/helics_error_user_abort.m create mode 100644 src/helics/apps/indexPage.hpp create mode 100644 tests/helics/apps/test_files/bigtest.txt create mode 100644 tests/helics/core/CoreOperationsTests.cpp create mode 100644 tests/helics/test_files/name_config1.json create mode 100644 tests/helics/test_files/name_config2.json diff --git a/CHANGELOG.md b/CHANGELOG.md index e12e257f75..a34eea463b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,7 +6,32 @@ The format is based on [Keep a Changelog](http://keepachangelog.com/en/1.0.0/). This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). A note on future revisions. -Everything within a major version number should be code compatible (with the exception of experimental interfaces). The most notable example of an experimental interface is the support for multiple source inputs. The APIs to deal with this will change in future minor releases. Everything within a single minor release should be network compatible with other federates on the same minor release number. Compatibility across minor release numbers may be possible in some situations but we are not going to guarantee this as those components are subject to performance improvements and may need to be modified at some point. Patch releases will be limited to bug fixes and other improvements not impacting the public API or network compatibility. Check the [Public API](./docs/Public_API.md) for details on what is included and excluded from the public API and version stability. +Everything within a major version number should be code compatible (with the exception of experimental interfaces). Everything within a single minor release should be network compatible with other federates on the same minor release number. Compatibility across minor release numbers may be possible in some situations but we are not going to guarantee this as those components are subject to performance improvements and may need to be modified at some point. Patch releases will be limited to bug fixes and other improvements not impacting the public API or network compatibility. Check the [Public API](./docs/Public_API.md) for details on what is included and excluded from the public API and version stability. + +## [2.7.1][] - 2021-06-03 + +There were several bug fixes in this patch release. Some of them related to changes in [2.7.0][] and some new ones that came up from bug reports. Some new enhancements are experimental signal handlers in the C-api, which will be used in the python interface to provide a little better user experience when trying to kill a co-simulation. + +### Changed + +- String output on recorders is now always JSON compatible and allows escaped characters. This allows some additional values to be displayed in ascii format vs base 64 encoding. #1910 +- Players read the string fields through a JSON parser unless marked with b64\[\] to match the string output on recorders #1910 +- The default webserver port is now 8080 to allow user space execution on non-Windows platforms #1936 + +### Fixed + +- An issue with recorders writing text fields in the incorrect order which could result in incorrect playback #1910 +- Fix an issue with core naming that occasionally resulted in same broker name errors when using default names on federates #1919 +- Fix an issue where queries were not being resolved when a core disconnects which could result in deadlock. #1931 +- The `wait_for_current_time` flag was not working properly in some cases where time interruption was also taking place #1933 +- Fixed issue with the webserver not responding with the index page when requested or detecting the correct broker for certain trivial requests #1936 + +### Added + +- Signal handlers for catching SIGINT and optional user callback are available in the C shared API #1915 +- Added support for environment variables for setting some network connection settings and other information #1921 +- Queries now have timeouts #1931 +- Command line and environment variable options for setting the webserver port numbers #1936 ## [2.7.0][] - 2021-04-28 @@ -837,3 +862,5 @@ This is a major revision so this changelog will not capture all the changes that [2.5.2]: https://github.com/GMLC-TDC/HELICS/releases/tag/v2.5.2 [2.6.0]: https://github.com/GMLC-TDC/HELICS/releases/tag/v2.6.0 [2.6.1]: https://github.com/GMLC-TDC/HELICS/releases/tag/v2.6.1 +[2.7.0]: https://github.com/GMLC-TDC/HELICS/releases/tag/v2.7.0 +[2.7.1]: https://github.com/GMLC-TDC/HELICS/releases/tag/v2.7.1 diff --git a/CMakeLists.txt b/CMakeLists.txt index 65e0031d8c..6149313b6c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,14 +23,14 @@ if(DEFINED ENV{VCPKG_ROOT} AND NOT DEFINED CMAKE_TOOLCHAIN_FILE) set(CMAKE_TOOLCHAIN_FILE "$ENV{VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake" CACHE STRING "") endif() -project(HELICS VERSION 2.7.0) +project(HELICS VERSION 2.7.1) # ----------------------------------------------------------------------------- # HELICS Version number # ----------------------------------------------------------------------------- set(HELICS_VERSION_BUILD) # use ISO date YYYY-MM-DD -set(HELICS_DATE "2021-04-29") +set(HELICS_DATE "2021-06-05") set(HELICS_VERSION_UNDERSCORE "${HELICS_VERSION_MAJOR}_${HELICS_VERSION_MINOR}_${HELICS_VERSION_PATCH}" diff --git a/README.md b/README.md index aad1e6ccc9..3b4b981073 100644 --- a/README.md +++ b/README.md @@ -69,6 +69,8 @@ HELICS is also highly scalable, enabling everything from simple connections betw ## Getting Started +The users guide has been completely redone for the upcoming HELICS 3. This version is not released yet but it is close, and the [docs](https://docs.helics.org/en/helics3/) are mostly done. We suggest you check it out if you are looking for more documentation. + We've created a series of roughly 10-minute mini-tutorial videos that discuss various design topics, concepts, and interfaces, including how to use the tool. They can be found on our [YouTube channel](https://www.youtube.com/channel/UCPa81c4BVXEYXt2EShTzbcg). The [Introduction to the HELICS documentation](https://helics.readthedocs.io/en/latest/introduction/index.html) goes through a series of examples that step through the basic usage and concepts of HELICS. diff --git a/ThirdParty/concurrency b/ThirdParty/concurrency index b1be15315b..1ffdb2b7d9 160000 --- a/ThirdParty/concurrency +++ b/ThirdParty/concurrency @@ -1 +1 @@ -Subproject commit b1be15315b938fdbf30d71421b837f3c43753d11 +Subproject commit 1ffdb2b7d9894d8dd4e3f284dff1a7052a785ac9 diff --git a/appveyor.yml b/appveyor.yml index 8a0c8fb270..c5fbdd188a 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -7,7 +7,7 @@ branches: - develop - helics3 -version: 2.7.0.{build} +version: 2.7.1.{build} image: Visual Studio 2015 diff --git a/docs/apps/Player.md b/docs/apps/Player.md index 96b5accfa4..f73b5d7c14 100644 --- a/docs/apps/Player.md +++ b/docs/apps/Player.md @@ -133,7 +133,7 @@ m