Merge pull request #111 from awesomized/awesomized
[awesomized/libmemcached] / README.md
1 # libmemcached
2
3 [![License Badge]](https://opensource.org/licenses/BSD-3-Clause)
4
5 [License Badge]: https://img.shields.io/badge/License-BSD%203--Clause-blue.svg "BSD 3-Clause"
6
7 libmemcached is an open source C/C++ client library and tools for the
8 memcached server (http://memcached.org/). It has been designed to be
9 light on memory usage, thread safe, and provide full access to server
10 side methods.
11
12 > **NOTE:**
13 > This is a resurrection of the original work from Brian Aker at
14 > [libmemcached.org](https://libmemcached.org).
15
16 ## Documentation
17
18 [![Docs Actions Badge]](
19 https://github.com/awesomized/libmemcached/actions?query=workflow%3Adocs-publish-pages)
20
21 [Docs Actions Badge]:
22 https://github.com/awesomized/libmemcached/workflows/docs-publish-pages/badge.svg?branch=v1.x
23 "Github Docs Action"
24
25 See https://awesomized.github.io/libmemcached
26
27 ### Building and updating docs
28
29 See [gh-pages/publish](./docs/gh-pages/publish.sh) script and the
30 [docs-publish-pages](./.github/workflows/docs-publish-pages.yml) workflow,
31 which automate pushing updated documentation to github pages.
32
33 ## Installing
34
35 libmemcached uses `CMake`.
36 Please see/edit [`CMakeConfig.txt`](./CMakeConfig.txt) or use `ccmake(1)` or
37 `cmake-gui(1)` to set any preferred options.
38
39 ### From source
40
41 git clone github.com:awesomized/libmemcached
42 mkdir build-libmemcached
43 cd $_
44 cmake ../libmemcached
45 make
46 sudo make install
47
48 #### Requirements
49
50 * CMake 3.9+
51 * C++11 compiler
52 * GNU Bison 2.3+ and Flex
53
54 ##### Optional dependencies
55
56 * C++17 compiler (required for: tests)
57 * Intel's libtbb (optional for: tests; for GCC's stdlib parallelism support)
58 * pthreads (required for: tests, contrib/bin/memaslap, libmemcachedutil/pool)
59 * libevent (required for: contrib/bin/memaslap)
60 * Cyrus' libsasl2 (required for: libmemcached/sasl)
61
62 ### Binaries
63
64 CI and release builds for Linux, a couple BSDs, MacOS and Windows are available at
65 https://artifacts.m6w6.name/libmemcached/ and rsync://m6w6.name::artifacts/libmemcached/.
66
67 ## Testing
68
69 [![Codecov Badge]](https://codecov.io/gh/awesomized/libmemcached)
70
71 [Codecov Badge]:
72 https://codecov.io/gh/awesomized/libmemcached/branch/v1.x/graph/badge.svg
73 "Code coverage"
74
75 Enable the `BUILD_TESTING` setting for a build and run `make test`.
76
77 cmake -DBUILD_TESTING=ON ../libmemcached
78 make test
79
80 ### Continuous integration
81
82 [![Actions Badge]](https://github.com/awesomized/libmemcached/actions?query=workflow%3Acmake-build-ci)
83 [![Sourcehut Badge]](https://builds.sr.ht/~m6w6/libmemcached)
84
85 [Actions Badge]:
86 https://github.com/awesomized/libmemcached/workflows/cmake-build-ci/badge.svg?branch=v1.x
87 "Github Actions"
88 [Sourcehut Badge]:
89 https://builds.sr.ht/~m6w6/libmemcached/commits.svg
90 "Sourcehut Builds"
91
92 CI/Testing is performed on the following system matrix:
93
94 | OS | Compiler | Arch | Comments |
95 |------------------|------------------------------|-------------------------|----------------------------|
96 | Linux | GNU 7/9/10, Clang 9/10/11/12 | amd64 | sasl, coverage, sanitizers |
97 | MacOS | AppleClang 12 | amd64 | sasl, coverage |
98 | FreeBSD | Clang 11 | amd64 | sasl, coverage |
99 | OpenBSD | Clang 10 | amd64 | sasl, coverage |
100 | Windows | MSVC 16, MinGW | amd64 | no sasl, no tests |
101 | Solaris | SunPro 12.5 | amd64 | no sasl, no tests, manually|
102
103 libmemcached has been tested against [memcached](https://github.com/memcached/memcached) v1.5 and v1.6.
104
105 ## ChangeLog
106
107 Check out the latest [releases](https://github.com/awesomized/libmemcached/releases)
108 or the bundled [ChangeLog](./ChangeLog-1.1.md) for a comprehensive list of changes.
109
110 ## License
111
112 libmemcached is licensed under the 3-Clause-BSD license, which can be
113 found in the accompanying [LICENSE](./LICENSE) file.
114
115 ## Contributing
116
117 Please report any issues on the [bug tracker](https://github.com/awesomized/libmemcached/issues).
118
119 A list of known permanent issues is maintained in [BUGS](./BUGS.md).
120
121 All forms of contribution are welcome! Please see the bundled
122 [CONTRIBUTING](./CONTRIBUTING.md) note for the general principles followed.
123
124 The list of current and past maintainers and contributors is available in [AUTHORS](./AUTHORS).
125