WEBSITE ALPHA · AI-assisted, source-reviewed documentation · Full-stack docs reconciled 2026-08-26
64x64base

xBase / DBF Ecosystem Feature Comparison

A feature-by-feature comparison of x64base with Harbour, xHarbour, Alaska Xbase++, XSharp, dBASE tools, and Python DBF libraries.

Purpose

This comparison places x64base / DotTalk++ Workbench in the broader xBase, DBF, Clipper, FoxPro, and DBF-library ecosystem.

It is not a replacement-claim table. Some systems here are mature commercial products, some are open-source compilers, some are migration platforms, and some are file-access libraries. x64base is different in emphasis: its primary intent is educational and architectural, with practical database/runtime uses developing around that core.

Reading The Table

  • Yes means the feature is present or clearly supported.
  • Partial means the feature exists in a limited, developing, or scoped form.
  • No means it is not a meaningful feature of that system.
  • Unknown means we should not claim it without better source proof. It is not a claim that the feature is absent, and it is preferred over a plausible guess. Unknowns are omitted or marked; they are not filled in.
  • Not same claim means the project has adjacent capability but not the same architectural goal.

A "Yes" for Harbour or Xbase++ may mean mature application-platform support. A "Yes" for x64base means project/source/runtime evidence exists, but active-beta status still applies unless specifically marked production-ready.

Product / Project Character

Featurex64base / DotTalk++ WorkbenchHarbourxHarbourAlaska Xbase++XSharpdBASE / DBF toolsPython DBF libs
Primary roleEducational-first open xBase/DBF architecture, self-documenting runtime, workbench family, and 64-bit DBF-style research systemOpen xBase compiler/runtimeOpen Clipper/xBase compiler/runtimeCommercial Clipper/xBase modernization platform.NET xBase dialect/compilerCommercial DBF/database products and utilitiesDBF read/write libraries
License / business modelProject/open architecture, active betaOpen sourceOpen sourceCommercialMixed/open/commercial ecosystemCommercialOpen source packages
C++ codebaseYesMostly C runtime/compiler code, not a C++ OO codebase claimMostly C runtime/compiler code, not a C++ OO codebase claimClosed/commercial.NET/C# ecosystemClosed/commercialPython
Compilable application/runtimeYesYesYesYesYesYes, product dependentNo, library use
Source can be changedYesYesYesNo, product source closedPartly, depends on componentNoYes
Production maturityActive beta / educational / researchMature open-source projectMature legacy/open-source projectMature commercial platformActive .NET migration/compiler ecosystemMature commercial/legacy toolsMature for utility/file tasks

Storage, Tables, Memos, And Indexes

Featurex64base / DotTalk++ WorkbenchHarbourxHarbourAlaska Xbase++XSharpdBASE / DBF toolsPython DBF libs
64-bit DBF-style table architectureYes, active DBF_64 lane with wide header/runtime metrics and boundary-canary proof beyond the old 16-bit geometry ceilingsNot same claimNot same claim64-bit Windows platform support, not same DBF_64 claimNot same claimNo, classic DBF familyNo
64-bit memo architectureYes, DTX/FPT64 lane with 64-bit object ids and offsetsNo/unknownNo/unknownNo/unknownNo/unknownClassic DBT/FPTNo, classic memo support only
64-bit indexing architecturePartial: the active CDX/LMDB path carries 64-bit record numbers (RecNo = uint64_t, 8-byte little-endian storage; index-hook and keyed-seek decoders widened, public build 2026-07); classic CNX and legacy .inx are kept 32-bit by design and report their ceiling. Boundary proof past 2^31 is green (unit + sparse-file end-to-end tests)Classic RDD/index ecosystemClassic index ecosystemDBF/NTX/CDX enginesRuntime dependentClassic indexes/toolsUsually no persistent index support
64-bit record navigation and lockingYes, in the public build: GO/GOTO/SKIP/RECNO/TOP/BOTTOM/FIRST/LAST/NEXT/PRIOR, the table-buffer change key, and the record-lock API were widened to 64-bit (CURSOR and INDEX_X64 regression-checked), and the classic recno()/recLength()/recCount()/cpr() accessors now return -1 past their 32-bit range instead of saturating. Addressing past 2^31 is proven end-to-end — the engine reads distinct records at recno 2^31+1/+2 off a sparse x64 tableClassic xBase record modelClassic xBase record modelRuntime/DBE dependentRuntime dependentClassicLibrary/dialect dependent
32-bit/classic DBF supportYes, MS-DOS/classic laneYesYesYesDialect/runtime dependentYesYes
VFP DBF supportYes, VFP headers/types laneDBF/RDD dependentDBF/RDD dependentYesVFP dialect/runtime workYesYes in selected libraries
VFP currency field supportYesDBF/RDD dependentDBF/RDD dependentUnknownRuntime dependentYes in VFP/dBASE variantsYes in dbf; read support varies
Memo fieldsYesYesYesYesRuntime dependentYesYes, library dependent
Vectored long table/field names with fallback manglingYes, x64 metadata supports up to 256-byte table/field names (ceiling raised from 128 in 2026-07; default 128) with classic 10-byte fallback descriptor tokensNot same claimNot same claimProduct dependent.NET/runtime dependentProduct dependentNo
Custom field typesYes — register-once codec registry (type code + codec + on-disk width + flavor eligibility); the built-in I/B/Y/T binary types use the same path, and a worked custom type ships as a demoNot same claimNot same claimProduct/runtime dependent.NET type systemProduct dependentConversion hooks only

