Zstd: gzip рдФрд░ zstd . рдХреЗ рдмреАрдЪ рдЕрдВрддрд░

рдХреЛ рдирд┐рд░реНрдорд┐рдд 19 рд╕рд┐рддре░ 2017  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: facebook/zstd

рд▓рд┐рдирдХреНрд╕ рдкрд░ zstd: рджреЛ рдЕрд╡рд▓реЛрдХрди

1) рдЕрдЧрд░ рдореИрдВ рдПрдХ рдмрдбрд╝реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкреАрдбрд╝рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП gzip рдкреНрд░рд╛рд░рдВрдн рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдпрджрд┐ рдореИрдВ ^C рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ gzip рдХреЛ рдорд╛рд░рддрд╛ рд╣реВрдВ, рддреЛ gzip рд╕рдорд╛рдкреНрдд рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╣рдЯрд╛ рджреЗрдЧрд╛ред zstd рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ gzip рдХрд╛ рд╡реНрдпрд╡рд╣рд╛рд░ рдмреЗрд╣рддрд░ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдкреВрд░реНрдг рдпрд╛ рджреВрд╖рд┐рдд рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рд╣реЛрдиреЗ рд╕реЗ рдмреЗрд╣рддрд░ рд╣реИ рдХрд┐ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рди рд╣реЛред

2) рдХрд┐рд╕реА рдлрд╝рд╛рдЗрд▓ рдХреЛ рд╕рдВрдкреАрдбрд╝рд┐рдд рдпрд╛ рд╡рд┐рдШрдЯрд┐рдд рдХрд░рддреЗ рд╕рдордп, zstd рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓ (рд╕реНрдЯреНрд░реЗрд╕ рд╕реЗ) рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ:
open("file.zst", O_WRONLY|O_CREAT|O_TRUNC, 0666) = 3
gzip рдФрд░ xz рд╕рдорд╛рди рд╕рд┐рд╕реНрдЯрдо рдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдореЛрдб 0600 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдлрд╝рд╛рдЗрд▓ рдмрдВрдж рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж рд╡реЗ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдореЛрдб рдХреЛ рд╡рд╛рдВрдЫрд┐рдд рдореЛрдб рдореЗрдВ рд╕реНрд╡рд┐рдЪ рдХрд░рддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдХреЛрдИ рдХрд╛рд░рдг рд╣реИ рдХрд┐ zstd 0666 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ? рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ 0600 рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛: рдлрд╝рд╛рдЗрд▓ рддреИрдпрд╛рд░ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рди рджреЗрдВред

feature request question

рд╕рднреА 4 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

  1. ^C рдИрд╡реЗрдВрдЯ рдХреЛ рдЯреНрд░реИрдк рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд┐рдЧреНрдирд▓ рд╣реИрдВрдбрд▓рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рдореИрдВрдиреЗ рдЕрднреА рддрдХ рдЗрд╕ рдкрд░ рдЧреМрд░ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдореИрдВ рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рдЪрд┐рдВрддрд╛рдУрдВ рд╕реЗ рднреА рдЪрд┐рдВрддрд┐рдд рд╣реВрдВред

  2. рдЖрдкрдХрд╛ рдЯреНрд░реЗрд╕ рд╣рдорд╛рд░реЗ рдХреЛрдб рд╕реЗ рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд╣реИред
    рдЧрдВрддрд╡реНрдп рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЙрд▓ рдпрд╣рд╛рдБ рд╣реИ:
    https://github.com/facebook/zstd/blob/dev/programs/fileio.c#L324
    рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдорд╛рдирдХ fopen("name", "wb"); , рд╣рдо рдХрд┐рд╕реА рднреА рд╕рдВрдкрддреНрддрд┐ рдмрд┐рдЯ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВред
    рдпрд╣ рдЖрдкрдХреЗ рд╕рд┐рд╕реНрдЯрдо рдкрд░ рдЗрд╕ рдЯреНрд░реЗрд╕ рдореЗрдВ рдЕрдиреБрд╡рд╛рдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣реЛрддрд╛ рд╣реИ, рдмрд╕ рдпрд╣ рдЬрд╛рди рд▓реЗрдВ рдХрд┐ рдЗрд╕ рдкрд░ рд╣рдорд╛рд░рд╛ рдирд┐рдпрдВрддреНрд░рдг рдирд╣реАрдВ рд╣реИред
    рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рд╣рдо рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рдХрд╛рд░рдгреЛрдВ (рдФрд░ рдХрдо рдирд┐рд░реНрднрд░рддрд╛ рд╕рд┐рд░рджрд░реНрдж) рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рд╕реА рдХреЗ рдЬрд┐рддрдирд╛ рд╕рдВрднрд╡ рд╣реЛ рдЙрддрдирд╛ рдХрд░реАрдм рд░рд╣рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ: zstd рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдореИрдВ рдЧрддрд┐ рдФрд░ рд╕рдВрдкреАрдбрд╝рди рдЕрдиреБрдкрд╛рдд рд╕реЗ рдЪрдХрд┐рдд рд╣реВрдБ! рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛!

