{"id":20019682,"url":"https://github.com/kddnewton/yarp-identifiers","last_synced_at":"2025-03-02T03:28:50.326Z","repository":{"id":191270741,"uuid":"684302307","full_name":"kddnewton/yarp-identifiers","owner":"kddnewton","description":null,"archived":false,"fork":false,"pushed_at":"2023-08-28T21:45:48.000Z","size":3,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-01-12T16:09:32.525Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/kddnewton.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null}},"created_at":"2023-08-28T21:33:36.000Z","updated_at":"2023-08-29T00:44:43.000Z","dependencies_parsed_at":"2023-08-29T05:35:26.987Z","dependency_job_id":null,"html_url":"https://github.com/kddnewton/yarp-identifiers","commit_stats":null,"previous_names":["kddnewton/yarp-identifiers"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kddnewton%2Fyarp-identifiers","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kddnewton%2Fyarp-identifiers/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kddnewton%2Fyarp-identifiers/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/kddnewton%2Fyarp-identifiers/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/kddnewton","download_url":"https://codeload.github.com/kddnewton/yarp-identifiers/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":241453848,"owners_count":19965261,"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":[],"created_at":"2024-11-13T08:28:26.456Z","updated_at":"2025-03-02T03:28:50.296Z","avatar_url":"https://github.com/kddnewton.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# yarp-identifiers\n\nIn the [https://github.com/ruby/yarp](yarp) project, we need to parse identifiers in Ruby source. Frequently our parsing of identifiers shows up in our performance profiles (because identifiers are very common in Ruby code). In order to parse them, you start at some starting point (a letter or an underscores) and then read as many letters, digits, and underscores as you can. In Ruby this is actually encoding dependent, as you can encode your source in dozens of encodings. We want to only bother attempting to optimize the default path here (`UTF-8`).\n\nIn YARP, we use a lookup table to determine if a character is a letter, digit, or underscore. This is a 256 byte table, and we index into it with the character's byte value.\n\nThis repository is exploring other approaches, like using SIMD instructions to do the lookup or using SIMD instructions to check against ranges of characters. At the moment it is only attempting to do this with ASCII.\n\nTo compile and run the code, run `make`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkddnewton%2Fyarp-identifiers","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fkddnewton%2Fyarp-identifiers","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fkddnewton%2Fyarp-identifiers/lists"}