Language And Runtime

Featurex64base / DotTalk++ WorkbenchHarbourxHarbourAlaska Xbase++XSharpdBASE / DBF toolsPython DBF libs
xBase-style command languageYesYesYesYesYes/dialectsYesNo
DotScript / script filesYesHarbour scripts/toolsUnknownYes/product dependentYes/compiler/runtime dependentProduct dependentPython scripts only
VariablesYesYesYesYesYesYesPython variables
ConditionalsYes: IF, ELSE, ENDIFYesYesYesYesYesPython
LoopsYes: LOOP, ENDLOOP, WHILE, UNTIL, SCAN, ENDSCANYesYesYesYesYesPython
Script nestingYes, currently one levelYes/language dependentYesYesYesProduct dependentPython
Scalar functionsYes, runtime catalog present; SYSFUNC promotion lane still maturingYesYesYesYesYesPython/library functions
Object-oriented supportHybrid C++ object model for DB areas, memos, workspaces, and workbench servicesLanguage-level class/object features exist, but the public implementation is mostly C and should not be described as C++ OO architectureLanguage-level class/object features exist, but the public implementation is mostly C and should not be described as C++ OO architectureYes, Xbase++ platform/language supportYes, .NET class/object modelProduct dependent; do not generalize classic DBF tools as OOPython object APIs, not DBF engine OO architecture
Compile to native/runtime applicationYesYesYesYesYes/.NETYes/product dependentNo

Data Mutation And Safety

Featurex64base / DotTalk++ WorkbenchHarbourxHarbourAlaska Xbase++XSharpdBASE / DBF toolsPython DBF libs
Record mutationYes: REPLACEYesYesYesYesYesAPI assignment/write
Calculated mutationYes: CALC, CALCWRITEYes/language expressionsYesYesYesProduct dependentPython expressions
Multi-field mutationYes: MULTIREP / replace multi laneYes/app codeYes/app codeYes/app codeYes/app codeProduct dependentPython code
Buffered table editingYes: table buffer, dirty/stale, commit/rollback lifecycleVaries by RDD/runtimeVariesYes/mature product behaviorRuntime/database dependentProduct dependentObject/write semantics only
Dirty/stale state reportingYesRuntime dependentRuntime dependentProduct dependentDatabase dependentProduct dependentNo native DBF engine state
Commit/rollbackPartial: table-buffer lifecycle, not full ACID RDBMS claimBackend dependentBackend dependentProduct/database dependentDatabase dependentProduct dependentNo native DBF transaction engine
Record lockingYesYesYesYesRuntime/database dependentYes/product dependentUsually limited/no full lock manager
Multi-user concurrencyPartial/developingMature xBase/RDD dependentMature xBase/RDD dependentMature commercialDatabase dependentProduct dependentUsually no

Relational, SQL, And Database Behavior

