Skip to content

Commit 145ec44

Browse files
committed
Update release notes
1 parent a0b1a38 commit 145ec44

File tree

1 file changed

+173
-25
lines changed

1 file changed

+173
-25
lines changed

documentation/RELEASE_NOTES.md

Lines changed: 173 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,74 +1,222 @@
1-
# EPICS V4 Release 4.x.0 C++ Bundle Release Notes
1+
# EPICS V4 Release 4.7.0 C++ Bundle Release Notes
22

3-
This document contains the Release Notes entries from each individual C++
4-
submodule for this bundled version of EPICS V4.
5-
For future patch releases any notes about patch changes will supplement the note entries from the original release.
3+
This EPICS V4 C++ Package version 4.7.0 contains the same set of the EPICS V4 C++ modules as the full EPICS 7.0.1 release (with the pvaPy Python bindings added and no copy of EPICS Base), along with a top-level build system to allow configuring all the modules at once rather than doing each one individually.
64

5+
This document contains the Release Notes entries from each individual C++ submodule, describing the changes between the previous bundleCPP version and this release version. For any future 4.7.x patch releases the information about the patch changes included will supplement the note entries from this release.
76

8-
## pvCommonCPP x.y.z
7+
### Compatibilty
8+
9+
This release can be built against EPICS Base versions 3.15.x or 3.16.x. Later versions of EPICS Base are referred to as EPICS 7 and already include all the necessary V4 modules. EPICS Base versions 3.14.12.x and earlier are not compatible with the pva2pva module that was added to this package in this release. The other V4 modules may build and run against EPICS Base 3.14.12.x, but they have not been built or tested against that Base version recently.
910

10-
...
1111

1212
------
1313

14-
## pvDataCPP x.y.z
14+
## pvCommonCPP 4.2.3
1515

16-
...
16+
The `mb.h` header has been updated to build properly against EPICS Base
17+
versions prior to 3.15.0.1.
1718

1819

1920
------
2021

21-
## pvAccessCPP x.y.z
22+
## pvDataCPP 7.0.0
2223

23-
...
24+
### Removals
2425

26+
- Remove requester.h, monitor.h, and destroyable.h which were migrated to the pvAccessCPP module.
27+
- Previously deprecated monitorPlugin.h is removed.
28+
- Remove pv/messageQueue.h and epics::pvData::MessageQueue
2529

26-
------
30+
### Deprecations
31+
32+
The following utility classes will be removed in 8.0:
33+
34+
- epics::pvData::Queue
35+
- epics::pvData::Executor
36+
- epics::pvData::TimeFunction
2737

28-
## normativeTypesCPP x.y.z
38+
### Additions
2939

30-
...
40+
- Add pv/pvdVersion.h which is included by pv/pvIntrospect.h
41+
- Add epics::pvData::createRequest() function. Alternative to epics::pvData::CreateRequest class which throws on error.
42+
- epics::pvData::FieldBuilder allow Structure defintion to be changed/appended
43+
- Add epics::pvData::ValueBuilder like FieldBuilder also sets initial values.
44+
- Can also be constructed using an existing PVStructure to allow "editing".
45+
- Add debugPtr.h wrapper with reference tracking to assist in troubleshooting shared_ptr related ref. loops.
46+
- Add pvjson utilities
47+
48+
49+
------
3150

