All Versions
33
Latest Version
Avg Release Cycle
49 days
Latest Release
139 days ago

Changelog History
Page 2

  • v1.2.3 Changes

    October 16, 2020

    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.

  • v1.2.2 Changes

    July 30, 2020

    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, an IllegalArgumentException will be thrown.

    POSIX

    • โž• Add support for armv7 & arm64 arch on Linux.
  • v1.2.2-python Changes

    September 02, 2020

    โž• Add MMKV support for Python on POSIX platforms. Most things actually work!
    Check out the wiki for more info.

  • v1.2.1 Changes

    July 03, 2020

    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 to rootPath. 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 Changes

    June 30, 2020

    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 from malloc() & 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.
  • v1.1.2 Changes

    May 29, 2020

    v1.1.2 / 2020-05-29

    ๐ŸŽ Android / iOS & macOS / Win32 / POSIX

    • ๐Ÿ›  Fix a potential crash after trim() a multi-process MMKV instance.
    • ๐Ÿ‘Œ Improve clearAll() a bit.
  • v1.1.1 Changes

    April 13, 2020

    v1.1.1 / 2020-04-13

    ๐ŸŽ iOS / macOS

    • ๐Ÿ‘Œ Support WatchOS.
    • ๐Ÿ“‡ Rename +[MMKV onExit] to +[MMKV onAppTerminate], to avoid naming conflict with some other OpenSource projects.
    • ๐Ÿ‘‰ Make background write protection much more robust, fix a potential crash when writing meta info in background.
    • ๐Ÿ›  Fix a potential data corruption bug when writing a UTF-8 (non-ASCII) key.

    Android

    • ๐Ÿ›  Fix a crash in the demo project when the App is hot reloaded.
    • ๐Ÿ‘Œ Improve wiki & readme to recommend users to init & destruct MMKV in the Application class instead of on the MainActivity class.

    POSIX

    • ๐Ÿ›  Fix two compile errors with some compilers.
  • v1.1.0 Changes

    March 24, 2020

    v1.1.0 / 2020-03-24

    This is the first major breaking version ever since MMKV was made public in September 2018, introducing bunches of improvement. Due to the Covid-19, it has been delayed for about a month. Now it's finally here!

    • ๐Ÿ‘Œ Improved File Recovery Strategic. We store the CRC checksum & actual file size on each sync operation & full write back, plus storing the actual file size in the same file(aka the .crc meta file) as the CRC checksum. Base on our usage inside WeChat on the iOS platform, it cuts the file corruption rate down by almost half.
    • Unified Core Library. We refactor the whole MMKV project and unify the cross-platform Core library. From now on, MMKV on iOS/macOS, Android, Win32 all share the same core logic code. It brings many benefits such as reducing the work to fix common bugs, improvements on one platform are available to other platforms immediately, and much more.
    • ๐Ÿ‘Œ Supports POSIX Platforms. Thanks to the unified Core library, we port MMKV to POSIX platforms easily.
    • ๐ŸŽ Multi-Process Access on iOS/macOS. Thanks to the unified Core library, we add multi-process access to iOS/macOS platforms easily.
    • Efficiency Improvement. We make the most of armv8 ability including the AES & CRC32 instructions to tune encryption & error checking speed up by one order higher than before on armv8 devices. There are bunches of other speed tuning all around the whole project.

    ๐Ÿ’… Here are the old-style change logs of each platform.

    ๐ŸŽ iOS / macOS

    • Adds multi-process access support. You should initialize MMKV by calling +[MMKV initializeMMKV: groupDir: logLevel:], passing your shared folder by calling -[NSFileManager containerURLForSecurityApplicationGroupIdentifier:] with app group id. Then you can get a multi-process instance by calling +[MMKV mmkvWithID: mode:] or +[MMKV mmkvWithID: cryptKey: mode:], accessing it cross your app & your app extensions.
    • Add inter-process content change notification. You can get MMKV changes notification of other processes by implementing - onMMKVContentChange: of <MMKVHandler> protocol.
    • ๐Ÿ‘Œ Improved File Recovery Strategic. Cuts the file corruption rate down by almost half. Details are above.
    • Efficiency Improvement. Encryption & error checking speed are up by one order higher on armv8 devices(aka iDevice including iPhone 5S and above). Encryption on armv7 devices is improved as well. Details are ahead.
    • Other speed improvements. Refactor core logic using MRC , improve std::vector push_back() speed by using move constructors & move assignments.
    • ๐Ÿ—„ +[MMKV setMMKVBasePath:] & +[MMKV setLogLevel:] are marked deprecated. You should use +[MMKV initializeMMKV:] or +[MMKV initializeMMKV: logLevel:] instead.
    • The MMKVLogLevel enum has been improved in Swift. It can be used like MMKVLogLevel.info and so on.

    Android

    • ๐Ÿ‘Œ Improved File Recovery Strategic. Cuts the file corruption rate down by almost half. Details are above.
    • Efficiency Improvement. Encryption & error checking speed are up by one order higher on armv8 devices with the arm64-v8a abi. Encryption on armeabi & armeabi-v7a is improved as well. Details are ahead.
    • โž• Add exception inside core encode & decode logic, making MMKV much more robust.
    • Other speed improvements. Improve std::vector push_back() speed by using move constructors & move assignments.

    Win32

    • ๐Ÿ‘Œ Improved File Recovery Strategic. Cuts the file corruption rate down by almost half. Details are above.
    • โž• Add exception inside core encode & decode logic, making MMKV much more robust.
    • Other speed improvements. Improve std::vector push_back() speed by using move constructors & move assignments.

    POSIX

    • ๐Ÿš€ Most things actually work! We have tested MMKV on the latest version of Linux(Ubuntu, Arch Linux, CentOS, Gentoo), and Unix(macOS, FreeBSD, OpenBSD) by the time v1.1.0 is released.
  • v1.0.24 Changes

    January 16, 2020

    v1.0.24 / 2020-01-16

    ๐ŸŽ iOS / macOS

    What's new

    • ๐Ÿ›  Fix a bug that MMKV will fail to save any key-values after calling -[MMKV clearMemoryCache] and then -[MMKV clearAll].
    • โž• Add -[MMKV initializeMMKV:] for users to init MMKV in the main thread, to avoid an iOS 13 potential crash when accessing UIApplicationState in child threads.
    • ๐Ÿ›  Fix a potential crash when writing a uniquely constructed string.
    • ๐Ÿ›  Fix a performance slow down when acquiring MMKV instances too often.
    • โœ… Make the baseline test in MMKVDemo more robust to NSUserDefaults' caches.

    Android

    What's new

    • ๐Ÿ›  Fix flock() bug on ashmem files in Android.
    • ๐Ÿ›  Fix a potential crash when writing a uniquely constructed string.
    • ๐Ÿ›  Fix a bug that the MMKVDemo might crash when running in a simulator.

    Win32

    • ๐Ÿ›  Fix a potential crash when writing a uniquely constructed string or data.
  • v1.0.23 Changes

    September 03, 2019

    v1.0.23 / 2019-09-03

    ๐ŸŽ iOS / macOS

    What's new

    • ๐Ÿ›  Fix a potential security leak on encrypted MMKV.

    Android

    What's new

    • ๐Ÿ›  Fix a potential security leak on encrypted MMKV.
    • ๐Ÿ›  Fix filename bug when compiled on Win32 environment.
    • โž• Add option for decoding String Set into other Set<> classes other than the default HashSet<String>, check decodeStringSet() for details.
    • โž• Add putBytes() & getBytes(), to make function names more clear and consistent.
    • โž• Add notification of content changed by other process, check the new MMKVContentChangeNotification<> interface & checkContentChangedByOuterProcess() for details.

    Win32

    What's new

    • ๐Ÿ›  Fix a potential security leak on encrypted MMKV.
    • ๐Ÿ›  Fix CriticalSection init bug.