 :

  0.20  15.01.05  Hugs-   
  0.21   5.02.05  PPMD, LZMA, LZP; -m1..-m6x, -t, -kb, CRC,  /
  0.22  19.02.05  GRZip, BCJ-x86, -js,   -m, full RE in filenames,    GHC 6.2.1
  0.23  26.04.05  GHC 6.4, FAR plugin, -tl/-tk, arc.ini, %FREEARC, -cfg-, -o, -y,  ,  read-ahead, HEADER BLOCK
  0.24  16.12.05  Compression Library, Extractor, SFX; y/c/cw/k/s/-z/-k/-sfx; --Limit*Mem; Unicode, >4gb, 300 bytes/file
  0.25   1.11.06  lzma 4.43, smart update of solid blocks
  0.30  15.11.06  dict, ppmonstr; --display, --logfile
  0.31  18.11.06   LZP;   -m: m1x..m7, -m4b/3t, dict+lzp+ppmd/pmm, lzp+lzma; [Compression methods], --print-config
  0.32  06.12.06     (  dict)
  0.33  10.12.06  -dsgecpn;    "- arc.ini"
  0.35  09.01.07  REP:  lzp    
  0.36  22.02.07  r/rr, -ac/-ao, m[f], -d[f], -t/-pt, -w, -lc/-ld    
  0.40  01.01.08  MM, tornado, delta, lzma -mt, ext.compressors, tempfile; encryption, unix version, http+recovery, -sc/far/tc, ^Break, warn/error/fail->logfile+stderr+exitCode, -cfg/-env, -n/-ta/../-sl/-sm


    FreeArc 0.40:

  ,   ,     
   'y'   'ch'   RAR
   ,   ("ch s k c rr"),    -m../--nodata/--crconly
        --recompress
   'lb' -     
    --display   'r'            
      'f'    'r'        
      'o'     . 
      'e'       
      'h'        
      'n'        
  -z    
  !!!TTA   ,  MMDET
     -s64k  TTA, 1mb for mmdet, -m0 when mmdet failed,  {1,2,5,6,8} 
   MM    Compress.hs
  -di = --display, -di+m, -di-=w, -di-- restores default settings
  display explanations for commands too
  lzma 34m->32m:     32 kb, 48 kb, 64 kb...
     map (\x->(x,(x*23 `div` 2+4)*4 `div` 3)) $ take 10 $ iterate (*2) 3
        1.5gb/768mb/...
      (parsePhysMem "50%" - compressionMem)      compressionMem   . -
     compressorGetCompressionMem, getPhysicalMemory        2gb
  -m8/-m9 -     -  Int
            
   Tornado!!! -m1=tor:3, -m2=tor
  MVar oneIOAtTime    I/O 
          disk seeks (144->120 .  -m1)
   $audio  arc.groups   $wav, $rgb -> $bmp
     (  )  arc.ini!!!
  MM preprocessor + grzip/lzma for $bmp compression
  TTA, MMDET, MM: offset field
   entropy analyzer:    1*16  2*8,  2*24  6*8,           5%
      help
  DICT:  ,      ,   - FF F0
    -      
  -ms:  -m0  -m1    
  added building guide
   : -mlzma/ppmd
     m6p..m9p/q, lzp    -m#xt
   MM    Compress.hs
   : arc e a -dpdir
        help   
  "-mt"   LZMA multithreading (enabled by default)!!!
   external compressors: CCM, ECM, PRECOMP, PackJPG
   "--"   help
     [Compression methods] (   ) - #  non-#
  ghc 6.6.1: ^Break !
  Tornado: form.pm
  TTA: disable 24+ bit samples processing
       storing of non-compressible blocks
  $iso,$zip,$jpg groups, #p$iso=..., added more files to $wav/$bmp, $mod group for stm/mod/s3m modules
  Fixed:     ( exit  :)
  "tempfile"     ,     
       "-lc"  ! -m6   !!!
           CUI
    "tempfile":           
     "tempfile"  CUI
  wav/bmp/jpg files: -s-
  Fixed: external compressors -       :)
       ,       
  Fixed:       external /lzma  -mt+
        -d  -ao
  Fixed: -ao -r     
  Done:         CUI/Error
      dict/dict+lzp (blocksize*2  , blocksize/2  ),
      -       -m3r/-m4  64 !
     limitMemoryUsage    mem+NewMem < 1.05*memlimit
  tempfile:      ,    -ld
  "+RTS -c" 
      blockSize   2*blockSize
  MM: fixed bug with undefined offset after failed autodetection (failed compression of ruby/*.bmp)
  "--debug"   -di+$#;      -
  "checked read nullPtr 0"  checkingCtrlBreak:      
           .  ,   ,
      "tempfile"/external compressors.      , 
             maximum     
     sum,    .    ,     :
  -mx = -m9, -max = -m9p!
  "Memory used..."   , freearcLimitDictionary - 
  mm+grzip -    , grzip blocksize = solidblocksize+100
  "-mm" -  -: mm-, mmfast, mm=max, mm/mm+ (max/fast autodetection)
  COMPRESSION_METHOD
      int doit (char *what, int param, void *data, CALLBACK_FUNC *callback)
      what: "compress", "decompress", "setCompressionMem", "limitDictionary"...
      data:     ,     
      param&result:   ,      
      typedef int CALLBACK_FUNC (char *what, void *data, int size, CALLBACK_FUNC *callback)
        what: "read", "write1", "stat", "time"
        NULL/0. result<0 -  
  compressionLimitDictionary -        (precomp/ecm!)
  external: limitMemory:           
     lzma:1m+pmm:64m+lzma:1m => 64mb memory used
  -m2x -= dict, grzip/lzp/tor -  :h  setDict/setMem
  ^Break -  logfile, ^Break   -t -   , ^Break  
      ^Break     -     temparchive
      bracketCtrlBreak, handleCtrlBreak
      fileCopy (     )
    aBUFFER_SIZE, aLARGE_BUFFER_SIZE, aHUGE_BUFFER_SIZE
    -m0, . : 4*aBUFFER_SIZE -> 1
  Fixed: a -m1 + ch (--recompress ),  decompression times   
     [,] ,     (-ta,-tb,-tn,-to,-sl,-sm,[-e],-n)
      (mm, tta, tor...),  
  -m3=-m3r, -m2=lzma:fastest/grzip:m4, -m$bmp=
     read-ahead   
  -ms = -m$compressed=rep:8mb:128+tor:2:64k, strcasecmp  UTF8Z
  Fixed: exe+rep+lzma -   
         arc a a -t -mdict:16m+1xb perlhtm
         arc a a -t -mdict+2xb     help
  Fixed TTA: 24-bit, float 32-bit
  Fixed Tornado: tor:1
  Fixed MM: o1048576 -    offset    offset<=bytes
    -m2: lzma->tor, -m2r for lzma stuff
  lzma:1m  directory compression
  dict/lzp/grzip/bcj: fixed double "BYTE *In" problem :) and added memory allocation checks
  -ds=gerpn  gercpn
   getProcessorsCount        
  : dict -   0-31   /  ,   (137, 219, 317 ->  )
  -m2/-m2x: use BCJ preprocessor only for $exe group  (       solid- :( )
  Table preprocessor!!! ("-m=table")
  -m0=lzma:a=1:d=3424k:fb=264:lc=2:lp0:pb0:mf=bt4  -m0=ppmd:o=4  (a-la 7-zip)
  Encryption!!!
    options "p", "hp", "kf", "op", "okf", "ea"
    -ea=aes,blowfish,serpent,twofish/cfb,ctr; also -ea=aes+twofish/ctr+serpent
    key+checkCode <- Pbkdf2Hmac (password, salt, keySize+2)
    aes-128, blowfish-64, :r=rounds:n=numIterations
    systemRandomData + fortuna PRNG  generateRandomBytes
  -mcd- (-mc-table), -mce- (-mc-exe), -mcl- (-mc-lzp), -mcr- (-mc-rep), -mcz- (-mc-dict)
  -mcc- (-mc-$bmp), -mca- (-mc-$wav), -mct- (-mc-$text)
  Linux-!!!
    GetPhysicalMemory, GetProcessorsCount, getThreadCPUTime (todo: gettid/times/getrusage)
     -  /etc, SFX  /usr/lib or /usr/local/lib, GetExeName
    UTF-8 for filelist/screen/filenames/cmdline encoding, >4gb files support
  Fixed:    ini-  "C:\temp\\Arc.exe a a"  (fileGetBinary + linesCRLF)
  -sc:   filelists, comment files, ini/groups files
     to do: terminal, logfile, filenames in filesystem, program arguments, filenames in archive directory
     to do: -scFILELIST=UTF-8...
  -pt => -tp, -ea => -ae
       +   /
  Warnings
      warnings     "All OK" (   -di+n)
      : 0 - ok, 1 - warnings, 2 - fatal error, 255 - ^Break
    errors & warnings (     -  0:\a.arc   )
           stderr
  -env=ENVVAR, -env-; -cfg=alternative.ini      
  : 288   , 174  CompressionLib, 474  FreeArc
   :
    OemToChar -> OemToCharBuff  -   \0
    ppmd/pmm:o - /   SetCompressionMem
    --append       
    "arc a a -x*.doc"   doc-   :)
    "m"    ,      
       ,   []
    Wildcards    ( **)   
    "arc a a @list" +     "list" -       
      -n/-sl/-sm/-ta/-tb/-tn/-to -      
    -sl/-sm -  ;)))
    "arc t *" when no archives exist
    "-se100f"  
  "-lc75p" = "-lc75%"
    "arc j archive"       
  Used tta:m1 for -m1$wav, mm:d1+tor:2 for -m1/-m2$bmp
  rep -     8 .    delphi  dll.dll  -m6(b)
    dll700: 558,501,826->557,329,150 (171.983.631->171.705.165)
    delphi: 308,633,068->308,632,781 ( 71.672.004-> 71.694.135)
    ghc:    258,373,585->258,374,297 ( 24.869.817-> 24.880.397)
   tor:1..4/lzp:h13..15 -   
   tornado/table, table->delta
  FAR plugin:        
                  ,   
                  : move/rr/encryption/-w
  TotalCmd:        
  BCJ: filter updated to 4.49 version - 2x faster!
  solid block size = sum(filesize)+512  ( tor     256)
  -m1$exe=exe+1xb (+2% compr. -10% speed)
  mm: -d1/2       (64 1*8. 3*8, 1*16, 3*16)
            512/ 
      (  3/,    -m1..-m3)
  -m#p$jpgsolid = precomp+rep:32
   :
    "arc a a c:\dir\file"     ,  "arc x a"   
    "arc x -dpc:\win2" -   win2; "arc x -dpc:" -   ; "arc x a -dp\"; "arc x a -dpc:\"
    "arc a a \*"; "arc a a c:\*"; "arc a a c:*"
    "arc x a -dp/121"; "arc x a -dp121"   .   a.arc
  -ep..-ep3
  FAR plugin: 64-bit filesizes (support for archives larger than 4gb)
  Unarc: 'l'/'v' commands with unicode support  (unarc v --noarcext -- a.arc)
  Total Commander: much faster archive open operation
  Fixed -m1 mode in linux (removed huf2 - second huffman tree, incompatible with -fstrict-aliasing)
  Tornado fixed bugs:
      MM       
     match'  buf      ,      1  
        >256         
        ,     ,     
    External compressors:
    [External compressor:ccm123,ccmx123,ccm125,ccmx125]
    mem = 276
    packcmd   = {compressor} c $$arcdatafile$$.tmp $$arcpackedfile$$.tmp
    unpackcmd = {compressor} d $$arcpackedfile$$.tmp $$arcdatafile$$.tmp
    datafile   = $$arcdatafile$$.tmp
    packedfile = $$arcpackedfile$$.tmp
  500    -   opt_reorder,      ge ( -ds=gerpn)
  Unix: ^Break handling
  -md        
     ftp/http!
    --proxy, --bypass: http://msdn2.microsoft.com/en-US/library/aa383996.aspx (","   )
    unix: libcurl, --proxy
  Fixed problem: archiver freezed with -dm9
           (-di+$, -di+#)
      ,       
     14% -> 9%  dll100.dll (rep - "quasiwrite")
    external compressors ("quasiwrite")
     10%     -   external
        callback
     -      (  ghc)
       ,    ( ,  ghc -m3)
          (-   10)
    a+x:          (      ,    )
    rep_compress, delta_compress -   
     (     ,      r+w )
    indicatorThread
      (    )
        ( 0-1023,4096-8191;  ,   http range)
      "arc r archive --original[=url] --save-bad-ranges=file"
     "fileOpen original"   
     rec_sectors==0 (aREC_VERSION="0.40")
         recovery record
      scan/add_rr/recovery
       --original   
    --original   -  URL   files.bbs/descript.ion
    --original?get_url       -  "get_url arcname"   URL 
        URL -  
      ( 'r/rr',  '-rr')
     -rr0%  -rr0 (  CRC 4- )
    -rr0%;4kb  -rr0*64kb
       "28 errors/sectors (56 kbytes)" (      )
     CRC recovery   recovery record
  strip.exe   
  unix:             
         cmd  sh
  condPrintLineLn "k" "All OK"
  rep -    4
    exe  $iso/$precomp methods  arc.ini
   :
    freearc.addon: %LQA + -sclANSI
    -m5p extract - non-exhaustive patterns in function callback (euphoria)

