Fonctions de minimisation du corpus

function HPDFMinimizeCorpusCase(const Input: TBytes;
  const Predicate: THPDFFailurePredicate; MaximumAttempts: Integer;
  out AInfo: THPDFCorpusMinimizationInfo): TBytes;

Le réducteur supprime d'abord les plages complètes d'objets indirects, puis applique des réductions d'intervalles d'octets de plus en plus petites

Un candidat n'est accepté que lorsque le prédicat signale toujours la signature d'échec d'origine

AInfo signale les tentatives, les réductions acceptées, les plages d'objets supprimées, les plages d'octets supprimées, les tailles initiale et finale, ainsi que la signature préservée

Stockage continu du corpus

function HPDFDefaultCorpusStoreOptions: THPDFCorpusStoreOptions;

function HPDFMinimizeAndStoreCorpusCase(const Input: TBytes;
  const Predicate: THPDFFailurePredicate;
  const CorpusDirectory: string;
  const Options: THPDFCorpusStoreOptions;
  out AInfo: THPDFCorpusCaseInfo): Boolean;

function HPDFCorpusCaseInfoToJSON(
  const AInfo: THPDFCorpusCaseInfo): AnsiString;
type
  THPDFCorpusStoreAction = (csaAdded, csaReplaced, csaKeptExisting);

  THPDFCorpusStoreOptions = record
    MaximumAttempts: Integer;
    MaximumInputBytes: Int64;
    MaximumStoredBytes: Int64;
    LockRetryCount: Integer;
  end;

Le magasin dérive un identifiant de cas stable du condensat SHA-256 de la signature d'échec, revalide tout cas existant, minimise à la fois les candidats existant et entrant, puis conserve le plus petit résultat

Un verrou inter-processus sérialise les décisions pour un répertoire de corpus donné, tandis que des fichiers temporaires à écriture directe et un remplacement atomique évitent aux lecteurs d'observer des fichiers PDF ou de métadonnées partiels

THPDFCorpusStoreOptions borne les tentatives de minimisation, les octets entrants, les octets stockés et les nouvelles tentatives de verrou, et THPDFCorpusCaseInfo.Action signale si le cas a été ajouté, remplacé ou conservé

Le schéma secondaire hotpdf.corpus.case.v1 enregistre l'identifiant du cas, la signature d'échec exacte, le SHA-256 du contenu et le nombre d'octets stockés dans un ordre de champs stable

HPDFCompareRegressionResultsDeterministic compare les signatures multi-moteurs répétées dans les domaines analyse, rendu, texte et sauvegarde, et rejette les exécutions instables ou en échec