{"action":"created","issue":{"url":"https://api.github.com/repos/racket/typed-racket/issues/126","labels_url":"https://api.github.com/repos/racket/typed-racket/issues/126/labels{/name}","comments_url":"https://api.github.com/repos/racket/typed-racket/issues/126/comments","events_url":"https://api.github.com/repos/racket/typed-racket/issues/126/events","html_url":"https://github.com/racket/typed-racket/pull/126","id":72603041,"number":126,"title":"Add unsafe require/provide operations","user":{"login":"takikawa","id":64192,"avatar_url":"https://avatars.githubusercontent.com/u/64192?v=3","gravatar_id":"","url":"https://api.github.com/users/takikawa","html_url":"https://github.com/takikawa","followers_url":"https://api.github.com/users/takikawa/followers","following_url":"https://api.github.com/users/takikawa/following{/other_user}","gists_url":"https://api.github.com/users/takikawa/gists{/gist_id}","starred_url":"https://api.github.com/users/takikawa/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/takikawa/subscriptions","organizations_url":"https://api.github.com/users/takikawa/orgs","repos_url":"https://api.github.com/users/takikawa/repos","events_url":"https://api.github.com/users/takikawa/events{/privacy}","received_events_url":"https://api.github.com/users/takikawa/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":8,"created_at":"2015-05-02T07:18:21Z","updated_at":"2015-05-19T02:03:11Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/racket/typed-racket/pulls/126","html_url":"https://github.com/racket/typed-racket/pull/126","diff_url":"https://github.com/racket/typed-racket/pull/126.diff","patch_url":"https://github.com/racket/typed-racket/pull/126.patch"},"body":"This adds a new `typed/racket/unsafe` library that is not loaded by default which provides unsafe operations. Right now it just provides `require/typed/unsafe` and `provide/unsafe`.\r\n\r\nPeople have asked for a feature like this for a while (with a revived discussion on it yesterday), so here's a first attempt at it.\r\n\r\nDesign questions: should `#:opaque` clauses also be unsafe? Currently they are not in this PR, but they could be. The reason I didn't make them unsafe is because opaque types seem very pointless without the predicate check.\r\n\r\nOther concerns:\r\n  * should `typed/racket/unsafe` be reserved for a #lang that is unsafe instead?\r\n  * should there be more kinds of unsafety provided?\r\n  * is `unsafe-` prefix better?\r\n\r\nCC @ntoronto as a potential major user."},"comment":{"url":"https://api.github.com/repos/racket/typed-racket/issues/comments/103299377","html_url":"https://github.com/racket/typed-racket/pull/126#issuecomment-103299377","issue_url":"https://api.github.com/repos/racket/typed-racket/issues/126","id":103299377,"user":{"login":"samth","id":244723,"avatar_url":"https://avatars.githubusercontent.com/u/244723?v=3","gravatar_id":"","url":"https://api.github.com/users/samth","html_url":"https://github.com/samth","followers_url":"https://api.github.com/users/samth/followers","following_url":"https://api.github.com/users/samth/following{/other_user}","gists_url":"https://api.github.com/users/samth/gists{/gist_id}","starred_url":"https://api.github.com/users/samth/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/samth/subscriptions","organizations_url":"https://api.github.com/users/samth/orgs","repos_url":"https://api.github.com/users/samth/repos","events_url":"https://api.github.com/users/samth/events{/privacy}","received_events_url":"https://api.github.com/users/samth/received_events","type":"User","site_admin":false},"created_at":"2015-05-19T02:03:11Z","updated_at":"2015-05-19T02:03:11Z","body":"I'm not a fan of option 3. If you want to use `require/unsafe` in your program, you should think long and hard about the preconditions that you're not checking, just as you would do with `unsafe-vector-ref`.\r\n\r\nAlso, note that other downstream modules may have optimization turned on, so using `require/unsafe` means that you have to consider them as well."}}