CBL macOS versions

38 views
Skip to first unread message

devlist

unread,
Aug 14, 2017, 8:50:20 AM8/14/17
to Couchbase Mobile
Are there any plans to change the CBL macOS requirements? We would like to maintain support for 10.9 onwards.

Thanks,

Martin

Jens Alfke

unread,
Aug 14, 2017, 1:36:45 PM8/14/17
to mobile-c...@googlegroups.com

On Aug 14, 2017, at 5:50 AM, devlist <dev...@mac.com> wrote:

Are there any plans to change the CBL macOS requirements? We would like to maintain support for 10.9 onwards.

Not downwards. We move them upwards over time, so we can make use of new OS features, and to limit the size of the test matrix.

—Jens

devlist

unread,
Aug 14, 2017, 2:09:08 PM8/14/17
to mobile-c...@googlegroups.com
Sure, it’s just that currently the CBL Mac requirement shown on GitHub is 10.8+ and there are lots of calls URL and Progress calls that need 10.9. (Which is fine)
So I assume this requirement will be changing. Just wanted to ensure that it will change to 10.9+ rather than 10.10 or higher.

Thanks,

Martin

--
You received this message because you are subscribed to the Google Groups "Couchbase Mobile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mobile-couchba...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/mobile-couchbase/0D1ACC67-4285-4658-9ECD-3E137424EF83%40couchbase.com.
For more options, visit https://groups.google.com/d/optout.

Jens Alfke

unread,
Aug 14, 2017, 2:40:47 PM8/14/17
to mobile-c...@googlegroups.com

On Aug 14, 2017, at 11:09 AM, devlist <dev...@mac.com> wrote:

So I assume this requirement will be changing. Just wanted to ensure that it will change to 10.9+ rather than 10.10 or higher.

It looks like our current commitment is to 10.11+, but I don’t know if we’re using any APIs that require that version. We’re trying to be conservative in what we state support for, to avoid swamping QE with the need to test on so many OS versions.

There’s an app called RB App Checker that runs through an Xcode project and points out API calls incompatible with specific OS versions. At some point we’re going to run this over CBL 2 to check for compatibility; you can do the same now to see if we’re using anything that’s not 10.9 compatible. And/or of course you can run our tests on an actual macOS 10.9 system.

If you find incompatibilities, there may be workarounds that can be used by testing availability at runtime; we'll consider taking PRs that add these as long as they don’t look slow or destabilizing. (Or of course you can fork the repo and use these workarounds yourself.)

(One of the OS limitations we used to have is the SQLite version number — in 2.0 we require SQLite 3.9+, but iOS 9 and macOS 10.11(?) only have 3.8. (The current version is 3.19.) However, we’ve recently decided to embed SQLite in the CBL framework itself to ensure that we always have a compatible version, so we’re no longer dependent on what version is in the OS.)

—Jens

Brendan Duddridge

unread,
Aug 14, 2017, 3:00:57 PM8/14/17
to Couchbase Mobile
Hi Jens,

However, we’ve recently decided to embed SQLite in the CBL framework itself to ensure that we always have a compatible version, so we’re no longer dependent on what version is in the OS.)

Will that include an SQLCipher implementation?

Thanks,

Brendan 

Jens Alfke

unread,
Aug 14, 2017, 7:19:56 PM8/14/17
to mobile-c...@googlegroups.com

On Aug 14, 2017, at 12:00 PM, Brendan Duddridge <bren...@gmail.com> wrote:

Will that include an SQLCipher implementation?

Probably! There’s little reason not to, since the code is only a tiny big bigger than plain SQLite and it behaves identically to SQLite if you’re not using encryption.

—Jens

devlist

unread,
Aug 15, 2017, 10:49:48 AM8/15/17
to mobile-c...@googlegroups.com
Understood, we currently support 10.9 onwards and rely on API checking to ensure compatibility. (Which works well)
The reason is that unlike iOS, users update macOS less often.

Note that I tried RB App Checker and it’s a useful app for detecting issues with your packaged app, but I don’t think it looks for API calls.
The app for that is Deploymate and that is what I ran on the latest CBL source to see that currently 10.9 will be OK.
We will continue to check the code.

Sounds good to bundle the SQLite/SQLCipher version to keep that independent.

Thanks,

Martin

--
You received this message because you are subscribed to the Google Groups "Couchbase Mobile" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mobile-couchba...@googlegroups.com.

Jens Alfke

unread,
Aug 15, 2017, 11:59:42 AM8/15/17
to mobile-c...@googlegroups.com

On Aug 15, 2017, at 7:49 AM, devlist <dev...@mac.com> wrote:

The app for that is Deploymate and that is what I ran on the latest CBL source to see that currently 10.9 will be OK.

Oops, you’re right, I meant Deploymate :)

Have you checked the feature/2.0 branch? That’s where the 2.0 development is taking place.

—Jens

devlist

unread,
Aug 16, 2017, 5:52:03 AM8/16/17
to Couchbase Mobile
Indeed I was checking the current release rather than 2.0 !

There are a few calls that are only available 10.11 +

NSURLSessionStreamTask
NSConditionalExpressionType
NSError userInfoValueProviderForDomain

Looking at stats for 10.11+

Web 78%
Our app 62%
Our demographic includes servers like MacPro and Mac mini systems that are updated less often due to network / SAN connectivity requirements.
With the lack of new “Pro” Macs customers are holding onto older desktop systems 

Whereas stats for 10.10+

Web 94%
Our app 90%

It would be good to support 10.10+ if possible ???

Any thoughts from other Mac CBL users out there ?

Thanks,

Martin

Jens Alfke

unread,
Aug 16, 2017, 12:34:19 PM8/16/17
to mobile-c...@googlegroups.com

On Aug 16, 2017, at 2:51 AM, devlist <dev...@mac.com> wrote:

NSURLSessionStreamTask

This would take a fair bit of work to bypass; it’s the API used to open the TCP stream for the replicator. The alternative would be to use NSInputStream directly, but that requires extra work to support SSL, proxies, and HTTP auth. You’d basically have to replace the CBLWebSocket class with a new implementation. Not something we would do.

NSConditionalExpressionType

This could be conditionalized pretty easily. Presumably NSPredicates created on earlier systems just don’t allow these conditional expressions.

NSError userInfoValueProviderForDomain

Not sure where this is being used, but I’d guess it’s easily bypassable.

—Jens
Reply all
Reply to author
Forward
0 new messages