51+
## pvAccessCPP 6.0.0
52+
53+
### Incompatible changes
54+
55+
- Requires pvDataCPP >=7.0.0 due to headers moved from pvDataCPP into this module: requester.h, destoryable.h, and monitor.h
56+
- Major changes to shared_ptr ownership rules for epics::pvAccess::ChannelProvider and
57+
associated classes.
58+
- Add new library pvAccessIOC for use with PVAClientRegister.dbd and PVAServerRegister.dbd.
59+
Necessary to avoid having pvAccess library depend on all IOC core libraries.
60+
- Added new library pvAccessCA with "ca" provider. Main pvAccess library no longer depends on libca.
61+
Applications needing the "ca" provider must link against pvAccessCA and pvAccess.
62+
See examples/Makefile in the source tree.
63+
The headers associated with this library are: caChannel.h, caProvider.h, and caStatus.h
64+
- A number of headers which were previously installed, but considered "private", are no longer installed.
65+
- epics::pvAccess::ChannelProviderRegistry may no longer be sub-classed.
66+
- Removed access to singleton registry via getChannelProviderRegistry() and registerChannelProviderFactory()
67+
in favor of epics::pvAccess::ChannelProviderRegistry::clients() and epics::pvAccess::ChannelProviderRegistry::servers().
68+
The "pva" and "ca" providers are registered with the clients() singleton.
69+
epics::pvAccess::ServerContext() looks up names with the servers() singleton.
70+
- Removed deprecated epics::pvAccess::Properties
71+
- The data members of epics::pvAccess::MonitorElement become const, preventing these pointers from being re-targeted.
72+
73+
### Simplifications
74+
75+
- use of the epics::pvAccess::ChannelRequester interface is optional
76+
and may be omitted when calling createChannel().
77+
Channel state change notifications are deliviered
78+
to individual operations via epics::pvAccess::ChannelBaseRequester::channelDisconnect()
79+
- Default implementions added for the following methods
80+
- epics::pvAccess::Lockable::lock() and epics::pvAccess::Lockable::unlock() which do nothing.
81+
- epics::pvAccess::Channel::getConnectionState() returns CONNECTED
82+
- epics::pvAccess::Channel::isConnected() uses getConnectionState()
83+
- epics::pvAccess::Channel::getField() which errors
84+
- epics::pvAccess::Channel::getAccessRights() which returns rw
85+
- Added epics::pvAccess::SimpleChannelProviderFactory template and
86+
epics::pvAccess::ChannelProviderRegistry::add() avoids need for custom
87+
factory.
88+
- Added epics::pvAccess::MonitorElement::Ref iterator/smart-pointer
89+
to ensure proper handling of calls Monitor::poll() and Monitor::release().
90+
- epics::pvAccess::PipelineMonitor "internal" is collapsed into epics::pvAccess::Monitor.
91+
PipelineMonitor becomes a typedef for Monitor.
92+
- epics::pvAccess::RPCService is now a sub-class of epics::pvAccess::RPCServiceAsync
93+
94+
### Additions
95+
96+
- pv/pvAccess.h now provides macros OVERRIDE and FINAL which conditionally expand to the c++11 keywords override and final.
97+
- Deliver disconnect notifications to individual Operations (get/put/rpc/monitor/...) via
98+
new epics::pvAccess::ChannelBaseRequester::channelDisconnect()
99+
- New API for server creation via epics::pvAccess::ServerContext::create() allows direct specification
100+
of configuration and ChannelProvider(s).
101+
- Add epics::pvAccess::ServerContext::getCurrentConfig() to get actual configuration, eg. for use with a client.
102+
- Classes from moved headers requester.h, destoryable.h, and monitor.h added to epics::pvAccess namespace.
103+
Typedefs provided in epics::pvData namespace.
104+
- Added Client API based on pvac::ClientProvider
105+
- pv/pvaVersion.h defines VERSION_INT and PVACCESS_VERSION_INT
106+
- epics::pvAccess::RPCClient may be directly constructed.
107+
- epics::pvAccess::RPCServer allows epics::pvAccess::Configuration to be specified and access to ServerContext.
108+
- Added epics::pvAccess::Configuration::keys() to iterate configuration parameters (excluding environment variables).
109+
- Added epics::pvAccess::Destoryable::cleaner
110+
111+
### Deprecations
112+
113+
- epics::pvAccess::GUID in favor of epics::pvAccess::ServerGUID due to win32 name conflict.
32114

33115

34116
------
35117

36-
## pvaClientCPP x.y.z
118+
## normativeTypesCPP 5.2.0
37119