Featurex64base / DotTalk++ WorkbenchHarbourxHarbourAlaska Xbase++XSharpdBASE / DBF toolsPython DBF libs
Work areas / DB areasYesYesYesYesRuntime dependentYesNo
Workspace wrapper over areasYesNot same claimNot same claimProduct/project dependentRuntime dependentProduct dependentNo
Workspace snapshot to a plain-text fileYes: .dtschema captures areas, index attachments, tag orders, aliases, and declared relations; one command restores 43 areas + 58 relationsNot same claimNot same claimProduct/project dependentRuntime dependentProduct dependentNo
Self-locating snapshot (carries its own data roots)Yes, format v3: a restore resolves against the payload's roots, proven from a deliberately wrong environmentNot same claimNot same claimNot same claimNot same claimNot same claimNo
Session state in the snapshot (cursor positions + selected area)Yes, format v3: positions restored, then relations refreshed so children re-slave to restored parentsNot same claimNot same claimNot same claimNot same claimNot same claimNo
Workspace stored inside a database tableYes: WORKSPACE SAVE <name> MEMO writes the snapshot into a memo field of a self-creating catalog, attributed, versioned by supersede, byte-verified on writeNot same claimNot same claimNot same claimNot same claimNot same claimNo
Whole small database carried in one memo fieldYes: MINIDB container carries posture + every table and index byte (94 KB for a 13-table system), oracle-verified as a unitNot same claimNot same claimNot same claimNot same claimNot same claimNo
Hydrate a stored database into RAM on demandYes: from disk or from the memo itself -- 24 files / 92 KB in the 65-95 ms range, census cross-checked, dropped by unmountNot same claimNot same claimNot same claimNot same claimNot same claimNo
Multiple workspaces simultaneously residentNo -- load is a swap, not co-residency; the naming and residency hazards are measured and registered before any buildNot same claimNot same claimProduct/project dependentRuntime dependentProduct dependentNo
Relations (navigational model)Yes: REL, relation tree, relation-aware browse; declared edges followed by traversalYes/xBase modelYesYesRuntime dependentYes/product dependentNo native
SQL SELECT over native DBF tablesPartial: SQLSEL SELECT with WHERE, ORDER BY, LIMIT, COUNT(*), oracle-verified against SQLite; no JOIN or GROUP BY yetVendor site lists "Native RDDs, SQL, ODBC" as connectivity features; SQL over local DBF not evidenced thereUnknownYes: Universal-SQL runs SELECT/INSERT/UPDATE/DELETE against a local or shared DBF table, per vendor feature listDialect model confirmed (a VFP dialect exists); SQL-over-DBF specifics UnknownUnknownNo
Tuple/grid relational viewYesApp/library dependentApp/library dependentProduct/app dependentApp dependentProduct dependentNo
Built-in SQL bridgePartial: SQL, SQLite, import/export, and DDL bridge lanesYes, SQL/ODBC listedUnknownYes, Universal SQL.NET data accessYes/product dependentExternal Python SQL only
Full SQL server/RDBMSNoNo, but can bridgeNo, but can bridgeCan bridge to server DBsUses .NET DBsProduct dependentNo
Referential validationPartial: relations, rules, validation hooksApp/RDD dependentApp/RDD dependentProduct/database dependentDatabase dependentProduct dependentNo native
Database triggersYes: TRIGGER, RULE, VALIDATE lanesApp/RDD/SQL dependentApp/RDD/SQL dependentProduct/database dependentDatabase dependentProduct dependentNo native
Constraints / validationYes, developingApp/RDD dependentApp/RDD dependentYes/product dependentDatabase dependentProduct dependentPython code only
DDLYes: DDL fetch/validate/create DBF/sidecar lanes, with caveatsVia language/librariesVia language/librariesYes/product dependentDatabase dependentYes/product dependentCreate/write DBF varies

Import, Export, And Interchange

Featurex64base / DotTalk++ WorkbenchHarbourxHarbourAlaska Xbase++XSharpdBASE / DBF toolsPython DBF libs
CSV importYesPossible via libraries/codePossible via libraries/codeYes, Universal SQL mentions CSV.NET librariesProduct/tool dependentYes via Python
CSV exportYesPossible via libraries/codePossible via libraries/codeYes.NET librariesProduct/tool dependentYes via Python
DBF import/exportYesYesYesYesRuntime dependentYesYes
SQL import/exportYes, scoped bridgeYes/ODBC/SQL backendsUnknownYesYes via .NETYes/product dependentPython ecosystem
Memo import/exportYes, developing with known CSV newline caveatsYesYesYesRuntime dependentYesYes, library dependent
Data dictionary / metadata catalogsYes, DDICT, META, SelfDoc, manualgen, and website-feed lanesDocumentation/tool dependentTool dependentProduct/workbench dependentTool dependentProduct dependentNo