рдХреГрдкрдпрд╛ рдЗрд╕ рдЯрд┐рдХрдЯ рдХреЛ рдмрдВрдж рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрд╡рддрдВрддреНрд░ рдорд╣рд╕реВрд╕ рдХрд░реЗрдВред рдореЗрд░реЗ рджреЛ рдЕрд╡рд▓реЛрдХрди рдХреЗрд╡рд▓ рдорд╛рдореВрд▓реА рдирд╛рдЗрдЯрдкрд┐рдХреНрд╕ рд╣реИрдВ рдФрд░ рдпрджрд┐ рдЖрдк рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓реЗрддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдмрд┐рд▓реНрдХреБрд▓ рдареАрдХ рд╣реИред

  1. рдореИрдВ рд╕рд╣рдордд рд╣реВрдВ рдХрд┐ рдЯреНрд░реИрдкрд┐рдВрдЧ ^C рдХреЗ рд▓рд┐рдП рд╕рд┐рдЧреНрдирд▓ рд╣реИрдВрдбрд▓рд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
  2. рджрд┐рд▓рдЪрд╕реНрдкред рдореИрдВрдиреЗ xz рдХреЗ рд╕реНрд░реЛрдд рдХреЛрдб рдореЗрдВ рджреЗрдЦрд╛ рдФрд░ рд╡реЗ рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдХреЛрдб рдХреЗ рд╕рд╛рде рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рддреЗ рд╣реИрдВ:
      int flags = O_WRONLY | O_BINARY | O_NOCTTY | O_CREAT | O_EXCL;
      #ifndef TUKLIB_DOSLIKE
          flags |= O_NONBLOCK;
      #endif
      const mode_t mode = S_IRUSR | S_IWUSR;
      dest_fd = open( dest_name, flags, mode );

рд╡реЗ fopen() рдХреЗ рдмрдЬрд╛рдп open() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ - рдФрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рдЖрдЙрдЯрдкреБрдЯ рдлрд╝рд╛рдЗрд▓ рдХреА рдЕрдиреБрдорддрд┐ рдмрд┐рдЯреНрд╕ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

рдареАрдХ рд╣реИ, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ xz рд▓рдХреНрд╖реНрдп POSIX рдЕрдиреБрдкрд╛рд▓рди рдкреНрд░рдгрд╛рд▓реА,
рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЧреИрд░-рдкреЙрдЬрд╝рд┐рдХреНрд╕ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рд╕рдВрдЧрдд рдирд╣реАрдВ рд╣реЛрдиреЗ рдпрд╛ рдХрд╕реНрдЯрдо рд░реИрдкрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреА рдХреАрдордд рдкрд░ рдкреЙрдЬрд╝рд┐рдХреНрд╕ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХрд╛ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддрд╛ рд╣реИ (рд╡рд┐рдВрдбреЛрдЬрд╝ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЖрддрд╛ рд╣реИ)ред

zstd рдкреЛрд░реНрдЯреЗрдмрд┐рд▓рд┐рдЯреА рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдмреЗрд╣рддрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдпрдерд╛рд╕рдВрднрд╡ рдорд╛рдирдХ-рд╕реА рдмрдирдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддрд╛ рд╣реИред

рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ, рд╣рдо рдХрднреА-рдХрднреА рдХреБрдЫ рдУрдПрд╕-рдирд┐рд░реНрднрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЬрдм рдХреЛрдИ рдорд╛рдирдХ-рд╕реА рд╕рдордХрдХреНрд╖ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдРрд╕реЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рд╣рдо рдХрдИ рд▓рдХреНрд╖реНрдпреЛрдВ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрдИ рдкреНрд░рдХрд╛рд░ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдЕрд╕рдорд░реНрдерд┐рдд рд▓реЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛рдУрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЕрдХреНрд╖рдо рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╡реЗ рдЧреИрд░-рдЖрд╡рд╢реНрдпрдХ рд╣реЛрддреЗ рд╣реИрдВ)ред

рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдФрд░ рдЬрд╛рдирдиреЗ рдХреЗ рдмрд╛рдж, рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдлрд╝рдВрдХреНрд╢рди signal() рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдорд╛рдирдХ C рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ , рдЬреЛ рдЗрд╕реЗ рдмрд╣реБрдд рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдкреЛрд░реНрдЯреЗрдмрд▓ рдмрдирд╛рддрд╛ рд╣реИред

рдирд╡реАрдирддрдо dev рд╢рд╛рдЦрд╛ рдЕрджреНрдпрддрди рдореЗрдВ, рдореИрдВрдиреЗ Ctrl-C рдЯреНрд░реИрдкрд┐рдВрдЧ рдХреЛ zstd cli рдореЗрдВ рдЬреЛрдбрд╝рд╛ред
Ctrl-C рджрдмрд╛рдиреЗ рдкрд░, рдпрд╣ рдЕрдм рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдСрдкрд░реЗрд╢рди рдЖрд░реНрдЯрд┐рдлреИрдХреНрдЯ (рдЕрдзреВрд░реА рдЧрдВрддрд╡реНрдп рдлрд╝рд╛рдЗрд▓) рдХреЛ рдорд┐рдЯрд╛ рджреЗрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

rgdoliveira picture rgdoliveira  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

g666gle picture g666gle  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Hedda picture Hedda  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

icebluey picture icebluey  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

pjebs picture pjebs  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