Releases: Tencent/MMKV
MMKV for Golang
Add MMKV support for Golang on POSIX platforms. Most things actually work!
Check out the wiki for more info.
v1.2.6
v1.2.6 / 2020-11-27
Changes for All platforms
- Fix a file corruption when calling
reKey()
afterremoveKeys()
has just been called.
Android
- Fix compile error when
MMKV_DISABLE_CRYPT
is set. - Add a preprocess directive
MMKV_DISABLE_FLUTTER
to disable flutter plugin features. If you integrate MMKV by source code, and if you are pretty sure the flutter plugin is not needed, you can turn that off to save some binary size.
Flutter
Add MMKV support for Flutter on iOS & Android platform. Most things actually work!
Check out the wiki for more info.
v1.2.5
v1.2.5 / 2020-11-13
This is a pre-version for Flutter. The official Flutter plugin of MMKV will come out soon. Stay Tune!
iOS / macOS
- Fix an assert error of encrypted MMKV when encoding some
<NSCoding>
objects. - Fix a potential leak when decoding duplicated keys from the file.
- Add
+[MMKV pageSize]
,+[MMKV version]
methods. - Add
+[MMKV defaultMMKVWithCryptKey:]
, you can encrypt the default MMKV instance now, just like the Android users who already enjoy this for a long time. - Rename
-[MMKV getValueSizeForKey:]
to-[MMKV getValueSizeForKey: actualSize:]
to align with Android interface.
Android
- Fix a potential crash when getting MMKV instances in multi-thread at the same time.
- Add
MMKV.version()
method.
v1.2.4
v1.2.3
v1.2.3 / 2020-10-16
Changes for All platforms
- Fix a potential crash on 32-bit devices due to pointer alignment issue.
- Fix a decode error of encrypted MMKV on some 32-bit devices.
iOS / macOS
- Fix a potential
crc32()
crash on some kind of arm64 devices. - Fix a potential crash after calling
+[MMKV onAppTerminate]
.
Android
- Fix a rare lock conflict on
checkProcessMode()
.
POSIX
Add MMKV support for Python on POSIX platforms. Most things actually work!
Check out the wiki for more info.
MMKV for Python
Add MMKV support for Python on POSIX platforms. Most things actually work!
Check out the wiki for more info.
v1.2.2
v1.2.2 / 2020-07-30
iOS / macOS
- Add auto clean up feature. Call
+[MMKV enableAutoCleanUp:]
to enable auto cleanup MMKV instances that not been accessed recently. - Fix a potential crash on devices under iPhone X.
Android
- Add multi-process mode check. After so many issues had been created due to mistakenly using MMKV in multi-process mode in Android, this check is added. If an MMKV instance is accessed with
SINGLE_PROCESS_MODE
in multi-process, anIllegalArgumentException
will be thrown.
POSIX
- Add support for armv7 & arm64 arch on Linux.
v1.2.1
v1.2.1 / 2020-07-03
This is a hotfix version. Anyone who has upgraded to v1.2.0 should upgrade to this version immediately.
- Fix a potential file corruption bug when writing a file that was created in versions older than v1.2.0. This bug was introduced in v1.2.0.
- Add a preprocess directive
MMKV_DISABLE_CRYPT
to turn off MMKV encryption ability once and for all. If you integrate MMKV by source code, and if you are pretty sure encryption is not needed, you can turn that off to save some binary size. - The parameter
relativePath
(customizing a separate folder for an MMKV instance), has been renamed torootPath
. Making it clear that an absolute path is expected for that parameter.
iOS / macOS
-[MMKV mmkvWithID: relativePath:]
is deprecated. Use-[MMKV mmkvWithID: rootPath:]
instead.- Likewise,
-[MMKV mmkvWithID: cryptKey: relativePath:]
is deprecated. Use-[MMKV mmkvWithID: cryptKey: rootPath:]
instead.
v1.2.0
v1.2.0 / 2020-06-30
This is the second major version of MMKV. Everything you call is the same as the last version, while almost everything underneath has been improved.
- Reduce Memory Footprint. We used to cache all key-values in a dictionary for efficiency. From now on we store the offset of each key-value inside the mmap-memory instead, reducing memory footprint by almost half for (non-encrypt) MMKV. And the accessing efficiency is almost the same as before. As for encrypted MMKV, we can't simply store the offset of each key-value, the relative encrypt info needs to be stored as well. That will be too much for small key-values. We only store such info for large key-values (larger than 256B).
- Improve Writeback Efficiency. Thanks to the optimization above, we now can implement writeback by simply calling memmove() multiple times. Efficiency is increased and memory consumption is down.
- Optimize Small Key-Values. Small key-values of encrypted MMKV are still cached in memory, as all the old versions did. From now on, the struct
MMBuffer
will try to store small values in the stack instead of in the heap, saving a lot of time frommalloc()
&free()
. In fact, all primitive types will be store in the stack memory.
All of the improvements above are available to all supported platforms. Here are the additional changes for each platform.
iOS / macOS
- Optimize insert & delete. Especially for inserting new values to existing keys, or deleting keys. We now use the UTF-8 encoded keys in the mmap-memory instead of live encoding from keys, cutting the cost of string encoding conversion.
- Fix Xcode compile error on some projects.
- Drop the support of iOS 8.
thread_local
is not available on iOS 8. We choose to drop support instead of working around because iOS 8's market share is considerably small.
POSIX
- It's known that GCC before 5.0 doesn't support C++17 standard very well. You should upgrade to the latest version of GCC to compile MMKV.