About Partial Loading

Gen is meant to be a utility library that anyone can use. It is a bit problematic to require someone to have every package that every Gen command uses, especially if they want Gen for only certain commands. If Gen is about convenience commands, then it should grow over time to include many commands across many packages. But as it does that and its usefulness goes up, its usability goes down because it puts extra burden on people to find and install many packages. This is a problem we would like to solve.

The solution we are moving towards is to have Gen try to load what it can based on what the you have available at load-time. If a command needs a missing package then that command will not load, but still the Gen library will load. If you do not need that command, then you do not need to bother with getting the package.

It is expected that this feature will need to evolve out over time.

Suppose you want to know what commands are not being loaded? There you can do a set GenNS::WarnOnFailureToLoadCommand 1 within gen-config.tcl or gen-user-config.tcl, and then when you load Gen it will print out a warning for each package that failed to load and it will tell you what commands that are affected and cannot be used.

For example, if the sqlite3 package is missing, then you would see something like:

Could not load package sqlite3.
These commands cannot be used without package sqlite3:
     Q1
     DecrDbGlobal
     GetDbGlobal
     SetDbGlobal
     IncrDbGlobal
     LinkVarToDbGlobal
     LastId
     RunSqlEnter
     RunSqlInsertIfDoesNotExist
     SqlRecordExists
     SqliteColumnNameAndTypeList
     SqliteColumnType
     SqliteCopyTable
     SqliteRenameColumn
     SqliteColumnNameList
     SqliteTableExists
     QQ
     DbaseRegsub
     ForeachRecord
     RunSqlCreateTable
     UnsetDbGlobal