Bot releases are visible (Hide)
Published by lingol about 4 years ago
Add MMKV support for Python on POSIX platforms. Most things actually work!
Check out the wiki for more info.
Published by lingol about 4 years ago
+[MMKV enableAutoCleanUp:]
to enable auto cleanup MMKV instances that not been accessed recently.SINGLE_PROCESS_MODE
in multi-process, an IllegalArgumentException
will be thrown.Published by lingol over 4 years ago
This is a hotfix version. Anyone who has upgraded to v1.2.0 should upgrade to this version immediately.
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.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.-[MMKV mmkvWithID: relativePath:]
is deprecated. Use -[MMKV mmkvWithID: rootPath:]
instead.-[MMKV mmkvWithID: cryptKey: relativePath:]
is deprecated. Use -[MMKV mmkvWithID: cryptKey: rootPath:]
instead.Published by lingol over 4 years ago
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.
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.
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.Published by lingol over 4 years ago
trim()
a multi-process MMKV instance.clearAll()
a bit.Published by lingol over 4 years ago
+[MMKV onExit]
to +[MMKV onAppTerminate]
, to avoid naming conflict with some other OpenSource projects.Application
class instead of the MainActivity
class.Published by lingol over 4 years ago
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!
Here are the old-style change logs of each platform.
+[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.- onMMKVContentChange:
of <MMKVHandler>
protocol.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.MMKVLogLevel
enum has been improved in Swift. It can be used like MMKVLogLevel.info
and so on.arm64-v8a
abi. Encryption on armeabi
& armeabi-v7a
is improved as well. Details are ahead.push_back()
speed by using move constructors & move assignments.push_back()
speed by using move constructors & move assignments.Published by lingol almost 5 years ago
What's new
-[MMKV clearMemoryCache]
and then -[MMKV clearAll]
.-[MMKV initializeMMKV:]
for users to init MMKV in the main thread, to avoid an iOS 13 potential crash when accessing UIApplicationState
in child threads.What's new
flock()
bug on ashmem files in Android.Published by lingol about 5 years ago
What's new
What's new
Set<>
classes other than the default HashSet<String>
, check decodeStringSet()
for details.putBytes()
& getBytes()
, to make function names more clear and consistent.MMKVContentChangeNotification<>
interface & checkContentChangedByOuterProcess()
for details.What's new
CriticalSection
init bug.Published by lingol over 5 years ago
What's new
What's new
What's new
Published by lingol over 5 years ago
What's new
-[MMKV trim]
might not work properly.What's new
trim()
might not work properly.RegisterNatives()
to simplify native method naming.trim()
might not work properly.clearAll()
might not work properly.Published by lingol over 5 years ago
What's new
-[MMKV allKeys]
;-[MMKV async]
.CLANG_CXX_LANGUAGE_STANDARD
.DEFAULT_MMAP_SIZE
might not be initialized before getting any MMKV instance.What's new
void sync()
, or void apply()
that comes with SharedPreferences.Editor
interface.DEFAULT_MMAP_SIZE
might not be initialized before getting any MMKV instance.Published by lingol over 5 years ago
What's new
NSCoding
value.What's new
Context.MODE_MULTI_PROCESS
to init MMKV.Published by lingol over 5 years ago
What's new
migrateFromUserDefaults
to import from NSUserDefaults.What's new
MMKVHandler
, update your implementation with wantLogRedirecting()
& mmkvLog()
for v1.0.17. (Interface with default method requires API level 24, sigh...)initialize(String rootDir, LibLoader loader)
. If you're facing System.loadLibrary()
crash on some low API level device, consider using ReLinker to load MMKV. Example can be found in mmkvdemo.Published by lingol almost 6 years ago
What's new
getValueSizeForKey:
to get value's size of a key.What's new
getValueSizeForKey()
to get value's size of a key.MMKV for Windows is released now. Most things actually work!
Published by lingol almost 6 years ago
What's new
setString
/getSring
, setData
/getData
, setDate
/getDate
.What's new
MMKV for Win32 in under construction. Hopefully will come out in next release. For those who are interested, check out branch dev_win32
for the latest development.
Published by lingol almost 6 years ago
What's new
nil
value to reset a key is supported now.boolValue(forKey:)
to bool(forKey:)
for Swift.What's new
Parcelable
objects can be stored directly into MMKV now.null
value to reset a key is supported now.Published by lingol almost 6 years ago
What's new
/
are supported in MMKV now. The file name of MMKV with special mmapID will be encoded with md5 and stored in seperate folder.trim
and close
operation. Generally speaking they are not necessary in daily usage. Use them if you worry about disk / memory / fd usage.Known Issues
nil
value to reset a key will be ignored. Use remove
instead.What's new
libc++_shared.so
. Or if you already have an older version of libc++_shared.so
that doesn't agree with MMKV.implementation 'com.tencent:mmkv-static:1.0.13'
to your App's gradle setting to integrate./
are supported in MMKV now. The file name of MMKV with special mmapID will be encoded with md5 and stored in seperate folder.trim
and close
operation. Generally speaking they are not necessary in daily usage. Use them if you worry about disk / memory / fd usage.Known Issues
null
value to reset a key will be ignored. Use remove
instead.Published by lingol almost 6 years ago
What's new
mlock
fail on some devicesWhat's new
remove()
causing data inconsistency on MULTI_PROCESS_MODE
Published by lingol about 6 years ago
What's new
<NSCoding>
protocol.Known Issues
/
inside mmapID.type A
and getting by type B
may not work. MMKV does type erasure while storing values. That means it's hard for MMKV to do value-type-checking, if not impossible.What's new
Known Issues
/
may fail./
inside mmapID.type A
and getting by type B
may not work.registerOnSharedPreferenceChangeListener
not supported.