{"action":"created","comment":{"url":"https://api.github.com/repos/mesonbuild/meson/pulls/comments/75581951","id":75581951,"diff_hunk":"@@ -1425,6 +1446,270 @@ def can_compile(self, filename):\n         suffix = filename.split('.')[-1]\n         return suffix in ('swift')\n \n+class DCompiler(Compiler):\n+    def __init__(self, exelist, version, is_cross):\n+        super().__init__(exelist, version)\n+        self.id = 'unknown'\n+        self.language = 'd'\n+        self.is_cross = is_cross\n+\n+    def sanity_check(self, work_dir, environment):\n+        source_name = os.path.join(work_dir, 'sanity.d')\n+        output_name = os.path.join(work_dir, 'dtest')\n+        ofile = open(source_name, 'w')\n+        ofile.write('''void main() {\n+}\n+''')\n+        ofile.close()\n+        pc = subprocess.Popen(self.exelist + self.get_output_args(output_name) + [source_name], cwd=work_dir)\n+        pc.wait()\n+        if pc.returncode != 0:\n+            raise EnvironmentException('D compiler %s can not compile programs.' % self.name_string())\n+        if subprocess.call(output_name) != 0:\n+            raise EnvironmentException('Executables created by D compiler %s are not runnable.' % self.name_string())\n+\n+    def needs_static_linker(self):\n+        return True\n+\n+    def name_string(self):\n+        return ' '.join(self.exelist)\n+\n+    def get_exelist(self):\n+        return self.exelist\n+\n+    def get_id(self):\n+        return self.id\n+\n+    def get_language(self):\n+        return self.language\n+\n+    def can_compile(self, fname):\n+        suffix = fname.split('.')[-1]\n+        return suffix in ('d', 'di')\n+\n+    def get_linker_exelist(self):\n+        return self.exelist[:]\n+\n+    def depfile_for_object(self, objfile):\n+        return objfile + '.' + self.get_depfile_suffix()\n+\n+    def get_depfile_suffix(self):\n+        return 'dep'\n+\n+    def get_pic_args(self):\n+        return ['-fPIC']\n+\n+    def get_std_shared_lib_link_args(self):\n+        return ['-shared']\n+\n+    def get_soname_args(self, shlib_name, path, soversion):\n+        return []\n+\n+    def get_unittest_flag(self):\n+        return ['-unittest']\n+\n+    def build_rpath_args(self, build_dir, rpath_paths, install_rpath):\n+        # This method is to be used by LDC and DMD.\n+        # GDC can deal with the verbatim flags.\n+        if len(rpath_paths) == 0 and len(install_rpath) == 0:\n+            return []\n+        paths = ':'.join([os.path.join(build_dir, p) for p in rpath_paths])\n+        if len(paths) < len(install_rpath):\n+            padding = 'X'*(len(install_rpath) - len(paths))\n+            if len(paths) == 0:\n+                paths = padding\n+            else:\n+                paths = paths + ':' + padding\n+        return ['-L-rpath={}'.format(paths)]\n+\n+class GnuDCompiler(DCompiler):\n+    def __init__(self, exelist, version, is_cross):\n+        DCompiler.__init__(self, exelist, version, is_cross)\n+        self.id = 'gcc'\n+        self.warn_args = {'1': ['-Wall', '-Wdeprecated'],\n+                          '2': ['-Wall', '-Wextra', '-Wdeprecated'],\n+                          '3': ['-Wall', '-Wextra', '-Wdeprecated', '-Wpedantic']}\n+\n+    def get_dependency_gen_args(self, outtarget, outfile):\n+        # FIXME: Passing -fmake-deps results in a file-not-found message.\n+        # Investigate why.\n+        return []\n+\n+    def get_output_args(self, target):\n+        return ['-o', target]\n+\n+    def get_compile_only_args(self):\n+        return ['-c']\n+\n+    def get_linker_output_args(self, target):\n+        return ['-o', target]\n+\n+    def get_include_args(self, path, is_system):\n+        return ['-I' + path]\n+\n+    def get_warn_args(self, level):\n+        return self.warn_args[level]\n+\n+    def get_werror_args(self):\n+        return ['-Werror']\n+\n+    def get_buildtype_linker_args(self, buildtype):\n+        return []\n+\n+    def get_std_exe_link_args(self):\n+        return []\n+\n+    def get_buildtype_args(self, buildtype):\n+        return d_gdc_buildtype_args[buildtype]\n+\n+    def build_rpath_args(self, build_dir, rpath_paths, install_rpath):\n+        return build_unix_rpath_args(build_dir, rpath_paths, install_rpath)\n+\n+    def get_unittest_flag(self):\n+        return ['-funittest']\n+\n+class LLVMDCompiler(DCompiler):\n+    def __init__(self, exelist, version, is_cross):\n+        DCompiler.__init__(self, exelist, version, is_cross)\n+        self.id = 'llvm'\n+\n+    def get_dependency_gen_args(self, outtarget, outfile):\n+        # LDC using the -deps flag returns a non-Makefile dependency-info file, which\n+        # the backends can not use. So we disable this feature for now.\n+        return []\n+\n+    def get_output_args(self, target):\n+        return ['-of', target]\n+\n+    def get_compile_only_args(self):\n+        return ['-c']\n+\n+    def get_linker_output_args(self, target):\n+        return ['-of', target]\n+\n+    def get_include_args(self, path, is_system):\n+        return ['-I' + path]\n+\n+    def get_warn_args(self, level):\n+        if level == '2':\n+            return ['-wi']\n+        else:\n+            return ['-w']\n+\n+    def get_coverage_args(self):\n+        return ['-cov']\n+\n+    def get_buildtype_linker_args(self, buildtype):\n+        return []\n+\n+    def get_std_exe_link_args(self):\n+        return []\n+\n+    def get_buildtype_args(self, buildtype):\n+        return d_ldc_buildtype_args[buildtype]\n+\n+    def get_pic_args(self):\n+        return ['-relocation-model=pic']\n+\n+    def _translate_args(self, args):\n+        ldcargs = []\n+        # Translate common arguments to flags this compiler can\n+        # understand.\n+        # The flags might have been added by pkg-config files,\n+        # and are therefore out of the user's control.\n+        for arg in args:\n+            if arg == '-pthread':\n+                continue\n+            if arg.startswith('-Wl,'):\n+                linkargs = arg[arg.index(',')+1:].split(',')\n+                for la in linkargs:\n+                    ldcargs.append('-L' + la.strip())\n+                continue\n+            elif arg.startswith('-l'):\n+                # translate library link flag\n+                ldcargs.append('-L' + arg)\n+                continue\n+            ldcargs.append(arg)\n+\n+        return ldcargs\n+\n+    def unix_link_flags_to_native(self, args):\n+        return self._translate_args(args)\n+\n+    def unix_compile_flags_to_native(self, args):\n+        return self._translate_args(args)\n+\n+class DmdDCompiler(DCompiler):\n+    def __init__(self, exelist, version, is_cross):\n+        DCompiler.__init__(self, exelist, version, is_cross)\n+        self.id = 'dmd'\n+\n+    def get_dependency_gen_args(self, outtarget, outfile):\n+        # LDC using the -deps flag returns a non-Makefile dependency-info file, which\n+        # the backends can not use. So we disable this feature for now.\n+        return []\n+\n+    def get_output_args(self, target):\n+        return ['-of' + target]\n+\n+    def get_werror_args(self):\n+        return ['-w']\n+\n+    def get_compile_only_args(self):\n+        return ['-c']\n+\n+    def get_linker_output_args(self, target):\n+        return ['-of' + target]\n+\n+    def get_include_args(self, path, is_system):\n+        return ['-I' + path]\n+\n+    def get_warn_args(self, level):\n+        return []\n+\n+    def get_coverage_args(self):\n+        return ['-cov']\n+\n+    def get_buildtype_linker_args(self, buildtype):\n+        return []\n+\n+    def get_std_exe_link_args(self):\n+        return []\n+\n+    def get_buildtype_args(self, buildtype):\n+        return d_dmd_buildtype_args[buildtype]\n+\n+    def get_std_shared_lib_link_args(self):\n+        return ['-shared', '-defaultlib=libphobos2.so']\n+\n+    def _translate_args(self, args):","path":"mesonbuild/compilers.py","position":277,"original_position":277,"commit_id":"8fbf2648d890c135685c88cdd738525c4e162fad","original_commit_id":"8fbf2648d890c135685c88cdd738525c4e162fad","user":{"login":"nirbheek","id":75801,"avatar_url":"https://avatars.githubusercontent.com/u/75801?v=3","gravatar_id":"","url":"https://api.github.com/users/nirbheek","html_url":"https://github.com/nirbheek","followers_url":"https://api.github.com/users/nirbheek/followers","following_url":"https://api.github.com/users/nirbheek/following{/other_user}","gists_url":"https://api.github.com/users/nirbheek/gists{/gist_id}","starred_url":"https://api.github.com/users/nirbheek/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nirbheek/subscriptions","organizations_url":"https://api.github.com/users/nirbheek/orgs","repos_url":"https://api.github.com/users/nirbheek/repos","events_url":"https://api.github.com/users/nirbheek/events{/privacy}","received_events_url":"https://api.github.com/users/nirbheek/received_events","type":"User","site_admin":false},"body":"Is this identical to the implementation above? Do the LLVM and DMD compilers take the same/similar arguments? Perhaps you want to implement it in `DCompiler` instead and override in `GnuDCompiler` to do a passthrough?","created_at":"2016-08-20T17:18:31Z","updated_at":"2016-08-20T17:18:31Z","html_url":"https://github.com/mesonbuild/meson/pull/685#discussion_r75581951","pull_request_url":"https://api.github.com/repos/mesonbuild/meson/pulls/685","_links":{"self":{"href":"https://api.github.com/repos/mesonbuild/meson/pulls/comments/75581951"},"html":{"href":"https://github.com/mesonbuild/meson/pull/685#discussion_r75581951"},"pull_request":{"href":"https://api.github.com/repos/mesonbuild/meson/pulls/685"}}},"pull_request":{"url":"https://api.github.com/repos/mesonbuild/meson/pulls/685","id":81748015,"html_url":"https://github.com/mesonbuild/meson/pull/685","diff_url":"https://github.com/mesonbuild/meson/pull/685.diff","patch_url":"https://github.com/mesonbuild/meson/pull/685.patch","issue_url":"https://api.github.com/repos/mesonbuild/meson/issues/685","number":685,"state":"open","locked":false,"title":"Implement D support","user":{"login":"ximion","id":417468,"avatar_url":"https://avatars.githubusercontent.com/u/417468?v=3","gravatar_id":"","url":"https://api.github.com/users/ximion","html_url":"https://github.com/ximion","followers_url":"https://api.github.com/users/ximion/followers","following_url":"https://api.github.com/users/ximion/following{/other_user}","gists_url":"https://api.github.com/users/ximion/gists{/gist_id}","starred_url":"https://api.github.com/users/ximion/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ximion/subscriptions","organizations_url":"https://api.github.com/users/ximion/orgs","repos_url":"https://api.github.com/users/ximion/repos","events_url":"https://api.github.com/users/ximion/events{/privacy}","received_events_url":"https://api.github.com/users/ximion/received_events","type":"User","site_admin":false},"body":"This patch adds support for the D programming language[1] to Meson.\r\n\r\nThe following compilers are supported:\r\n* LDC\r\n* GDC\r\n* DMD\r\n\r\n[1]: http://dlang.org/\r\n\r\nI tested this with a few bigger projects and (obviously) the test cases. LDC seems to have a few issues with the bigger projects, but I am 99% sure that this is due to compiler bugs (since DMD and GDC are happy with these projects).\r\nFor the Meson code, I am not aware of any issues. The code was only tested on Linux though, I can't test it on Windows or MacOS (but I don't see a reason why it wouldn't work there as well).\r\n\r\nAll tests compile with all three compilers.\r\nLet me know if there is anything missing or needs to be improved.\r\n(Is there any way to mark a file as being optional in the testsuite? Because if the testsuite is run with `gdc` as the D compiler, you won't be able to get a shared library in the library test)\r\n\r\nThank you for writing Meson in the first place!","created_at":"2016-08-18T02:30:32Z","updated_at":"2016-08-20T17:18:31Z","closed_at":null,"merged_at":null,"merge_commit_sha":"966fd51a70851ab5453efb4d6f18ca63cd6b6470","assignee":null,"assignees":[],"milestone":null,"commits_url":"https://api.github.com/repos/mesonbuild/meson/pulls/685/commits","review_comments_url":"https://api.github.com/repos/mesonbuild/meson/pulls/685/comments","review_comment_url":"https://api.github.com/repos/mesonbuild/meson/pulls/comments{/number}","comments_url":"https://api.github.com/repos/mesonbuild/meson/issues/685/comments","statuses_url":"https://api.github.com/repos/mesonbuild/meson/statuses/8fbf2648d890c135685c88cdd738525c4e162fad","head":{"label":"ximion:master","ref":"master","sha":"8fbf2648d890c135685c88cdd738525c4e162fad","user":{"login":"ximion","id":417468,"avatar_url":"https://avatars.githubusercontent.com/u/417468?v=3","gravatar_id":"","url":"https://api.github.com/users/ximion","html_url":"https://github.com/ximion","followers_url":"https://api.github.com/users/ximion/followers","following_url":"https://api.github.com/users/ximion/following{/other_user}","gists_url":"https://api.github.com/users/ximion/gists{/gist_id}","starred_url":"https://api.github.com/users/ximion/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ximion/subscriptions","organizations_url":"https://api.github.com/users/ximion/orgs","repos_url":"https://api.github.com/users/ximion/repos","events_url":"https://api.github.com/users/ximion/events{/privacy}","received_events_url":"https://api.github.com/users/ximion/received_events","type":"User","site_admin":false},"repo":{"id":65665535,"name":"meson","full_name":"ximion/meson","owner":{"login":"ximion","id":417468,"avatar_url":"https://avatars.githubusercontent.com/u/417468?v=3","gravatar_id":"","url":"https://api.github.com/users/ximion","html_url":"https://github.com/ximion","followers_url":"https://api.github.com/users/ximion/followers","following_url":"https://api.github.com/users/ximion/following{/other_user}","gists_url":"https://api.github.com/users/ximion/gists{/gist_id}","starred_url":"https://api.github.com/users/ximion/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ximion/subscriptions","organizations_url":"https://api.github.com/users/ximion/orgs","repos_url":"https://api.github.com/users/ximion/repos","events_url":"https://api.github.com/users/ximion/events{/privacy}","received_events_url":"https://api.github.com/users/ximion/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/ximion/meson","description":"The Meson Build System","fork":true,"url":"https://api.github.com/repos/ximion/meson","forks_url":"https://api.github.com/repos/ximion/meson/forks","keys_url":"https://api.github.com/repos/ximion/meson/keys{/key_id}","collaborators_url":"https://api.github.com/repos/ximion/meson/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/ximion/meson/teams","hooks_url":"https://api.github.com/repos/ximion/meson/hooks","issue_events_url":"https://api.github.com/repos/ximion/meson/issues/events{/number}","events_url":"https://api.github.com/repos/ximion/meson/events","assignees_url":"https://api.github.com/repos/ximion/meson/assignees{/user}","branches_url":"https://api.github.com/repos/ximion/meson/branches{/branch}","tags_url":"https://api.github.com/repos/ximion/meson/tags","blobs_url":"https://api.github.com/repos/ximion/meson/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/ximion/meson/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/ximion/meson/git/refs{/sha}","trees_url":"https://api.github.com/repos/ximion/meson/git/trees{/sha}","statuses_url":"https://api.github.com/repos/ximion/meson/statuses/{sha}","languages_url":"https://api.github.com/repos/ximion/meson/languages","stargazers_url":"https://api.github.com/repos/ximion/meson/stargazers","contributors_url":"https://api.github.com/repos/ximion/meson/contributors","subscribers_url":"https://api.github.com/repos/ximion/meson/subscribers","subscription_url":"https://api.github.com/repos/ximion/meson/subscription","commits_url":"https://api.github.com/repos/ximion/meson/commits{/sha}","git_commits_url":"https://api.github.com/repos/ximion/meson/git/commits{/sha}","comments_url":"https://api.github.com/repos/ximion/meson/comments{/number}","issue_comment_url":"https://api.github.com/repos/ximion/meson/issues/comments{/number}","contents_url":"https://api.github.com/repos/ximion/meson/contents/{+path}","compare_url":"https://api.github.com/repos/ximion/meson/compare/{base}...{head}","merges_url":"https://api.github.com/repos/ximion/meson/merges","archive_url":"https://api.github.com/repos/ximion/meson/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/ximion/meson/downloads","issues_url":"https://api.github.com/repos/ximion/meson/issues{/number}","pulls_url":"https://api.github.com/repos/ximion/meson/pulls{/number}","milestones_url":"https://api.github.com/repos/ximion/meson/milestones{/number}","notifications_url":"https://api.github.com/repos/ximion/meson/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/ximion/meson/labels{/name}","releases_url":"https://api.github.com/repos/ximion/meson/releases{/id}","deployments_url":"https://api.github.com/repos/ximion/meson/deployments","created_at":"2016-08-14T12:37:44Z","updated_at":"2016-08-14T12:37:46Z","pushed_at":"2016-08-20T17:17:20Z","git_url":"git://github.com/ximion/meson.git","ssh_url":"git@github.com:ximion/meson.git","clone_url":"https://github.com/ximion/meson.git","svn_url":"https://github.com/ximion/meson","homepage":null,"size":3500,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"mesonbuild:master","ref":"master","sha":"d6fd462387dc60bb7204c8172ef427917d66987e","user":{"login":"mesonbuild","id":12551236,"avatar_url":"https://avatars.githubusercontent.com/u/12551236?v=3","gravatar_id":"","url":"https://api.github.com/users/mesonbuild","html_url":"https://github.com/mesonbuild","followers_url":"https://api.github.com/users/mesonbuild/followers","following_url":"https://api.github.com/users/mesonbuild/following{/other_user}","gists_url":"https://api.github.com/users/mesonbuild/gists{/gist_id}","starred_url":"https://api.github.com/users/mesonbuild/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mesonbuild/subscriptions","organizations_url":"https://api.github.com/users/mesonbuild/orgs","repos_url":"https://api.github.com/users/mesonbuild/repos","events_url":"https://api.github.com/users/mesonbuild/events{/privacy}","received_events_url":"https://api.github.com/users/mesonbuild/received_events","type":"Organization","site_admin":false},"repo":{"id":19784232,"name":"meson","full_name":"mesonbuild/meson","owner":{"login":"mesonbuild","id":12551236,"avatar_url":"https://avatars.githubusercontent.com/u/12551236?v=3","gravatar_id":"","url":"https://api.github.com/users/mesonbuild","html_url":"https://github.com/mesonbuild","followers_url":"https://api.github.com/users/mesonbuild/followers","following_url":"https://api.github.com/users/mesonbuild/following{/other_user}","gists_url":"https://api.github.com/users/mesonbuild/gists{/gist_id}","starred_url":"https://api.github.com/users/mesonbuild/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mesonbuild/subscriptions","organizations_url":"https://api.github.com/users/mesonbuild/orgs","repos_url":"https://api.github.com/users/mesonbuild/repos","events_url":"https://api.github.com/users/mesonbuild/events{/privacy}","received_events_url":"https://api.github.com/users/mesonbuild/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/mesonbuild/meson","description":"The Meson Build System","fork":false,"url":"https://api.github.com/repos/mesonbuild/meson","forks_url":"https://api.github.com/repos/mesonbuild/meson/forks","keys_url":"https://api.github.com/repos/mesonbuild/meson/keys{/key_id}","collaborators_url":"https://api.github.com/repos/mesonbuild/meson/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/mesonbuild/meson/teams","hooks_url":"https://api.github.com/repos/mesonbuild/meson/hooks","issue_events_url":"https://api.github.com/repos/mesonbuild/meson/issues/events{/number}","events_url":"https://api.github.com/repos/mesonbuild/meson/events","assignees_url":"https://api.github.com/repos/mesonbuild/meson/assignees{/user}","branches_url":"https://api.github.com/repos/mesonbuild/meson/branches{/branch}","tags_url":"https://api.github.com/repos/mesonbuild/meson/tags","blobs_url":"https://api.github.com/repos/mesonbuild/meson/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/mesonbuild/meson/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/mesonbuild/meson/git/refs{/sha}","trees_url":"https://api.github.com/repos/mesonbuild/meson/git/trees{/sha}","statuses_url":"https://api.github.com/repos/mesonbuild/meson/statuses/{sha}","languages_url":"https://api.github.com/repos/mesonbuild/meson/languages","stargazers_url":"https://api.github.com/repos/mesonbuild/meson/stargazers","contributors_url":"https://api.github.com/repos/mesonbuild/meson/contributors","subscribers_url":"https://api.github.com/repos/mesonbuild/meson/subscribers","subscription_url":"https://api.github.com/repos/mesonbuild/meson/subscription","commits_url":"https://api.github.com/repos/mesonbuild/meson/commits{/sha}","git_commits_url":"https://api.github.com/repos/mesonbuild/meson/git/commits{/sha}","comments_url":"https://api.github.com/repos/mesonbuild/meson/comments{/number}","issue_comment_url":"https://api.github.com/repos/mesonbuild/meson/issues/comments{/number}","contents_url":"https://api.github.com/repos/mesonbuild/meson/contents/{+path}","compare_url":"https://api.github.com/repos/mesonbuild/meson/compare/{base}...{head}","merges_url":"https://api.github.com/repos/mesonbuild/meson/merges","archive_url":"https://api.github.com/repos/mesonbuild/meson/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/mesonbuild/meson/downloads","issues_url":"https://api.github.com/repos/mesonbuild/meson/issues{/number}","pulls_url":"https://api.github.com/repos/mesonbuild/meson/pulls{/number}","milestones_url":"https://api.github.com/repos/mesonbuild/meson/milestones{/number}","notifications_url":"https://api.github.com/repos/mesonbuild/meson/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/mesonbuild/meson/labels{/name}","releases_url":"https://api.github.com/repos/mesonbuild/meson/releases{/id}","deployments_url":"https://api.github.com/repos/mesonbuild/meson/deployments","created_at":"2014-05-14T15:08:16Z","updated_at":"2016-08-19T20:25:28Z","pushed_at":"2016-08-20T17:17:20Z","git_url":"git://github.com/mesonbuild/meson.git","ssh_url":"git@github.com:mesonbuild/meson.git","clone_url":"https://github.com/mesonbuild/meson.git","svn_url":"https://github.com/mesonbuild/meson","homepage":null,"size":3745,"stargazers_count":486,"watchers_count":486,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":68,"mirror_url":null,"open_issues_count":85,"forks":68,"open_issues":85,"watchers":486,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/mesonbuild/meson/pulls/685"},"html":{"href":"https://github.com/mesonbuild/meson/pull/685"},"issue":{"href":"https://api.github.com/repos/mesonbuild/meson/issues/685"},"comments":{"href":"https://api.github.com/repos/mesonbuild/meson/issues/685/comments"},"review_comments":{"href":"https://api.github.com/repos/mesonbuild/meson/pulls/685/comments"},"review_comment":{"href":"https://api.github.com/repos/mesonbuild/meson/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/mesonbuild/meson/pulls/685/commits"},"statuses":{"href":"https://api.github.com/repos/mesonbuild/meson/statuses/8fbf2648d890c135685c88cdd738525c4e162fad"}}}}
{"actor":{"display_login":"nirbheek"}}