{"id":16661428,"url":"https://github.com/bodigrim/text-rope","last_synced_at":"2025-03-15T12:30:33.409Z","repository":{"id":56880274,"uuid":"441562019","full_name":"Bodigrim/text-rope","owner":"Bodigrim","description":"A wrapper around Text for fast line/column navigation and logarithmic concatenation","archived":false,"fork":false,"pushed_at":"2024-04-26T22:09:29.000Z","size":105,"stargazers_count":36,"open_issues_count":2,"forks_count":3,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-04-26T23:22:56.729Z","etag":null,"topics":["concatenation","haskell","lines","position","rope","slicing","text","unicode","utf-16"],"latest_commit_sha":null,"homepage":"https://hackage.haskell.org/package/text-rope","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/Bodigrim.png","metadata":{"files":{"readme":"README.md","changelog":"changelog.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-12-24T22:03:54.000Z","updated_at":"2024-04-26T23:22:58.079Z","dependencies_parsed_at":"2024-03-30T13:49:08.356Z","dependency_job_id":null,"html_url":"https://github.com/Bodigrim/text-rope","commit_stats":{"total_commits":12,"total_committers":1,"mean_commits":12.0,"dds":0.0,"last_synced_commit":"3b8bb1260dc77cf9a7ced21144b8e06f4cbd97fc"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bodigrim%2Ftext-rope","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bodigrim%2Ftext-rope/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bodigrim%2Ftext-rope/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Bodigrim%2Ftext-rope/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Bodigrim","download_url":"https://codeload.github.com/Bodigrim/text-rope/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243730879,"owners_count":20338730,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["concatenation","haskell","lines","position","rope","slicing","text","unicode","utf-16"],"created_at":"2024-10-12T10:34:59.674Z","updated_at":"2025-03-15T12:30:32.932Z","avatar_url":"https://github.com/Bodigrim.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# text-rope [![Hackage](http://img.shields.io/hackage/v/text-rope.svg)](https://hackage.haskell.org/package/text-rope) [![Stackage LTS](http://stackage.org/package/text-rope/badge/lts)](http://stackage.org/lts/package/text-rope) [![Stackage Nightly](http://stackage.org/package/text-rope/badge/nightly)](http://stackage.org/nightly/package/text-rope)\n\nA wrapper around `Text` for fast line/column navigation and logarithmic concatenation.\n\nHere are benchmarks for 1000 edits over 70K text:\n\n```\nSplit at position\n  Unicode\n    text-rope:\n      3.09 ms ±  94 μs\n    yi-rope:\n      49.4 ms ± 1.4 ms, 15.98x\n  UTF-16\n    text-rope:\n      3.09 ms ± 106 μs\n    rope-utf16-splay:\n      10.6 ms ± 337 μs, 3.44x\nSplit at offset\n  Unicode\n    text-rope:\n      3.04 ms ± 112 μs\n    core-text:\n      14.0 ms ± 297 μs, 4.59x\n    yi-rope:\n      6.25 ms ± 102 μs, 2.06x\n  UTF-16\n    text-rope:\n      3.40 ms ±  70 μs\n    rope-utf16-splay:\n      8.92 ms ± 169 μs, 2.62x\n```\n\nFor 10000 edits over 700K text:\n\n```\nSplit at position\n  Unicode\n    text-rope:\n      62.9 ms ± 4.2 ms\n    yi-rope:\n      568  ms ±  31 ms, 9.04x\n  UTF-16\n    text-rope:\n      61.0 ms ± 3.9 ms\n    rope-utf16-splay:\n      325  ms ±  13 ms, 5.32x\nSplit at offset\n  Unicode\n    text-rope:\n      59.6 ms ± 3.8 ms\n    core-text:\n      209  ms ±  15 ms, 3.50x\n    yi-rope:\n      105  ms ± 7.4 ms, 1.76x\n  UTF-16\n    text-rope:\n      63.6 ms ± 5.3 ms\n    rope-utf16-splay:\n      230  ms ± 9.0 ms, 3.62x\n```\n\nFor 100000 edits over 7M text:\n\n```\nSplit at position\n  Unicode\n    text-rope:\n      963  ms ±  43 ms\n    yi-rope:\n      6.379 s ± 138 ms, 6.62x\n  UTF-16\n    text-rope:\n      988  ms ±  19 ms\n    rope-utf16-splay: T\n      57.408 s ± 4.24 s, 58.12x\nSplit at offset\n  Unicode\n    text-rope:\n      1.014 s ±  70 ms\n    core-text:\n      3.008 s ± 138 ms, 2.97x\n    yi-rope:\n      1.716 s ±  76 ms, 1.69x\n  UTF-16\n    text-rope:\n      1.065 s ±  53 ms\n    rope-utf16-splay:\n      38.852 s ± 568 ms, 36.49x\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbodigrim%2Ftext-rope","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbodigrim%2Ftext-rope","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbodigrim%2Ftext-rope/lists"}