UI, Tools, And Developer Experience

Featurex64base / DotTalk++ WorkbenchHarbourxHarbourAlaska Xbase++XSharpdBASE / DBF toolsPython DBF libs
CLI interfaceYesYesYesYesYes/toolingProduct dependentScript/API only
TUI interfaceYes: Arctic TUI code-name surface inside the ArcticTalk / DotTalk++ Workbench familyYesYesYes/text modePossibleLegacy/product dependentNo
GUI interfaceYes: Parallel GUI/TUI lane with wxWidgets C++ and Python/Tk workbench lanesYes, UI backendsYes, GT/GUI supportYes, Workbench/GUI/web.NET GUI possibleYesNo native GUI
User-defined menus/windows/dialogsPlanned UI DSL lane; current workbench menus/windows are supplied by the active frontendsVia GUI librariesVia GUI librariesYesYes through .NET/VO GUI pathsYes/product dependentNo native GUI
Smart table browser/listingYes: SmartList, SmartBrowser, SB aliasApp/library dependentApp/library dependentProduct dependentApp dependentProduct dependentNo
Web/application serverNot main claimYes/service/web possibleSome ecosystem supportYes.NET web possibleProduct dependentNo
External app commandsYes: edit/image/web/url/shell lanesApp codeApp codeProduct/app code.NET app codeProduct dependentPython code
Build toolingCMake/WSL/MSVC plus active wx/Tk/GUI lanes; POSIX/Mac requirements still being hardenedhbmk2/build toolingBuild toolingCommercial WorkbenchVisual Studio/.NET toolingProduct installers/toolsPython packaging

Internationalization, Locale, And Data Types

Featurex64base / DotTalk++ WorkbenchHarbourxHarbourAlaska Xbase++XSharpdBASE / DBF toolsPython DBF libs
Language/runtime localizationYes, seeded runtime message catalog plus locale lanes in progressYes/ecosystemUnknownProduct/framework dependent.NET globalization availableProduct dependentPython locale/libs
International text/codepagesIn progress; classic/VFP codepage work should be documented carefullyYesUnknownYes/product dependent.NET Unicode/globalizationProduct dependentVaries by library
Currency data typeYes, VFP currency/newer type support evidencedDBF/RDD dependentDBF/RDD dependentYes/product dependentRuntime dependentYes in VFP/dBASE variantsdbf supports Decimal currency
Date/datetime/logical/numeric typesYesYesYesYesYesYesYes
Message catalogYes, runtime catalog, import/reset/reload scripts, and GUI message-contract laneTooling/ecosystemTooling/ecosystemProduct/framework dependent.NET resourcesProduct dependentPython ecosystem
Locale-aware formattingIn progress; messaging and language seams are in place before wider shell replacementYes/ecosystemUnknownYesYesProduct dependentPython ecosystem

Documentation And SelfDoc

Featurex64base / DotTalk++ WorkbenchHarbourxHarbourAlaska Xbase++XSharpdBASE / DBF toolsPython DBF libs
Built-in helpYesYesYesYesYesYesPackage docs
Self-documenting source/contractsYes, major lane with usage contracts, comment harvesting, and command-help feedsNot same claimNot same claimProduct docs/workbenchTooling/docsProduct docsNo
Manual generationYes, manualgen/MDO lanes plus website publication feedhbdoc/tooling existsUnknownProduct docsTooling/docsProduct docsNo
AI-friendly documentation layerYes, planned/developingNot same claimNot same claimNot same claimNot same claimNot same claimNo
Website generated from docsDeveloping vertical content generationProject website/docsProject docsProduct website/docsProject docsProduct docsPackage docs

Application UI DSL Gap

DotTalk++ can currently define repeatable database/runtime behavior through commands and DotScript, but it does not yet offer a general language for creating custom menus, windows, dialogs, popups, controls, and event handlers.

The proposed lane starts with this syntax seed:

CREATE MENU MainMenu
CREATE WINDOW CustomerWin
CREATE DIALOG EditCustomer
DEFINE BUTTON Save
ON CLICK DO save_customer

