----- Original Message ----- From: "Nemanja Corlija" <[EMAIL PROTECTED]>


I'd be happy to see that list if its not a problem.

- Only one DLL to redistribute instead of two.

- Better side-by-side support. If multiple apps are using SQLite, there's never any danger of them misbehaving because one app overwrote a sqlite3.dll with a different version.

- You never have to worry whether a newer sqlite3.dll will work with an older wrapper, or a newer wrapper will work with an older sqlite3.dll. For example, checkin 3040 and several other sqlite checkins which changed the behavior of API calls. Just copying the newer sqlite3.dll could've potentially broken your app using an older wrapper. By combining them, there's less opportunity for someone to accidentally screw something up.

- No need to maintain backward compatibility for each revision of the wrapper against previous versions of sqlite3.dll. This keeps the wrapper codebase streamlined. For example, when checkins 3062 and 3069 introduced new API functionality, I was able to immediately rip out all the complex code I had used to generate this information manually. I'd have had to leave that in and used some conditional branching to maintain backward compatiblity if the wrapper and core binary were separate.

- The core sqlite3 codebase is optimized for .NET interop, resulting in significant speed gains with .NET.

- Compact Framework support. The sqlite.org's binary sqlite3.dll won't run on CE, nor will a CE build of sqlite3.dll run with any .NET wrapper on CE due to the interop restrictions in the Compact Framework. The only way to get .NET and SQLite to play nice on the Compact Framework is to write optimized interop entrypoints.

Robert


Reply via email to