Skip to main content
  • Home
  • Development
  • Documentation
  • Donate
  • Operational login
  • Browse the archive

swh logo
SoftwareHeritage
Software
Heritage
Archive
Features
  • Search

  • Downloads

  • Save code now

  • Add forge now

  • Help


sort by:
RevisionAuthorDateMessageCommit Date
1166ea1 Thom Wiggers07 December 2019, 13:31:06 UTCAdd unaligned versions of intel vector types (#357)07 December 2019, 13:31:06 UTC
a4a7127 yaroslav-o25 September 2019, 12:44:54 UTCRecognize integer multicharacter constants like 'ABCD' (#350) Recognize integer multicharacter constants like 'ABCD' The feature I am adding is defined here - 5th case. https://en.cppreference.com/w/c/language/character_constant Also here: 6.4.4.4.10 of C99. Put simply, pycparser thought a statement like this is an error: int a = 'ABCD'; However it is not. It is likely possible to just modify char_const regular expression in c_lexer.py:240 to allow longer characters, but the way it is done in this PR - multicharacter constants are clearly separated. I am also limiting the length of multicharacter const integers to 4 characters - this matches VS compiler behavior (gcc allows any length with a warning) and lets pycparser NOT consider lengthy single-quoted strings as integers - these would be nonsensical anyway.25 September 2019, 12:44:54 UTC
62ee4ba Tyson Andre26 August 2019, 21:18:38 UTCFix slow backtracking when parsing strings (no external deps) (#347) * Fix slow backtracking when parsing strings (no external deps) Fixes #61 This uses negative lookaheads to avoid ambiguity in how string should be parsed by the regex. - https://docs.python.org/2/library/re.html#regular-expression-syntax - Previously, if it didn't immediately succeed at parsing an escape sequence such as `\123`, it would have to try `\1`+`23`, `\12` + `3`, and `\123`, which multiplied the time taken by 3 per additional escape sequence. This solves that by only allowing `\123` - The same fix was added for hex escapes. Also fix a test that relied on the incorrect handling of regexes. The implementation documentation says that it intends to allow **decimal** escapes permissively. * WIP debug * Fix ambiguity caused by allowing #path directives Solve this by allowing "\x" when not followed by hex, in the regular string literal. In the previous commits, `\x12` could be parsed both as `\x`+`12` and `\x12`, which caused exponential options for backtracking. * Document changes to lexer, remove debug code * Optimize this for strings26 August 2019, 21:18:38 UTC
5d5904d Eli Bendersky26 August 2019, 21:03:24 UTCMove .gitattributes to project root dir26 August 2019, 21:03:24 UTC
3b89659 Eli Bendersky24 August 2019, 12:57:54 UTCAdd .gitattributes file per https://github.com/github/linguist#overrides Label .ppout files as vendored so Github doesn't count them as pycparser's source24 August 2019, 12:57:54 UTC
bcfb365 Eli Bendersky23 August 2019, 20:50:25 UTCRename files to prevent Github from thinking this is a Pascal project23 August 2019, 20:50:25 UTC
b95fb13 Eli Bendersky23 August 2019, 20:29:21 UTCMove benchmarking stuff to its own dir23 August 2019, 20:29:21 UTC
c2e34dc Eli Bendersky23 August 2019, 19:55:32 UTCEnhance measurement script23 August 2019, 19:55:32 UTC
97a3a90 Eli Bendersky23 August 2019, 19:07:04 UTCAdd local .vimrc23 August 2019, 19:07:04 UTC
8f6fcc5 Eli Bendersky23 August 2019, 17:20:44 UTCAdd internal utility for benchmarking parsing time23 August 2019, 17:20:44 UTC
a350f0d Tyson Andre21 August 2019, 17:15:22 UTCFix error transforming an empty switch (#346) * Fix error transforming an empty switch The parser would crash on that line for `switch(1) {}` because NoneType is not iterable. Fixes #345 * Add a test of empty switch statements * Address review comments21 August 2019, 17:15:22 UTC
bc2010a Thom Wiggers20 August 2019, 18:51:41 UTCAdd more intrinsics (#343)20 August 2019, 18:51:41 UTC
e9dfcc1 sachet-mittal30 July 2019, 03:10:12 UTCHeaders for Vectors (#339)30 July 2019, 03:10:12 UTC
8a951e2 Eli Bendersky27 June 2019, 12:47:34 UTCClean up extra whitespace27 June 2019, 12:47:34 UTC
b8086eb Saullo Carvalho Castelo Branco27 June 2019, 12:44:20 UTCFix issue #99: parser for FuncDecl incorrectly sets declname attribute on return type (#329)27 June 2019, 12:44:20 UTC
dd6b6f1 Saullo Carvalho Castelo Branco01 June 2019, 12:06:48 UTCFix issue #314: Failed parsing unnamed function parameters with array dim qualifiers (#327) Fixes #31401 June 2019, 12:06:48 UTC
fd6acec Eli Bendersky09 May 2019, 14:04:55 UTCBump Python version fo AppVeyor09 May 2019, 14:04:55 UTC
c64bc6f Eli Bendersky09 May 2019, 14:03:50 UTCFollowup on #326 - simplify building up type string09 May 2019, 14:03:50 UTC
f3a7cda Kevin09 May 2019, 14:00:24 UTCFix issue #324: u/l constant integer suffix (#326)09 May 2019, 14:00:24 UTC
1c6fbab Thomas Krennwallner13 April 2019, 13:16:54 UTCInsert '.' and '..' to sys.path before import statements (#321) Restricted environments like embeddable python do not include the current working directory on startup.13 April 2019, 13:16:54 UTC
e1a1d73 Amir Gonnen27 March 2019, 22:22:44 UTCGenerate pointer types correctly (#315) * Add visit_PtrDecl to generate ptr types correctly Also removed code duplication from visit_ArrayDecl and visit_TypeDecl by calling _generate_type instead, without emitting the declname. Added tests for ptr type generation * Truncate lines longer than 80 characters per https://github.com/eliben/pycparser/pull/315/files#r26955308327 March 2019, 22:22:44 UTC
9605985 Amir Gonnen26 March 2019, 12:53:19 UTCFix array type generation (#312) (#313) * Fix array type generation (#312) Also added dim_quals handling to _generate_type Exmaple: >>> ast = parser.parse('int g(const int a[const 20]){}') >>> gen.visit(ast.ext[0].decl.type.args.params[0]) 'const int a[const 20]' >>> gen.visit(ast.ext[0].decl.type.args.params[0].type) 'int[const 20]' * Added TypeDecl generation. Added tests26 March 2019, 12:53:19 UTC
992715f Simon Lindholm06 March 2019, 13:52:00 UTCFix crash when file starts with a semicolon (#310)06 March 2019, 13:52:00 UTC
139fc1a Eli Bendersky15 February 2019, 15:30:23 UTCRemove non-qualified 3.7 build15 February 2019, 15:30:23 UTC
af699ad Eli Bendersky15 February 2019, 15:26:19 UTCAttempt to fix travis 3.7 build15 February 2019, 15:26:19 UTC
a82568a Eli Bendersky15 February 2019, 14:56:00 UTCBump travis Python 3 versions to 3.6&715 February 2019, 14:56:00 UTC
71a1930 Eli Bendersky15 February 2019, 14:40:34 UTCProtect visiting recursion against empty argument lists Fixes #30815 February 2019, 14:40:34 UTC
0da01ca Julian07 December 2018, 17:24:36 UTCextended and cleaned up #pragma testcases (#297)07 December 2018, 17:24:36 UTC
694ce0d Eli Bendersky06 December 2018, 13:14:05 UTCRevert "Fix encoding problem by adding `encoding` parameter to parse_file function. (#295)" This reverts commit 1083b55c64d6235b00f40070e452b9b2605b23da. encoding is not portable across the list of supported Python versions See #29606 December 2018, 13:14:05 UTC
1083b55 ilovexyz04 December 2018, 12:53:33 UTCFix encoding problem by adding `encoding` parameter to parse_file function. (#295) Description: For some Chinese Unicode c files, parse_file may fail if not providing proper `encoding` information. Adding `encoding` parameter will give users the option of providing correct file encoding.04 December 2018, 12:53:33 UTC
2a29d56 Eli Bendersky23 October 2018, 21:05:56 UTCFix example to properly visit nested function calls Reported in #28523 October 2018, 21:05:56 UTC
0411963 Eli Bendersky30 September 2018, 12:30:03 UTCAdd option to dump_ast example to show coordinates30 September 2018, 12:30:03 UTC
760b6ae Eli Bendersky20 September 2018, 12:11:49 UTCMention 2.6 incompatibility in CHANGES20 September 2018, 12:11:49 UTC
caa4c11 Eli Bendersky19 September 2018, 12:21:20 UTCBump versions to 2.1919 September 2018, 12:21:20 UTC
bcb5f9f Eli Bendersky19 September 2018, 12:15:46 UTCReformat dates in CHANGES to yyyy.mm.dd format19 September 2018, 12:15:46 UTC
40f0d91 Eli Bendersky31 August 2018, 13:03:05 UTCAdd test for parsing a hex float constant to the right type31 August 2018, 13:03:05 UTC
a915c3d Robbert Harms31 August 2018, 13:00:14 UTCCorrect Parsing of Floating Point Literals, issue #253 (#277) * Corrects the type attribute of a constant node when parsing doubles. This sets the type attribute to either 'float', 'long double' or 'double' depending on if 'f|F', 'l|L' or '' is specified at the end of the constant definition. * Add tests for previous changes.31 August 2018, 13:00:14 UTC
ccd673e Eli Bendersky25 July 2018, 12:52:21 UTCMerge branch 'master' of github.com:eliben/pycparser25 July 2018, 12:52:21 UTC
92f65b6 Eli Bendersky25 July 2018, 12:48:56 UTCAdd tests for empty struct/union typedecls25 July 2018, 12:48:56 UTC
8ff8088 Eli Bendersky25 July 2018, 12:36:22 UTCTrim whitespace in test file25 July 2018, 12:36:22 UTC
a301cbb Jon Dufresne28 June 2018, 13:12:24 UTCDrop testing for EOL Pythons 3.2 & 3.3 (#271) Python 3.2 and 3.3 are end of life. They are no longer receiving bug fixes, including for security issues. Python 3.3 went EOL on 2017-09-29 and Python 3.2 on 2016-02-20. For additional details on supported Python versions, see: https://devguide.python.org/#status-of-python-branches Removing support for EOL Pythons will reduce necessary testing and maintenance resources. Pass python_requires argument to setuptools to help pip decide what version of the library to install. Using pypinfo, here are the download statistics for the last 30 days, showing very minimal use of these EOL pythons: $ pypinfo --percent pycparser pyversion | python_version | percent | download_count | | -------------- | ------- | -------------- | | 2.7 | 71.64% | 1,373,309 | | 3.6 | 15.78% | 302,407 | | 3.5 | 8.32% | 159,452 | | 3.4 | 3.80% | 72,850 | | 2.6 | 0.32% | 6,187 | | 3.7 | 0.12% | 2,263 | | 3.3 | 0.02% | 360 | | 3.2 | 0.00% | 15 | | 3.8 | 0.00% | 5 | | None | 0.00% | 1 |28 June 2018, 13:12:24 UTC
0baa8f4 Jon Dufresne26 June 2018, 20:50:00 UTCRemove unnecessary __future__ import (#266) Generators have been available since 2.3. The feature is automatically included in all supported Pythons. For additional details, see: https://docs.python.org/3/library/__future__.html26 June 2018, 20:50:00 UTC
1d86699 Jon Dufresne26 June 2018, 20:49:35 UTCUse https:// for all project links where available (#267)26 June 2018, 20:49:35 UTC
e8afcc9 Jon Dufresne26 June 2018, 20:49:06 UTCUse more specific assertIsInstance in tests (#268) When running tests with Python warnings enabled, warnings of the following form appear: DeprecationWarning: Please use assertTrue instead. self.failUnless(isinstance(...)) Use assertIsInstance instead to fix these warnings. Using a more specific assert also has the advantage of more informative error reporting upon failure. https://docs.python.org/3/library/unittest.html#unittest.TestCase.assertTrue > This method should also be avoided when more specific methods are > available (e.g. assertEqual(a, b) instead of assertTrue(a == b)), > because they provide a better error message in case of failure.26 June 2018, 20:49:06 UTC
13224c1 Jon Dufresne26 June 2018, 20:48:31 UTCAvoid opening files with deprecated 'U' mode (#269) Opening files with 'U' mode is deprecated. When running tests with Python warnings enabled, the warnings of the following form are emitted: DeprecationWarning: 'U' mode is deprecated return open(name, 'rU') To open files with universal newlines on both Ptyhon 2 & 3, use the io module. It defaults to opening with universal newlines and doesn't emit a warning. https://docs.python.org/3/library/io.html > When reading input from the stream, if newline is None, universal > newlines mode is enabled.26 June 2018, 20:48:31 UTC
443474e john lee26 June 2018, 20:47:09 UTCadd more x11 related files (#265)26 June 2018, 20:47:09 UTC
cecb638 Eli Bendersky15 June 2018, 12:36:02 UTCAdd test for "const volatile int*" parsing15 June 2018, 12:36:02 UTC
2d717d4 Jon Dufresne10 June 2018, 12:21:29 UTCUpdate pypi.python.org URL to pypi.org (#262) For details on the new PyPI, see the blog post: https://pythoninsider.blogspot.ca/2018/04/new-pypi-launched-legacy-pypi-shutting.html10 June 2018, 12:21:29 UTC
03bd304 Eli Bendersky21 May 2018, 13:22:15 UTCSmall cosmetic comment fix21 May 2018, 13:22:15 UTC
5549e39 marmeladema21 May 2018, 13:20:44 UTCReplace a call to Popen by check_output in order to check that cpp returns 0. (#260)21 May 2018, 13:20:44 UTC
aedb4ed Stefano Rivera02 May 2018, 18:20:31 UTCDon't ship .pyc files and don't create pyc files when building tables (#135)02 May 2018, 18:20:31 UTC
81a12ca ldore28 April 2018, 03:09:24 UTCAdd support for empty struct (#66) (#254)28 April 2018, 03:09:24 UTC
a2a8f4a ldore26 April 2018, 12:07:08 UTCFix non-generated constant expressions in designated initializers (#246) (#255)26 April 2018, 12:07:08 UTC
168f54c Eli Bendersky13 April 2018, 03:27:43 UTCFix link13 April 2018, 03:27:43 UTC
4445799 Eli Bendersky13 April 2018, 03:27:03 UTCFix link formatting13 April 2018, 03:27:03 UTC
2e387d4 Eli Bendersky13 April 2018, 03:24:55 UTCUpdate READMEs to add more details about running examples13 April 2018, 03:24:55 UTC
902500d Jon Dufresne11 April 2018, 13:45:30 UTCAdd additional trove classifiers to setup.py (#250) - Document project as stable, ready for use in production environments - Document project license Helps library users know these values at a glance. These classifiers are displayed on the PyPI page: https://pypi.python.org/pypi/pycparser For a complete list of trove classifiers, see: https://pypi.python.org/pypi?%3Aaction=list_classifiers11 April 2018, 13:45:30 UTC
e2ed623 Jon Dufresne11 April 2018, 13:44:45 UTCInclude license file in the generated wheel package (#249) The wheel package format supports including the license file. This is done using the [metadata] section in the setup.cfg file. For additional information on this feature, see: https://wheel.readthedocs.io/en/stable/index.html#including-the-license-in-the-generated-wheel-file Helps package comply with its own license: > * Redistributions of source code must retain the above copyright notice, this > list of conditions and the following disclaimer. > * Redistributions in binary form must reproduce the above copyright notice, > this list of conditions and the following disclaimer in the documentation > and/or other materials provided with the distribution.11 April 2018, 13:44:45 UTC
667051a Seth Poulsen28 March 2018, 18:48:49 UTCFixing redefinition in Fake Headers. (#245) * Removed va_arg definition from one of the fake headers, because it was being defined twice.28 March 2018, 18:48:49 UTC
4f755d4 Seth Poulsen16 March 2018, 20:16:23 UTCFixed enum formatting in generating C code (issue #240). (#243) * Fixed enum formatting in generating C code (issue #240). * Added another enum test. Removed twice-defined function.16 March 2018, 20:16:23 UTC
5353b25 aceckel12 March 2018, 12:38:44 UTCAdd fake-defines for C99 format macro constants. This closes #89. (#241)12 March 2018, 12:38:44 UTC
7af2fb9 dbluhm03 March 2018, 13:18:26 UTCFix #235: Pragma displacing real statements (#236) * Fix #235: Pragma displacing real statements03 March 2018, 13:18:26 UTC
4992410 Eli Bendersky07 February 2018, 03:46:48 UTCRemove trailing whitespace from .h/.c files07 February 2018, 03:46:48 UTC
1894fd7 Alex Nagelkerke23 January 2018, 13:18:28 UTCExtend Xlib objects in fake includes (#233) * Extend Xlib objects in fake includes * Move X11 typedefs and defines to X11 subdirectory. Remove unecessarry function declarations header23 January 2018, 13:18:28 UTC
2168238 ldore17 January 2018, 13:31:30 UTCImplement __repr__ on Nodes (Issue #226) (#227) * Implement __repr__ on Nodes.17 January 2018, 13:31:30 UTC
97e7464 B M Corser31 December 2017, 12:54:38 UTCAdd clicky link for examples (#209)31 December 2017, 12:54:38 UTC
44429aa Bart Clephas31 December 2017, 12:49:38 UTCAdd missing fake_libc_includes for POSIX.1-2008 compatibility (#228)31 December 2017, 12:49:38 UTC
17efc7c Eli Bendersky22 November 2017, 13:57:49 UTCMinor cleanups - Removed unnecessary whitespace - Removed old & stale 'if __main__' sections in some of the library files22 November 2017, 13:57:49 UTC
ec23318 ldore22 November 2017, 13:52:53 UTCAdd support for #pragma in struct_declaration (Issue #221). (#222)22 November 2017, 13:52:53 UTC
5da662c ldore21 November 2017, 04:55:47 UTCImprove NodeVisitor performance, add iterator on Node children (Issue #219). (#220) Improve NodeVisitor performance, add iterator on Node children.21 November 2017, 04:55:47 UTC
7547e85 Kyle Altendorf19 October 2017, 03:12:26 UTCFormat enums with one value per line (#216) * Format enums with one value per line Issue #21319 October 2017, 03:12:26 UTC
988a6af Hugo10 October 2017, 12:24:32 UTCAdd Python 3.6 (#214) * Add Python 3.6 Plus the other explicit major.minor versions supported10 October 2017, 12:24:32 UTC
2fdaa98 Eli Bendersky21 July 2017, 13:36:37 UTCAdd README clarification re -OO; relevant to #19821 July 2017, 13:36:37 UTC
673acce Eli Bendersky14 July 2017, 03:25:29 UTCAddress an import of pycparser in -OO mode. In this mode there are no docstrings; we don't want an instantiation of CParser to fail, though it won't actually work correctly if used. See #197 and #19814 July 2017, 03:25:29 UTC
3c86ff4 Eli Bendersky04 July 2017, 22:19:24 UTCAdd clarification about making releases in TODO.txt04 July 2017, 22:19:24 UTC
6162a21 Eli Bendersky04 July 2017, 22:09:22 UTCUpdate version number to 2.18 for release04 July 2017, 22:09:22 UTC
17a0ba8 Eli Bendersky04 July 2017, 22:07:00 UTCUpdate README04 July 2017, 22:07:00 UTC
1d1f0dd Eli Bendersky21 April 2017, 22:58:56 UTCGood time to drop Python 2.6 testing from Travis It doesn't support unittest.skipUnless, and I don't officially support 2.6 any more anyways21 April 2017, 22:58:56 UTC
5494c08 Eli Bendersky21 April 2017, 22:57:15 UTCAdd more Python versions for AppVeyor CI and add badge to README21 April 2017, 22:57:15 UTC
4330be3 Eli Bendersky21 April 2017, 22:53:45 UTCConditinally skipping cpp-using tests unless platform is Linux21 April 2017, 22:53:45 UTC
92ae9eb Eli Bendersky21 April 2017, 22:47:35 UTCTrying to fix appveyor.yml21 April 2017, 22:47:35 UTC
bb8c384 Eli Bendersky21 April 2017, 22:39:54 UTCAdding simple appveyor.yml file for CI on appveyor21 April 2017, 22:39:54 UTC
c290496 Julian Priestley19 April 2017, 11:58:58 UTCAdd compound literal support to CGenerator (eliben/pycparser#176) (#188)19 April 2017, 11:58:58 UTC
aac7b05 Eli Bendersky07 April 2017, 12:12:51 UTCBasic AST dumping sample07 April 2017, 12:12:51 UTC
0cf73e4 Eli Bendersky03 April 2017, 13:45:17 UTCRemove myself from the copyrights inside the ply directory03 April 2017, 13:45:17 UTC
3c0603d Loren Gordon03 April 2017, 13:42:48 UTCUpdates vendored PLY library to v3.10 (#184) Fixes #17503 April 2017, 13:42:48 UTC
c7b929c Jean-Sébastien B16 March 2017, 13:47:54 UTCAdd fakedef (#183) * Add Mir typedefs in fake headers * Add xcb includes to fake includes16 March 2017, 13:47:54 UTC
fb23708 Eli Bendersky16 March 2017, 12:55:51 UTCMerge branch 'master' of github.com:eliben/pycparser16 March 2017, 12:55:51 UTC
2e953d1 Jean-Sébastien B16 March 2017, 12:46:51 UTCAdd basic XLib objects in fake package of pycparser (#180)16 March 2017, 12:46:51 UTC
516af94 Eli Bendersky10 March 2017, 14:07:29 UTCUpdate CHANGES and clean up the explore_ast example10 March 2017, 14:07:29 UTC
471442f serpilliere10 March 2017, 14:02:00 UTCAdd column support in c_parser (#178)10 March 2017, 14:02:00 UTC
2129f5f Ville Skyttä05 March 2017, 02:52:22 UTCPython 3.6 invalid escape sequence deprecation fixes (#177) https://docs.python.org/3/whatsnew/3.6.html#deprecated-python-behavior05 March 2017, 02:52:22 UTC
69bca70 Eli Bendersky26 February 2017, 14:03:54 UTCClean up cdecl.py a bit26 February 2017, 14:03:54 UTC
b23e267 Hart Chu26 February 2017, 13:56:44 UTCAdd support for expanding struct and typedef -- Issue 93 (#174) * Add support for expanding struct and typedef * Make expansion return a new node instead of in-place modification26 February 2017, 13:56:44 UTC
8bd02c3 Eli Bendersky22 February 2017, 13:56:31 UTCUpdate changes and reformat comment22 February 2017, 13:56:31 UTC
14b8a7e Nate Bogdanowicz22 February 2017, 13:54:05 UTCFix parsing TYPEIDs in declarators (#169) * Remove `init_declarator_list` workarounds * Remove `struct_declaration` workaround * Remove `declarator` pointer workaround * Add `@parameterized` decorator for parser rules * Rename `declarator` productions to `id_declarator` in preparation of adding `typeid_declarator` * Use `id_declarator` in function definitions * Add `typeid_declarator` and allow it as a `declarator` * Create separate production for `type_specifier_no_typeid` * Allow specifiers to be appended (useful for left-recursive lists) * Change `specifier_qualifier_list` to be left-recursive and require at least one `type specifier` * Change `declaration_specifiers` to require one `type_specifier` and disallow `typeid`s once we've seen a `type_specifier` * Allow `decl_body` to omit a `type_specifier` if `init_declarator` doesn't start with a TYPEID * Add `typeid_noparen_declarator` for use in `parameter_declaration`s * Add test for multi-declarator declaration using a typedef name * Move test into a more appropriate function and add another test * Expand UnaryOp in `expand_init()` * Add test for redefining name in the middle of a declaration * Added info on the `append` parameter. * Move rule template processing to a class constructor * Auto-remove template methods and remove leading underscores * Use xxx/yyy instead of XXX/YYY for better readability * Add more documentation of the templating functions * Add test for correct handling of ambiguity in parameter declarations * Don't test incremental generation of declarators yet22 February 2017, 13:54:05 UTC
599a495 Eli Bendersky22 February 2017, 04:13:03 UTCTweak serialize_ast sample to use `with` statements22 February 2017, 04:13:03 UTC
4771ceb Hart Chu22 February 2017, 04:10:36 UTCAdd example of serializing AST for #82 (#172) * Fix comment typo * Add example of serializing AST22 February 2017, 04:10:36 UTC
a611da9 Hart Chu19 February 2017, 17:30:42 UTCFix comment typo (#171)19 February 2017, 17:30:42 UTC
0f8e231 Eli Bendersky05 February 2017, 17:37:29 UTCClean up internal hacking util05 February 2017, 17:37:29 UTC
  • Newer
  • Older

Software Heritage — Copyright (C) 2015–2025, The Software Heritage developers. License: GNU AGPLv3+.
The source code of Software Heritage itself is available on our development forge.
The source code files archived by Software Heritage are available under their own copyright and licenses.
Terms of use: Archive access, API— Contact— JavaScript license information— Web API

back to top