GitHub PullRequestReviewCommentEvent at 2014-09-10 01:14:47
Repository: chapel
Actor: thomasvandoren
Payload: {"action":"created","comment":{"url":"https://api.github.com/repos/chapel-lang/chapel/pulls/comments/17338292","id":17338292,"diff_hunk":"@@ -0,0 +1,208 @@\n+/*\n+ * Copyright 2004-2014 Cray Inc.\n+ * Other additional copyright holders may be indicated within.\n+ * \n+ * The entirety of this work is licensed under the Apache License,\n+ * Version 2.0 (the \"License\"); you may not use this file except\n+ * in compliance with the License.\n+ * \n+ * You may obtain a copy of the License at\n+ * \n+ *     http://www.apache.org/licenses/LICENSE-2.0\n+ * \n+ * Unless required by applicable law or agreed to in writing, software\n+ * distributed under the License is distributed on an \"AS IS\" BASIS,\n+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n+ * See the License for the specific language governing permissions and\n+ * limitations under the License.\n+ */\n+\n+use Sort;\n+\n+//\n+// This module defines several iterators that are designed to help\n+// support reasoning about directory and file contents.  At present,\n+// all are serial.\n+//\n+\n+/* iter listdir(path: string, dotfiles=false, dirs=true, files=true, \n+                listlinks=true): string\n+  \n+    listdir() lists the contents of a directory, similar to 'ls'\n+      * path: the directory whose contents should be listed\n+      * dotfiles: should files/directories that start with '.' be listed?\n+      * dirs: should dirs be listed?\n+      * files: should files be listed?\n+      * listlinks: should symbolic links be listed?\n+  \n+   By default this routine lists all files and directories in the\n+   current directory, including symbolic links, as long as they don't\n+   start with '.'\n+*/\n+\n+iter listdir(path: string, dotfiles=false, dirs=true, files=true, \n+             listlinks=true): string {\n+  extern type DIRptr;\n+  extern type direntptr;\n+  extern proc opendir(name: c_string): DIRptr;\n+  extern proc readdir(dirp: DIRptr): direntptr;\n+  extern proc closedir(dirp: DIRptr): c_int;\n+  extern proc chpl_rt_isDir(pathname: c_string, followLinks: bool): c_int;\n+\n+  proc direntptr.d_name(): c_string {\n+    extern proc chpl_rt_direntptr_getname(d: direntptr): c_string;\n+\n+    return chpl_rt_direntptr_getname(this);\n+  }\n+\n+  var dir: DIRptr;\n+  var ent: direntptr;\n+  dir = opendir(path:c_string);\n+  if (!is_c_nil(dir)) {\n+    ent = readdir(dir);\n+    while (!is_c_nil(ent)) {\n+      const filename = ent.d_name();\n+      if (dotfiles || filename.substring(1) != '.') {\n+        if (filename != \".\" && filename != \"..\") {\n+          const fullpath = path + \"/\" + filename;\n+          //\n+          // chpl_rt_isDir() returns 'true' if 'fullpath' is a\n+          // directory.  If we are listing symbolic links\n+          // (listlinks==true), it will also return symbolic links to\n+          // directories.\n+          //\n+          if (chpl_rt_isDir(fullpath:c_string, listlinks)) {\n+            if (dirs) then\n+              yield filename;\n+          } else {\n+            if (files) then\n+              yield filename;\n+          }\n+        }\n+      }\n+      ent = readdir(dir);\n+    }\n+    closedir(dir);\n+  } else {\n+    extern proc perror(s: c_string);\n+    perror(\"error in listdir(): \");\n+  }\n+}\n+\n+\n+/* iter walkdirs(path: string=\".\", topdown=true, depth=max(int), \n+                 dotfiles=false, followlinks=false, sort=false): string\n+  \n+   walkdirs() recursively walks a directory structure, yielding\n+   directory names.  The strings that are generated will be rooted\n+   from 'path'.\n+     * path: the directory to start from\n+     * topdown: indicates whether to yield the directories using a\n+       preorder (vs. postorder) traversal\n+     * depth: indicates the maximal depth of recursion to use\n+     * dotfiles: indicates whether to enter directories with dotfile names\n+     * followlinks: indicates whether to follow symbolic links or not\n+     * sort: indicates whether to consider subdirectories in sorted\n+       order or not\n+  \n+   by default, walkdirs() will start in the current directory, process\n+   directories in preorder; recursively traverse subdirectories; and\n+   neither follow dotfile directories nor symbolic links.  It will not\n+   sort the directories by default.\n+*/\n+\n+iter walkdirs(path: string=\".\", topdown=true, depth=max(int), dotfiles=false, \n+              followlinks=false, sort=false): string {\n+\n+  if (topdown) then\n+    yield path;\n+\n+  if (depth) {\n+    var subdirs = listdir(path, dotfiles=dotfiles, files=false, listlinks=followlinks);\n+    if (sort) then\n+      QuickSort(subdirs);\n+    for subdir in subdirs {\n+      const fullpath = path + \"/\" + subdir;\n+      for subdir in walkdirs(fullpath, topdown, depth-1, dotfiles, followlinks) do\n+        yield subdir;\n+    }\n+  }\n+\n+  if (!topdown) then\n+    yield path;\n+}\n+\n+\n+/* iter wordexp(pattern=\"*\")\n+\n+   wordexp() gives a glob-like capability, implemented with C's wordexp()","path":"modules/standard/Filerator.chpl","position":138,"original_position":138,"commit_id":"c9f951a4b8c8294ca908054da9b9067e99092eb6","original_commit_id":"c9f951a4b8c8294ca908054da9b9067e99092eb6","user":{"login":"thomasvandoren","id":530981,"avatar_url":"https://avatars.githubusercontent.com/u/530981?v=2","gravatar_id":"6888870502aa1971b4b5361ccf689913","url":"https://api.github.com/users/thomasvandoren","html_url":"https://github.com/thomasvandoren","followers_url":"https://api.github.com/users/thomasvandoren/followers","following_url":"https://api.github.com/users/thomasvandoren/following{/other_user}","gists_url":"https://api.github.com/users/thomasvandoren/gists{/gist_id}","starred_url":"https://api.github.com/users/thomasvandoren/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thomasvandoren/subscriptions","organizations_url":"https://api.github.com/users/thomasvandoren/orgs","repos_url":"https://api.github.com/users/thomasvandoren/repos","events_url":"https://api.github.com/users/thomasvandoren/events{/privacy}","received_events_url":"https://api.github.com/users/thomasvandoren/received_events","type":"User","site_admin":false},"body":"Will you please add a sentence about what wordexp() does? (Since we are appealing to a broader audience than just C programmers, not everyone may be familiar.) It might be good enough to just add the words \"word expansion\" in the description.","created_at":"2014-09-10T01:14:47Z","updated_at":"2014-09-10T01:14:47Z","html_url":"https://github.com/chapel-lang/chapel/pull/351#discussion_r17338292","pull_request_url":"https://api.github.com/repos/chapel-lang/chapel/pulls/351","_links":{"self":{"href":"https://api.github.com/repos/chapel-lang/chapel/pulls/comments/17338292"},"html":{"href":"https://github.com/chapel-lang/chapel/pull/351#discussion_r17338292"},"pull_request":{"href":"https://api.github.com/repos/chapel-lang/chapel/pulls/351"}}},"pull_request":{"url":"https://api.github.com/repos/chapel-lang/chapel/pulls/351","id":20943948,"html_url":"https://github.com/chapel-lang/chapel/pull/351","diff_url":"https://github.com/chapel-lang/chapel/pull/351.diff","patch_url":"https://github.com/chapel-lang/chapel/pull/351.patch","issue_url":"https://api.github.com/repos/chapel-lang/chapel/issues/351","number":351,"state":"open","locked":false,"title":"Experimental Filerator Capabilities","user":{"login":"bradcray","id":7536222,"avatar_url":"https://avatars.githubusercontent.com/u/7536222?v=2","gravatar_id":"1c08a8e851f0d3fc0cb6b84e3c5f9829","url":"https://api.github.com/users/bradcray","html_url":"https://github.com/bradcray","followers_url":"https://api.github.com/users/bradcray/followers","following_url":"https://api.github.com/users/bradcray/following{/other_user}","gists_url":"https://api.github.com/users/bradcray/gists{/gist_id}","starred_url":"https://api.github.com/users/bradcray/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bradcray/subscriptions","organizations_url":"https://api.github.com/users/bradcray/orgs","repos_url":"https://api.github.com/users/bradcray/repos","events_url":"https://api.github.com/users/bradcray/events{/privacy}","received_events_url":"https://api.github.com/users/bradcray/received_events","type":"User","site_admin":false},"body":"This patch adds experimental \"filerator\" features\r\n\r\nWe are working on creating a final design for so called \"filerator\"\r\nfeatures -- iterators that support reasoning about files and\r\ndirectories.  While we have not converged on a final design yet, this\r\ncommit provides initial support for some routines that approximate the\r\nexpected final filerator routines, for the purposes of experimentation\r\nand feedback.\r\n\r\nThe commit breaks down as follows:\r\n\r\n* It adds a new temporary/experimental module named 'Filerator' (the\r\n  name is purposefully chosen to be playful to underscore the fact\r\n  that it is experimental and will be renamed once we lock down the\r\n  interface a bit harder.  This module supports four main iterators:\r\n\r\n  1) iter listdir(path: string, dotfiles=false, dirs=true, files=true, \r\n                  listlinks=true): string\r\n\r\n     listdir() lists the contents of a directory, similar to 'ls'\r\n\r\n     * path: the directory whose contents should be listed\r\n     * dotfiles: should files/directories that start with '.' be listed?\r\n     * dirs: should dirs be listed?\r\n     * files: should files be listed?\r\n     * listlinks: should symbolic links be listed?\r\n\r\n    By default this routine lists all files and directories in the\r\n    current directory, including symbolic links, as long as they don't\r\n    start with '.'\r\n\r\n  2) iter walkdirs(path: string=\".\", topdown=true, depth=max(int),\r\n                   dotfiles=false, followlinks=false, sort = false): string {\r\n\r\n     walkdirs() recursively walks a directory structure, yielding\r\n     directory names\r\n\r\n     * path: the directory to start from\r\n     * topdown: indicates whether to yield the directories using a\r\n       preorder traversal\r\n     * depth: indicates the maximal depth of recursion to use\r\n     * dotfiles: indicates whether to enter directories with dotfile names\r\n     * followlinks: indicates whether to follow symbolic links or not\r\n     * sort: indicates whether to consider subdirectories in sorted order or not\r\n\r\n     By default, walkdirs() will start in the current directory,\r\n     process directories in preorder; recursively traverse\r\n     subdirectories; and neither follow dotfile directories nor\r\n     symbolic links.  It will not sort the directories by default.\r\n\r\n  3) glob(pattern: string=\"*\")\r\n\r\n     glob() gives a glob-like capability, implemented with C's glob()\r\n\r\n     * pattern: the pattern to match against\r\n\r\n     By default, it will list all files/directories in the directory\r\n\r\n  4) wordexp(pattern: string=\"*\") \r\n\r\n     wordexp() gives a glob-like capability, implemented with C's wordexp()\r\n\r\n     * pattern: the pattern to match against\r\n\r\n     By default, it will list all files/directories in the directory\r\n\r\n  Note that in the steady-state, only one of the final two are likely to\r\n  be required.\r\n\r\n\r\n* To support these iterators, functionality was added to the runtime\r\n  in order to:\r\n\r\n  (a) wrap C's dirent() (runtime/include/chpldirent.h)\r\n\r\n  (b) provide an \"is this a directory?\" query implemented using\r\n      stat()/lstat(), and (runtime/include/chplisdir.h,\r\n      runtime/src/chplisdir.c)\r\n\r\n  (c) wrap C's glob() and wordexp(). (runtime/include/chplglob.h)\r\n\r\n  All new headers were added to stdchpl.h\r\n\r\n\r\n* test/studies/filerator/ was updated and expanded to test the\r\n  capabilities of the routines in a number of interesting\r\n  configurations (but a by no means exhaustive set)\r\n","created_at":"2014-09-09T09:44:30Z","updated_at":"2014-09-10T01:14:47Z","closed_at":null,"merged_at":null,"merge_commit_sha":"75720c8e08fb6eb0e99c456106eb0003b200e845","assignee":{"login":"thomasvandoren","id":530981,"avatar_url":"https://avatars.githubusercontent.com/u/530981?v=2","gravatar_id":"6888870502aa1971b4b5361ccf689913","url":"https://api.github.com/users/thomasvandoren","html_url":"https://github.com/thomasvandoren","followers_url":"https://api.github.com/users/thomasvandoren/followers","following_url":"https://api.github.com/users/thomasvandoren/following{/other_user}","gists_url":"https://api.github.com/users/thomasvandoren/gists{/gist_id}","starred_url":"https://api.github.com/users/thomasvandoren/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/thomasvandoren/subscriptions","organizations_url":"https://api.github.com/users/thomasvandoren/orgs","repos_url":"https://api.github.com/users/thomasvandoren/repos","events_url":"https://api.github.com/users/thomasvandoren/events{/privacy}","received_events_url":"https://api.github.com/users/thomasvandoren/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/chapel-lang/chapel/pulls/351/commits","review_comments_url":"https://api.github.com/repos/chapel-lang/chapel/pulls/351/comments","review_comment_url":"https://api.github.com/repos/chapel-lang/chapel/pulls/comments/{number}","comments_url":"https://api.github.com/repos/chapel-lang/chapel/issues/351/comments","statuses_url":"https://api.github.com/repos/chapel-lang/chapel/statuses/c9f951a4b8c8294ca908054da9b9067e99092eb6","head":{"label":"bradcray:filerator","ref":"filerator","sha":"c9f951a4b8c8294ca908054da9b9067e99092eb6","user":{"login":"bradcray","id":7536222,"avatar_url":"https://avatars.githubusercontent.com/u/7536222?v=2","gravatar_id":"1c08a8e851f0d3fc0cb6b84e3c5f9829","url":"https://api.github.com/users/bradcray","html_url":"https://github.com/bradcray","followers_url":"https://api.github.com/users/bradcray/followers","following_url":"https://api.github.com/users/bradcray/following{/other_user}","gists_url":"https://api.github.com/users/bradcray/gists{/gist_id}","starred_url":"https://api.github.com/users/bradcray/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bradcray/subscriptions","organizations_url":"https://api.github.com/users/bradcray/orgs","repos_url":"https://api.github.com/users/bradcray/repos","events_url":"https://api.github.com/users/bradcray/events{/privacy}","received_events_url":"https://api.github.com/users/bradcray/received_events","type":"User","site_admin":false},"repo":{"id":21837395,"name":"chapel","full_name":"bradcray/chapel","owner":{"login":"bradcray","id":7536222,"avatar_url":"https://avatars.githubusercontent.com/u/7536222?v=2","gravatar_id":"1c08a8e851f0d3fc0cb6b84e3c5f9829","url":"https://api.github.com/users/bradcray","html_url":"https://github.com/bradcray","followers_url":"https://api.github.com/users/bradcray/followers","following_url":"https://api.github.com/users/bradcray/following{/other_user}","gists_url":"https://api.github.com/users/bradcray/gists{/gist_id}","starred_url":"https://api.github.com/users/bradcray/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bradcray/subscriptions","organizations_url":"https://api.github.com/users/bradcray/orgs","repos_url":"https://api.github.com/users/bradcray/repos","events_url":"https://api.github.com/users/bradcray/events{/privacy}","received_events_url":"https://api.github.com/users/bradcray/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/bradcray/chapel","description":"a Productive Parallel Programming Language","fork":true,"url":"https://api.github.com/repos/bradcray/chapel","forks_url":"https://api.github.com/repos/bradcray/chapel/forks","keys_url":"https://api.github.com/repos/bradcray/chapel/keys{/key_id}","collaborators_url":"https://api.github.com/repos/bradcray/chapel/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/bradcray/chapel/teams","hooks_url":"https://api.github.com/repos/bradcray/chapel/hooks","issue_events_url":"https://api.github.com/repos/bradcray/chapel/issues/events{/number}","events_url":"https://api.github.com/repos/bradcray/chapel/events","assignees_url":"https://api.github.com/repos/bradcray/chapel/assignees{/user}","branches_url":"https://api.github.com/repos/bradcray/chapel/branches{/branch}","tags_url":"https://api.github.com/repos/bradcray/chapel/tags","blobs_url":"https://api.github.com/repos/bradcray/chapel/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/bradcray/chapel/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/bradcray/chapel/git/refs{/sha}","trees_url":"https://api.github.com/repos/bradcray/chapel/git/trees{/sha}","statuses_url":"https://api.github.com/repos/bradcray/chapel/statuses/{sha}","languages_url":"https://api.github.com/repos/bradcray/chapel/languages","stargazers_url":"https://api.github.com/repos/bradcray/chapel/stargazers","contributors_url":"https://api.github.com/repos/bradcray/chapel/contributors","subscribers_url":"https://api.github.com/repos/bradcray/chapel/subscribers","subscription_url":"https://api.github.com/repos/bradcray/chapel/subscription","commits_url":"https://api.github.com/repos/bradcray/chapel/commits{/sha}","git_commits_url":"https://api.github.com/repos/bradcray/chapel/git/commits{/sha}","comments_url":"https://api.github.com/repos/bradcray/chapel/comments{/number}","issue_comment_url":"https://api.github.com/repos/bradcray/chapel/issues/comments/{number}","contents_url":"https://api.github.com/repos/bradcray/chapel/contents/{+path}","compare_url":"https://api.github.com/repos/bradcray/chapel/compare/{base}...{head}","merges_url":"https://api.github.com/repos/bradcray/chapel/merges","archive_url":"https://api.github.com/repos/bradcray/chapel/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/bradcray/chapel/downloads","issues_url":"https://api.github.com/repos/bradcray/chapel/issues{/number}","pulls_url":"https://api.github.com/repos/bradcray/chapel/pulls{/number}","milestones_url":"https://api.github.com/repos/bradcray/chapel/milestones{/number}","notifications_url":"https://api.github.com/repos/bradcray/chapel/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/bradcray/chapel/labels{/name}","releases_url":"https://api.github.com/repos/bradcray/chapel/releases{/id}","created_at":"2014-07-14T22:08:29Z","updated_at":"2014-08-05T04:44:35Z","pushed_at":"2014-09-10T01:06:25Z","git_url":"git://github.com/bradcray/chapel.git","ssh_url":"git@github.com:bradcray/chapel.git","clone_url":"https://github.com/bradcray/chapel.git","svn_url":"https://github.com/bradcray/chapel","homepage":"http://chapel.cray.com/","size":250877,"stargazers_count":1,"watchers_count":1,"language":"C","has_issues":false,"has_downloads":true,"has_wiki":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":1,"default_branch":"master"}},"base":{"label":"chapel-lang:master","ref":"master","sha":"c4954c4d8d866450f26475c3a88ad5769468c219","user":{"login":"chapel-lang","id":7597261,"avatar_url":"https://avatars.githubusercontent.com/u/7597261?v=2","gravatar_id":null,"url":"https://api.github.com/users/chapel-lang","html_url":"https://github.com/chapel-lang","followers_url":"https://api.github.com/users/chapel-lang/followers","following_url":"https://api.github.com/users/chapel-lang/following{/other_user}","gists_url":"https://api.github.com/users/chapel-lang/gists{/gist_id}","starred_url":"https://api.github.com/users/chapel-lang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chapel-lang/subscriptions","organizations_url":"https://api.github.com/users/chapel-lang/orgs","repos_url":"https://api.github.com/users/chapel-lang/repos","events_url":"https://api.github.com/users/chapel-lang/events{/privacy}","received_events_url":"https://api.github.com/users/chapel-lang/received_events","type":"Organization","site_admin":false},"repo":{"id":21663285,"name":"chapel","full_name":"chapel-lang/chapel","owner":{"login":"chapel-lang","id":7597261,"avatar_url":"https://avatars.githubusercontent.com/u/7597261?v=2","gravatar_id":null,"url":"https://api.github.com/users/chapel-lang","html_url":"https://github.com/chapel-lang","followers_url":"https://api.github.com/users/chapel-lang/followers","following_url":"https://api.github.com/users/chapel-lang/following{/other_user}","gists_url":"https://api.github.com/users/chapel-lang/gists{/gist_id}","starred_url":"https://api.github.com/users/chapel-lang/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/chapel-lang/subscriptions","organizations_url":"https://api.github.com/users/chapel-lang/orgs","repos_url":"https://api.github.com/users/chapel-lang/repos","events_url":"https://api.github.com/users/chapel-lang/events{/privacy}","received_events_url":"https://api.github.com/users/chapel-lang/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/chapel-lang/chapel","description":"a Productive Parallel Programming Language","fork":false,"url":"https://api.github.com/repos/chapel-lang/chapel","forks_url":"https://api.github.com/repos/chapel-lang/chapel/forks","keys_url":"https://api.github.com/repos/chapel-lang/chapel/keys{/key_id}","collaborators_url":"https://api.github.com/repos/chapel-lang/chapel/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/chapel-lang/chapel/teams","hooks_url":"https://api.github.com/repos/chapel-lang/chapel/hooks","issue_events_url":"https://api.github.com/repos/chapel-lang/chapel/issues/events{/number}","events_url":"https://api.github.com/repos/chapel-lang/chapel/events","assignees_url":"https://api.github.com/repos/chapel-lang/chapel/assignees{/user}","branches_url":"https://api.github.com/repos/chapel-lang/chapel/branches{/branch}","tags_url":"https://api.github.com/repos/chapel-lang/chapel/tags","blobs_url":"https://api.github.com/repos/chapel-lang/chapel/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/chapel-lang/chapel/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/chapel-lang/chapel/git/refs{/sha}","trees_url":"https://api.github.com/repos/chapel-lang/chapel/git/trees{/sha}","statuses_url":"https://api.github.com/repos/chapel-lang/chapel/statuses/{sha}","languages_url":"https://api.github.com/repos/chapel-lang/chapel/languages","stargazers_url":"https://api.github.com/repos/chapel-lang/chapel/stargazers","contributors_url":"https://api.github.com/repos/chapel-lang/chapel/contributors","subscribers_url":"https://api.github.com/repos/chapel-lang/chapel/subscribers","subscription_url":"https://api.github.com/repos/chapel-lang/chapel/subscription","commits_url":"https://api.github.com/repos/chapel-lang/chapel/commits{/sha}","git_commits_url":"https://api.github.com/repos/chapel-lang/chapel/git/commits{/sha}","comments_url":"https://api.github.com/repos/chapel-lang/chapel/comments{/number}","issue_comment_url":"https://api.github.com/repos/chapel-lang/chapel/issues/comments/{number}","contents_url":"https://api.github.com/repos/chapel-lang/chapel/contents/{+path}","compare_url":"https://api.github.com/repos/chapel-lang/chapel/compare/{base}...{head}","merges_url":"https://api.github.com/repos/chapel-lang/chapel/merges","archive_url":"https://api.github.com/repos/chapel-lang/chapel/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/chapel-lang/chapel/downloads","issues_url":"https://api.github.com/repos/chapel-lang/chapel/issues{/number}","pulls_url":"https://api.github.com/repos/chapel-lang/chapel/pulls{/number}","milestones_url":"https://api.github.com/repos/chapel-lang/chapel/milestones{/number}","notifications_url":"https://api.github.com/repos/chapel-lang/chapel/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/chapel-lang/chapel/labels{/name}","releases_url":"https://api.github.com/repos/chapel-lang/chapel/releases{/id}","created_at":"2014-07-09T18:15:54Z","updated_at":"2014-09-09T20:46:20Z","pushed_at":"2014-09-10T00:03:09Z","git_url":"git://github.com/chapel-lang/chapel.git","ssh_url":"git@github.com:chapel-lang/chapel.git","clone_url":"https://github.com/chapel-lang/chapel.git","svn_url":"https://github.com/chapel-lang/chapel","homepage":"http://chapel.cray.com/","size":319010,"stargazers_count":31,"watchers_count":31,"language":"C","has_issues":false,"has_downloads":true,"has_wiki":false,"forks_count":22,"mirror_url":null,"open_issues_count":12,"forks":22,"open_issues":12,"watchers":31,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/chapel-lang/chapel/pulls/351"},"html":{"href":"https://github.com/chapel-lang/chapel/pull/351"},"issue":{"href":"https://api.github.com/repos/chapel-lang/chapel/issues/351"},"comments":{"href":"https://api.github.com/repos/chapel-lang/chapel/issues/351/comments"},"review_comments":{"href":"https://api.github.com/repos/chapel-lang/chapel/pulls/351/comments"},"review_comment":{"href":"https://api.github.com/repos/chapel-lang/chapel/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/chapel-lang/chapel/pulls/351/commits"},"statuses":{"href":"https://api.github.com/repos/chapel-lang/chapel/statuses/c9f951a4b8c8294ca908054da9b9067e99092eb6"}}}}