VistaDB 5
Gibraltar VistaDB > Why VistaDB? > Why VistaDB - The Importance of Managed and Typesafe Code
Why VistaDB - The Importance of Managed and Typesafe Code

Microsoft's PEVerify is a tool that verifies if a .NET and Compact Framework compiler has created typesafe meta data and IL code. This tool basically verifies that an assembly is "safe" (i.e. does not access memory directly). When an application can PEVerify, it is deemed verifiably typesafe by the operating system and is granted top level security permissions. Think how applications are downloaded from the Internet today. An end-user cannot be 100% sure that they are installing or running an application that contains a virus or malicious code. There is no clear way other than running virus scanners or installing onto a Virtual Machine.

With Windows Vista and the .NET Framework, applications that are determined to be fully managed and verifiably typesafe get assigned top level security permissions. Applications that do not verify are assigned restrictive permissions and end-users are warned that the application is not safe to run.

VistaDB lets developers build fully managed and typesafe database applications and obtain the least inhibiting level of permissions.

64-Bit, 32-Bit, Intel and ARM Support Without Lifting a Finger

Because VistaDB is compiled as a fully managed assembly targeting MSIL it will automatically be converted to native, high-performance instructions at runtime for a 32-bit or 64-bit application.  If you're using MONO on ARM it will even be optimized for that platform, all from the same assembly.  You don't have to ship a separate native instruction assembly to match your target platform.

CLSCompliant

VistaDB is tagged with the CLSCompliant attribute on the assembly.  This setting also allows VistaDB to run in even the most strict of security settings.

The C# complier ensures we are not using any unsafe code or types. Here are some of the compiler checks:

  • Class and member names cannot differ only by case.
  • Overloaded class methods cannot differ only by out or ref parameter designations.
  • Publicly exposed members cannot start with an underscore ( _ ).
  • Operators can't be overloaded
  • Unsigned types can't be part of the public interface of a class