{"action":"created","issue":{"url":"https://api.github.com/repos/ccache/ccache/issues/413","repository_url":"https://api.github.com/repos/ccache/ccache","labels_url":"https://api.github.com/repos/ccache/ccache/issues/413/labels{/name}","comments_url":"https://api.github.com/repos/ccache/ccache/issues/413/comments","events_url":"https://api.github.com/repos/ccache/ccache/issues/413/events","html_url":"https://github.com/ccache/ccache/issues/413","id":440487398,"node_id":"MDU6SXNzdWU0NDA0ODczOTg=","number":413,"title":"Add support for compression using LZ4","user":{"login":"jrosdahl","id":146927,"node_id":"MDQ6VXNlcjE0NjkyNw==","avatar_url":"https://avatars2.githubusercontent.com/u/146927?v=4","gravatar_id":"","url":"https://api.github.com/users/jrosdahl","html_url":"https://github.com/jrosdahl","followers_url":"https://api.github.com/users/jrosdahl/followers","following_url":"https://api.github.com/users/jrosdahl/following{/other_user}","gists_url":"https://api.github.com/users/jrosdahl/gists{/gist_id}","starred_url":"https://api.github.com/users/jrosdahl/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jrosdahl/subscriptions","organizations_url":"https://api.github.com/users/jrosdahl/orgs","repos_url":"https://api.github.com/users/jrosdahl/repos","events_url":"https://api.github.com/users/jrosdahl/events{/privacy}","received_events_url":"https://api.github.com/users/jrosdahl/received_events","type":"User","site_admin":false},"labels":[{"id":391129027,"node_id":"MDU6TGFiZWwzOTExMjkwMjc=","url":"https://api.github.com/repos/ccache/ccache/labels/feature","name":"feature","color":"0e8a16","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":18,"created_at":"2019-05-05T20:33:08Z","updated_at":"2019-06-16T07:36:56Z","closed_at":null,"author_association":"MEMBER","body":"### Background\r\n\r\nLZ4 has much less overhead than zlib. The compression ratio is not quite as good, but in the same ballpark. The low overhead means that we can enable compression by default without negative consequences for the absolute majority of users. Enabling compression by default also means that we get data integrity checks by default.\r\n\r\n### What to do\r\n\r\n- Add LZ4 support.\r\n  - Bundle liblz4 for optional usage, just like we do with zlib.\r\n- ~Remove zlib support.~\r\n  - ~**Rationale**:  Not keeping support for zlib means less dependencies and less complex code.~\r\n- ~Remove support for disabling compression.~\r\n  - ~**Rationale**: The LZ4 overhead is very small. By not supporting uncompressed files we guarantee that we always have data integrity checksumming in place.~\r\n- I think that it would be a good idea to wait with this task until #411 is done, although it doesn't depend on #411 in principle."},"comment":{"url":"https://api.github.com/repos/ccache/ccache/issues/comments/502428871","html_url":"https://github.com/ccache/ccache/issues/413#issuecomment-502428871","issue_url":"https://api.github.com/repos/ccache/ccache/issues/413","id":502428871,"node_id":"MDEyOklzc3VlQ29tbWVudDUwMjQyODg3MQ==","user":{"login":"afbjorklund","id":10364051,"node_id":"MDQ6VXNlcjEwMzY0MDUx","avatar_url":"https://avatars3.githubusercontent.com/u/10364051?v=4","gravatar_id":"","url":"https://api.github.com/users/afbjorklund","html_url":"https://github.com/afbjorklund","followers_url":"https://api.github.com/users/afbjorklund/followers","following_url":"https://api.github.com/users/afbjorklund/following{/other_user}","gists_url":"https://api.github.com/users/afbjorklund/gists{/gist_id}","starred_url":"https://api.github.com/users/afbjorklund/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/afbjorklund/subscriptions","organizations_url":"https://api.github.com/users/afbjorklund/orgs","repos_url":"https://api.github.com/users/afbjorklund/repos","events_url":"https://api.github.com/users/afbjorklund/events{/privacy}","received_events_url":"https://api.github.com/users/afbjorklund/received_events","type":"User","site_admin":false},"created_at":"2019-06-16T07:36:56Z","updated_at":"2019-06-16T07:36:56Z","author_association":"MEMBER","body":"> zstd seems to use fundamentally new and faster algorithm. Such breakthroughs in algorithms are rare, so if the implementation is solid, we should definitely go for it.\r\n\r\nPlease do. Here is a nice article that compares the difference between the three:\r\nhttps://code.fb.com/core-data/smaller-and-faster-data-compression-with-zstandard/\r\n> \"Some algorithms and implementations commonly used today are zlib, lz4, and xz. Each of these algorithms offers different trade-offs: lz4 aims for speed, xz aims for higher compression ratios, and zlib aims for a good balance of speed and size.\"\r\n\r\nFWIW, both LZ4 and Zstd are actually from the same author (Yann Collet) :-)\r\n\r\nOne nice bonus point is that it features a zlib wrapper:\r\nhttps://github.com/facebook/zstd/tree/dev/zlibWrapper"}}
{"actor":{"display_login":"afbjorklund"}}