38-
...
120+
This release contains bug fixes and minor source updates needed to build against the latest version of pvData.
39121

40122

41123
------
42124

43-
## pvaSrv x.y.z
125+
## pvaClientCPP 4.3.0
126+
127+
### Works with pvDataCPP-7.0 and pvAccessCPP-6.0 versions
128+
129+
Will not work with older versions.
130+
131+
### destroy methods removed
132+
133+
All the destroy methods are removed since implementation is RAII compliant.
134+
135+
### API changes to PvaClientMonitor
136+
137+
The second argument of method
44138

45-
...
139+
static PvaClientMonitorPtr create(
140+
PvaClientPtr const &pvaClient,
141+
epics::pvAccess::Channel::shared_pointer const & channel,
142+
epics::pvData::PVStructurePtr const &pvRequest
143+
);
144+
145+
Is now changed to
146+
147+
static PvaClientMonitorPtr create(
148+
PvaClientPtr const &pvaClient,
149+
PvaClientChannelPtr const & pvaClientChannel,
150+
epics::pvData::PVStructurePtr const &pvRequest
151+
);
152+
153+
A new method is also implemented
154+
155+
static PvaClientMonitorPtr create(
156+
PvaClientPtr const &pvaClient,
157+
std::string const & channelName,
158+
std::string const & providerName,
159+
std::string const & request,
160+
PvaClientChannelStateChangeRequesterPtr const & stateChangeRequester,
161+
PvaClientMonitorRequesterPtr const & monitorRequester
162+
);
46163

47164

48165
------
49166

50-
## pvDatabaseCPP x.y.z
167+
## pva2pva 1.0.0
51168

52-
...
169+
This module replaces the original pvaSrv.
53170

54171

55172
------
56173

57-
## exampleCPP x.y.z
174+
## pvDatabaseCPP 4.3.0
58175

59-
...
176+
This release contains bug fixes and minor source updates needed to build against the latest versions of pvData and pvAccess.
60177

61178

62179
------
63180

64-
## pvaPy x.y.z
181+
## pvaPy
182+
183+
### Release 1.0.0 (2018/01/04)
184+
185+
- added build support for python3
186+
- added build support for EPICS7 releases
65187

66-
...
188+
### Release 0.9 (2017/09/17)
189+
190+
- improved support for channel monitors: no monitor startup thread results in
191+
faster initial connections; monitors connect automatically when channels
192+
come online
193+
- fixed support for older EPICS v4 releases (4.4, 4.5 and 4.6)
194+
- added build support for numpy included with boost releases 1.63.0 and later
195+
196+
### Release 0.8 (2017/07/17)
197+
198+
- added new Channel monitor() method that can be used instead of
199+
subscribe()/startMonitor() sequence in case when there is only one
200+
subscriber
201+
- enhanced PvaServer functionality: single server instance can serve multiple
202+
channels; channels can be added and removed dynamically; added (optional)
203+
callback for channel writes
204+
205+
### Release 0.7 (2017/05/10)
206+
207+
- added initial version of PvaServer class: PvObject exposed via instance of
208+
this class can be retrieved and manipulated using standard PVA command line
209+
tools and APIs
210+
- fixed boolean array conversion to python list
211+
- improved support for builds relying on custom boost installation
67212

68213

69214
------
70215

71-
## bundleCPP 4.x.0
216+
## bundleCPP 4.7.0
217+
218+
### Submodule Changes
72219

73-
...
220+
In this release the pvaSrv module has been replaced with the newer and more functional pva2pva module. The exampleCPP module was dropped for this release as it hasn't yet been updated to demonstrate the latest pvData and pvAccess API changes.
74221

222+
The top-level Makefile has been modified to try and improve the behaviour of some of the buld targets (e.g. `make distclean` shouldn't try to configure any submodules that aren't already configured). In general this Makefile was designed for building the submodules from scratch, not for developers to use while working on the code.

0 commit comments

Comments
 (0)