This is a planned lane, not current runtime syntax. It would let future DotTalk++ scripts define small database applications that can target Arctic TUI first, then Parallel GUI/TUI, wxWidgets GUI, and web surfaces later.

Unique And Oddball Features

The tables above compare like against like. This one does not: these are behaviors with no column to sit in, because no other project in the family appears to claim them. Some are genuinely novel; some are simply odd, kept because they turned out to be useful or because they teach something. Each states its evidence tier, and none of them is a reason to choose this project over a mature one.

FeatureWhat it isTier
A table whose rows are databasesThe workspace catalog is an ordinary table with an ordinary memo field, and a row's payload can be a whole database -- tables, indexes, posture, cursor positions. The inversion of the usual containment: a database contains tables; here a table contains databasesruntime-proven
Databases that carry their own addressA saved workspace records the roots its tables live under, so restoring it does not depend on the environment being set correctly first. Proven by breaking the environment on purposeruntime-proven
A session you can resume exactlyNot just which tables were open -- where every cursor sat and which area was selected, restored and then relation-refreshed so children re-slave to restored parentsruntime-proven
Hydrate a database into memory in ~70 ms, and write it backA stored database can be stood up in an in-process RAM filesystem, worked at memory speed, and dropped by unmounting. Rollback is an unmount; commit is a write-back to a real disk root, which refuses a shortfall rather than landing a partial workspace and keeps the replaced files as .__wbakruntime-proven (hydrate and write-back)
Memos that never look at their payloadThe memo store is payload-agnostic by design and proven so by an adversarial harness before it was ever asked to carry binary -- which is exactly why databases can ride in it nowruntime-proven
A zoo as a test harnessThe orthogonality proof is a seeded ecology of six "species" -- driver personas with names like Fawn and Serpent -- run for 20,500 generations against a shadow-model oracle. It came from an external AI's whimsical spec, mapped rather than adoptedruntime-proven
Regressions that carry their own doctrineEach regression entry stores not just what it tests but why it exists, what defect birthed it, and what it deliberately does not claim -- and the public list is generated from that same table, so it cannot flatter the engineruntime-proven
Tests that record when they were wrongWhen a test's subject moves, the record says so rather than quietly retuning: a three-month-old memo canary was re-measured green by accident and its status updated in place, next to the original red expectationsruntime-proven
Governance that measures itselfThe project's rulings page is generated from canonical sources and once caught its own maintainers' hand-kept count drifting -- the derived figure won, and the incident is kept visibleruntime-proven
A BBS inside the database engineBoards, threads, posts, permissions and identity, implemented as ordinary tables and reachable from the shell and a loopback daemon -- the collaboration surface dogfoods the storage enginesource-evidenced
An engine that documents itself into its own tablesCommand help, topics, and localization live in DBF tables the engine reads at runtime, and the manuals are generated from them -- the documentation is data the database serves about itselfruntime-proven

Summary Position

x64base should be positioned as:

An educational-first, open, object-oriented hybrid xBase/DBF architecture project exploring 64-bit DBF-style tables, memos, indexes, metadata, command runtime behavior, GUI/TUI tooling, and repeatable self-documentation.

It should not be positioned as:

  • a drop-in Harbour replacement
  • a drop-in Xbase++ replacement
  • a finished commercial DBMS
  • a fully compatible Visual FoxPro clone
  • the only 64-bit xBase-related technology

What is actually claimed for x32

The list above states what x64base is not. This states what it does claim.

For classic 32-bit xBase formats, x64base claims exactly two things: table operations and host services. Table operations means reading and writing DBF-family tables - their headers, field types, records, memos and indexes. Host services means what the surrounding runtime provides.

Nothing else is claimed. Not language compatibility, not runtime compatibility, not feature parity with any 32-bit product, and not application portability.

Comparisons here inform direction; they are not promises. The tables on this page, and the FoxPro / Clipper / Harbour / Xbase++ comparisons elsewhere in these docs, are used to decide which capabilities are worth building and to locate gaps. A "Yes" in a comparison row is not a compatibility guarantee: a comparison describes two systems, whereas a compatibility claim asserts that one will run the other's work.

For the capacity side of this comparison, see x64 Capacity Math. That page separates published ecosystem limits from x64base source-evidenced limits and planned x64 widening work.

Sources