diff --git a/Lib/distutils/openvmsccompiler.py b/Lib/distutils/openvmsccompiler.py new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TGliL2Rpc3R1dGlscy9vcGVudm1zY2NvbXBpbGVyLnB5 --- /dev/null +++ b/Lib/distutils/openvmsccompiler.py @@ -0,0 +1,383 @@ +"""distutils.openvmsccompiler + +Contains the OpenVMSCCompiler class, a subclass of CCompiler that handles +the OpenVMS-style command-line C compiler: + * macros defined with /DEFINE=(...) qualifier + * macros undefined with /UNDEFINE=(...) qualifier + * include search directories specified with /INCLUDE_DIRECTORY=(...) + * libraries + * library search directories + * compile handled by 'CC' (or similar) executable: + compiles .c to .obj + * link static library handled by 'LIBRARY' command + * link shared library handled by 'LINK /SHAREABLE' +""" + +import os, sys, re +import tempfile +import stat + +from distutils import sysconfig +from distutils.dep_util import newer +from distutils.ccompiler import \ + CCompiler, gen_lib_options +from distutils.errors import \ + DistutilsExecError, CompileError, LibError, LinkError +from distutils import log + +import subprocess + +if sys.platform == 'OpenVMS': + import vms.decc + + +class OpenVMSCCompiler(CCompiler): + + compiler_type = 'openvms' + + # These are used by CCompiler in two places: the constructor sets + # instance attributes 'preprocessor', 'compiler', etc. from them, and + # 'set_executable()' allows any of these to be set. The defaults here + # are pretty generic; they will probably have to be set by an outsider + # (eg. using information discovered by the sysconfig about building + # Python extensions). + executables = { + 'archiver' : ["LIBRARY"], + 'compiler' : ["CC"], + 'compiler_c' : ["CC"], + 'compiler_cxx' : ["CXX"], + 'compiler_so' : ["CC"], + 'linker' : ["LINK"], + 'linker_exe' : ["LINK"], + 'linker_so' : ["LINK"], + 'preprocessor' : None, + 'ranlib' : None, + } + + # Needed for the filename generation methods provided by the base + # class, CCompiler. NB. whoever instantiates/uses a particular + # UnixCCompiler instance should set 'shared_lib_ext' -- we set a + # reasonable common default here, but it's not necessarily used on all + # Unices! + + src_extensions = [".c",".C",".cc",".cxx",".cpp"] + obj_extension = ".obj" + static_lib_extension = ".olb" + shared_lib_extension = ".exe" + dylib_lib_extension = ".exe" + xcode_stub_lib_extension = ".tbd" + static_lib_format = shared_lib_format = dylib_lib_format = "%s%s" + xcode_stub_lib_format = dylib_lib_format + exe_extension = ".exe" + + def _setup_compile(self, outdir, macros, incdirs, sources, depends, + extra): + """Process arguments and decide which source files to compile.""" + if outdir is None: + outdir = self.output_dir + elif not isinstance(outdir, str): + raise TypeError("'output_dir' must be a string or None") + + if macros is None: + macros = self.macros + elif isinstance(macros, list): + macros = macros + (self.macros or []) + else: + raise TypeError("'macros' (if supplied) must be a list of tuples") + + if incdirs is None: + incdirs = self.include_dirs + elif isinstance(incdirs, (list, tuple)): + incdirs = list(incdirs) + (self.include_dirs or []) + else: + raise TypeError( + "'include_dirs' (if supplied) must be a list of strings") + + if extra is None: + extra = [] + + # Get the list of expected output (object) files + objects = self.object_filenames(sources, strip_dir=0, + output_dir=outdir) + assert len(objects) == len(sources) + + pp_opts = self._gen_preprocess_options(macros, incdirs) + + build = {} + for i in range(len(sources)): + src = sources[i] + obj = objects[i] + ext = os.path.splitext(src)[1] + self.mkpath(os.path.dirname(obj)) + build[obj] = (src, ext) + + return macros, objects, extra, pp_opts, build + + def _gen_preprocess_options(self, macros, include_dirs): + """ Generate C pre-processor options + """ + pp_define = [] + pp_undefine = [] + for macro in macros: + if not (isinstance(macro, tuple) and 1 <= len(macro) <= 2): + raise TypeError( + "bad macro definition '%s': " + "each element of 'macros' list must be a 1- or 2-tuple" + % macro) + + if len(macro) == 1: # undefine this macro + pp_undefine.append(macro[0]) + elif len(macro) == 2: + if macro[1] in (None, ''): # define with no explicit value + pp_define.append(macro[0]) + else: + if isinstance(macro[1], str) and macro[1].startswith('"'): + macro_value = '"""' + macro[1][1:-1] + '"""' + pp_define.append("%s=%s" % (macro[0], macro_value)) + else: + pp_define.append("%s=%s" % macro) + + pp_opts = [ \ + '/NAMES=(AS_IS,SHORTENED)', + '/WARNINGS=WARNINGS=ALL', + # '/WARNINGS=ERRORS=IMPLICITFUNC', + # '/L_DOUBLE_SIZE=64', # float128(nan) == inf + ] + if len(pp_undefine): + pp_opts.append("/UNDEFINE=(" + ",".join(pp_undefine) + ")") + if len(pp_define): + pp_opts.append("/DEFINE=(" + ",".join(pp_define) + ")") + + if len(include_dirs): + def fix_dir(directory): + if not '[]' in directory: + return '"' + directory + '"' + return directory + pp_opts.append(f"/INCLUDE_DIRECTORY=({','.join(map(fix_dir, include_dirs))})") + + return pp_opts + + def _get_cc_args(self, pp_opts, debug, before): + """ Generate C compiler qualifiers + """ + cc_args = [] + if debug: + cc_args.append("/DEBUG/NOOPTIMIZE") + else: + cc_args.append("/NODEBUG/OPTIMIZE") + + if before: + cc_args[:0] = before + + return cc_args + + def _compile(self, obj, src, ext, cc_args, extra_postargs, pp_opts): + lang = self.detect_language(src) + if lang == "c++": + compiler = self.compiler_cxx + else: + compiler = self.compiler_c + + try: + src_vms = vms.decc.to_vms(src, 0, 0)[0] + obj_vms = vms.decc.to_vms(obj, 0, 0)[0] + cmd_list = compiler + cc_args + pp_opts + extra_postargs + [src_vms, '/OBJECT=' + obj_vms] + self.spawn(cmd_list) + except DistutilsExecError as msg: + raise CompileError(msg) + + def create_static_lib(self, objects, output_libname, + output_dir=None, debug=0, target_lang=None): + objects, output_dir = self._fix_object_args(objects, output_dir) + + output_filename = \ + self.library_filename(output_libname, output_dir=output_dir) + + if self._need_link(objects, output_filename): + self.mkpath(os.path.dirname(output_filename)) + output_filename_vms = vms.decc.to_vms(output_filename, 0, 0)[0] + self.spawn(self.archiver + ['/CREATE', output_filename_vms]) + for input_name in objects + self.objects: + input_name_vms = vms.decc.to_vms(input_name, 0, 0)[0] + self.spawn(self.archiver + [output_filename_vms, input_name_vms]) + else: + log.debug("skipping %s (up-to-date)", output_filename) + + def link(self, target_desc, objects, + output_filename, output_dir=None, libraries=None, + library_dirs=None, runtime_library_dirs=None, + export_symbols=None, debug=0, extra_preargs=None, + extra_postargs=None, build_temp=None, target_lang=None): + objects, output_dir = self._fix_object_args(objects, output_dir) + fixed_args = self._fix_lib_args(libraries, library_dirs, + runtime_library_dirs) + libraries, library_dirs, runtime_library_dirs = fixed_args + + # lib_opts = gen_lib_options(self, library_dirs, runtime_library_dirs, + # libraries) + + if not isinstance(output_dir, (str, type(None))): + raise TypeError("'output_dir' must be a string or None") + if output_dir is not None: + output_filename = os.path.join(output_dir, output_filename) + + if self._need_link(objects, output_filename): + # ld_args = (objects + self.objects + + # lib_opts + [link_output_qualifier, output_filename]) + opt_file = tempfile.NamedTemporaryFile(suffix='.OPT', delete=False) + opt_lines = [] + + for obj_file in objects: + obj_file_vms = vms.decc.to_vms(obj_file, 0, 0)[0] + opt_lines.append(obj_file_vms) + + vms_libraries_set = set() + + verbose = False # True # '_multiarray_umath' in output_filename + + for lib_file in libraries: + lib_file_vms = None + _, lib_file_ext = os.path.splitext(lib_file) + if lib_file_ext: + # looks like full path + lib_file_ext = lib_file_ext.upper() + if lib_file_ext in ('.OLB', '.EXE'): + if re.search(r'[:\[\]]', lib_file): + lib_file_vms = lib_file + else: + lib_file_vms = vms.decc.to_vms(lib_file, 0, 0)[0] + if not lib_file_vms: + # find the library in the library_dirs + for lib_dir in library_dirs: + for lib_ext in ['','.OLB','.EXE']: + try: + lib_path = os.path.join(lib_dir, lib_file + lib_ext) + st = os.stat(lib_path) + if not stat.S_ISDIR(st.st_mode): + lib_file_ext = lib_ext + lib_file_vms = vms.decc.to_vms(lib_path, 0, 0)[0] + break + except: + pass + else: + continue + break + if lib_file_vms and lib_file_vms.lower() not in vms_libraries_set: + # write it to the OPT + opt_line = lib_file_vms + ('/LIBRARY' if lib_file_ext == '.OLB' else '/SHAREABLE') + opt_lines.append(opt_line) + vms_libraries_set.add(lib_file_vms.lower()) + + opt_lines.append('GSMATCH=LEQUAL,1,0') + opt_lines.append('CASE_SENSITIVE=YES') + + proc_names = dict() + try: + repository = open('CXX_REPOSITORY/CXX$DEMANGLER_DB') + for line in repository: + full_name = line[31:-1] + short_name = line[:31] + proc_names[full_name] = short_name + repository.close() + except: + pass + + def shorten_name(name): + if len(name) <= 31: + return name + try: + return proc_names[name] + except: + return name[:31] + + if export_symbols and len(export_symbols): + opt_lines.append('SYMBOL_VECTOR=( -') + for export_symbol in export_symbols[:-1]: + opt_lines.append(shorten_name(export_symbol) + '=PROCEDURE, -') + for export_symbol in export_symbols[-1:]: + opt_lines.append(shorten_name(export_symbol) + '=PROCEDURE )') + + if verbose: + print("--- OPT START\n") + print('\n'.join(opt_lines)) + print("--- OPT END\n") + + opt_file.write(('\n'.join(opt_lines)).encode()) + opt_file.close() + opt_name_vms = vms.decc.to_vms(opt_file.name, 0, 0)[0] + + link_output_qualifier = '/EXECUTABLE=' if target_desc == CCompiler.EXECUTABLE else '/SHAREABLE=' + output_filename_vms = vms.decc.to_vms(output_filename, 0, 0)[0] + ld_args = [link_output_qualifier + output_filename_vms, opt_name_vms + "/OPTIONS"] + + if debug: + map_file, _ = os.path.splitext(output_filename) + map_file_vms = vms.decc.to_vms(map_file + '.MAP', 0, 0)[0] + ld_args[:0] = ['/DEBUG/MAP=' + map_file_vms] + + if extra_preargs: + ld_args[:0] = extra_preargs + + if extra_postargs: + ld_args.extend(extra_postargs) + + self.mkpath(os.path.dirname(output_filename)) + + try: + linker = self.linker[:] + self.spawn(linker + ld_args) + except DistutilsExecError as msg: + raise LinkError(msg) + finally: + os.unlink(opt_file.name) + else: + log.debug("skipping %s (up-to-date)", output_filename) + + # -- Miscellaneous methods ----------------------------------------- + # These are all used by the 'gen_lib_options() function, in + # ccompiler.py. + + def library_dir_option(self, dir): + # TODO: add them to .OPT file? + return dir + + def _is_gcc(self, compiler_name): + return False + + def runtime_library_dir_option(self, dir): + return dir + + def library_option(self, lib): + return lib + + def find_library_file(self, dirs, lib, debug=0): + + if lib.lower() == 'python$shr.exe': + return os.path.join('/python$root/lib', lib) + + # shared_f = self.library_filename(lib, lib_type='shared') + # dylib_f = self.library_filename(lib, lib_type='dylib') + # xcode_stub_f = self.library_filename(lib, lib_type='xcode_stub') + # static_f = self.library_filename(lib, lib_type='static') + + # for dir in dirs: + # shared = os.path.join(dir, shared_f) + # dylib = os.path.join(dir, dylib_f) + # static = os.path.join(dir, static_f) + # xcode_stub = os.path.join(dir, xcode_stub_f) + + # # We're second-guessing the linker here, with not much hard + # # data to go on: GCC seems to prefer the shared library, so I'm + # # assuming that *all* Unix C compilers do. And of course I'm + # # ignoring even GCC's "-static" option. So sue me. + # if os.path.exists(dylib): + # return dylib + # elif os.path.exists(xcode_stub): + # return xcode_stub + # elif os.path.exists(shared): + # return shared + # elif os.path.exists(static): + # return static + + # Oops, didn't find it in *any* of 'dirs' + return None diff --git a/Lib/test/test.fdl b/Lib/test/test.fdl new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TGliL3Rlc3QvdGVzdC5mZGw= --- /dev/null +++ b/Lib/test/test.fdl @@ -0,0 +1,63 @@ +IDENT "12-NOV-2002 09:59:33 OpenVMS FDL Editor" + +SYSTEM + SOURCE "OpenVMS" + +FILE + NAME "Test file" + ORGANIZATION indexed + +RECORD + CARRIAGE_CONTROL none + FORMAT fixed + SIZE 20 + +AREA 0 + ALLOCATION 30 + BEST_TRY_CONTIGUOUS yes + BUCKET_SIZE 1 + EXTENSION 6 + +AREA 1 + ALLOCATION 3 + BEST_TRY_CONTIGUOUS yes + BUCKET_SIZE 1 + EXTENSION 3 + +AREA 2 + ALLOCATION 9 + BEST_TRY_CONTIGUOUS yes + BUCKET_SIZE 1 + EXTENSION 6 + +KEY 0 + CHANGES no + DATA_AREA 0 + DATA_FILL 100 + DATA_KEY_COMPRESSION yes + DATA_RECORD_COMPRESSION yes + DUPLICATES no + INDEX_AREA 1 + INDEX_COMPRESSION no + INDEX_FILL 100 + LEVEL1_INDEX_AREA 1 + NAME "KEY_0" + PROLOG 3 + SEG0_LENGTH 5 + SEG0_POSITION 0 + TYPE string + +KEY 1 + CHANGES yes + DATA_AREA 2 + DATA_FILL 100 + DATA_KEY_COMPRESSION no + DUPLICATES yes + INDEX_AREA 2 + INDEX_COMPRESSION no + INDEX_FILL 100 + LEVEL1_INDEX_AREA 2 + NAME "KEY_1" + SEG0_LENGTH 4 + SEG0_POSITION 5 + TYPE int4 diff --git a/Lib/test/test_vms_decc.py b/Lib/test/test_vms_decc.py new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TGliL3Rlc3QvdGVzdF92bXNfZGVjYy5weQ== --- /dev/null +++ b/Lib/test/test_vms_decc.py @@ -0,0 +1,70 @@ +import sys +import unittest +import time + +if sys.platform != 'OpenVMS': + raise unittest.SkipTest('OpenVMS required') + +import vms.decc as DECC +import vms.lib as LIB +import vms.syidef as SYIDEF + +class BaseTestCase(unittest.TestCase): + + def setUp(self): + pass + + def tearDown(self): + pass + + def test_dlopen_test(self): + """ tests if shared image is accessible """ + self.assertEqual(1, DECC.dlopen_test("python$shr")) + + def test_fix_time(self): + """ converts vms time to unix time (GMT) """ + self.assertEqual(1595490469, DECC.fix_time(51022072693664076)) + + def test_from_vms(self): + """ converts vms path to available unix paths """ + self.assertEqual( \ + list(map(lambda x: x.lower(), DECC.from_vms("python$root:[bin]python3.exe", 0))), \ + list(map(lambda x: x.lower(), DECC.from_vms("python$root:[bin]python3.*", 1)))) + + def test_getenv(self): + """ try to get PYTHONHOME """ + self.assertEqual('/python$root', DECC.getenv('PYTHONHOME', None)) + + def test_sleep(self): + """ sleep one second """ + start = time.time() + DECC.sleep(1) + diff = time.time() - start + self.assertGreaterEqual(diff, 1) + self.assertLess(diff, 1.01) + + def test_sysconf(self): + """ try to get PAGESIZE """ + pagesize_decc = DECC.sysconf(DECC._SC_PAGESIZE) + status, pagesize_sys, _ = LIB.getsyi(SYIDEF.SYI__PAGE_SIZE, None) + self.assertEqual(1, status) + pagesize_sys = int(pagesize_sys) + self.assertEqual(pagesize_decc, pagesize_sys) + + def test_to_vms(self): + """ converts unix path to vms path """ + self.assertEqual( \ + list(map(lambda x: x.lower(), DECC.to_vms('/python$root/bin/python3.exe', 0, 0))), \ + list(map(lambda x: x.lower(), DECC.to_vms('/python$root/bin/python3.*', 1, 0)))) + + def test_unixtime(self): + """ converts vms time to unix time (using time zone) """ + DECC.unixtime(51022072693664076) + + def test_vmstime(self): + """ converts unix time to vms time (GMT) """ + self.assertEqual(35067168000000000, DECC.vmstime(0)) + self.assertEqual(0, DECC.fix_time(DECC.vmstime(0))) + +if __name__ == "__main__": + unittest.main(verbosity=2) diff --git a/Lib/test/test_vms_dtr.py b/Lib/test/test_vms_dtr.py new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TGliL3Rlc3QvdGVzdF92bXNfZHRyLnB5 --- /dev/null +++ b/Lib/test/test_vms_dtr.py @@ -0,0 +1,119 @@ +import sys +import unittest + +if sys.platform != 'OpenVMS': + raise unittest.SkipTest('OpenVMS required') + +import vms.rec as rec +import vms.dtr as dtr +import vms.ssdef as SS + +class BaseTestCase(unittest.TestCase): + + def setUp(self): + pass + + def tearDown(self): + pass + + def test_demo_01(self): + """ tests demo 01 """ + r = rec.new() + rec.addstr(r, None, 10, 0) + rec.addstr(r, None, 10, 10) + rec.addstr(r, None, 6, 20) + rec.addstr(r, None, 3, 26) + rec.addstr(r, None, 5, 29) + rec.addstr(r, None, 2, 34) + rec.addstr(r, None, 5, 36) + + sts, dab = dtr.init(100, 0) + + self.assertEqual(sts, SS.SS__NORMAL, "Initialization failed") + + sts, cond, state = dtr.command(dab, "set dictionary cdd$top.dtr$lib.demo;") + + self.assertEqual(sts, SS.SS__NORMAL, "Command 'set dictionary' failed") + + if state == dtr._K_STL_MSG: + errorMsg = dtr.msg_buf(dab) + dtr.cont(dab) + + sts, cond, state = dtr.command(dab, "declare port yport using yacht;") + + self.assertEqual(sts, SS.SS__NORMAL, "Command 'declare port' failed") + + while state == dtr._K_STL_MSG: + errorMsg = dtr.msg_buf(dab) + sts, cond, state = dtr.cont(dab) + + sts, cond, state = dtr.command(dab, "ready yachts; ready yport write;") + + self.assertEqual(sts, SS.SS__NORMAL, "Command 'ready' failed") + + while state == dtr._K_STL_MSG: + errorMsg = dtr.msg_buf(dab) + sts, cond, state = dtr.cont(dab) + + sts, cond, state = dtr.command(dab, "yport = yachts with loa > 30;") + + self.assertEqual(sts, SS.SS__NORMAL, "Command '=' failed") + + while state == dtr._K_STL_MSG: + errorMsg = dtr.msg_buf(dab) + sts, cond, state = dtr.cont(dab) + + while state == dtr._K_STL_PGET: + sts = dtr.get_port(dab, r) + + self.assertEqual(sts, SS.SS__NORMAL, "Unable to retrieve data") + + dataStr = "%-10s\t%-10s\t%-6s\t%-3s\t%-5s\t%-2s\t%-5s" % (rec.getstr(r, 0), rec.getstr(r, 1), rec.getstr(r, 2), rec.getstr(r, 3), rec.getstr(r, 4), rec.getstr(r, 5), rec.getstr(r, 6)) + + state = dtr.state(dab) + + sts = dtr.finish(dab) + + self.assertEqual(sts, SS.SS__NORMAL, "Problems tidying up") + + rec.delete(r) + + def test_demo_02(self): + """ tests demo 02 """ + sts, dab = dtr.init(100, 0) + + self.assertEqual(sts, SS.SS__NORMAL, "initialization failed") + + sts, cond, state = dtr.command(dab, "set dictionary cdd$top.dtr$lib.demo.rdb;") + + self.assertEqual(sts, SS.SS__NORMAL, "Command 'set dictionary' failed") + + if state == dtr._K_STL_MSG: + errorMsg = dtr.msg_buf(dab) + dtr.cont(dab) + + sts, cond, state = dtr.command(dab, "ready jobs shared read;") + + self.assertEqual(sts, SS.SS__NORMAL, "Command 'ready' failed") + + while state == dtr._K_STL_MSG: + errorMsg = dtr.msg_buf(dab) + sts, cond, state = dtr.cont(dab) + + sts, cond, state = dtr.command(dab, "print jobs;") + + self.assertEqual(sts, SS.SS__NORMAL, "Command 'print' failed") + + sts = dtr.skip(dab, 4) + + fmt = "%4c %1c %20c %11c %11c" + + while dtr.state(dab) == dtr._K_STL_LINE: + row = dtr.row(dab, fmt) + + sts = dtr.finish(dab) + + self.assertEqual(sts, SS.SS__NORMAL, "Problems tidying up") + +if __name__ == "__main__": + unittest.main(verbosity=2) diff --git a/Lib/test/test_vms_ile3.py b/Lib/test/test_vms_ile3.py new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TGliL3Rlc3QvdGVzdF92bXNfaWxlMy5weQ== --- /dev/null +++ b/Lib/test/test_vms_ile3.py @@ -0,0 +1,79 @@ +import sys +import unittest + +if sys.platform != 'OpenVMS': + raise unittest.SkipTest('OpenVMS required') + +import vms.ile3 as ILE3 +import vms.sys as SYS +import vms.syidef as SYI +import vms.dscdef as DSC + +class BaseTestCase(unittest.TestCase): + + def setUp(self): + self.il = None + + def tearDown(self): + if self.il: + ILE3.delele(self.il) + + def test_getstr(self): + """ tests getting str """ + self.il = ILE3.new() + self.assertEqual(0, ILE3.size(self.il)) + ILE3.addstr(self.il, SYI.SYI__HW_NAME, None, 64) + self.assertEqual(1, ILE3.size(self.il)) + status, _ = SYS.getsyi(0, None, self.il) + self.assertEqual(1, status) + self.assertEqual(1, ILE3.size(self.il)) + hw_name = ILE3.getstr(self.il, 0, 0) + self.assertEqual(1, ILE3.size(self.il)) + ILE3.delete(self.il) + self.il = None + self.assertNotIn(hw_name, (None, '')) + + def test_addbin_getbyte(self): + """ tests add binary data and get byte """ + self.il = ILE3.new() + self.assertEqual(0, ILE3.size(self.il)) + ILE3.addbin(self.il, SYI.SYI__ARCH_TYPE, 0x0102030405060708, 2, 5) + self.assertEqual(1, ILE3.size(self.il)) + self.assertEqual(0x04, ILE3.getbyte(self.il, 0, 2)) + ILE3.delete(self.il) + self.il = None + + def test_addint_getint(self): + """ tests add int and get int """ + self.il = ILE3.new() + self.assertEqual(0, ILE3.size(self.il)) + ILE3.addint(self.il, SYI.SYI__ARCH_TYPE, DSC.DSC_K_DTYPE_QU, 0x0102030405060708) + self.assertEqual(1, ILE3.size(self.il)) + self.assertEqual(0x0102030405060708, ILE3.getint(self.il, 0)) + ILE3.delete(self.il) + self.il = None + + def test_addstrd(self): + """ tests add strd """ + self.il = ILE3.new() + self.assertEqual(0, ILE3.size(self.il)) + ILE3.addstrd(self.il, SYI.SYI__HW_NAME, '1234567890', 5) # one byte reserved for length + self.assertEqual(1, ILE3.size(self.il)) + hw_name = ILE3.getstr(self.il, 0, 1) + self.assertEqual(hw_name, '1234') + ILE3.delete(self.il) + self.il = None + + def test_addstrn(self): + """ tests add strn """ + self.il = ILE3.new() + self.assertEqual(0, ILE3.size(self.il)) + ILE3.addstrn(self.il, SYI.SYI__HW_NAME, '1234567890', 5) + self.assertEqual(1, ILE3.size(self.il)) + hw_name = ILE3.getstr(self.il, 0, 0) + self.assertEqual(hw_name, '12345') + ILE3.delete(self.il) + self.il = None + +if __name__ == "__main__": + unittest.main(verbosity=2) diff --git a/Lib/test/test_vms_lib.py b/Lib/test/test_vms_lib.py new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TGliL3Rlc3QvdGVzdF92bXNfbGliLnB5 --- /dev/null +++ b/Lib/test/test_vms_lib.py @@ -0,0 +1,95 @@ +import sys +import unittest +import os + +if sys.platform != 'OpenVMS': + raise unittest.SkipTest('OpenVMS required') + +import vms.lib as LIB +import vms.ssdef as SS +import vms.jpidef as JPI +import vms.syidef as SYI + +class BaseTestCase(unittest.TestCase): + + def setUp(self): + pass + + def tearDown(self): + pass + + def test_create_dir(self): + """ tests creating directory """ + dirname = 'kill_this_temporary_directory' + status = LIB.create_dir('[.' + dirname + ']', 0, 0xffff, 0) + self.assertIn(status, (SS.SS__CREATED, SS.SS__NORMAL)) + if status == SS.SS__CREATED: + os.rmdir(dirname) + status = LIB.create_dir('[.' + dirname + ']', None, 0xffff, 0) + self.assertIn(status, (SS.SS__CREATED, SS.SS__NORMAL)) + if status == SS.SS__CREATED: + os.rmdir(dirname) + + def test_date_time(self): + """ tests date_time """ + status, date_str = LIB.date_time() + self.assertEqual(1, status) + self.assertNotIn(date_str, ('', None)) + + def test_ef(self): + """ tests ef """ + status, ef = LIB.get_ef() + self.assertEqual(1, status) + status = LIB.free_ef(ef) + self.assertEqual(1, status) + + def test_common(self): + """ tests common """ + common_value = "-=Python=-" + status = LIB.put_common(common_value) + self.assertEqual(1, status) + status, got_common_value = LIB.get_common() + self.assertEqual(1, status) + self.assertEqual(got_common_value, common_value) + + common_value = "-=Python=-" * 32 + status = LIB.put_common(common_value) + self.assertEqual(1409041, status) # truncated + status, got_common_value = LIB.get_common() + self.assertEqual(1, status) + self.assertEqual(got_common_value, common_value[:252]) + + def test_get_hostname(self): + """ tests get_hostname """ + status, host_name = LIB.get_hostname(0) + self.assertEqual(1, status) + self.assertNotIn(host_name, ('', None)) + status, host_name = LIB.get_hostname(1) + self.assertEqual(1, status) + self.assertNotIn(host_name, ('', None)) + + def test_getjpi(self): + """ tests getjpi """ + status, pagecount_str = LIB.getjpi(JPI.JPI__PPGCNT, 0, None) + self.assertEqual(1, status) + self.assertIsInstance(pagecount_str, str) + pagecount_int = int(pagecount_str) + self.assertEqual(str(pagecount_int), pagecount_str) + self.assertGreater(pagecount_int, 0) + + def test_getsyi(self): + """ tests getsyi """ + status, pagesize_str, _ = LIB.getsyi(SYI.SYI__PAGE_SIZE, None) + self.assertEqual(1, status) + self.assertIsInstance(pagesize_str, str) + pagesize_int = int(pagesize_str) + self.assertEqual(str(pagesize_int), pagesize_str) + self.assertGreater(pagesize_int, 0) + + def test_spawn(self): + """ tests spawn """ + status, pid = LIB.spawn('show time', None, None, 0, None) + self.assertEqual(1, status) + +if __name__ == "__main__": + unittest.main(verbosity=2) diff --git a/Lib/test/test_vms_rdb.py b/Lib/test/test_vms_rdb.py new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TGliL3Rlc3QvdGVzdF92bXNfcmRiLnB5 --- /dev/null +++ b/Lib/test/test_vms_rdb.py @@ -0,0 +1,145 @@ +import sys +import unittest +import os +import tempfile + +if sys.platform != 'OpenVMS': + raise unittest.SkipTest('OpenVMS required') + +import rdb +import vms.decc + +class BaseTestCase(unittest.TestCase): + + + def setUp(self): + self.dbname = '' + self.dbname_vms = '' + self.create_sql_database() + + def tearDown(self): + if self.dbname: + os.chmod(self.dbname, 0o777) + os.unlink(self.dbname) + name, ext = os.path.splitext(self.dbname) + name = name + '.snp' + os.chmod(name, 0o777) + os.unlink(name) + self.dbname = '' + + def create_sql_database(self): + """ tests creating SQL database """ + + sql_content = \ +'''$!============================================================ +$temp = f$search("{dbname}") +$if temp .nes. "" +$then +$ goto go_out +$endif +$sql$ +create database filename {dbname} + number of users 500 + number of cluster nodes 1; +create domain standard_address char(25); +create domain standard_city char(20); +create domain standard_name char(30); +create domain standard_tel char(10); +commit; +create table customer( + name char(30), + address char(25), + city char(20), + tel1 char(10), + tel2 char(10)); +commit; +alter table customer add column postal char(6) after column city; +alter table customer add column province char(15) after column city; +commit; +insert into customer values( + 'Neil Rieck', + '20 Water St N', + 'Kitchener', + 'Ontario', + 'N2H5A5', + '5195551212', + ''); +insert into customer values( + 'Steve Kennel', + '20 Water St N', + 'Kitchener', + 'Ontario', + 'N2H5A5', + '5195551212', + ''); +insert into customer values( + 'Dave McNeil', + '140 Bayfield St', + 'Barrie', + 'Ontario', + 'L4M3B1', + '7055551212', + ''); +insert into customer( + name,address,city,province,postal,tel1,tel2) + values( + 'Karim Macklai', + '220 Simcoe St', + 'Toronto', + 'Ontario', + 'M5T1T4', + '4165551212', + ''); +commit; +exit +$go_out: +$exit +''' + fd, self.dbname = tempfile.mkstemp(suffix='.RDB') + os.close(fd) + os.unlink(self.dbname) + self.dbname_vms = vms.decc.to_vms(self.dbname, 0, 0)[0] + sql_content = sql_content.format(dbname=self.dbname_vms) + + with tempfile.NamedTemporaryFile(suffix=".COM", delete=False) as tmpfile: + tmpfile.write(sql_content.encode()) + tmpfile.close() + tmpfile_vms_name = vms.decc.to_vms(tmpfile.name, 0, 0)[0] + p = os.popen('@' + tmpfile_vms_name) + data = p.read() + p.close() + os.unlink(tmpfile.name) + + def test_sql_database(self): + """ tests SQL database """ + + self.assertIsNot(rdb.Attach(self.dbname_vms), -1, rdb.Error()) + + cursor = "C0001" + ch = rdb.DeclareCursor(cursor, "select name, address, city from customer") + + self.assertIsNot(ch, None, rdb.Error()) + + rdb.SetReadonly() + + self.assertIsNot(rdb.OpenCursor(ch), -1, rdb.Error()) + + results = [] + + while True: + row = rdb.FetchRow(ch) + if row is None: + break + results.append((row[0], row[1], row[2])) + + self.assertIs(rdb.Sqlcode(), 100, rdb.Error()) + + self.assertIsNot(rdb.CloseCursor(ch), -1, rdb.Error()) + + rdb.Free(ch) # Free cursor handle + rdb.Rollback() + rdb.Detach() + + +if __name__ == "__main__": + unittest.main(verbosity=2) diff --git a/Lib/test/test_vms_rms.py b/Lib/test/test_vms_rms.py new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TGliL3Rlc3QvdGVzdF92bXNfcm1zLnB5 --- /dev/null +++ b/Lib/test/test_vms_rms.py @@ -0,0 +1,328 @@ +import sys +import os +import unittest + +if sys.platform != 'OpenVMS': + raise unittest.SkipTest('OpenVMS required') + +import struct +import _rms as RMS +import vms.fabdef as FABDEF +import vms.rmsdef as RMSDEF +import vms.ssdef as SSDEF + +class BaseTestCase(unittest.TestCase): + + def setUp(self): + try: + os.unlink('test.dat') + except: + pass + if os.access('test.fdl', os.R_OK): + os.system('CREATE/FDL=test.fdl test.dat') + else: + os.system('CREATE/FDL=python$root:[lib.python3^.8.test]test.fdl test.dat') + + self.records = [ + (b'AA5AA', 5, b'1234567890A'), + (b'BB2BB', 2, b'1234567890B'), + (b'CC4CC', 4, b'1234567890C'), + (b'DD1DD', 1, b'1234567890D'), + (b'EE1EE', 2, b'1234567890E'), + (b'FF3FF', 3, b'1234567890F'), + ] + + self.records_expected_key1_unmodified = [ + (b'DD1DD', 1, b'1234567890D'), + (b'BB2BB', 2, b'1234567890B'), + (b'EE1EE', 2, b'1234567890E'), + (b'FF3FF', 3, b'1234567890F'), + (b'CC4CC', 4, b'1234567890C'), + (b'AA5AA', 5, b'1234567890A'), + ] + + self.records_expected_key0_modified = [ + (b'AA5AA', 15, b'X234567890A'), + (b'BB2BB', 12, b'X234567890B'), + (b'CC4CC', 14, b'X234567890C'), + (b'DD1DD', 11, b'X234567890D'), + (b'EE1EE', 12, b'X234567890E'), + (b'FF3FF', 13, b'X234567890F'), + ] + + self.records_expected_key1_modified = [ + (b'DD1DD', 11, b'X234567890D'), + (b'BB2BB', 12, b'X234567890B'), + (b'EE1EE', 12, b'X234567890E'), + (b'FF3FF', 13, b'X234567890F'), + (b'CC4CC', 14, b'X234567890C'), + (b'AA5AA', 15, b'X234567890A'), + ] + + self.records_expected_key0_after_del_12 = [ + (b'AA5AA', 15, b'X234567890A'), + (b'CC4CC', 14, b'X234567890C'), + (b'DD1DD', 11, b'X234567890D'), + (b'FF3FF', 13, b'X234567890F'), + ] + + self.records_expected_key1_after_del_14_12 = [ + (b'DD1DD', 11, b'X234567890D'), + (b'FF3FF', 13, b'X234567890F'), + (b'AA5AA', 15, b'X234567890A'), + ] + + + def tearDown(self): + try: + os.unlink('test.dat') + except: + pass + + + def test_demo_1(self): + + acc = FABDEF.FAB_M_PUT + FABDEF.FAB_M_GET + FABDEF.FAB_M_DEL + FABDEF.FAB_M_UPD + shr = FABDEF.FAB_M_SHRPUT + FABDEF.FAB_M_SHRGET + FABDEF.FAB_M_SHRDEL + FABDEF.FAB_M_SHRUPD + f = RMS.file('test.dat', fac=acc, shr=shr) + + # empty file + f.rewind() + s = f.find() + while(s != RMSDEF.RMS__EOF): + f.delete() + s = f.find() + + # Insert a few records + for rec_ in self.records: + rec = struct.pack(b"=5si11s", rec_[0], rec_[1], rec_[2]) + f.put(rec) + + # Initial records + f.rewind() + for rec_ in self.records: + r_expected = struct.pack(b"=5si11s", rec_[0], rec_[1], rec_[2]) + s, r_from_file = f.fetch() + self.assertEqual(s, RMSDEF.RMS__NORMAL) + self.assertEqual(r_from_file, r_expected) + + # Update all records + f.rewind() + for rec_ in self.records: + s, r = f.fetch() + self.assertEqual(s, RMSDEF.RMS__NORMAL) + self.assertNotEqual(r, None) + k, n, v = struct.unpack("=5si11s", r) + rec = struct.pack(b"=5si11s", k, n + 10, b'X' + v[1:]) + s = f.update(rec) + self.assertIn(s, (RMSDEF.RMS__NORMAL, RMSDEF.RMS__OK_DUP)) + + # use secondary key and an iterator + s = f.usekey(1) + s = f.rewind() + pos = 0 + for r in f: + self.assertEqual(s, RMSDEF.RMS__NORMAL) + rec_ = self.records_expected_key1_modified[pos] + pos = pos + 1 + r_expected = struct.pack(b"=5si11s", rec_[0], rec_[1], rec_[2]) + self.assertEqual(r, r_expected) + + # build a list of all records + f.usekey(0) + f.rewind() + all_recs = [struct.unpack("=5si11s", r) for r in f] + self.assertEqual(all_recs, self.records_expected_key0_modified) + + f.usekey(1) + f.rewind() + all_recs = [struct.unpack("=5si11s", r) for r in f] + self.assertEqual(all_recs, self.records_expected_key1_modified) + + # delete a record using delete(14) + f.usekey(1) + + key = struct.pack("=i", 14) + s = f.delete(key) + self.assertEqual(s, RMSDEF.RMS__NORMAL) + + # delete all record key 12 using find(12) + delete() + key = struct.pack("=i", 12) + s = f.find(key) + self.assertEqual(s, RMSDEF.RMS__NORMAL) + + while (1): + s, r = f.fetch() + if r: + k, n, v = struct.unpack("=5si11s", r) + if n == 12: + s = f.delete() + else: + break + else: + break + + # build a list of all records after delete + f.rewind() + all_recs = [struct.unpack("=5si11s", r) for r in f] + self.assertEqual(all_recs, self.records_expected_key1_after_del_14_12) + + # Close the file + f.close() + + + + def test_demo_2(self): + + from vms.indexedfile import IndexedFile, Record + + class TestRec(Record): + _field = [ + ('f1', '5s'), + ('f2', 'i'), + ('f3', '11s'), + ] + _fmt = '=' + ''.join([x[1] for x in _field]) + _fixsize = struct.calcsize(_fmt) + + def __eq__(self, other): + return self.pack() == other.pack() + + def keyval(self, keynum): + if keynum == 0: + return self.f1 + elif keynum == 1: + return self.f2 + else: + raise "Invalid keynum parameter" + + + class TestFile(IndexedFile): + Name = 'test.dat' + def __init__(self): + IndexedFile.__init__(self, TestFile.Name, TestRec) + + def primary_keynum(self): + return 0 + + def pack_key(self, keynum, keyval): + if keynum == 0: + return struct.pack("=5s", keyval) + elif keynum == 1: + return struct.pack("=i", keyval) + else: + raise KeyError + + f = TestFile() + # Reset file + f.reset() + + # Insert a few records + for rec_ in self.records: + rec = TestRec(rec_) + f.put(rec) + + # Initial records using an iterator, primary key order + pos = 0 + for rec in f: + self.assertEqual(rec, TestRec(self.records[pos])) + pos = pos + 1 + + # Initial records using an iterator, secondary key order + f.iterator_keynum(1) + pos = 0 + for rec in f: + self.assertEqual(rec, TestRec(self.records_expected_key1_unmodified[pos])) + pos = pos + 1 + + # Update all records using an iterator + # iterator key is automatically reset to primary key + for rec in f: + rec.f2 = rec.f2 + 10 + rec.f3 = b'X' + rec.f3[1:] + f.update_current(rec) + + # Updated records using an iterator + pos = 0 + for rec in f: + self.assertEqual(rec, TestRec(self.records_expected_key0_modified[pos])) + pos = pos + 1 + + # build a list of all records + lst = f.fetchall(0) + self.assertEqual(lst, list(TestRec(x) for x in self.records_expected_key0_modified)) + + ### Not implemented + ### print + ### print ('delete a record using secondary key value 14') + ### f.delete(1, 14) + + # Records using an iterator, secondary key order + f.iterator_keynum(1) + pos = 0 + for rec in f: + self.assertEqual(rec, TestRec(self.records_expected_key1_modified[pos])) + pos = pos + 1 + + # delete all records using secondary key value 12 + f.open(acc = FABDEF.FAB_M_GET + FABDEF.FAB_M_DEL) + f.usekey(1) + f.rewind() + f.find(None, f.pack_key(1, 12)) + for rec in f: + if rec.f2 == 12: + f.delete_current() + else: + break + f.close() + + # Records using an iterator, primary key order + pos = 0 + for rec in f: + self.assertEqual(rec, TestRec(self.records_expected_key0_after_del_12[pos])) + pos = pos + 1 + + + def test_demo_3(self): + acc = FABDEF.FAB_M_GET + shr = FABDEF.FAB_M_SHRPUT + FABDEF.FAB_M_SHRGET + FABDEF.FAB_M_SHRDEL + FABDEF.FAB_M_SHRUPD + try: + f = RMS.file('sysuaf',fac=acc, shr=shr) + except: + raise unittest.SkipTest('High privileges required') + + # Alphabetic order + + for i in range(10): + s,r = f.fetch() + lst = struct.unpack("=i32shhiQ32s32p", r[:116]) + self.assertIsNotNone(lst) + # print('%s [%o,%o]' % (lst[1], lst[3], lst[2])) + + # UIC order + + f.usekey(1) + f.rewind() + i = 0 + for r in f: + i += 1 + if (i > 10): break + lst = struct.unpack("=i32shhiQ32s32p", r[:116]) + self.assertIsNotNone(lst) + # print('%s [%o,%o]' % (lst[1], lst[3], lst[2])) + + + # Alphabetic order + + f.usekey(0) + f.rewind() + for r in f: + lst = struct.unpack("=i32shhiQ32s32p", r[:116]) + self.assertIsNotNone(lst) + # print('%s [%o,%o]' % (lst[1], lst[3], lst[2])) + + f.close() + + +if __name__ == "__main__": + unittest.main(verbosity=2) diff --git a/Lib/test/test_vms_sys.py b/Lib/test/test_vms_sys.py new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TGliL3Rlc3QvdGVzdF92bXNfc3lzLnB5 --- /dev/null +++ b/Lib/test/test_vms_sys.py @@ -0,0 +1,332 @@ +import sys +import unittest +import time +import os +import threading + +if sys.platform != 'OpenVMS': + raise unittest.SkipTest('OpenVMS required') + +import vms.sys as SYS +import vms.ile3 as ILE3 +import vms.ssdef as SS +import vms.jpidef as JPI +import vms.syidef as SYI +import vms.iodef as IO +import vms.lnmdef as LNM +import vms.dscdef as DSC +import vms.psldef as PSL +import vms.dvsdef as DVS +import vms.dcdef as DC +import vms.dvidef as DVI +import vms.lkidef as LKI +import vms.quidef as QUI +import vms.jbcmsgdef as JBC +import vms.rmidef as RMI +import vms.uaidef as UAI + +class BaseTestCase(unittest.TestCase): + + def setUp(self): + self.context = 0 + + def tearDown(self): + if self.context: + SYS.finish_rdb(self.context) + + def test_asctim(self): + """ tests asctim """ + vms_time = 51022884689600846 + status, result = SYS.asctim(vms_time, 0) + self.assertEqual(status, SS.SS__NORMAL) + self.assertEqual('24-JUL-2020 06:21:08.96', result) + status, result = SYS.asctim(vms_time, 1) + self.assertEqual(status, SS.SS__NORMAL) + self.assertEqual('06:21:08.96', result) + + def test_bintim(self): + """ tests bintim """ + time_str = '24-JUL-2020 06:21:08.96' + status, vms_time = SYS.bintim(time_str) + self.assertEqual(status, SS.SS__NORMAL) + self.assertEqual(51022884689600000, vms_time) + + def test_id(self): + """ tests asctoid and idtoasc """ + name = 'SYSTEM' + status, result_id, result_attrib = SYS.asctoid(name) + self.assertEqual(status, SS.SS__NORMAL) + self.assertGreater(result_id, 0) + self.assertNotEqual(result_attrib, None) + status, result_name, result_id, result_attrib, self.context = SYS.idtoasc(result_id, 0) + self.assertEqual(status, SS.SS__NORMAL) + self.assertNotEqual(self.context, 0) + self.assertEqual(result_name, name) + status = SYS.finish_rdb(self.context) + self.context = 0 + self.assertEqual(status, SS.SS__NORMAL) + + def test_mbx(self): + """ test mailbox """ + test_bytes = b'test bytes\n' + mbx_name = "PythonTest" + status, mbx_channel = SYS.crembx( \ + 0, # temporary/permanent + 0, # maxmsg + 0, # bufquo + 0, # promsk + 0, # acmode + mbx_name, # logname + 0) # flags + self.assertEqual(status, SS.SS__NORMAL) + status, written, iostatus = SYS.writevblk(mbx_channel, test_bytes, 0, IO.IO_M_NOW | IO.IO_M_STREAM) + self.assertEqual(status, SS.SS__NORMAL) + self.assertEqual(1, iostatus) + self.assertEqual(len(test_bytes), written) + status, read_channel = SYS.assign(mbx_name, 0, None, 0) + self.assertEqual(status, SS.SS__NORMAL) + status, read_bytes, iostatus = SYS.readvblk(read_channel, len(test_bytes), 0, IO.IO_M_NOW | IO.IO_M_STREAM) + self.assertEqual(status, SS.SS__NORMAL) + self.assertEqual(1, iostatus) + self.assertEqual(read_bytes, test_bytes) + status = SYS.dassgn(read_channel) + self.assertEqual(status, SS.SS__NORMAL) + status = SYS.delmbx(mbx_channel) + self.assertEqual(status, SS.SS__NORMAL) + + def test_cancel(self): + """ test cancel """ + test_bytes = b'test bytes' + mbx_name = "PythonTest" + status, mbx_channel = SYS.crembx(0, 0, 0, 0, 0, mbx_name, 0) + self.assertEqual(status, SS.SS__NORMAL) + + def cancel_thread_fn(retstat): + time.sleep(1.0) + retstat.append(SYS.cancel(mbx_channel)) + + cancel_thread_retstat = [] + cancel_thread = threading.Thread(target=cancel_thread_fn, args=(cancel_thread_retstat,)) + cancel_thread.start() + + status, read_bytes, iostatus = SYS.readvblk(mbx_channel, len(test_bytes), 0, IO.IO_M_STREAM) + self.assertEqual(status, SS.SS__NORMAL) + self.assertIn(iostatus, (SS.SS__ABORT, SS.SS__CANCEL)) + self.assertEqual(0, len(read_bytes)) + + cancel_thread.join() + self.assertEqual(1, len(cancel_thread_retstat)) + self.assertEqual(1, cancel_thread_retstat[0]) + + status = SYS.delmbx(mbx_channel) + self.assertEqual(status, SS.SS__NORMAL) + + def test_logical_name(self): + """ test create, translate and delete logical name """ + log_name = 'PythonTestCRELNM' + log_value = 'Value of PythonTestCRELNM' + log_table = 'LNM$PROCESS_TABLE' + il = ILE3.new() + ILE3.addstrn(il, LNM.LNM__STRING, log_value, len(log_value)) + status = SYS.crelnm(0, log_table, log_name, PSL.PSL_C_USER, il) + ILE3.delete(il) + self.assertIn(status, (SS.SS__NORMAL, SS.SS__SUPERSEDE)) + + il = ILE3.new() + ILE3.addint(il, LNM.LNM__INDEX, DSC.DSC_K_DTYPE_LU, 0) + ILE3.addint(il, LNM.LNM__ATTRIBUTES, DSC.DSC_K_DTYPE_LU, 0) + ILE3.addint(il, LNM.LNM__LENGTH, DSC.DSC_K_DTYPE_LU, 0) + ILE3.addstr(il, LNM.LNM__STRING, None, 255) + ILE3.addstr(il, LNM.LNM__TABLE, None, 32) + status = SYS.trnlnm(LNM.LNM_M_CASE_BLIND, None, log_name, PSL.PSL_C_USER, il) + attributes = ILE3.getint(il, 1) + value_length = ILE3.getint(il, 2) + value_str = ILE3.getstr(il, 3, 0) + table_str = ILE3.getstr(il, 4, 0) + ILE3.delete(il) + self.assertEqual(status, SS.SS__NORMAL) + self.assertTrue(attributes & LNM.LNM_M_EXISTS) + self.assertEqual(value_length, len(log_value)) + self.assertEqual(value_str, log_value) + self.assertEqual(table_str, log_table) + + status = SYS.dellnm(log_table, log_name, PSL.PSL_C_USER) + self.assertEqual(status, SS.SS__NORMAL) + + def test_device_scan(self): + """ test device_scan """ + il = ILE3.new() + ILE3.addint(il, DVS.DVS__DEVCLASS, DSC.DSC_K_DTYPE_LU, DC.DC__DISK) + + devices = [] + status, dev_name, context = SYS.device_scan('*', il, 0) + while status == SS.SS__NORMAL: + devices.append(dev_name) + status, dev_name, context = SYS.device_scan('*', il, context) + + ILE3.delete(il) + self.assertGreater(len(devices), 0) + self.assertEqual(status, SS.SS__NOMOREDEV) + + def test_uicstr(self): + """ test uicstr """ + status, ret_str = SYS.uicstr(123, 0) + self.assertEqual(status, SS.SS__NORMAL) + self.assertEqual(ret_str, '[0,173]') + + def test_getdvi(self): + """ test getdvi """ + il = ILE3.new() + ILE3.addint(il, DVS.DVS__DEVCLASS, DSC.DSC_K_DTYPE_LU, DC.DC__DISK) + status, dev_name, _ = SYS.device_scan('*', il, 0) + ILE3.delete(il) + self.assertIn(status, (SS.SS__NORMAL, SS.SS__NOMOREDEV)) + + il = ILE3.new() + ILE3.addint(il, DVI.DVI__DEVCHAR, DSC.DSC_K_DTYPE_LU, 0) + + status = SYS.getdvi(dev_name, il) + characteristics = ILE3.getint(il, 0) + + ILE3.delete(il) + self.assertEqual(status, SS.SS__NORMAL) + DEV_M_DIR = 0x8 # has directories + self.assertTrue(characteristics & DEV_M_DIR) + DEV_M_FOD = 0x4000 # is file oriented + self.assertTrue(characteristics & DEV_M_FOD) + + def test_getjpi(self): + """ test getjpi """ + il = ILE3.new() + ILE3.addint(il, JPI.JPI__PPGCNT, DSC.DSC_K_DTYPE_LU, 0) + status, pid = SYS.getjpi(0, None, il) + ppgcnt = ILE3.getint(il, 0) + ILE3.delete(il) + self.assertEqual(status, SS.SS__NORMAL) + self.assertGreater(pid, 0) + self.assertGreater(ppgcnt, 0) + + def test_getlki(self): + """ test getlki """ + locks = 0 + lkiaddr = 0 + il = ILE3.new() + ILE3.addint(il, LKI.LKI__LOCKID, DSC.DSC_K_DTYPE_LU, 0) + while True: + status, lkiaddr = SYS.getlki(lkiaddr, il) + if status != SS.SS__NORMAL: + break + lockid = ILE3.getint(il, 0) + self.assertEqual(lockid & 0xffff, lkiaddr & 0xffff) + locks = locks + 1 + ILE3.delete(il) + self.assertEqual(status, SS.SS__NOMORELOCK) + + def test_getmsg(self): + """ test getmsg """ + msgid = SS.SS__HBMMCREPOSTMRG + flags = 0x0f + status, message, optional = SYS.getmsg(msgid, flags) + self.assertEqual(status, SS.SS__NORMAL) + self.assertEqual(message, '%SYSTEM-I-HBMMCREPOSTMRG, HBMM master bitmaps will be created after shadow set merge completes') + self.assertEqual(optional, 0) + + def test_getqui(self): + """ test getqui """ + il = ILE3.new() + ILE3.addstr(il, QUI.QUI__SEARCH_NAME, '*', 32) + ILE3.addstr(il, QUI.QUI__QUEUE_NAME, None, 32) + context = -1 + status, context = SYS.getqui(QUI.QUI__DISPLAY_QUEUE, context, il) + qui_name = ILE3.getstr(il, 1, 0) + ILE3.delete(il) + self.assertIn(status, (JBC.JBC__NOMOREQUE, SS.SS__NORMAL)) + self.assertNotEqual(qui_name, '') + if status == SS.SS__NORMAL: + status, context = SYS.getqui(QUI.QUI__CANCEL_OPERATION, context, None) + self.assertEqual(status, SS.SS__NORMAL) + + def test_getrmi(self): + """ test getrmi """ + il = ILE3.new() + ILE3.addint(il, RMI.RMI__CPUIDLE, DSC.DSC_K_DTYPE_QU, 0) + status = SYS.getrmi(il) + cpu_idle = ILE3.getint(il, 0) + ILE3.delete(il) + self.assertEqual(status, SS.SS__NORMAL) + self.assertGreater(cpu_idle, 0) + + def test_getsyi(self): + """ test getsyi """ + il = ILE3.new() + ILE3.addstr(il, SYI.SYI__ARCH_NAME, None, 16) + ILE3.addint(il, SYI.SYI__ARCH_TYPE, DSC.DSC_K_DTYPE_LU, 0) + csid = -1 + status, csid = SYS.getsyi(csid, None, il) + arch_name = ILE3.getstr(il, 0, 0) + arch_type = ILE3.getint(il, 1) + ILE3.delete(il) + self.assertEqual(status, SS.SS__NORMAL) + self.assertNotEqual(arch_name, '') + self.assertIn(arch_type, (1,2,3)) + + def test_gettim(self): + """ test gettim """ + status, time1 = SYS.gettim() + self.assertEqual(status, SS.SS__NORMAL) + self.assertGreater(time1, 0) + time.sleep(0.1) + status, time2 = SYS.gettim() + self.assertEqual(status, SS.SS__NORMAL) + self.assertGreater(time2, time1) + + def test_getuai(self): + """ test getuai """ + # setuai requires BYPASS or SYSPRV + il = ILE3.new() + ILE3.addstr(il, JPI.JPI__ACCOUNT, None, 8) + ILE3.addstr(il, JPI.JPI__USERNAME, None, 12) + status, pid = SYS.getjpi(0, None, il) + jpi_account = ILE3.getstr(il, 0, 0) + jpi_username = ILE3.getstr(il, 1, 0) + ILE3.delete(il) + self.assertEqual(status, SS.SS__NORMAL) + self.assertNotEqual(jpi_account, '') + self.assertNotEqual(jpi_username, '') + self.assertNotEqual(pid, 0) + + il = ILE3.new() + ILE3.addstr(il, UAI.UAI__ACCOUNT, None, 32) + ILE3.addstr(il, UAI.UAI__DEFDIR, None, 64) + ILE3.addint(il, UAI.UAI__UIC, DSC.DSC_K_DTYPE_LU, 0) + status = SYS.getuai(jpi_username, il) + uai_account = ILE3.getstr(il, 0, 0) + uai_defdir = ILE3.getstr(il, 1, 1) + uai_uic = ILE3.getint(il, 2) + ILE3.delete(il) + self.assertEqual(status, SS.SS__NORMAL) + self.assertEqual(jpi_account.strip(), uai_account.strip()) + self.assertNotEqual(uai_defdir, '') + self.assertNotEqual(uai_uic, 0) + + def test_hiber(self): + """ test hiber and schdwk """ + hiber_time = 10000000 # in 100 nanoseconds + status, _ = SYS.schdwk(0, None, -hiber_time) + self.assertEqual(status, SS.SS__NORMAL) + # status, time1 = SYS.gettim() + status = SYS.hiber() + self.assertEqual(status, SS.SS__NORMAL) + # status, time2 = SYS.gettim() + # self.assertLessEqual(abs((time2 - time1)-hiber_time), 10000) + + # # Write access to the rights database is required. + # def test_ident(self): + # """ test add_ident, rem_ident """ + # status, res_id = SYS.add_ident('PythonTestID', 0, 0) + # self.assertEqual(status, SS.SS__NORMAL) + # status, res_id = SYS.rem_ident(res_id) + # self.assertEqual(status, SS.SS__NORMAL) + +if __name__ == "__main__": + unittest.main(verbosity=2) diff --git a/Makefile b/Makefile new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TWFrZWZpbGU= --- /dev/null +++ b/Makefile @@ -0,0 +1,1930 @@ +# Generated automatically from Makefile.pre by makesetup. +# Top-level Makefile for Python +# +# As distributed, this file is called Makefile.pre.in; it is processed +# into the real Makefile by running the script ./configure, which +# replaces things like @spam@ with values appropriate for your system. +# This means that if you edit Makefile, your changes get lost the next +# time you run the configure script. Ideally, you can do: +# +# ./configure +# make +# make test +# make install +# +# If you have a previous version of Python installed that you don't +# want to overwrite, you can use "make altinstall" instead of "make +# install". Refer to the "Installing" section in the README file for +# additional details. +# +# See also the section "Build instructions" in the README file. + +# === Variables set by makesetup === + +MODBUILT_NAMES= posix errno pwd _sre _codecs _weakref _functools _operator _collections _abc itertools atexit _signal _stat time _thread _locale _io faulthandler _tracemalloc _symtable xxsubtype +MODDISABLED_NAMES= +MODOBJS= Modules/posixmodule.o Modules/errnomodule.o Modules/pwdmodule.o Modules/_sre.o Modules/_codecsmodule.o Modules/_weakref.o Modules/_functoolsmodule.o Modules/_operator.o Modules/_collectionsmodule.o Modules/_abc.o Modules/itertoolsmodule.o Modules/atexitmodule.o Modules/signalmodule.o Modules/_stat.o Modules/timemodule.o Modules/_threadmodule.o Modules/_localemodule.o Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o Modules/faulthandler.o Modules/_tracemalloc.o Modules/hashtable.o Modules/symtablemodule.o Modules/xxsubtype.o +MODLIBS= $(LOCALMODLIBS) $(BASEMODLIBS) + +# === Variables set by configure +VERSION= 3.8 +srcdir= . + +abs_srcdir= /home/vorfolomeev/Python-3.8.2 +abs_builddir= /home/vorfolomeev/Python-3.8.2 + + +CC= gcc -pthread +CXX= g++ -pthread +MAINCC= $(CC) +LINKCC= $(PURIFY) $(MAINCC) +AR= ar +READELF= readelf +SOABI= cpython-38-x86_64-linux-gnu +LDVERSION= $(VERSION)$(ABIFLAGS) +LIBPYTHON= +GITVERSION= +GITTAG= +GITBRANCH= +PGO_PROF_GEN_FLAG=-fprofile-generate +PGO_PROF_USE_FLAG=-fprofile-use -fprofile-correction +LLVM_PROF_MERGER=true +LLVM_PROF_FILE= +LLVM_PROF_ERR=no +DTRACE= +DFLAGS= +DTRACE_HEADERS= +DTRACE_OBJS= + +GNULD= yes + +# Shell used by make (some versions default to the login shell, which is bad) +SHELL= /bin/sh + +# Use this to make a link between python$(VERSION) and python in $(BINDIR) +LN= ln + +# Portable install script (configure doesn't always guess right) +INSTALL= /usr/bin/install -c +INSTALL_PROGRAM=${INSTALL} +INSTALL_SCRIPT= ${INSTALL} +INSTALL_DATA= ${INSTALL} -m 644 +# Shared libraries must be installed with executable mode on some systems; +# rather than figuring out exactly which, we always give them executable mode. +INSTALL_SHARED= ${INSTALL} -m 755 + +MKDIR_P= /usr/bin/mkdir -p + +MAKESETUP= $(srcdir)/Modules/makesetup + +# Compiler options +OPT= -DNDEBUG -g -fwrapv -O3 -Wall +BASECFLAGS= -Wno-unused-result -Wsign-compare +BASECPPFLAGS= +CONFIGURE_CFLAGS= +# CFLAGS_NODIST is used for building the interpreter and stdlib C extensions. +# Use it when a compiler flag should _not_ be part of the distutils CFLAGS +# once Python is installed (Issue #21121). +CONFIGURE_CFLAGS_NODIST= -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration +# LDFLAGS_NODIST is used in the same manner as CFLAGS_NODIST. +# Use it when a linker flag should _not_ be part of the distutils LDFLAGS +# once Python is installed (bpo-35257) +CONFIGURE_LDFLAGS_NODIST= +CONFIGURE_CPPFLAGS= +CONFIGURE_LDFLAGS= +# Avoid assigning CFLAGS, LDFLAGS, etc. so users can use them on the +# command line to append to these values without stomping the pre-set +# values. +PY_CFLAGS= $(BASECFLAGS) $(OPT) $(CONFIGURE_CFLAGS) $(CFLAGS) $(EXTRA_CFLAGS) +PY_CFLAGS_NODIST=$(CONFIGURE_CFLAGS_NODIST) $(CFLAGS_NODIST) -I$(srcdir)/Include/internal +# Both CPPFLAGS and LDFLAGS need to contain the shell's value for setup.py to +# be able to build extension modules using the directories specified in the +# environment variables +PY_CPPFLAGS= $(BASECPPFLAGS) -I. -I$(srcdir)/Include $(CONFIGURE_CPPFLAGS) $(CPPFLAGS) +PY_LDFLAGS= $(CONFIGURE_LDFLAGS) $(LDFLAGS) +PY_LDFLAGS_NODIST=$(CONFIGURE_LDFLAGS_NODIST) $(LDFLAGS_NODIST) +NO_AS_NEEDED= -Wl,--no-as-needed +SGI_ABI= @SGI_ABI@ +CCSHARED= -fPIC +# LINKFORSHARED are the flags passed to the $(CC) command that links +# the python executable -- this is only needed for a few systems +LINKFORSHARED= -Xlinker -export-dynamic +ARFLAGS= rcs +# Extra C flags added for building the interpreter object files. +CFLAGSFORSHARED= +# C flags used for building the interpreter object files +PY_STDMODULE_CFLAGS= $(PY_CFLAGS) $(PY_CFLAGS_NODIST) $(PY_CPPFLAGS) $(CFLAGSFORSHARED) +PY_BUILTIN_MODULE_CFLAGS= $(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN +PY_CORE_CFLAGS= $(PY_STDMODULE_CFLAGS) -DPy_BUILD_CORE +# Linker flags used for building the interpreter object files +PY_CORE_LDFLAGS=$(PY_LDFLAGS) $(PY_LDFLAGS_NODIST) +# Strict or non-strict aliasing flags used to compile dtoa.c, see above +CFLAGS_ALIASING= + + +# Machine-dependent subdirectories +MACHDEP= linux + +# Multiarch directory (may be empty) +MULTIARCH= x86_64-linux-gnu +MULTIARCH_CPPFLAGS = -DMULTIARCH=\"x86_64-linux-gnu\" + +# Install prefix for architecture-independent files +prefix= /usr/local + +# Install prefix for architecture-dependent files +exec_prefix= ${prefix} + +# Install prefix for data files +datarootdir= ${prefix}/share + +# Expanded directories +BINDIR= ${exec_prefix}/bin +LIBDIR= ${exec_prefix}/lib +MANDIR= ${datarootdir}/man +INCLUDEDIR= ${prefix}/include +CONFINCLUDEDIR= $(exec_prefix)/include +SCRIPTDIR= $(prefix)/lib +ABIFLAGS= + +# Detailed destination directories +BINLIBDEST= $(LIBDIR)/python$(VERSION) +LIBDEST= $(SCRIPTDIR)/python$(VERSION) +INCLUDEPY= $(INCLUDEDIR)/python$(LDVERSION) +CONFINCLUDEPY= $(CONFINCLUDEDIR)/python$(LDVERSION) + +# Symbols used for using shared libraries +SHLIB_SUFFIX= .so +EXT_SUFFIX= .cpython-38-x86_64-linux-gnu.so +LDSHARED= $(CC) -shared $(PY_LDFLAGS) +BLDSHARED= $(CC) -shared $(PY_CORE_LDFLAGS) +LDCXXSHARED= $(CXX) -shared +DESTSHARED= $(BINLIBDEST)/lib-dynload + +# Executable suffix (.exe on Windows and Mac OS X) +EXE= +BUILDEXE= + +# Short name and location for Mac OS X Python framework +UNIVERSALSDK= +PYTHONFRAMEWORK= +PYTHONFRAMEWORKDIR= no-framework +PYTHONFRAMEWORKPREFIX= +PYTHONFRAMEWORKINSTALLDIR= +# Deployment target selected during configure, to be checked +# by distutils. The export statement is needed to ensure that the +# deployment target is active during build. +MACOSX_DEPLOYMENT_TARGET= +#export MACOSX_DEPLOYMENT_TARGET + +# Option to install to strip binaries +STRIPFLAG=-s + +# Flags to lipo to produce a 32-bit-only universal executable +LIPO_32BIT_FLAGS= + +# Options to enable prebinding (for fast startup prior to Mac OS X 10.3) +OTHER_LIBTOOL_OPT= + +# Environment to run shared python without installed libraries +RUNSHARED= + +# ensurepip options +ENSUREPIP= install + +# OpenSSL options for setup.py so sysconfig can pick up AC_SUBST() vars. +OPENSSL_INCLUDES= +OPENSSL_LIBS=-lssl -lcrypto +OPENSSL_LDFLAGS= + +# Modes for directories, executables and data files created by the +# install process. Default to user-only-writable for all file types. +DIRMODE= 755 +EXEMODE= 755 +FILEMODE= 644 + +# configure script arguments +CONFIG_ARGS= '--enable-optimizations' '--with-ensurepip=install' + + +# Subdirectories with code +SRCDIRS= Parser Objects Python Modules Modules/_io Programs + +# Other subdirectories +SUBDIRSTOO= Include Lib Misc + +# Files and directories to be distributed +CONFIGFILES= configure configure.ac acconfig.h pyconfig.h.in Makefile.pre.in +DISTFILES= README.rst ChangeLog $(CONFIGFILES) +DISTDIRS= $(SUBDIRS) $(SUBDIRSTOO) Ext-dummy +DIST= $(DISTFILES) $(DISTDIRS) + + +LIBRARY= libpython$(VERSION)$(ABIFLAGS).a +LDLIBRARY= libpython$(VERSION)$(ABIFLAGS).a +BLDLIBRARY= $(LDLIBRARY) +PY3LIBRARY= +DLLLIBRARY= +LDLIBRARYDIR= +INSTSONAME= $(LDLIBRARY) + + +LIBS= -lcrypt -lpthread -ldl -lutil -lm +LIBM= -lm +LIBC= +SYSLIBS= $(LIBM) $(LIBC) +SHLIBS= $(LIBS) + +DLINCLDIR= . +DYNLOADFILE= dynload_shlib.o +MACHDEP_OBJS= +LIBOBJDIR= Python/ +LIBOBJS= + +PYTHON= python$(EXE) +BUILDPYTHON= python$(BUILDEXE) + +PYTHON_FOR_REGEN=python3 +UPDATE_FILE=python3 $(srcdir)/Tools/scripts/update_file.py +PYTHON_FOR_BUILD=./$(BUILDPYTHON) -E +_PYTHON_HOST_PLATFORM= +BUILD_GNU_TYPE= x86_64-pc-linux-gnu +HOST_GNU_TYPE= x86_64-pc-linux-gnu + +# Tcl and Tk config info from --with-tcltk-includes and -libs options +TCLTK_INCLUDES= +TCLTK_LIBS= + +# The task to run while instrumented when building the profile-opt target. +# To speed up profile generation, we don't run the full unit test suite +# by default. The default is "-m test --pgo". To run more tests, use +# PROFILE_TASK="-m test --pgo-extended" +PROFILE_TASK= -m test --pgo + +# report files for gcov / lcov coverage report +COVERAGE_INFO= $(abs_builddir)/coverage.info +COVERAGE_REPORT=$(abs_builddir)/lcov-report +COVERAGE_REPORT_OPTIONS=--no-branch-coverage --title "CPython lcov report" + + +# === Definitions added by makesetup === + +LOCALMODLIBS= +BASEMODLIBS= +PYTHONPATH=$(COREPYTHONPATH) +COREPYTHONPATH=$(DESTPATH)$(SITEPATH)$(TESTPATH) +TESTPATH= +SITEPATH= +DESTPATH= +MACHDESTLIB=$(BINLIBDEST) +DESTLIB=$(LIBDEST) + + + +########################################################################## +# Modules +MODULE_OBJS= \ + Modules/config.o \ + Modules/getpath.o \ + Modules/main.o \ + Modules/gcmodule.o + +IO_H= Modules/_io/_iomodule.h + +IO_OBJS= \ + Modules/_io/_iomodule.o \ + Modules/_io/iobase.o \ + Modules/_io/fileio.o \ + Modules/_io/bufferedio.o \ + Modules/_io/textio.o \ + Modules/_io/bytesio.o \ + Modules/_io/stringio.o + +########################################################################## + +LIBFFI_INCLUDEDIR= + +########################################################################## +# Parser +POBJS= \ + Parser/acceler.o \ + Parser/grammar1.o \ + Parser/listnode.o \ + Parser/node.o \ + Parser/parser.o \ + Parser/token.o \ + +PARSER_OBJS= $(POBJS) Parser/myreadline.o Parser/parsetok.o Parser/tokenizer.o + +PARSER_HEADERS= \ + $(srcdir)/Include/grammar.h \ + $(srcdir)/Include/parsetok.h \ + $(srcdir)/Parser/parser.h \ + $(srcdir)/Parser/tokenizer.h + +########################################################################## +# Python + +PYTHON_OBJS= \ + Python/_warnings.o \ + Python/Python-ast.o \ + Python/asdl.o \ + Python/ast.o \ + Python/ast_opt.o \ + Python/ast_unparse.o \ + Python/bltinmodule.o \ + Python/ceval.o \ + Python/codecs.o \ + Python/compile.o \ + Python/context.o \ + Python/dynamic_annotations.o \ + Python/errors.o \ + Python/frozenmain.o \ + Python/future.o \ + Python/getargs.o \ + Python/getcompiler.o \ + Python/getcopyright.o \ + Python/getplatform.o \ + Python/getversion.o \ + Python/graminit.o \ + Python/hamt.o \ + Python/import.o \ + Python/importdl.o \ + Python/initconfig.o \ + Python/marshal.o \ + Python/modsupport.o \ + Python/mysnprintf.o \ + Python/mystrtoul.o \ + Python/pathconfig.o \ + Python/peephole.o \ + Python/preconfig.o \ + Python/pyarena.o \ + Python/pyctype.o \ + Python/pyfpe.o \ + Python/pyhash.o \ + Python/pylifecycle.o \ + Python/pymath.o \ + Python/pystate.o \ + Python/pythonrun.o \ + Python/pytime.o \ + Python/bootstrap_hash.o \ + Python/structmember.o \ + Python/symtable.o \ + Python/sysmodule.o \ + Python/thread.o \ + Python/traceback.o \ + Python/getopt.o \ + Python/pystrcmp.o \ + Python/pystrtod.o \ + Python/pystrhex.o \ + Python/dtoa.o \ + Python/formatter_unicode.o \ + Python/fileutils.o \ + Python/$(DYNLOADFILE) \ + $(LIBOBJS) \ + $(MACHDEP_OBJS) \ + $(DTRACE_OBJS) + + +########################################################################## +# Objects +OBJECT_OBJS= \ + Objects/abstract.o \ + Objects/accu.o \ + Objects/boolobject.o \ + Objects/bytes_methods.o \ + Objects/bytearrayobject.o \ + Objects/bytesobject.o \ + Objects/call.o \ + Objects/capsule.o \ + Objects/cellobject.o \ + Objects/classobject.o \ + Objects/codeobject.o \ + Objects/complexobject.o \ + Objects/descrobject.o \ + Objects/enumobject.o \ + Objects/exceptions.o \ + Objects/genobject.o \ + Objects/fileobject.o \ + Objects/floatobject.o \ + Objects/frameobject.o \ + Objects/funcobject.o \ + Objects/interpreteridobject.o \ + Objects/iterobject.o \ + Objects/listobject.o \ + Objects/longobject.o \ + Objects/dictobject.o \ + Objects/odictobject.o \ + Objects/memoryobject.o \ + Objects/methodobject.o \ + Objects/moduleobject.o \ + Objects/namespaceobject.o \ + Objects/object.o \ + Objects/obmalloc.o \ + Objects/picklebufobject.o \ + Objects/rangeobject.o \ + Objects/setobject.o \ + Objects/sliceobject.o \ + Objects/structseq.o \ + Objects/tupleobject.o \ + Objects/typeobject.o \ + Objects/unicodeobject.o \ + Objects/unicodectype.o \ + Objects/weakrefobject.o + +########################################################################## +# objects that get linked into the Python library +LIBRARY_OBJS_OMIT_FROZEN= \ + Modules/getbuildinfo.o \ + $(PARSER_OBJS) \ + $(OBJECT_OBJS) \ + $(PYTHON_OBJS) \ + $(MODULE_OBJS) \ + $(MODOBJS) + +LIBRARY_OBJS= \ + $(LIBRARY_OBJS_OMIT_FROZEN) \ + Python/frozen.o + +########################################################################## +# DTrace + +# On some systems, object files that reference DTrace probes need to be modified +# in-place by dtrace(1). +DTRACE_DEPS = \ + Python/ceval.o Python/import.o Python/sysmodule.o Modules/gcmodule.o + +######################################################################### +# Rules + +# Default target +all: profile-opt +build_all: check-clean-src $(BUILDPYTHON) oldsharedmods sharedmods gdbhooks \ + Programs/_testembed python-config + +# Check that the source is clean when building out of source. +check-clean-src: + @if test -n "$(VPATH)" -a -f "$(srcdir)/Programs/python.o"; then \ + echo "Error: The source directory ($(srcdir)) is not clean" ; \ + echo "Building Python out of the source tree (in $(abs_builddir)) requires a clean source tree ($(abs_srcdir))" ; \ + echo "Try to run: make -C \"$(srcdir)\" clean" ; \ + exit 1; \ + fi + +# Profile generation build must start from a clean tree. +profile-clean-stamp: + $(MAKE) clean profile-removal + touch $@ + +# Compile with profile generation enabled. +profile-gen-stamp: profile-clean-stamp + @if [ $(LLVM_PROF_ERR) = yes ]; then \ + echo "Error: Cannot perform PGO build because llvm-profdata was not found in PATH" ;\ + echo "Please add it to PATH and run ./configure again" ;\ + exit 1;\ + fi + @echo "Building with support for profile generation:" + $(MAKE) build_all_generate_profile + touch $@ + +# Run task with profile generation build to create profile information. +profile-run-stamp: + @echo "Running code to generate profile data (this can take a while):" + # First, we need to create a clean build with profile generation + # enabled. + $(MAKE) profile-gen-stamp + # Next, run the profile task to generate the profile information. + $(MAKE) run_profile_task + $(MAKE) build_all_merge_profile + # Remove profile generation binary since we are done with it. + $(MAKE) clean + # This is an expensive target to build and it does not have proper + # makefile dependency information. So, we create a "stamp" file + # to record its completion and avoid re-running it. + touch $@ + +build_all_generate_profile: + $(MAKE) build_all CFLAGS_NODIST="$(CFLAGS_NODIST) $(PGO_PROF_GEN_FLAG)" LDFLAGS_NODIST="$(LDFLAGS_NODIST) $(PGO_PROF_GEN_FLAG)" LIBS="$(LIBS)" + +run_profile_task: + @ # FIXME: can't run for a cross build + $(LLVM_PROF_FILE) $(RUNSHARED) ./$(BUILDPYTHON) $(PROFILE_TASK) || true + +build_all_merge_profile: + $(LLVM_PROF_MERGER) + +# Compile Python binary with profile guided optimization. +# To force re-running of the profile task, remove the profile-run-stamp file. +profile-opt: profile-run-stamp + @echo "Rebuilding with profile guided optimizations:" + -rm -f profile-clean-stamp + $(MAKE) build_all CFLAGS_NODIST="$(CFLAGS_NODIST) $(PGO_PROF_USE_FLAG)" LDFLAGS_NODIST="$(LDFLAGS_NODIST)" + +# Compile and run with gcov +.PHONY=coverage coverage-lcov coverage-report +coverage: + @echo "Building with support for coverage checking:" + $(MAKE) clean profile-removal + $(MAKE) build_all CFLAGS="$(CFLAGS) -O0 -pg -fprofile-arcs -ftest-coverage" LIBS="$(LIBS) -lgcov" + +coverage-lcov: + @echo "Creating Coverage HTML report with LCOV:" + @rm -f $(COVERAGE_INFO) + @rm -rf $(COVERAGE_REPORT) + @lcov --capture --directory $(abs_builddir) \ + --base-directory $(realpath $(abs_builddir)) \ + --path $(realpath $(abs_srcdir)) \ + --output-file $(COVERAGE_INFO) + @ # remove 3rd party modules, system headers and internal files with + @ # debug, test or dummy functions. + @lcov --remove $(COVERAGE_INFO) \ + '*/Modules/_blake2/impl/*' \ + '*/Modules/_ctypes/libffi*/*' \ + '*/Modules/_decimal/libmpdec/*' \ + '*/Modules/_sha3/kcp/*' \ + '*/Modules/expat/*' \ + '*/Modules/zlib/*' \ + '*/Include/*' \ + '*/Modules/xx*.c' \ + '*/Parser/listnode.c' \ + '*/Python/pyfpe.c' \ + '*/Python/pystrcmp.c' \ + '/usr/include/*' \ + '/usr/local/include/*' \ + '/usr/lib/gcc/*' \ + --output-file $(COVERAGE_INFO) + @genhtml $(COVERAGE_INFO) --output-directory $(COVERAGE_REPORT) \ + $(COVERAGE_REPORT_OPTIONS) + @echo + @echo "lcov report at $(COVERAGE_REPORT)/index.html" + @echo + +# Force regeneration of parser and importlib +coverage-report: regen-grammar regen-token regen-importlib + @ # build with coverage info + $(MAKE) coverage + @ # run tests, ignore failures + $(TESTRUNNER) $(TESTOPTS) || true + @ # build lcov report + $(MAKE) coverage-lcov + +# Run "Argument Clinic" over all source files +.PHONY=clinic +clinic: check-clean-src $(srcdir)/Modules/_blake2/blake2s_impl.c + $(PYTHON_FOR_REGEN) $(srcdir)/Tools/clinic/clinic.py --make --srcdir $(srcdir) + +# Build the interpreter +$(BUILDPYTHON): Programs/python.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY) + $(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/python.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) + +platform: $(BUILDPYTHON) pybuilddir.txt + $(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import sys ; from sysconfig import get_platform ; print("%s-%d.%d" % (get_platform(), *sys.version_info[:2]))' >platform + +# Create build directory and generate the sysconfig build-time data there. +# pybuilddir.txt contains the name of the build dir and is used for +# sys.path fixup -- see Modules/getpath.c. +# Since this step runs before shared modules are built, try to avoid bootstrap +# problems by creating a dummy pybuilddir.txt just to allow interpreter +# initialization to succeed. It will be overwritten by generate-posix-vars +# or removed in case of failure. +pybuilddir.txt: $(BUILDPYTHON) + @echo "none" > ./pybuilddir.txt + $(RUNSHARED) $(PYTHON_FOR_BUILD) -S -m sysconfig --generate-posix-vars ;\ + if test $$? -ne 0 ; then \ + echo "generate-posix-vars failed" ; \ + rm -f ./pybuilddir.txt ; \ + exit 1 ; \ + fi + +# This is shared by the math and cmath modules +Modules/_math.o: Modules/_math.c Modules/_math.h + $(CC) -c $(CCSHARED) $(PY_CORE_CFLAGS) -o $@ $< + +# blake2s is auto-generated from blake2b +$(srcdir)/Modules/_blake2/blake2s_impl.c: $(srcdir)/Modules/_blake2/blake2b_impl.c $(srcdir)/Modules/_blake2/blake2b2s.py + $(PYTHON_FOR_REGEN) $(srcdir)/Modules/_blake2/blake2b2s.py + $(PYTHON_FOR_REGEN) $(srcdir)/Tools/clinic/clinic.py -f $@ + +# Build the shared modules +# Under GNU make, MAKEFLAGS are sorted and normalized; the 's' for +# -s, --silent or --quiet is always the first char. +# Under BSD make, MAKEFLAGS might be " -s -v x=y". +# Ignore macros passed by GNU make, passed after -- +sharedmods: $(BUILDPYTHON) pybuilddir.txt Modules/_math.o + @case "`echo X $$MAKEFLAGS | sed 's/^X //;s/ -- .*//'`" in \ + *\ -s*|s*) quiet="-q";; \ + *) quiet="";; \ + esac; \ + echo "$(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' \ + _TCLTK_INCLUDES='$(TCLTK_INCLUDES)' _TCLTK_LIBS='$(TCLTK_LIBS)' \ + $(PYTHON_FOR_BUILD) $(srcdir)/setup.py $$quiet build"; \ + $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' \ + _TCLTK_INCLUDES='$(TCLTK_INCLUDES)' _TCLTK_LIBS='$(TCLTK_LIBS)' \ + $(PYTHON_FOR_BUILD) $(srcdir)/setup.py $$quiet build + + +# Build static library +$(LIBRARY): $(LIBRARY_OBJS) + -rm -f $@ + $(AR) $(ARFLAGS) $@ $(LIBRARY_OBJS) + +libpython$(LDVERSION).so: $(LIBRARY_OBJS) $(DTRACE_OBJS) + if test $(INSTSONAME) != $(LDLIBRARY); then \ + $(BLDSHARED) -Wl,-h$(INSTSONAME) -o $(INSTSONAME) $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM); \ + $(LN) -f $(INSTSONAME) $@; \ + else \ + $(BLDSHARED) -o $@ $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM); \ + fi + +libpython3.so: libpython$(LDVERSION).so + $(BLDSHARED) $(NO_AS_NEEDED) -o $@ -Wl,-h$@ $^ + +libpython$(LDVERSION).dylib: $(LIBRARY_OBJS) + $(CC) -dynamiclib -Wl,-single_module $(PY_CORE_LDFLAGS) -undefined dynamic_lookup -Wl,-install_name,$(prefix)/lib/libpython$(LDVERSION).dylib -Wl,-compatibility_version,$(VERSION) -Wl,-current_version,$(VERSION) -o $@ $(LIBRARY_OBJS) $(DTRACE_OBJS) $(SHLIBS) $(LIBC) $(LIBM); \ + + +libpython$(VERSION).sl: $(LIBRARY_OBJS) + $(LDSHARED) -o $@ $(LIBRARY_OBJS) $(MODLIBS) $(SHLIBS) $(LIBC) $(LIBM) + +# Copy up the gdb python hooks into a position where they can be automatically +# loaded by gdb during Lib/test/test_gdb.py +# +# Distributors are likely to want to install this somewhere else e.g. relative +# to the stripped DWARF data for the shared library. +gdbhooks: $(BUILDPYTHON)-gdb.py + +SRC_GDB_HOOKS=$(srcdir)/Tools/gdb/libpython.py +$(BUILDPYTHON)-gdb.py: $(SRC_GDB_HOOKS) + $(INSTALL_DATA) $(SRC_GDB_HOOKS) $(BUILDPYTHON)-gdb.py + +# This rule is here for OPENSTEP/Rhapsody/MacOSX. It builds a temporary +# minimal framework (not including the Lib directory and such) in the current +# directory. +RESSRCDIR=Mac/Resources/framework +$(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK): \ + $(LIBRARY) \ + $(RESSRCDIR)/Info.plist + $(INSTALL) -d -m $(DIRMODE) $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION) + $(CC) -o $(LDLIBRARY) $(PY_CORE_LDFLAGS) -dynamiclib \ + -all_load $(LIBRARY) -Wl,-single_module \ + -install_name $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Versions/$(VERSION)/$(PYTHONFRAMEWORK) \ + -compatibility_version $(VERSION) \ + -current_version $(VERSION) \ + -framework CoreFoundation $(LIBS); + $(INSTALL) -d -m $(DIRMODE) \ + $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Resources/English.lproj + $(INSTALL_DATA) $(RESSRCDIR)/Info.plist \ + $(PYTHONFRAMEWORKDIR)/Versions/$(VERSION)/Resources/Info.plist + $(LN) -fsn $(VERSION) $(PYTHONFRAMEWORKDIR)/Versions/Current + $(LN) -fsn Versions/Current/$(PYTHONFRAMEWORK) $(PYTHONFRAMEWORKDIR)/$(PYTHONFRAMEWORK) + $(LN) -fsn Versions/Current/Resources $(PYTHONFRAMEWORKDIR)/Resources + +# This rule builds the Cygwin Python DLL and import library if configured +# for a shared core library; otherwise, this rule is a noop. +$(DLLLIBRARY) libpython$(LDVERSION).dll.a: $(LIBRARY_OBJS) + if test -n "$(DLLLIBRARY)"; then \ + $(LDSHARED) -Wl,--out-implib=$@ -o $(DLLLIBRARY) $^ \ + $(LIBS) $(MODLIBS) $(SYSLIBS); \ + else true; \ + fi + + +oldsharedmods: $(SHAREDMODS) + + +Makefile Modules/config.c: Makefile.pre \ + $(srcdir)/Modules/config.c.in \ + $(MAKESETUP) \ + $(srcdir)/Modules/Setup \ + Modules/Setup.local + $(SHELL) $(MAKESETUP) -c $(srcdir)/Modules/config.c.in \ + -s Modules \ + Modules/Setup.local \ + $(srcdir)/Modules/Setup + @mv config.c Modules + @echo "The Makefile was updated, you may need to re-run make." + + +Programs/_testembed: Programs/_testembed.o $(LIBRARY) $(LDLIBRARY) $(PY3LIBRARY) + $(LINKCC) $(PY_CORE_LDFLAGS) $(LINKFORSHARED) -o $@ Programs/_testembed.o $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) + +############################################################################ +# Importlib + +Programs/_freeze_importlib.o: Programs/_freeze_importlib.c Makefile + +Programs/_freeze_importlib: Programs/_freeze_importlib.o $(LIBRARY_OBJS_OMIT_FROZEN) + $(LINKCC) $(PY_CORE_LDFLAGS) -o $@ Programs/_freeze_importlib.o $(LIBRARY_OBJS_OMIT_FROZEN) $(LIBS) $(MODLIBS) $(SYSLIBS) + +.PHONY: regen-importlib +regen-importlib: Programs/_freeze_importlib + # Regenerate Python/importlib_external.h + # from Lib/importlib/_bootstrap_external.py using _freeze_importlib + ./Programs/_freeze_importlib importlib._bootstrap_external \ + $(srcdir)/Lib/importlib/_bootstrap_external.py \ + $(srcdir)/Python/importlib_external.h.new + $(UPDATE_FILE) $(srcdir)/Python/importlib_external.h $(srcdir)/Python/importlib_external.h.new + # Regenerate Python/importlib.h from Lib/importlib/_bootstrap.py + # using _freeze_importlib + ./Programs/_freeze_importlib importlib._bootstrap \ + $(srcdir)/Lib/importlib/_bootstrap.py \ + $(srcdir)/Python/importlib.h.new + $(UPDATE_FILE) $(srcdir)/Python/importlib.h $(srcdir)/Python/importlib.h.new + # Regenerate Python/importlib_zipimport.h from Lib/zipimport.py + # using _freeze_importlib + ./Programs/_freeze_importlib zipimport \ + $(srcdir)/Lib/zipimport.py \ + $(srcdir)/Python/importlib_zipimport.h.new + $(UPDATE_FILE) $(srcdir)/Python/importlib_zipimport.h $(srcdir)/Python/importlib_zipimport.h.new + + +############################################################################ +# Regenerate all generated files + +regen-all: regen-opcode regen-opcode-targets regen-typeslots regen-grammar \ + regen-token regen-keyword regen-symbol regen-ast regen-importlib clinic + +############################################################################ +# Special rules for object files + +Modules/getbuildinfo.o: $(PARSER_OBJS) \ + $(OBJECT_OBJS) \ + $(PYTHON_OBJS) \ + $(MODULE_OBJS) \ + $(MODOBJS) \ + $(DTRACE_OBJS) \ + $(srcdir)/Modules/getbuildinfo.c + $(CC) -c $(PY_CORE_CFLAGS) \ + -DGITVERSION="\"`LC_ALL=C $(GITVERSION)`\"" \ + -DGITTAG="\"`LC_ALL=C $(GITTAG)`\"" \ + -DGITBRANCH="\"`LC_ALL=C $(GITBRANCH)`\"" \ + -o $@ $(srcdir)/Modules/getbuildinfo.c + +Modules/getpath.o: $(srcdir)/Modules/getpath.c Makefile + $(CC) -c $(PY_CORE_CFLAGS) -DPYTHONPATH='"$(PYTHONPATH)"' \ + -DPREFIX='"$(prefix)"' \ + -DEXEC_PREFIX='"$(exec_prefix)"' \ + -DVERSION='"$(VERSION)"' \ + -DVPATH='"$(VPATH)"' \ + -o $@ $(srcdir)/Modules/getpath.c + +Programs/python.o: $(srcdir)/Programs/python.c + $(MAINCC) -c $(PY_CORE_CFLAGS) -o $@ $(srcdir)/Programs/python.c + +Programs/_testembed.o: $(srcdir)/Programs/_testembed.c + $(MAINCC) -c $(PY_CORE_CFLAGS) -o $@ $(srcdir)/Programs/_testembed.c + +Modules/_sre.o: $(srcdir)/Modules/_sre.c $(srcdir)/Modules/sre.h $(srcdir)/Modules/sre_constants.h $(srcdir)/Modules/sre_lib.h + +Modules/posixmodule.o: $(srcdir)/Modules/posixmodule.c $(srcdir)/Modules/posixmodule.h + +Modules/grpmodule.o: $(srcdir)/Modules/grpmodule.c $(srcdir)/Modules/posixmodule.h + +Modules/pwdmodule.o: $(srcdir)/Modules/pwdmodule.c $(srcdir)/Modules/posixmodule.h + +Modules/signalmodule.o: $(srcdir)/Modules/signalmodule.c $(srcdir)/Modules/posixmodule.h + +Python/dynload_shlib.o: $(srcdir)/Python/dynload_shlib.c Makefile + $(CC) -c $(PY_CORE_CFLAGS) \ + -DSOABI='"$(SOABI)"' \ + -o $@ $(srcdir)/Python/dynload_shlib.c + +Python/dynload_hpux.o: $(srcdir)/Python/dynload_hpux.c Makefile + $(CC) -c $(PY_CORE_CFLAGS) \ + -DSHLIB_EXT='"$(EXT_SUFFIX)"' \ + -o $@ $(srcdir)/Python/dynload_hpux.c + +Python/sysmodule.o: $(srcdir)/Python/sysmodule.c Makefile $(srcdir)/Include/pydtrace.h + $(CC) -c $(PY_CORE_CFLAGS) \ + -DABIFLAGS='"$(ABIFLAGS)"' \ + $(MULTIARCH_CPPFLAGS) \ + -o $@ $(srcdir)/Python/sysmodule.c + +$(IO_OBJS): $(IO_H) + +.PHONY: regen-grammar +regen-grammar: regen-token + # Regenerate Include/graminit.h and Python/graminit.c + # from Grammar/Grammar using pgen + @$(MKDIR_P) Include + PYTHONPATH=$(srcdir) $(PYTHON_FOR_REGEN) -m Parser.pgen $(srcdir)/Grammar/Grammar \ + $(srcdir)/Grammar/Tokens \ + $(srcdir)/Include/graminit.h.new \ + $(srcdir)/Python/graminit.c.new + $(UPDATE_FILE) $(srcdir)/Include/graminit.h $(srcdir)/Include/graminit.h.new + $(UPDATE_FILE) $(srcdir)/Python/graminit.c $(srcdir)/Python/graminit.c.new + +.PHONY=regen-ast +regen-ast: + # Regenerate Include/Python-ast.h using Parser/asdl_c.py -h + $(MKDIR_P) $(srcdir)/Include + $(PYTHON_FOR_REGEN) $(srcdir)/Parser/asdl_c.py \ + -h $(srcdir)/Include/Python-ast.h.new \ + $(srcdir)/Parser/Python.asdl + $(UPDATE_FILE) $(srcdir)/Include/Python-ast.h $(srcdir)/Include/Python-ast.h.new + # Regenerate Python/Python-ast.c using Parser/asdl_c.py -c + $(MKDIR_P) $(srcdir)/Python + $(PYTHON_FOR_REGEN) $(srcdir)/Parser/asdl_c.py \ + -c $(srcdir)/Python/Python-ast.c.new \ + $(srcdir)/Parser/Python.asdl + $(UPDATE_FILE) $(srcdir)/Python/Python-ast.c $(srcdir)/Python/Python-ast.c.new + +.PHONY: regen-opcode +regen-opcode: + # Regenerate Include/opcode.h from Lib/opcode.py + # using Tools/scripts/generate_opcode_h.py + $(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/generate_opcode_h.py \ + $(srcdir)/Lib/opcode.py \ + $(srcdir)/Include/opcode.h.new + $(UPDATE_FILE) $(srcdir)/Include/opcode.h $(srcdir)/Include/opcode.h.new + +.PHONY: regen-token +regen-token: + # Regenerate Doc/library/token-list.inc from Grammar/Tokens + # using Tools/scripts/generate_token.py + $(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/generate_token.py rst \ + $(srcdir)/Grammar/Tokens \ + $(srcdir)/Doc/library/token-list.inc + # Regenerate Include/token.h from Grammar/Tokens + # using Tools/scripts/generate_token.py + $(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/generate_token.py h \ + $(srcdir)/Grammar/Tokens \ + $(srcdir)/Include/token.h + # Regenerate Parser/token.c from Grammar/Tokens + # using Tools/scripts/generate_token.py + $(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/generate_token.py c \ + $(srcdir)/Grammar/Tokens \ + $(srcdir)/Parser/token.c + # Regenerate Lib/token.py from Grammar/Tokens + # using Tools/scripts/generate_token.py + $(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/generate_token.py py \ + $(srcdir)/Grammar/Tokens \ + $(srcdir)/Lib/token.py + +.PHONY: regen-keyword +regen-keyword: + # Regenerate Lib/keyword.py from Grammar/Grammar and Grammar/Tokens + # using Parser/pgen + PYTHONPATH=$(srcdir) $(PYTHON_FOR_REGEN) -m Parser.pgen.keywordgen $(srcdir)/Grammar/Grammar \ + $(srcdir)/Grammar/Tokens \ + $(srcdir)/Lib/keyword.py.new + $(UPDATE_FILE) $(srcdir)/Lib/keyword.py $(srcdir)/Lib/keyword.py.new + +.PHONY: regen-symbol +regen-symbol: $(srcdir)/Include/graminit.h + # Regenerate Lib/symbol.py from Include/graminit.h + # using Tools/scripts/generate_symbol_py.py + $(PYTHON_FOR_REGEN) $(srcdir)/Tools/scripts/generate_symbol_py.py \ + $(srcdir)/Include/graminit.h \ + $(srcdir)/Lib/symbol.py + +Python/compile.o Python/symtable.o Python/ast_unparse.o Python/ast.o Python/future.o Parser/parsetok.o: $(srcdir)/Include/graminit.h $(srcdir)/Include/Python-ast.h + +Python/getplatform.o: $(srcdir)/Python/getplatform.c + $(CC) -c $(PY_CORE_CFLAGS) -DPLATFORM='"$(MACHDEP)"' -o $@ $(srcdir)/Python/getplatform.c + +Python/importdl.o: $(srcdir)/Python/importdl.c + $(CC) -c $(PY_CORE_CFLAGS) -I$(DLINCLDIR) -o $@ $(srcdir)/Python/importdl.c + +Objects/unicodectype.o: $(srcdir)/Objects/unicodectype.c \ + $(srcdir)/Objects/unicodetype_db.h + +BYTESTR_DEPS = \ + $(srcdir)/Objects/stringlib/count.h \ + $(srcdir)/Objects/stringlib/ctype.h \ + $(srcdir)/Objects/stringlib/fastsearch.h \ + $(srcdir)/Objects/stringlib/find.h \ + $(srcdir)/Objects/stringlib/join.h \ + $(srcdir)/Objects/stringlib/partition.h \ + $(srcdir)/Objects/stringlib/split.h \ + $(srcdir)/Objects/stringlib/stringdefs.h \ + $(srcdir)/Objects/stringlib/transmogrify.h + +UNICODE_DEPS = \ + $(srcdir)/Objects/stringlib/asciilib.h \ + $(srcdir)/Objects/stringlib/codecs.h \ + $(srcdir)/Objects/stringlib/count.h \ + $(srcdir)/Objects/stringlib/fastsearch.h \ + $(srcdir)/Objects/stringlib/find.h \ + $(srcdir)/Objects/stringlib/find_max_char.h \ + $(srcdir)/Objects/stringlib/localeutil.h \ + $(srcdir)/Objects/stringlib/partition.h \ + $(srcdir)/Objects/stringlib/replace.h \ + $(srcdir)/Objects/stringlib/split.h \ + $(srcdir)/Objects/stringlib/ucs1lib.h \ + $(srcdir)/Objects/stringlib/ucs2lib.h \ + $(srcdir)/Objects/stringlib/ucs4lib.h \ + $(srcdir)/Objects/stringlib/undef.h \ + $(srcdir)/Objects/stringlib/unicode_format.h \ + $(srcdir)/Objects/stringlib/unicodedefs.h + +Objects/bytes_methods.o: $(srcdir)/Objects/bytes_methods.c $(BYTESTR_DEPS) +Objects/bytesobject.o: $(srcdir)/Objects/bytesobject.c $(BYTESTR_DEPS) +Objects/bytearrayobject.o: $(srcdir)/Objects/bytearrayobject.c $(BYTESTR_DEPS) + +Objects/unicodeobject.o: $(srcdir)/Objects/unicodeobject.c $(UNICODE_DEPS) + +Objects/odictobject.o: $(srcdir)/Objects/dict-common.h +Objects/dictobject.o: $(srcdir)/Objects/stringlib/eq.h $(srcdir)/Objects/dict-common.h +Objects/setobject.o: $(srcdir)/Objects/stringlib/eq.h + +.PHONY: regen-opcode-targets +regen-opcode-targets: + # Regenerate Python/opcode_targets.h from Lib/opcode.py + # using Python/makeopcodetargets.py + $(PYTHON_FOR_REGEN) $(srcdir)/Python/makeopcodetargets.py \ + $(srcdir)/Python/opcode_targets.h.new + $(UPDATE_FILE) $(srcdir)/Python/opcode_targets.h $(srcdir)/Python/opcode_targets.h.new + +Python/ceval.o: $(srcdir)/Python/opcode_targets.h $(srcdir)/Python/ceval_gil.h \ + $(srcdir)/Python/condvar.h + +Python/frozen.o: $(srcdir)/Python/importlib.h $(srcdir)/Python/importlib_external.h \ + $(srcdir)/Python/importlib_zipimport.h + +# Generate DTrace probe macros, then rename them (PYTHON_ -> PyDTrace_) to +# follow our naming conventions. dtrace(1) uses the output filename to generate +# an include guard, so we can't use a pipeline to transform its output. +Include/pydtrace_probes.h: $(srcdir)/Include/pydtrace.d + $(MKDIR_P) Include + $(DTRACE) $(DFLAGS) -o $@ -h -s $< + : sed in-place edit with POSIX-only tools + sed 's/PYTHON_/PyDTrace_/' $@ > $@.tmp + mv $@.tmp $@ + +Python/ceval.o: $(srcdir)/Include/pydtrace.h +Python/import.o: $(srcdir)/Include/pydtrace.h +Modules/gcmodule.o: $(srcdir)/Include/pydtrace.h + +Python/pydtrace.o: $(srcdir)/Include/pydtrace.d $(DTRACE_DEPS) + $(DTRACE) $(DFLAGS) -o $@ -G -s $< $(DTRACE_DEPS) + +Objects/typeobject.o: Objects/typeslots.inc + +.PHONY: regen-typeslots +regen-typeslots: + # Regenerate Objects/typeslots.inc from Include/typeslotsh + # using Objects/typeslots.py + $(PYTHON_FOR_REGEN) $(srcdir)/Objects/typeslots.py \ + < $(srcdir)/Include/typeslots.h \ + $(srcdir)/Objects/typeslots.inc.new + $(UPDATE_FILE) $(srcdir)/Objects/typeslots.inc $(srcdir)/Objects/typeslots.inc.new + +############################################################################ +# Header files + +PYTHON_HEADERS= \ + $(srcdir)/Include/Python.h \ + $(srcdir)/Include/abstract.h \ + $(srcdir)/Include/asdl.h \ + $(srcdir)/Include/ast.h \ + $(srcdir)/Include/bitset.h \ + $(srcdir)/Include/bltinmodule.h \ + $(srcdir)/Include/boolobject.h \ + $(srcdir)/Include/bytearrayobject.h \ + $(srcdir)/Include/bytes_methods.h \ + $(srcdir)/Include/bytesobject.h \ + $(srcdir)/Include/cellobject.h \ + $(srcdir)/Include/ceval.h \ + $(srcdir)/Include/classobject.h \ + $(srcdir)/Include/code.h \ + $(srcdir)/Include/codecs.h \ + $(srcdir)/Include/compile.h \ + $(srcdir)/Include/complexobject.h \ + $(srcdir)/Include/context.h \ + $(srcdir)/Include/descrobject.h \ + $(srcdir)/Include/dictobject.h \ + $(srcdir)/Include/dtoa.h \ + $(srcdir)/Include/dynamic_annotations.h \ + $(srcdir)/Include/enumobject.h \ + $(srcdir)/Include/errcode.h \ + $(srcdir)/Include/eval.h \ + $(srcdir)/Include/fileobject.h \ + $(srcdir)/Include/fileutils.h \ + $(srcdir)/Include/floatobject.h \ + $(srcdir)/Include/frameobject.h \ + $(srcdir)/Include/funcobject.h \ + $(srcdir)/Include/genobject.h \ + $(srcdir)/Include/import.h \ + $(srcdir)/Include/interpreteridobject.h \ + $(srcdir)/Include/intrcheck.h \ + $(srcdir)/Include/iterobject.h \ + $(srcdir)/Include/listobject.h \ + $(srcdir)/Include/longintrepr.h \ + $(srcdir)/Include/longobject.h \ + $(srcdir)/Include/marshal.h \ + $(srcdir)/Include/memoryobject.h \ + $(srcdir)/Include/methodobject.h \ + $(srcdir)/Include/modsupport.h \ + $(srcdir)/Include/moduleobject.h \ + $(srcdir)/Include/namespaceobject.h \ + $(srcdir)/Include/node.h \ + $(srcdir)/Include/object.h \ + $(srcdir)/Include/objimpl.h \ + $(srcdir)/Include/odictobject.h \ + $(srcdir)/Include/opcode.h \ + $(srcdir)/Include/osdefs.h \ + $(srcdir)/Include/osmodule.h \ + $(srcdir)/Include/patchlevel.h \ + $(srcdir)/Include/picklebufobject.h \ + $(srcdir)/Include/pyarena.h \ + $(srcdir)/Include/pycapsule.h \ + $(srcdir)/Include/pyctype.h \ + $(srcdir)/Include/pydebug.h \ + $(srcdir)/Include/pydtrace.h \ + $(srcdir)/Include/pyerrors.h \ + $(srcdir)/Include/pyfpe.h \ + $(srcdir)/Include/pyhash.h \ + $(srcdir)/Include/pylifecycle.h \ + $(srcdir)/Include/pymacconfig.h \ + $(srcdir)/Include/pymacro.h \ + $(srcdir)/Include/pymath.h \ + $(srcdir)/Include/pymem.h \ + $(srcdir)/Include/pyport.h \ + $(srcdir)/Include/pystate.h \ + $(srcdir)/Include/pystrcmp.h \ + $(srcdir)/Include/pystrhex.h \ + $(srcdir)/Include/pystrtod.h \ + $(srcdir)/Include/pythonrun.h \ + $(srcdir)/Include/pythread.h \ + $(srcdir)/Include/pytime.h \ + $(srcdir)/Include/rangeobject.h \ + $(srcdir)/Include/setobject.h \ + $(srcdir)/Include/sliceobject.h \ + $(srcdir)/Include/structmember.h \ + $(srcdir)/Include/structseq.h \ + $(srcdir)/Include/symtable.h \ + $(srcdir)/Include/sysmodule.h \ + $(srcdir)/Include/token.h \ + $(srcdir)/Include/traceback.h \ + $(srcdir)/Include/tracemalloc.h \ + $(srcdir)/Include/tupleobject.h \ + $(srcdir)/Include/ucnhash.h \ + $(srcdir)/Include/unicodeobject.h \ + $(srcdir)/Include/warnings.h \ + $(srcdir)/Include/weakrefobject.h \ + \ + pyconfig.h \ + $(PARSER_HEADERS) \ + $(srcdir)/Include/Python-ast.h \ + \ + $(srcdir)/Include/cpython/abstract.h \ + $(srcdir)/Include/cpython/dictobject.h \ + $(srcdir)/Include/cpython/fileobject.h \ + $(srcdir)/Include/cpython/initconfig.h \ + $(srcdir)/Include/cpython/interpreteridobject.h \ + $(srcdir)/Include/cpython/object.h \ + $(srcdir)/Include/cpython/objimpl.h \ + $(srcdir)/Include/cpython/pyerrors.h \ + $(srcdir)/Include/cpython/pylifecycle.h \ + $(srcdir)/Include/cpython/pymem.h \ + $(srcdir)/Include/cpython/pystate.h \ + $(srcdir)/Include/cpython/sysmodule.h \ + $(srcdir)/Include/cpython/traceback.h \ + $(srcdir)/Include/cpython/tupleobject.h \ + $(srcdir)/Include/cpython/unicodeobject.h \ + \ + $(srcdir)/Include/internal/pycore_accu.h \ + $(srcdir)/Include/internal/pycore_atomic.h \ + $(srcdir)/Include/internal/pycore_ceval.h \ + $(srcdir)/Include/internal/pycore_code.h \ + $(srcdir)/Include/internal/pycore_condvar.h \ + $(srcdir)/Include/internal/pycore_context.h \ + $(srcdir)/Include/internal/pycore_fileutils.h \ + $(srcdir)/Include/internal/pycore_getopt.h \ + $(srcdir)/Include/internal/pycore_gil.h \ + $(srcdir)/Include/internal/pycore_hamt.h \ + $(srcdir)/Include/internal/pycore_initconfig.h \ + $(srcdir)/Include/internal/pycore_object.h \ + $(srcdir)/Include/internal/pycore_pathconfig.h \ + $(srcdir)/Include/internal/pycore_pyerrors.h \ + $(srcdir)/Include/internal/pycore_pyhash.h \ + $(srcdir)/Include/internal/pycore_pylifecycle.h \ + $(srcdir)/Include/internal/pycore_pymem.h \ + $(srcdir)/Include/internal/pycore_pystate.h \ + $(srcdir)/Include/internal/pycore_traceback.h \ + $(srcdir)/Include/internal/pycore_tupleobject.h \ + $(srcdir)/Include/internal/pycore_warnings.h \ + $(DTRACE_HEADERS) + +$(LIBRARY_OBJS) $(MODOBJS) Programs/python.o: $(PYTHON_HEADERS) + + +###################################################################### + +TESTOPTS= $(EXTRATESTOPTS) +TESTPYTHON= $(RUNSHARED) ./$(BUILDPYTHON) $(TESTPYTHONOPTS) +TESTRUNNER= $(TESTPYTHON) $(srcdir)/Tools/scripts/run_tests.py +TESTTIMEOUT= 1200 + +.PHONY: test testall testuniversal buildbottest pythoninfo + +# Remove "test_python_*" directories of previous failed test jobs. +# Pass TESTOPTS options because it can contain --tempdir option. +cleantest: build_all + $(TESTRUNNER) $(TESTOPTS) --cleanup + +# Run a basic set of regression tests. +# This excludes some tests that are particularly resource-intensive. +test: build_all platform + $(TESTRUNNER) $(TESTOPTS) + +# Run the full test suite twice - once without .pyc files, and once with. +# In the past, we've had problems where bugs in the marshalling or +# elsewhere caused bytecode read from .pyc files to behave differently +# than bytecode generated directly from a .py source file. Sometimes +# the bytecode read from a .pyc file had the bug, sometimes the directly +# generated bytecode. This is sometimes a very shy bug needing a lot of +# sample data. +testall: build_all platform + -find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f + $(TESTPYTHON) -E $(srcdir)/Lib/compileall.py + -find $(srcdir)/Lib -name '*.py[co]' -print | xargs rm -f + -$(TESTRUNNER) -u all $(TESTOPTS) + $(TESTRUNNER) -u all $(TESTOPTS) + +# Run the test suite for both architectures in a Universal build on OSX. +# Must be run on an Intel box. +testuniversal: build_all platform + @if [ `arch` != 'i386' ]; then \ + echo "This can only be used on OSX/i386" ;\ + exit 1 ;\ + fi + $(TESTRUNNER) -u all $(TESTOPTS) + $(RUNSHARED) /usr/libexec/oah/translate \ + ./$(BUILDPYTHON) -E -m test -j 0 -u all $(TESTOPTS) + +# Like testall, but with only one pass and without multiple processes. +# Run an optional script to include information about the build environment. +buildbottest: build_all platform + -@if which pybuildbot.identify >/dev/null 2>&1; then \ + pybuildbot.identify "CC='$(CC)'" "CXX='$(CXX)'"; \ + fi + $(TESTRUNNER) -j 1 -u all -W --slowest --fail-env-changed --timeout=$(TESTTIMEOUT) $(TESTOPTS) + +pythoninfo: build_all + $(RUNSHARED) ./$(BUILDPYTHON) -m test.pythoninfo + +QUICKTESTOPTS= $(TESTOPTS) -x test_subprocess test_io test_lib2to3 \ + test_multibytecodec test_urllib2_localnet test_itertools \ + test_multiprocessing_fork test_multiprocessing_spawn \ + test_multiprocessing_forkserver \ + test_mailbox test_socket test_poll \ + test_select test_zipfile test_concurrent_futures +quicktest: build_all platform + $(TESTRUNNER) $(QUICKTESTOPTS) + +# SSL tests +.PHONY: multisslcompile multissltest +multisslcompile: build_all + $(RUNSHARED) ./$(BUILDPYTHON) Tools/ssl/multissltests.py --steps=modules + +multissltest: build_all + $(RUNSHARED) ./$(BUILDPYTHON) Tools/ssl/multissltests.py + +install: commoninstall bininstall maninstall + if test "x$(ENSUREPIP)" != "xno" ; then \ + case $(ENSUREPIP) in \ + upgrade) ensurepip="--upgrade" ;; \ + install|*) ensurepip="" ;; \ + esac; \ + $(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \ + $$ensurepip --root=$(DESTDIR)/ ; \ + fi + +altinstall: commoninstall + if test "x$(ENSUREPIP)" != "xno" ; then \ + case $(ENSUREPIP) in \ + upgrade) ensurepip="--altinstall --upgrade" ;; \ + install|*) ensurepip="--altinstall" ;; \ + esac; \ + $(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \ + $$ensurepip --root=$(DESTDIR)/ ; \ + fi + +commoninstall: check-clean-src \ + altbininstall libinstall inclinstall libainstall \ + sharedinstall oldsharedinstall altmaninstall \ + + +# Install shared libraries enabled by Setup +DESTDIRS= $(exec_prefix) $(LIBDIR) $(BINLIBDEST) $(DESTSHARED) + +oldsharedinstall: $(DESTSHARED) $(SHAREDMODS) + @for i in X $(SHAREDMODS); do \ + if test $$i != X; then \ + echo $(INSTALL_SHARED) $$i $(DESTSHARED)/`basename $$i`; \ + $(INSTALL_SHARED) $$i $(DESTDIR)$(DESTSHARED)/`basename $$i`; \ + fi; \ + done + +$(DESTSHARED): + @for i in $(DESTDIRS); \ + do \ + if test ! -d $(DESTDIR)$$i; then \ + echo "Creating directory $$i"; \ + $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \ + else true; \ + fi; \ + done + +# Install the interpreter with $(VERSION) affixed +# This goes into $(exec_prefix) +altbininstall: $(BUILDPYTHON) + @for i in $(BINDIR) $(LIBDIR); \ + do \ + if test ! -d $(DESTDIR)$$i; then \ + echo "Creating directory $$i"; \ + $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \ + else true; \ + fi; \ + done + if test "$(PYTHONFRAMEWORKDIR)" = "no-framework" ; then \ + $(INSTALL_PROGRAM) $(BUILDPYTHON) $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); \ + else \ + $(INSTALL_PROGRAM) $(STRIPFLAG) Mac/pythonw $(DESTDIR)$(BINDIR)/python$(LDVERSION)$(EXE); \ + fi + -if test "$(VERSION)" != "$(LDVERSION)"; then \ + if test -f $(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE) -o -h $(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE); \ + then rm -f $(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE); \ + fi; \ + (cd $(DESTDIR)$(BINDIR); $(LN) python$(LDVERSION)$(EXE) python$(VERSION)$(EXE)); \ + fi + if test -f $(LDLIBRARY) && test "$(PYTHONFRAMEWORKDIR)" = "no-framework" ; then \ + if test -n "$(DLLLIBRARY)" ; then \ + $(INSTALL_SHARED) $(DLLLIBRARY) $(DESTDIR)$(BINDIR); \ + else \ + $(INSTALL_SHARED) $(LDLIBRARY) $(DESTDIR)$(LIBDIR)/$(INSTSONAME); \ + if test $(LDLIBRARY) != $(INSTSONAME); then \ + (cd $(DESTDIR)$(LIBDIR); $(LN) -sf $(INSTSONAME) $(LDLIBRARY)) \ + fi \ + fi; \ + if test -n "$(PY3LIBRARY)"; then \ + $(INSTALL_SHARED) $(PY3LIBRARY) $(DESTDIR)$(LIBDIR)/$(PY3LIBRARY); \ + fi; \ + else true; \ + fi + if test "x$(LIPO_32BIT_FLAGS)" != "x" ; then \ + rm -f $(DESTDIR)$(BINDIR)python$(VERSION)-32$(EXE); \ + lipo $(LIPO_32BIT_FLAGS) \ + -output $(DESTDIR)$(BINDIR)/python$(VERSION)-32$(EXE) \ + $(DESTDIR)$(BINDIR)/python$(VERSION)$(EXE); \ + fi + +bininstall: altbininstall + if test ! -d $(DESTDIR)$(LIBPC); then \ + echo "Creating directory $(LIBPC)"; \ + $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(LIBPC); \ + fi + -if test -f $(DESTDIR)$(BINDIR)/python3$(EXE) -o -h $(DESTDIR)$(BINDIR)/python3$(EXE); \ + then rm -f $(DESTDIR)$(BINDIR)/python3$(EXE); \ + else true; \ + fi + (cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)$(EXE) python3$(EXE)) + -if test "$(VERSION)" != "$(LDVERSION)"; then \ + rm -f $(DESTDIR)$(BINDIR)/python$(VERSION)-config; \ + (cd $(DESTDIR)$(BINDIR); $(LN) -s python$(LDVERSION)-config python$(VERSION)-config); \ + rm -f $(DESTDIR)$(LIBPC)/python-$(LDVERSION).pc; \ + (cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(VERSION).pc python-$(LDVERSION).pc); \ + rm -f $(DESTDIR)$(LIBPC)/python-$(LDVERSION)-embed.pc; \ + (cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(VERSION)-embed.pc python-$(LDVERSION)-embed.pc); \ + fi + -rm -f $(DESTDIR)$(BINDIR)/python3-config + (cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-config python3-config) + -rm -f $(DESTDIR)$(LIBPC)/python3.pc + (cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(VERSION).pc python3.pc) + -rm -f $(DESTDIR)$(LIBPC)/python3-embed.pc + (cd $(DESTDIR)$(LIBPC); $(LN) -s python-$(VERSION)-embed.pc python3-embed.pc) + -rm -f $(DESTDIR)$(BINDIR)/idle3 + (cd $(DESTDIR)$(BINDIR); $(LN) -s idle$(VERSION) idle3) + -rm -f $(DESTDIR)$(BINDIR)/pydoc3 + (cd $(DESTDIR)$(BINDIR); $(LN) -s pydoc$(VERSION) pydoc3) + -rm -f $(DESTDIR)$(BINDIR)/2to3 + (cd $(DESTDIR)$(BINDIR); $(LN) -s 2to3-$(VERSION) 2to3) + if test "x$(LIPO_32BIT_FLAGS)" != "x" ; then \ + rm -f $(DESTDIR)$(BINDIR)/python3-32$(EXE); \ + (cd $(DESTDIR)$(BINDIR); $(LN) -s python$(VERSION)-32$(EXE) python3-32$(EXE)) \ + fi + +# Install the versioned manual page +altmaninstall: + @for i in $(MANDIR) $(MANDIR)/man1; \ + do \ + if test ! -d $(DESTDIR)$$i; then \ + echo "Creating directory $$i"; \ + $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \ + else true; \ + fi; \ + done + $(INSTALL_DATA) $(srcdir)/Misc/python.man \ + $(DESTDIR)$(MANDIR)/man1/python$(VERSION).1 + +# Install the unversioned manual page +maninstall: altmaninstall + -rm -f $(DESTDIR)$(MANDIR)/man1/python3.1 + (cd $(DESTDIR)$(MANDIR)/man1; $(LN) -s python$(VERSION).1 python3.1) + +# Install the library +XMLLIBSUBDIRS= xml xml/dom xml/etree xml/parsers xml/sax +LIBSUBDIRS= tkinter tkinter/test tkinter/test/test_tkinter \ + tkinter/test/test_ttk site-packages test \ + test/audiodata \ + test/capath test/data \ + test/cjkencodings test/decimaltestdata \ + test/xmltestdata test/xmltestdata/c14n-20 \ + test/dtracedata \ + test/eintrdata \ + test/imghdrdata \ + test/libregrtest \ + test/subprocessdata test/sndhdrdata test/support \ + test/tracedmodules test/encoded_modules \ + test/test_import \ + test/test_import/data \ + test/test_import/data/circular_imports \ + test/test_import/data/circular_imports/subpkg \ + test/test_import/data/package \ + test/test_import/data/package2 \ + importlib \ + importlib/metadata \ + test/test_importlib \ + test/test_importlib/builtin \ + test/test_importlib/data \ + test/test_importlib/data01 \ + test/test_importlib/data01/subdirectory \ + test/test_importlib/data02 \ + test/test_importlib/data02/one \ + test/test_importlib/data02/two \ + test/test_importlib/data03 \ + test/test_importlib/data03/namespace \ + test/test_importlib/data03/namespace/portion1 \ + test/test_importlib/data03/namespace/portion2 \ + test/test_importlib/extension \ + test/test_importlib/frozen \ + test/test_importlib/import_ \ + test/test_importlib/namespace_pkgs \ + test/test_importlib/namespace_pkgs/both_portions \ + test/test_importlib/namespace_pkgs/both_portions/foo \ + test/test_importlib/namespace_pkgs/module_and_namespace_package \ + test/test_importlib/namespace_pkgs/module_and_namespace_package/a_test \ + test/test_importlib/namespace_pkgs/not_a_namespace_pkg \ + test/test_importlib/namespace_pkgs/not_a_namespace_pkg/foo \ + test/test_importlib/namespace_pkgs/portion1 \ + test/test_importlib/namespace_pkgs/portion1/foo \ + test/test_importlib/namespace_pkgs/portion2 \ + test/test_importlib/namespace_pkgs/portion2/foo \ + test/test_importlib/namespace_pkgs/project1 \ + test/test_importlib/namespace_pkgs/project1/parent \ + test/test_importlib/namespace_pkgs/project1/parent/child \ + test/test_importlib/namespace_pkgs/project2 \ + test/test_importlib/namespace_pkgs/project2/parent \ + test/test_importlib/namespace_pkgs/project2/parent/child \ + test/test_importlib/namespace_pkgs/project3 \ + test/test_importlib/namespace_pkgs/project3/parent \ + test/test_importlib/namespace_pkgs/project3/parent/child \ + test/test_importlib/source \ + test/test_importlib/zipdata01 \ + test/test_importlib/zipdata02 \ + test/ziptestdata \ + asyncio \ + test/test_asyncio \ + collections concurrent concurrent/futures encodings \ + email email/mime test/test_email test/test_email/data \ + ensurepip ensurepip/_bundled \ + html json test/test_json http dbm xmlrpc \ + sqlite3 sqlite3/test \ + logging csv wsgiref urllib \ + lib2to3 lib2to3/fixes lib2to3/pgen2 lib2to3/tests \ + lib2to3/tests/data lib2to3/tests/data/fixers \ + lib2to3/tests/data/fixers/myfixes \ + ctypes ctypes/test ctypes/macholib \ + idlelib idlelib/Icons idlelib/idle_test \ + distutils distutils/command distutils/tests $(XMLLIBSUBDIRS) \ + test/test_tools test/test_warnings test/test_warnings/data \ + turtledemo \ + multiprocessing multiprocessing/dummy \ + unittest unittest/test unittest/test/testmock \ + venv venv/scripts venv/scripts/common venv/scripts/posix \ + curses pydoc_data +libinstall: build_all $(srcdir)/Modules/xxmodule.c + @for i in $(SCRIPTDIR) $(LIBDEST); \ + do \ + if test ! -d $(DESTDIR)$$i; then \ + echo "Creating directory $$i"; \ + $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \ + else true; \ + fi; \ + done + @for d in $(LIBSUBDIRS); \ + do \ + a=$(srcdir)/Lib/$$d; \ + if test ! -d $$a; then continue; else true; fi; \ + b=$(LIBDEST)/$$d; \ + if test ! -d $(DESTDIR)$$b; then \ + echo "Creating directory $$b"; \ + $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$b; \ + else true; \ + fi; \ + done + @for i in $(srcdir)/Lib/*.py; \ + do \ + if test -x $$i; then \ + $(INSTALL_SCRIPT) $$i $(DESTDIR)$(LIBDEST); \ + echo $(INSTALL_SCRIPT) $$i $(LIBDEST); \ + else \ + $(INSTALL_DATA) $$i $(DESTDIR)$(LIBDEST); \ + echo $(INSTALL_DATA) $$i $(LIBDEST); \ + fi; \ + done + @for d in $(LIBSUBDIRS); \ + do \ + a=$(srcdir)/Lib/$$d; \ + if test ! -d $$a; then continue; else true; fi; \ + if test `ls $$a | wc -l` -lt 1; then continue; fi; \ + b=$(LIBDEST)/$$d; \ + for i in $$a/*; \ + do \ + case $$i in \ + *CVS) ;; \ + *.py[co]) ;; \ + *.orig) ;; \ + *~) ;; \ + *) \ + if test -d $$i; then continue; fi; \ + if test -x $$i; then \ + echo $(INSTALL_SCRIPT) $$i $$b; \ + $(INSTALL_SCRIPT) $$i $(DESTDIR)$$b; \ + else \ + echo $(INSTALL_DATA) $$i $$b; \ + $(INSTALL_DATA) $$i $(DESTDIR)$$b; \ + fi;; \ + esac; \ + done; \ + done + $(INSTALL_DATA) `cat pybuilddir.txt`/_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH).py \ + $(DESTDIR)$(LIBDEST); \ + $(INSTALL_DATA) $(srcdir)/LICENSE $(DESTDIR)$(LIBDEST)/LICENSE.txt + if test -d $(DESTDIR)$(LIBDEST)/distutils/tests; then \ + $(INSTALL_DATA) $(srcdir)/Modules/xxmodule.c \ + $(DESTDIR)$(LIBDEST)/distutils/tests ; \ + fi + -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ + $(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \ + -j0 -d $(LIBDEST) -f \ + -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \ + $(DESTDIR)$(LIBDEST) + -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ + $(PYTHON_FOR_BUILD) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \ + -j0 -d $(LIBDEST) -f \ + -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \ + $(DESTDIR)$(LIBDEST) + -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ + $(PYTHON_FOR_BUILD) -Wi -OO $(DESTDIR)$(LIBDEST)/compileall.py \ + -j0 -d $(LIBDEST) -f \ + -x 'bad_coding|badsyntax|site-packages|lib2to3/tests/data' \ + $(DESTDIR)$(LIBDEST) + -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ + $(PYTHON_FOR_BUILD) -Wi $(DESTDIR)$(LIBDEST)/compileall.py \ + -j0 -d $(LIBDEST)/site-packages -f \ + -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages + -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ + $(PYTHON_FOR_BUILD) -Wi -O $(DESTDIR)$(LIBDEST)/compileall.py \ + -j0 -d $(LIBDEST)/site-packages -f \ + -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages + -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ + $(PYTHON_FOR_BUILD) -Wi -OO $(DESTDIR)$(LIBDEST)/compileall.py \ + -j0 -d $(LIBDEST)/site-packages -f \ + -x badsyntax $(DESTDIR)$(LIBDEST)/site-packages + -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ + $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/Grammar.txt + -PYTHONPATH=$(DESTDIR)$(LIBDEST) $(RUNSHARED) \ + $(PYTHON_FOR_BUILD) -m lib2to3.pgen2.driver $(DESTDIR)$(LIBDEST)/lib2to3/PatternGrammar.txt + +# bpo-21536: Misc/python-config.sh is generated in the build directory +# from $(srcdir)Misc/python-config.sh.in. +python-config: $(srcdir)/Misc/python-config.in Misc/python-config.sh + @ # Substitution happens here, as the completely-expanded BINDIR + @ # is not available in configure + sed -e "s,@EXENAME@,$(BINDIR)/python$(LDVERSION)$(EXE)," < $(srcdir)/Misc/python-config.in >python-config.py + @ # Replace makefile compat. variable references with shell script compat. ones; $(VAR) -> ${VAR} + LC_ALL=C sed -e 's,\$$(\([A-Za-z0-9_]*\)),\$$\{\1\},g' < Misc/python-config.sh >python-config + @ # On Darwin, always use the python version of the script, the shell + @ # version doesn't use the compiler customizations that are provided + @ # in python (_osx_support.py). + @if test `uname -s` = Darwin; then \ + cp python-config.py python-config; \ + fi + + +# Install the include files +INCLDIRSTOMAKE=$(INCLUDEDIR) $(CONFINCLUDEDIR) $(INCLUDEPY) $(CONFINCLUDEPY) +inclinstall: + @for i in $(INCLDIRSTOMAKE); \ + do \ + if test ! -d $(DESTDIR)$$i; then \ + echo "Creating directory $$i"; \ + $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \ + else true; \ + fi; \ + done + @if test ! -d $(DESTDIR)$(INCLUDEPY)/cpython; then \ + echo "Creating directory $(DESTDIR)$(INCLUDEPY)/cpython"; \ + $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(INCLUDEPY)/cpython; \ + else true; \ + fi + @if test ! -d $(DESTDIR)$(INCLUDEPY)/internal; then \ + echo "Creating directory $(DESTDIR)$(INCLUDEPY)/internal"; \ + $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$(INCLUDEPY)/internal; \ + else true; \ + fi + @for i in $(srcdir)/Include/*.h; \ + do \ + echo $(INSTALL_DATA) $$i $(INCLUDEPY); \ + $(INSTALL_DATA) $$i $(DESTDIR)$(INCLUDEPY); \ + done + @for i in $(srcdir)/Include/cpython/*.h; \ + do \ + echo $(INSTALL_DATA) $$i $(INCLUDEPY)/cpython; \ + $(INSTALL_DATA) $$i $(DESTDIR)$(INCLUDEPY)/cpython; \ + done + @for i in $(srcdir)/Include/internal/*.h; \ + do \ + echo $(INSTALL_DATA) $$i $(INCLUDEPY)/internal; \ + $(INSTALL_DATA) $$i $(DESTDIR)$(INCLUDEPY)/internal; \ + done + $(INSTALL_DATA) pyconfig.h $(DESTDIR)$(CONFINCLUDEPY)/pyconfig.h + +# Install the library and miscellaneous stuff needed for extending/embedding +# This goes into $(exec_prefix) +LIBPL= $(prefix)/lib/python3.8/config-$(VERSION)$(ABIFLAGS)-x86_64-linux-gnu + +# pkgconfig directory +LIBPC= $(LIBDIR)/pkgconfig + +libainstall: build_all python-config + @for i in $(LIBDIR) $(LIBPL) $(LIBPC); \ + do \ + if test ! -d $(DESTDIR)$$i; then \ + echo "Creating directory $$i"; \ + $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \ + else true; \ + fi; \ + done + @if test -d $(LIBRARY); then :; else \ + if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \ + if test "$(SHLIB_SUFFIX)" = .dll; then \ + $(INSTALL_DATA) $(LDLIBRARY) $(DESTDIR)$(LIBPL) ; \ + else \ + $(INSTALL_DATA) $(LIBRARY) $(DESTDIR)$(LIBPL)/$(LIBRARY) ; \ + fi; \ + else \ + echo Skip install of $(LIBRARY) - use make frameworkinstall; \ + fi; \ + fi + $(INSTALL_DATA) Modules/config.c $(DESTDIR)$(LIBPL)/config.c + $(INSTALL_DATA) Programs/python.o $(DESTDIR)$(LIBPL)/python.o + $(INSTALL_DATA) $(srcdir)/Modules/config.c.in $(DESTDIR)$(LIBPL)/config.c.in + $(INSTALL_DATA) Makefile $(DESTDIR)$(LIBPL)/Makefile + $(INSTALL_DATA) $(srcdir)/Modules/Setup $(DESTDIR)$(LIBPL)/Setup + $(INSTALL_DATA) Modules/Setup.local $(DESTDIR)$(LIBPL)/Setup.local + $(INSTALL_DATA) Misc/python.pc $(DESTDIR)$(LIBPC)/python-$(VERSION).pc + $(INSTALL_DATA) Misc/python-embed.pc $(DESTDIR)$(LIBPC)/python-$(VERSION)-embed.pc + $(INSTALL_SCRIPT) $(srcdir)/Modules/makesetup $(DESTDIR)$(LIBPL)/makesetup + $(INSTALL_SCRIPT) $(srcdir)/install-sh $(DESTDIR)$(LIBPL)/install-sh + $(INSTALL_SCRIPT) python-config.py $(DESTDIR)$(LIBPL)/python-config.py + $(INSTALL_SCRIPT) python-config $(DESTDIR)$(BINDIR)/python$(LDVERSION)-config + @if [ -s Modules/python.exp -a \ + "`echo $(MACHDEP) | sed 's/^\(...\).*/\1/'`" = "aix" ]; then \ + echo; echo "Installing support files for building shared extension modules on AIX:"; \ + $(INSTALL_DATA) Modules/python.exp \ + $(DESTDIR)$(LIBPL)/python.exp; \ + echo; echo "$(LIBPL)/python.exp"; \ + $(INSTALL_SCRIPT) $(srcdir)/Modules/makexp_aix \ + $(DESTDIR)$(LIBPL)/makexp_aix; \ + echo "$(LIBPL)/makexp_aix"; \ + $(INSTALL_SCRIPT) Modules/ld_so_aix \ + $(DESTDIR)$(LIBPL)/ld_so_aix; \ + echo "$(LIBPL)/ld_so_aix"; \ + echo; echo "See Misc/AIX-NOTES for details."; \ + else true; \ + fi + +# Install the dynamically loadable modules +# This goes into $(exec_prefix) +sharedinstall: sharedmods + $(RUNSHARED) $(PYTHON_FOR_BUILD) $(srcdir)/setup.py install \ + --prefix=$(prefix) \ + --install-scripts=$(BINDIR) \ + --install-platlib=$(DESTSHARED) \ + --root=$(DESTDIR)/ + -rm $(DESTDIR)$(DESTSHARED)/_sysconfigdata_$(ABIFLAGS)_$(MACHDEP)_$(MULTIARCH).py + -rm -r $(DESTDIR)$(DESTSHARED)/__pycache__ + +# Here are a couple of targets for MacOSX again, to install a full +# framework-based Python. frameworkinstall installs everything, the +# subtargets install specific parts. Much of the actual work is offloaded to +# the Makefile in Mac +# +# +# This target is here for backward compatibility, previous versions of Python +# hadn't integrated framework installation in the normal install process. +frameworkinstall: install + +# On install, we re-make the framework +# structure in the install location, /Library/Frameworks/ or the argument to +# --enable-framework. If --enable-framework has been specified then we have +# automatically set prefix to the location deep down in the framework, so we +# only have to cater for the structural bits of the framework. + +frameworkinstallframework: frameworkinstallstructure install frameworkinstallmaclib + +frameworkinstallstructure: $(LDLIBRARY) + @if test "$(PYTHONFRAMEWORKDIR)" = no-framework; then \ + echo Not configured with --enable-framework; \ + exit 1; \ + else true; \ + fi + @for i in $(prefix)/Resources/English.lproj $(prefix)/lib; do\ + if test ! -d $(DESTDIR)$$i; then \ + echo "Creating directory $(DESTDIR)$$i"; \ + $(INSTALL) -d -m $(DIRMODE) $(DESTDIR)$$i; \ + else true; \ + fi; \ + done + $(LN) -fsn include/python$(LDVERSION) $(DESTDIR)$(prefix)/Headers + sed 's/%VERSION%/'"`$(RUNSHARED) ./$(BUILDPYTHON) -c 'import platform; print(platform.python_version())'`"'/g' < $(RESSRCDIR)/Info.plist > $(DESTDIR)$(prefix)/Resources/Info.plist + $(LN) -fsn $(VERSION) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Versions/Current + $(LN) -fsn Versions/Current/$(PYTHONFRAMEWORK) $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/$(PYTHONFRAMEWORK) + $(LN) -fsn Versions/Current/Headers $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Headers + $(LN) -fsn Versions/Current/Resources $(DESTDIR)$(PYTHONFRAMEWORKINSTALLDIR)/Resources + $(INSTALL_SHARED) $(LDLIBRARY) $(DESTDIR)$(PYTHONFRAMEWORKPREFIX)/$(LDLIBRARY) + +# This installs Mac/Lib into the framework +# Install a number of symlinks to keep software that expects a normal unix +# install (which includes python-config) happy. +frameworkinstallmaclib: + $(LN) -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(LIBPL)/libpython$(LDVERSION).a" + $(LN) -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(LIBPL)/libpython$(LDVERSION).dylib" + $(LN) -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(LIBPL)/libpython$(VERSION).a" + $(LN) -fs "../../../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(LIBPL)/libpython$(VERSION).dylib" + $(LN) -fs "../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(prefix)/lib/libpython$(LDVERSION).dylib" + $(LN) -fs "../$(PYTHONFRAMEWORK)" "$(DESTDIR)$(prefix)/lib/libpython$(VERSION).dylib" + +# This installs the IDE, the Launcher and other apps into /Applications +frameworkinstallapps: + cd Mac && $(MAKE) installapps DESTDIR="$(DESTDIR)" + +# Build the bootstrap executable that will spawn the interpreter inside +# an app bundle within the framework. This allows the interpreter to +# run OS X GUI APIs. +frameworkpythonw: + cd Mac && $(MAKE) pythonw + +# This installs the python* and other bin symlinks in $prefix/bin or in +# a bin directory relative to the framework root +frameworkinstallunixtools: + cd Mac && $(MAKE) installunixtools DESTDIR="$(DESTDIR)" + +frameworkaltinstallunixtools: + cd Mac && $(MAKE) altinstallunixtools DESTDIR="$(DESTDIR)" + +# This installs the Tools into the applications directory. +# It is not part of a normal frameworkinstall +frameworkinstallextras: + cd Mac && $(MAKE) installextras DESTDIR="$(DESTDIR)" + +# Build the toplevel Makefile +Makefile.pre: $(srcdir)/Makefile.pre.in config.status + CONFIG_FILES=Makefile.pre CONFIG_HEADERS= $(SHELL) config.status + $(MAKE) -f Makefile.pre Makefile + +# Run the configure script. +config.status: $(srcdir)/configure + $(SHELL) $(srcdir)/configure $(CONFIG_ARGS) + +.PRECIOUS: config.status $(BUILDPYTHON) Makefile Makefile.pre + +# Some make's put the object file in the current directory +.c.o: + $(CC) -c $(PY_CORE_CFLAGS) -o $@ $< + +# bpo-30104: dtoa.c uses union to cast double to unsigned long[2]. clang 4.0 +# with -O2 or higher and strict aliasing miscompiles the ratio() function +# causing rounding issues. Compile dtoa.c using -fno-strict-aliasing on clang. +# https://bugs.llvm.org//show_bug.cgi?id=31928 +Python/dtoa.o: Python/dtoa.c + $(CC) -c $(PY_CORE_CFLAGS) $(CFLAGS_ALIASING) -o $@ $< + +# Run reindent on the library +reindent: + ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/reindent.py -r $(srcdir)/Lib + +# Rerun configure with the same options as it was run last time, +# provided the config.status script exists +recheck: + $(SHELL) config.status --recheck + $(SHELL) config.status + +# Regenerate configure and pyconfig.h.in +.PHONY: autoconf +autoconf: + # Regenerate the configure script from configure.ac using autoconf + (cd $(srcdir); autoconf -Wall) + # Regenerate pyconfig.h.in from configure.ac using autoheader + (cd $(srcdir); autoheader -Wall) + +# Create a tags file for vi +tags:: + ctags -w $(srcdir)/Include/*.h $(srcdir)/Include/cpython/*.h $(srcdir)/Include/internal/*.h + for i in $(SRCDIRS); do ctags -f tags -w -a $(srcdir)/$$i/*.[ch]; done + ctags -f tags -w -a $(srcdir)/Modules/_ctypes/*.[ch] + find $(srcdir)/Lib -type f -name "*.py" -not -name "test_*.py" -not -path "*/test/*" -not -path "*/tests/*" -not -path "*/*_test/*" | ctags -f tags -w -a -L - + LC_ALL=C sort -o tags tags + +# Create a tags file for GNU Emacs +TAGS:: + cd $(srcdir); \ + etags Include/*.h Include/cpython/*.h Include/internal/*.h; \ + for i in $(SRCDIRS); do etags -a $$i/*.[ch]; done + etags -a $(srcdir)/Modules/_ctypes/*.[ch] + find $(srcdir)/Lib -type f -name "*.py" -not -name "test_*.py" -not -path "*/test/*" -not -path "*/tests/*" -not -path "*/*_test/*" | etags - -a + +# Sanitation targets -- clean leaves libraries, executables and tags +# files, which clobber removes as well +pycremoval: + -find $(srcdir) -depth -name '__pycache__' -exec rm -rf {} ';' + -find $(srcdir) -name '*.py[co]' -exec rm -f {} ';' + +rmtestturds: + -rm -f *BAD *GOOD *SKIPPED + -rm -rf OUT + -rm -f *.TXT + -rm -f *.txt + -rm -f gb-18030-2000.xml + +docclean: + -rm -rf Doc/build + -rm -rf Doc/tools/sphinx Doc/tools/pygments Doc/tools/docutils + +clean: pycremoval + find . -name '*.[oa]' -exec rm -f {} ';' + find . -name '*.s[ol]' -exec rm -f {} ';' + find . -name '*.so.[0-9]*.[0-9]*' -exec rm -f {} ';' + find build -name 'fficonfig.h' -exec rm -f {} ';' || true + find build -name '*.py' -exec rm -f {} ';' || true + find build -name '*.py[co]' -exec rm -f {} ';' || true + -rm -f pybuilddir.txt + -rm -f Lib/lib2to3/*Grammar*.pickle + -rm -f Programs/_testembed Programs/_freeze_importlib + -find build -type f -a ! -name '*.gc??' -exec rm -f {} ';' + -rm -f Include/pydtrace_probes.h + -rm -f profile-gen-stamp + +profile-removal: + find . -name '*.gc??' -exec rm -f {} ';' + find . -name '*.profclang?' -exec rm -f {} ';' + find . -name '*.dyn' -exec rm -f {} ';' + rm -f $(COVERAGE_INFO) + rm -rf $(COVERAGE_REPORT) + rm -f profile-run-stamp + +clobber: clean profile-removal + -rm -f $(BUILDPYTHON) $(LIBRARY) $(LDLIBRARY) $(DLLLIBRARY) \ + tags TAGS \ + config.cache config.log pyconfig.h Modules/config.c + -rm -rf build platform + -rm -rf $(PYTHONFRAMEWORKDIR) + -rm -f python-config.py python-config + -rm -f profile-gen-stamp profile-clean-stamp + +# Make things extra clean, before making a distribution: +# remove all generated files, even Makefile[.pre] +# Keep configure and Python-ast.[ch], it's possible they can't be generated +distclean: clobber + for file in $(srcdir)/Lib/test/data/* ; do \ + if test "$$file" != "$(srcdir)/Lib/test/data/README"; then rm "$$file"; fi; \ + done + -rm -f core Makefile Makefile.pre config.status Modules/Setup.local \ + Modules/ld_so_aix Modules/python.exp Misc/python.pc \ + Misc/python-embed.pc Misc/python-config.sh + -rm -f python*-gdb.py + # Issue #28258: set LC_ALL to avoid issues with Estonian locale. + # Expansion is performed here by shell (spawned by make) itself before + # arguments are passed to find. So LC_ALL=C must be set as a separate + # command. + LC_ALL=C; find $(srcdir)/[a-zA-Z]* '(' -name '*.fdc' -o -name '*~' \ + -o -name '[@,#]*' -o -name '*.old' \ + -o -name '*.orig' -o -name '*.rej' \ + -o -name '*.bak' ')' \ + -exec rm -f {} ';' + +# Check that all symbols exported by libpython start with "Py" or "_Py" +smelly: build_all + $(RUNSHARED) ./$(BUILDPYTHON) Tools/scripts/smelly.py + +# Find files with funny names +funny: + find $(SUBDIRS) $(SUBDIRSTOO) \ + -type d \ + -o -name '*.[chs]' \ + -o -name '*.py' \ + -o -name '*.pyw' \ + -o -name '*.dat' \ + -o -name '*.el' \ + -o -name '*.fd' \ + -o -name '*.in' \ + -o -name '*.gif' \ + -o -name '*.txt' \ + -o -name '*.xml' \ + -o -name '*.xbm' \ + -o -name '*.xpm' \ + -o -name '*.uue' \ + -o -name '*.decTest' \ + -o -name '*.tmCommand' \ + -o -name '*.tmSnippet' \ + -o -name 'Setup' \ + -o -name 'Setup.*' \ + -o -name README \ + -o -name NEWS \ + -o -name HISTORY \ + -o -name Makefile \ + -o -name ChangeLog \ + -o -name .hgignore \ + -o -name MANIFEST \ + -o -print + +# Perform some verification checks on any modified files. +patchcheck: build_all + $(RUNSHARED) ./$(BUILDPYTHON) $(srcdir)/Tools/scripts/patchcheck.py + +# Dependencies + +Python/thread.o: $(srcdir)/Python/thread_nt.h $(srcdir)/Python/thread_pthread.h $(srcdir)/Python/condvar.h + +# Declare targets that aren't real files +.PHONY: all build_all sharedmods check-clean-src oldsharedmods test quicktest +.PHONY: install altinstall oldsharedinstall bininstall altbininstall +.PHONY: maninstall libinstall inclinstall libainstall sharedinstall +.PHONY: frameworkinstall frameworkinstallframework frameworkinstallstructure +.PHONY: frameworkinstallmaclib frameworkinstallapps frameworkinstallunixtools +.PHONY: frameworkaltinstallunixtools recheck clean clobber distclean +.PHONY: smelly funny patchcheck touch altmaninstall commoninstall +.PHONY: gdbhooks + +# IF YOU PUT ANYTHING HERE IT WILL GO AWAY +# Local Variables: +# mode: makefile +# End: + +# Rules appended by makesetup + +Modules/posixmodule.o: $(srcdir)/Modules/posixmodule.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal -c $(srcdir)/Modules/posixmodule.c -o Modules/posixmodule.o +Modules/posix$(EXT_SUFFIX): Modules/posixmodule.o; $(BLDSHARED) Modules/posixmodule.o -o Modules/posix$(EXT_SUFFIX) +Modules/errnomodule.o: $(srcdir)/Modules/errnomodule.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS) -c $(srcdir)/Modules/errnomodule.c -o Modules/errnomodule.o +Modules/errno$(EXT_SUFFIX): Modules/errnomodule.o; $(BLDSHARED) Modules/errnomodule.o -o Modules/errno$(EXT_SUFFIX) +Modules/pwdmodule.o: $(srcdir)/Modules/pwdmodule.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS) -c $(srcdir)/Modules/pwdmodule.c -o Modules/pwdmodule.o +Modules/pwd$(EXT_SUFFIX): Modules/pwdmodule.o; $(BLDSHARED) Modules/pwdmodule.o -o Modules/pwd$(EXT_SUFFIX) +Modules/_sre.o: $(srcdir)/Modules/_sre.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS) -c $(srcdir)/Modules/_sre.c -o Modules/_sre.o +Modules/_sre$(EXT_SUFFIX): Modules/_sre.o; $(BLDSHARED) Modules/_sre.o -o Modules/_sre$(EXT_SUFFIX) +Modules/_codecsmodule.o: $(srcdir)/Modules/_codecsmodule.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS) -c $(srcdir)/Modules/_codecsmodule.c -o Modules/_codecsmodule.o +Modules/_codecs$(EXT_SUFFIX): Modules/_codecsmodule.o; $(BLDSHARED) Modules/_codecsmodule.o -o Modules/_codecs$(EXT_SUFFIX) +Modules/_weakref.o: $(srcdir)/Modules/_weakref.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS) -c $(srcdir)/Modules/_weakref.c -o Modules/_weakref.o +Modules/_weakref$(EXT_SUFFIX): Modules/_weakref.o; $(BLDSHARED) Modules/_weakref.o -o Modules/_weakref$(EXT_SUFFIX) +Modules/_functoolsmodule.o: $(srcdir)/Modules/_functoolsmodule.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal -c $(srcdir)/Modules/_functoolsmodule.c -o Modules/_functoolsmodule.o +Modules/_functools$(EXT_SUFFIX): Modules/_functoolsmodule.o; $(BLDSHARED) Modules/_functoolsmodule.o -o Modules/_functools$(EXT_SUFFIX) +Modules/_operator.o: $(srcdir)/Modules/_operator.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS) -c $(srcdir)/Modules/_operator.c -o Modules/_operator.o +Modules/_operator$(EXT_SUFFIX): Modules/_operator.o; $(BLDSHARED) Modules/_operator.o -o Modules/_operator$(EXT_SUFFIX) +Modules/_collectionsmodule.o: $(srcdir)/Modules/_collectionsmodule.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS) -c $(srcdir)/Modules/_collectionsmodule.c -o Modules/_collectionsmodule.o +Modules/_collections$(EXT_SUFFIX): Modules/_collectionsmodule.o; $(BLDSHARED) Modules/_collectionsmodule.o -o Modules/_collections$(EXT_SUFFIX) +Modules/_abc.o: $(srcdir)/Modules/_abc.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS) -c $(srcdir)/Modules/_abc.c -o Modules/_abc.o +Modules/_abc$(EXT_SUFFIX): Modules/_abc.o; $(BLDSHARED) Modules/_abc.o -o Modules/_abc$(EXT_SUFFIX) +Modules/itertoolsmodule.o: $(srcdir)/Modules/itertoolsmodule.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS) -c $(srcdir)/Modules/itertoolsmodule.c -o Modules/itertoolsmodule.o +Modules/itertools$(EXT_SUFFIX): Modules/itertoolsmodule.o; $(BLDSHARED) Modules/itertoolsmodule.o -o Modules/itertools$(EXT_SUFFIX) +Modules/atexitmodule.o: $(srcdir)/Modules/atexitmodule.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS) -c $(srcdir)/Modules/atexitmodule.c -o Modules/atexitmodule.o +Modules/atexit$(EXT_SUFFIX): Modules/atexitmodule.o; $(BLDSHARED) Modules/atexitmodule.o -o Modules/atexit$(EXT_SUFFIX) +Modules/signalmodule.o: $(srcdir)/Modules/signalmodule.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal -c $(srcdir)/Modules/signalmodule.c -o Modules/signalmodule.o +Modules/_signal$(EXT_SUFFIX): Modules/signalmodule.o; $(BLDSHARED) Modules/signalmodule.o -o Modules/_signal$(EXT_SUFFIX) +Modules/_stat.o: $(srcdir)/Modules/_stat.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS) -c $(srcdir)/Modules/_stat.c -o Modules/_stat.o +Modules/_stat$(EXT_SUFFIX): Modules/_stat.o; $(BLDSHARED) Modules/_stat.o -o Modules/_stat$(EXT_SUFFIX) +Modules/timemodule.o: $(srcdir)/Modules/timemodule.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal -c $(srcdir)/Modules/timemodule.c -o Modules/timemodule.o +Modules/time$(EXT_SUFFIX): Modules/timemodule.o; $(BLDSHARED) Modules/timemodule.o -o Modules/time$(EXT_SUFFIX) +Modules/_threadmodule.o: $(srcdir)/Modules/_threadmodule.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal -c $(srcdir)/Modules/_threadmodule.c -o Modules/_threadmodule.o +Modules/_thread$(EXT_SUFFIX): Modules/_threadmodule.o; $(BLDSHARED) Modules/_threadmodule.o -o Modules/_thread$(EXT_SUFFIX) +Modules/_localemodule.o: $(srcdir)/Modules/_localemodule.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN -c $(srcdir)/Modules/_localemodule.c -o Modules/_localemodule.o +Modules/_locale$(EXT_SUFFIX): Modules/_localemodule.o; $(BLDSHARED) Modules/_localemodule.o -o Modules/_locale$(EXT_SUFFIX) +Modules/_iomodule.o: $(srcdir)/Modules/_io/_iomodule.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal -I$(srcdir)/Modules/_io -c $(srcdir)/Modules/_io/_iomodule.c -o Modules/_iomodule.o +Modules/iobase.o: $(srcdir)/Modules/_io/iobase.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal -I$(srcdir)/Modules/_io -c $(srcdir)/Modules/_io/iobase.c -o Modules/iobase.o +Modules/fileio.o: $(srcdir)/Modules/_io/fileio.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal -I$(srcdir)/Modules/_io -c $(srcdir)/Modules/_io/fileio.c -o Modules/fileio.o +Modules/bytesio.o: $(srcdir)/Modules/_io/bytesio.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal -I$(srcdir)/Modules/_io -c $(srcdir)/Modules/_io/bytesio.c -o Modules/bytesio.o +Modules/bufferedio.o: $(srcdir)/Modules/_io/bufferedio.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal -I$(srcdir)/Modules/_io -c $(srcdir)/Modules/_io/bufferedio.c -o Modules/bufferedio.o +Modules/textio.o: $(srcdir)/Modules/_io/textio.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal -I$(srcdir)/Modules/_io -c $(srcdir)/Modules/_io/textio.c -o Modules/textio.o +Modules/stringio.o: $(srcdir)/Modules/_io/stringio.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS) -DPy_BUILD_CORE_BUILTIN -I$(srcdir)/Include/internal -I$(srcdir)/Modules/_io -c $(srcdir)/Modules/_io/stringio.c -o Modules/stringio.o +Modules/_io$(EXT_SUFFIX): Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o; $(BLDSHARED) Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o -o Modules/_io$(EXT_SUFFIX) +Modules/faulthandler.o: $(srcdir)/Modules/faulthandler.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS) -c $(srcdir)/Modules/faulthandler.c -o Modules/faulthandler.o +Modules/faulthandler$(EXT_SUFFIX): Modules/faulthandler.o; $(BLDSHARED) Modules/faulthandler.o -o Modules/faulthandler$(EXT_SUFFIX) +Modules/_tracemalloc.o: $(srcdir)/Modules/_tracemalloc.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS) -c $(srcdir)/Modules/_tracemalloc.c -o Modules/_tracemalloc.o +Modules/hashtable.o: $(srcdir)/Modules/hashtable.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS) -c $(srcdir)/Modules/hashtable.c -o Modules/hashtable.o +Modules/_tracemalloc$(EXT_SUFFIX): Modules/_tracemalloc.o Modules/hashtable.o; $(BLDSHARED) Modules/_tracemalloc.o Modules/hashtable.o -o Modules/_tracemalloc$(EXT_SUFFIX) +Modules/symtablemodule.o: $(srcdir)/Modules/symtablemodule.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS) -c $(srcdir)/Modules/symtablemodule.c -o Modules/symtablemodule.o +Modules/_symtable$(EXT_SUFFIX): Modules/symtablemodule.o; $(BLDSHARED) Modules/symtablemodule.o -o Modules/_symtable$(EXT_SUFFIX) +Modules/xxsubtype.o: $(srcdir)/Modules/xxsubtype.c; $(CC) $(PY_BUILTIN_MODULE_CFLAGS) -c $(srcdir)/Modules/xxsubtype.c -o Modules/xxsubtype.o +Modules/xxsubtype$(EXT_SUFFIX): Modules/xxsubtype.o; $(BLDSHARED) Modules/xxsubtype.o -o Modules/xxsubtype$(EXT_SUFFIX) diff --git a/Misc/NEWS b/Misc/NEWS new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TWlzYy9ORVdT --- /dev/null +++ b/Misc/NEWS @@ -0,0 +1,22511 @@ ++++++++++++ +Python News ++++++++++++ + +What's New in Python 3.8.2 final? +================================= + +*Release date: 2020-02-24* + +Core and Builtins +----------------- + +- bpo-39382: Fix a use-after-free in the single inheritance path of + ``issubclass()``, when the ``__bases__`` of an object has a single + reference, and so does its first item. Patch by Yonatan Goldschmidt. + +- bpo-39427: Document all possibilities for the ``-X`` options in the + command line help section. Patch by Pablo Galindo. + +Library +------- + +- bpo-39649: Remove obsolete check for `__args__` in + bdb.Bdb.format_stack_entry. + +- bpo-39681: Fix a regression where the C pickle module wouldn't allow + unpickling from a file-like object that doesn't expose a readinto() + method. + +- bpo-39546: Fix a regression in :class:`~argparse.ArgumentParser` where + ``allow_abbrev=False`` was ignored for long options that used a prefix + character other than "-". + +- bpo-39432: Implement PEP-489 algorithm for non-ascii "PyInit\_..." symbol + names in distutils to make it export the correct init symbol also on + Windows. + +Documentation +------------- + +- bpo-17422: The language reference now specifies restrictions on class + namespaces. Adapted from a patch by Ethan Furman. + +- bpo-39572: Updated documentation of ``total`` flag of TypeDict. + +- bpo-39654: In pyclbr doc, update 'class' to 'module' where appropriate and + add readmodule comment. Patch by Hakan Çelik. + +IDLE +---- + +- bpo-39663: Add tests for pyparse find_good_parse_start(). + + +What's New in Python 3.8.2 release candidate 2? +=============================================== + +*Release date: 2020-02-17* + +Security +-------- + +- bpo-39184: Add audit events to functions in `fcntl`, `msvcrt`, `os`, + `resource`, `shutil`, `signal` and `syslog`. + +Core and Builtins +----------------- + +- bpo-39619: Enable use of :func:`os.chroot` on HP-UX systems. + +- bpo-39606: Fix regression caused by fix for bpo-39386, that prevented + calling ``aclose`` on an async generator that had already been closed or + exhausted. + +- bpo-39453: Fixed a possible crash in :meth:`list.__contains__` when a list + is changed during comparing items. Patch by Dong-hee Na. + +- bpo-39219: Syntax errors raised in the tokenizer now always set correct + "text" and "offset" attributes. + +Library +------- + +- bpo-27657: The original fix for bpo-27657, "Fix urlparse() with numeric + paths" (GH-16839) included in 3.8.1, inadvertently introduced a behavior + change that broke several third-party packages relying on the original + undefined parsing behavior. The change is reverted in 3.8.2, restoring the + behavior of 3.8.0 and earlier releases. + +- bpo-39474: Fixed starting position of AST for expressions like ``(a)(b)``, + ``(a)[b]`` and ``(a).b``. + +- bpo-21016: The :mod:`pydoc` and :mod:`trace` modules now use the + :mod:`sysconfig` module to get the path to the Python standard library, to + support uncommon installation path like ``/usr/lib64/python3.9/`` on + Fedora. Patch by Jan Matějek. + +- bpo-39595: Improved performance of zipfile.Path for files with a large + number of entries. Also improved performance and fixed minor issue as + published with `importlib_metadata 1.5 + <https://importlib-metadata.readthedocs.io/en/latest/changelog%20(links).html#v1-5-0>`_. + +IDLE +---- + +- bpo-39600: In the font configuration window, remove duplicated font names. + + +What's New in Python 3.8.2 release candidate 1? +=============================================== + +*Release date: 2020-02-10* + +Security +-------- + +- bpo-39401: Avoid unsafe load of ``api-ms-win-core-path-l1-1-0.dll`` at + startup on Windows 7. + +- bpo-39184: Add audit events to command execution functions in os and pty + modules. + +Core and Builtins +----------------- + +- bpo-39579: Change the ending column offset of `Attribute` nodes + constructed in `ast_for_dotted_name` to point at the end of the current + node and not at the end of the last `NAME` node. + +- bpo-39510: Fix segfault in ``readinto()`` method on closed BufferedReader. + +- bpo-39492: Fix a reference cycle in the C Pickler that was preventing the + garbage collection of deleted, pickled objects. + +- bpo-39421: Fix possible crashes when operating with the functions in the + :mod:`heapq` module and custom comparison operators. + +- bpo-39386: Prevent double awaiting of async iterator. + +- bpo-39235: Fix AST end location for lone generator expression in function + call, e.g. f(i for i in a). + +- bpo-39209: Correctly handle multi-line tokens in interactive mode. Patch + by Pablo Galindo. + +- bpo-39216: Fix constant folding optimization for positional only arguments + - by Anthony Sottile. + +- bpo-39215: Fix ``SystemError`` when nested function has annotation on + positional-only argument - by Anthony Sottile. + +- bpo-38588: Fix possible crashes in dict and list when calling + :c:func:`PyObject_RichCompareBool`. + +- bpo-38610: Fix possible crashes in several list methods by holding strong + references to list elements when calling + :c:func:`PyObject_RichCompareBool`. + +Library +------- + +- bpo-39590: Collections.deque now holds strong references during + deque.__contains__ and deque.count, fixing crashes. + +- bpo-38149: :func:`sys.audit` is now called only once per call of + :func:`glob.glob` and :func:`glob.iglob`. + +- bpo-39450: Striped whitespace from docstring before returning it from + :func:`unittest.case.shortDescription`. + +- bpo-39493: Mark ``typing.IO.closed`` as a property + +- bpo-39485: Fix a bug in :func:`unittest.mock.create_autospec` that would + complain about the wrong number of arguments for custom descriptors + defined in an extension module returning functions. + +- bpo-39082: Allow AsyncMock to correctly patch static/class methods + +- bpo-39430: Fixed race condition in lazy imports in :mod:`tarfile`. + +- bpo-39390: Fixed a regression with the `ignore` callback of + :func:`shutil.copytree`. The argument types are now str and List[str] + again. + +- bpo-39389: Write accurate compression level metadata in :mod:`gzip` + archives, rather than always signaling maximum compression. + +- bpo-39274: ``bool(fraction.Fraction)`` now returns a boolean even if + (numerator != 0) does not return a boolean (ex: numpy number). + +- bpo-39297: Improved performance of importlib.metadata distribution + discovery and resilients to inaccessible sys.path entries + (importlib_metadata v1.4.0). + +- bpo-39242: Updated the Gmane domain from news.gmane.org to news.gmane.io + which is used for examples of :class:`~nntplib.NNTP` news reader server + and nntplib tests. + +- bpo-38907: In http.server script, restore binding to IPv4 on Windows. + +- bpo-39152: Fix ttk.Scale.configure([name]) to return configuration tuple + for name or all options. Giovanni Lombardo contributed part of the patch. + +- bpo-39198: If an exception were to be thrown in `Logger.isEnabledFor` + (say, by asyncio timeouts or stopit) , the `logging` global lock may not + be released appropriately, resulting in deadlock. This change wraps that + block of code with `try...finally` to ensure the lock is released. + +- bpo-39191: Perform a check for running loop before starting a new task in + ``loop.run_until_complete()`` to fail fast; it prevents the side effect of + new task spawning before exception raising. + +- bpo-38871: Correctly parenthesize filter-based statements that contain + lambda expressions in mod:`lib2to3`. Patch by Dong-hee Na. + +- bpo-39142: A change was made to logging.config.dictConfig to avoid + converting instances of named tuples to ConvertingTuple. It's assumed that + named tuples are too specialised to be treated like ordinary tuples; if a + user of named tuples requires ConvertingTuple functionality, they will + have to implement that themselves in their named tuple class. + +- bpo-39129: Fix import path for ``asyncio.TimeoutError`` + +- bpo-39057: :func:`urllib.request.proxy_bypass_environment` now ignores + leading dots and no longer ignores a trailing newline. + +- bpo-39056: Fixed handling invalid warning category in the -W option. No + longer import the re module if it is not needed. + +- bpo-39055: :func:`base64.b64decode` with ``validate=True`` raises now a + binascii.Error if the input ends with a single ``\n``. + +- bpo-39033: Fix :exc:`NameError` in :mod:`zipimport`. Patch by Karthikeyan + Singaravelan. + +- bpo-38878: Fixed __subclasshook__ of :class:`os.PathLike` to return a + correct result upon inheritence. Patch by Bar Harel. + +- bpo-35182: Fixed :func:`Popen.communicate` subsequent call crash when the + child process has already closed any piped standard stream, but still + continues to be running. Patch by Andriy Maletsky. + +- bpo-38473: Use signature from inner mock for autospecced methods attached + with :func:`unittest.mock.attach_mock`. Patch by Karthikeyan Singaravelan. + +- bpo-38293: Add :func:`copy.copy` and :func:`copy.deepcopy` support to + :func:`property` objects. + +Documentation +------------- + +- bpo-39153: Clarify refcounting semantics for the following functions: - + PyObject_SetItem - PyMapping_SetItemString - PyDict_SetItem - + PyDict_SetItemString + +- bpo-39392: Explain that when filling with turtle, overlap regions may be + left unfilled. + +- bpo-39381: Mention in docs that :func:`asyncio.get_event_loop` implicitly + creates new event loop only if called from the main thread. + +- bpo-38918: Add an entry for ``__module__`` in the "function" & "method" + sections of the `inspect docs types and members table + <https://docs.python.org/3/library/inspect.html#types-and-members>`_ + +- bpo-3530: In the :mod:`ast` module documentation, fix a misleading + ``NodeTransformer`` example and add advice on when to use the + ``fix_missing_locations`` function. + +Tests +----- + +- bpo-39502: Skip test_zipfile.test_add_file_after_2107() if + :func:`time.localtime` fails with :exc:`OverflowError`. It is the case on + AIX 6.1 for example. + +- bpo-38546: Fix test_ressources_gced_in_workers() of + test_concurrent_futures: explicitly stop the manager to prevent leaking a + child process running in the background after the test completes. + +Build +----- + +- bpo-39144: The ctags and etags build targets both include Modules/_ctypes + and Python standard library source files. + +Windows +------- + +- bpo-39439: Honor the Python path when a virtualenv is active on Windows. + +- bpo-39393: Improve the error message when attempting to load a DLL with + unresolved dependencies. + +- bpo-38883: :meth:`~pathlib.Path.home()` and + :meth:`~pathlib.Path.expanduser()` on Windows now prefer + :envvar:`USERPROFILE` and no longer use :envvar:`HOME`, which is not + normally set for regular user accounts. This makes them again behave like + :func:`os.path.expanduser`, which was changed to ignore :envvar:`HOME` in + 3.8, see :issue:`36264`. + +- bpo-39185: The build.bat script has additional options for very-quiet + output (-q) and very-verbose output (-vv) + +IDLE +---- + +- bpo-30780: Add remaining configdialog tests for buttons and highlights and + keys tabs. + +- bpo-39388: IDLE Settings Cancel button now cancels pending changes + +- bpo-39050: Make IDLE Settings dialog Help button work again. + +- bpo-34118: Tag memoryview, range, and tuple as classes, the same as list, + etcetera, in the library manual built-in functions list. + +- bpo-38792: Close an IDLE shell calltip if a :exc:`KeyboardInterrupt` or + shell restart occurs. Patch by Zackery Spytz. + +- bpo-32989: Add tests for editor newline_and_indent_event method. Remove + dead code from pyparse find_good_parse_start method. + + +What's New in Python 3.8.1 final? +================================= + +*Release date: 2019-12-18* + +Core and Builtins +----------------- + +- bpo-39080: Fix the value of *end_col_offset* for Starred Expression AST + nodes when they are among the elements in the *args* attribute of Call AST + nodes. + +- bpo-39031: When parsing an "elif" node, lineno and col_offset of the node + now point to the "elif" keyword and not to its condition, making it + consistent with the "if" node. Patch by Lysandros Nikolaou. + +- bpo-39008: :c:func:`PySys_Audit` now requires ``Py_ssize_t`` to be used + for size arguments in the format string, regardless of whether + ``PY_SSIZE_T_CLEAN`` was defined at include time. + +Library +------- + +- bpo-39022: Update importlib.metadata to include improvements from + importlib_metadata 1.3 including better serialization of EntryPoints and + improved documentation for custom finders. + +- bpo-38811: Fix an unhandled exception in :mod:`pathlib` when + :meth:`os.link` is missing. Patch by Toke Høiland-Jørgensen. + +- bpo-36406: Handle namespace packages in :mod:`doctest`. Patch by + Karthikeyan Singaravelan. + +Tests +----- + +- bpo-38546: Multiprocessing and concurrent.futures tests now stop the + resource tracker process when tests complete. + +Windows +------- + +- bpo-39007: Add auditing events to functions in :mod:`winreg`. + +macOS +----- + +- bpo-38295: Prevent failure of test_relative_path in test_py_compile on + macOS Catalina. + +IDLE +---- + +- bpo-38944: Escape key now closes IDLE completion windows. Patch by Johnny + Najera. + +- bpo-38943: Fix IDLE autocomplete windows not always appearing on some + systems. Patch by Johnny Najera. + + +What's New in Python 3.8.1 release candidate 1? +=============================================== + +*Release date: 2019-12-09* + +Security +-------- + +- bpo-38945: Newline characters have been escaped when performing uu + encoding to prevent them from overflowing into to content section of the + encoded file. This prevents malicious or accidental modification of data + during the decoding process. + +- bpo-37228: Due to significant security concerns, the *reuse_address* + parameter of :meth:`asyncio.loop.create_datagram_endpoint` is no longer + supported. This is because of the behavior of ``SO_REUSEADDR`` in UDP. For + more details, see the documentation for + ``loop.create_datagram_endpoint()``. (Contributed by Kyle Stanley, Antoine + Pitrou, and Yury Selivanov in :issue:`37228`.) + +- bpo-38722: :mod:`runpy` now uses :meth:`io.open_code` to open code files. + Patch by Jason Killen. + +- bpo-38804: Fixes a ReDoS vulnerability in :mod:`http.cookiejar`. Patch by + Ben Caller. + +- bpo-38622: Add additional audit events for the :mod:`ctypes` module. + +- bpo-38418: Fixes audit event for :func:`os.system` to be named + ``os.system``. + +Core and Builtins +----------------- + +- bpo-38673: In REPL mode, don't switch to PS2 if the line starts with + comment or whitespace. Based on work by Batuhan Taşkaya. + +- bpo-38922: Calling ``replace`` on a code object now raises the + ``code.__new__`` audit event. + +- bpo-38920: Add audit hooks for when :func:`sys.excepthook` and + :func:`sys.unraisablehook` are invoked + +- bpo-38892: Improve documentation for audit events table and functions. + +- bpo-38707: ``MainThread.native_id`` is now correctly reset in child + processes spawned using :class:`multiprocessing.Process`, instead of + retaining the parent's value. + +- bpo-38640: Fixed a bug in the compiler that was causing to raise in the + presence of break statements and continue statements inside always false + while loops. Patch by Pablo Galindo. + +- bpo-38535: Fixed line numbers and column offsets for AST nodes for calls + without arguments in decorators. + +- bpo-38525: Fix a segmentation fault when using reverse iterators of empty + ``dict`` objects. Patch by Dong-hee Na and Inada Naoki. + +- bpo-35409: Ignore GeneratorExit exceptions when throwing an exception into + the aclose coroutine of an asynchronous generator. + +Library +------- + +- bpo-39006: Fix asyncio when the ssl module is missing: only check for + ssl.SSLSocket instance if the ssl module is available. + +- bpo-38708: Fix a potential IndexError in email parser when parsing an + empty msg-id. + +- bpo-38698: Add a new ``InvalidMessageID`` token to email parser to + represent invalid Message-ID headers. Also, add defects when there is + remaining value after parsing the header. + +- bpo-38979: Return class from ``ContextVar.__class_getitem__`` to simplify + subclassing. + +- bpo-38986: Make repr of C accelerated TaskWakeupMethWrapper the same as of + pure Python version. + +- bpo-38529: Drop too noisy asyncio warning about deletion of a stream + without explicit ``.close()`` call. + +- bpo-38634: The :mod:`readline` module now detects if Python is linked to + libedit at runtime on all platforms. Previously, the check was only done + on macOS. + +- bpo-33684: Fix ``json.tool`` failed to read a JSON file with non-ASCII + characters when locale encoding is not UTF-8. + +- bpo-38698: Prevent UnboundLocalError to pop up in parse_message_id + + parse_message_id() was improperly using a token defined inside an + exception handler, which was raising `UnboundLocalError` on parsing an + invalid value. Patch by Claudiu Popa. + +- bpo-26730: Fix ``SpooledTemporaryFile.rollover()`` might corrupt the file + when it is in text mode. Patch by Serhiy Storchaka. + +- bpo-38668: Calling func:`shutil.copytree` to copy a directory tree from + one directory to another subdirectory resulted in an endless loop and a + RecursionError. A fix was added to consume an iterator and create the list + of the entries to be copied, avoiding the recursion for newly created + directories. Patch by Bruno P. Kinoshita. + +- bpo-37838: :meth:`typing.get_type_hints` properly handles functions + decorated with :meth:`functools.wraps`. + +- bpo-38859: AsyncMock now returns StopAsyncIteration on the exaustion of a + side_effects iterable. Since PEP-479 its Impossible to raise a + StopIteration exception from a coroutine. + +- bpo-38857: AsyncMock fix for return values that are awaitable types. This + also covers side_effect iterable values that happend to be awaitable, and + wraps callables that return an awaitable type. Before these awaitables + were being awaited instead of being returned as is. + +- bpo-38821: Fix unhandled exceptions in :mod:`argparse` when + internationalizing error messages for arguments with ``nargs`` set to + special (non-integer) values. Patch by Federico Bond. + +- bpo-38820: Make Python compatible with OpenSSL 3.0.0. + :func:`ssl.SSLSocket.getpeercert` no longer returns IPv6 addresses with a + trailing new line. + +- bpo-38807: Update :exc:`TypeError` messages for :meth:`os.path.join` to + include :class:`os.PathLike` objects as acceptable input types. + +- bpo-38785: Prevent asyncio from crashing if parent ``__init__`` is not + called from a constructor of object derived from ``asyncio.Future``. + +- bpo-38723: :mod:`pdb` now uses :meth:`io.open_code` to trigger auditing + events. + +- bpo-27805: Allow opening pipes and other non-seekable files in append mode + with :func:`open`. + +- bpo-38686: Added support for multiple ``qop`` values in + :class:`urllib.request.AbstractDigestAuthHandler`. + +- bpo-38334: Fixed seeking backward on an encrypted + :class:`zipfile.ZipExtFile`. + +- bpo-34679: asynci.ProactorEventLoop.close() now only calls + signal.set_wakeup_fd() in the main thread. + +- bpo-31202: The case the result of :func:`pathlib.WindowsPath.glob` matches + now the case of the pattern for literal parts. + +- bpo-38521: Fixed erroneous equality comparison in statistics.NormalDist(). + +- bpo-38478: Fixed a bug in :meth:`inspect.signature.bind` that was causing + it to fail when handling a keyword argument with same name as + positional-only parameter. Patch by Pablo Galindo. + +- bpo-33604: Fixed `hmac.new` and `hmac.HMAC` to raise TypeError instead of + ValueError when the digestmod parameter, now required in 3.8, is omitted. + Also clarified the hmac module documentation and docstrings. + +- bpo-38422: Clarify docstrings of pathlib suffix(es) + +- bpo-36993: Improve error reporting for corrupt zip files with bad zip64 + extra data. Patch by Daniel Hillier. + +- bpo-36820: Break cycle generated when saving an exception in socket.py, + codeop.py and dyld.py as they keep alive not only the exception but user + objects through the ``__traceback__`` attribute. Patch by Mario Corchero. + +- bpo-34776: Fix dataclasses to support forward references in type + annotations + +- bpo-33348: lib2to3 now recognizes expressions after ``*`` and `**` like in + ``f(*[] or [])``. + +- bpo-27657: Fix urllib.parse.urlparse() with numeric paths. A string like + "path:80" is no longer parsed as a path but as a scheme ("path") and a + path ("80"). + +Documentation +------------- + +- bpo-38816: Provides more details about the interaction between + :c:func:`fork` and CPython's runtime, focusing just on the C-API. This + includes cautions about where :c:func:`fork` should and shouldn't be + called. + +- bpo-38351: Modernize :mod:`email` examples from %-formatting to f-strings. + +- bpo-38778: Document the fact that :exc:`RuntimeError` is raised if + :meth:`os.fork` is called in a subinterpreter. + +- bpo-38592: Add Brazilian Portuguese to the language switcher at Python + Documentation website. + +Tests +----- + +- bpo-38547: Fix test_pty: if the process is the session leader, closing the + master file descriptor raises a SIGHUP signal: simply ignore SIGHUP when + running the tests. + +- bpo-38992: Fix a test for :func:`math.fsum` that was failing due to + constant folding. + +- bpo-38965: Fix test_faulthandler on GCC 10. Use the "volatile" keyword in + ``faulthandler._stack_overflow()`` to prevent tail call optimization on + any compiler, rather than relying on compiler specific pragma. + +- bpo-38875: test_capi: trashcan tests now require the test "cpu" resource. + +- bpo-38841: Skip asyncio test_create_datagram_endpoint_existing_sock_unix + on platforms lacking a functional bind() for named unix domain sockets. + +- bpo-38669: Raise :exc:`TypeError` when passing target as a string with + :meth:`unittest.mock.patch.object`. + +- bpo-35998: Fix a race condition in test_asyncio.test_start_tls_server_1(). + Previously, there was a race condition between the test main() function + which replaces the protocol and the test ServerProto protocol which sends + ANSWER once it gets HELLO. Now, only the test main() function is + responsible to send data, ServerProto no longer sends data. + +Build +----- + +- bpo-37404: :mod:`asyncio` now raises :exc:`TyperError` when calling + incompatible methods with an :class:`ssl.SSLSocket` socket. Patch by Ido + Michael. + +- bpo-38809: On Windows, build scripts will now recognize and use python.exe + from an active virtual env. + +- bpo-38684: Fix _hashlib build when Blake2 is disabled, but OpenSSL + supports it. + +- bpo-37415: Fix stdatomic.h header check for ICC compiler: the ICC + implementation lacks atomic_uintptr_t type which is needed by Python. + +Windows +------- + +- bpo-33125: Add support for building and releasing Windows ARM64 packages. + +- bpo-38589: Fixes HTML Help shortcut when Windows is not installed to C + drive + +- bpo-38453: Ensure ntpath.realpath() correctly resolves relative paths. + +- bpo-38519: Restores the internal C headers that were missing from the + nuget.org and Microsoft Store packages. + +- bpo-38492: Remove ``pythonw.exe`` dependency on the Microsoft C++ runtime. + +macOS +----- + +- bpo-37931: Fixed a crash on OSX dynamic builds that occurred when + re-initializing the posix module after a Py_Finalize if the environment + had changed since the previous `import posix`. Patch by Benoît Hudson. + +IDLE +---- + +- bpo-38862: 'Strip Trailing Whitespace' on the Format menu removes extra + newlines at the end of non-shell files. + +- bpo-26353: Stop adding newline when saving an IDLE shell window. + +- bpo-38636: Fix IDLE Format menu tab toggle and file indent width. These + functions (default shortcuts Alt-T and Alt-U) were mistakenly disabled in + 3.7.5 and 3.8.0. + +- bpo-4630: Add an option to toggle IDLE's cursor blink for shell, editor, + and output windows. See Settings, General, Window Preferences, Cursor + Blink. Patch by Zachary Spytz. + +- bpo-38598: Do not try to compile IDLE shell or output windows + +C API +----- + +- bpo-37633: Re-export some function compatibility wrappers for macros in + ``pythonrun.h``. + +- bpo-38540: Fixed possible leak in :c:func:`PyArg_Parse` and similar + functions for format units ``"es#"`` and ``"et#"`` when the macro + :c:macro:`PY_SSIZE_T_CLEAN` is not defined. + +- bpo-36389: The ``_PyObject_CheckConsistency()`` function is now also + available in release mode. For example, it can be used to debug a crash in + the ``visit_decref()`` function of the GC. + + +What's New in Python 3.8.0 final? +================================= + +*Release date: 2019-10-14* + +Core and Builtins +----------------- + +- bpo-38469: Fixed a bug where the scope of named expressions was not being + resolved correctly in the presence of the *global* keyword. Patch by Pablo + Galindo. + +- bpo-38379: When cyclic garbage collection (gc) runs finalizers that + resurrect unreachable objects, the current gc run ends, without collecting + any cyclic trash. However, the statistics reported by ``collect()`` and + ``get_stats()`` claimed that all cyclic trash found was collected, and + that the resurrected objects were collected. Changed the stats to report + that none were collected. + +Library +------- + +- bpo-38449: Revert GH-15522, which introduces a regression in + :meth:`mimetypes.guess_type` due to improper handling of filenames as + urls. + +- bpo-38431: Fix ``__repr__`` method for :class:`dataclasses.InitVar` to + support typing objects, patch by Samuel Colvin. + +- bpo-38109: Add missing :data:`stat.S_IFDOOR`, :data:`stat.S_IFPORT`, + :data:`stat.S_IFWHT`, :func:`stat.S_ISDOOR`, :func:`stat.S_ISPORT`, and + :func:`stat.S_ISWHT` values to the Python implementation of :mod:`stat`. + +- bpo-38405: Nested subclasses of :class:`typing.NamedTuple` are now + pickleable. + +- bpo-38332: Prevent :exc:`KeyError` thrown by :func:`_encoded_words.decode` + when given an encoded-word with invalid content-type encoding from + propagating all the way to :func:`email.message.get`. + +- bpo-38341: Add :exc:`smtplib.SMTPNotSupportedError` to the :mod:`smtplib` + exported names. + +- bpo-13153: OS native encoding is now used for converting between Python + strings and Tcl objects. This allows to display, copy and paste to + clipboard emoji and other non-BMP characters. Converting strings from Tcl + to Python and back now never fails (except MemoryError). + +Documentation +------------- + +- bpo-38294: Add list of no-longer-escaped chars to re.escape documentation. + +Tests +----- + +- bpo-37531: On timeout, regrtest no longer attempts to call + ``popen.communicate()`` again: it can hang until all child processes using + stdout and stderr pipes completes. Kill the worker process and ignores its + output. Change also the faulthandler timeout of the main process from 1 + minute to 5 minutes, for Python slowest buildbots. + +Windows +------- + +- bpo-38344: Fix error message in activate.bat. + +- bpo-38359: Ensures ``pyw.exe`` launcher reads correct registry key. + +- bpo-38355: Fixes ``ntpath.realpath`` failing on ``sys.executable``. + +IDLE +---- + +- bpo-36698: IDLE no longer fails when write non-encodable characters to + stderr. It now escapes them with a backslash, as the regular Python + interpreter. Added the ``errors`` field to the standard streams. + +Tools/Demos +----------- + +- bpo-38118: Update Valgrind suppression file to ignore a false alarm in + :c:func:`PyUnicode_Decode` when using GCC builtin strcmp(). + +- bpo-38347: pathfix.py: Assume all files that end on '.py' are Python + scripts when working recursively. + +C API +----- + +- bpo-38395: Fix a crash in :class:`weakref.proxy` objects due to incorrect + lifetime management when calling some associated methods that may delete + the last reference to object being referenced by the proxy. Patch by Pablo + Galindo. + + +What's New in Python 3.8.0 release candidate 1? +=============================================== + +*Release date: 2019-10-01* + +Security +-------- + +- bpo-38243: Escape the server title of + :class:`xmlrpc.server.DocXMLRPCServer` when rendering the document page as + HTML. (Contributed by Dong-hee Na in :issue:`38243`.) + +- bpo-38174: Update vendorized expat library version to 2.2.8, which + resolves CVE-2019-15903. + +- bpo-37764: Fixes email._header_value_parser.get_unstructured going into an + infinite loop for a specific case in which the email header does not have + trailing whitespace, and the case in which it contains an invalid encoded + word. Patch by Ashwin Ramaswami. + +Core and Builtins +----------------- + +- bpo-38006: Fix a bug due to the interaction of weakrefs and the cyclic + garbage collector. We must clear any weakrefs in garbage in order to + prevent their callbacks from executing and causing a crash. + +- bpo-38317: Fix warnings options priority: ``PyConfig.warnoptions`` has the + highest priority, as stated in the :pep:`587`. + +- bpo-36871: Improve error handling for the assert_has_calls and + assert_has_awaits methods of mocks. Fixed a bug where any errors + encountered while binding the expected calls to the mock's spec were + silently swallowed, leading to misleading error output. + +- bpo-38236: Python now dumps path configuration if it fails to import the + Python codecs of the filesystem and stdio encodings. + +- bpo-38013: Allow to call ``async_generator_athrow().throw(...)`` even for + non-started async generator helper. It fixes annoying warning at the end + of :func:`asyncio.run` call. + +- bpo-38124: Fix an off-by-one error in PyState_AddModule that could cause + out-of-bounds memory access. + +- bpo-38005: Fixed comparing and creating of InterpreterID and ChannelID. + +- bpo-37994: Fixed silencing arbitrary errors if an attribute lookup fails + in several sites. Only AttributeError should be silenced. + +- bpo-37990: Fix elapsed time in gc stats was not printed correctly. This + bug was a regression in 3.8b4. + +- bpo-37966: The implementation of :func:`~unicodedata.is_normalized` has + been greatly sped up on strings that aren't normalized, by implementing + the full normalization-quick-check algorithm from the Unicode standard. + +- bpo-20490: Improve import error message for partially initialized module + on circular ``from`` imports - by Anthony Sottile. + +- bpo-37409: Ensure explicit relative imports from interactive sessions and + scripts (having no parent package) always raise ImportError, rather than + treating the current module as the package. Patch by Ben Lewis. + +- bpo-37619: When adding a wrapper descriptor from one class to a different + class (for example, setting ``__add__ = str.__add__`` on an ``int`` + subclass), an exception is correctly raised when the operator is called. + +- bpo-30773: Prohibit parallel running of aclose() / asend() / athrow(). Fix + ag_running to reflect the actual running status of the AG. + +Library +------- + +- bpo-38319: sendfile() used in socket and shutil modules was raising + OverflowError for files >= 2GiB on 32-bit architectures. (patch by + Giampaolo Rodola) + +- bpo-38242: Revert the new asyncio Streams API + +- bpo-38019: Correctly handle pause/resume reading of closed asyncio unix + pipe. + +- bpo-38163: Child mocks will now detect their type as either synchronous or + asynchronous, asynchronous child mocks will be AsyncMocks and synchronous + child mocks will be either MagicMock or Mock (depending on their parent + type). + +- bpo-38161: Removes _AwaitEvent from AsyncMock. + +- bpo-38216: Allow the rare code that wants to send invalid http requests + from the `http.client` library a way to do so. The fixes for bpo-30458 + led to breakage for some projects that were relying on this ability to + test their own behavior in the face of bad requests. + +- bpo-38108: Any synchronous magic methods on an AsyncMock now return a + MagicMock. Any asynchronous magic methods on a MagicMock now return an + AsyncMock. + +- bpo-38248: asyncio: Fix inconsistent immediate Task cancellation + +- bpo-38237: The arguments for the builtin pow function are more + descriptive. They can now also be passed in as keywords. + +- bpo-38191: Constructors of :class:`~typing.NamedTuple` and + :class:`~typing.TypedDict` types now accept arbitrary keyword argument + names, including "cls", "self", "typename", "_typename", "fields" and + "_fields". Passing positional arguments by keyword is deprecated. + +- bpo-38185: Fixed case-insensitive string comparison in + :class:`sqlite3.Row` indexing. + +- bpo-38136: Changes AsyncMock call count and await count to be two + different counters. Now await count only counts when a coroutine has been + awaited, not when it has been called, and vice-versa. Update the + documentation around this. + +- bpo-37828: Fix default mock name in + :meth:`unittest.mock.Mock.assert_called` exceptions. Patch by Abraham + Toriz Cruz. + +- bpo-38175: Fix a memory leak in comparison of :class:`sqlite3.Row` + objects. + +- bpo-33936: _hashlib no longer calls obsolete OpenSSL initialization + function with OpenSSL 1.1.0+. + +- bpo-34706: Preserve subclassing in inspect.Signature.from_callable. + +- bpo-38153: Names of hashing algorithms frome OpenSSL are now normalized to + follow Python's naming conventions. For example OpenSSL uses sha3-512 + instead of sha3_512 or blake2b512 instead of blake2b. + +- bpo-38115: Fix a bug in dis.findlinestarts() where it would return invalid + bytecode offsets. Document that a code object's co_lnotab can contain + invalid bytecode offsets. + +- bpo-38148: Add slots to :mod:`asyncio` transport classes, which can reduce + memory usage. + +- bpo-36991: Fixes a potential incorrect AttributeError exception escaping + ZipFile.extract() in some unsupported input error situations. + +- bpo-38134: Remove obsolete copy of PBKDF2_HMAC_fast. All supported OpenSSL + versions contain a fast implementation. + +- bpo-38132: The OpenSSL hashlib wrapper uses a simpler implementation. + Several Macros and pointless caches are gone. The hash name now comes from + OpenSSL's EVP. The algorithm name stays the same, except it is now always + lower case. + +- bpo-38008: Fix parent class check in protocols to correctly identify the + module that provides a builtin protocol, instead of assuming they all come + from the :mod:`collections.abc` module + +- bpo-37405: Fixed regression bug for socket.getsockname() for non-CAN_ISOTP + AF_CAN address family sockets by returning a 1-tuple instead of string. + +- bpo-38121: Update parameter names on functions in importlib.metadata + matching the changes in the 0.22 release of importlib_metadata. + +- bpo-38110: The os.closewalk() implementation now uses the libc fdwalk() + API on platforms where it is available. + +- bpo-38093: Fixes AsyncMock so it doesn't crash when used with + AsyncContextManagers or AsyncIterators. + +- bpo-37488: Add warning to :meth:`datetime.utctimetuple`, + :meth:`datetime.utcnow` and :meth:`datetime.utcfromtimestamp` . + +- bpo-38086: Update importlib.metadata with changes from `importlib_metadata + 0.21 + <https://gitlab.com/python-devs/importlib_metadata/blob/0.21/importlib_metadata/docs/changelog.rst>`_. + +- bpo-37251: Remove `__code__` check in AsyncMock that incorrectly evaluated + function specs as async objects but failed to evaluate classes with + `__await__` but no `__code__` attribute defined as async objects. + +- bpo-38037: Fix reference counters in the :mod:`signal` module. + +- bpo-38066: Hide internal asyncio.Stream methods: feed_eof(), feed_data(), + set_exception() and set_transport(). + +- bpo-38059: inspect.py now uses sys.exit() instead of exit() + +- bpo-37953: In :mod:`typing`, improved the ``__hash__`` and ``__eq__`` + methods for :class:`ForwardReferences`. + +- bpo-38026: Fixed :func:`inspect.getattr_static` used ``isinstance`` while + it should avoid dynamic lookup. + +- bpo-38010: In ``importlib.metadata`` sync with ``importlib_metadata`` + 0.20, clarifying behavior of ``files()`` and fixing issue where only one + requirement was returned for ``requires()`` on ``dist-info`` packages. + +- bpo-38006: weakref.WeakValueDictionary defines a local remove() function + used as callback for weak references. This function was created with a + closure. Modify the implementation to avoid the closure. + +- bpo-34410: Fixed a crash in the :func:`tee` iterator when re-enter it. + RuntimeError is now raised in this case. + +- bpo-37140: Fix a ctypes regression of Python 3.8. When a ctypes.Structure + is passed by copy to a function, ctypes internals created a temporary + object which had the side effect of calling the structure finalizer + (__del__) twice. The Python semantics requires a finalizer to be called + exactly once. Fix ctypes internals to no longer call the finalizer twice. + +- bpo-37972: Subscripts to the `unittest.mock.call` objects now receive the + same chaining mechanism as any other custom attributes, so that the + following usage no longer raises a `TypeError`: + + call().foo().__getitem__('bar') + + Patch by blhsing + +- bpo-22347: Update mimetypes.guess_type to allow proper parsing of URLs + with only a host name. Patch by Dong-hee Na. + +- bpo-37885: venv: Don't generate unset variable warning on deactivate. + +- bpo-37785: Fix xgettext warnings in :mod:`argparse`. + +- bpo-11953: Completing WSA* error codes in :mod:`socket`. + +- bpo-37424: Fixes a possible hang when using a timeout on + `subprocess.run()` while capturing output. If the child process spawned + its own children or otherwise connected its stdout or stderr handles with + another process, we could hang after the timeout was reached and our child + was killed when attempting to read final output from the pipes. + +- bpo-37212: :func:`unittest.mock.call` now preserves the order of keyword + arguments in repr output. Patch by Karthikeyan Singaravelan. + +- bpo-37305: Add .webmanifest -> application/manifest+json to list of + recognized file types and content type headers + +- bpo-21872: Fix :mod:`lzma`: module decompresses data incompletely. When + decompressing a FORMAT_ALONE format file, and it doesn't have the end + marker, sometimes the last one to dozens bytes can't be output. Patch by + Ma Lin. + +- bpo-37206: Default values which cannot be represented as Python objects no + longer improperly represented as ``None`` in function signatures. + +- bpo-12144: Ensure cookies with ``expires`` attribute are handled in + :meth:`CookieJar.make_cookies`. + +- bpo-31163: pathlib.Path instance's rename and replace methods now return + the new Path instance. + +- bpo-25068: :class:`urllib.request.ProxyHandler` now lowercases the keys of + the passed dictionary. + +- bpo-21315: Email headers containing RFC2047 encoded words are parsed + despite the missing whitespace, and a defect registered. Also missing + trailing whitespace after encoded words is now registered as a defect. + +- bpo-36250: Ignore ``ValueError`` from ``signal`` with ``interaction`` in + non-main thread. + +- bpo-35168: :attr:`shlex.shlex.punctuation_chars` is now a read-only + property. + +- bpo-20504: Fixes a bug in :mod:`cgi` module when a multipart/form-data + request has no `Content-Length` header. + +- bpo-34519: Add additional aliases for HP Roman 8. Patch by Michael Osipov. + +Documentation +------------- + +- bpo-26868: Fix example usage of :c:func:`PyModule_AddObject` to properly + handle errors. + +- bpo-36797: Fix a dead link in the distutils API Reference. + +- bpo-37977: Warn more strongly and clearly about pickle insecurity + +- bpo-37937: Mention ``frame.f_trace`` in :func:`sys.settrace` docs. + +- bpo-36260: Add decompression pitfalls to zipfile module documentation. + +- bpo-36960: Restructured the :mod:`datetime` docs in the interest of making + them more user-friendly and improving readability. Patch by Brad Solomon. + +- bpo-23460: The documentation for decimal string formatting using the `:g` + specifier has been updated to reflect the correct exponential notation + cutoff point. Original patch contributed by Tuomas Suutari. + +- bpo-35803: Document and test that ``tempfile`` functions may accept a + :term:`path-like object` for the ``dir`` argument. Patch by Anthony + Sottile. + +- bpo-33944: Added a note about the intended use of code in .pth files. + +- bpo-34293: Fix the Doc/Makefile regarding PAPER environment variable and + PDF builds + +Tests +----- + +- bpo-38239: Fix test_gdb for Link Time Optimization (LTO) builds. + +- bpo-38275: test_ssl now handles disabled TLS/SSL versions better. + OpenSSL's crypto policy and run-time settings are recognized and tests for + disabled versions are skipped. Tests also accept more TLS minimum_versions + for platforms that override OpenSSL's default with strict settings. + +- bpo-38271: The private keys for test_ssl were encrypted with 3DES in + traditional PKCS#5 format. 3DES and the digest algorithm of PKCS#5 are + blocked by some strict crypto policies. Use PKCS#8 format with AES256 + encryption instead. + +- bpo-38270: test.support now has a helper function to check for + availibility of a hash digest function. Several tests are refactored avoid + MD5 and use SHA256 instead. Other tests are marked to use MD5 and skipped + when MD5 is disabled. + +- bpo-37123: Multiprocessing test test_mymanager() now also expects + -SIGTERM, not only exitcode 0. BaseManager._finalize_manager() sends + SIGTERM to the manager process if it takes longer than 1 second to stop, + which happens on slow buildbots. + +- bpo-38212: Multiprocessing tests: increase + test_queue_feeder_donot_stop_onexc() timeout from 1 to 60 seconds. + +- bpo-38117: Test with OpenSSL 1.1.1d + +- bpo-37531: Enhance regrtest multiprocess timeout: write a message when + killing a worker process, catch popen.kill() and popen.wait() exceptions, + put a timeout on the second call to popen.communicate(). + +- bpo-37876: Add tests for ROT-13 codec. + +- bpo-37252: Fix assertions in ``test_close`` and + ``test_events_mask_overflow`` devpoll tests. + +- bpo-34001: Make test_ssl pass with LibreSSL. LibreSSL handles minimum and + maximum TLS version differently than OpenSSL. + +- bpo-36919: Make ``test_source_encoding.test_issue2301`` implementation + independent. The test will work now for both CPython and IronPython. + +- bpo-34596: Fallback to a default reason when :func:`unittest.skip` is + uncalled. Patch by Naitree Zhu. + +Build +----- + +- bpo-38301: In Solaris family, we must be sure to use ``-D_REENTRANT``. + Patch by Jesús Cea Avión. + +- bpo-36210: Update optional extension module detection for AIX. ossaudiodev + and spwd are not applicable for AIX, and are no longer reported as + missing. 3rd-party packaging of ncurses (with ASIS support) conflicts with + officially supported AIX curses library, so configure AIX to use + libcurses.a. However, skip trying to build _curses_panel. + + patch by M Felt + +- bpo-36002: Locate ``llvm-profdata`` and ``llvm-ar`` binaries using + ``AC_PATH_TOOL`` rather than ``AC_PATH_TARGET_TOOL``. + +- bpo-37936: The :file:`.gitignore` file systematically keeps "rooted", with + a non-trailing slash, all the rules that are meant to apply to files in a + specific place in the repo. Previously, when the intended file to ignore + happened to be at the root of the repo, we'd most often accidentally also + ignore files and directories with the same name anywhere in the tree. + +- bpo-37936: The :file:`.gitignore` file no longer applies to any files that + are in fact tracked in the Git repository. Patch by Greg Price. + +Windows +------- + +- bpo-38117: Update bundled OpenSSL to 1.1.1d + +- bpo-38092: Reduce overhead when using multiprocessing in a Windows virtual + environment. + +- bpo-38133: Allow py.exe launcher to locate installations from the + Microsoft Store and improve display of active virtual environments. + +- bpo-38114: The ``pip.ini`` is no longer included in the Nuget package. + +- bpo-36634: :func:`os.cpu_count` now returns active processors rather than + maximum processors. + +- bpo-36634: venv activate.bat now works when the existing variables contain + double quote characters. + +- bpo-38081: Prevent error calling :func:`os.path.realpath` on ``'NUL'``. + +- bpo-38087: Fix case sensitivity in test_pathlib and test_ntpath. + +- bpo-38088: Fixes distutils not finding vcruntime140.dll with only the v142 + toolset installed. + +- bpo-37283: Ensure command-line and unattend.xml setting override + previously detected states in Windows installer. + +- bpo-38030: Fixes :func:`os.stat` failing for block devices on Windows + +- bpo-38020: Fixes potential crash when calling :func:`os.readlink` (or + indirectly through :func:`~os.path.realpath`) on a file that is not a + supported link. + +- bpo-37705: Improve the implementation of ``winerror_to_errno()``. + +- bpo-37702: Fix memory leak on Windows in creating an SSLContext object or + running urllib.request.urlopen('https://...'). + +- bpo-37445: Include the ``FORMAT_MESSAGE_IGNORE_INSERTS`` flag in + ``FormatMessageW()`` calls. + +- bpo-37380: Don't collect unfinished processes with ``subprocess._active`` + on Windows to cleanup later. Patch by Ruslan Kuprieiev. + +- bpo-32587: Make :data:`winreg.REG_MULTI_SZ` support zero-length strings. + +macOS +----- + +- bpo-38117: Updated OpenSSL to 1.1.1d in macOS installer. + +- bpo-38089: Move Azure Pipelines to latest VM versions and make macOS tests + optional + +IDLE +---- + +- bpo-35379: When exiting IDLE, catch any AttributeError. One happens when + EditorWindow.close is called twice. Printing a traceback, when IDLE is + run from a terminal, is useless and annoying. + +- bpo-38183: To avoid problems, test_idle ignores the user config directory. + It no longer tries to create or access .idlerc or any files within. Users + must run IDLE to discover problems with saving settings. + +- bpo-38077: IDLE no longer adds 'argv' to the user namespace when + initializing it. This bug only affected 3.7.4 and 3.8.0b2 to 3.8.0b4. + +- bpo-38041: Shell restart lines now fill the window width, always start + with '=', and avoid wrapping unnecessarily. The line will still wrap if + the included file name is long relative to the width. + +- bpo-35771: To avoid occasional spurious test_idle failures on slower + machines, increase the ``hover_delay`` in test_tooltip. + +- bpo-37902: Add mousewheel scrolling for IDLE module, path, and stack + browsers. Patch by George Zhang. + +Tools/Demos +----------- + +- bpo-37803: pdb's ``--help`` and ``--version`` long options now work. + +- bpo-37064: Add option -k to pathscript.py script: preserve shebang flags. + Add option -a to pathscript.py script: add flags. + +C API +----- + +- bpo-38234: :c:func:`Py_SetPath` now sets :data:`sys.executable` to the + program full path (:c:func:`Py_GetProgramFullPath`) rather than to the + program name (:c:func:`Py_GetProgramName`). + +- bpo-38234: Python ignored arguments passed to :c:func:`Py_SetPath`, + :c:func:`Py_SetPythonHome` and :c:func:`Py_SetProgramName`: fix Python + initialization to use specified arguments. + +- bpo-38205: The :c:func:`Py_UNREACHABLE` macro now calls + :c:func:`Py_FatalError`. + +- bpo-37879: Fix subtype_dealloc to suppress the type decref when the base + type is a C heap type + + +What's New in Python 3.8.0 beta 4? +================================== + +*Release date: 2019-08-29* + +Security +-------- + +- bpo-34155: Fix parsing of invalid email addresses with more than one ``@`` + (e.g. a@b@c.com.) to not return the part before 2nd ``@`` as valid email + address. Patch by maxking & jpic. + +Core and Builtins +----------------- + +- bpo-37947: Adjust correctly the recursion level in the symtable generation + for named expressions. Patch by Pablo Galindo. + +- bpo-37830: Fixed compilation of :keyword:`break` and :keyword:`continue` + in the :keyword:`finally` block when the corresponding :keyword:`try` + block contains :keyword:`return` with a non-constant value. + +- bpo-32912: Reverted :issue:`32912`: emitting :exc:`SyntaxWarning` instead + of :exc:`DeprecationWarning` for invalid escape sequences in string and + bytes literals. + +- bpo-37757: :pep:`572`: As described in the PEP, assignment expressions now + raise :exc:`SyntaxError` when their interaction with comprehension scoping + results in an ambiguous target scope. + + The ``TargetScopeError`` subclass originally proposed by the PEP has been + removed in favour of just raising regular syntax errors for the disallowed + cases. + +- bpo-36311: Decoding bytes objects larger than 2GiB is faster and no longer + fails when a multibyte characters spans a chunk boundary. + +- bpo-37433: Fix ``SyntaxError`` indicator printing too many spaces for + multi-line strings - by Anthony Sottile. + +- bpo-20523: ``pdb.Pdb`` supports ~/.pdbrc in Windows 7. Patch by Tim Hopper + and Dan Lidral-Porter. + +Library +------- + +- bpo-37834: Prevent shutil.rmtree exception when built on non-Windows + system without fd system call support, like older versions of macOS. + +- bpo-37965: Fix C compiler warning caused by + distutils.ccompiler.CCompiler.has_function. + +- bpo-37960: ``repr()`` of buffered and text streams now silences only + expected exceptions when get the value of "name" and "mode" attributes. + +- bpo-37951: Most features of the subprocess module now work again in + subinterpreters. Only *preexec_fn* is restricted in subinterpreters. + +- bpo-36205: Fix the rusage implementation of time.process_time() to + correctly report the sum of the system and user CPU time. + +- bpo-37950: Fix :func:`ast.dump` when call with incompletely initialized + node. + +- bpo-34679: Restores instantiation of Windows IOCP event loops from the + non-main thread. + +- bpo-36917: Add default implementation of the + :meth:`ast.NodeVisitor.visit_Constant` method which emits a deprecation + warning and calls corresponding methody ``visit_Num()``, ``visit_Str()``, + etc. + +- bpo-37798: Update test_statistics.py to verify that the statistics module + works well for both C and Python implementations. Patch by Dong-hee Na + +- bpo-26589: Added a new status code to the http module: 451 + UNAVAILABLE_FOR_LEGAL_REASONS + +- bpo-37915: Fix a segmentation fault that appeared when comparing instances + of ``datetime.timezone`` and ``datetime.tzinfo`` objects. Patch by Pablo + Galindo. + +- bpo-37868: Fix dataclasses.is_dataclass when given an instance that never + raises AttributeError in __getattr__. That is, an object that returns + something for __dataclass_fields__ even if it's not a dataclass. + +- bpo-37811: Fix ``socket`` module's ``socket.connect(address)`` function + being unable to establish connection in case of interrupted system call. + The problem was observed on all OSes which ``poll(2)`` system call can + take only non-negative integers and -1 as a timeout value. + +- bpo-21131: Fix ``faulthandler.register(chain=True)`` stack. faulthandler + now allocates a dedicated stack of ``SIGSTKSZ*2`` bytes, instead of just + ``SIGSTKSZ`` bytes. Calling the previous signal handler in faulthandler + signal handler uses more than ``SIGSTKSZ`` bytes of stack memory on some + platforms. + +- bpo-37798: Add C fastpath for statistics.NormalDist.inv_cdf() Patch by + Dong-hee Na + +- bpo-37819: Add Fraction.as_integer_ratio() to match the corresponding + methods in bool, int, float, and decimal. + +- bpo-37810: Fix :mod:`difflib` ``?`` hint in diff output when dealing with + tabs. Patch by Anthony Sottile. + +- bpo-37772: In ``zipfile.Path``, when adding implicit dirs, ensure that + ancestral directories are added and that duplicates are excluded. + +- bpo-28292: Mark calendar.py helper functions as being private. The + follows PEP 8 guidance to maintain the style conventions in the module and + it addresses a known case of user confusion. + +- bpo-18049: Add definition of THREAD_STACK_SIZE for AIX in + Python/thread_pthread.h The default thread stacksize caused crashes with + the default recursion limit Patch by M Felt + +- bpo-37738: Fix the implementation of curses ``addch(str, color_pair)``: + pass the color pair to ``setcchar()``, instead of always passing 0 as the + color pair. + +- bpo-37723: Fix performance regression on regular expression parsing with + huge character sets. Patch by Yann Vaginay. + +- bpo-32178: Fix IndexError in :mod:`email` package when trying to parse + invalid address fields starting with ``:``. + +- bpo-37685: Fixed comparisons of :class:`datetime.timedelta` and + :class:`datetime.timezone`. + +- bpo-37695: Correct :func:`curses.unget_wch` error message. Patch by + Anthony Sottile. + +- bpo-37354: Make Activate.ps1 Powershell script static to allow for signing + it. + +- bpo-37664: Update wheels bundled with ensurepip (pip 19.2.3 and setuptools + 41.2.0) + +- bpo-37642: Allowed the pure Python implementation of + :class:`datetime.timezone` to represent sub-minute offsets close to + minimum and maximum boundaries, specifically in the ranges (23:59, 24:00) + and (-23:59, 24:00). Patch by Ngalim Siregar + +- bpo-16970: Adding a value error when an invalid value in passed to nargs + Patch by Robert Leenders + +- bpo-37587: Make json.loads faster for long strings. (Patch by Marco + Paolini) + +- bpo-18378: Recognize "UTF-8" as a valid value for LC_CTYPE in + locale._parse_localename. + +- bpo-37531: "python3 -m test -jN --timeout=TIMEOUT" now kills a worker + process if it runs longer than *TIMEOUT* seconds. + +- bpo-37482: Fix serialization of display name in originator or destination + address fields with both encoded words and special chars. + +- bpo-37372: Fix error unpickling datetime.time objects from Python 2 with + seconds>=24. Patch by Justin Blanchard. + +- bpo-37085: Add the optional Linux SocketCAN Broadcast Manager constants, + used as flags to configure the BCM behaviour, in the socket module. Patch + by Karl Ding. + +- bpo-36871: Ensure method signature is used instead of constructor + signature of a class while asserting mock object against method calls. + Patch by Karthikeyan Singaravelan. + +- bpo-36582: Fix ``UserString.encode()`` to correctly return ``bytes`` + rather than a ``UserString`` instance. + +- bpo-34775: Division handling of PurePath now returns NotImplemented + instead of raising a TypeError when passed something other than an + instance of str or PurePath. Patch by Roger Aiudi. + +Documentation +------------- + +- bpo-37979: Added a link to dateutil.parser.isoparse in the + datetime.fromisoformat documentation. Patch by Paul Ganssle + +- bpo-37759: Beginning edits to Whatsnew 3.8 + +- bpo-37726: Stop recommending getopt in the tutorial for command line + argument parsing and promote argparse. + +- bpo-37256: Fix wording of arguments for :class:`Request` in + :mod:`urllib.request` + +- bpo-37004: In the documentation for difflib, a note was added explicitly + warning that the results of SequenceMatcher's ratio method may depend on + the order of the input strings. + +- bpo-36487: Make C-API docs clear about what the "main" interpreter is. + +Tests +----- + +- bpo-37805: Add tests for json.dump(..., skipkeys=True). Patch by Dong-hee + Na. + +Build +----- + +- bpo-37707: Mark some individual tests to skip when --pgo is used. The + tests marked increase the PGO task time significantly and likely don't + help improve optimization of the final executable. + +Windows +------- + +- bpo-37549: :func:`os.dup` no longer fails for standard streams on Windows + 7. + +- bpo-1311: The ``nul`` file on Windows now returns True from + :func:`~os.path.exists` and a valid result from :func:`os.stat` with + ``S_IFCHR`` set. + +- bpo-9949: Enable support for following symlinks in :func:`os.realpath`. + +- bpo-37834: Treat all name surrogate reparse points on Windows in + :func:`os.lstat` and other reparse points as regular files in + :func:`os.stat`. + +- bpo-36266: Add the module name in the formatted error message when DLL + load fail happens during module import in + ``_PyImport_FindSharedFuncptrWindows()``. Patch by Srinivas Nyayapati. + +- bpo-25172: Trying to import the :mod:`crypt` module on Windows will result + in an :exc:`ImportError` with a message explaining that the module isn't + supported on Windows. On other platforms, if the underlying ``_crypt`` + module is not available, the ImportError will include a message explaining + the problem. + +- bpo-37778: Fixes the icons used for file associations to the Microsoft + Store package. + +- bpo-37734: Fix use of registry values to launch Python from Microsoft + Store app. + +- bpo-28269: Replace use of :c:func:`strcasecmp` for the system function + :c:func:`_stricmp`. Patch by Minmin Gong. + +macOS +----- + +- bpo-18049: Increase the default stack size of threads from 5MB to 16MB on + macOS, to match the stack size of the main thread. This avoids crashes on + deep recursion in threads. + +IDLE +---- + +- bpo-37824: Properly handle user input warnings in IDLE shell. Cease + turning SyntaxWarnings into SyntaxErrors. + +- bpo-37929: IDLE Settings dialog now closes properly when there is no shell + window. + +- bpo-37849: Fixed completions list appearing too high or low when shown + above the current line. + +- bpo-36419: Refactor IDLE autocomplete and improve testing. + +- bpo-37748: Reorder the Run menu. Put the most common choice, Run Module, + at the top. + +Tools/Demos +----------- + +- bpo-37942: Improve ArgumentClinic converter for floats. + +- bpo-37034: Argument Clinic now uses the argument name on errors with + keyword-only argument instead of their position. Patch contributed by Rémi + Lapeyre. + +C API +----- + +- bpo-36763: Options added by ``PySys_AddXOption()`` are now handled the + same way than ``PyConfig.xoptions`` and command line ``-X`` options. + +- bpo-37926: Fix a crash in ``PySys_SetArgvEx(0, NULL, 0)``. + + +What's New in Python 3.8.0 beta 3? +================================== + +*Release date: 2019-07-29* + +Security +-------- + +- bpo-37461: Fix an infinite loop when parsing specially crafted email + headers. Patch by Abhilash Raj. + +Core and Builtins +----------------- + +- bpo-37593: Swap the positions of the *posonlyargs* and *args* parameters + in the constructor of :class:`ast.parameters` nodes. + +- bpo-36974: Implemented separate vectorcall functions for every calling + convention of builtin functions and methods. This improves performance for + calls. + +Library +------- + +- bpo-37697: Syncronize ``importlib.metadata`` with `importlib_metadata 0.19 + <https://gitlab.com/python-devs/importlib_metadata/-/milestones/20>`_, + improving handling of EGG-INFO files and fixing a crash when entry point + names contained colons. + +- bpo-37691: Let math.dist() accept coordinates as sequences (or iterables) + rather than just tuples. + +- bpo-37664: Update wheels bundled with ensurepip (pip 19.2.1 and setuptools + 41.0.1) + +- bpo-36324: Make internal attributes for statistics.NormalDist() private. + +- bpo-37491: Fix ``IndexError`` when parsing email headers with unexpectedly + ending bare-quoted string value. Patch by Abhilash Raj. + +- bpo-37579: Return :exc:`NotImplemented` in Python implementation of + ``__eq__`` for :class:`~datetime.timedelta` and :class:`~datetime.time` + when the other object being compared is not of the same type to match C + implementation. Patch by Karthikeyan Singaravelan. + +- bpo-21478: Record calls to parent when autospecced object is attached to a + mock using :func:`unittest.mock.attach_mock`. Patch by Karthikeyan + Singaravelan. + +- bpo-37502: pickle.loads() no longer raises TypeError when the buffers + argument is set to None + +- bpo-37520: Correct behavior for zipfile.Path.parent when the path object + identifies a subdirectory. + +- bpo-18374: Fix the ``.col_offset`` attribute of nested :class:`ast.BinOp` + instances which had a too large value in some situations. + +- bpo-37421: Fix :func:`multiprocessing.util.get_temp_dir` finalizer: clear + also the 'tempdir' configuration of the current process, so next call to + ``get_temp_dir()`` will create a new temporary directory, rather than + reusing the removed temporary directory. + +- bpo-37481: The distutils ``bdist_wininst`` command is deprecated in Python + 3.8, use ``bdist_wheel`` (wheel packages) instead. + +- bpo-26967: An :class:`~argparse.ArgumentParser` with + ``allow_abbrev=False`` no longer disables grouping of short flags, such as + ``-vv``, but only disables abbreviation of long flags as documented. Patch + by Zac Hatfield-Dodds. + +- bpo-37347: :meth:`sqlite3.Connection.create_aggregate`, + :meth:`sqlite3.Connection.create_function`, + :meth:`sqlite3.Connection.set_authorizer`, + :meth:`sqlite3.Connection.set_progress_handler` + :meth:`sqlite3.Connection.set_trace_callback` methods lead to segfaults if + some of these methods are called twice with an equal object but not the + same. Now callbacks are stored more carefully. Patch by Aleksandr Balezin. + +- bpo-36564: Fix infinite loop in email header folding logic that would be + triggered when an email policy's max_line_length is not long enough to + include the required markup and any values in the message. Patch by Paul + Ganssle + +Documentation +------------- + +- bpo-32910: Remove implementation-specific behaviour of how venv's + Deactivate works. + +- bpo-37284: Add a brief note to indicate that any new + ``sys.implementation`` required attributes must go through the PEP + process. + +- bpo-30088: Documented that :class:`mailbox.Maildir` constructor doesn't + attempt to verify the maildir folder layout correctness. Patch by + Sviatoslav Sydorenko. + +- bpo-37521: Fix `importlib` examples to insert any newly created modules + via importlib.util.module_from_spec() immediately into sys.modules instead + of after calling loader.exec_module(). + + Thanks to Benjamin Mintz for finding the bug. + +- bpo-37456: Slash ('/') is now part of syntax. + +- bpo-37487: Fix PyList_GetItem index description to include 0. + +- bpo-37149: Replace the dead link to the Tkinter 8.5 reference by John + Shipman, New Mexico Tech, with a link to the archive.org copy. + +- bpo-37478: Added possible exceptions to the description of os.chdir(). + +Tests +----- + +- bpo-37558: Fix test_shared_memory_cleaned_after_process_termination name + handling + +- bpo-37526: Add :func:`test.support.catch_threading_exception`: context + manager catching :class:`threading.Thread` exception using + :func:`threading.excepthook`. + +- bpo-37421: test_concurrent_futures now explicitly stops the ForkServer + instance if it's running. + +- bpo-37421: multiprocessing tests now stop the ForkServer instance if it's + running: close the "alive" file descriptor to ask the server to stop and + then remove its UNIX address. + +Build +----- + +- bpo-36044: Reduce the number of unit tests run for the PGO generation + task. This speeds up the task by a factor of about 15x. Running the full + unit test suite is slow. This change may result in a slightly less + optimized build since not as many code branches will be executed. If you + are willing to wait for the much slower build, the old behavior can be + restored using './configure [..] PROFILE_TASK="-m test --pgo-extended"'. + We make no guarantees as to which PGO task set produces a faster build. + Users who care should run their own relevant benchmarks as results can + depend on the environment, workload, and compiler tool chain. + +Windows +------- + +- bpo-37672: Switch Windows Store package's pip to use bundled + :file:`pip.ini` instead of :envvar:`PIP_USER` variable. + +IDLE +---- + +- bpo-37692: Improve highlight config sample with example shell interaction + and better labels for shell elements. + +- bpo-37628: Settings dialog no longer expands with font size. + +- bpo-37627: Initialize the Customize Run dialog with the command line + arguments most recently entered before. The user can optionally edit + before submitting them. + +- bpo-33610: Fix code context not showing the correct context when first + toggled on. + +- bpo-37530: Optimize code context to reduce unneeded background activity. + Font and highlight changes now occur along with text changes instead of + after a random delay. + +- bpo-27452: Cleanup ``config.py`` by inlining ``RemoveFile`` and + simplifying the handling of ``file`` in ``CreateConfigHandlers``. + +- bpo-17535: Add optional line numbers for IDLE editor windows. Windows + open without line numbers unless set otherwise in the General tab of the + configuration dialog. + +- bpo-26806: To compensate for stack frames added by IDLE and avoid possible + problems with low recursion limits, add 30 to limits in the user code + execution process. Subtract 30 when reporting recursion limits to make + this addition mostly transparent. + +- bpo-36390: Gather Format menu functions into format.py. Combine + paragraph.py, rstrip.py, and format methods from editor.py. + +Tools/Demos +----------- + +- bpo-37675: 2to3 now works when run from a zipped standard library. + + +What's New in Python 3.8.0 beta 2? +================================== + +*Release date: 2019-07-04* + +Security +-------- + +- bpo-37363: Adds audit events for the range of supported run commands (see + :ref:`using-on-general`). + +- bpo-37463: ssl.match_hostname() no longer accepts IPv4 addresses with + additional text after the address and only quad-dotted notation without + trailing whitespaces. Some inet_aton() implementations ignore whitespace + and all data after whitespace, e.g. '127.0.0.1 whatever'. + +- bpo-37363: Adds audit events for :mod:`ensurepip`, :mod:`ftplib`, + :mod:`glob`, :mod:`imaplib`, :mod:`nntplib`, :mod:`pdb`, :mod:`poplib`, + :mod:`shutil`, :mod:`smtplib`, :mod:`sqlite3`, :mod:`subprocess`, + :mod:`telnetlib`, :mod:`tempfile` and :mod:`webbrowser`, as well as + :func:`os.listdir`, :func:`os.scandir` and :func:`breakpoint`. + +- bpo-37364: :func:`io.open_code` is now used when reading :file:`.pth` + files. + +- bpo-34631: Updated OpenSSL to 1.1.1c in Windows installer + +Core and Builtins +----------------- + +- bpo-37467: Fix :func:`sys.excepthook` and :c:func:`PyErr_Display` if a + filename is a bytes string. For example, for a SyntaxError exception where + the filename attribute is a bytes string. + +- bpo-37417: :meth:`bytearray.extend` now correctly handles errors that + arise during iteration. Patch by Brandt Bucher. + +- bpo-24214: Improved support of the surrogatepass error handler in the + UTF-8 and UTF-16 incremental decoders. + +- bpo-35224: Reverse evaluation order of key: value in dict comprehensions + as proposed in PEP 572. I.e. in ``{k: v for ...}``, ``k`` will be + evaluated before ``v``. + +- bpo-37316: Fix the :c:func:`PySys_Audit` call in :class:`mmap.mmap`. + +- bpo-37269: Fix a bug in the peephole optimizer that was not treating + correctly constant conditions with binary operators. Patch by Pablo + Galindo. + +- bpo-37213: Handle correctly negative line offsets in the peephole + optimizer. Patch by Pablo Galindo. + +- bpo-37219: Remove errorneous optimization for empty set differences. + +- bpo-36922: Slot functions optimize any callable with + ``Py_TPFLAGS_METHOD_DESCRIPTOR`` instead of only instances of + ``function``. + +- bpo-36974: The slot ``tp_vectorcall_offset`` is inherited unconditionally + to support ``super().__call__()`` when the base class uses vectorcall. + +- bpo-37160: :func:`threading.get_native_id` now also supports NetBSD. + +- bpo-37077: Add :func:`threading.get_native_id` support for AIX. Patch by + M. Felt + +Library +------- + +- bpo-37440: http.client now enables TLS 1.3 post-handshake authentication + for default context or if a cert_file is passed to HTTPSConnection. + +- bpo-37437: Update vendorized expat version to 2.2.7. + +- bpo-37428: SSLContext.post_handshake_auth = True no longer sets + SSL_VERIFY_POST_HANDSHAKE verify flag for client connections. Although the + option is documented as ignored for clients, OpenSSL implicitly enables + cert chain validation when the flag is set. + +- bpo-37420: :func:`os.sched_setaffinity` now correctly handles errors that + arise during iteration over its ``mask`` argument. Patch by Brandt Bucher. + +- bpo-37412: The :func:`os.getcwdb` function now uses the UTF-8 encoding on + Windows, rather than the ANSI code page: see :pep:`529` for the rationale. + The function is no longer deprecated on Windows. + +- bpo-29412: Fix IndexError in parsing a header value ending unexpectedly. + Patch by Abhilash Raj. + +- bpo-36546: The *dist* argument for statistics.quantiles() is now + positional only. The current name doesn't reflect that the argument can be + either a dataset or a distribution. Marking the parameter as positional + avoids confusion and makes it possible to change the name later. + +- bpo-37394: Fix a bug that was causing the :mod:`queue` module to fail if + the accelerator module was not available. Patch by Pablo Galindo. + +- bpo-33972: Email with single part but content-type set to ``multipart/*`` + doesn't raise AttributeError anymore. + +- bpo-37280: Use threadpool for reading from file for sendfile fallback + mode. + +- bpo-37279: Fix asyncio sendfile support when sendfile sends extra data in + fallback mode. + +- bpo-19865: :func:`ctypes.create_unicode_buffer()` now also supports + non-BMP characters on platforms with 16-bit :c:type:`wchar_t` (for + example, Windows and AIX). + +- bpo-37210: Allow pure Python implementation of :mod:`pickle` to work even + when the C :mod:`_pickle` module is unavailable. + +- bpo-35922: Fix :meth:`RobotFileParser.crawl_delay` and + :meth:`RobotFileParser.request_rate` to return ``None`` rather than raise + :exc:`AttributeError` when no relevant rule is defined in the robots.txt + file. Patch by Rémi Lapeyre. + +- bpo-35766: Change the format of feature_version to be a (major, minor) + tuple. + +- bpo-36607: Eliminate :exc:`RuntimeError` raised by + :func:`asyncio.all_tasks()` if internal tasks weak set is changed by + another thread during iteration. + +- bpo-18748: :class:`_pyio.IOBase` destructor now does nothing if getting + the ``closed`` attribute fails to better mimick :class:`_io.IOBase` + finalizer. + +- bpo-36402: Fix a race condition at Python shutdown when waiting for + threads. Wait until the Python thread state of all non-daemon threads get + deleted (join all non-daemon threads), rather than just wait until + non-daemon Python threads complete. + +- bpo-34886: Fix an unintended ValueError from :func:`subprocess.run` when + checking for conflicting `input` and `stdin` or `capture_output` and + `stdout` or `stderr` args when they were explicitly provided but with + `None` values within a passed in `**kwargs` dict rather than as passed + directly by name. Patch contributed by Rémi Lapeyre. + +- bpo-37173: The exception message for ``inspect.getfile()`` now correctly + reports the passed class rather than the builtins module. + +- bpo-37178: Give math.perm() a one argument form that means the same as + math.factorial(). + +- bpo-37178: For math.perm(n, k), let k default to n, giving the same result + as factorial. + +- bpo-37163: Deprecated passing ``obj`` argument of + :func:`dataclasses.replace` as keyword argument. + +- bpo-37165: Converted _collections._count_elements to use the Argument + Clinic. + +- bpo-34767: Do not always create a :class:`collections.deque` in + :class:`asyncio.Lock`. + +- bpo-37158: Speed-up statistics.fmean() by switching from a function to a + generator. + +- bpo-37150: `argparse._ActionsContainer.add_argument` now throws error, if + someone accidentally pass FileType class object instead of instance of + FileType as `type` argument + +- bpo-35621: Support running asyncio subprocesses when execution event loop + in a thread on UNIX. + +- bpo-36520: Lengthy email headers with UTF-8 characters are now properly + encoded when they are folded. Patch by Jeffrey Kintscher. + +- bpo-30835: Fixed a bug in email parsing where a message with invalid bytes + in content-transfer-encoding of a multipart message can cause an + AttributeError. Patch by Andrew Donnellan. + +- bpo-35805: Add parser for Message-ID header and add it to default + HeaderRegistry. This should prevent folding of Message-ID using RFC 2048 + encoded words. + +- bpo-35070: posix.getgrouplist() now works correctly when the user belongs + to NGROUPS_MAX supplemental groups. Patch by Jeffrey Kintscher. + +- bpo-32627: Fix compile error when ``_uuid`` headers conflicting included. + +- bpo-11122: Distutils won't check for rpmbuild in specified paths only. + +- bpo-4963: Fixed non-deterministic behavior related to mimetypes extension + mapping and module reinitialization. + +Documentation +------------- + +- bpo-34903: Documented that in :meth:`datetime.datetime.strptime()`, the + leading zero in some two-digit formats is optional. Patch by Mike Gleen. + +Tests +----- + +- bpo-37421: test_distutils.test_build_ext() is now able to remove the + temporary directory on Windows: don't import the newly built C extension + ("xx") in the current process, but test it in a separated process. + +- bpo-37421: test_concurrent_futures now cleans up multiprocessing to remove + immediately temporary directories created by + multiprocessing.util.get_temp_dir(). + +- bpo-37421: test_winconsoleio doesn't leak a temporary file anymore: use + tempfile.TemporaryFile() to remove it when the test completes. + +- bpo-37421: multiprocessing tests now explicitly call ``_run_finalizers()`` + to immediately remove temporary directories created by tests. + +- bpo-37199: Fix test failures when IPv6 is unavailable or disabled. + +- bpo-37335: Remove no longer necessary code from c locale coercion tests + +- bpo-37421: Fix test_shutil to no longer leak temporary files. + +- bpo-37411: Fix test_wsgiref.testEnviron() to no longer depend on the + environment variables (don't fail if "X" variable is set). + +- bpo-37400: Fix test_os.test_chown(): use os.getgroups() rather than + grp.getgrall() to get groups. Rename also the test to test_chown_gid(). + +- bpo-37359: Add --cleanup option to python3 -m test to remove + ``test_python_*`` directories of previous failed jobs. Add "make + cleantest" to run ``python3 -m test --cleanup``. + +- bpo-37362: test_gdb no longer fails if it gets an "unexpected" message on + stderr: it now ignores stderr. The purpose of test_gdb is to test that + python-gdb.py commands work as expected, not to test gdb. + +- bpo-35998: Avoid TimeoutError in test_asyncio: test_start_tls_server_1() + +- bpo-37278: Fix test_asyncio ProactorLoopCtrlC: join the thread to prevent + leaking a running thread and leaking a reference. + +- bpo-37261: Fix :func:`test.support.catch_unraisable_exception`: its + __exit__() method now ignores unraisable exception raised when clearing + its ``unraisable`` attribute. + +- bpo-37169: Rewrite ``_PyObject_IsFreed()`` unit tests. + +- bpo-37153: ``test_venv.test_mutiprocessing()`` now explicitly calls + ``pool.terminate()`` to wait until the pool completes. + +- bpo-28009: Modify the test_uuid logic to test when a program is available + AND can be used to obtain a MACADDR as basis for an UUID. Patch by M. Felt + +Build +----- + +- bpo-37189: Many ``PyRun_XXX()`` functions like :c:func:`PyRun_String` were + no longer exported in ``libpython38.dll`` by mistake. Export them again to + fix the ABI compatibiliy. + +Windows +------- + +- bpo-10945: Officially drop support for creating bdist_wininst installers + on non-Windows systems. + +- bpo-37369: Fixes path for :data:`sys.executable` when running from the + Microsoft Store. + +- bpo-37351: Removes libpython38.a from standard Windows distribution. + +- bpo-35360: Update Windows builds to use SQLite 3.28.0. + +- bpo-37267: On Windows, :func:`os.dup` no longer creates an inheritable fd + when handling a character file. + +- bpo-36779: Ensure ``time.tzname`` is correct on Windows when the active + code page is set to CP_UTF7 or CP_UTF8. + +macOS +----- + +- bpo-34602: Avoid test suite failures on macOS by no longer calling + resource.setrlimit to increase the process stack size limit at runtime. + The runtime change is no longer needed since the interpreter is being + built with a larger default stack size. + +- bpo-35360: Update macOS installer to use SQLite 3.28.0. + +- bpo-34631: Updated OpenSSL to 1.1.1c in macOS installer. + +IDLE +---- + +- bpo-37325: Fix tab focus traversal order for help source and custom run + dialogs. + +- bpo-37321: Both subprocess connection error messages now refer to the + 'Startup failure' section of the IDLE doc. + +- bpo-37177: Properly 'attach' search dialogs to their main window so that + they behave like other dialogs and do not get hidden behind their main + window. + +- bpo-37039: Adjust "Zoom Height" to individual screens by momemtarily + maximizing the window on first use with a particular screen. Changing + screen settings may invalidate the saved height. While a window is + maximized, "Zoom Height" has no effect. + +- bpo-35763: Make calltip reminder about '/' meaning positional-only less + obtrusive by only adding it when there is room on the first line. + +- bpo-5680: Add 'Run... Customized' to the Run menu to run a module with + customized settings. Any 'command line arguments' entered are added to + sys.argv. One can suppress the normal Shell main module restart. + +C API +----- + +- bpo-36763: Add :func:`PyConfig_SetWideStringList` function. + +- bpo-28805: The :const:`METH_FASTCALL` calling convention has been + documented. + +- bpo-37221: ``tp_print`` is put back at the end of the ``PyTypeObject`` + structure to restore support for old code (in particular generated by + Cython) setting ``tp_print = 0``. Note that ``tp_print`` will be removed + entirely in Python 3.9. + +- bpo-37221: The new function :c:func:`PyCode_NewWithPosOnlyArgs` allows to + create code objects like :c:func:`PyCode_New`, but with an extra + *posonlyargcount* parameter for indicating the number of positonal-only + arguments. + +- bpo-37215: Fix dtrace issue introduce by bpo-36842 + +- bpo-37191: Python.h does not need compiler support for intermingled + declarations (GCC's ``-Wdeclaration-after-statement``), which were added + in 3.8.0 Beta 1. Note that in Python 3.9, intermingled declarations will + be needed again. + +- bpo-37170: Fix the cast on error in + :c:func:`PyLong_AsUnsignedLongLongMask()`. + + +What's New in Python 3.8.0 beta 1? +================================== + +*Release date: 2019-06-04* + +Security +-------- + +- bpo-35907: CVE-2019-9948: Avoid file reading by disallowing + ``local-file://`` and ``local_file://`` URL schemes in + ``URLopener().open()`` and ``URLopener().retrieve()`` of + :mod:`urllib.request`. + +- bpo-33529: Prevent fold function used in email header encoding from + entering infinite loop when there are too many non-ASCII characters in a + header. + +- bpo-33164: Updated blake2 implementation which uses secure memset + implementation provided by platform. + +Core and Builtins +----------------- + +- bpo-35814: Allow unpacking in the right hand side of annotated + assignments. In particular, ``t: Tuple[int, ...] = x, y, *z`` is now + allowed. + +- bpo-37126: All structseq objects are now tracked by the garbage collector. + Patch by Pablo Galindo. + +- bpo-37122: Make the *co_argcount* attribute of code objects represent the + total number of positional arguments (including positional-only + arguments). The value of *co_posonlyargcount* can be used to distinguish + which arguments are positional only, and the difference (*co_argcount* - + *co_posonlyargcount*) is the number of positional-or-keyword arguments. + Patch by Pablo Galindo. + +- bpo-20092: Constructors of :class:`int`, :class:`float` and + :class:`complex` will now use the :meth:`~object.__index__` special + method, if available and the corresponding method :meth:`~object.__int__`, + :meth:`~object.__float__` or :meth:`~object.__complex__` is not available. + +- bpo-37087: Add native thread ID (TID) support to OpenBSD. + +- bpo-26219: Implemented per opcode cache mechanism and ``LOAD_GLOBAL`` + instruction use it. ``LOAD_GLOBAL`` is now about 40% faster. Contributed + by Yury Selivanov, and Inada Naoki. + +- bpo-37072: Fix crash in PyAST_FromNodeObject() when flags is NULL. + +- bpo-37029: Freeing a great many small objects could take time quadratic in + the number of arenas, due to using linear search to keep ``obmalloc.c``'s + list of usable arenas sorted by order of number of free memory pools. + This is accomplished without search now, leaving the worst-case time + linear in the number of arenas. For programs where this quite visibly + matters (typically with more than 100 thousand small objects alive + simultaneously), this can greatly reduce the time needed to release their + memory. + +- bpo-26423: Fix possible overflow in ``wrap_lenfunc()`` when ``sizeof(long) + < sizeof(Py_ssize_t)`` (e.g., 64-bit Windows). + +- bpo-37050: Improve the AST for "debug" f-strings, which use '=' to print + out the source of the expression being evaluated. Delete expr_text from + the FormattedValue node, and instead use a Constant string node (possibly + merged with adjacent constant expressions inside the f-string). + +- bpo-22385: The `bytes.hex`, `bytearray.hex`, and `memoryview.hex` methods + as well as the `binascii.hexlify` and `b2a_hex` functions now have the + ability to include an optional separator between hex bytes. This + functionality was inspired by MicroPython's hexlify implementation. + +- bpo-26836: Add :func:`os.memfd_create`. + +- bpo-37032: Added new ``replace()`` method to the code type + (:class:`types.CodeType`). + +- bpo-37007: Implement :func:`socket.if_nameindex()`, + :func:`socket.if_nametoindex()`, and :func:`socket.if_indextoname()` on + Windows. + +- bpo-36829: :c:func:`PyErr_WriteUnraisable` now creates a traceback object + if there is no current traceback. Moreover, call + :c:func:`PyErr_NormalizeException` and :c:func:`PyException_SetTraceback` + to normalize the exception value. Ignore any error. + +- bpo-36878: Only accept text after `# type: ignore` if the first character + is ASCII. This is to disallow things like `# type: ignoreé`. + +- bpo-36878: Store text appearing after a `# type: ignore` comment in the + AST. For example a type ignore like `# type: ignore[E1000]` will have the + string `"[E1000]"` stored in its AST node. + +- bpo-2180: Treat line continuation at EOF as a ``SyntaxError`` by Anthony + Sottile. + +- bpo-36907: Fix a crash when calling a C function with a keyword dict + (``f(**kwargs)``) and changing the dict ``kwargs`` while that function is + running. + +- bpo-36946: Fix possible signed integer overflow when handling slices. + +- bpo-36826: Add NamedExpression kind support to ast_unparse.c + +- bpo-1875: A :exc:`SyntaxError` is now raised if a code blocks that will be + optimized away (e.g. if conditions that are always false) contains syntax + errors. Patch by Pablo Galindo. + +- bpo-36027: Allow computation of modular inverses via three-argument + ``pow``: the second argument is now permitted to be negative in the case + where the first and third arguments are relatively prime. + +- bpo-36861: Update the Unicode database to version 12.1.0. + +- bpo-28866: Avoid caching attributes of classes which type defines mro() to + avoid a hard cache invalidation problem. + +- bpo-36851: The ``FrameType`` stack is now correctly cleaned up if the + execution ends with a return and the stack is not empty. + +- bpo-34616: The ``compile()`` builtin functions now support the + ``ast.PyCF_ALLOW_TOP_LEVEL_AWAIT`` flag, which allow to compile sources + that contains top-level ``await``, ``async with`` or ``async for``. This + is useful to evaluate async-code from with an already async functions; for + example in a custom REPL. + +- bpo-36842: Implement PEP 578, adding sys.audit, io.open_code and related + APIs. + +- bpo-27639: Correct return type for UserList slicing operations. Patch by + Michael Blahay, Erick Cervantes, and vaultah + +- bpo-36737: Move PyRuntimeState.warnings into per-interpreter state (via + "module state"). + +- bpo-36793: Removed ``__str__`` implementations from builtin types + :class:`bool`, :class:`int`, :class:`float`, :class:`complex` and few + classes from the standard library. They now inherit ``__str__()`` from + :class:`object`. + +- bpo-36817: Add a ``=`` feature f-strings for debugging. This can precede + ``!s``, ``!r``, or ``!a``. It produces the text of the expression, + followed by an equal sign, followed by the repr of the value of the + expression. So ``f'{3*9+15=}'`` would be equal to the string + ``'3*9+15=42'``. If ``=`` is specified, the default conversion is set to + ``!r``, unless a format spec is given, in which case the formatting + behavior is unchanged, and __format__ will be used. + +- bpo-24048: Save the live exception during import.c's ``remove_module()``. + +- bpo-27987: pymalloc returns memory blocks aligned by 16 bytes, instead of + 8 bytes, on 64-bit platforms to conform x86-64 ABI. Recent compilers + assume this alignment more often. Patch by Inada Naoki. + +- bpo-36601: A long-since-meaningless check for ``getpid() == main_pid`` was + removed from Python's internal C signal handler. + +- bpo-36594: Fix incorrect use of ``%p`` in format strings. Patch by Zackery + Spytz. + +- bpo-36045: builtins.help() now prefixes `async` for async functions + +- bpo-36084: Add native thread ID (TID) to threading.Thread objects + (supported platforms: Windows, FreeBSD, Linux, macOS) + +- bpo-36035: Added fix for broken symlinks in combination with pathlib + +- bpo-35983: Added new trashcan macros to deal with a double deallocation + that could occur when the `tp_dealloc` of a subclass calls the + `tp_dealloc` of a base class and that base class uses the trashcan + mechanism. Patch by Jeroen Demeyer. + +- bpo-20602: Do not clear :data:`sys.flags` and :data:`sys.float_info` + during shutdown. Patch by Zackery Spytz. + +- bpo-26826: Expose :func:`copy_file_range` as a low level API in the + :mod:`os` module. + +- bpo-32388: Remove cross-version binary compatibility requirement in + tp_flags. + +- bpo-31862: Port binascii to PEP 489 multiphase initialization. Patch by + Marcel Plch. + +Library +------- + +- bpo-37128: Added :func:`math.perm`. + +- bpo-37120: Add SSLContext.num_tickets to control the number of TLSv1.3 + session tickets. + +- bpo-12202: Fix the error handling in + :meth:`msilib.SummaryInformation.GetProperty`. Patch by Zackery Spytz. + +- bpo-26835: The fcntl module now contains file sealing constants for + sealing of memfds. + +- bpo-29262: Add ``get_origin()`` and ``get_args()`` introspection helpers + to ``typing`` module. + +- bpo-12639: :meth:`msilib.Directory.start_component()` no longer fails if + *keyfile* is not ``None``. + +- bpo-36999: Add the ``asyncio.Task.get_coro()`` method to publicly expose + the tasks's coroutine object. + +- bpo-35246: Make :func:`asyncio.create_subprocess_exec` accept path-like + arguments. + +- bpo-35279: Change default *max_workers* of ``ThreadPoolExecutor`` from + ``cpu_count() * 5`` to ``min(32, cpu_count() + 4))``. Previous value was + unreasonably large on many cores machines. + +- bpo-37076: :func:`_thread.start_new_thread` now logs uncaught exception + raised by the function using :func:`sys.unraisablehook`, rather than + :func:`sys.excepthook`, so the hook gets access to the function which + raised the exception. + +- bpo-33725: On macOS, the :mod:`multiprocessing` module now uses *spawn* + start method by default. + +- bpo-37054: Fix destructor :class:`_pyio.BytesIO` and + :class:`_pyio.TextIOWrapper`: initialize their ``_buffer`` attribute as + soon as possible (in the class body), because it's used by ``__del__()`` + which calls ``close()``. + +- bpo-37058: PEP 544: Add ``Protocol`` and ``@runtime_checkable`` to the + ``typing`` module. + +- bpo-36933: The functions ``sys.set_coroutine_wrapper`` and + ``sys.get_coroutine_wrapper`` that were deprecated and marked for removal + in 3.8 have been removed. + +- bpo-37047: Handle late binding and attribute access in + :class:`unittest.mock.AsyncMock` setup for autospeccing. Document newly + implemented async methods in :class:`unittest.mock.MagicMock`. + +- bpo-37049: PEP 589: Add ``TypedDict`` to the ``typing`` module. + +- bpo-37046: PEP 586: Add ``Literal`` to the ``typing`` module. + +- bpo-37045: PEP 591: Add ``Final`` qualifier and ``@final`` decorator to + the ``typing`` module. + +- bpo-37035: Don't log OSError based exceptions if a fatal error has + occurred in asyncio transport. Peer can generate almost any OSError, user + cannot avoid these exceptions by fixing own code. Errors are still + propagated to user code, it's just logging them is pointless and pollute + asyncio logs. + +- bpo-37001: :func:`symtable.symtable` now accepts the same input types for + source code as the built-in :func:`compile` function. Patch by Dino + Viehland. + +- bpo-37028: Implement asyncio REPL + +- bpo-37027: Return safe to use proxy socket object from + transport.get_extra_info('socket') + +- bpo-32528: Make asyncio.CancelledError a BaseException. + + This will address the common mistake many asyncio users make: an "except + Exception" clause breaking Tasks cancellation. + + In addition to this change, we stop inheriting asyncio.TimeoutError and + asyncio.InvalidStateError from their concurrent.futures.* counterparts. + There's no point for these exceptions to share the inheritance chain. + +- bpo-1230540: Add a new :func:`threading.excepthook` function which handles + uncaught :meth:`threading.Thread.run` exception. It can be overridden to + control how uncaught :meth:`threading.Thread.run` exceptions are handled. + +- bpo-36996: Handle :func:`unittest.mock.patch` used as a decorator on async + functions. + +- bpo-37008: Add support for calling :func:`next` with the mock resulting + from :func:`unittest.mock.mock_open` + +- bpo-27737: Allow whitespace only header encoding in ``email.header`` - by + Batuhan Taskaya + +- bpo-36969: PDB command `args` now display positional only arguments. + Patch contributed by Rémi Lapeyre. + +- bpo-36969: PDB command `args` now display keyword only arguments. Patch + contributed by Rémi Lapeyre. + +- bpo-36983: Add missing names to ``typing.__all__``: ``ChainMap``, + ``ForwardRef``, ``OrderedDict`` - by Anthony Sottile. + +- bpo-36972: Add SupportsIndex protocol to the typing module to allow type + checking to detect classes that can be passed to `hex()`, `oct()` and + `bin()`. + +- bpo-32972: Implement ``unittest.IsolatedAsyncioTestCase`` to help testing + asyncio-based code. + +- bpo-36952: :func:`fileinput.input` and :class:`fileinput.FileInput` + **bufsize** argument has been removed (was deprecated and ignored since + Python 3.6), and as a result the **mode** and **openhook** arguments have + been made keyword-only. + +- bpo-36952: Starting with Python 3.3, importing ABCs from + :mod:`collections` is deprecated, and import should be done from + :mod:`collections.abc`. Still being able to import from :mod:`collections` + was marked for removal in 3.8, but has been delayed to 3.9; documentation + and ``DeprecationWarning`` clarified. + +- bpo-36949: Implement __repr__ for WeakSet objects. + +- bpo-36948: Fix :exc:`NameError` in + :meth:`urllib.request.URLopener.retrieve`. Patch by Karthikeyan + Singaravelan. + +- bpo-33524: Fix the folding of email header when the max_line_length is 0 + or None and the header contains non-ascii characters. Contributed by + Licht Takeuchi (@Licht-T). + +- bpo-24564: :func:`shutil.copystat` now ignores :const:`errno.EINVAL` on + :func:`os.setxattr` which may occur when copying files on filesystems + without extended attributes support. + + Original patch by Giampaolo Rodola, updated by Ying Wang. + +- bpo-36888: Python child processes can now access the status of their + parent process using multiprocessing.process.parent_process + +- bpo-36921: Deprecate ``@coroutine`` for sake of ``async def``. + +- bpo-25652: Fix bug in ``__rmod__`` of ``UserString`` - by Batuhan Taskaya. + +- bpo-36916: Remove a message about an unhandled exception in a task when + writer.write() is used without await and writer.drain() fails with an + exception. + +- bpo-36889: Introduce :class:`asyncio.Stream` class that merges + :class:`asyncio.StreamReader` and :class:`asyncio.StreamWriter` + functionality. :class:`asyncio.Stream` can work in readonly, writeonly and + readwrite modes. Provide :func:`asyncio.connect`, + :func:`asyncio.connect_unix`, :func:`asyncio.connect_read_pipe` and + :func:`asyncio.connect_write_pipe` factories to open + :class:`asyncio.Stream` connections. Provide :class:`asyncio.StreamServer` + and :class:`UnixStreamServer` to serve servers with asyncio.Stream API. + Modify :func:`asyncio.create_subprocess_shell` and + :func:`asyncio.create_subprocess_exec` to use :class:`asyncio.Stream` + instead of deprecated :class:`StreamReader` and :class:`StreamWriter`. + Deprecate :class:`asyncio.StreamReader` and :class:`asyncio.StreamWriter`. + Deprecate usage of private classes, e.g. + :class:`asyncio.FlowControlMixing` and + :class:`asyncio.StreamReaderProtocol` outside of asyncio package. + +- bpo-36845: Added validation of integer prefixes to the construction of IP + networks and interfaces in the ipaddress module. + +- bpo-23378: Add an extend action to argparser. + +- bpo-36867: Fix a bug making a SharedMemoryManager instance and its parent + process use two separate resource_tracker processes. + +- bpo-23896: Adds a grammar to lib2to3.pygram that contains exec as a + function not as statement. + +- bpo-36895: The function ``time.clock()`` was deprecated in 3.3 in favor of + ``time.perf_counter()`` and marked for removal in 3.8, it has removed. + +- bpo-35545: Fix asyncio discarding IPv6 scopes when ensuring hostname + resolutions internally + +- bpo-36887: Add new function :func:`math.isqrt` to compute integer square + roots. + +- bpo-34632: Introduce the ``importlib.metadata`` module with (provisional) + support for reading metadata from third-party packages. + +- bpo-36878: When using `type_comments=True` in `ast.parse`, treat `# type: + ignore` followed by a non-alphanumeric character and then arbitrary text + as a type ignore, instead of requiring nothing but whitespace or another + comment. This is to permit formations such as `# type: ignore[E1000]`. + +- bpo-36778: ``cp65001`` encoding (Windows code page 65001) becomes an alias + to ``utf_8`` encoding. + +- bpo-36867: The multiprocessing.resource_tracker replaces the + multiprocessing.semaphore_tracker module. Other than semaphores, + resource_tracker also tracks shared_memory segments. + +- bpo-30262: The ``Cache`` and ``Statement`` objects of the :mod:`sqlite3` + module are not exposed to the user. Patch by Aviv Palivoda. + +- bpo-24538: In `shutil.copystat()`, first copy extended file attributes and + then file permissions, since extended attributes can only be set on the + destination while it is still writeable. + +- bpo-36829: Add new :func:`sys.unraisablehook` function which can be + overridden to control how "unraisable exceptions" are handled. It is + called when an exception has occurred but there is no way for Python to + handle it. For example, when a destructor raises an exception or during + garbage collection (:func:`gc.collect`). + +- bpo-36832: Introducing ``zipfile.Path``, a pathlib-compatible wrapper for + traversing zip files. + +- bpo-36814: Fix an issue where os.posix_spawnp() would incorrectly raise a + TypeError when file_actions is None. + +- bpo-33110: Handle exceptions raised by functions added by + concurrent.futures add_done_callback correctly when the Future has already + completed. + +- bpo-26903: Limit `max_workers` in `ProcessPoolExecutor` to 61 to work + around a WaitForMultipleObjects limitation. + +- bpo-36813: Fix :class:`~logging.handlers.QueueListener` to call + ``queue.task_done()`` upon stopping. Patch by Bar Harel. + +- bpo-36806: Forbid creation of asyncio stream objects like StreamReader, + StreamWriter, Process, and their protocols outside of asyncio package. + +- bpo-36802: Provide both sync and async calls for StreamWriter.write() and + StreamWriter.close() + +- bpo-36801: Properly handle SSL connection closing in asyncio + StreamWriter.drain() call. + +- bpo-36785: Implement PEP 574 (pickle protocol 5 with out-of-band buffers). + +- bpo-36772: functools.lru_cache() can now be used as a straight decorator + in addition to its existing usage as a function that returns a decorator. + +- bpo-6584: Add a :exc:`~gzip.BadGzipFile` exception to the :mod:`gzip` + module. + +- bpo-36748: Optimized write buffering in C implementation of + ``TextIOWrapper``. Writing ASCII string to ``TextIOWrapper`` with ascii, + latin1, or utf-8 encoding is about 20% faster. Patch by Inada Naoki. + +- bpo-8138: Don't mark ``wsgiref.simple_server.SimpleServer`` as + multi-threaded since ``wsgiref.simple_server.WSGIServer`` is + single-threaded. + +- bpo-22640: :func:`py_compile.compile` now supports silent mode. Patch by + Joannah Nanjekye + +- bpo-29183: Fix double exceptions in :class:`wsgiref.handlers.BaseHandler` + by calling its :meth:`~wsgiref.handlers.BaseHandler.close` method only + when no exception is raised. + +- bpo-36548: Improved the repr of regular expression flags. + +- bpo-36542: The signature of Python functions can now be overridden by + specifying the ``__text_signature__`` attribute. + +- bpo-36533: Reinitialize logging.Handler locks in forked child processes + instead of attempting to acquire them all in the parent before forking + only to be released in the child process. The acquire/release pattern was + leading to deadlocks in code that has implemented any form of chained + logging handlers that depend upon one another as the lock acquisition + order cannot be guaranteed. + +- bpo-35252: Throw a TypeError instead of an AssertionError when using an + invalid type annotation with singledispatch. + +- bpo-35900: Allow reduction methods to return a 6-item tuple where the 6th + item specifies a custom state-setting method that's called instead of the + regular ``__setstate__`` method. + +- bpo-35900: enable custom reduction callback registration for functions and + classes in _pickle.c, using the new Pickler's attribute + ``reducer_override`` + +- bpo-36368: Fix a bug crashing SharedMemoryManager instances in interactive + sessions after a ctrl-c (KeyboardInterrupt) was sent + +- bpo-31904: Fix mmap fail for VxWorks + +- bpo-27497: :meth:`csv.DictWriter.writeheader` now returns the return value + of the underlying :meth:`csv.Writer.writerow` method. Patch contributed by + Ashish Nitin Patil. + +- bpo-36239: Parsing .mo files now ignores comments starting and ending with + #-#-#-#-#. + +- bpo-26707: Enable plistlib to read and write binary plist files that were + created as a KeyedArchive file. Specifically, this allows the plistlib to + process 0x80 tokens as UID objects. + +- bpo-31904: Add posix module support for VxWorks. + +- bpo-35125: Asyncio: Remove inner callback on outer cancellation in shield + +- bpo-35721: Fix :meth:`asyncio.SelectorEventLoop.subprocess_exec()` leaks + file descriptors if ``Popen`` fails and called with + ``stdin=subprocess.PIPE``. Patch by Niklas Fiekas. + +- bpo-31855: :func:`unittest.mock.mock_open` results now respects the + argument of read([size]). Patch contributed by Rémi Lapeyre. + +- bpo-35431: Implement :func:`math.comb` that returns binomial coefficient, + that computes the number of ways to choose k items from n items without + repetition and without order. Patch by Yash Aggarwal and Keller Fuchs. + +- bpo-26660: Fixed permission errors in + :class:`~tempfile.TemporaryDirectory` clean up. Previously + ``TemporaryDirectory.cleanup()`` failed when non-writeable or + non-searchable files or directories were created inside a temporary + directory. + +- bpo-34271: Add debugging helpers to ssl module. It's now possible to dump + key material and to trace TLS protocol. The default and stdlib contexts + also support SSLKEYLOGFILE env var. + +- bpo-26467: Added AsyncMock to support using unittest to mock asyncio + coroutines. Patch by Lisa Roach. + +- bpo-33569: dataclasses.InitVar: Exposes the type used to create the init + var. + +- bpo-34424: Fix serialization of messages containing encoded strings when + the policy.linesep is set to a multi-character string. Patch by Jens + Troeger. + +- bpo-34303: Performance of :func:`functools.reduce` is slightly improved. + Patch by Sergey Fedoseev. + +- bpo-33361: Fix a bug in :class:`codecs.StreamRecoder` where seeking might + leave old data in a buffer and break subsequent read calls. Patch by Ammar + Askar. + +- bpo-22454: The :mod:`shlex` module now exposes :func:`shlex.join`, the + inverse of :func:`shlex.split`. Patch by Bo Bayles. + +- bpo-31922: :meth:`asyncio.AbstractEventLoop.create_datagram_endpoint`: Do + not connect UDP socket when broadcast is allowed. This allows to receive + replies after a UDP broadcast. + +- bpo-24882: Change ThreadPoolExecutor to use existing idle threads before + spinning up new ones. + +- bpo-31961: Added support for bytes and path-like objects in + :func:`subprocess.Popen` on Windows. The *args* parameter now accepts a + :term:`path-like object` if *shell* is ``False`` and a sequence containing + bytes and path-like objects. The *executable* parameter now accepts a + bytes and :term:`path-like object`. The *cwd* parameter now accepts a + bytes object. Based on patch by Anders Lorentsen. + +- bpo-33123: :class:`pathlib.Path.unlink` now accepts a *missing_ok* + parameter to avoid a :exc:`FileNotFoundError` from being raised. Patch by + Robert Buchholz. + +- bpo-32941: Allow :class:`mmap.mmap` objects to access the madvise() system + call (through :meth:`mmap.mmap.madvise`). + +- bpo-22102: Added support for ZIP files with disks set to 0. Such files are + commonly created by builtin tools on Windows when use ZIP64 extension. + Patch by Francisco Facioni. + +- bpo-32515: trace.py can now run modules via python3 -m trace -t --module + module_name + +- bpo-32299: Changed :func:`unittest.mock.patch.dict` to return the patched + dictionary when used as context manager. Patch by Vadim Tsander. + +- bpo-27141: Added a ``__copy__()`` to ``collections.UserList`` and + ``collections.UserDict`` in order to correctly implement shallow copying + of the objects. Patch by Bar Harel. + +- bpo-31829: ``\r``, ``\0`` and ``\x1a`` (end-of-file on Windows) are now + escaped in protocol 0 pickles of Unicode strings. This allows to load them + without loss from files open in text mode in Python 2. + +- bpo-23395: ``_thread.interrupt_main()`` now avoids setting the Python + error status if the ``SIGINT`` signal is ignored or not handled by Python. + +Documentation +------------- + +- bpo-36896: Clarify that some types have unstable constructor signature + between Python versions. + +- bpo-36686: Improve documentation of the stdin, stdout, and stderr + arguments of of the ``asyncio.subprocess_exec`` function to specify which + values are supported. Also mention that decoding as text is not supported. + + Add a few tests to verify that the various values passed to the std* + arguments actually work. + +- bpo-36984: Improve version added references in ``typing`` module - by + Anthony Sottile. + +- bpo-36868: What's new now mentions SSLContext.hostname_checks_common_name + instead of SSLContext.host_flags. + +- bpo-35924: Add a note to the ``curses.addstr()`` documentation to warn + that multiline strings can cause segfaults because of an ncurses bug. + +- bpo-36783: Added C API Documentation for Time_FromTimeAndFold and + PyDateTime_FromDateAndTimeAndFold as per PEP 495. Patch by Edison + Abahurire. + +- bpo-36797: More of the legacy distutils documentation has been either + pruned, or else more clearly marked as being retained solely until the + setuptools documentation covers it independently. + +- bpo-22865: Add detail to the documentation on the `pty.spawn` function. + +- bpo-35397: Remove deprecation and document urllib.parse.unwrap(). Patch + contributed by Rémi Lapeyre. + +- bpo-32995: Added the context variable in glossary. + +- bpo-33519: Clarify that `copy()` is not part of the `MutableSequence` ABC. + +- bpo-33482: Make `codecs.StreamRecoder.writelines` take a list of bytes. + +- bpo-25735: Added documentation for func factorial to indicate that returns + integer values + +- bpo-20285: Expand object.__doc__ (docstring) to make it clearer. Modify + pydoc.py so that help(object) lists object methods (for other classes, + help omits methods of the object base class.) + +Tests +----- + +- bpo-37069: Modify test_coroutines, test_cprofile, test_generators, + test_raise, test_ssl and test_yield_from to use + :func:`test.support.catch_unraisable_exception` rather than + :func:`test.support.captured_stderr`. + +- bpo-37098: Fix test_memfd_create on older Linux Kernels. + +- bpo-37081: Test with OpenSSL 1.1.1c + +- bpo-36829: Add :func:`test.support.catch_unraisable_exception`: context + manager catching unraisable exception using :func:`sys.unraisablehook`. + +- bpo-36915: The main regrtest process now always removes all temporary + directories of worker processes even if they crash or if they are killed + on KeyboardInterrupt (CTRL+c). + +- bpo-36719: "python3 -m test -jN ..." now continues the execution of next + tests when a worker process crash (CHILD_ERROR state). Previously, the + test suite stopped immediately. Use --failfast to stop at the first error. + +- bpo-36816: Update Lib/test/selfsigned_pythontestdotnet.pem to match + self-signed.pythontest.net's new TLS certificate. + +- bpo-35925: Skip httplib and nntplib networking tests when they would + otherwise fail due to a modern OS or distro with a default OpenSSL policy + of rejecting connections to servers with weak certificates. + +- bpo-36782: Add tests for several C API functions in the :mod:`datetime` + module. Patch by Edison Abahurire. + +- bpo-36342: Fix test_multiprocessing in test_venv if platform lacks + functioning sem_open. + +Build +----- + +- bpo-36721: To embed Python into an application, a new ``--embed`` option + must be passed to ``python3-config --libs --embed`` to get ``-lpython3.8`` + (link the application to libpython). To support both 3.8 and older, try + ``python3-config --libs --embed`` first and fallback to ``python3-config + --libs`` (without ``--embed``) if the previous command fails. + + Add a pkg-config ``python-3.8-embed`` module to embed Python into an + application: ``pkg-config python-3.8-embed --libs`` includes + ``-lpython3.8``. To support both 3.8 and older, try ``pkg-config + python-X.Y-embed --libs`` first and fallback to ``pkg-config python-X.Y + --libs`` (without ``--embed``) if the previous command fails (replace + ``X.Y`` with the Python version). + + On the other hand, ``pkg-config python3.8 --libs`` no longer contains + ``-lpython3.8``. C extensions must not be linked to libpython (except on + Android, case handled by the script); this change is backward incompatible + on purpose. + +- bpo-36786: "make install" now runs compileall in parallel. + +Windows +------- + +- bpo-36965: include of STATUS_CONTROL_C_EXIT without depending on MSC + compiler + +- bpo-35926: Update to OpenSSL 1.1.1b for Windows. + +- bpo-29883: Add Windows support for UDP transports for the Proactor Event + Loop. Patch by Adam Meily. + +- bpo-33407: The :c:macro:`Py_DEPRECATED()` macro has been implemented for + MSVC. + +macOS +----- + +- bpo-36231: Support building Python on macOS without /usr/include + installed. As of macOS 10.14, system header files are only available + within an SDK provided by either the Command Line Tools or the Xcode app. + +IDLE +---- + +- bpo-35610: Replace now redundant .context_use_ps1 with .prompt_last_line. + This finishes change started in bpo-31858. + +- bpo-37038: Make idlelib.run runnable; add test clause. + +- bpo-36958: Print any argument other than None or int passed to SystemExit + or sys.exit(). + +- bpo-36807: When saving a file, call os.fsync() so bits are flushed to e.g. + USB drive. + +- bpo-32411: In browser.py, remove extraneous sorting by line number since + dictionary was created in line number order. + +Tools/Demos +----------- + +- bpo-37053: Handle strings like u"bar" correctly in + Tools/parser/unparse.py. Patch by Chih-Hsuan Yen. + +C API +----- + +- bpo-36763: Implement the :pep:`587` "Python Initialization Configuration". + +- bpo-36379: Fix crashes when attempting to use the *modulo* parameter when + ``__ipow__`` is implemented in C. + +- bpo-37107: Update :c:func:`PyObject_CallMethodObjArgs` and + ``_PyObject_CallMethodIdObjArgs`` to use ``_PyObject_GetMethod`` to avoid + creating a bound method object in many cases. Patch by Michael J. + Sullivan. + +- bpo-36974: Implement :pep:`590`: Vectorcall: a fast calling protocol for + CPython. This is a new protocol to optimize calls of custom callable + objects. + +- bpo-36763: ``Py_Main()`` now returns the exitcode rather than calling + ``Py_Exit(exitcode)`` when calling ``PyErr_Print()`` if the current + exception type is ``SystemExit``. + +- bpo-36922: Add new type flag ``Py_TPFLAGS_METHOD_DESCRIPTOR`` for objects + behaving like unbound methods. These are objects supporting the + optimization given by the ``LOAD_METHOD``/``CALL_METHOD`` opcodes. See PEP + 590. + +- bpo-36728: The :c:func:`PyEval_ReInitThreads` function has been removed + from the C API. It should not be called explicitly: use + :c:func:`PyOS_AfterFork_Child` instead. + + +What's New in Python 3.8.0 alpha 4? +=================================== + +*Release date: 2019-05-06* + +Security +-------- + +- bpo-36742: Fixes mishandling of pre-normalization characters in + urlsplit(). + +- bpo-30458: Address CVE-2019-9740 by disallowing URL paths with embedded + whitespace or control characters through into the underlying http client + request. Such potentially malicious header injection URLs now cause an + http.client.InvalidURL exception to be raised. + +- bpo-35755: :func:`shutil.which` now uses ``os.confstr("CS_PATH")`` if + available and if the :envvar:`PATH` environment variable is not set. + Remove also the current directory from :data:`posixpath.defpath`. On Unix, + :func:`shutil.which` and the :mod:`subprocess` module no longer search the + executable in the current directory if the :envvar:`PATH` environment + variable is not set. + +Core and Builtins +----------------- + +- bpo-36722: In debug build, import now also looks for C extensions compiled + in release mode and for C extensions compiled in the stable ABI. + +- bpo-32849: Fix Python Initialization code on FreeBSD to detect properly + when stdin file descriptor (fd 0) is invalid. + +- bpo-36623: Remove parser headers and related function declarations that + lack implementations after the removal of pgen. + +- bpo-20180: ``dict.pop()`` is now up to 33% faster thanks to Argument + Clinic. Patch by Inada Naoki. + +- bpo-36611: Debug memory allocators: disable serialno field by default from + debug hooks on Python memory allocators to reduce the memory footprint by + 5%. Enable :mod:`tracemalloc` to get the traceback where a memory block + has been allocated when a fatal memory error is logged to decide where to + put a breakpoint. Compile Python with ``PYMEM_DEBUG_SERIALNO`` defined to + get back the field. + +- bpo-36588: On AIX, :attr:`sys.platform` doesn't contain the major version + anymore. Always return ``'aix'``, instead of ``'aix3'`` .. ``'aix7'``. + Since older Python versions include the version number, it is recommended + to always use ``sys.platform.startswith('aix')``. Contributed by M. Felt. + +- bpo-36549: Change str.capitalize to use titlecase for the first character + instead of uppercase. + +- bpo-36540: Implement :pep:`570` (Python positional-only parameters). Patch + by Pablo Galindo. + +- bpo-36475: :c:func:`PyEval_AcquireLock` and :c:func:`PyEval_AcquireThread` + now terminate the current thread if called while the interpreter is + finalizing, making them consistent with :c:func:`PyEval_RestoreThread`, + :c:func:`Py_END_ALLOW_THREADS`, and :c:func:`PyGILState_Ensure`. + +- bpo-36504: Fix signed integer overflow in _ctypes.c's + ``PyCArrayType_new()``. + +- bpo-20844: Fix running script with encoding cookie and LF line ending may + fail on Windows. + +- bpo-24214: Fixed support of the surrogatepass error handler in the UTF-8 + incremental decoder. + +- bpo-36452: Changing ``dict`` keys during iteration of the dict itself, + ``keys()``, ``values()``, or ``items()`` will now be detected in certain + corner cases where keys are deleted/added so that the number of keys isn't + changed. A `RuntimeError` will be raised after ``len(dict)`` iterations. + Contributed by Thomas Perl. + +- bpo-36459: Fix a possible double ``PyMem_FREE()`` due to tokenizer.c's + ``tok_nextc()``. + +- bpo-36433: Fixed TypeError message in classmethoddescr_call. + +- bpo-36430: Fix a possible reference leak in :func:`itertools.count`. + +- bpo-36440: Include node names in ``ParserError`` messages, instead of + numeric IDs. Patch by A. Skrobov. + +- bpo-36143: Regenerate :mod:`keyword` from the Grammar and Tokens file + using pgen. Patch by Pablo Galindo. + +- bpo-18372: Add missing :c:func:`PyObject_GC_Track` calls in the + :mod:`pickle` module. Patch by Zackery Spytz. + +Library +------- + +- bpo-35952: Fix pythoninfo when the compiler is missing. + +- bpo-28238: The ``.find*()`` methods of xml.etree.ElementTree can now + search for wildcards like ``{*}tag`` and ``{ns}*`` that match a tag in any + namespace or all tags in a namespace. Patch by Stefan Behnel. + +- bpo-26978: `pathlib.path.link_to()` is now implemented. It creates a hard + link pointing to a path. + +- bpo-1613500: :class:`fileinput.FileInput` now uses the input file mode to + correctly set the output file mode (previously it was hardcoded to + ``'w'``) when ``inplace=True`` is passed to its constructor. + +- bpo-36734: Fix compilation of ``faulthandler.c`` on HP-UX. Initialize + ``stack_t current_stack`` to zero using ``memset()``. + +- bpo-13611: The xml.etree.ElementTree packages gained support for C14N 2.0 + serialisation. Patch by Stefan Behnel. + +- bpo-36669: Add missing matrix multiplication operator support to + weakref.proxy. + +- bpo-36676: The XMLParser() in xml.etree.ElementTree provides namespace + prefix context to the parser target if it defines the callback methods + "start_ns()" and/or "end_ns()". Patch by Stefan Behnel. + +- bpo-36673: The TreeBuilder and XMLPullParser in xml.etree.ElementTree + gained support for parsing comments and processing instructions. Patch by + Stefan Behnel. + +- bpo-36650: The C version of functools.lru_cache() was treating calls with + an empty ``**kwargs`` dictionary as being distinct from calls with no + keywords at all. This did not result in an incorrect answer, but it did + trigger an unexpected cache miss. + +- bpo-28552: Fix :mod:`distutils.sysconfig` if :data:`sys.executable` is + ``None`` or an empty string: use :func:`os.getcwd` to initialize + ``project_base``. Fix also the distutils build command: don't use + :data:`sys.executable` if it is ``None`` or an empty string. + +- bpo-35755: :func:`shutil.which` and + :func:`distutils.spawn.find_executable` now use ``os.confstr("CS_PATH")`` + if available instead of :data:`os.defpath`, if the ``PATH`` environment + variable is not set. Moreover, don't use ``os.confstr("CS_PATH")`` nor + :data:`os.defpath` if the ``PATH`` environment variable is set to an empty + string. + +- bpo-25430: improve performance of ``IPNetwork.__contains__()`` + +- bpo-30485: Path expressions in xml.etree.ElementTree can now avoid + explicit namespace prefixes for tags (or the "{namespace}tag" notation) by + passing a default namespace with an empty string prefix. + +- bpo-36613: Fix :mod:`asyncio` wait() not removing callback if exception + +- bpo-36598: Fix ``isinstance`` check for Mock objects with spec when the + code is executed under tracing. Patch by Karthikeyan Singaravelan. + +- bpo-18748: In development mode (:option:`-X` ``dev``) and in debug build, + the :class:`io.IOBase` destructor now logs ``close()`` exceptions. These + exceptions are silent by default in release mode. + +- bpo-36575: The ``_lsprof`` module now uses internal timer same to + ``time.perf_counter()`` by default. ``gettimeofday(2)`` was used on Unix. + New timer has better resolution on most Unix platforms and timings are no + longer impacted by system clock updates since ``perf_counter()`` is + monotonic. Patch by Inada Naoki. + +- bpo-33461: ``json.loads`` now emits ``DeprecationWarning`` when + ``encoding`` option is specified. Patch by Matthias Bussonnier. + +- bpo-36559: The random module now prefers the lean internal _sha512 module + over hashlib for seed(version=2) to optimize import time. + +- bpo-17561: Set backlog=None as the default for socket.create_server. + +- bpo-34373: Fix :func:`time.mktime` error handling on AIX for year before + 1970. + +- bpo-36232: Improve error message when trying to open existing DBM database + that actually doesn't exist. Patch by Marco Rougeth. + +- bpo-36546: Add statistics.quantiles() + +- bpo-36050: Optimized ``http.client.HTTPResponse.read()`` for large + response. Patch by Inada Naoki. + +- bpo-36522: If *debuglevel* is set to >0 in :mod:`http.client`, print all + values for headers with multiple values for the same header name. Patch by + Matt Houglum. + +- bpo-36492: Deprecated passing required arguments like *func* as keyword + arguments in functions which should accept arbitrary keyword arguments and + pass them to other function. Arbitrary keyword arguments (even with names + "self" and "func") can now be passed to these functions if the required + arguments are passed as positional arguments. + +- bpo-27181: Add statistics.geometric_mean(). + +- bpo-30427: ``os.path.normcase()`` relies on ``os.fspath()`` to check the + type of its argument. Redundant checks have been removed from its + ``posixpath.normcase()`` and ``ntpath.normcase()`` implementations. Patch + by Wolfgang Maier. + +- bpo-36385: Stop rejecting IPv4 octets for being ambiguously octal. Leading + zeros are ignored, and no longer are assumed to specify octal octets. + Octets are always decimal numbers. Octets must still be no more than three + digits, including leading zeroes. + +- bpo-36434: Errors during writing to a ZIP file no longer prevent to + properly close it. + +- bpo-36407: Fixed wrong indentation writing for CDATA section in + xml.dom.minidom. Patch by Vladimir Surjaninov. + +- bpo-36326: inspect.getdoc() can now find docstrings for member objects + when __slots__ is a dictionary. + +- bpo-36366: Calling ``stop()`` on an unstarted or stopped + :func:`unittest.mock.patch` object will now return `None` instead of + raising :exc:`RuntimeError`, making the method idempotent. Patch by + Karthikeyan Singaravelan. + +- bpo-36348: The :meth:`imap.IMAP4.logout` method no longer ignores silently + arbitrary exceptions. + +- bpo-31904: Add time module support and fix test_time faiures for VxWorks. + +- bpo-36227: Added support for keyword arguments `default_namespace` and + `xml_declaration` in functions ElementTree.tostring() and + ElementTree.tostringlist(). + +- bpo-36004: Added new alternate constructors + :meth:`datetime.date.fromisocalendar` and + :meth:`datetime.datetime.fromisocalendar`, which construct date objects + from ISO year, week number and weekday; these are the inverse of each + class's ``isocalendar`` method. Patch by Paul Ganssle. + +- bpo-35936: :mod:`modulefinder` no longer depends on the deprecated + :mod:`imp` module, and the initializer for + :class:`modulefinder.ModuleFinder` now has immutable default arguments. + Patch by Brandt Bucher. + +- bpo-35376: :mod:`modulefinder` correctly handles modules that have the + same name as a bad package. Patch by Brandt Bucher. + +- bpo-17396: :mod:`modulefinder` no longer crashes when encountering syntax + errors in followed imports. Patch by Brandt Bucher. + +- bpo-35934: Added :meth:`~socket.create_server()` and + :meth:`~socket.has_dualstack_ipv6()` convenience functions to automate the + necessary tasks usually involved when creating a server socket, including + accepting both IPv4 and IPv6 connections on the same socket. (Contributed + by Giampaolo Rodola in :issue:`17561`.) + +- bpo-23078: Add support for :func:`classmethod` and :func:`staticmethod` to + :func:`unittest.mock.create_autospec`. Initial patch by Felipe Ochoa. + +- bpo-35416: Fix potential resource warnings in distutils. Patch by Mickaël + Schoentgen. + +- bpo-25451: Add transparency methods to :class:`tkinter.PhotoImage`. Patch + by Zackery Spytz. + +- bpo-35082: Don't return deleted attributes when calling dir on a + :class:`unittest.mock.Mock`. + +- bpo-34547: :class:`wsgiref.handlers.BaseHandler` now handles abrupt client + connection terminations gracefully. Patch by Petter Strandmark. + +- bpo-31658: :func:`xml.sax.parse` now supports :term:`path-like <path-like + object>`. Patch by Mickaël Schoentgen. + +- bpo-34139: Remove stale unix datagram socket before binding + +- bpo-33530: Implemented Happy Eyeballs in `asyncio.create_connection()`. + Added two new arguments, *happy_eyeballs_delay* and *interleave*, to + specify Happy Eyeballs behavior. + +- bpo-33291: Do not raise AttributeError when calling the inspect functions + isgeneratorfunction, iscoroutinefunction, isasyncgenfunction on a method + created from an arbitrary callable. Instead, return False. + +- bpo-31310: Fix the multiprocessing.semaphore_tracker so it is reused by + child processes + +- bpo-31292: Fix ``setup.py check --restructuredtext`` for files containing + ``include`` directives. + +Documentation +------------- + +- bpo-36625: Remove obsolete comments from docstrings in fractions.Fraction + +- bpo-30840: Document relative imports + +- bpo-36523: Add docstring for io.IOBase.writelines(). + +- bpo-36425: New documentation translation: `Simplified Chinese + <https://docs.python.org/zh-cn/>`_. + +- bpo-36345: Avoid the duplication of code from ``Tools/scripts/serve.py`` + in using the :rst:dir:`literalinclude` directive for the basic + wsgiref-based web server in the documentation of :mod:`wsgiref`. + Contributed by Stéphane Wirtel. + +- bpo-36345: Using the code of the ``Tools/scripts/serve.py`` script as an + example in the :mod:`wsgiref` documentation. Contributed by Stéphane + Wirtel. + +- bpo-36157: Added Documention for PyInterpreterState_Main(). + +- bpo-33043: Updates the docs.python.org page with the addition of a + 'Contributing to Docs' link at the end of the page (between 'Reporting + Bugs' and 'About Documentation'). Updates the 'Found a Bug' page with + additional links and information in the Documentation Bugs section. + +- bpo-35581: @typing.type_check_only now allows type stubs to mark functions + and classes not available during runtime. + +- bpo-33832: Add glossary entry for 'magic method'. + +- bpo-32913: Added re.Match.groupdict example to regex HOWTO. + +Tests +----- + +- bpo-36719: regrtest now always detects uncollectable objects. Previously, + the check was only enabled by ``--findleaks``. The check now also works + with ``-jN/--multiprocess N``. ``--findleaks`` becomes a deprecated alias + to ``--fail-env-changed``. + +- bpo-36725: When using mulitprocessing mode (-jN), regrtest now better + reports errors if a worker process fails, and it exits immediately on a + worker thread failure or when interrupted. + +- bpo-36454: Change test_time.test_monotonic() to test only the lower bound + of elapsed time after a sleep command rather than the upper bound. This + prevents unnecessary test failures on slow buildbots. Patch by Victor + Stinner. + +- bpo-32424: Improve test coverage for xml.etree.ElementTree. Patch by + Gordon P. Hemsley. + +- bpo-32424: Fix typo in test_cyclic_gc() test for xml.etree.ElementTree. + Patch by Gordon P. Hemsley. + +- bpo-36635: Add a new :mod:`_testinternalcapi` module to test the internal + C API. + +- bpo-36629: Fix ``test_imap4_host_default_value()`` of ``test_imaplib``: + catch also :data:`errno.ENETUNREACH` error. + +- bpo-36611: Fix ``test_sys.test_getallocatedblocks()`` when + :mod:`tracemalloc` is enabled. + +- bpo-36560: Fix reference leak hunting in regrtest: compute also deltas (of + reference count, allocated memory blocks, file descriptor count) during + warmup, to ensure that everything is initialized before starting to hunt + reference leaks. + +- bpo-36565: Fix reference hunting (``python3 -m test -R 3:3``) when Python + has no built-in abc module. + +- bpo-31904: Port test_resource to VxWorks: skip tests cases setting + RLIMIT_FSIZE and RLIMIT_CPU. + +- bpo-31904: Fix test_tabnanny on VxWorks: adjust ENOENT error message. + +- bpo-36436: Fix ``_testcapi.pymem_buffer_overflow()``: handle memory + allocation failure. + +- bpo-31904: Fix test_utf8_mode on VxWorks: Python always use UTF-8 on + VxWorks. + +- bpo-36341: Fix tests that may fail with PermissionError upon calling + bind() on AF_UNIX sockets. + +Build +----- + +- bpo-36747: Remove the stale scriptsinstall Makefile target. + +- bpo-21536: On Unix, C extensions are no longer linked to libpython except + on Android and Cygwin. + + It is now possible for a statically linked Python to load a C extension + built using a shared library Python. + + When Python is embedded, ``libpython`` must not be loaded with + ``RTLD_LOCAL``, but ``RTLD_GLOBAL`` instead. Previously, using + ``RTLD_LOCAL``, it was already not possible to load C extensions which + were not linked to ``libpython``, such as C extensions of the standard + library built by the ``*shared*`` section of ``Modules/Setup``. + + distutils, python-config and python-config.py have been modified. + +- bpo-36707: ``./configure --with-pymalloc`` no longer adds the ``m`` flag + to SOABI (sys.implementation.cache_tag). Enabling or disabling pymalloc + has no impact on the ABI. + +- bpo-36635: Change ``PyAPI_FUNC(type)``, ``PyAPI_DATA(type)`` and + ``PyMODINIT_FUNC`` macros of ``pyport.h`` when ``Py_BUILD_CORE_MODULE`` is + defined. The ``Py_BUILD_CORE_MODULE`` define must be now be used to build + a C extension as a dynamic library accessing Python internals: export the + PyInit_xxx() function in DLL exports on Windows. + +- bpo-31904: Don't build the ``_crypt`` extension on VxWorks. + +- bpo-36618: Add ``-fmax-type-align=8`` to CFLAGS when clang compiler is + detected. The pymalloc memory allocator aligns memory on 8 bytes. On + x86-64, clang expects alignment on 16 bytes by default and so uses MOVAPS + instruction which can lead to segmentation fault. Instruct clang that + Python is limited to alignment on 8 bytes to use MOVUPS instruction + instead: slower but don't trigger a SIGSEGV if the memory is not aligned + on 16 bytes. Sadly, the flag must be added to ``CFLAGS`` and not just + ``CFLAGS_NODIST``, since third party C extensions can have the same issue. + +- bpo-36605: ``make tags`` and ``make TAGS`` now also parse + ``Modules/_io/*.c`` and ``Modules/_io/*.h``. + +- bpo-36465: Release builds and debug builds are now ABI compatible: + defining the ``Py_DEBUG`` macro no longer implies the ``Py_TRACE_REFS`` + macro, which introduces the only ABI incompatibility. The + ``Py_TRACE_REFS`` macro, which adds the :func:`sys.getobjects` function + and the :envvar:`PYTHONDUMPREFS` environment variable, can be set using + the new ``./configure --with-trace-refs`` build option. + +- bpo-36577: setup.py now correctly reports missing OpenSSL headers and + libraries again. + +- bpo-36544: Fix regression introduced in bpo-36146 refactoring setup.py + +- bpo-36508: ``python-config --ldflags`` no longer includes flags of the + ``LINKFORSHARED`` variable. The ``LINKFORSHARED`` variable must only be + used to build executables. + +- bpo-36503: Remove references to "aix3" and "aix4". Patch by M. Felt. + +Windows +------- + +- bpo-35920: Added platform.win32_edition() and platform.win32_is_iot(). + Added support for cross-compiling packages for Windows ARM32. Skip tests + that are not expected to work on Windows IoT Core ARM32. + +- bpo-36649: Remove trailing spaces for registry keys when installed via the + Store. + +- bpo-34144: Fixed activate.bat to correctly update codepage when chcp.com + returns dots in output. Patch by Lorenz Mende. + +- bpo-36509: Added preset-iot layout for Windows IoT ARM containers. This + layout doesn't contain UI components like tkinter or IDLE. It also doesn't + contain files to support on-target builds since Windows ARM32 builds must + be cross-compiled when using MSVC. + +- bpo-35941: enum_certificates function of the ssl module now returns + certificates from all available certificate stores inside windows in a + query instead of returning only certificates from the system wide + certificate store. This includes certificates from these certificate + stores: local machine, local machine enterprise, local machine group + policy, current user, current user group policy, services, users. + ssl.enum_crls() function is changed in the same way to return all + certificate revocation lists inside the windows certificate revocation + list stores. + +- bpo-36441: Fixes creating a venv when debug binaries are installed. + +- bpo-36085: Enable better DLL resolution on Windows by using safe DLL + search paths and adding :func:`os.add_dll_directory`. + +- bpo-36010: Add the venv standard library module to the nuget distribution + for Windows. + +- bpo-29515: Add the following socket module constants on Windows: + IPPROTO_AH IPPROTO_CBT IPPROTO_DSTOPTS IPPROTO_EGP IPPROTO_ESP + IPPROTO_FRAGMENT IPPROTO_GGP IPPROTO_HOPOPTS IPPROTO_ICLFXBM + IPPROTO_ICMPV6 IPPROTO_IDP IPPROTO_IGMP IPPROTO_IGP IPPROTO_IPV4 + IPPROTO_IPV6 IPPROTO_L2TP IPPROTO_MAX IPPROTO_ND IPPROTO_NONE IPPROTO_PGM + IPPROTO_PIM IPPROTO_PUP IPPROTO_RDP IPPROTO_ROUTING IPPROTO_SCTP + IPPROTO_ST + +- bpo-35947: Added current version of libffi to cpython-source-deps. Change + _ctypes to use current version of libffi on Windows. + +- bpo-34060: Report system load when running test suite on Windows. Patch by + Ammar Askar. Based on prior work by Jeremy Kloth. + +- bpo-31512: With the Windows 10 Creators Update, non-elevated users can now + create symlinks as long as the computer has Developer Mode enabled. + +macOS +----- + +- bpo-34602: Avoid failures setting macOS stack resource limit with + resource.setrlimit. This reverts an earlier fix for bpo-18075 which forced + a non-default stack size when building the interpreter executable on + macOS. + +IDLE +---- + +- bpo-36429: Fix starting IDLE with pyshell. Add idlelib.pyshell alias at + top; remove pyshell alias at bottom. Remove obsolete __name__=='__main__' + command. + +Tools/Demos +----------- + +- bpo-14546: Fix the argument handling in Tools/scripts/lll.py. + +C API +----- + +- bpo-36763: Fix memory leak in :c:func:`Py_SetStandardStreamEncoding`: + release memory if the function is called twice. + +- bpo-36641: :c:macro:`PyDoc_VAR(name)` and + :c:macro:`PyDoc_STRVAR(name,str)` now create ``static const char name[]`` + instead of ``static char name[]``. Patch by Inada Naoki. + +- bpo-36389: Change the value of ``CLEANBYTE``, ``DEADDYTE`` and + ``FORBIDDENBYTE`` internal constants used by debug hooks on Python memory + allocators (:c:func:`PyMem_SetupDebugHooks` function). Byte patterns + ``0xCB``, ``0xDB`` and ``0xFB`` have been replaced with ``0xCD``, ``0xDD`` + and ``0xFD`` to use the same values than Windows CRT debug ``malloc()`` + and ``free()``. + +- bpo-36443: Since Python 3.7.0, calling :c:func:`Py_DecodeLocale` before + :c:func:`Py_Initialize` produces mojibake if the ``LC_CTYPE`` locale is + coerced and/or if the UTF-8 Mode is enabled by the user configuration. The + LC_CTYPE coercion and UTF-8 Mode are now disabled by default to fix the + mojibake issue. They must now be enabled explicitly (opt-in) using the new + :c:func:`_Py_PreInitialize` API with ``_PyPreConfig``. + +- bpo-36025: Fixed an accidental change to the datetime C API where the + arguments to the :c:func:`PyDate_FromTimestamp` function were incorrectly + interpreted as a single timestamp rather than an arguments tuple, which + causes existing code to start raising :exc:`TypeError`. The + backwards-incompatible change was only present in alpha releases of Python + 3.8. Patch by Paul Ganssle. + +- bpo-35810: Modify ``PyObject_Init`` to correctly increase the refcount of + heap- allocated Type objects. Also fix the refcounts of the heap-allocated + types that were either doing this manually or not decreasing the type's + refcount in tp_dealloc + + +What's New in Python 3.8.0 alpha 3? +=================================== + +*Release date: 2019-03-25* + +Security +-------- + +- bpo-36216: Changes urlsplit() to raise ValueError when the URL contains + characters that decompose under IDNA encoding (NFKC-normalization) into + characters that affect how the URL is parsed. + +- bpo-35121: Don't send cookies of domain A without Domain attribute to + domain B when domain A is a suffix match of domain B while using a + cookiejar with :class:`http.cookiejar.DefaultCookiePolicy` policy. Patch + by Karthikeyan Singaravelan. + +Core and Builtins +----------------- + +- bpo-36421: Fix a possible double decref in _ctypes.c's + ``PyCArrayType_new()``. + +- bpo-36412: Fix a possible crash when creating a new dictionary. + +- bpo-36398: Fix a possible crash in ``structseq_repr()``. + +- bpo-36256: Fix bug in parsermodule when parsing a state in a DFA that has + two or more arcs with labels of the same type. Patch by Pablo Galindo. + +- bpo-36365: repr(structseq) is no longer limited to 512 bytes. + +- bpo-36374: Fix a possible null pointer dereference in + ``merge_consts_recursive()``. Patch by Zackery Spytz. + +- bpo-36236: At Python initialization, the current directory is no longer + prepended to :data:`sys.path` if it has been removed. + +- bpo-36352: Python initialization now fails with an error, rather than + silently truncating paths, if a path is too long. + +- bpo-36301: Python initialization now fails if decoding ``pybuilddir.txt`` + configuration file fails at startup. + +- bpo-36333: Fix leak in _PyRuntimeState_Fini. Contributed by Stéphane + Wirtel. + +- bpo-36332: The builtin :func:`compile` can now handle AST objects that + contain assignment expressions. Patch by Pablo Galindo. + +- bpo-36282: Improved error message for too much positional arguments in + some builtin functions. + +- bpo-30040: New empty dict uses fewer memory for now. It used more memory + than empty dict created by ``dict.clear()``. And empty dict creation and + deletion is about 2x faster. Patch by Inada Naoki. + +- bpo-36262: Fix an unlikely memory leak on conversion from string to float + in the function ``_Py_dg_strtod()`` used by ``float(str)``, + ``complex(str)``, :func:`pickle.load`, :func:`marshal.load`, etc. + +- bpo-36252: Update Unicode databases to version 12.0.0. + +- bpo-36218: Fix a segfault occurring when sorting a list of heterogeneous + values. Patch contributed by Rémi Lapeyre and Elliot Gorokhovsky. + +- bpo-36188: Cleaned up left-over vestiges of Python 2 unbound method + handling in method objects and documentation. Patch by Martijn Pieters + +- bpo-36124: Add a new interpreter-specific dict and expose it in the C-API + via PyInterpreterState_GetDict(). This parallels PyThreadState_GetDict(). + However, extension modules should continue using PyModule_GetState() for + their own internal per-interpreter state. + +- bpo-35975: Add a ``feature_version`` flag to ``ast.parse()`` (documented) + and ``compile()`` (hidden) that allows tweaking the parser to support + older versions of the grammar. In particular, if ``feature_version`` is 5 + or 6, the hacks for the ``async`` and ``await`` keyword from PEP 492 are + reinstated. (For 7 or higher, these are unconditionally treated as + keywords, but they are still special tokens rather than ``NAME`` tokens + that the parser driver recognizes.) + +- bpo-31904: Use UTF-8 as the system encoding on VxWorks. + +- bpo-36048: The :meth:`~object.__index__` special method will be used + instead of :meth:`~object.__int__` for implicit conversion of Python + numbers to C integers. Using the ``__int__()`` method in implicit + conversions has been deprecated. + +- bpo-35808: Retire pgen and use a modified version of pgen2 to generate the + parser. Patch by Pablo Galindo. + +Library +------- + +- bpo-36401: The class documentation created by pydoc now has a separate + section for readonly properties. + +- bpo-36320: The typing.NamedTuple() class has deprecated the _field_types + attribute in favor of the __annotations__ attribute which carried the same + information. Also, both attributes were converted from OrderedDict to a + regular dict. + +- bpo-34745: Fix :mod:`asyncio` ssl memory issues caused by circular + references + +- bpo-36324: Add method to statistics.NormalDist for computing the inverse + cumulative normal distribution. + +- bpo-36321: collections.namedtuple() misspelled the name of an attribute. + To be consistent with typing.NamedTuple, the attribute name should have + been "_field_defaults" instead of "_fields_defaults". For backwards + compatibility, both spellings are now created. The misspelled version may + be removed in the future. + +- bpo-36297: "unicode_internal" codec is removed. It was deprecated since + Python 3.3. Patch by Inada Naoki. + +- bpo-36298: Raise ModuleNotFoundError in pyclbr when a module can't be + found. Thanks to 'mental' for the bug report. + +- bpo-36268: Switch the default format used for writing tars with + mod:`tarfile` to the modern POSIX.1-2001 pax standard, from the + vendor-specific GNU. Contributed by C.A.M. Gerlach. + +- bpo-36285: Fix integer overflows in the array module. Patch by Stephan + Hohe. + +- bpo-31904: Add _signal module support for VxWorks. + +- bpo-36272: :mod:`logging` does not silently ignore RecursionError anymore. + Patch contributed by Rémi Lapeyre. + +- bpo-36280: Add a kind field to ast.Constant. It is 'u' if the literal has + a 'u' prefix (i.e. a Python 2 style unicode literal), else None. + +- bpo-35931: The :mod:`pdb` ``debug`` command now gracefully handles all + exceptions. + +- bpo-36251: Fix format strings used for stderrprinter and re.Match reprs. + Patch by Stephan Hohe. + +- bpo-36235: Fix ``CFLAGS`` in ``customize_compiler()`` of + ``distutils.sysconfig``: when the ``CFLAGS`` environment variable is + defined, don't override ``CFLAGS`` variable with the ``OPT`` variable + anymore. Initial patch written by David Malcolm. + +- bpo-35807: Update ensurepip to install pip 19.0.3 and setuptools 40.8.0. + +- bpo-36139: Release GIL when closing :class:`~mmap.mmap` objects. + +- bpo-36179: Fix two unlikely reference leaks in _hashopenssl. The leaks + only occur in out-of-memory cases. + +- bpo-36169: Add overlap() method to statistics.NormalDist. Computes the + overlapping coefficient for two normal distributions. + +- bpo-36103: Default buffer size used by ``shutil.copyfileobj()`` is changed + from 16 KiB to 64 KiB on non-Windows platform to reduce system call + overhead. Contributed by Inada Naoki. + +- bpo-36130: Fix ``pdb`` with ``skip=...`` when stepping into a frame + without a ``__name__`` global. Patch by Anthony Sottile. + +- bpo-35652: shutil.copytree(copy_function=...) erroneously pass DirEntry + instead of a path string. + +- bpo-35178: Ensure custom :func:`warnings.formatwarning` function can + receive `line` as positional argument. Based on patch by Tashrif Billah. + +- bpo-36106: Resolve potential name clash with libm's sinpi(). Patch by + Dmitrii Pasechnik. + +- bpo-36091: Clean up reference to async generator in Lib/types. Patch by + Henry Chen. + +- bpo-36043: :class:`FileCookieJar` supports :term:`path-like object`. + Contributed by Stéphane Wirtel + +- bpo-35899: Enum has been fixed to correctly handle empty strings and + strings with non-Latin characters (ie. 'α', 'א') without crashing. + Original patch contributed by Maxwell. Assisted by Stéphane Wirtel. + +- bpo-21269: Add ``args`` and ``kwargs`` properties to mock call objects. + Contributed by Kumar Akshay. + +- bpo-30670: `pprint.pp` has been added to pretty-print objects with + dictionary keys being sorted with their insertion order by default. + Parameter *sort_dicts* has been added to `pprint.pprint`, `pprint.pformat` + and `pprint.PrettyPrinter`. Contributed by Rémi Lapeyre. + +- bpo-35843: Implement ``__getitem__`` for ``_NamespacePath``. Patch by + Anthony Sottile. + +- bpo-35802: Clean up code which checked presence of ``os.stat`` / + ``os.lstat`` / ``os.chmod`` which are always present. Patch by Anthony + Sottile. + +- bpo-35715: Librates the return value of a ProcessPoolExecutor + _process_worker after it's no longer needed to free memory + +- bpo-35493: Use :func:`multiprocessing.connection.wait` instead of polling + each 0.2 seconds for worker updates in :class:`multiprocessing.Pool`. + Patch by Pablo Galindo. + +- bpo-35661: Store the venv prompt in pyvenv.cfg. + +- bpo-35121: Don't set cookie for a request when the request path is a + prefix match of the cookie's path attribute but doesn't end with "/". + Patch by Karthikeyan Singaravelan. + +- bpo-21478: Calls to a child function created with + :func:`unittest.mock.create_autospec` should propagate to the parent. + Patch by Karthikeyan Singaravelan. + +- bpo-35198: Fix C++ extension compilation on AIX + +Documentation +------------- + +- bpo-36329: Declare the path of the Python binary for the usage of + ``Tools/scripts/serve.py`` when executing ``make -C Doc/ serve``. + Contributed by Stéphane Wirtel + +- bpo-36138: Improve documentation about converting datetime.timedelta to + scalars. + +- bpo-21314: A new entry was added to the Core Language Section of the + Programming FAQ, which explaines the usage of slash(/) in the signature of + a function. Patch by Lysandros Nikolaou + +Tests +----- + +- bpo-36234: test_posix.PosixUidGidTests: add tests for invalid uid/gid type + (str). Initial patch written by David Malcolm. + +- bpo-29571: Fix ``test_re.test_locale_flag()``: use + ``locale.getpreferredencoding()`` rather than ``locale.getlocale()`` to + get the locale encoding. With some locales, ``locale.getlocale()`` returns + the wrong encoding. + +- bpo-36123: Fix race condition in test_socket. + +Build +----- + +- bpo-36356: Fix leaks that led to build failure when configured with + address sanitizer. + +- bpo-36146: Add ``TEST_EXTENSIONS`` constant to ``setup.py`` to allow to + not build test extensions like ``_testcapi``. + +- bpo-36146: Fix setup.py on macOS: only add ``/usr/include/ffi`` to include + directories of _ctypes, not for all extensions. + +- bpo-31904: Enable build system to cross-build for VxWorks RTOS. + +Windows +------- + +- bpo-36312: Fixed decoders for the following code pages: 50220, 50221, + 50222, 50225, 50227, 50229, 57002 through 57011, 65000 and 42. + +- bpo-36264: Don't honor POSIX ``HOME`` in ``os.path.expanduser`` on + windows. Patch by Anthony Sottile. + +- bpo-24643: Fix name collisions due to ``#define timezone _timezone`` in + PC/pyconfig.h. + +IDLE +---- + +- bpo-36405: Use dict unpacking in idlelib. + +- bpo-36396: Remove fgBg param of idlelib.config.GetHighlight(). This param + was only used twice and changed the return type. + +- bpo-36176: Fix IDLE autocomplete & calltip popup colors. Prevent conflicts + with Linux dark themes (and slightly darken calltip background). + +- bpo-23205: For the grep module, add tests for findfiles, refactor + findfiles to be a module-level function, and refactor findfiles to use + os.walk. + +- bpo-23216: Add docstrings to IDLE search modules. + +- bpo-36152: Remove colorizer.ColorDelegator.close_when_done and the + corresponding argument of .close(). In IDLE, both have always been None + or False since 2007. + +- bpo-32129: Avoid blurry IDLE application icon on macOS with Tk 8.6. Patch + by Kevin Walzer. + +- bpo-36096: Refactor class variables to instance variables in colorizer. + +- bpo-30348: Increase test coverage of idlelib.autocomplete by 30%. Patch by + Louie Lu + +Tools/Demos +----------- + +- bpo-35132: Fix py-list and py-bt commands of python-gdb.py on gdb7. + +- bpo-32217: Fix freeze script on Windows. + +C API +----- + +- bpo-36381: Raise ``DeprecationWarning`` when '#' formats are used for + building or parsing values without ``PY_SSIZE_T_CLEAN``. + +- bpo-36142: The whole coreconfig.h header is now excluded from + Py_LIMITED_API. Move functions definitions into a new internal + pycore_coreconfig.h header. + + +What's New in Python 3.8.0 alpha 2? +=================================== + +*Release date: 2019-02-25* + +Core and Builtins +----------------- + +- bpo-36052: Raise a :exc:`SyntaxError` when assigning a value to + `__debug__` with the Assignment Operator. Contributed by Stéphane Wirtel + and Pablo Galindo. + +- bpo-36012: Doubled the speed of class variable writes. When a non-dunder + attribute was updated, there was an unnecessary call to update slots. + +- bpo-35942: The error message emitted when returning invalid types from + ``__fspath__`` in interfaces that allow passing :class:`~os.PathLike` + objects has been improved and now it does explain the origin of the error. + +- bpo-36016: ``gc.get_objects`` can now receive an optional parameter + indicating a generation to get objects from. Patch by Pablo Galindo. + +- bpo-1054041: When the main interpreter exits due to an uncaught + KeyboardInterrupt, the process now exits in the appropriate manner for its + parent process to detect that a SIGINT or ^C terminated the process. This + allows shells and batch scripts to understand that the user has asked them + to stop. + +- bpo-35992: Fix ``__class_getitem__()`` not being called on a class with a + custom non-subscriptable metaclass. + +- bpo-35993: Fix a crash on fork when using subinterpreters. Contributed by + Stéphane Wirtel + +- bpo-35991: Fix a potential double free in Modules/_randommodule.c. + +- bpo-35961: Fix a crash in slice_richcompare(): use strong references + rather than stolen references for the two temporary internal tuples. + +- bpo-35911: Enable the creation of cell objects by adding a + ``cell.__new__`` method, and expose the type ``cell`` in ``Lib/types.py`` + under the name CellType. Patch by Pierre Glaser. + +- bpo-12822: Use monotonic clock for ``pthread_cond_timedwait`` when + ``pthread_condattr_setclock`` and ``CLOCK_MONOTONIC`` are available. + +- bpo-15248: The compiler emits now syntax warnings in the case when a comma + is likely missed before tuple or list. + +- bpo-35886: The implementation of PyInterpreterState has been moved into + the internal header files (guarded by Py_BUILD_CORE). + +- bpo-31506: Clarify the errors reported when ``object.__new__`` and + ``object.__init__`` receive more than one argument. Contributed by Sanyam + Khurana. + +- bpo-35724: Signal-handling is now guaranteed to happen relative to the + main interpreter. + +- bpo-33608: We added a new internal _Py_AddPendingCall() that operates + relative to the provided interpreter. This allows us to use the existing + implementation to ask another interpreter to do work that cannot be done + in the current interpreter, like decref an object the other interpreter + owns. The existing Py_AddPendingCall() only operates relative to the main + interpreter. + +- bpo-33989: Fix a possible crash in :meth:`list.sort` when sorting objects + with ``ob_type->tp_richcompare == NULL``. Patch by Zackery Spytz. + +Library +------- + +- bpo-35512: :func:`unittest.mock.patch.dict` used as a decorator with + string target resolves the target during function call instead of during + decorator construction. Patch by Karthikeyan Singaravelan. + +- bpo-36018: Add statistics.NormalDist, a tool for creating and manipulating + normal distributions of random variable. Features a composite class that + treats the mean and standard deviation of measurement data as single + entity. + +- bpo-35904: Added statistics.fmean() as a faster, floating point variant of + the existing mean() function. + +- bpo-35918: Removed broken ``has_key`` method from + multiprocessing.managers.SyncManager.dict. Contributed by Rémi Lapeyre. + +- bpo-18283: Add support for bytes to :func:`shutil.which`. + +- bpo-35960: Fix :func:`dataclasses.field` throwing away empty mapping + objects passed as metadata. + +- bpo-35500: Write expected and actual call parameters on separate lines in + :meth:`unittest.mock.Mock.assert_called_with` assertion errors. + Contributed by Susan Su. + +- bpo-35931: The :mod:`pdb` ``debug`` command now gracefully handles syntax + errors. + +- bpo-24209: In http.server script, rely on getaddrinfo to bind to preferred + address based on the bind parameter. Now default bind or binding to a name + may bind to IPv6 or dual-stack, depending on the environment. + +- bpo-35321: Set ``__spec__.origin`` of ``_frozen_importlib`` to frozen so + that it matches the behavior of ``_frozen_importlib_external``. Patch by + Nina Zakharenko. + +- bpo-35378: Fix a reference issue inside :class:`multiprocessing.Pool` that + caused the pool to remain alive if it was deleted without being closed or + terminated explicitly. A new strong reference is added to the pool + iterators to link the lifetime of the pool to the lifetime of its + iterators so the pool does not get destroyed if a pool iterator is still + alive. + +- bpo-34294: re module, fix wrong capturing groups in rare cases. + :func:`re.search`, :func:`re.findall`, :func:`re.sub` and other functions + that scan through string looking for a match, should reset capturing + groups between two match attempts. Patch by Ma Lin. + +- bpo-35615: :mod:`weakref`: Fix a RuntimeError when copying a + WeakKeyDictionary or a WeakValueDictionary, due to some keys or values + disappearing while iterating. + +- bpo-35606: Implement :func:`math.prod` as analogous function to + :func:`sum` that returns the product of a 'start' value (default: 1) times + an iterable of numbers. Patch by Pablo Galindo. + +- bpo-32417: Performing arithmetic between :class:`datetime.datetime` + subclasses and :class:`datetime.timedelta` now returns an object of the + same type as the :class:`datetime.datetime` subclass. As a result, + :meth:`datetime.datetime.astimezone` and alternate constructors like + :meth:`datetime.datetime.now` and :meth:`datetime.fromtimestamp` called + with a ``tz`` argument now *also* retain their subclass. + +- bpo-35153: Add *headers* optional keyword-only parameter to + :class:`xmlrpc.client.ServerProxy`, :class:`xmlrpc.client.Transport` and + :class:`xmlrpc.client.SafeTransport`. Patch by Cédric Krier. + +- bpo-34572: Fix C implementation of pickle.loads to use importlib's locking + mechanisms, and thereby avoid using partially-loaded modules. Patch by Tim + Burgess. + +Documentation +------------- + +- bpo-36083: Fix formatting of --check-hash-based-pycs options in the + manpage Synopsis. + +- bpo-36007: Bump minimum sphinx version to 1.8. Patch by Anthony Sottile. + +- bpo-22062: Update documentation and docstrings for pathlib. Original patch + by Mike Short. + +Tests +----- + +- bpo-27313: Avoid test_ttk_guionly ComboboxTest failure with macOS Cocoa + Tk. + +- bpo-36019: Add test.support.TEST_HTTP_URL and replace references of + http://www.example.com by this new constant. Contributed by Stéphane + Wirtel. + +- bpo-36037: Fix test_ssl for strict OpenSSL configuration like RHEL8 strict + crypto policy. Use older TLS version for minimum TLS version of the server + SSL context if needed, to test TLS version older than default minimum TLS + version. + +- bpo-35798: Added :func:`test.support.check_syntax_warning`. + +- bpo-35505: Make test_imap4_host_default_value independent on whether the + local IMAP server is running. + +- bpo-35917: multiprocessing: provide unit tests for SyncManager and + SharedMemoryManager classes + all the shareable types which are supposed + to be supported by them. (patch by Giampaolo Rodola) + +- bpo-35704: Skip ``test_shutil.test_unpack_archive_xztar`` to prevent a + MemoryError on 32-bit AIX when MAXDATA setting is less than 0x20000000. + + Patch by Michael Felt (aixtools) + +- bpo-34720: Assert m_state != NULL to mimic GC traversal functions that do + not correctly handle module creation when the module state has not been + created. + +Windows +------- + +- bpo-35976: Added ARM build support to Windows build files in PCBuild. + +- bpo-35692: ``pathlib`` no longer raises when checking file and directory + existence on drives that are not ready + +- bpo-35872: Uses the base Python executable when invoking venv in a virtual + environment + +- bpo-35873: Prevents venv paths being inherited by child processes + +- bpo-35299: Fix sysconfig detection of the source directory and distutils + handling of pyconfig.h during PGO profiling + +IDLE +---- + +- bpo-24310: IDLE -- Document settings dialog font tab sample. + +- bpo-35833: Revise IDLE doc for control codes sent to Shell. Add a code + example block. + +- bpo-35689: Add docstrings and unittests for colorizer.py. + + +What's New in Python 3.8.0 alpha 1? +=================================== + +*Release date: 2019-02-03* + +Security +-------- + +- bpo-35746: [CVE-2019-5010] Fix a NULL pointer deref in ssl module. The + cert parser did not handle CRL distribution points with empty DP or URI + correctly. A malicious or buggy certificate can result into segfault. + Vulnerability (TALOS-2018-0758) reported by Colin Read and Nicolas Edet of + Cisco. + +- bpo-34812: The :option:`-I` command line option (run Python in isolated + mode) is now also copied by the :mod:`multiprocessing` and + :mod:`distutils` modules when spawning child processes. Previously, only + :option:`-E` and :option:`-s` options (enabled by :option:`-I`) were + copied. + +- bpo-34791: The xml.sax and xml.dom.domreg no longer use environment + variables to override parser implementations when + sys.flags.ignore_environment is set by -E or -I arguments. + +- bpo-17239: The xml.sax and xml.dom.minidom parsers no longer processes + external entities by default. External DTD and ENTITY declarations no + longer load files or create network connections. + +- bpo-34623: CVE-2018-14647: The C accelerated _elementtree module now + initializes hash randomization salt from _Py_HashSecret instead of + libexpat's default CSPRNG. + +- bpo-34405: Updated to OpenSSL 1.1.0i for Windows builds. + +- bpo-33871: Fixed sending the part of the file in :func:`os.sendfile` on + macOS. Using the *trailers* argument could cause sending more bytes from + the input file than was specified. + +- bpo-32533: Fixed thread-safety of error handling in _ssl. + +- bpo-33136: Harden ssl module against LibreSSL CVE-2018-8970. + X509_VERIFY_PARAM_set1_host() is called with an explicit namelen. A new + test ensures that NULL bytes are not allowed. + +- bpo-33001: Minimal fix to prevent buffer overrun in os.symlink on Windows + +- bpo-32981: Regexes in difflib and poplib were vulnerable to catastrophic + backtracking. These regexes formed potential DOS vectors (REDOS). They + have been refactored. This resolves CVE-2018-1060 and CVE-2018-1061. Patch + by Jamie Davis. + +- bpo-28414: The ssl module now allows users to perform their own IDN + en/decoding when using SNI. + +Core and Builtins +----------------- + +- bpo-35877: Make parenthesis optional for named expressions in while + statement. Patch by Karthikeyan Singaravelan. + +- bpo-35814: Allow same right hand side expressions in annotated assignments + as in normal ones. In particular, ``x: Tuple[int, int] = 1, 2`` (without + parentheses on the right) is now allowed. + +- bpo-35766: Add the option to parse PEP 484 type comments in the ast + module. (Off by default.) This is merging the key functionality of the + third party fork thereof, + [typed_ast](https://github.com/python/typed_ast). + +- bpo-35713: Reorganize Python initialization to get working exceptions and + sys.stderr earlier. + +- bpo-33416: Add end line and end column position information to the Python + AST nodes. This is a C-level backwards incompatible change. + +- bpo-35720: Fixed a minor memory leak in pymain_parse_cmdline_impl function + in Modules/main.c + +- bpo-35634: ``func(**kwargs)`` will now raise an error when ``kwargs`` is a + mapping containing multiple entries with the same key. An error was + already raised when other keyword arguments are passed before ``**kwargs`` + since Python 3.6. + +- bpo-35623: Fix a crash when sorting very long lists. Patch by Stephan + Hohe. + +- bpo-35214: clang Memory Sanitizer build instrumentation was added to work + around false positives from posix, socket, time, test_io, and + test_faulthandler. + +- bpo-35560: Fix an assertion error in :func:`format` in debug build for + floating point formatting with "n" format, zero padding and small width. + Release build is not impacted. Patch by Karthikeyan Singaravelan. + +- bpo-35552: Format characters ``%s`` and ``%V`` in + :c:func:`PyUnicode_FromFormat` and ``%s`` in :c:func:`PyBytes_FromFormat` + no longer read memory past the limit if *precision* is specified. + +- bpo-35504: Fix segfaults and :exc:`SystemError`\ s when deleting certain + attributes. Patch by Zackery Spytz. + +- bpo-35504: Fixed a SystemError when delete the characters_written + attribute of an OSError. + +- bpo-35494: Improved syntax error messages for unbalanced parentheses in + f-string. + +- bpo-35444: Fixed error handling in pickling methods when fail to look up + builtin "getattr". Sped up pickling iterators. + +- bpo-35436: Fix various issues with memory allocation error handling. + Patch by Zackery Spytz. + +- bpo-35423: Separate the signal handling trigger in the eval loop from the + "pending calls" machinery. There is no semantic change and the difference + in performance is insignificant. + +- bpo-35357: Internal attributes' names of unittest.mock._Call and + unittest.mock.MagicProxy (name, parent & from_kall) are now prefixed with + _mock_ in order to prevent clashes with widely used object attributes. + Fixed minor typo in test function name. + +- bpo-35372: Fixed the code page decoder for input longer than 2 GiB + containing undecodable bytes. + +- bpo-35336: Fix PYTHONCOERCECLOCALE=1 environment variable: only coerce the + C locale if the LC_CTYPE locale is "C". + +- bpo-31241: The *lineno* and *col_offset* attributes of AST nodes for list + comprehensions, generator expressions and tuples are now point to the + opening parenthesis or square brace. For tuples without parenthesis they + point to the position of the first item. + +- bpo-33954: For :meth:`str.format`, :meth:`float.__format__` and + :meth:`complex.__format__` methods for non-ASCII decimal point when using + the "n" formatter. + +- bpo-35269: Fix a possible segfault involving a newly-created coroutine. + Patch by Zackery Spytz. + +- bpo-35224: Implement :pep:`572` (assignment expressions). Patch by Emily + Morehouse. + +- bpo-32492: Speed up :class:`namedtuple` attribute access by 1.6x using a C + fast-path for the name descriptors. Patch by Pablo Galindo. + +- bpo-35214: Fixed an out of bounds memory access when parsing a truncated + unicode escape sequence at the end of a string such as ``'\N'``. It would + read one byte beyond the end of the memory allocation. + +- bpo-35214: The interpreter and extension modules have had annotations + added so that they work properly under clang's Memory Sanitizer. A new + configure flag --with-memory-sanitizer has been added to make test builds + of this nature easier to perform. + +- bpo-35193: Fix an off by one error in the bytecode peephole optimizer + where it could read bytes beyond the end of bounds of an array when + removing unreachable code. This bug was present in every release of Python + 3.6 and 3.7 until now. + +- bpo-35169: Improved error messages for forbidden assignments. + +- bpo-34022: Fix handling of hash-based bytecode files in :mod:`zipimport`. + Patch by Elvis Pranskevichus. + +- bpo-28401: Debug builds will no longer to attempt to import extension + modules built for the ABI as they were never compatible to begin with. + Patch by Stefano Rivera. + +- bpo-29341: Clarify in the docstrings of :mod:`os` methods that path-like + objects are also accepted as input parameters. + +- bpo-35050: :mod:`socket`: Fix off-by-one bug in length check for + ``AF_ALG`` name and type. + +- bpo-29743: Raise :exc:`ValueError` instead of :exc:`OverflowError` in case + of a negative ``_length_`` in a :class:`ctypes.Array` subclass. Also + raise :exc:`TypeError` instead of :exc:`AttributeError` for non-integer + ``_length_``. Original patch by Oren Milman. + +- bpo-16806: Fix ``lineno`` and ``col_offset`` for multi-line string tokens. + +- bpo-35029: :exc:`SyntaxWarning` raised as an exception at code generation + time will be now replaced with a :exc:`SyntaxError` for better error + reporting. + +- bpo-34983: Expose :meth:`symtable.Symbol.is_nonlocal` in the symtable + module. Patch by Pablo Galindo. + +- bpo-34974: :class:`bytes` and :class:`bytearray` constructors no longer + convert unexpected exceptions (e.g. :exc:`MemoryError` and + :exc:`KeyboardInterrupt`) to :exc:`TypeError`. + +- bpo-34939: Allow annotated names in module namespace that are declared + global before the annotation happens. Patch by Pablo Galindo. + +- bpo-34973: Fixed crash in :func:`bytes` when the :class:`list` argument is + mutated while it is iterated. + +- bpo-34876: The *lineno* and *col_offset* attributes of the AST for + decorated function and class refer now to the position of the + corresponding ``def``, ``async def`` and ``class`` instead of the position + of the first decorator. This leads to more correct line reporting in + tracing. This is the only case when the position of child AST nodes can + precede the position of the parent AST node. + +- bpo-34879: Fix a possible null pointer dereference in bytesobject.c. + Patch by Zackery Spytz. + +- bpo-34784: Fix the implementation of PyStructSequence_NewType in order to + create heap allocated StructSequences. + +- bpo-32912: A :exc:`SyntaxWarning` is now emitted instead of a + :exc:`DeprecationWarning` for invalid escape sequences in string and bytes + literals. + +- bpo-34854: Fixed a crash in compiling string annotations containing a + lambda with a keyword-only argument that doesn't have a default value. + +- bpo-34850: The compiler now produces a :exc:`SyntaxWarning` when identity + checks (``is`` and ``is not``) are used with certain types of literals + (e.g. strings, ints). These can often work by accident in CPython, but + are not guaranteed by the language spec. The warning advises users to use + equality tests (``==`` and ``!=``) instead. + +- bpo-34824: Fix a possible null pointer dereference in Modules/_ssl.c. + Patch by Zackery Spytz. + +- bpo-30156: The C function ``property_descr_get()`` uses a "cached" tuple + to optimize function calls. But this tuple can be discovered in debug mode + with :func:`sys.getobjects()`. Remove the optimization, it's not really + worth it and it causes 3 different crashes last years. + +- bpo-34762: Fix contextvars C API to use PyObject* pointer types. + +- bpo-34751: The hash function for tuples is now based on xxHash which gives + better collision results on (formerly) pathological cases. Additionally, + on 64-bit systems it improves tuple hashes in general. Patch by Jeroen + Demeyer with substantial contributions by Tim Peters. + +- bpo-34735: Fix a memory leak in Modules/timemodule.c. Patch by Zackery + Spytz. + +- bpo-34683: Fixed a bug where some SyntaxError error pointed to locations + that were off-by-one. + +- bpo-34651: Only allow the main interpreter to fork. The avoids the + possibility of affecting the main interpreter, which is critical to + operation of the runtime. + +- bpo-34653: Remove unused function PyParser_SimpleParseStringFilename. + +- bpo-32236: Warn that line buffering is not supported if :func:`open` is + called with binary mode and ``buffering=1``. + +- bpo-34641: Further restrict the syntax of the left-hand side of keyword + arguments in function calls. In particular, ``f((keyword)=arg)`` is now + disallowed. + +- bpo-34637: Make the *start* argument to *sum()* visible as a keyword + argument. + +- bpo-1621: Do not assume signed integer overflow behavior (C undefined + behavior) when performing set hash table resizing. + +- bpo-34588: Fix an off-by-one in the recursive call pruning feature of + traceback formatting. + +- bpo-34485: On Windows, the LC_CTYPE is now set to the user preferred + locale at startup. Previously, the LC_CTYPE locale was "C" at startup, but + changed when calling setlocale(LC_CTYPE, "") or setlocale(LC_ALL, ""). + +- bpo-34485: Standard streams like sys.stdout now use the "surrogateescape" + error handler, instead of "strict", on the POSIX locale (when the C locale + is not coerced and the UTF-8 Mode is disabled). + +- bpo-34485: Fix the error handler of standard streams like sys.stdout: + PYTHONIOENCODING=":" is now ignored instead of setting the error handler + to "strict". + +- bpo-34485: Python now gets the locale encoding with C code to initialize + the encoding of standard streams like sys.stdout. Moreover, the encoding + is now initialized to the Python codec name to get a normalized encoding + name and to ensure that the codec is loaded. The change avoids importing + _bootlocale and _locale modules at startup by default. + +- bpo-34527: On FreeBSD, Py_DecodeLocale() and Py_EncodeLocale() now also + forces the ASCII encoding if the LC_CTYPE locale is "POSIX", not only if + the LC_CTYPE locale is "C". + +- bpo-34527: The UTF-8 Mode is now also enabled by the "POSIX" locale, not + only by the "C" locale. + +- bpo-34403: On HP-UX with C or POSIX locale, sys.getfilesystemencoding() + now returns "ascii" instead of "roman8" (when the UTF-8 Mode is disabled + and the C locale is not coerced). + +- bpo-34523: The Python filesystem encoding is now read earlier during the + Python initialization. + +- bpo-12458: Tracebacks show now correct line number for subexpressions in + multiline expressions. Tracebacks show now the line number of the first + line for multiline expressions instead of the line number of the last + subexpression. + +- bpo-34408: Prevent a null pointer dereference and resource leakage in + ``PyInterpreterState_New()``. + +- bpo-34400: Fix undefined behavior in parsetok.c. Patch by Zackery Spytz. + +- bpo-33073: Added as_integer_ratio to ints to make them more interoperable + with floats. + +- bpo-34377: Update valgrind suppression list to use + ``_PyObject_Free``/``_PyObject_Realloc`` instead of + ``PyObject_Free``/``PyObject_Realloc``. + +- bpo-34353: Added the "socket" option in the `stat.filemode()` Python + implementation to match the C implementation. + +- bpo-34320: Fix ``dict(od)`` didn't copy iteration order of OrderedDict. + +- bpo-34113: Fixed crash on debug builds when opcode stack was adjusted with + negative numbers. Patch by Constantin Petrisor. + +- bpo-34100: Compiler now merges constants in tuples and frozensets + recursively. Code attributes like ``co_names`` are merged too. + +- bpo-34151: Performance of list concatenation, repetition and slicing + operations is slightly improved. Patch by Sergey Fedoseev. + +- bpo-34170: -X dev: it is now possible to override the memory allocator + using PYTHONMALLOC even if the developer mode is enabled. + +- bpo-33237: Improved :exc:`AttributeError` message for partially + initialized module. + +- bpo-34149: Fix min and max functions to get default behavior when key is + None. + +- bpo-34125: Profiling of unbound built-in methods now works when + ``**kwargs`` is given. + +- bpo-34141: Optimized pickling atomic types (None, bool, int, float, bytes, + str). + +- bpo-34126: Fix crashes when profiling certain invalid calls of unbound + methods. Patch by Jeroen Demeyer. + +- bpo-24618: Fixed reading invalid memory when create the code object with + too small varnames tuple or too large argument counts. + +- bpo-34068: In :meth:`io.IOBase.close`, ensure that the + :attr:`~io.IOBase.closed` attribute is not set with a live exception. + Patch by Zackery Spytz and Serhiy Storchaka. + +- bpo-34087: Fix buffer overflow while converting unicode to numeric values. + +- bpo-34080: Fixed a memory leak in the compiler when it raised some + uncommon errors during tokenizing. + +- bpo-34066: Disabled interruption by Ctrl-C between calling ``open()`` and + entering a **with** block in ``with open()``. + +- bpo-34042: Fix dict.copy() to maintain correct total refcount (as reported + by sys.gettotalrefcount()). + +- bpo-33418: Fix potential memory leak in function object when it creates + reference cycle. + +- bpo-33985: Implement contextvars.ContextVar.name attribute. + +- bpo-33956: Update vendored Expat library copy to version 2.2.5. + +- bpo-24596: Decref the module object in :c:func:`PyRun_SimpleFileExFlags` + before calling :c:func:`PyErr_Print()`. Patch by Zackery Spytz. + +- bpo-33451: Close directly executed pyc files before calling + ``PyEval_EvalCode()``. + +- bpo-1617161: The hash of :class:`BuiltinMethodType` instances (methods of + built-in classes) now depends on the hash of the identity of *__self__* + instead of its value. The hash and equality of :class:`ModuleType` and + :class:`MethodWrapperType` instances (methods of user-defined classes and + some methods of built-in classes like ``str.__add__``) now depend on the + hash and equality of the identity of *__self__* instead of its value. + :class:`MethodWrapperType` instances no longer support ordering. + +- bpo-33824: Fix "LC_ALL=C python3.7 -V": reset properly the command line + parser when the encoding changes after reading the Python configuration. + +- bpo-33803: Fix a crash in hamt.c caused by enabling GC tracking for an + object that hadn't all of its fields set to NULL. + +- bpo-33738: Seven macro incompatibilities with the Limited API were fixed, + and the macros :c:func:`PyIter_Check`, :c:func:`PyIndex_Check` and + :c:func:`PyExceptionClass_Name` were added as functions. A script for + automatic macro checks was added. + +- bpo-33786: Fix asynchronous generators to handle GeneratorExit in athrow() + correctly + +- bpo-30167: ``PyRun_SimpleFileExFlags`` removes ``__cached__`` from module + in addition to ``__file__``. + +- bpo-33706: Fix a crash in Python initialization when parsing the command + line options. Thanks Christoph Gohlke for the bug report and the fix! + +- bpo-33597: Reduce ``PyGC_Head`` size from 3 words to 2 words. + +- bpo-30654: Fixed reset of the SIGINT handler to SIG_DFL on interpreter + shutdown even when there was a custom handler set previously. Patch by + Philipp Kerling. + +- bpo-33622: Fixed a leak when the garbage collector fails to add an object + with the ``__del__`` method or referenced by it into the + :data:`gc.garbage` list. :c:func:`PyGC_Collect` can now be called when an + exception is set and preserves it. + +- bpo-33462: Make dict and dict views reversible. Patch by Rémi Lapeyre. + +- bpo-23722: A :exc:`RuntimeError` is now raised when the custom metaclass + doesn't provide the ``__classcell__`` entry in the namespace passed to + ``type.__new__``. A :exc:`DeprecationWarning` was emitted in Python + 3.6--3.7. + +- bpo-33499: Add :envvar:`PYTHONPYCACHEPREFIX` environment variable and + :option:`-X` ``pycache_prefix`` command-line option to set an alternate + root directory for writing module bytecode cache files. + +- bpo-25711: The :mod:`zipimport` module has been rewritten in pure Python. + +- bpo-33509: Fix module_globals parameter of warnings.warn_explicit(): don't + crash if module_globals is not a dict. + +- bpo-31849: Fix signed/unsigned comparison warning in pyhash.c. + +- bpo-33475: Fixed miscellaneous bugs in converting annotations to strings + and optimized parentheses in the string representation. + +- bpo-20104: Added support for the `setpgroup`, `resetids`, `setsigmask`, + `setsigdef` and `scheduler` parameters of `posix_spawn`. Patch by Pablo + Galindo. + +- bpo-33391: Fix a leak in set_symmetric_difference(). + +- bpo-33363: Raise a SyntaxError for ``async with`` and ``async for`` + statements outside of async functions. + +- bpo-28055: Fix unaligned accesses in siphash24(). Patch by Rolf Eike Beer. + +- bpo-33128: Fix a bug that causes PathFinder to appear twice on + sys.meta_path. Patch by Pablo Galindo Salgado. + +- bpo-33331: Modules imported last are now cleared first at interpreter + shutdown. + +- bpo-33312: Fixed clang ubsan (undefined behavior sanitizer) warnings in + dictobject.c by adjusting how the internal struct _dictkeysobject shared + keys structure is declared. + +- bpo-33305: Improved syntax error messages for invalid numerical literals. + +- bpo-33306: Improved syntax error messages for unbalanced parentheses. + +- bpo-33234: The list constructor will pre-size and not over-allocate when + the input length is known. + +- bpo-33270: Intern the names for all anonymous code objects. Patch by + Zackery Spytz. + +- bpo-30455: The C and Python code and the documentation related to tokens + are now generated from a single source file :file:`Grammar/Tokens`. + +- bpo-33176: Add a ``toreadonly()`` method to memoryviews. + +- bpo-33231: Fix potential memory leak in ``normalizestring()``. + +- bpo-33205: Change dict growth function from + ``round_up_to_power_2(used*2+hashtable_size/2)`` to + ``round_up_to_power_2(used*3)``. Previously, dict is shrinked only when + ``used == 0``. Now dict has more chance to be shrinked. + +- bpo-29922: Improved error messages in 'async with' when ``__aenter__()`` + or ``__aexit__()`` return non-awaitable object. + +- bpo-33199: Fix ``ma_version_tag`` in dict implementation is uninitialized + when copying from key-sharing dict. + +- bpo-33053: When using the -m switch, sys.path[0] is now explicitly + expanded as the *starting* working directory, rather than being left as + the empty path (which allows imports from the current working directory at + the time of the import) + +- bpo-33138: Changed standard error message for non-pickleable and + non-copyable types. It now says "cannot pickle" instead of "can't pickle" + or "cannot serialize". + +- bpo-33018: Improve consistency of errors raised by ``issubclass()`` when + called with a non-class and an abstract base class as the first and second + arguments, respectively. Patch by Josh Bronson. + +- bpo-33083: ``math.factorial`` no longer accepts arguments that are not + int-like. Patch by Pablo Galindo. + +- bpo-33041: Added new opcode :opcode:`END_ASYNC_FOR` and fixes the + following issues: + + * Setting global :exc:`StopAsyncIteration` no longer breaks ``async for`` + loops. + * Jumping into an ``async for`` loop is now disabled. + * Jumping out of an ``async for`` loop no longer corrupts the stack. + +- bpo-25750: Fix rare Python crash due to bad refcounting in + ``type_getattro()`` if a descriptor deletes itself from the class. Patch + by Jeroen Demeyer. + +- bpo-33041: Fixed bytecode generation for "async for" with a complex + target. A StopAsyncIteration raised on assigning or unpacking will be now + propagated instead of stopping the iteration. + +- bpo-33026: Fixed jumping out of "with" block by setting f_lineno. + +- bpo-33005: Fix a crash on fork when using a custom memory allocator (ex: + using PYTHONMALLOC env var). _PyGILState_Reinit() and + _PyInterpreterState_Enable() now use the default RAW memory allocator to + allocate a new interpreters mutex on fork. + +- bpo-32911: Due to unexpected compatibility issues discovered during + downstream beta testing, reverted :issue:`29463`. ``docstring`` field is + removed from Module, ClassDef, FunctionDef, and AsyncFunctionDef ast nodes + which was added in 3.7a1. Docstring expression is restored as a first + statement in their body. Based on patch by Inada Naoki. + +- bpo-17288: Prevent jumps from 'return' and 'exception' trace events. + +- bpo-32946: Importing names from already imported module with "from ... + import ..." is now 30% faster if the module is not a package. + +- bpo-32932: Make error message more revealing when there are non-str + objects in ``__all__``. + +- bpo-32925: Optimized iterating and containing test for literal lists + consisting of non-constants: ``x in [a, b]`` and ``for x in [a, b]``. The + case of all constant elements already was optimized. + +- bpo-32889: Update Valgrind suppression list to account for the rename of + ``Py_ADDRESS_IN_RANG`` to ``address_in_range``. + +- bpo-32836: Don't use temporary variables in cases of list/dict/set + comprehensions + +- bpo-31356: Remove the new API added in bpo-31356 (gc.ensure_disabled() + context manager). + +- bpo-32305: For namespace packages, ensure that both ``__file__`` and + ``__spec__.origin`` are set to None. + +- bpo-32303: Make sure ``__spec__.loader`` matches ``__loader__`` for + namespace packages. + +- bpo-32711: Fix the warning messages for Python/ast_unparse.c. Patch by + Stéphane Wirtel + +- bpo-32583: Fix possible crashing in builtin Unicode decoders caused by + write out-of-bound errors when using customized decode error handlers. + +- bpo-32489: A :keyword:`continue` statement is now allowed in the + :keyword:`finally` clause. + +- bpo-17611: Simplified the interpreter loop by moving the logic of + unrolling the stack of blocks into the compiler. The compiler emits now + explicit instructions for adjusting the stack of values and calling the + cleaning up code for :keyword:`break`, :keyword:`continue` and + :keyword:`return`. + + Removed opcodes :opcode:`BREAK_LOOP`, :opcode:`CONTINUE_LOOP`, + :opcode:`SETUP_LOOP` and :opcode:`SETUP_EXCEPT`. Added new opcodes + :opcode:`ROT_FOUR`, :opcode:`BEGIN_FINALLY` and :opcode:`CALL_FINALLY` and + :opcode:`POP_FINALLY`. Changed the behavior of :opcode:`END_FINALLY` and + :opcode:`WITH_CLEANUP_START`. + +- bpo-32285: New function unicodedata.is_normalized, which can check whether + a string is in a specific normal form. + +- bpo-10544: Yield expressions are now disallowed in comprehensions and + generator expressions except the expression for the outermost iterable. + +- bpo-32117: Iterable unpacking is now allowed without parentheses in yield + and return statements, e.g. ``yield 1, 2, 3, *rest``. Thanks to David + Cuthbert for the change and Jordan Chapman for added tests. + +- bpo-31902: Fix the ``col_offset`` attribute for ast nodes + ``ast.AsyncFor``, ``ast.AsyncFunctionDef``, and ``ast.AsyncWith``. + Previously, ``col_offset`` pointed to the keyword after ``async``. + +- bpo-25862: Fix assertion failures in the ``tell()`` method of + ``io.TextIOWrapper``. Patch by Zackery Spytz. + +- bpo-21983: Fix a crash in `ctypes.cast()` in case the type argument is a + ctypes structured data type. Patch by Eryk Sun and Oren Milman. + +- bpo-31577: Fix a crash in `os.utime()` in case of a bad ns argument. Patch + by Oren Milman. + +- bpo-29832: Remove references to 'getsockaddrarg' from various socket error + messages. Patch by Oren Milman. + +Library +------- + +- bpo-35845: Add 'order' parameter to memoryview.tobytes(). + +- bpo-35864: The _asdict() method for collections.namedtuple now returns a + regular dict instead of an OrderedDict. + +- bpo-35537: An ExitStack is now used internally within subprocess.POpen to + clean up pipe file handles. No behavior change in normal operation. But if + closing one handle were ever to cause an exception, the others will now be + closed instead of leaked. (patch by Giampaolo Rodola) + +- bpo-35847: RISC-V needed the CTYPES_PASS_BY_REF_HACK. Fixes ctypes + Structure test_pass_by_value. + +- bpo-35813: Shared memory submodule added to multiprocessing to avoid need + for serialization between processes + +- bpo-35780: Fix lru_cache() errors arising in recursive, reentrant, or + multi-threaded code. These errors could result in orphan links and in the + cache being trapped in a state with fewer than the specified maximum + number of links. Fix handling of negative maxsize which should have been + treated as zero. Fix errors in toggling the "full" status flag. Fix + misordering of links when errors are encountered. Sync-up the C code and + pure Python code for the space saving path in functions with a single + positional argument. In this common case, the space overhead of an lru + cache entry is reduced by almost half. Fix counting of cache misses. In + error cases, the miss count was out of sync with the actual number of + times the underlying user function was called. + +- bpo-35537: :func:`os.posix_spawn` and :func:`os.posix_spawnp` now have a + *setsid* parameter. + +- bpo-23846: :class:`asyncio.ProactorEventLoop` now catches and logs send + errors when the self-pipe is full. + +- bpo-34323: :mod:`asyncio`: Enhance ``IocpProactor.close()`` log: wait 1 + second before the first log, then log every second. Log also the number of + seconds since ``close()`` was called. + +- bpo-35674: Add a new :func:`os.posix_spawnp` function. Patch by Joannah + Nanjekye. + +- bpo-35733: ``ast.Constant(boolean)`` no longer an instance of + :class:`ast.Num`. Patch by Anthony Sottile. + +- bpo-35726: QueueHandler.prepare() now makes a copy of the record before + modifying and enqueueing it, to avoid affecting other handlers in the + chain. + +- bpo-35719: Sped up multi-argument :mod:`math` functions atan2(), + copysign(), remainder() and hypot() by 1.3--2.5 times. + +- bpo-35717: Fix KeyError exception raised when using enums and compile. + Patch contributed by Rémi Lapeyre. + +- bpo-35699: Fixed detection of Visual Studio Build Tools 2017 in distutils + +- bpo-32710: Fix memory leaks in asyncio ProactorEventLoop on overlapped + operation failure. + +- bpo-35702: The :data:`time.CLOCK_UPTIME_RAW` constant is now available for + macOS 10.12. + +- bpo-32710: Fix a memory leak in asyncio in the ProactorEventLoop when + ``ReadFile()`` or ``WSASend()`` overlapped operation fail immediately: + release the internal buffer. + +- bpo-35682: Fix ``asyncio.ProactorEventLoop.sendfile()``: don't attempt to + set the result of an internal future if it's already done. + +- bpo-35283: Add a deprecated warning for the + :meth:`threading.Thread.isAlive` method. Patch by Dong-hee Na. + +- bpo-35664: Improve operator.itemgetter() performance by 33% with optimized + argument handling and with adding a fast path for the common case of a + single non-negative integer index into a tuple (which is the typical use + case in the standard library). + +- bpo-35643: Fixed a SyntaxWarning: invalid escape sequence in + Modules/_sha3/cleanup.py. Patch by Mickaël Schoentgen. + +- bpo-35619: Improved support of custom data descriptors in :func:`help` and + :mod:`pydoc`. + +- bpo-28503: The `crypt` module now internally uses the `crypt_r()` library + function instead of `crypt()` when available. + +- bpo-35614: Fixed help() on metaclasses. Patch by Sanyam Khurana. + +- bpo-35568: Expose ``raise(signum)`` as `raise_signal` + +- bpo-35588: The floor division and modulo operations and the :func:`divmod` + function on :class:`fractions.Fraction` types are 2--4x faster. Patch by + Stefan Behnel. + +- bpo-35585: Speed-up building enums by value, e.g. http.HTTPStatus(200). + +- bpo-30561: random.gammavariate(1.0, beta) now computes the same result as + random.expovariate(1.0 / beta). This synchonizes the two algorithms and + eliminates some idiosyncrasies in the old implementation. It does however + produce a difference stream of random variables than it used to. + +- bpo-35537: The :mod:`subprocess` module can now use the + :func:`os.posix_spawn` function in some cases for better performance. + +- bpo-35526: Delaying the 'joke' of barry_as_FLUFL.mandatory to Python + version 4.0 + +- bpo-35523: Remove :mod:`ctypes` callback workaround: no longer create a + callback at startup. Avoid SELinux alert on ``import ctypes`` and ``import + uuid``. + +- bpo-31784: :func:`uuid.uuid1` now calls :func:`time.time_ns` rather than + ``int(time.time() * 1e9)``. + +- bpo-35513: :class:`~unittest.runner.TextTestRunner` of + :mod:`unittest.runner` now uses :func:`time.perf_counter` rather than + :func:`time.time` to measure the execution time of a test: + :func:`time.time` can go backwards, whereas :func:`time.perf_counter` is + monotonic. + +- bpo-35502: Fixed reference leaks in + :class:`xml.etree.ElementTree.TreeBuilder` in case of unfinished building + of the tree (in particular when an error was raised during parsing XML). + +- bpo-35348: Make :func:`platform.architecture` parsing of ``file`` command + output more reliable: add the ``-b`` option to the ``file`` command to + omit the filename, force the usage of the C locale, and search also the + "shared object" pattern. + +- bpo-35491: :mod:`multiprocessing`: Add ``Pool.__repr__()`` and enhance + ``BaseProcess.__repr__()`` (add pid and parent pid) to ease debugging. + Pool state constant values are now strings instead of integers, for + example ``RUN`` value becomes ``'RUN'`` instead of ``0``. + +- bpo-35477: :meth:`multiprocessing.Pool.__enter__` now fails if the pool is + not running: ``with pool:`` fails if used more than once. + +- bpo-31446: Copy command line that was passed to CreateProcessW since this + function can change the content of the input buffer. + +- bpo-35471: Python 2.4 dropped MacOS 9 support. The macpath module was + deprecated in Python 3.7. The module is now removed. + +- bpo-23057: Unblock Proactor event loop when keyboard interrupt is received + on Windows + +- bpo-35052: Fix xml.dom.minidom cloneNode() on a document with an entity: + pass the correct arguments to the user data handler of an entity. + +- bpo-20239: Allow repeated assignment deletion of + :class:`unittest.mock.Mock` attributes. Patch by Pablo Galindo. + +- bpo-17185: Set ``__signature__`` on mock for :mod:`inspect` to get + signature. Patch by Karthikeyan Singaravelan. + +- bpo-35445: Memory errors during creating posix.environ no longer ignored. + +- bpo-35415: Validate fileno= argument to socket.socket(). + +- bpo-35424: :class:`multiprocessing.Pool` destructor now emits + :exc:`ResourceWarning` if the pool is still running. + +- bpo-35330: When a :class:`Mock` instance was used to wrap an object, if + `side_effect` is used in one of the mocks of it methods, don't call the + original implementation and return the result of using the side effect the + same way that it is done with return_value. + +- bpo-35346: Drop Mac OS 9 and Rhapsody support from the :mod:`platform` + module. Rhapsody last release was in 2000. Mac OS 9 last release was in + 2001. + +- bpo-10496: :func:`~distutils.utils.check_environ` of + :mod:`distutils.utils` now catches :exc:`KeyError` on calling + :func:`pwd.getpwuid`: don't create the ``HOME`` environment variable in + this case. + +- bpo-10496: :func:`posixpath.expanduser` now returns the input *path* + unchanged if the ``HOME`` environment variable is not set and the current + user has no home directory (if the current user identifier doesn't exist + in the password database). This change fix the :mod:`site` module if the + current user doesn't exist in the password database (if the user has no + home directory). + +- bpo-35389: :func:`platform.libc_ver` now uses + ``os.confstr('CS_GNU_LIBC_VERSION')`` if available and the *executable* + parameter is not set. + +- bpo-35394: Add empty slots to asyncio abstract protocols. + +- bpo-35310: Fix a bug in :func:`select.select` where, in some cases, the + file descriptor sequences were returned unmodified after a signal + interruption, even though the file descriptors might not be ready yet. + :func:`select.select` will now always return empty lists if a timeout has + occurred. Patch by Oran Avraham. + +- bpo-35380: Enable TCP_NODELAY on Windows for proactor asyncio event loop. + +- bpo-35341: Add generic version of ``collections.OrderedDict`` to the + ``typing`` module. Patch by Ismo Toijala. + +- bpo-35371: Fixed possible crash in ``os.utime()`` on Windows when pass + incorrect arguments. + +- bpo-35346: :func:`platform.uname` now redirects ``stderr`` to + :data:`os.devnull` when running external programs like ``cmd /c ver``. + +- bpo-35066: Previously, calling the strftime() method on a datetime object + with a trailing '%' in the format string would result in an exception. + However, this only occurred when the datetime C module was being used; the + python implementation did not match this behavior. Datetime is now PEP-399 + compliant, and will not throw an exception on a trailing '%'. + +- bpo-35345: The function `platform.popen` has been removed, it was + deprecated since Python 3.3: use :func:`os.popen` instead. + +- bpo-35344: On macOS, :func:`platform.platform` now uses + :func:`platform.mac_ver`, if it returns a non-empty release string, to get + the macOS version rather than the darwin version. + +- bpo-35312: Make ``lib2to3.pgen2.parse.ParseError`` round-trip pickle-able. + Patch by Anthony Sottile. + +- bpo-35308: Fix regression in ``webbrowser`` where default browsers may be + preferred over browsers in the ``BROWSER`` environment variable. + +- bpo-24746: Avoid stripping trailing whitespace in doctest fancy diff. + Original patch by R. David Murray & Jairo Trad. Enhanced by Sanyam + Khurana. + +- bpo-28604: :func:`locale.localeconv` now sets temporarily the ``LC_CTYPE`` + locale to the ``LC_MONETARY`` locale if the two locales are different and + monetary strings are non-ASCII. This temporary change affects other + threads. + +- bpo-35277: Update ensurepip to install pip 18.1 and setuptools 40.6.2. + +- bpo-24209: Adds IPv6 support when invoking http.server directly. + +- bpo-35226: Recursively check arguments when testing for equality of + :class:`unittest.mock.call` objects and add note that tracking of + parameters used to create ancestors of mocks in ``mock_calls`` is not + possible. + +- bpo-29564: The warnings module now suggests to enable tracemalloc if the + source is specified, the tracemalloc module is available, but tracemalloc + is not tracing memory allocations. + +- bpo-35189: Modify the following fnctl function to retry if interrupted by + a signal (EINTR): flock, lockf, fnctl + +- bpo-30064: Use add_done_callback() in sock_* asyncio API to unsubscribe + reader/writer early on calcellation. + +- bpo-35186: Removed the "built with" comment added when ``setup.py upload`` + is used with either ``bdist_rpm`` or ``bdist_dumb``. + +- bpo-35152: Allow sending more than 2 GB at once on a multiprocessing + connection on non-Windows systems. + +- bpo-35062: Fix incorrect parsing of + :class:`_io.IncrementalNewlineDecoder`'s *translate* argument. + +- bpo-35065: Remove `StreamReaderProtocol._untrack_reader`. The call to + `_untrack_reader` is currently performed too soon, causing the protocol to + forget about the reader before `connection_lost` can run and feed the EOF + to the reader. + +- bpo-34160: ElementTree and minidom now preserve the attribute order + specified by the user. + +- bpo-35079: Improve difflib.SequenceManager.get_matching_blocks doc by + adding 'non-overlapping' and changing '!=' to '<'. + +- bpo-33710: Deprecated ``l*gettext()`` functions and methods in the + :mod:`gettext` module. They return encoded bytes instead of Unicode + strings and are artifacts from Python 2 times. Also deprecated functions + and methods related to setting the charset for ``l*gettext()`` functions + and methods. + +- bpo-35017: :meth:`socketserver.BaseServer.serve_forever` now exits + immediately if it's :meth:`~socketserver.BaseServer.shutdown` method is + called while it is polling for new events. + +- bpo-35024: `importlib` no longer logs `wrote <bytecode path>` redundantly + after `(created|could not create) <bytecode path>` is already logged. + Patch by Quentin Agren. + +- bpo-35047: ``unittest.mock`` now includes mock calls in exception messages + if ``assert_not_called``, ``assert_called_once``, or + ``assert_called_once_with`` fails. Patch by Petter Strandmark. + +- bpo-31047: Fix ``ntpath.abspath`` regression where it didn't remove a + trailing separator on Windows. Patch by Tim Graham. + +- bpo-35053: tracemalloc now tries to update the traceback when an object is + reused from a "free list" (optimization for faster object creation, used + by the builtin list type for example). + +- bpo-31553: Add the --json-lines option to json.tool. Patch by hongweipeng. + +- bpo-34794: Fixed a leak in Tkinter when pass the Python wrapper around + Tcl_Obj back to Tcl/Tk. + +- bpo-34909: Enum: fix grandchildren subclassing when parent mixed with + concrete data types. + +- bpo-35022: :class:`unittest.mock.MagicMock` now supports the + ``__fspath__`` method (from :class:`os.PathLike`). + +- bpo-35008: Fixed references leaks when call the ``__setstate__()`` method + of :class:`xml.etree.ElementTree.Element` in the C implementation for + already initialized element. + +- bpo-23420: Verify the value for the parameter '-s' of the cProfile CLI. + Patch by Robert Kuska + +- bpo-33947: dataclasses now handle recursive reprs without raising + RecursionError. + +- bpo-34890: Make :func:`inspect.iscoroutinefunction`, + :func:`inspect.isgeneratorfunction` and :func:`inspect.isasyncgenfunction` + work with :func:`functools.partial`. Patch by Pablo Galindo. + +- bpo-34521: Use :func:`socket.CMSG_SPACE` to calculate ancillary data size + instead of :func:`socket.CMSG_LEN` in + :func:`multiprocessing.reduction.recvfds` as :rfc:`3542` requires the use + of the former for portable applications. + +- bpo-31522: The `mailbox.mbox.get_string` function *from_* parameter can + now successfully be set to a non-default value. + +- bpo-34970: Protect tasks weak set manipulation in ``asyncio.all_tasks()`` + +- bpo-34969: gzip: Add --fast, --best on the gzip CLI, these parameters will + be used for the fast compression method (quick) or the best method + compress (slower, but smaller file). Also, change the default compression + level to 6 (tradeoff). + +- bpo-16965: The :term:`2to3` :2to3fixer:`execfile` fixer now opens the file + with mode ``'rb'``. Patch by Zackery Spytz. + +- bpo-34966: :mod:`pydoc` now supports aliases not only to methods defined + in the end class, but also to inherited methods. The docstring is not + duplicated for aliases. + +- bpo-34926: :meth:`mimetypes.MimeTypes.guess_type` now accepts + :term:`path-like object` in addition to url strings. Patch by Mayank + Asthana. + +- bpo-23831: Add ``moveto()`` method to the ``tkinter.Canvas`` widget. Patch + by Juliette Monsel. + +- bpo-34941: Methods ``find()``, ``findtext()`` and ``findall()`` of the + ``Element`` class in the :mod:`xml.etree.ElementTree` module are now able + to find children which are instances of ``Element`` subclasses. + +- bpo-32680: :class:`smtplib.SMTP` objects now always have a `sock` + attribute present + +- bpo-34769: Fix for async generators not finalizing when event loop is in + debug mode and garbage collector runs in another thread. + +- bpo-34936: Fix ``TclError`` in ``tkinter.Spinbox.selection_element()``. + Patch by Juliette Monsel. + +- bpo-34829: Add methods ``selection_from``, ``selection_range``, + ``selection_present`` and ``selection_to`` to the ``tkinter.Spinbox`` for + consistency with the ``tkinter.Entry`` widget. Patch by Juliette Monsel. + +- bpo-34911: Added *secure_protocols* argument to + *http.cookiejar.DefaultCookiePolicy* to allow for tweaking of protocols + and also to add support by default for *wss*, the secure websocket + protocol. + +- bpo-34922: Fixed integer overflow in the :meth:`~hashlib.shake.digest()` + and :meth:`~hashlib.shake.hexdigest()` methods for the SHAKE algorithm in + the :mod:`hashlib` module. + +- bpo-34925: 25% speedup in argument parsing for the functions in the bisect + module. + +- bpo-34900: Fixed :meth:`unittest.TestCase.debug` when used to call test + methods with subtests. Patch by Bruno Oliveira. + +- bpo-34844: logging.Formatter enhancement - Ensure styles and fmt matches + in logging.Formatter - Added validate method in each format style class: + StrFormatStyle, PercentStyle, StringTemplateStyle. - This method is called + in the constructor of logging.Formatter class - Also re-raise the KeyError + in the format method of each style class, so it would a bit clear that + it's an error with the invalid format fields. + +- bpo-34897: Adjust test.support.missing_compiler_executable check so that a + nominal command name of "" is ignored. Patch by Michael Felt. + +- bpo-34871: Fix inspect module polluted ``sys.modules`` when parsing + ``__text_signature__`` of callable. + +- bpo-34898: Add `mtime` argument to `gzip.compress` for reproducible + output. Patch by Guo Ci Teo. + +- bpo-28441: On Cygwin and MinGW, ensure that ``sys.executable`` always + includes the full filename in the path, including the ``.exe`` suffix + (unless it is a symbolic link). + +- bpo-34866: Adding ``max_num_fields`` to ``cgi.FieldStorage`` to make DOS + attacks harder by limiting the number of ``MiniFieldStorage`` objects + created by ``FieldStorage``. + +- bpo-34711: http.server ensures it reports HTTPStatus.NOT_FOUND when the + local path ends with "/" and is not a directory, even if the underlying OS + (e.g. AIX) accepts such paths as a valid file reference. Patch by Michael + Felt. + +- bpo-34872: Fix self-cancellation in C implementation of asyncio.Task + +- bpo-34849: Don't log waiting for ``selector.select`` in asyncio loop + iteration. The waiting is pretty normal for any asyncio program, logging + its time just adds a noise to logs without any useful information + provided. + +- bpo-34022: The :envvar:`SOURCE_DATE_EPOCH` environment variable no longer + overrides the value of the *invalidation_mode* argument to + :func:`py_compile.compile`, and determines its default value instead. + +- bpo-34819: Use a monotonic clock to compute timeouts in + :meth:`Executor.map` and :func:`as_completed`, in order to prevent + timeouts from deviating when the system clock is adjusted. + +- bpo-34758: Add .wasm -> application/wasm to list of recognized file types + and content type headers + +- bpo-34789: :func:`xml.sax.make_parser` now accepts any iterable as its + *parser_list* argument. Patch by Andrés Delfino. + +- bpo-34334: In :class:`QueueHandler`, clear `exc_text` from + :class:`LogRecord` to prevent traceback from being written twice. + +- bpo-34687: On Windows, asyncio now uses ProactorEventLoop, instead of + SelectorEventLoop, by default. + +- bpo-5950: Support reading zip files with archive comments in + :mod:`zipimport`. + +- bpo-32892: The parser now represents all constants as + :class:`ast.Constant` instead of using specific constant AST types + (``Num``, ``Str``, ``Bytes``, ``NameConstant`` and ``Ellipsis``). These + classes are considered deprecated and will be removed in future Python + versions. + +- bpo-34728: Add deprecation warning when `loop` is used in methods: + `asyncio.sleep`, `asyncio.wait` and `asyncio.wait_for`. + +- bpo-34738: ZIP files created by :mod:`distutils` will now include entries + for directories. + +- bpo-34659: Add an optional *initial* argument to itertools.accumulate(). + +- bpo-29577: Support multiple mixin classes when creating Enums. + +- bpo-34670: Add SSLContext.post_handshake_auth and + SSLSocket.verify_client_post_handshake for TLS 1.3's post handshake + authentication feature. + +- bpo-32718: The Activate.ps1 script from venv works with PowerShell Core + 6.1 and is now available under all operating systems. + +- bpo-31177: Fix bug that prevented using :meth:`reset_mock + <unittest.mock.Mock.reset_mock>` on mock instances with deleted attributes + +- bpo-34672: Add a workaround, so the ``'Z'`` :func:`time.strftime` + specifier on the musl C library can work in some cases. + +- bpo-34666: Implement ``asyncio.StreamWriter.awrite`` and + ``asyncio.StreamWriter.aclose()`` coroutines. Methods are needed for + providing a consistent stream API with control flow switched on by + default. + +- bpo-6721: Acquire the logging module's commonly used internal locks while + fork()ing to avoid deadlocks in the child process. + +- bpo-34658: Fix a rare interpreter unhandled exception state SystemError + only seen when using subprocess with a preexec_fn while an after_parent + handler has been registered with os.register_at_fork and the fork system + call fails. + +- bpo-34652: Ensure :func:`os.lchmod` is never defined on Linux. + +- bpo-34638: Store a weak reference to stream reader to break strong + references loop between reader and protocol. It allows to detect and + close the socket if the stream is deleted (garbage collected) without + ``close()`` call. + +- bpo-34536: `Enum._missing_`: raise `ValueError` if None returned and + `TypeError` if non-member is returned. + +- bpo-34636: Speed up re scanning of many non-matching characters for \s \w + and \d within bytes objects. (microoptimization) + +- bpo-24412: Add :func:`~unittest.addModuleCleanup()` and + :meth:`~unittest.TestCase.addClassCleanup()` to unittest to support + cleanups for :func:`~unittest.setUpModule()` and + :meth:`~unittest.TestCase.setUpClass()`. Patch by Lisa Roach. + +- bpo-34630: Don't log SSL certificate errors in asyncio code (connection + error logging is skipped already). + +- bpo-32490: Prevent filename duplication in :mod:`subprocess` exception + messages. Patch by Zackery Spytz. + +- bpo-34363: dataclasses.asdict() and .astuple() now handle namedtuples + correctly. + +- bpo-34625: Update vendorized expat library version to 2.2.6. + +- bpo-32270: The subprocess module no longer mistakenly closes redirected + fds even when they were in pass_fds when outside of the default {0, 1, 2} + set. + +- bpo-34622: Create a dedicated ``asyncio.CancelledError``, + ``asyncio.InvalidStateError`` and ``asyncio.TimeoutError`` exception + classes. Inherit them from corresponding exceptions from + ``concurrent.futures`` package. Extract ``asyncio`` exceptions into a + separate file. + +- bpo-34610: Fixed iterator of :class:`multiprocessing.managers.DictProxy`. + +- bpo-34421: Fix distutils logging for non-ASCII strings. This caused + installation issues on Windows. + +- bpo-34604: Fix possible mojibake in the error message of `pwd.getpwnam` + and `grp.getgrnam` using string representation because of invisible + characters or trailing whitespaces. Patch by William Grzybowski. + +- bpo-30977: Make uuid.UUID use ``__slots__`` to reduce its memory + footprint. Based on original patch by Wouter Bolsterlee. + +- bpo-34574: OrderedDict iterators are not exhausted during pickling + anymore. Patch by Sergey Fedoseev. + +- bpo-8110: Refactored :mod:`subprocess` to check for Windows-specific + modules rather than ``sys.platform == 'win32'``. + +- bpo-34530: ``distutils.spawn.find_executable()`` now falls back on + :data:`os.defpath` if the ``PATH`` environment variable is not set. + +- bpo-34563: On Windows, fix multiprocessing.Connection for very large read: + fix _winapi.PeekNamedPipe() and _winapi.ReadFile() for read larger than + INT_MAX (usually 2^31-1). + +- bpo-34558: Correct typo in Lib/ctypes/_aix.py + +- bpo-34282: Move ``Enum._convert`` to ``EnumMeta._convert_`` and fix enum + members getting shadowed by parent attributes. + +- bpo-22872: When the queue is closed, :exc:`ValueError` is now raised by + :meth:`multiprocessing.Queue.put` and :meth:`multiprocessing.Queue.get` + instead of :exc:`AssertionError` and :exc:`OSError`, respectively. Patch + by Zackery Spytz. + +- bpo-34515: Fix parsing non-ASCII identifiers in + :mod:`lib2to3.pgen2.tokenize` (PEP 3131). + +- bpo-13312: Avoids a possible integer underflow (undefined behavior) in the + time module's year handling code when passed a very low negative year + value. + +- bpo-34472: Improved compatibility for streamed files in :mod:`zipfile`. + Previously an optional signature was not being written and certain ZIP + applications were not supported. Patch by Silas Sewell. + +- bpo-34454: Fix the .fromisoformat() methods of datetime types crashing + when given unicode with non-UTF-8-encodable code points. Specifically, + datetime.fromisoformat() now accepts surrogate unicode code points used as + the separator. Report and tests by Alexey Izbyshev, patch by Paul Ganssle. + +- bpo-6700: Fix inspect.getsourcelines for module level frames/tracebacks. + Patch by Vladimir Matveev. + +- bpo-34171: Running the :mod:`trace` module no longer creates the + ``trace.cover`` file. + +- bpo-34441: Fix crash when an ``ABC``-derived class with invalid + ``__subclasses__`` is passed as the second argument to + :func:`issubclass()`. Patch by Alexey Izbyshev. + +- bpo-34427: Fix infinite loop in ``a.extend(a)`` for ``MutableSequence`` + subclasses. + +- bpo-34412: Make :func:`signal.strsignal` work on HP-UX. Patch by Michael + Osipov. + +- bpo-20849: shutil.copytree now accepts a new ``dirs_exist_ok`` keyword + argument. Patch by Josh Bronson. + +- bpo-31715: Associate ``.mjs`` file extension with + ``application/javascript`` MIME Type. + +- bpo-34384: :func:`os.readlink` now accepts :term:`path-like <path-like + object>` and :class:`bytes` objects on Windows. + +- bpo-22602: The UTF-7 decoder now raises :exc:`UnicodeDecodeError` for + ill-formed sequences starting with "+" (as specified in RFC 2152). Patch + by Zackery Spytz. + +- bpo-2122: The :meth:`mmap.flush() <mmap.mmap.flush>` method now returns + ``None`` on success, raises an exception on error under all platforms. + +- bpo-34341: Appending to the ZIP archive with the ZIP64 extension no longer + grows the size of extra fields of existing entries. + +- bpo-34333: Fix %-formatting in :meth:`pathlib.PurePath.with_suffix` when + formatting an error message. + +- bpo-18540: The :class:`imaplib.IMAP4` and :class:`imaplib.IMAP4_SSL` + classes now resolve to the local host IP correctly when the default value + of *host* parameter (``''``) is used. + +- bpo-26502: Implement ``traceback.FrameSummary.__len__()`` method to + preserve compatibility with the old tuple API. + +- bpo-34318: :func:`~unittest.TestCase.assertRaises`, + :func:`~unittest.TestCase.assertRaisesRegex`, + :func:`~unittest.TestCase.assertWarns` and + :func:`~unittest.TestCase.assertWarnsRegex` no longer success if the + passed callable is None. They no longer ignore unknown keyword arguments + in the context manager mode. A DeprecationWarning was raised in these + cases since Python 3.5. + +- bpo-9372: Deprecate :meth:`__getitem__` methods of + :class:`xml.dom.pulldom.DOMEventStream`, :class:`wsgiref.util.FileWrapper` + and :class:`fileinput.FileInput`. + +- bpo-33613: Fix a race condition in ``multiprocessing.semaphore_tracker`` + when the tracker receives SIGINT before it can register signal handlers + for ignoring it. + +- bpo-34248: Report filename in the exception raised when the database file + cannot be opened by :func:`dbm.gnu.open` and :func:`dbm.ndbm.open` due to + OS-related error. Patch by Zsolt Cserna. + +- bpo-33089: Add math.dist() to compute the Euclidean distance between two + points. + +- bpo-34246: :meth:`smtplib.SMTP.send_message` no longer modifies the + content of the *mail_options* argument. Patch by Pablo S. Blum de Aguiar. + +- bpo-31047: Fix ``ntpath.abspath`` for invalid paths on windows. Patch by + Franz Woellert. + +- bpo-32321: Add pure Python fallback for functools.reduce. Patch by Robert + Wright. + +- bpo-34270: The default asyncio task class now always has a name which can + be get or set using two new methods (:meth:`~asyncio.Task.get_name()` and + :meth:`~asyncio.Task.set_name`) and is visible in the :func:`repr` output. + An initial name can also be set using the new ``name`` keyword argument to + :func:`asyncio.create_task` or the + :meth:`~asyncio.AbstractEventLoop.create_task` method of the event loop. + If no initial name is set, the default Task implementation generates a + name like ``Task-1`` using a monotonic counter. + +- bpo-34263: asyncio's event loop will not pass timeouts longer than one day + to epoll/select etc. + +- bpo-34035: Fix several AttributeError in zipfile seek() methods. Patch by + Mickaël Schoentgen. + +- bpo-32215: Fix performance regression in :mod:`sqlite3` when a DML + statement appeared in a different line than the rest of the SQL query. + +- bpo-34075: Deprecate passing non-ThreadPoolExecutor instances to + :meth:`AbstractEventLoop.set_default_executor`. + +- bpo-34251: Restore ``msilib.Win64`` to preserve backwards compatibility + since it's already used by :mod:`distutils`' ``bdist_msi`` command. + +- bpo-19891: Ignore errors caused by missing / non-writable homedir while + writing history during exit of an interactive session. Patch by Anthony + Sottile. + +- bpo-33089: Enhanced math.hypot() to support more than two dimensions. + +- bpo-34228: tracemalloc: PYTHONTRACEMALLOC=0 environment variable and -X + tracemalloc=0 command line option are now allowed to disable explicitly + tracemalloc at startup. + +- bpo-13041: Use :func:`shutil.get_terminal_size` to calculate the terminal + width correctly in the ``argparse.HelpFormatter`` class. Initial patch by + Zbyszek Jędrzejewski-Szmek. + +- bpo-34213: Allow frozen dataclasses to have a field named "object". + Previously this conflicted with an internal use of "object". + +- bpo-34052: :meth:`sqlite3.Connection.create_aggregate`, + :meth:`sqlite3.Connection.create_function`, + :meth:`sqlite3.Connection.set_authorizer`, + :meth:`sqlite3.Connection.set_progress_handler` methods raises TypeError + when unhashable objects are passed as callable. These methods now don't + pass such objects to SQLite API. Previous behavior could lead to + segfaults. Patch by Sergey Fedoseev. + +- bpo-34197: Attributes *skipinitialspace*, *doublequote* and *strict* of + the *dialect* attribute of the :mod:`csv` reader are now :class:`bool` + instances instead of integers 0 or 1. + +- bpo-32788: Errors other than :exc:`TypeError` raised in methods + ``__adapt__()`` and ``__conform__()`` in the :mod:`sqlite3` module are now + propagated to the user. + +- bpo-21446: The :2to3fixer:`reload` fixer now uses :func:`importlib.reload` + instead of deprecated :func:`imp.reload`. + +- bpo-940286: pydoc's ``Helper.showtopic()`` method now prints the cross + references of a topic correctly. + +- bpo-34164: :func:`base64.b32decode` could raise UnboundLocalError or + OverflowError for incorrect padding. Now it always raises + :exc:`base64.Error` in these cases. + +- bpo-33729: Fixed issues with arguments parsing in :mod:`hashlib`. + +- bpo-34097: ZipFile can zip files older than 1980-01-01 and newer than + 2107-12-31 using a new ``strict_timestamps`` parameter at the cost of + setting the timestamp to the limit. + +- bpo-34108: Remove extraneous CR in 2to3 refactor. + +- bpo-34070: Make sure to only check if the handle is a tty, when opening a + file with ``buffering=-1``. + +- bpo-27494: Reverted :issue:`27494`. 2to3 rejects now a trailing comma in + generator expressions. + +- bpo-33967: functools.singledispatch now raises TypeError instead of + IndexError when no positional arguments are passed. + +- bpo-34041: Add the parameter *deterministic* to the + :meth:`sqlite3.Connection.create_function` method. Patch by Sergey + Fedoseev. + +- bpo-34056: Ensure the loader shim created by ``imp.load_module`` always + returns bytes from its ``get_data()`` function. This fixes using + ``imp.load_module`` with :pep:`552` hash-based pycs. + +- bpo-34054: The multiprocessing module now uses the monotonic clock + :func:`time.monotonic` instead of the system clock :func:`time.time` to + implement timeout. + +- bpo-34043: Optimize tarfile uncompress performance about 15% when gzip is + used. + +- bpo-34044: ``subprocess.Popen`` now copies the *startupinfo* argument to + leave it unchanged: it will modify the copy, so that the same + ``STARTUPINFO`` object can be used multiple times. + +- bpo-34010: Fixed a performance regression for reading streams with + tarfile. The buffered read should use a list, instead of appending to a + bytes object. + +- bpo-34019: webbrowser: Correct the arguments passed to Opera Browser when + opening a new URL using the ``webbrowser`` module. Patch by Bumsik Kim. + +- bpo-34003: csv.DictReader now creates dicts instead of OrderedDicts. Patch + by Michael Selik. + +- bpo-33978: Closed existing logging handlers before reconfiguration via + fileConfig and dictConfig. Patch by Karthikeyan Singaravelan. + +- bpo-14117: Make minor tweaks to turtledemo. The 'wikipedia' example is now + 'rosette', describing what it draws. The 'penrose' print output is + reduced. The'1024' output of 'tree' is eliminated. + +- bpo-33974: Fixed passing lists and tuples of strings containing special + characters ``"``, ``\``, ``{``, ``}`` and ``\n`` as options to + :mod:`~tkinter.ttk` widgets. + +- bpo-27500: Fix getaddrinfo to resolve IPv6 addresses correctly. + +- bpo-24567: Improve random.choices() to handle subnormal input weights that + could occasionally trigger an IndexError. + +- bpo-33871: Fixed integer overflow in :func:`os.readv`, :func:`os.writev`, + :func:`os.preadv` and :func:`os.pwritev` and in :func:`os.sendfile` with + *headers* or *trailers* arguments (on BSD-based OSes and macOS). + +- bpo-25007: Add :func:`copy.copy` and :func:`copy.deepcopy` support to zlib + compressors and decompressors. Patch by Zackery Spytz. + +- bpo-33929: multiprocessing: Fix a race condition in Popen of + multiprocessing.popen_spawn_win32. The child process now duplicates the + read end of pipe instead of "stealing" it. Previously, the read end of + pipe was "stolen" by the child process, but it leaked a handle if the + child process had been terminated before it could steal the handle from + the parent process. + +- bpo-33899: Tokenize module now implicitly emits a NEWLINE when provided + with input that does not have a trailing new line. This behavior now + matches what the C tokenizer does internally. Contributed by Ammar Askar. + +- bpo-33897: Added a 'force' keyword argument to logging.basicConfig(). + +- bpo-33695: :func:`shutil.copytree` uses :func:`os.scandir` function and + all copy functions depending from it use cached :func:`os.stat` values. + The speedup for copying a directory with 8000 files is around +9% on + Linux, +20% on Windows and + 30% on a Windows SMB share. Also the number + of :func:`os.stat` syscalls is reduced by 38% making + :func:`shutil.copytree` especially faster on network filesystems. + (Contributed by Giampaolo Rodola' in :issue:`33695`.) + +- bpo-33916: bz2 and lzma: When Decompressor.__init__() is called twice, + free the old lock to not leak memory. + +- bpo-32568: Make select.epoll() and its documentation consistent regarding + *sizehint* and *flags*. + +- bpo-33833: Fixed bug in asyncio where ProactorSocketTransport logs + AssertionError if force closed during write. + +- bpo-33663: Convert content length to string before putting to header. + +- bpo-33721: :mod:`os.path` functions that return a boolean result like + :func:`~os.path.exists`, :func:`~os.path.lexists`, :func:`~os.path.isdir`, + :func:`~os.path.isfile`, :func:`~os.path.islink`, and + :func:`~os.path.ismount`, and :mod:`pathlib.Path` methods that return a + boolean result like :meth:`~pathlib.Path.exists()`, + :meth:`~pathlib.Path.is_dir()`, :meth:`~pathlib.Path.is_file()`, + :meth:`~pathlib.Path.is_mount()`, :meth:`~pathlib.Path.is_symlink()`, + :meth:`~pathlib.Path.is_block_device()`, + :meth:`~pathlib.Path.is_char_device()`, :meth:`~pathlib.Path.is_fifo()`, + :meth:`~pathlib.Path.is_socket()` now return ``False`` instead of raising + :exc:`ValueError` or its subclasses :exc:`UnicodeEncodeError` and + :exc:`UnicodeDecodeError` for paths that contain characters or bytes + unrepresentable at the OS level. + +- bpo-26544: Fixed implementation of :func:`platform.libc_ver`. It almost + always returned version '2.9' for glibc. + +- bpo-33843: Remove deprecated ``cgi.escape``, ``cgi.parse_qs`` and + ``cgi.parse_qsl``. + +- bpo-33842: Remove ``tarfile.filemode`` which is deprecated since Python + 3.3. + +- bpo-30167: Prevent site.main() exception if PYTHONSTARTUP is set. Patch by + Steve Weber. + +- bpo-33805: Improve error message of dataclasses.replace() when an InitVar + is not specified + +- bpo-33687: Fix the call to ``os.chmod()`` for ``uu.decode()`` if a mode is + given or decoded. Patch by Timo Furrer. + +- bpo-33812: Datetime instance d with non-None tzinfo, but with + d.tzinfo.utcoffset(d) returning None is now treated as naive by the + astimezone() method. + +- bpo-32108: In configparser, don't clear section when it is assigned to + itself. + +- bpo-27397: Make email module properly handle invalid-length base64 + strings. + +- bpo-33578: Implement multibyte encoder/decoder state methods + +- bpo-30805: Avoid race condition with debug logging + +- bpo-33476: Fix _header_value_parser.py when address group is missing final + ';'. Contributed by Enrique Perez-Terron + +- bpo-33694: asyncio: Fix a race condition causing data loss on + pause_reading()/resume_reading() when using the ProactorEventLoop. + +- bpo-32493: Correct test for ``uuid_enc_be`` availability in + ``configure.ac``. Patch by Michael Felt. + +- bpo-33792: Add asyncio.WindowsSelectorEventLoopPolicy and + asyncio.WindowsProactorEventLoopPolicy. + +- bpo-33274: W3C DOM Level 1 specifies return value of + Element.removeAttributeNode() as "The Attr node that was removed." + xml.dom.minidom now complies with this requirement. + +- bpo-33778: Update ``unicodedata``'s database to Unicode version 11.0.0. + +- bpo-33165: Added a stacklevel parameter to logging calls to allow use of + wrapper/helper functions for logging APIs. + +- bpo-33770: improve base64 exception message for encoded inputs of invalid + length + +- bpo-33769: asyncio/start_tls: Fix error message; cancel callbacks in case + of an unhandled error; mark SSLTransport as closed if it is aborted. + +- bpo-33767: The concatenation (``+``) and repetition (``*``) sequence + operations now raise :exc:`TypeError` instead of :exc:`SystemError` when + performed on :class:`mmap.mmap` objects. Patch by Zackery Spytz. + +- bpo-33734: asyncio/ssl: Fix AttributeError, increase default handshake + timeout + +- bpo-31014: Fixed creating a controller for :mod:`webbrowser` when a user + specifies a path to an entry in the BROWSER environment variable. Based + on patch by John Still. + +- bpo-2504: Add gettext.pgettext() and variants. + +- bpo-33197: Add description property for _ParameterKind + +- bpo-32751: When cancelling the task due to a timeout, + :meth:`asyncio.wait_for` will now wait until the cancellation is complete. + +- bpo-32684: Fix gather to propagate cancellation of itself even with + return_exceptions. + +- bpo-33654: Support protocol type switching in SSLTransport.set_protocol(). + +- bpo-33674: Pause the transport as early as possible to further reduce the + risk of data_received() being called before connection_made(). + +- bpo-33671: :func:`shutil.copyfile`, :func:`shutil.copy`, + :func:`shutil.copy2`, :func:`shutil.copytree` and :func:`shutil.move` use + platform-specific fast-copy syscalls on Linux and macOS in order to copy + the file more efficiently. On Windows :func:`shutil.copyfile` uses a + bigger default buffer size (1 MiB instead of 16 KiB) and a + :func:`memoryview`-based variant of :func:`shutil.copyfileobj` is used. + The speedup for copying a 512MiB file is about +26% on Linux, +50% on + macOS and +40% on Windows. Also, much less CPU cycles are consumed. + (Contributed by Giampaolo Rodola' in :issue:`25427`.) + +- bpo-33674: Fix a race condition in SSLProtocol.connection_made() of + asyncio.sslproto: start immediately the handshake instead of using + call_soon(). Previously, data_received() could be called before the + handshake started, causing the handshake to hang or fail. + +- bpo-31647: Fixed bug where calling write_eof() on a + _SelectorSocketTransport after it's already closed raises AttributeError. + +- bpo-32610: Make asyncio.all_tasks() return only pending tasks. + +- bpo-32410: Avoid blocking on file IO in sendfile fallback code + +- bpo-33469: Fix RuntimeError after closing loop that used run_in_executor + +- bpo-33672: Fix Task.__repr__ crash with Cython's bogus coroutines + +- bpo-33654: Fix transport.set_protocol() to support switching between + asyncio.Protocol and asyncio.BufferedProtocol. Fix loop.start_tls() to + work with asyncio.BufferedProtocols. + +- bpo-33652: Pickles of type variables and subscripted generics are now + future-proof and compatible with older Python versions. + +- bpo-32493: Fixed :func:`uuid.uuid1` on FreeBSD. + +- bpo-33238: Add ``InvalidStateError`` to :mod:`concurrent.futures`. + ``Future.set_result`` and ``Future.set_exception`` now raise + ``InvalidStateError`` if the futures are not pending or running. Patch by + Jason Haydaman. + +- bpo-33618: Finalize and document preliminary and experimental TLS 1.3 + support with OpenSSL 1.1.1 + +- bpo-33625: Release GIL on `grp.getgrnam`, `grp.getgrgid`, `pwd.getpwnam` + and `pwd.getpwuid` if reentrant variants of these functions are available. + Patch by William Grzybowski. + +- bpo-33623: Fix possible SIGSGV when asyncio.Future is created in __del__ + +- bpo-11874: Use a better regex when breaking usage into wrappable parts. + Avoids bogus assertion errors from custom metavar strings. + +- bpo-30877: Fixed a bug in the Python implementation of the JSON decoder + that prevented the cache of parsed strings from clearing after finishing + the decoding. Based on patch by c-fos. + +- bpo-33604: Remove HMAC default to md5 marked for removal in 3.8 (removal + originally planned in 3.6, bump to 3.8 in gh-7062). + +- bpo-33582: Emit a deprecation warning for inspect.formatargspec + +- bpo-21145: Add ``functools.cached_property`` decorator, for computed + properties cached for the life of the instance. + +- bpo-33570: Change TLS 1.3 cipher suite settings for compatibility with + OpenSSL 1.1.1-pre6 and newer. OpenSSL 1.1.1 will have TLS 1.3 ciphers + enabled by default. + +- bpo-28556: Do not simplify arguments to `typing.Union`. Now + `Union[Manager, Employee]` is not simplified to `Employee` at runtime. + Such simplification previously caused several bugs and limited + possibilities for introspection. + +- bpo-12486: :func:`tokenize.generate_tokens` is now documented as a public + API to tokenize unicode strings. It was previously present but + undocumented. + +- bpo-33540: Add a new ``block_on_close`` class attribute to + ``ForkingMixIn`` and ``ThreadingMixIn`` classes of :mod:`socketserver`. + +- bpo-33548: tempfile._candidate_tempdir_list should consider common TEMP + locations + +- bpo-33109: argparse subparsers are once again not required by default, + reverting the change in behavior introduced by bpo-26510 in 3.7.0a2. + +- bpo-33541: Remove unused private method ``_strptime.LocaleTime.__pad`` + (a.k.a. ``_LocaleTime__pad``). + +- bpo-33536: dataclasses.make_dataclass now checks for invalid field names + and duplicate fields. Also, added a check for invalid field + specifications. + +- bpo-33542: Prevent ``uuid.get_node`` from using a DUID instead of a MAC on + Windows. Patch by Zvi Effron + +- bpo-26819: Fix race condition with `ReadTransport.resume_reading` in + Windows proactor event loop. + +- Fix failure in `typing.get_type_hints()` when ClassVar was provided as a + string forward reference. + +- bpo-33516: :class:`unittest.mock.MagicMock` now supports the ``__round__`` + magic method. + +- bpo-28612: Added support for Site Maps to urllib's ``RobotFileParser`` as + :meth:`RobotFileParser.site_maps() + <urllib.robotparser.RobotFileParser.site_maps>`. Patch by Lady Red, based + on patch by Peter Wirtz. + +- bpo-28167: Remove platform.linux_distribution, which was deprecated since + 3.5. + +- bpo-33504: Switch the default dictionary implementation for + :mod:`configparser` from :class:`collections.OrderedDict` to the standard + :class:`dict` type. + +- bpo-33505: Optimize asyncio.ensure_future() by reordering if checks: 1.17x + faster. + +- bpo-33497: Add errors param to cgi.parse_multipart and make an encoding in + FieldStorage use the given errors (needed for Twisted). Patch by Amber + Brown. + +- bpo-29235: The :class:`cProfile.Profile` class can now be used as a + context manager. Patch by Scott Sanderson. + +- bpo-33495: Change dataclasses.Fields repr to use the repr of each of its + members, instead of str. This makes it more clear what each field + actually represents. This is especially true for the 'type' member. + +- bpo-26103: Correct ``inspect.isdatadescriptor`` to look for ``__set__`` or + ``__delete__``. Patch by Aaron Hall. + +- bpo-29209: Removed the ``doctype()`` method and the *html* parameter of + the constructor of :class:`~xml.etree.ElementTree.XMLParser`. The + ``doctype()`` method defined in a subclass will no longer be called. + Deprecated methods ``getchildren()`` and ``getiterator()`` in the + :mod:`~xml.etree.ElementTree` module emit now a :exc:`DeprecationWarning` + instead of :exc:`PendingDeprecationWarning`. + +- bpo-33453: Fix dataclasses to work if using literal string type + annotations or if using PEP 563 "Postponed Evaluation of Annotations". + Only specific string prefixes are detected for both ClassVar ("ClassVar" + and "typing.ClassVar") and InitVar ("InitVar" and "dataclasses.InitVar"). + +- bpo-28556: Minor fixes in typing module: add annotations to + ``NamedTuple.__new__``, pass ``*args`` and ``**kwds`` in + ``Generic.__new__``. Original PRs by Paulius Šarka and Chad Dombrova. + +- bpo-33365: Print the header values besides the header keys instead just + the header keys if *debuglevel* is set to >0 in :mod:`http.client`. Patch + by Marco Strigl. + +- bpo-20087: Updated alias mapping with glibc 2.27 supported locales. + +- bpo-33422: Fix trailing quotation marks getting deleted when looking up + byte/string literals on pydoc. Patch by Andrés Delfino. + +- bpo-28167: The function ``platform.linux_distribution`` and + ``platform.dist`` now trigger a ``DeprecationWarning`` and have been + marked for removal in Python 3.8 + +- bpo-33281: Fix ctypes.util.find_library regression on macOS. + +- bpo-33311: Text and html output generated by cgitb does not display + parentheses if the current call is done directly in the module. Patch by + Stéphane Blondon. + +- bpo-27300: The file classes in *tempfile* now accept an *errors* parameter + that complements the already existing *encoding*. Patch by Stephan Hohe. + +- bpo-32933: :func:`unittest.mock.mock_open` now supports iteration over the + file contents. Patch by Tony Flury. + +- bpo-33217: Raise :exc:`TypeError` when looking up non-Enum objects in Enum + classes and Enum members. + +- bpo-33197: Update error message when constructing invalid + inspect.Parameters Patch by Dong-hee Na. + +- bpo-33383: Fixed crash in the get() method of the :mod:`dbm.ndbm` database + object when it is called with a single argument. + +- bpo-33375: The warnings module now finds the Python file associated with a + warning from the code object, rather than the frame's global namespace. + This is consistent with how tracebacks and pdb find filenames, and should + work better for dynamically executed code. + +- bpo-33336: ``imaplib`` now allows ``MOVE`` command in ``IMAP4.uid()`` (RFC + 6851: IMAP MOVE Extension) and potentially as a name of supported method + of ``IMAP4`` object. + +- bpo-32455: Added *jump* parameter to :func:`dis.stack_effect`. + +- bpo-27485: Rename and deprecate undocumented functions in + :func:`urllib.parse`. + +- bpo-33332: Add ``signal.valid_signals()`` to expose the POSIX sigfillset() + functionality. + +- bpo-33251: `ConfigParser.items()` was fixed so that key-value pairs passed + in via `vars` are not included in the resulting output. + +- bpo-33329: Fix multiprocessing regression on newer glibcs + +- bpo-33334: :func:`dis.stack_effect` now supports all defined opcodes + including NOP and EXTENDED_ARG. + +- bpo-991266: Fix quoting of the ``Comment`` attribute of + :class:`http.cookies.SimpleCookie`. + +- bpo-33131: Upgrade bundled version of pip to 10.0.1. + +- bpo-33308: Fixed a crash in the :mod:`parser` module when converting an ST + object to a tree of tuples or lists with ``line_info=False`` and + ``col_info=True``. + +- bpo-23403: lib2to3 now uses pickle protocol 4 for pre-computed grammars. + +- bpo-33266: lib2to3 now recognizes ``rf'...'`` strings. + +- bpo-11594: Ensure line-endings are respected when using lib2to3. + +- bpo-33254: Have :func:`importlib.resources.contents` and + :meth:`importlib.abc.ResourceReader.contents` return an :term:`iterable` + instead of an :term:`iterator`. + +- bpo-33265: ``contextlib.ExitStack`` and ``contextlib.AsyncExitStack`` now + use a method instead of a wrapper function for exit callbacks. + +- bpo-33263: Fix FD leak in `_SelectorSocketTransport` Patch by Vlad + Starostin. + +- bpo-33256: Fix display of ``<module>`` call in the html produced by + ``cgitb.html()``. Patch by Stéphane Blondon. + +- bpo-33144: ``random.Random()`` and its subclassing mechanism got optimized + to check only once at class/subclass instantiation time whether its + ``getrandbits()`` method can be relied on by other methods, including + ``randrange()``, for the generation of arbitrarily large random integers. + Patch by Wolfgang Maier. + +- bpo-33185: Fixed regression when running pydoc with the :option:`-m` + switch. (The regression was introduced in 3.7.0b3 by the resolution of + :issue:`33053`) + + This fix also changed pydoc to add ``os.getcwd()`` to :data:`sys.path` + when necessary, rather than adding ``"."``. + +- bpo-29613: Added support for the ``SameSite`` cookie flag to the + ``http.cookies`` module. + +- bpo-33169: Delete entries of ``None`` in :data:`sys.path_importer_cache` + when :meth:`importlib.machinery.invalidate_caches` is called. + +- bpo-33203: ``random.Random.choice()`` now raises ``IndexError`` for empty + sequences consistently even when called from subclasses without a + ``getrandbits()`` implementation. + +- bpo-33224: Update difflib.mdiff() for :pep:`479`. Convert an uncaught + StopIteration in a generator into a return-statement. + +- bpo-33209: End framing at the end of C implementation of + :func:`pickle.Pickler.dump`. + +- bpo-32861: The urllib.robotparser's ``__str__`` representation now + includes wildcard entries and the "Crawl-delay" and "Request-rate" fields. + Also removes extra newlines that were being appended to the end of the + string. Patch by Michael Lazar. + +- bpo-23403: ``DEFAULT_PROTOCOL`` in :mod:`pickle` was bumped to 4. Protocol + 4 is described in :pep:`3154` and available since Python 3.4. It offers + better performance and smaller size compared to protocol 3 introduced in + Python 3.0. + +- bpo-20104: Improved error handling and fixed a reference leak in + :func:`os.posix_spawn()`. + +- bpo-33106: Deleting a key from a read-only dbm database raises module + specific error instead of KeyError. + +- bpo-33175: In dataclasses, Field.__set_name__ now looks up the + __set_name__ special method on the class, not the instance, of the default + value. + +- bpo-32380: Create functools.singledispatchmethod to support generic single + dispatch on descriptors and methods. + +- bpo-33141: Have Field objects pass through __set_name__ to their default + values, if they have their own __set_name__. + +- bpo-33096: Allow ttk.Treeview.insert to insert iid that has a false + boolean value. Note iid=0 and iid=False would be same. Patch by Garvit + Khatri. + +- bpo-32873: Treat type variables and special typing forms as immutable by + copy and pickle. This fixes several minor issues and inconsistencies, and + improves backwards compatibility with Python 3.6. + +- bpo-33134: When computing dataclass's __hash__, use the lookup table to + contain the function which returns the __hash__ value. This is an + improvement over looking up a string, and then testing that string to see + what to do. + +- bpo-33127: The ssl module now compiles with LibreSSL 2.7.1. + +- bpo-32505: Raise TypeError if a member variable of a dataclass is of type + Field, but doesn't have a type annotation. + +- bpo-33078: Fix the failure on OSX caused by the tests relying on + sem_getvalue + +- bpo-33116: Add 'Field' to dataclasses.__all__. + +- bpo-32896: Fix an error where subclassing a dataclass with a field that + uses a default_factory would generate an incorrect class. + +- bpo-33100: Dataclasses: If a field has a default value that's a + MemberDescriptorType, then it's from that field being in __slots__, not an + actual default value. + +- bpo-32953: If a non-dataclass inherits from a frozen dataclass, allow + attributes to be added to the derived class. Only attributes from the + frozen dataclass cannot be assigned to. Require all dataclasses in a + hierarchy to be either all frozen or all non-frozen. + +- bpo-33097: Raise RuntimeError when ``executor.submit`` is called during + interpreter shutdown. + +- bpo-32968: Modulo and floor division involving Fraction and float should + return float. + +- bpo-33061: Add missing ``NoReturn`` to ``__all__`` in typing.py + +- bpo-33078: Fix the size handling in multiprocessing.Queue when a pickling + error occurs. + +- bpo-33064: lib2to3 now properly supports trailing commas after ``*args`` + and ``**kwargs`` in function signatures. + +- bpo-33056: FIX properly close leaking fds in + concurrent.futures.ProcessPoolExecutor. + +- bpo-33021: Release the GIL during fstat() calls, avoiding hang of all + threads when calling mmap.mmap(), os.urandom(), and random.seed(). Patch + by Nir Soffer. + +- bpo-31804: Avoid failing in multiprocessing.Process if the standard + streams are closed or None at exit. + +- bpo-33034: Providing an explicit error message when casting the port + property to anything that is not an integer value using ``urlparse()`` and + ``urlsplit()``. Patch by Matt Eaton. + +- bpo-30249: Improve struct.unpack_from() exception messages for problems + with the buffer size and offset. + +- bpo-33037: Skip sending/receiving data after SSL transport closing. + +- bpo-27683: Fix a regression in :mod:`ipaddress` that result of + :meth:`hosts` is empty when the network is constructed by a tuple + containing an integer mask and only 1 bit left for addresses. + +- bpo-22674: Add the strsignal() function in the signal module that returns + the system description of the given signal, as returned by strsignal(3). + +- bpo-32999: Fix C implementation of ``ABC.__subclasscheck__(cls, + subclass)`` crashed when ``subclass`` is not a type object. + +- bpo-33009: Fix inspect.signature() for single-parameter partialmethods. + +- bpo-32969: Expose several missing constants in zlib and fix corresponding + documentation. + +- bpo-32056: Improved exceptions raised for invalid number of channels and + sample width when read an audio file in modules :mod:`aifc`, :mod:`wave` + and :mod:`sunau`. + +- bpo-32970: Improved disassembly of the MAKE_FUNCTION instruction. + +- bpo-32844: Fix wrong redirection of a low descriptor (0 or 1) to stderr in + subprocess if another low descriptor is closed. + +- bpo-32960: For dataclasses, disallow inheriting frozen from non-frozen + classes, and also disallow inheriting non-frozen from frozen classes. This + restriction will be relaxed at a future date. + +- bpo-32713: Fixed tarfile.itn handling of out-of-bounds float values. Patch + by Joffrey Fuhrer. + +- bpo-32257: The ssl module now contains OP_NO_RENEGOTIATION constant, + available with OpenSSL 1.1.0h or 1.1.1. + +- bpo-32951: Direct instantiation of SSLSocket and SSLObject objects is now + prohibited. The constructors were never documented, tested, or designed as + public constructors. Users were suppose to use ssl.wrap_socket() or + SSLContext. + +- bpo-32929: Remove the tri-state parameter "hash", and add the boolean + "unsafe_hash". If unsafe_hash is True, add a __hash__ function, but if a + __hash__ exists, raise TypeError. If unsafe_hash is False, add a __hash__ + based on the values of eq= and frozen=. The unsafe_hash=False behavior is + the same as the old hash=None behavior. unsafe_hash=False is the default, + just as hash=None used to be. + +- bpo-32947: Add OP_ENABLE_MIDDLEBOX_COMPAT and test workaround for TLSv1.3 + for future compatibility with OpenSSL 1.1.1. + +- bpo-32146: Document the interaction between frozen executables and the + spawn and forkserver start methods in multiprocessing. + +- bpo-30622: The ssl module now detects missing NPN support in LibreSSL. + +- bpo-32922: dbm.open() now encodes filename with the filesystem encoding + rather than default encoding. + +- bpo-32759: Free unused arenas in multiprocessing.heap. + +- bpo-32859: In ``os.dup2``, don't check every call whether the ``dup3`` + syscall exists or not. + +- bpo-32556: nt._getfinalpathname, nt._getvolumepathname and + nt._getdiskusage now correctly convert from bytes. + +- bpo-21060: Rewrite confusing message from setup.py upload from "No dist + file created in earlier command" to the more helpful "Must create and + upload files in one command". + +- bpo-32857: In :mod:`tkinter`, ``after_cancel(None)`` now raises a + :exc:`ValueError` instead of canceling the first scheduled function. + Patch by Cheryl Sabella. + +- bpo-32852: Make sure sys.argv remains as a list when running trace. + +- bpo-31333: ``_abc`` module is added. It is a speedup module with C + implementations for various functions and methods in ``abc``. Creating an + ABC subclass and calling ``isinstance`` or ``issubclass`` with an ABC + subclass are up to 1.5x faster. In addition, this makes Python start-up up + to 10% faster. + + Note that the new implementation hides internal registry and caches, + previously accessible via private attributes ``_abc_registry``, + ``_abc_cache``, and ``_abc_negative_cache``. There are three debugging + helper methods that can be used instead ``_dump_registry``, + ``_abc_registry_clear``, and ``_abc_caches_clear``. + +- bpo-32841: Fixed `asyncio.Condition` issue which silently ignored + cancellation after notifying and cancelling a conditional lock. Patch by + Bar Harel. + +- bpo-32819: ssl.match_hostname() has been simplified and no longer depends + on re and ipaddress module for wildcard and IP addresses. Error reporting + for invalid wildcards has been improved. + +- bpo-19675: ``multiprocessing.Pool`` no longer leaks processes if its + initialization fails. + +- bpo-32394: socket: Remove + TCP_FASTOPEN,TCP_KEEPCNT,TCP_KEEPIDLE,TCP_KEEPINTVL flags on older version + Windows during run-time. + +- bpo-31787: Fixed refleaks of ``__init__()`` methods in various modules. + (Contributed by Oren Milman) + +- bpo-30157: Fixed guessing quote and delimiter in csv.Sniffer.sniff() when + only the last field is quoted. Patch by Jake Davis. + +- bpo-30688: Added support of ``\N{name}`` escapes in regular expressions. + Based on patch by Jonathan Eunice. + +- bpo-32792: collections.ChainMap() preserves the order of the underlying + mappings. + +- bpo-32775: :func:`fnmatch.translate()` no longer produces patterns which + contain set operations. Sets starting with '[' or containing '--', '&&', + '~~' or '||' will be interpreted differently in regular expressions in + future versions. Currently they emit warnings. fnmatch.translate() now + avoids producing patterns containing such sets by accident. + +- bpo-32622: Implement native fast sendfile for Windows proactor event loop. + +- bpo-32777: Fix a rare but potential pre-exec child process deadlock in + subprocess on POSIX systems when marking file descriptors inheritable on + exec in the child process. This bug appears to have been introduced in + 3.4. + +- bpo-32647: The ctypes module used to depend on indirect linking for + dlopen. The shared extension is now explicitly linked against libdl on + platforms with dl. + +- bpo-32749: A :mod:`dbm.dumb` database opened with flags 'r' is now + read-only. :func:`dbm.dumb.open` with flags 'r' and 'w' no longer creates + a database if it does not exist. + +- bpo-32741: Implement ``asyncio.TimerHandle.when()`` method. + +- bpo-32691: Use mod_spec.parent when running modules with pdb + +- bpo-32734: Fixed ``asyncio.Lock()`` safety issue which allowed acquiring + and locking the same lock multiple times, without it being free. Patch by + Bar Harel. + +- bpo-32727: Do not include name field in SMTP envelope from address. Patch + by Stéphane Wirtel + +- bpo-31453: Add TLSVersion constants and SSLContext.maximum_version / + minimum_version attributes. The new API wraps OpenSSL 1.1 + https://www.openssl.org/docs/man1.1.0/ssl/SSL_CTX_set_min_proto_version.html + feature. + +- bpo-24334: Internal implementation details of ssl module were cleaned up. + The SSLSocket has one less layer of indirection. Owner and session + information are now handled by the SSLSocket and SSLObject constructor. + Channel binding implementation has been simplified. + +- bpo-31848: Fix the error handling in Aifc_read.initfp() when the SSND + chunk is not found. Patch by Zackery Spytz. + +- bpo-32585: Add Ttk spinbox widget to :mod:`tkinter.ttk`. Patch by Alan D + Moore. + +- bpo-32512: :mod:`profile` CLI accepts `-m module_name` as an alternative + to script path. + +- bpo-8525: help() on a type now displays builtin subclasses. This is + intended primarily to help with notification of more specific exception + subclasses. + + Patch by Sanyam Khurana. + +- bpo-31639: http.server now exposes a ThreadingHTTPServer class and uses it + when the module is run with ``-m`` to cope with web browsers pre-opening + sockets. + +- bpo-29877: compileall: import ProcessPoolExecutor only when needed, + preventing hangs on low resource platforms + +- bpo-32221: Various functions returning tuple containing IPv6 addresses now + omit ``%scope`` part since the same information is already encoded in + *scopeid* tuple item. Especially this speeds up :func:`socket.recvfrom` + when it receives multicast packet since useless resolving of network + interface name is omitted. + +- bpo-32147: :func:`binascii.unhexlify` is now up to 2 times faster. Patch + by Sergey Fedoseev. + +- bpo-30693: The TarFile class now recurses directories in a reproducible + way. + +- bpo-30693: The ZipFile class now recurses directories in a reproducible + way. + +- bpo-31680: Added :data:`curses.ncurses_version`. + +- bpo-31908: Fix output of cover files for ``trace`` module command-line + tool. Previously emitted cover files only when ``--missing`` option was + used. Patch by Michael Selik. + +- bpo-31608: Raise a ``TypeError`` instead of crashing if a + ``collections.deque`` subclass returns a non-deque from ``__new__``. Patch + by Oren Milman. + +- bpo-31425: Add support for sockets of the AF_QIPCRTR address family, + supported by the Linux kernel. This is used to communicate with services, + such as GPS or radio, running on Qualcomm devices. Patch by Bjorn + Andersson. + +- bpo-22005: Implemented unpickling instances of + :class:`~datetime.datetime`, :class:`~datetime.date` and + :class:`~datetime.time` pickled by Python 2. ``encoding='latin1'`` should + be used for successful decoding. + +- bpo-27645: :class:`sqlite3.Connection` now exposes a + :class:`~sqlite3.Connection.backup` method, if the underlying SQLite + library is at version 3.6.11 or higher. Patch by Lele Gaifax. + +- bpo-16865: Support arrays >=2GiB in :mod:`ctypes`. Patch by Segev Finer. + +- bpo-31508: Removed support of arguments in + `tkinter.ttk.Treeview.selection`. It was deprecated in 3.6. Use + specialized methods like `selection_set` for changing the selection. + +- bpo-29456: Fix bugs in hangul normalization: u1176, u11a7 and u11c3 + +Documentation +------------- + +- bpo-21257: Document :func:`http.client.parse_headers`. + +- bpo-34764: Improve example of iter() with 2nd sentinel argument. + +- bpo-35564: Explicitly set master_doc variable in conf.py for compliance + with Sphinx 2.0 + +- bpo-35511: Specified that profile.Profile class doesn't not support enable + or disable methods. Also, elaborated that Profile object as a context + manager is only supported in cProfile module. + +- bpo-10536: Enhance the gettext docs. Patch by Éric Araujo + +- bpo-35089: Remove mention of ``typing.io`` and ``typing.re``. Their types + should be imported from ``typing`` directly. + +- bpo-35038: Fix the documentation about an unexisting `f_restricted` + attribute in the frame object. Patch by Stéphane Wirtel + +- bpo-35042: Replace PEP XYZ by the pep role and allow to use the direct + links to the PEPs. + +- bpo-35044: Fix the documentation with the role ``exc`` for the + appropriated exception. Patch by Stéphane Wirtel + +- bpo-35035: Rename documentation for :mod:`email.utils` to + ``email.utils.rst``. + +- bpo-34967: Use app.add_object_type() instead of the deprecated Sphinx + function app.description_unit() + +- bpo-34913: Add documentation about the new command line interface of the + gzip module. + +- bpo-32174: chm document displays non-ASCII charaters properly on some MBCS + Windows systems. + +- bpo-11233: Create availability directive for documentation. Original + patch by Georg Brandl. + +- bpo-34790: Document how passing coroutines to asyncio.wait() can be + confusing. + +- bpo-34552: Make clear that ``==`` operator sometimes is equivalent to + `is`. The ``<``, ``<=``, ``>`` and ``>=`` operators are only defined where + they make sense. + +- bpo-28617: Fixed info in the stdtypes docs concerning the types that + support membership tests. + +- bpo-20177: Migrate datetime.date.fromtimestamp to Argument Clinic. Patch + by Tim Hoffmann. + +- bpo-34065: Fix wrongly written basicConfig documentation markup syntax + +- bpo-33460: replaced ellipsis with correct error codes in tutorial chapter + 3. + +- bpo-33847: Add '@' operator entry to index. + +- bpo-33409: Clarified the relationship between :pep:`538`'s + PYTHONCOERCECLOCALE and PEP 540's PYTHONUTF8 mode. + +- bpo-33197: Add versionadded tag to the documentation of + ParameterKind.description + +- bpo-17045: Improve the C-API doc for PyTypeObject. This includes adding + several quick-reference tables and a lot of missing slot/typedef entries. + The existing entries were also cleaned up with a slightly more consistent + format. + +- bpo-33736: Improve the documentation of :func:`asyncio.open_connection`, + :func:`asyncio.start_server` and their UNIX socket counterparts. + +- bpo-23859: Document that `asyncio.wait()` does not cancel its futures on + timeout. + +- bpo-32436: Document :pep:`567` changes to asyncio. + +- bpo-33604: Update HMAC md5 default to a DeprecationWarning, bump removal + to 3.8. + +- bpo-33594: Document ``getargspec``, ``from_function`` and ``from_builtin`` + as deprecated in their respective docstring, and include version since + deprecation in DeprecationWarning message. + +- bpo-33503: Fix broken pypi link + +- bpo-33421: Add missing documentation for ``typing.AsyncContextManager``. + +- bpo-33487: BZ2file now emit a DeprecationWarning when buffering=None is + passed, the deprecation message and documentation also now explicitly + state it is deprecated since 3.0. + +- bpo-33378: Add Korean language switcher for https://docs.python.org/3/ + +- bpo-33276: Clarify that the ``__path__`` attribute on modules cannot be + just any value. + +- bpo-33201: Modernize documentation for writing C extension types. + +- bpo-33195: Deprecate ``Py_UNICODE`` usage in ``c-api/arg`` document. + ``Py_UNICODE`` related APIs are deprecated since Python 3.3, but it is + missed in the document. + +- bpo-33126: Document PyBuffer_ToContiguous(). + +- bpo-27212: Modify documentation for the :func:`islice` recipe to consume + initial values up to the start index. + +- bpo-28247: Update :mod:`zipapp` documentation to describe how to make + standalone applications. + +- bpo-18802: Documentation changes for ipaddress. Patch by Jon Foster and + Berker Peksag. + +- bpo-27428: Update documentation to clarify that ``WindowsRegistryFinder`` + implements ``MetaPathFinder``. (Patch by Himanshu Lakhara) + +- bpo-28124: The ssl module function ssl.wrap_socket() has been + de-emphasized and deprecated in favor of the more secure and efficient + SSLContext.wrap_socket() method. + +- bpo-17232: Clarify docs for -O and -OO. Patch by Terry Reedy. + +- bpo-32436: Add documentation for the contextvars module (PEP 567). + +- bpo-32800: Update link to w3c doc for xml default namespaces. + +- bpo-11015: Update :mod:`test.support` documentation. + +- bpo-32613: Update the faq/windows.html to use the py command from PEP 397 + instead of python. + +- bpo-8722: Document :meth:`__getattr__` behavior when property :meth:`get` + method raises :exc:`AttributeError`. + +- bpo-32614: Modify RE examples in documentation to use raw strings to + prevent :exc:`DeprecationWarning` and add text to REGEX HOWTO to highlight + the deprecation. + +- bpo-20709: Remove the paragraph where we explain that os.utime() does not + support a directory as path under Windows. Patch by Jan-Philip Gehrcke + +- bpo-32722: Remove the bad example in the tutorial of the Generator + Expression. Patch by Stéphane Wirtel + +- bpo-31972: Improve docstrings for `pathlib.PurePath` subclasses. + +- bpo-30607: Use the externalized ``python-docs-theme`` package when + building the documentation. + +- bpo-8243: Add a note about curses.addch and curses.addstr exception + behavior when writing outside a window, or pad. + +- bpo-32337: Update documentation related with ``dict`` order. + +- bpo-25041: Document ``AF_PACKET`` in the :mod:`socket` module. + +- bpo-31432: Clarify meaning of CERT_NONE, CERT_OPTIONAL, and CERT_REQUIRED + flags for ssl.SSLContext.verify_mode. + +Tests +----- + +- bpo-35772: Fix sparse file tests of test_tarfile on ppc64 with the tmpfs + filesystem. Fix the function testing if the filesystem supports sparse + files: create a file which contains data and "holes", instead of creating + a file which contains no data. tmpfs effective block size is a page size + (tmpfs lives in the page cache). RHEL uses 64 KiB pages on aarch64, ppc64, + ppc64le, only s390x and x86_64 use 4 KiB pages, whereas the test punch + holes of 4 KiB. + +- bpo-35045: Make ssl tests less strict and also accept TLSv1 as system + default. The changes unbreaks test_min_max_version on Fedora 29. + +- bpo-32710: ``test_asyncio/test_sendfile.py`` now resets the event loop + policy using :func:`tearDownModule` as done in other tests, to prevent a + warning when running tests on Windows. + +- bpo-33717: test.pythoninfo now logs information of all clocks, not only + time.time() and time.perf_counter(). + +- bpo-35488: Add a test to pathlib's Path.match() to verify it does not + support glob-style ** recursive pattern matching. + +- bpo-31731: Fix a race condition in ``check_interrupted_write()`` of + test_io: create directly the thread with SIGALRM signal blocked, rather + than blocking the signal later from the thread. Previously, it was + possible that the thread gets the signal before the signal is blocked. + +- bpo-35424: Fix test_multiprocessing_main_handling: use + :class:`multiprocessing.Pool` with a context manager and then explicitly + join the pool. + +- bpo-35519: Rename :mod:`test.bisect` module to :mod:`test.bisect_cmd` to + avoid conflict with :mod:`bisect` module when running directly a test like + ``./python Lib/test/test_xmlrpc.py``. + +- bpo-35513: Replace :func:`time.time` with :func:`time.monotonic` in tests + to measure time delta. + +- bpo-34279: :func:`test.support.run_unittest` no longer raise + :exc:`TestDidNotRun` if the test result contains skipped tests. The + exception is now only raised if no test have been run and no test have + been skipped. + +- bpo-35412: Add testcase to ``test_future4``: check unicode literal. + +- bpo-26704: Added test demonstrating double-patching of an instance method. + Patch by Anthony Sottile. + +- bpo-33725: test_multiprocessing_fork may crash on recent versions of + macOS. Until the issue is resolved, skip the test on macOS. + +- bpo-35352: Modify test_asyncio to use the certificate set from the test + directory. + +- bpo-35317: Fix ``mktime()`` overflow error in ``test_email``: run + ``test_localtime_daylight_true_dst_true()`` and + ``test_localtime_daylight_false_dst_true()`` with a specific timezone. + +- bpo-21263: After several reports that test_gdb does not work properly on + macOS and since gdb is not shipped by default anymore, test_gdb is now + skipped on macOS when LLVM Clang has been used to compile Python. Patch by + Lysandros Nikolaou + +- bpo-34279: regrtest issue a warning when no tests have been executed in a + particular test file. Also, a new final result state is issued if no test + have been executed across all test files. Patch by Pablo Galindo. + +- bpo-34962: make docstest in Doc now passes., and is enforced in CI + +- bpo-23596: Use argparse for the command line of the gzip module. Patch by + Antony Lee + +- bpo-34537: Fix ``test_gdb.test_strings()`` when ``LC_ALL=C`` and GDB was + compiled with Python 3.6 or earlier. + +- bpo-34587: test_socket: Remove RDSTest.testCongestion(). The test tries to + fill the receiver's socket buffer and expects an error. But the RDS + protocol doesn't require that. Moreover, the Linux implementation of RDS + expects that the producer of the messages reduces its rate, it's not the + role of the receiver to trigger an error. The test fails on Fedora 28 by + design, so just remove it. + +- bpo-34661: Fix test_shutil if unzip doesn't support -t. + +- bpo-34200: Fixed non-deterministic flakiness of test_pkg by not using the + scary test.support.module_cleanup() logic to save and restore sys.modules + contents between test cases. + +- bpo-34569: The experimental PEP 554 data channels now correctly pass + negative PyLong objects between subinterpreters on 32-bit systems. Patch + by Michael Felt. + +- bpo-34594: Fix usage of hardcoded ``errno`` values in the tests. + +- bpo-34579: Fix test_embed for AIX Patch by Michael Felt + +- bpo-34542: Use 3072 RSA keys and SHA-256 signature for test certs and + keys. + +- bpo-11193: Remove special condition for AIX in + `test_subprocess.test_undecodable_env` + +- bpo-34347: Fix `test_utf8_mode.test_cmd_line` for AIX + +- bpo-34490: On AIX with AF_UNIX family sockets getsockname() does not + provide 'sockname', so skip calls to transport.get_extra_info('sockname') + +- bpo-34391: Fix ftplib test for TLS 1.3 by reading from data socket. + +- bpo-11192: Fix `test_socket` on AIX AIX 6.1 and later IPv6 zone id + supports only supported by inet_pton6_zone() Switch to runtime-based + platform.system() to establish current platform rather than build-time + based sys.platform() + +- bpo-34399: Update all RSA keys and DH params to use at least 2048 bits. + +- bpo-34373: Fix ``test_mktime`` and ``test_pthread_getcpuclickid`` tests + for AIX Add range checking for ``_PyTime_localtime`` for AIX Patch by + Michael Felt + +- bpo-11191: Skip the distutils test 'test_search_cpp' when using XLC as + compiler patch by aixtools (Michael Felt) + +- Improved an error message when mock assert_has_calls fails. + +- bpo-33746: Fix test_unittest when run in verbose mode. + +- bpo-33901: Fix test_dbm_gnu on macOS with gdbm 1.15: add a larger value to + make sure that the file size changes. + +- bpo-33873: Fix a bug in ``regrtest`` that caused an extra test to run if + --huntrleaks/-R was used. Exit with error in case that invalid parameters + are specified to --huntrleaks/-R (at least one warmup run and one + repetition must be used). + +- bpo-33562: Check that a global asyncio event loop policy is not left + behind by any tests. + +- bpo-33655: Ignore test_posix_fallocate failures on BSD platforms that + might be due to running on ZFS. + +- bpo-32962: Fixed test_gdb when Python is compiled with flags -mcet + -fcf-protection -O0. + +- bpo-33358: Fix ``test_embed.test_pre_initialization_sys_options()`` when + the interpreter is built with ``--enable-shared``. + +- bpo-32872: Avoid regrtest compatibility issue with namespace packages. + +- bpo-32517: Fix failing ``test_asyncio`` on macOS 10.12.2+ due to transport + of ``KqueueSelector`` loop was not being closed. + +- bpo-32663: Making sure the `SMTPUTF8SimTests` class of tests gets run in + test_smtplib.py. + +- bpo-27643: Test_C test case needs "signed short" bitfields, but the IBM + XLC compiler (on AIX) does not support this Skip the code and test when + AIX and XLC are used + + Applicable to Python2-2.7 and later + +- bpo-19417: Add test_bdb.py. + +- bpo-31809: Add tests to verify connection with secp ECDH curves. + +Build +----- + +- bpo-34691: The _contextvars module is now built into the core Python + library on Windows. + +- bpo-35683: Improved Azure Pipelines build steps and now verifying layouts + correctly + +- bpo-35642: Remove asynciomodule.c from pythoncore.vcxproj + +- bpo-35550: Fix incorrect Solaris #ifdef checks to look for __sun && __SVR4 + instead of sun when compiling. + +- bpo-35499: ``make profile-opt`` no longer replaces ``CFLAGS_NODIST`` with + ``CFLAGS``. It now adds profile-guided optimization (PGO) flags to + ``CFLAGS_NODIST``: existing ``CFLAGS_NODIST`` flags are kept. + +- bpo-35257: Avoid leaking the linker flags from Link Time Optimizations + (LTO) into distutils when compiling C extensions. + +- bpo-35351: When building Python with clang and LTO, LTO flags are no + longer passed into CFLAGS to build third-party C extensions through + distutils. + +- bpo-35139: Fix a compiler error when statically linking `pyexpat` in + `Modules/Setup`. + +- bpo-35059: PCbuild: Set InlineFunctionExpansion to OnlyExplicitInline + ("/Ob1" option) in pyproject.props in Debug mode to expand functions + marked as inline. This change should make Python compiled in Debug mode a + little bit faster on Windows. + +- bpo-35011: Restores the use of pyexpatns.h to isolate our embedded copy of + the expat C library so that its symbols do not conflict at link or dynamic + loading time with an embedding application or other extension modules with + their own version of libexpat. + +- bpo-28015: Have --with-lto works correctly with clang. + +- bpo-34765: Update the outdated install-sh file to the latest revision from + automake v1.16.1 + +- bpo-34585: Check for floating-point byte order in configure.ac using + compilation tests instead of executing code, so that these checks work in + cross-compiled builds. + +- bpo-34710: Fixed SSL module build with OpenSSL & pedantic CFLAGS. + +- bpo-34582: Add JUnit XML output for regression tests and update Azure + DevOps builds. + +- bpo-34081: Make Sphinx warnings as errors in the Docs Makefile. + +- bpo-34555: Fix for case where it was not possible to have both + ``HAVE_LINUX_VM_SOCKETS_H`` and ``HAVE_SOCKADDR_ALG`` be undefined. + +- bpo-33015: Fix an undefined behaviour in the pthread implementation of + :c:func:`PyThread_start_new_thread`: add a function wrapper to always + return ``NULL``. + +- bpo-34245: The Python shared library is now installed with write + permission (mode 0755), which is the standard way of installing such + libraries. + +- bpo-34121: Fix detection of C11 atomic support on clang. + +- bpo-32430: Rename Modules/Setup.dist to Modules/Setup, and remove the + necessity to copy the former manually to the latter when updating the + local source tree. + +- bpo-30345: Add -g to LDFLAGS when compiling with LTO to get debug symbols. + +- bpo-5755: Move ``-Wstrict-prototypes`` option to ``CFLAGS_NODIST`` from + ``OPT``. This option emitted annoying warnings when building extension + modules written in C++. + +- bpo-33614: Ensures module definition files for the stable ABI on Windows + are correctly regenerated. + +- bpo-33648: The --with-c-locale-warning configuration flag has been + removed. It has had no effect for about a year. + +- bpo-33522: Enable CI builds on Visual Studio Team Services at + https://python.visualstudio.com/cpython + +- bpo-33512: configure's check for "long double" has been simplified + +- bpo-33483: C compiler is now correctly detected from the standard + environment variables. --without-gcc and --with-icc options have been + removed. + +- bpo-33394: Enable the verbose build for extension modules, when GNU make + is passed macros on the command line. + +- bpo-33393: Update config.guess and config.sub files. + +- bpo-33377: Add new triplets for mips r6 and riscv variants (used in + extension suffixes). + +- bpo-32232: By default, modules configured in `Modules/Setup` are no longer + built with `-DPy_BUILD_CORE`. Instead, modules that specifically need that + preprocessor definition include it in their individual entries. + +- bpo-33182: The embedding tests can once again be built with clang 6.0 + +- bpo-33163: Upgrade pip to 9.0.3 and setuptools to v39.0.1. + +- bpo-33012: gcc 8 has added a new warning heuristic to detect invalid + function casts and a stock python build seems to hit that warning quite + often. The most common is the cast of a METH_NOARGS function (that uses + just one argument) to a PyCFunction. Fix this by adding a dummy argument + to all functions that implement METH_NOARGS. + +- bpo-32898: Fix the python debug build when using COUNT_ALLOCS. + +- bpo-29442: Replace optparse with argparse in setup.py + +Windows +------- + +- bpo-35890: Fix API calling consistency of GetVersionEx and wcstok. + +- bpo-32560: The ``py`` launcher now forwards its ``STARTUPINFO`` structure + to child processes. + +- bpo-35854: Fix EnvBuilder and --symlinks in venv on Windows + +- bpo-35811: Avoid propagating venv settings when launching via py.exe + +- bpo-35797: Fix default executable used by the multiprocessing module + +- bpo-35758: Allow building on ARM with MSVC. + +- bpo-29734: Fix handle leaks in os.stat on Windows. + +- bpo-35596: Use unchecked PYCs for the embeddable distro to avoid zipimport + restrictions. + +- bpo-35596: Fix vcruntime140.dll being added to embeddable distro multiple + times. + +- bpo-35402: Update Windows build to use Tcl and Tk 8.6.9 + +- bpo-35401: Updates Windows build to OpenSSL 1.1.0j + +- bpo-34977: venv on Windows will now use a python.exe redirector rather + than copying the actual binaries from the base environment. + +- bpo-34977: Adds support for building a Windows App Store package + +- bpo-35067: Remove _distutils_findvs module and use vswhere.exe instead. + +- bpo-32557: Allow shutil.disk_usage to take a file path on Windows + +- bpo-34770: Fix a possible null pointer dereference in pyshellext.cpp. + +- bpo-34603: Fix returning structs from functions produced by MSVC + +- bpo-34581: Guard MSVC-specific code in socketmodule.c with ``#ifdef + _MSC_VER``. + +- bpo-34532: Fixes exit code of list version arguments for py.exe. + +- bpo-34062: Fixed the '--list' and '--list-paths' arguments for the py.exe + launcher + +- bpo-34225: Ensure INCLUDE and LIB directories do not end with a backslash. + +- bpo-34011: A suite of code has been changed which copied across DLLs and + init.tcl from the running Python location into a venv being created. These + copies are needed only when running from a Python source build, and the + copying code is now only run when that is the case, rather than whenever a + venv is created. + +- bpo-34006: Revert line length limit for Windows help docs. The line-length + limit is not needed because the pages appear in a separate app rather than + on a browser tab. It can also interact badly with the DPI setting. + +- bpo-31546: Restore running PyOS_InputHook while waiting for user input at + the prompt. The restores integration of interactive GUI windows (such as + Matplotlib figures) with the prompt on Windows. + +- bpo-30237: Output error when ReadConsole is canceled by + CancelSynchronousIo instead of crashing. + +- bpo-33895: GIL is released while calling functions that acquire Windows + loader lock. + +- bpo-33720: Reduces maximum marshal recursion depth on release builds. + +- bpo-29097: Fix bug where :meth:`datetime.fromtimestamp` erroneously throws + an :exc:`OSError` on Windows for values between 0 and 86400. Patch by + Ammar Askar. + +- bpo-33316: PyThread_release_lock always fails + +- bpo-33184: Update Windows installer to use OpenSSL 1.1.0h. + +- bpo-32890: Fix usage of GetLastError() instead of errno in os.execve() and + os.truncate(). + +- bpo-33016: Fix potential use of uninitialized memory in + nt._getfinalpathname + +- bpo-32903: Fix a memory leak in os.chdir() on Windows if the current + directory is set to a UNC path. + +- bpo-32901: Update Tcl and Tk versions to 8.6.8 + +- bpo-31966: Fixed WindowsConsoleIO.write() for writing empty data. + +- bpo-32409: Ensures activate.bat can handle Unicode contents. + +- bpo-32457: Improves handling of denormalized executable path when + launching Python. + +- bpo-32370: Use the correct encoding for ipconfig output in the uuid + module. Patch by Segev Finer. + +- bpo-29248: Fix :func:`os.readlink` on Windows, which was mistakenly + treating the ``PrintNameOffset`` field of the reparse data buffer as a + number of characters instead of bytes. Patch by Craig Holmquist and SSE4. + +- bpo-1104: Correctly handle string length in + ``msilib.SummaryInfo.GetProperty()`` to prevent it from truncating the + last character. + +macOS +----- + +- bpo-35401: Update macOS installer to use OpenSSL 1.1.0j. + +- bpo-35025: Properly guard the use of the ``CLOCK_GETTIME`` et al. macros + in ``timemodule`` on macOS. + +- bpo-24658: On macOS, fix reading from and writing into a file with a size + larger than 2 GiB. + +- bpo-34405: Update to OpenSSL 1.1.0i for macOS installer builds. + +- bpo-33635: In macOS stat on some file descriptors (/dev/fd/3 f.e) will + result in bad file descriptor OSError. Guard against this exception was + added in is_dir, is_file and similar methods. DirEntry.is_dir can also + throw this exception so _RecursiveWildcardSelector._iterate_directories + was also extended with the same error ignoring pattern. + +- bpo-13631: The .editrc file in user's home directory is now processed + correctly during the readline initialization through editline emulation on + macOS. + +- bpo-33184: Update macOS installer build to use OpenSSL 1.1.0h. + +- bpo-32726: Build and link with private copy of Tcl/Tk 8.6 for the macOS + 10.6+ installer. The 10.9+ installer variant already does this. This + means that the Python 3.7 provided by the python.org macOS installers no + longer need or use any external versions of Tcl/Tk, either system-provided + or user-installed, such as ActiveTcl. + +- bpo-32901: Update macOS 10.9+ installer to Tcl/Tk 8.6.8. + +- bpo-31903: In :mod:`_scproxy`, drop the GIL when calling into + ``SystemConfiguration`` to avoid deadlocks. + +IDLE +---- + +- bpo-35770: IDLE macosx deletes Options => Configure IDLE. It previously + deleted Window => Zoom Height by mistake. (Zoom Height is now on the + Options menu). On Mac, the settings dialog is accessed via Preferences on + the IDLE menu. + +- bpo-35769: Change IDLE's new file name from 'Untitled' to 'untitled' + +- bpo-35660: Fix imports in idlelib.window. + +- bpo-35641: Proper format `calltip` when the function has no docstring. + +- bpo-33987: Use ttk Frame for ttk widgets. + +- bpo-34055: Fix erroneous 'smart' indents and newlines in IDLE Shell. + +- bpo-35591: Find Selection now works when selection not found. + +- bpo-35196: Speed up squeezer line counting. + +- bpo-35598: Update config_key: use PEP 8 names and ttk widgets, make some + objects global, and add tests. + +- bpo-28097: Add Previous/Next History entries to Shell menu. + +- bpo-35208: Squeezer now properly counts wrapped lines before newlines. + +- bpo-35555: Gray out Code Context menu entry when it's not applicable. + +- bpo-35521: Document the IDLE editor code context feature. Add some + internal references within the IDLE doc. + +- bpo-22703: The Code Context menu label now toggles between Show/Hide Code + Context. The Zoom Height menu now toggles between Zoom/Restore Height. + Zoom Height has moved from the Window menu to the Options menu. + +- bpo-35213: Where appropriate, use 'macOS' in idlelib. + +- bpo-34864: On macOS, warn if the system preference "Prefer tabs when + opening documents" is set to "Always". + +- bpo-34864: Document two IDLE on MacOS issues. The System Preferences Dock + "prefer tabs always" setting disables some IDLE features. Menus are a bit + different than as described for Windows and Linux. + +- bpo-35202: Remove unused imports from lib/idlelib + +- bpo-33000: Document that IDLE's shell has no line limit. A program that + runs indefinitely can overfill memory. + +- bpo-23220: Explain how IDLE's Shell displays output. + +- bpo-35099: Improve the doc about IDLE running user code. The section is + renamed from "IDLE -- console differences" is renamed "Running user code". + It mostly covers the implications of using custom sys.stdxxx objects. + +- bpo-35097: Add IDLE doc subsection explaining editor windows. Topics + include opening, title and status bar, .py* extension, and running. + +- bpo-35093: Document the IDLE document viewer in the IDLE doc. Add a + paragraph in "Help and preferences", "Help sources" subsection. + +- bpo-35088: Update idlelib.help.copy_string docstring. We now use git and + backporting instead of hg and forward merging. + +- bpo-35087: Update idlelib help files for the current doc build. The main + change is the elimination of chapter-section numbers. + +- bpo-34548: Use configured color theme for read-only text views. + +- bpo-1529353: Enable "squeezing" of long outputs in the shell, to avoid + performance degradation and to clean up the history without losing it. + Squeezed outputs may be copied, viewed in a separate window, and + "unsqueezed". + +- bpo-34047: Fixed mousewheel scrolling direction on macOS. + +- bpo-34275: Make IDLE calltips always visible on Mac. Some MacOS-tk + combinations need .update_idletasks(). Patch by Kevin Walzer. + +- bpo-34120: Fix unresponsiveness after closing certain windows and dialogs. + +- bpo-33975: Avoid small type when running htests. Since part of the purpose + of human-viewed tests is to determine that widgets look right, it is + important that they look the same for testing as when running IDLE. + +- bpo-33905: Add test for idlelib.stackview.StackBrowser. + +- bpo-33924: Change mainmenu.menudefs key 'windows' to 'window'. Every other + menudef key is lowercase version of main menu entry. + +- bpo-33906: Rename idlelib.windows as window Match Window on the main menu + and remove last plural module name. + +- bpo-33917: Fix and document idlelib/idle_test/template.py. The revised + file compiles, runs, and tests OK. idle_test/README.txt explains how to + use it to create new IDLE test files. + +- bpo-33904: IDLE: In rstrip, rename class RstripExtension as Rstrip + +- bpo-33907: For consistency and clarity, rename an IDLE module and classes. + Module calltips and its class CallTips are now calltip and Calltip. In + module calltip_w, class CallTip is now CalltipWindow. + +- bpo-33856: Add "help" in the welcome message of IDLE + +- bpo-33839: IDLE: refactor ToolTip and CallTip and add documentation and + tests + +- bpo-33855: Minimally test all IDLE modules. Add missing files, import + module, instantiate classes, and check coverage. Check existing files. + +- bpo-33656: On Windows, add API call saying that tk scales for DPI. On + Windows 8.1+ or 10, with DPI compatibility properties of the Python binary + unchanged, and a monitor resolution greater than 96 DPI, this should make + text and lines sharper. It should otherwise have no effect. + +- bpo-33768: Clicking on a context line moves that line to the top of the + editor window. + +- bpo-33763: IDLE: Use read-only text widget for code context instead of + label widget. + +- bpo-33664: Scroll IDLE editor text by lines. Previously, the mouse wheel + and scrollbar slider moved text by a fixed number of pixels, resulting in + partial lines at the top of the editor box. The change also applies to + the shell and grep output windows, but not to read-only text views. + +- bpo-33679: Enable theme-specific color configuration for Code Context. Use + the Highlights tab to see the setting for built-in themes or add settings + to custom themes. + +- bpo-33642: Display up to maxlines non-blank lines for Code Context. If + there is no current context, show a single blank line. + +- bpo-33628: IDLE: Cleanup codecontext.py and its test. + +- bpo-33564: IDLE's code context now recognizes async as a block opener. + +- bpo-21474: Update word/identifier definition from ascii to unicode. In + text and entry boxes, this affects selection by double-click, movement + left/right by control-left/right, and deletion left/right by + control-BACKSPACE/DEL. + +- bpo-33204: IDLE: consistently color invalid string prefixes. A 'u' string + prefix cannot be paired with either 'r' or 'f'. Consistently color as much + of the prefix, starting at the right, as is valid. Revise and extend + colorizer test. + +- bpo-32984: Set ``__file__`` while running a startup file. Like Python, + IDLE optionally runs one startup file in the Shell window before + presenting the first interactive input prompt. For IDLE, ``-s`` runs a + file named in environmental variable :envvar:`IDLESTARTUP` or + :envvar:`PYTHONSTARTUP`; ``-r file`` runs ``file``. Python sets + ``__file__`` to the startup file name before running the file and unsets + it before the first prompt. IDLE now does the same when run normally, + without the ``-n`` option. + +- bpo-32940: Simplify and rename StringTranslatePseudoMapping in pyparse. + +- bpo-32916: Change ``str`` to ``code`` in pyparse. + +- bpo-32905: Remove unused code in pyparse module. + +- bpo-32874: Add tests for pyparse. + +- bpo-32837: Using the system and place-dependent default encoding for + open() is a bad idea for IDLE's system and location-independent files. + +- bpo-32826: Add "encoding=utf-8" to open() in IDLE's test_help_about. GUI + test test_file_buttons() only looks at initial ascii-only lines, but + failed on systems where open() defaults to 'ascii' because readline() + internally reads and decodes far enough ahead to encounter a non-ascii + character in CREDITS.txt. + +- bpo-32831: Add docstrings and tests for codecontext. + +- bpo-32765: Update configdialog General tab docstring to add new widgets to + the widget list. + +Tools/Demos +----------- + +- bpo-35884: Add a benchmark script for timing various ways to access + variables: ``Tools/scripts/var_access_benchmark.py``. + +- bpo-34989: python-gdb.py now handles errors on computing the line number + of a Python frame. + +- bpo-20260: Argument Clinic now has non-bitwise unsigned int converters. + +- bpo-32962: python-gdb now catches ``UnicodeDecodeError`` exceptions when + calling ``string()``. + +- bpo-32962: python-gdb now catches ValueError on read_var(): when Python + has no debug symbols for example. + +- bpo-33189: :program:`pygettext.py` now recognizes only literal strings as + docstrings and translatable strings, and rejects bytes literals and + f-string expressions. + +- bpo-31920: Fixed handling directories as arguments in the ``pygettext`` + script. Based on patch by Oleg Krasnikov. + +- bpo-29673: Fix pystackv and pystack gdbinit macros. + +- bpo-25427: Remove the pyvenv script in favor of ``python3 -m venv`` in + order to lower confusion as to what Python interpreter a virtual + environment will be created for. + +- bpo-32885: Add an ``-n`` flag for ``Tools/scripts/pathfix.py`` to disable + automatic backup creation (files with ``~`` suffix). + +- bpo-32222: Fix pygettext not extracting docstrings for functions with type + annotated arguments. Patch by Toby Harradine. + +- bpo-31583: Fix 2to3 for using with --add-suffix option but without + --output-dir option for relative path to files in current directory. + +C API +----- + +- bpo-35713: The :c:func:`PyByteArray_Init` and :c:func:`PyByteArray_Fini` + functions have been removed. They did nothing since Python 2.7.4 and + Python 3.2.0, were excluded from the limited API (stable ABI), and were + not documented. + +- bpo-33817: Fixed :c:func:`_PyBytes_Resize` for empty bytes objects. + +- bpo-35322: Fix memory leak in :c:func:`PyUnicode_EncodeLocale` and + :c:func:`PyUnicode_EncodeFSDefault` on error handling. + +- bpo-35059: The following C macros have been converted to static inline + functions: :c:func:`Py_INCREF`, :c:func:`Py_DECREF`, :c:func:`Py_XINCREF`, + :c:func:`Py_XDECREF`, :c:func:`PyObject_INIT`, + :c:func:`PyObject_INIT_VAR`. + +- bpo-35296: ``make install`` now also installs the internal API: + ``Include/internal/*.h`` header files. + +- bpo-35081: Internal APIs surrounded by ``#ifdef Py_BUILD_CORE`` have been + moved from ``Include/*.h`` headers to new header files + ``Include/internal/pycore_*.h``. + +- bpo-35259: Conditionally declare :c:func:`Py_FinalizeEx()` (new in 3.6) + based on Py_LIMITED_API. Patch by Arthur Neufeld. + +- bpo-35081: The :c:func:`_PyObject_GC_TRACK` and + :c:func:`_PyObject_GC_UNTRACK` macros have been removed from the public C + API. + +- bpo-35134: Creation of a new ``Include/cpython/`` subdirectory. + +- bpo-34725: Adds _Py_SetProgramFullPath so embedders may override + sys.executable + +- bpo-34910: Ensure that :c:func:`PyObject_Print` always returns ``-1`` on + error. Patch by Zackery Spytz. + +- bpo-34523: Py_DecodeLocale() and Py_EncodeLocale() now use the UTF-8 + encoding on Windows if Py_LegacyWindowsFSEncodingFlag is zero. + +- bpo-34193: Fix pluralization in TypeError messages in getargs.c and + typeobject.c: '1 argument' instead of '1 arguments' and '1 element' + instead of '1 elements'. + +- bpo-34127: Return grammatically correct error message based on argument + count. Patch by Karthikeyan Singaravelan. + +- bpo-23927: Fixed :exc:`SystemError` in + :c:func:`PyArg_ParseTupleAndKeywords` when the ``w*`` format unit is used + for optional parameter. + +- bpo-32455: Added :c:func:`PyCompile_OpcodeStackEffectWithJump`. + +- bpo-34008: Py_Main() can again be called after Py_Initialize(), as in + Python 3.6. + +- bpo-32500: Fixed error messages for :c:func:`PySequence_Size`, + :c:func:`PySequence_GetItem`, :c:func:`PySequence_SetItem` and + :c:func:`PySequence_DelItem` called with a mapping and + :c:func:`PyMapping_Size` called with a sequence. + +- bpo-33818: :c:func:`PyExceptionClass_Name` will now return ``const char + *`` instead of ``char *``. + +- bpo-33042: Embedding applications may once again call + PySys_ResetWarnOptions, PySys_AddWarnOption, and PySys_AddXOption prior to + calling Py_Initialize. + +- bpo-32374: Document that m_traverse for multi-phase initialized modules + can be called with m_state=NULL, and add a sanity check + +- bpo-30863: :c:func:`PyUnicode_AsWideChar` and + :c:func:`PyUnicode_AsWideCharString` no longer cache the ``wchar_t*`` + representation of string objects. + + +What's New in Python 3.7.0 final? +================================= + +*Release date: 2018-06-27* + +Library +------- + +- bpo-33851: Fix :func:`ast.get_docstring` for a node that lacks a + docstring. + +C API +----- + +- bpo-33932: Calling Py_Initialize() twice does nothing, instead of failing + with a fatal error: restore the Python 3.6 behaviour. + + +What's New in Python 3.7.0 release candidate 1? +=============================================== + +*Release date: 2018-06-12* + +Core and Builtins +----------------- + +- bpo-33803: Fix a crash in hamt.c caused by enabling GC tracking for an + object that hadn't all of its fields set to NULL. + +- bpo-33706: Fix a crash in Python initialization when parsing the command + line options. Thanks Christoph Gohlke for the bug report and the fix! + +- bpo-30654: Fixed reset of the SIGINT handler to SIG_DFL on interpreter + shutdown even when there was a custom handler set previously. Patch by + Philipp Kerling. + +- bpo-31849: Fix signed/unsigned comparison warning in pyhash.c. + +Library +------- + +- bpo-30167: Prevent site.main() exception if PYTHONSTARTUP is set. Patch by + Steve Weber. + +- bpo-33812: Datetime instance d with non-None tzinfo, but with + d.tzinfo.utcoffset(d) returning None is now treated as naive by the + astimezone() method. + +- bpo-30805: Avoid race condition with debug logging + +- bpo-33694: asyncio: Fix a race condition causing data loss on + pause_reading()/resume_reading() when using the ProactorEventLoop. + +- bpo-32493: Correct test for ``uuid_enc_be`` availability in + ``configure.ac``. Patch by Michael Felt. + +- bpo-33792: Add asyncio.WindowsSelectorEventLoopPolicy and + asyncio.WindowsProactorEventLoopPolicy. + +- bpo-33778: Update ``unicodedata``'s database to Unicode version 11.0.0. + +- bpo-33770: improve base64 exception message for encoded inputs of invalid + length + +- bpo-33769: asyncio/start_tls: Fix error message; cancel callbacks in case + of an unhandled error; mark SSLTransport as closed if it is aborted. + +- bpo-33767: The concatenation (``+``) and repetition (``*``) sequence + operations now raise :exc:`TypeError` instead of :exc:`SystemError` when + performed on :class:`mmap.mmap` objects. Patch by Zackery Spytz. + +- bpo-33734: asyncio/ssl: Fix AttributeError, increase default handshake + timeout + +- bpo-11874: Use a better regex when breaking usage into wrappable parts. + Avoids bogus assertion errors from custom metavar strings. + +- bpo-33582: Emit a deprecation warning for inspect.formatargspec + +Documentation +------------- + +- bpo-33409: Clarified the relationship between :pep:`538`'s + PYTHONCOERCECLOCALE and PEP 540's PYTHONUTF8 mode. + +- bpo-33736: Improve the documentation of :func:`asyncio.open_connection`, + :func:`asyncio.start_server` and their UNIX socket counterparts. + +- bpo-31432: Clarify meaning of CERT_NONE, CERT_OPTIONAL, and CERT_REQUIRED + flags for ssl.SSLContext.verify_mode. + +Build +----- + +- bpo-5755: Move ``-Wstrict-prototypes`` option to ``CFLAGS_NODIST`` from + ``OPT``. This option emitted annoying warnings when building extension + modules written in C++. + +Windows +------- + +- bpo-33720: Reduces maximum marshal recursion depth on release builds. + +IDLE +---- + +- bpo-33656: On Windows, add API call saying that tk scales for DPI. On + Windows 8.1+ or 10, with DPI compatibility properties of the Python binary + unchanged, and a monitor resolution greater than 96 DPI, this should make + text and lines sharper. It should otherwise have no effect. + +- bpo-33768: Clicking on a context line moves that line to the top of the + editor window. + +- bpo-33763: IDLE: Use read-only text widget for code context instead of + label widget. + +- bpo-33664: Scroll IDLE editor text by lines. Previously, the mouse wheel + and scrollbar slider moved text by a fixed number of pixels, resulting in + partial lines at the top of the editor box. The change also applies to + the shell and grep output windows, but not to read-only text views. + +- bpo-33679: Enable theme-specific color configuration for Code Context. Use + the Highlights tab to see the setting for built-in themes or add settings + to custom themes. + +- bpo-33642: Display up to maxlines non-blank lines for Code Context. If + there is no current context, show a single blank line. + + +What's New in Python 3.7.0 beta 5? +================================== + +*Release date: 2018-05-30* + +Core and Builtins +----------------- + +- bpo-33622: Fixed a leak when the garbage collector fails to add an object + with the ``__del__`` method or referenced by it into the + :data:`gc.garbage` list. :c:func:`PyGC_Collect` can now be called when an + exception is set and preserves it. + +- bpo-33509: Fix module_globals parameter of warnings.warn_explicit(): don't + crash if module_globals is not a dict. + +- bpo-20104: The new `os.posix_spawn` added in 3.7.0b1 was removed as we are + still working on what the API should look like. Expect this in 3.8 + instead. + +- bpo-33475: Fixed miscellaneous bugs in converting annotations to strings + and optimized parentheses in the string representation. + +- bpo-33391: Fix a leak in set_symmetric_difference(). + +- bpo-28055: Fix unaligned accesses in siphash24(). Patch by Rolf Eike Beer. + +- bpo-32911: Due to unexpected compatibility issues discovered during + downstream beta testing, reverted :issue:`29463`. ``docstring`` field is + removed from Module, ClassDef, FunctionDef, and AsyncFunctionDef ast nodes + which was added in 3.7a1. Docstring expression is restored as a first + statement in their body. Based on patch by Inada Naoki. + +- bpo-21983: Fix a crash in `ctypes.cast()` in case the type argument is a + ctypes structured data type. Patch by Eryk Sun and Oren Milman. + +Library +------- + +- bpo-32751: When cancelling the task due to a timeout, + :meth:`asyncio.wait_for` will now wait until the cancellation is complete. + +- bpo-32684: Fix gather to propagate cancellation of itself even with + return_exceptions. + +- bpo-33654: Support protocol type switching in SSLTransport.set_protocol(). + +- bpo-33674: Pause the transport as early as possible to further reduce the + risk of data_received() being called before connection_made(). + +- bpo-33674: Fix a race condition in SSLProtocol.connection_made() of + asyncio.sslproto: start immediately the handshake instead of using + call_soon(). Previously, data_received() could be called before the + handshake started, causing the handshake to hang or fail. + +- bpo-31647: Fixed bug where calling write_eof() on a + _SelectorSocketTransport after it's already closed raises AttributeError. + +- bpo-32610: Make asyncio.all_tasks() return only pending tasks. + +- bpo-32410: Avoid blocking on file IO in sendfile fallback code + +- bpo-33469: Fix RuntimeError after closing loop that used run_in_executor + +- bpo-33672: Fix Task.__repr__ crash with Cython's bogus coroutines + +- bpo-33654: Fix transport.set_protocol() to support switching between + asyncio.Protocol and asyncio.BufferedProtocol. Fix loop.start_tls() to + work with asyncio.BufferedProtocols. + +- bpo-33652: Pickles of type variables and subscripted generics are now + future-proof and compatible with older Python versions. + +- bpo-32493: Fixed :func:`uuid.uuid1` on FreeBSD. + +- bpo-33618: Finalize and document preliminary and experimental TLS 1.3 + support with OpenSSL 1.1.1 + +- bpo-33623: Fix possible SIGSGV when asyncio.Future is created in __del__ + +- bpo-30877: Fixed a bug in the Python implementation of the JSON decoder + that prevented the cache of parsed strings from clearing after finishing + the decoding. Based on patch by c-fos. + +- bpo-33570: Change TLS 1.3 cipher suite settings for compatibility with + OpenSSL 1.1.1-pre6 and newer. OpenSSL 1.1.1 will have TLS 1.3 ciphers + enabled by default. + +- bpo-28556: Do not simplify arguments to `typing.Union`. Now + `Union[Manager, Employee]` is not simplified to `Employee` at runtime. + Such simplification previously caused several bugs and limited + possibilities for introspection. + +- bpo-33540: Add a new ``block_on_close`` class attribute to + ``ForkingMixIn`` and ``ThreadingMixIn`` classes of :mod:`socketserver`. + +- bpo-33548: tempfile._candidate_tempdir_list should consider common TEMP + locations + +- bpo-33109: argparse subparsers are once again not required by default, + reverting the change in behavior introduced by bpo-26510 in 3.7.0a2. + +- bpo-33536: dataclasses.make_dataclass now checks for invalid field names + and duplicate fields. Also, added a check for invalid field + specifications. + +- bpo-33542: Prevent ``uuid.get_node`` from using a DUID instead of a MAC on + Windows. Patch by Zvi Effron + +- bpo-26819: Fix race condition with `ReadTransport.resume_reading` in + Windows proactor event loop. + +- Fix failure in `typing.get_type_hints()` when ClassVar was provided as a + string forward reference. + +- bpo-33505: Optimize asyncio.ensure_future() by reordering if checks: 1.17x + faster. + +- bpo-33497: Add errors param to cgi.parse_multipart and make an encoding in + FieldStorage use the given errors (needed for Twisted). Patch by Amber + Brown. + +- bpo-33495: Change dataclasses.Fields repr to use the repr of each of its + members, instead of str. This makes it more clear what each field + actually represents. This is especially true for the 'type' member. + +- bpo-33453: Fix dataclasses to work if using literal string type + annotations or if using PEP 563 "Postponed Evaluation of Annotations". + Only specific string prefixes are detected for both ClassVar ("ClassVar" + and "typing.ClassVar") and InitVar ("InitVar" and "dataclasses.InitVar"). + +- bpo-28556: Minor fixes in typing module: add annotations to + ``NamedTuple.__new__``, pass ``*args`` and ``**kwds`` in + ``Generic.__new__``. Original PRs by Paulius Šarka and Chad Dombrova. + +- bpo-20087: Updated alias mapping with glibc 2.27 supported locales. + +- bpo-33422: Fix trailing quotation marks getting deleted when looking up + byte/string literals on pydoc. Patch by Andrés Delfino. + +- bpo-28167: The function ``platform.linux_distribution`` and + ``platform.dist`` now trigger a ``DeprecationWarning`` and have been + marked for removal in Python 3.8 + +- bpo-33197: Update error message when constructing invalid + inspect.Parameters Patch by Dong-hee Na. + +- bpo-33263: Fix FD leak in `_SelectorSocketTransport` Patch by Vlad + Starostin. + +- bpo-32861: The urllib.robotparser's ``__str__`` representation now + includes wildcard entries and the "Crawl-delay" and "Request-rate" fields. + Patch by Michael Lazar. + +- bpo-32257: The ssl module now contains OP_NO_RENEGOTIATION constant, + available with OpenSSL 1.1.0h or 1.1.1. + +- bpo-16865: Support arrays >=2GiB in :mod:`ctypes`. Patch by Segev Finer. + +Documentation +------------- + +- bpo-23859: Document that `asyncio.wait()` does not cancel its futures on + timeout. + +- bpo-32436: Document :pep:`567` changes to asyncio. + +- bpo-33604: Update HMAC md5 default to a DeprecationWarning, bump removal + to 3.8. + +- bpo-33503: Fix broken pypi link + +- bpo-33421: Add missing documentation for ``typing.AsyncContextManager``. + +Tests +----- + +- bpo-33655: Ignore test_posix_fallocate failures on BSD platforms that + might be due to running on ZFS. + +- bpo-32604: Remove the _xxsubinterpreters module (meant for testing) and + associated helpers. This module was originally added recently in 3.7b1. + +Build +----- + +- bpo-33614: Ensures module definition files for the stable ABI on Windows + are correctly regenerated. + +- bpo-33522: Enable CI builds on Visual Studio Team Services at + https://python.visualstudio.com/cpython + +- bpo-33012: Add ``-Wno-cast-function-type`` for gcc 8 for silencing + warnings about function casts like casting to PyCFunction in method + definition lists. + +macOS +----- + +- bpo-13631: The .editrc file in user's home directory is now processed + correctly during the readline initialization through editline emulation on + macOS. + +IDLE +---- + +- bpo-33628: IDLE: Cleanup codecontext.py and its test. + +- bpo-33564: IDLE's code context now recognizes async as a block opener. + +- bpo-32831: Add docstrings and tests for codecontext. + + +What's New in Python 3.7.0 beta 4? +================================== + +*Release date: 2018-05-02* + +Core and Builtins +----------------- + +- bpo-33363: Raise a SyntaxError for ``async with`` and ``async for`` + statements outside of async functions. + +- bpo-33128: Fix a bug that causes PathFinder to appear twice on + sys.meta_path. Patch by Pablo Galindo Salgado. + +- bpo-33312: Fixed clang ubsan (undefined behavior sanitizer) warnings in + dictobject.c by adjusting how the internal struct _dictkeysobject shared + keys structure is declared. + +- bpo-33231: Fix potential memory leak in ``normalizestring()``. + +- bpo-33205: Change dict growth function from + ``round_up_to_power_2(used*2+hashtable_size/2)`` to + ``round_up_to_power_2(used*3)``. Previously, dict is shrinked only when + ``used == 0``. Now dict has more chance to be shrinked. + +- bpo-29922: Improved error messages in 'async with' when ``__aenter__()`` + or ``__aexit__()`` return non-awaitable object. + +- bpo-33199: Fix ``ma_version_tag`` in dict implementation is uninitialized + when copying from key-sharing dict. + +Library +------- + +- bpo-33281: Fix ctypes.util.find_library regression on macOS. + +- bpo-33383: Fixed crash in the get() method of the :mod:`dbm.ndbm` database + object when it is called with a single argument. + +- bpo-33329: Fix multiprocessing regression on newer glibcs + +- bpo-991266: Fix quoting of the ``Comment`` attribute of + :class:`http.cookies.SimpleCookie`. + +- bpo-33131: Upgrade bundled version of pip to 10.0.1. + +- bpo-33308: Fixed a crash in the :mod:`parser` module when converting an ST + object to a tree of tuples or lists with ``line_info=False`` and + ``col_info=True``. + +- bpo-33266: lib2to3 now recognizes ``rf'...'`` strings. + +- bpo-11594: Ensure line-endings are respected when using lib2to3. + +- bpo-33254: Have :func:`importlib.resources.contents` and + :meth:`importlib.abc.ResourceReader.contents` return an :term:`iterable` + instead of an :term:`iterator`. + +- bpo-33256: Fix display of ``<module>`` call in the html produced by + ``cgitb.html()``. Patch by Stéphane Blondon. + +- bpo-33185: Fixed regression when running pydoc with the :option:`-m` + switch. (The regression was introduced in 3.7.0b3 by the resolution of + :issue:`33053`) This fix also changed pydoc to add ``os.getcwd()`` to + :data:`sys.path` when necessary, rather than adding ``"."``. + +- bpo-33169: Delete entries of ``None`` in :data:`sys.path_importer_cache` + when :meth:`importlib.machinery.invalidate_caches` is called. + +- bpo-33217: Deprecate looking up non-Enum objects in Enum classes and Enum + members (will raise :exc:`TypeError` in 3.8+). + +- bpo-33203: ``random.Random.choice()`` now raises ``IndexError`` for empty + sequences consistently even when called from subclasses without a + ``getrandbits()`` implementation. + +- bpo-33224: Update difflib.mdiff() for :pep:`479`. Convert an uncaught + StopIteration in a generator into a return-statement. + +- bpo-33209: End framing at the end of C implementation of + :func:`pickle.Pickler.dump`. + +- bpo-20104: Improved error handling and fixed a reference leak in + :func:`os.posix_spawn()`. + +- bpo-33175: In dataclasses, Field.__set_name__ now looks up the + __set_name__ special method on the class, not the instance, of the default + value. + +- bpo-33097: Raise RuntimeError when ``executor.submit`` is called during + interpreter shutdown. + +- bpo-31908: Fix output of cover files for ``trace`` module command-line + tool. Previously emitted cover files only when ``--missing`` option was + used. Patch by Michael Selik. + +Documentation +------------- + +- bpo-33378: Add Korean language switcher for https://docs.python.org/3/ + +- bpo-33276: Clarify that the ``__path__`` attribute on modules cannot be + just any value. + +- bpo-33201: Modernize documentation for writing C extension types. + +- bpo-33195: Deprecate ``Py_UNICODE`` usage in ``c-api/arg`` document. + ``Py_UNICODE`` related APIs are deprecated since Python 3.3, but it is + missed in the document. + +- bpo-8243: Add a note about curses.addch and curses.addstr exception + behavior when writing outside a window, or pad. + +- bpo-32337: Update documentation related with ``dict`` order. + +Tests +----- + +- bpo-33358: Fix ``test_embed.test_pre_initialization_sys_options()`` when + the interpreter is built with ``--enable-shared``. + +Build +----- + +- bpo-33394: Enable the verbose build for extension modules, when GNU make + is passed macros on the command line. + +- bpo-33393: Update config.guess and config.sub files. + +- bpo-33377: Add new triplets for mips r6 and riscv variants (used in + extension suffixes). + +- bpo-32232: By default, modules configured in `Modules/Setup` are no longer + built with `-DPy_BUILD_CORE`. Instead, modules that specifically need that + preprocessor definition include it in their individual entries. + +- bpo-33182: The embedding tests can once again be built with clang 6.0 + +Windows +------- + +- bpo-33184: Update Windows installer to use OpenSSL 1.1.0h. + +macOS +----- + +- bpo-33184: Update macOS installer build to use OpenSSL 1.1.0h. + +IDLE +---- + +- bpo-21474: Update word/identifier definition from ascii to unicode. In + text and entry boxes, this affects selection by double-click, movement + left/right by control-left/right, and deletion left/right by + control-BACKSPACE/DEL. + +- bpo-33204: IDLE: consistently color invalid string prefixes. A 'u' string + prefix cannot be paired with either 'r' or 'f'. Consistently color as much + of the prefix, starting at the right, as is valid. Revise and extend + colorizer test. + +Tools/Demos +----------- + +- bpo-33189: :program:`pygettext.py` now recognizes only literal strings as + docstrings and translatable strings, and rejects bytes literals and + f-string expressions. + +- bpo-31920: Fixed handling directories as arguments in the ``pygettext`` + script. Based on patch by Oleg Krasnikov. + +- bpo-29673: Fix pystackv and pystack gdbinit macros. + +- bpo-31583: Fix 2to3 for using with --add-suffix option but without + --output-dir option for relative path to files in current directory. + + +What's New in Python 3.7.0 beta 3? +================================== + +*Release date: 2018-03-29* + +Security +-------- + +- bpo-33136: Harden ssl module against LibreSSL CVE-2018-8970. + X509_VERIFY_PARAM_set1_host() is called with an explicit namelen. A new + test ensures that NULL bytes are not allowed. + +- bpo-33001: Minimal fix to prevent buffer overrun in os.symlink on Windows + +- bpo-32981: Regexes in difflib and poplib were vulnerable to catastrophic + backtracking. These regexes formed potential DOS vectors (REDOS). They + have been refactored. This resolves CVE-2018-1060 and CVE-2018-1061. Patch + by Jamie Davis. + +Core and Builtins +----------------- + +- bpo-33053: When using the -m switch, sys.path[0] is now explicitly + expanded as the *starting* working directory, rather than being left as + the empty path (which allows imports from the current working directory at + the time of the import) + +- bpo-33018: Improve consistency of errors raised by ``issubclass()`` when + called with a non-class and an abstract base class as the first and second + arguments, respectively. Patch by Josh Bronson. + +- bpo-33041: Fixed jumping when the function contains an ``async for`` loop. + +- bpo-33026: Fixed jumping out of "with" block by setting f_lineno. + +- bpo-33005: Fix a crash on fork when using a custom memory allocator (ex: + using PYTHONMALLOC env var). _PyGILState_Reinit() and + _PyInterpreterState_Enable() now use the default RAW memory allocator to + allocate a new interpreters mutex on fork. + +- bpo-17288: Prevent jumps from 'return' and 'exception' trace events. + +- bpo-32836: Don't use temporary variables in cases of list/dict/set + comprehensions + +Library +------- + +- bpo-33141: Have Field objects pass through __set_name__ to their default + values, if they have their own __set_name__. + +- bpo-33096: Allow ttk.Treeview.insert to insert iid that has a false + boolean value. Note iid=0 and iid=False would be same. Patch by Garvit + Khatri. + +- bpo-32873: Treat type variables and special typing forms as immutable by + copy and pickle. This fixes several minor issues and inconsistencies, and + improves backwards compatibility with Python 3.6. + +- bpo-33134: When computing dataclass's __hash__, use the lookup table to + contain the function which returns the __hash__ value. This is an + improvement over looking up a string, and then testing that string to see + what to do. + +- bpo-33127: The ssl module now compiles with LibreSSL 2.7.1. + +- bpo-32505: Raise TypeError if a member variable of a dataclass is of type + Field, but doesn't have a type annotation. + +- bpo-33078: Fix the failure on OSX caused by the tests relying on + sem_getvalue + +- bpo-33116: Add 'Field' to dataclasses.__all__. + +- bpo-32896: Fix an error where subclassing a dataclass with a field that + uses a default_factory would generate an incorrect class. + +- bpo-33100: Dataclasses: If a field has a default value that's a + MemberDescriptorType, then it's from that field being in __slots__, not an + actual default value. + +- bpo-32953: If a non-dataclass inherits from a frozen dataclass, allow + attributes to be added to the derived class. Only attributes from the + frozen dataclass cannot be assigned to. Require all dataclasses in a + hierarchy to be either all frozen or all non-frozen. + +- bpo-33061: Add missing ``NoReturn`` to ``__all__`` in typing.py + +- bpo-33078: Fix the size handling in multiprocessing.Queue when a pickling + error occurs. + +- bpo-33064: lib2to3 now properly supports trailing commas after ``*args`` + and ``**kwargs`` in function signatures. + +- bpo-33056: FIX properly close leaking fds in + concurrent.futures.ProcessPoolExecutor. + +- bpo-33021: Release the GIL during fstat() calls, avoiding hang of all + threads when calling mmap.mmap(), os.urandom(), and random.seed(). Patch + by Nir Soffer. + +- bpo-31804: Avoid failing in multiprocessing.Process if the standard + streams are closed or None at exit. + +- bpo-33037: Skip sending/receiving data after SSL transport closing. + +- bpo-27683: Fix a regression in :mod:`ipaddress` that result of + :meth:`hosts` is empty when the network is constructed by a tuple + containing an integer mask and only 1 bit left for addresses. + +- bpo-32999: Fix C implementation of ``ABC.__subclasscheck__(cls, + subclass)`` crashed when ``subclass`` is not a type object. + +- bpo-33009: Fix inspect.signature() for single-parameter partialmethods. + +- bpo-32969: Expose several missing constants in zlib and fix corresponding + documentation. + +- bpo-32056: Improved exceptions raised for invalid number of channels and + sample width when read an audio file in modules :mod:`aifc`, :mod:`wave` + and :mod:`sunau`. + +- bpo-32844: Fix wrong redirection of a low descriptor (0 or 1) to stderr in + subprocess if another low descriptor is closed. + +- bpo-32857: In :mod:`tkinter`, ``after_cancel(None)`` now raises a + :exc:`ValueError` instead of canceling the first scheduled function. + Patch by Cheryl Sabella. + +- bpo-31639: http.server now exposes a ThreadedHTTPServer class and uses it + when the module is run with ``-m`` to cope with web browsers pre-opening + sockets. + +- bpo-27645: :class:`sqlite3.Connection` now exposes a + :class:`~sqlite3.Connection.backup` method, if the underlying SQLite + library is at version 3.6.11 or higher. Patch by Lele Gaifax. + +Documentation +------------- + +- bpo-33126: Document PyBuffer_ToContiguous(). + +- bpo-27212: Modify documentation for the :func:`islice` recipe to consume + initial values up to the start index. + +- bpo-28247: Update :mod:`zipapp` documentation to describe how to make + standalone applications. + +- bpo-18802: Documentation changes for ipaddress. Patch by Jon Foster and + Berker Peksag. + +- bpo-27428: Update documentation to clarify that ``WindowsRegistryFinder`` + implements ``MetaPathFinder``. (Patch by Himanshu Lakhara) + +Tests +----- + +- bpo-32872: Avoid regrtest compatibility issue with namespace packages. + +- bpo-32517: Fix failing ``test_asyncio`` on macOS 10.12.2+ due to transport + of ``KqueueSelector`` loop was not being closed. + +- bpo-19417: Add test_bdb.py. + +Build +----- + +- bpo-33163: Upgrade pip to 9.0.3 and setuptools to v39.0.1. + +Windows +------- + +- bpo-33016: Fix potential use of uninitialized memory in + nt._getfinalpathname + +- bpo-32903: Fix a memory leak in os.chdir() on Windows if the current + directory is set to a UNC path. + +macOS +----- + +- bpo-32726: Build and link with private copy of Tcl/Tk 8.6 for the macOS + 10.6+ installer. The 10.9+ installer variant already does this. This + means that the Python 3.7 provided by the python.org macOS installers no + longer need or use any external versions of Tcl/Tk, either system-provided + or user-installed, such as ActiveTcl. + +IDLE +---- + +- bpo-32984: Set ``__file__`` while running a startup file. Like Python, + IDLE optionally runs one startup file in the Shell window before + presenting the first interactive input prompt. For IDLE, ``-s`` runs a + file named in environmental variable :envvar:`IDLESTARTUP` or + :envvar:`PYTHONSTARTUP`; ``-r file`` runs ``file``. Python sets + ``__file__`` to the startup file name before running the file and unsets + it before the first prompt. IDLE now does the same when run normally, + without the ``-n`` option. + +- bpo-32940: Simplify and rename StringTranslatePseudoMapping in pyparse. + +Tools/Demos +----------- + +- bpo-32885: Add an ``-n`` flag for ``Tools/scripts/pathfix.py`` to disable + automatic backup creation (files with ``~`` suffix). + +C API +----- + +- bpo-33042: Embedding applications may once again call + PySys_ResetWarnOptions, PySys_AddWarnOption, and PySys_AddXOption prior to + calling Py_Initialize. + +- bpo-32374: Document that m_traverse for multi-phase initialized modules + can be called with m_state=NULL, and add a sanity check + + +What's New in Python 3.7.0 beta 2? +================================== + +*Release date: 2018-02-27* + +Security +-------- + +- bpo-28414: The ssl module now allows users to perform their own IDN + en/decoding when using SNI. + +Core and Builtins +----------------- + +- bpo-32889: Update Valgrind suppression list to account for the rename of + ``Py_ADDRESS_IN_RANG`` to ``address_in_range``. + +- bpo-31356: Remove the new API added in bpo-31356 (gc.ensure_disabled() + context manager). + +- bpo-32305: For namespace packages, ensure that both ``__file__`` and + ``__spec__.origin`` are set to None. + +- bpo-32303: Make sure ``__spec__.loader`` matches ``__loader__`` for + namespace packages. + +- bpo-32711: Fix the warning messages for Python/ast_unparse.c. Patch by + Stéphane Wirtel + +- bpo-32583: Fix possible crashing in builtin Unicode decoders caused by + write out-of-bound errors when using customized decode error handlers. + +Library +------- + +- bpo-32960: For dataclasses, disallow inheriting frozen from non-frozen + classes, and also disallow inheriting non-frozen from frozen classes. This + restriction will be relaxed at a future date. + +- bpo-32713: Fixed tarfile.itn handling of out-of-bounds float values. Patch + by Joffrey Fuhrer. + +- bpo-32951: Direct instantiation of SSLSocket and SSLObject objects is now + prohibited. The constructors were never documented, tested, or designed as + public constructors. Users were suppose to use ssl.wrap_socket() or + SSLContext. + +- bpo-32929: Remove the tri-state parameter "hash", and add the boolean + "unsafe_hash". If unsafe_hash is True, add a __hash__ function, but if a + __hash__ exists, raise TypeError. If unsafe_hash is False, add a __hash__ + based on the values of eq= and frozen=. The unsafe_hash=False behavior is + the same as the old hash=None behavior. unsafe_hash=False is the default, + just as hash=None used to be. + +- bpo-32947: Add OP_ENABLE_MIDDLEBOX_COMPAT and test workaround for TLSv1.3 + for future compatibility with OpenSSL 1.1.1. + +- bpo-30622: The ssl module now detects missing NPN support in LibreSSL. + +- bpo-32922: dbm.open() now encodes filename with the filesystem encoding + rather than default encoding. + +- bpo-32859: In ``os.dup2``, don't check every call whether the ``dup3`` + syscall exists or not. + +- bpo-32556: nt._getfinalpathname, nt._getvolumepathname and + nt._getdiskusage now correctly convert from bytes. + +- bpo-25988: Emit a :exc:`DeprecationWarning` when using or importing an ABC + directly from :mod:`collections` rather than from :mod:`collections.abc`. + +- bpo-21060: Rewrite confusing message from setup.py upload from "No dist + file created in earlier command" to the more helpful "Must create and + upload files in one command". + +- bpo-32852: Make sure sys.argv remains as a list when running trace. + +- bpo-31333: ``_abc`` module is added. It is a speedup module with C + implementations for various functions and methods in ``abc``. Creating an + ABC subclass and calling ``isinstance`` or ``issubclass`` with an ABC + subclass are up to 1.5x faster. In addition, this makes Python start-up up + to 10% faster. Note that the new implementation hides internal registry + and caches, previously accessible via private attributes + ``_abc_registry``, ``_abc_cache``, and ``_abc_negative_cache``. There are + three debugging helper methods that can be used instead + ``_dump_registry``, ``_abc_registry_clear``, and ``_abc_caches_clear``. + +- bpo-32841: Fixed `asyncio.Condition` issue which silently ignored + cancellation after notifying and cancelling a conditional lock. Patch by + Bar Harel. + +- bpo-32819: ssl.match_hostname() has been simplified and no longer depends + on re and ipaddress module for wildcard and IP addresses. Error reporting + for invalid wildcards has been improved. + +- bpo-32394: socket: Remove + TCP_FASTOPEN,TCP_KEEPCNT,TCP_KEEPIDLE,TCP_KEEPINTVL flags on older version + Windows during run-time. + +- bpo-31787: Fixed refleaks of ``__init__()`` methods in various modules. + (Contributed by Oren Milman) + +- bpo-30157: Fixed guessing quote and delimiter in csv.Sniffer.sniff() when + only the last field is quoted. Patch by Jake Davis. + +- bpo-32792: collections.ChainMap() preserves the order of the underlying + mappings. + +- bpo-32775: :func:`fnmatch.translate()` no longer produces patterns which + contain set operations. Sets starting with '[' or containing '--', '&&', + '~~' or '||' will be interpreted differently in regular expressions in + future versions. Currently they emit warnings. fnmatch.translate() now + avoids producing patterns containing such sets by accident. + +- bpo-32622: Implement native fast sendfile for Windows proactor event loop. + +- bpo-32777: Fix a rare but potential pre-exec child process deadlock in + subprocess on POSIX systems when marking file descriptors inheritable on + exec in the child process. This bug appears to have been introduced in + 3.4. + +- bpo-32647: The ctypes module used to depend on indirect linking for + dlopen. The shared extension is now explicitly linked against libdl on + platforms with dl. + +- bpo-32741: Implement ``asyncio.TimerHandle.when()`` method. + +- bpo-32691: Use mod_spec.parent when running modules with pdb + +- bpo-32734: Fixed ``asyncio.Lock()`` safety issue which allowed acquiring + and locking the same lock multiple times, without it being free. Patch by + Bar Harel. + +- bpo-32727: Do not include name field in SMTP envelope from address. Patch + by Stéphane Wirtel + +- bpo-31453: Add TLSVersion constants and SSLContext.maximum_version / + minimum_version attributes. The new API wraps OpenSSL 1.1 + https://www.openssl.org/docs/man1.1.0/ssl/SSL_CTX_set_min_proto_version.html + feature. + +- bpo-24334: Internal implementation details of ssl module were cleaned up. + The SSLSocket has one less layer of indirection. Owner and session + information are now handled by the SSLSocket and SSLObject constructor. + Channel binding implementation has been simplified. + +- bpo-31848: Fix the error handling in Aifc_read.initfp() when the SSND + chunk is not found. Patch by Zackery Spytz. + +- bpo-32585: Add Ttk spinbox widget to :mod:`tkinter.ttk`. Patch by Alan D + Moore. + +- bpo-32221: Various functions returning tuple containing IPv6 addresses now + omit ``%scope`` part since the same information is already encoded in + *scopeid* tuple item. Especially this speeds up :func:`socket.recvfrom` + when it receives multicast packet since useless resolving of network + interface name is omitted. + +- bpo-30693: The TarFile class now recurses directories in a reproducible + way. + +- bpo-30693: The ZipFile class now recurses directories in a reproducible + way. + +Documentation +------------- + +- bpo-28124: The ssl module function ssl.wrap_socket() has been + de-emphasized and deprecated in favor of the more secure and efficient + SSLContext.wrap_socket() method. + +- bpo-17232: Clarify docs for -O and -OO. Patch by Terry Reedy. + +- bpo-32436: Add documentation for the contextvars module (PEP 567). + +- bpo-32800: Update link to w3c doc for xml default namespaces. + +- bpo-11015: Update :mod:`test.support` documentation. + +- bpo-8722: Document :meth:`__getattr__` behavior when property :meth:`get` + method raises :exc:`AttributeError`. + +- bpo-32614: Modify RE examples in documentation to use raw strings to + prevent :exc:`DeprecationWarning` and add text to REGEX HOWTO to highlight + the deprecation. + +- bpo-31972: Improve docstrings for `pathlib.PurePath` subclasses. + +Tests +----- + +- bpo-31809: Add tests to verify connection with secp ECDH curves. + +Build +----- + +- bpo-32898: Fix the python debug build when using COUNT_ALLOCS. + +Windows +------- + +- bpo-32901: Update Tcl and Tk versions to 8.6.8 + +- bpo-31966: Fixed WindowsConsoleIO.write() for writing empty data. + +- bpo-32409: Ensures activate.bat can handle Unicode contents. + +- bpo-32457: Improves handling of denormalized executable path when + launching Python. + +- bpo-32370: Use the correct encoding for ipconfig output in the uuid + module. Patch by Segev Finer. + +- bpo-29248: Fix :func:`os.readlink` on Windows, which was mistakenly + treating the ``PrintNameOffset`` field of the reparse data buffer as a + number of characters instead of bytes. Patch by Craig Holmquist and SSE4. + +macOS +----- + +- bpo-32901: Update macOS 10.9+ installer to Tcl/Tk 8.6.8. + +IDLE +---- + +- bpo-32916: Change ``str`` to ``code`` in pyparse. + +- bpo-32905: Remove unused code in pyparse module. + +- bpo-32874: Add tests for pyparse. + +- bpo-32837: Using the system and place-dependent default encoding for + open() is a bad idea for IDLE's system and location-independent files. + +- bpo-32826: Add "encoding=utf-8" to open() in IDLE's test_help_about. GUI + test test_file_buttons() only looks at initial ascii-only lines, but + failed on systems where open() defaults to 'ascii' because readline() + internally reads and decodes far enough ahead to encounter a non-ascii + character in CREDITS.txt. + +- bpo-32765: Update configdialog General tab docstring to add new widgets to + the widget list. + +Tools/Demos +----------- + +- bpo-32222: Fix pygettext not extracting docstrings for functions with type + annotated arguments. Patch by Toby Harradine. + + +What's New in Python 3.7.0 beta 1? +================================== + +*Release date: 2018-01-30* + +Core and Builtins +----------------- + +- bpo-32703: Fix coroutine's ResourceWarning when there's an active error + set when it's being finalized. + +- bpo-32650: Pdb and other debuggers dependent on bdb.py will correctly step + over (next command) native coroutines. Patch by Pablo Galindo. + +- bpo-28685: Optimize list.sort() and sorted() by using type specialized + comparisons when possible. + +- bpo-32685: Improve suggestion when the Python 2 form of print statement is + either present on the same line as the header of a compound statement or + else terminated by a semi-colon instead of a newline. Patch by Nitish + Chandra. + +- bpo-32697: Python now explicitly preserves the definition order of + keyword-only parameters. It's always preserved their order, but this + behavior was never guaranteed before; this behavior is now guaranteed and + tested. + +- bpo-32690: The locals() dictionary now displays in the lexical order that + variables were defined. Previously, the order was reversed. + +- bpo-32677: Add ``.isascii()`` method to ``str``, ``bytes`` and + ``bytearray``. It can be used to test that string contains only ASCII + characters. + +- bpo-32670: Enforce :pep:`479` for all code. This means that manually + raising a StopIteration exception from a generator is prohibited for all + code, regardless of whether 'from __future__ import generator_stop' was + used or not. + +- bpo-32591: Added built-in support for tracking the origin of coroutine + objects; see sys.set_coroutine_origin_tracking_depth and + CoroutineType.cr_origin. This replaces the asyncio debug mode's use of + coroutine wrapping for native coroutine objects. + +- bpo-31368: Expose preadv and pwritev system calls in the os module. Patch + by Pablo Galindo + +- bpo-32544: ``hasattr(obj, name)`` and ``getattr(obj, name, default)`` are + about 4 times faster than before when ``name`` is not found and ``obj`` + doesn't override ``__getattr__`` or ``__getattribute__``. + +- bpo-26163: Improved frozenset() hash to create more distinct hash values + when faced with datasets containing many similar values. + +- bpo-32550: Remove the STORE_ANNOTATION bytecode. + +- bpo-20104: Expose posix_spawn as a low level API in the os module. + (removed before 3.7.0rc1) + +- bpo-24340: Fixed estimation of the code stack size. + +- bpo-32436: Implement :pep:`567` Context Variables. + +- bpo-18533: ``repr()`` on a dict containing its own ``values()`` or + ``items()`` no longer raises ``RecursionError``; OrderedDict similarly. + Instead, use ``...``, as for other recursive structures. Patch by Ben + North. + +- bpo-20891: Py_Initialize() now creates the GIL. The GIL is no longer + created "on demand" to fix a race condition when PyGILState_Ensure() is + called in a non-Python thread. + +- bpo-32028: Leading whitespace is now correctly ignored when generating + suggestions for converting Py2 print statements to Py3 builtin print + function calls. Patch by Sanyam Khurana. + +- bpo-31179: Make dict.copy() up to 5.5 times faster. + +- bpo-31113: Get rid of recursion in the compiler for normal control flow. + +Library +------- + +- bpo-25988: Deprecate exposing the contents of collections.abc in the + regular collections module. + +- bpo-31429: The default cipher suite selection of the ssl module now uses a + blacklist approach rather than a hard-coded whitelist. Python no longer + re-enables ciphers that have been blocked by OpenSSL security update. + Default cipher suite selection can be configured on compile time. + +- bpo-30306: contextlib.contextmanager now releases the arguments passed to + the underlying generator as soon as the context manager is entered. + Previously it would keep them alive for as long as the context manager was + alive, even when not being used as a function decorator. Patch by Martin + Teichmann. + +- bpo-21417: Added support for setting the compression level for + zipfile.ZipFile. + +- bpo-32251: Implement asyncio.BufferedProtocol (provisional API). + +- bpo-32513: In dataclasses, allow easier overriding of dunder methods + without specifying decorator parameters. + +- bpo-32660: :mod:`termios` makes available ``FIONREAD``, ``FIONCLEX``, + ``FIOCLEX``, ``FIOASYNC`` and ``FIONBIO`` also under Solaris/derivatives. + +- bpo-27931: Fix email address header parsing error when the username is an + empty quoted string. Patch by Xiang Zhang. + +- bpo-32659: Under Solaris and derivatives, :class:`os.stat_result` provides + a st_fstype attribute. + +- bpo-32662: Implement Server.start_serving(), Server.serve_forever(), and + Server.is_serving() methods. Add 'start_serving' keyword parameter to + loop.create_server() and loop.create_unix_server(). + +- bpo-32391: Implement :meth:`asyncio.StreamWriter.wait_closed` and + :meth:`asyncio.StreamWriter.is_closing` methods + +- bpo-32643: Make Task._step, Task._wakeup and Future._schedule_callbacks + methods private. + +- bpo-32630: Refactor decimal module to use contextvars to store decimal + context. + +- bpo-32622: Add :meth:`asyncio.AbstractEventLoop.sendfile` method. + +- bpo-32304: distutils' upload command no longer corrupts tar files ending + with a CR byte, and no longer tries to convert CR to CRLF in any of the + upload text fields. + +- bpo-32502: uuid.uuid1 no longer raises an exception if a 64-bit hardware + address is encountered. + +- bpo-32596: ``concurrent.futures`` imports ``ThreadPoolExecutor`` and + ``ProcessPoolExecutor`` lazily (using :pep:`562`). It makes ``import + asyncio`` about 15% faster because asyncio uses only + ``ThreadPoolExecutor`` by default. + +- bpo-31801: Add ``_ignore_`` to ``Enum`` so temporary variables can be used + during class construction without being turned into members. + +- bpo-32576: Use queue.SimpleQueue() in places where it can be invoked from + a weakref callback. + +- bpo-32574: Fix memory leak in asyncio.Queue, when the queue has limited + size and it is full, the cancelation of queue.put() can cause a memory + leak. Patch by: José Melero. + +- bpo-32521: The nis module is now compatible with new libnsl and headers + location. + +- bpo-32467: collections.abc.ValuesView now inherits from + collections.abc.Collection. + +- bpo-32473: Improve ABCMeta._dump_registry() output readability + +- bpo-32102: New argument ``capture_output`` for subprocess.run + +- bpo-32521: glibc has removed Sun RPC. Use replacement libtirpc headers and + library in nis module. + +- bpo-32493: UUID module fixes build for FreeBSD/OpenBSD + +- bpo-32503: Pickling with protocol 4 no longer creates too small frames. + +- bpo-29237: Create enum for pstats sorting options + +- bpo-32454: Add close(fd) function to the socket module. + +- bpo-25942: The subprocess module is now more graceful when handling a + Ctrl-C KeyboardInterrupt during subprocess.call, subprocess.run, or a + Popen context manager. It now waits a short amount of time for the child + (presumed to have also gotten the SIGINT) to exit, before continuing the + KeyboardInterrupt exception handling. This still includes a SIGKILL in + the call() and run() APIs, but at least the child had a chance first. + +- bpo-32433: The hmac module now has hmac.digest(), which provides an + optimized HMAC digest. + +- bpo-28134: Sockets now auto-detect family, type and protocol from file + descriptor by default. + +- bpo-32404: Fix bug where :meth:`datetime.datetime.fromtimestamp` did not + call __new__ in :class:`datetime.datetime` subclasses. + +- bpo-32403: Improved speed of :class:`datetime.date` and + :class:`datetime.datetime` alternate constructors. + +- bpo-32228: Ensure that ``truncate()`` preserves the file position (as + reported by ``tell()``) after writes longer than the buffer size. + +- bpo-32410: Implement ``loop.sock_sendfile`` for asyncio event loop. + +- bpo-22908: Added seek and tell to the ZipExtFile class. This only works if + the file object used to open the zipfile is seekable. + +- bpo-32373: Add socket.getblocking() method. + +- bpo-32248: Add :mod:`importlib.resources` and + :class:`importlib.abc.ResourceReader` as the unified API for reading + resources contained within packages. Loaders wishing to support resource + reading must implement the :meth:`get_resource_reader()` method. + File-based and zipimport-based loaders both implement these APIs. + :class:`importlib.abc.ResourceLoader` is deprecated in favor of these new + APIs. + +- bpo-32320: collections.namedtuple() now supports default values. + +- bpo-29302: Add contextlib.AsyncExitStack. Patch by Alexander Mohr and Ilya + Kulakov. + +- bpo-31961: *Removed in Python 3.7.0b2.* The *args* argument of + subprocess.Popen can now be a :term:`path-like object`. If *args* is given + as a sequence, it's first element can now be a :term:`path-like object` as + well. + +- bpo-31900: The :func:`locale.localeconv` function now sets temporarily the + ``LC_CTYPE`` locale to the ``LC_NUMERIC`` locale to decode + ``decimal_point`` and ``thousands_sep`` byte strings if they are non-ASCII + or longer than 1 byte, and the ``LC_NUMERIC`` locale is different than the + ``LC_CTYPE`` locale. This temporary change affects other threads. Same + change for the :meth:`str.format` method when formatting a number + (:class:`int`, :class:`float`, :class:`float` and subclasses) with the + ``n`` type (ex: ``'{:n}'.format(1234)``). + +- bpo-31853: Use super().method instead of socket.method in SSLSocket. They + were there most likely for legacy reasons. + +- bpo-31399: The ssl module now uses OpenSSL's X509_VERIFY_PARAM_set1_host() + and X509_VERIFY_PARAM_set1_ip() API to verify hostname and IP addresses. + Subject common name fallback can be disabled with + SSLContext.hostname_checks_common_name. + +- bpo-14976: Add a queue.SimpleQueue class, an unbounded FIFO queue with a + reentrant C implementation of put(). + +Documentation +------------- + +- bpo-32724: Add references to some commands in the documentation of Pdb. + Patch by Stéphane Wirtel + +- bpo-32649: Complete the C API documentation, profiling and tracing part + with the newly added per-opcode events. + +- bpo-17799: Explain real behaviour of sys.settrace and sys.setprofile and + their C-API counterparts regarding which type of events are received in + each function. Patch by Pablo Galindo Salgado. + +Tests +----- + +- bpo-32721: Fix test_hashlib to not fail if the _md5 module is not built. + +- bpo-28414: Add test cases for IDNA 2003 and 2008 host names. IDNA 2003 + internationalized host names are working since bpo-31399 has landed. IDNA + 2008 are still broken. + +- bpo-32604: Add a new "_xxsubinterpreters" extension module that exposes + the existing subinterpreter C-API and a new cross-interpreter data sharing + mechanism. The module is primarily intended for more thorough testing of + the existing subinterpreter support. Note that the _xxsubinterpreters + module has been removed in 3.7.0rc1. + +- bpo-32602: Add test certs and test for ECDSA cert and EC/RSA dual mode. + +- bpo-32549: On Travis CI, Python now Compiles and uses a local copy of + OpenSSL 1.1.0g for testing. + +Build +----- + +- bpo-32635: Fix segfault of the crypt module when libxcrypt is provided + instead of libcrypt at the system. + +- bpo-32598: Use autoconf to detect OpenSSL libs, headers and supported + features. The ax_check_openssl M4 macro uses pkg-config to locate OpenSSL + and falls back to manual search. + +- bpo-32593: Drop support of FreeBSD 9 and older. + +- bpo-29708: If the :envvar:`SOURCE_DATE_EPOCH` environment variable is set, + :mod:`py_compile` will always create hash-based ``.pyc`` files. + +Windows +------- + +- bpo-32588: Create standalone _distutils_findvs module and add missing + _queue module to installer. + +- bpo-29911: Ensure separate Modify and Uninstall buttons are displayed. + +- bpo-32507: Use app-local UCRT install rather than the proper update for + old versions of Windows. + +macOS +----- + +- bpo-32726: Provide an additional, more modern macOS installer variant that + supports macOS 10.9+ systems in 64-bit mode only. Upgrade the supplied + third-party libraries to OpenSSL 1.1.0g and to SQLite 3.22.0. The 10.9+ + installer now links with and supplies its own copy of Tcl/Tk 8.6. + +- bpo-28440: No longer add /Library/Python/3.x/site-packages to sys.path for + macOS framework builds to avoid future conflicts. + +C API +----- + +- bpo-32681: Fix uninitialized variable 'res' in the C implementation of + os.dup2. Patch by Stéphane Wirtel + +- bpo-10381: Add C API access to the ``datetime.timezone`` constructor and + ``datetime.timzone.UTC`` singleton. + + +What's New in Python 3.7.0 alpha 4? +=================================== + +*Release date: 2018-01-08* + +Core and Builtins +----------------- + +- bpo-31975: The default warning filter list now starts with a + "default::DeprecationWarning:__main__" entry, so deprecation warnings are + once again shown by default in single-file scripts and at the interactive + prompt. + +- bpo-32226: ``__class_getitem__`` is now an automatic class method. + +- bpo-32399: Add AIX uuid library support for RFC4122 using uuid_create() in + libc.a + +- bpo-32390: Fix the compilation failure on AIX after the f_fsid field has + been added to the object returned by os.statvfs() (issue #32143). Original + patch by Michael Felt. + +- bpo-32379: Make MRO computation faster when a class inherits from a single + base. + +- bpo-32259: The error message of a TypeError raised when unpack + non-iterable is now more specific. + +- bpo-27169: The ``__debug__`` constant is now optimized out at compile + time. This fixes also bpo-22091. + +- bpo-32329: The :option:`-R` option now turns on hash randomization when + the :envvar:`PYTHONHASHSEED` environment variable is set to ``0``. + Previously, the option was ignored. Moreover, + ``sys.flags.hash_randomization`` is now properly set to 0 when hash + randomization is turned off by ``PYTHONHASHSEED=0``. + +- bpo-30416: The optimizer is now protected from spending much time doing + complex calculations and consuming much memory for creating large + constants in constant folding. Increased limits for constants that can be + produced in constant folding. + +- bpo-32282: Fix an unnecessary ifdef in the include of VersionHelpers.h in + socketmodule on Windows. + +- bpo-30579: Implement TracebackType.__new__ to allow Python-level creation + of traceback objects, and make TracebackType.tb_next mutable. + +- bpo-32260: Don't byte swap the input keys to the SipHash algorithm on + big-endian platforms. This should ensure siphash gives consistent results + across platforms. + +- bpo-31506: Improve the error message logic for object.__new__ and + object.__init__. Patch by Sanyam Khurana. + +- bpo-20361: ``-b`` and ``-bb`` now inject ``'default::BytesWarning'`` and + ``error::BytesWarning`` entries into ``sys.warnoptions``, ensuring that + they take precedence over any other warning filters configured via the + ``-W`` option or the ``PYTHONWARNINGS`` environment variable. + +- bpo-32230: `-X dev` now injects a ``'default'`` entry into + sys.warnoptions, ensuring that it behaves identically to actually passing + ``-Wdefault`` at the command line. + +- bpo-29240: Add a new UTF-8 mode: implementation of the :pep:`540`. + +- bpo-32226: :pep:`560`: Add support for ``__mro_entries__`` and + ``__class_getitem__``. Implemented by Ivan Levkivskyi. + +- bpo-32225: :pep:`562`: Add support for module ``__getattr__`` and + ``__dir__``. Implemented by Ivan Levkivskyi. + +- bpo-31901: The `atexit` module now has its callback stored per + interpreter. + +- bpo-31650: Implement :pep:`552` (Deterministic pycs). Python now supports + invalidating bytecode cache files bashed on a source content hash rather + than source last-modified time. + +- bpo-29469: Move constant folding from bytecode layer to AST layer. + Original patch by Eugene Toder. + +Library +------- + +- bpo-32506: Now that dict is defined as keeping insertion order, drop + OrderedDict and just use plain dict. + +- bpo-32279: Add params to dataclasses.make_dataclasses(): init, repr, eq, + order, hash, and frozen. Pass them through to dataclass(). + +- bpo-32278: Make type information optional on dataclasses.make_dataclass(). + If omitted, the string 'typing.Any' is used. + +- bpo-32499: Add dataclasses.is_dataclass(obj), which returns True if obj is + a dataclass or an instance of one. + +- bpo-32468: Improve frame repr() to mention filename, code name and current + line number. + +- bpo-23749: asyncio: Implement loop.start_tls() + +- bpo-32441: Return the new file descriptor (i.e., the second argument) from + ``os.dup2``. Previously, ``None`` was always returned. + +- bpo-32422: ``functools.lru_cache`` uses less memory (3 words for each + cached key) and takes about 1/3 time for cyclic GC. + +- bpo-31721: Prevent Python crash from happening when Future._log_traceback + is set to True manually. Now it can only be set to False, or a ValueError + is raised. + +- bpo-32415: asyncio: Add Task.get_loop() and Future.get_loop() + +- bpo-26133: Don't unsubscribe signals in asyncio UNIX event loop on + interpreter shutdown. + +- bpo-32363: Make asyncio.Task.set_exception() and set_result() raise + NotImplementedError. Task._step() and Future.__await__() raise proper + exceptions when they are in an invalid state, instead of raising an + AssertionError. + +- bpo-32357: Optimize asyncio.iscoroutine() and loop.create_task() for + non-native coroutines (e.g. async/await compiled with Cython). + 'loop.create_task(python_coroutine)' used to be 20% faster than + 'loop.create_task(cython_coroutine)'. Now, the latter is as fast. + +- bpo-32356: asyncio.transport.resume_reading() and pause_reading() are now + idempotent. New transport.is_reading() method is added. + +- bpo-32355: Optimize asyncio.gather(); now up to 15% faster. + +- bpo-32351: Use fastpath in asyncio.sleep if delay<0 (2x boost) + +- bpo-32348: Optimize asyncio.Future schedule/add/remove callback. The + optimization shows 3-6% performance improvements of async/await code. + +- bpo-32331: Fix socket.settimeout() and socket.setblocking() to keep + socket.type as is. Fix socket.socket() constructor to reset any bit flags + applied to socket's type. This change only affects OSes that have + SOCK_NONBLOCK and/or SOCK_CLOEXEC. + +- bpo-32248: Add :class:`importlib.abc.ResourceReader` as an ABC for loaders + to provide a unified API for reading resources contained within packages. + Also add :mod:`importlib.resources` as the port of + ``importlib_resources``. + +- bpo-32311: Implement asyncio.create_task(coro) shortcut + +- bpo-32327: Convert asyncio functions that were documented as coroutines to + coroutines. Affected functions: loop.sock_sendall, loop.sock_recv, + loop.sock_accept, loop.getaddrinfo, loop.getnameinfo. + +- bpo-32323: :func:`urllib.parse.urlsplit()` does not convert zone-id + (scope) to lower case for scoped IPv6 addresses in hostnames now. + +- bpo-32302: Fix bdist_wininst of distutils for CRT v142: it binary + compatible with CRT v140. + +- bpo-29711: Fix ``stop_serving`` in asyncio proactor loop kill all + listening servers + +- bpo-32308: :func:`re.sub()` now replaces empty matches adjacent to a + previous non-empty match. + +- bpo-29970: Abort asyncio SSLProtocol connection if handshake not complete + within 10s + +- bpo-32314: Implement asyncio.run(). + +- bpo-17852: Revert incorrect fix based on misunderstanding of + _Py_PyAtExit() semantics. + +- bpo-32296: Implement asyncio._get_running_loop() and get_event_loop() in + C. This makes them 4x faster. + +- bpo-32250: Implement ``asyncio.current_task()`` and + ``asyncio.all_tasks()``. Add helpers intended to be used by alternative + task implementations: ``asyncio._register_task``, ``asyncio._enter_task``, + ``asyncio._leave_task`` and ``asyncio._unregister_task``. Deprecate + ``asyncio.Task.current_task()`` and ``asyncio.Task.all_tasks()``. + +- bpo-32255: A single empty field is now always quoted when written into a + CSV file. This allows to distinguish an empty row from a row consisting of + a single empty field. Patch by Licht Takeuchi. + +- bpo-32277: Raise ``NotImplementedError`` instead of ``SystemError`` on + platforms where ``chmod(..., follow_symlinks=False)`` is not supported. + Patch by Anthony Sottile. + +- bpo-30050: New argument warn_on_full_buffer to signal.set_wakeup_fd lets + you control whether Python prints a warning on stderr when the wakeup fd + buffer overflows. + +- bpo-29137: The ``fpectl`` library has been removed. It was never enabled + by default, never worked correctly on x86-64, and it changed the Python + ABI in ways that caused unexpected breakage of C extensions. + +- bpo-32273: Move asyncio.test_utils to test.test_asyncio. + +- bpo-32272: Remove asyncio.async() function. + +- bpo-32269: Add asyncio.get_running_loop() function. + +- bpo-32265: All class and static methods of builtin types now are correctly + classified by inspect.classify_class_attrs() and grouped in pydoc ouput. + Added types.ClassMethodDescriptorType for unbound class methods of builtin + types. + +- bpo-32253: Deprecate ``yield from lock``, ``await lock``, ``with (yield + from lock)`` and ``with await lock`` for asyncio synchronization + primitives. + +- bpo-22589: Changed MIME type of .bmp from 'image/x-ms-bmp' to 'image/bmp' + +- bpo-32193: Convert asyncio to use *async/await* syntax. Old styled ``yield + from`` is still supported too. + +- bpo-32206: Add support to run modules with pdb + +- bpo-32227: ``functools.singledispatch`` now supports registering + implementations using type annotations. + +- bpo-15873: Added new alternate constructors + :meth:`datetime.datetime.fromisoformat`, + :meth:`datetime.time.fromisoformat` and + :meth:`datetime.date.fromisoformat` as the inverse operation of each + classes's respective ``isoformat`` methods. + +- bpo-32199: The getnode() ip getter now uses 'ip link' instead of 'ip link + list'. + +- bpo-32143: os.statvfs() includes the f_fsid field from statvfs(2) + +- bpo-26439: Fix ctypes.util.find_library() for AIX by implementing + ctypes._aix.find_library() Patch by: Michael Felt + +- bpo-31993: The pickler now uses less memory when serializing large bytes + and str objects into a file. Pickles created with protocol 4 will require + less memory for unpickling large bytes and str objects. + +- bpo-27456: Ensure TCP_NODELAY is set on Linux. Tests by Victor Stinner. + +- bpo-31778: ast.literal_eval() is now more strict. Addition and subtraction + of arbitrary numbers no longer allowed. + +- bpo-31802: Importing native path module (``posixpath``, ``ntpath``) now + works even if the ``os`` module still is not imported. + +- bpo-30241: Add contextlib.AbstractAsyncContextManager. Patch by Jelle + Zijlstra. + +- bpo-31699: Fix deadlocks in + :class:`concurrent.futures.ProcessPoolExecutor` when task arguments or + results cause pickling or unpickling errors. This should make sure that + calls to the :class:`ProcessPoolExecutor` API always eventually return. + +- bpo-15216: ``TextIOWrapper.reconfigure()`` supports changing *encoding*, + *errors*, and *newline*. + +Documentation +------------- + +- bpo-32418: Add get_loop() method to Server and AbstractServer classes. + +Tests +----- + +- bpo-32252: Fix faulthandler_suppress_crash_report() used to prevent core + dump files when testing crashes. getrlimit() returns zero on success. + +- bpo-32002: Adjust C locale coercion testing for the empty locale and POSIX + locale cases to more readily adjust to platform dependent behaviour. + +Windows +------- + +- bpo-19764: Implement support for `subprocess.Popen(close_fds=True)` on + Windows. Patch by Segev Finer. + +Tools/Demos +----------- + +- bpo-24960: 2to3 and lib2to3 can now read pickled grammar files using + pkgutil.get_data() rather than probing the filesystem. This lets 2to3 and + lib2to3 work when run from a zipfile. + +C API +----- + +- bpo-32030: Py_Initialize() doesn't reset the memory allocators to default + if the ``PYTHONMALLOC`` environment variable is not set. + +- bpo-29084: Undocumented C API for OrderedDict has been excluded from the + limited C API. It was added by mistake and actually never worked in the + limited C API. + +- bpo-32264: Moved the pygetopt.h header into internal/, since it has no + public APIs. + +- bpo-32241: :c:func:`Py_SetProgramName` and :c:func:`Py_SetPythonHome` now + take the ``const wchar *`` arguments instead of ``wchar *``. + + +What's New in Python 3.7.0 alpha 3? +=================================== + +*Release date: 2017-12-05* + +Core and Builtins +----------------- + +- bpo-32176: co_flags.CO_NOFREE is now always set correctly by the code + object constructor based on freevars and cellvars, rather than needing to + be set correctly by the caller. This ensures it will be cleared + automatically when additional cell references are injected into a modified + code object and function. + +- bpo-10544: Yield expressions are now deprecated in comprehensions and + generator expressions. They are still permitted in the definition of the + outermost iterable, as that is evaluated directly in the enclosing scope. + +- bpo-32137: The repr of deeply nested dict now raises a RecursionError + instead of crashing due to a stack overflow. + +- bpo-32096: Revert memory allocator changes in the C API: move structures + back from _PyRuntime to Objects/obmalloc.c. The memory allocators are once + again initialized statically, and so PyMem_RawMalloc() and + Py_DecodeLocale() can be called before _PyRuntime_Initialize(). + +- bpo-32043: Add a new "developer mode": new "-X dev" command line option to + enable debug checks at runtime. + +- bpo-32023: SyntaxError is now correctly raised when a generator expression + without parenthesis is used instead of an inheritance list in a class + definition. The duplication of the parentheses can be omitted only on + calls. + +- bpo-32012: SyntaxError is now correctly raised when a generator expression + without parenthesis is passed as an argument, but followed by a trailing + comma. A generator expression always needs to be directly inside a set of + parentheses and cannot have a comma on either side. + +- bpo-28180: A new internal ``_Py_SetLocaleFromEnv(category)`` helper + function has been added in order to improve the consistency of behaviour + across different ``libc`` implementations (e.g. Android doesn't support + setting the locale from the environment by default). + +- bpo-31949: Fixed several issues in printing tracebacks + (PyTraceBack_Print()). Setting sys.tracebacklimit to 0 or less now + suppresses printing tracebacks. Setting sys.tracebacklimit to None now + causes using the default limit. Setting sys.tracebacklimit to an integer + larger than LONG_MAX now means using the limit LONG_MAX rather than the + default limit. Fixed integer overflows in the case of more than 2**31 + traceback items on Windows. Fixed output errors handling. + +- bpo-30696: Fix the interactive interpreter looping endlessly when no + memory. + +- bpo-20047: Bytearray methods partition() and rpartition() now accept only + bytes-like objects as separator, as documented. In particular they now + raise TypeError rather of returning a bogus result when an integer is + passed as a separator. + +- bpo-21720: BytesWarning no longer emitted when the *fromlist* argument of + ``__import__()`` or the ``__all__`` attribute of the module contain bytes + instances. + +- bpo-31845: Environment variables are once more read correctly at + interpreter startup. + +- bpo-28936: Ensure that lexically first syntax error involving a parameter + and ``global`` or ``nonlocal`` is detected first at a given scope. Patch + by Ivan Levkivskyi. + +- bpo-31825: Fixed OverflowError in the 'unicode-escape' codec and in + codecs.escape_decode() when decode an escaped non-ascii byte. + +- bpo-31618: The per-frame tracing logic added in 3.7a1 has been altered so + that ``frame->f_lineno`` is updated before either ``"line"`` or + ``"opcode"`` events are emitted. Previously, opcode events were emitted + first, and therefore would occasionally see stale line numbers on the + frame. The behavior of this feature has changed slightly as a result: when + both ``f_trace_lines`` and ``f_trace_opcodes`` are enabled, line events + now occur first. + +- bpo-28603: Print the full context/cause chain of exceptions on interpreter + exit, even if an exception in the chain is unhashable or compares equal to + later ones. Patch by Zane Bitter. + +- bpo-31786: Fix timeout rounding in the select module to round correctly + negative timeouts between -1.0 and 0.0. The functions now block waiting + for events as expected. Previously, the call was incorrectly non-blocking. + Patch by Pablo Galindo. + +- bpo-31781: Prevent crashes when calling methods of an uninitialized + ``zipimport.zipimporter`` object. Patch by Oren Milman. + +- bpo-30399: Standard repr() of BaseException with a single argument no + longer contains redundant trailing comma. + +- bpo-31626: Fixed a bug in debug memory allocator. There was a write to + freed memory after shrinking a memory block. + +- bpo-30817: `PyErr_PrintEx()` clears now the ignored exception that may be + raised by `_PySys_SetObjectId()`, for example when no memory. + +Library +------- + +- bpo-28556: Two minor fixes for ``typing`` module: allow shallow copying + instances of generic classes, improve interaction of ``__init_subclass__`` + with generics. Original PRs by Ivan Levkivskyi. + +- bpo-32214: PEP 557, Data Classes. Provides a decorator which adds + boilerplate methods to classes which use type annotations so specify + fields. + +- bpo-27240: The header folding algorithm for the new email policies has + been rewritten, which also fixes bpo-30788, bpo-31831, and bpo-32182. In + particular, RFC2231 folding is now done correctly. + +- bpo-32186: io.FileIO.readall() and io.FileIO.read() now release the GIL + when getting the file size. Fixed hang of all threads with inaccessible + NFS server. Patch by Nir Soffer. + +- bpo-321010: Add :attr:`sys.flags.dev_mode` flag + +- bpo-32154: The ``asyncio.windows_utils.socketpair()`` function has been + removed: use directly :func:`socket.socketpair` which is available on all + platforms since Python 3.5 (before, it wasn't available on Windows). + ``asyncio.windows_utils.socketpair()`` was just an alias to + ``socket.socketpair`` on Python 3.5 and newer. + +- bpo-32089: warnings: In development (-X dev) and debug mode (pydebug + build), use the "default" action for ResourceWarning, rather than the + "always" action, in the default warnings filters. + +- bpo-32107: ``uuid.getnode()`` now preferentially returns universally + administered MAC addresses if available, over locally administered MAC + addresses. This makes a better guarantee for global uniqueness of UUIDs + returned from ``uuid.uuid1()``. If only locally administered MAC + addresses are available, the first such one found is returned. + +- bpo-23033: Wildcard is now supported in hostname when it is one and only + character in the left most segment of hostname in second argument of + :meth:`ssl.match_hostname`. Patch by Mandeep Singh. + +- bpo-12239: Make :meth:`msilib.SummaryInformation.GetProperty` return + ``None`` when the value of property is ``VT_EMPTY``. Initial patch by + Mark Mc Mahon. + +- bpo-28334: Use :func:`os.path.expanduser` to find the ``~/.netrc`` file in + :class:`netrc.netrc`. If it does not exist, :exc:`FileNotFoundError` is + raised. Patch by Dimitri Merejkowsky. + +- bpo-32121: Made ``tracemalloc.Traceback`` behave more like the traceback + module, sorting the frames from oldest to most recent. + ``Traceback.format()`` now accepts negative *limit*, truncating the result + to the ``abs(limit)`` oldest frames. To get the old behaviour, one can use + the new *most_recent_first* argument to ``Traceback.format()``. (Patch by + Jesse Bakker.) + +- bpo-31325: Fix wrong usage of :func:`collections.namedtuple` in the + :meth:`RobotFileParser.parse() <urllib.robotparser.RobotFileParser.parse>` + method. Initial patch by Robin Wellner. + +- bpo-12382: :func:`msilib.OpenDatabase` now raises a better exception + message when it couldn't open or create an MSI file. Initial patch by + William Tisäter. + +- bpo-19610: ``setup()`` now warns about invalid types for some fields. The + ``distutils.dist.Distribution`` class now warns when ``classifiers``, + ``keywords`` and ``platforms`` fields are not specified as a list or a + string. + +- bpo-32071: Added the ``-k`` command-line option to ``python -m unittest`` + to run only tests that match the given pattern(s). + +- bpo-10049: Added *nullcontext* no-op context manager to contextlib. This + provides a simpler and faster alternative to ExitStack() when handling + optional context managers. + +- bpo-28684: The new test.support.skip_unless_bind_unix_socket() decorator + is used here to skip asyncio tests that fail because the platform lacks a + functional bind() function for unix domain sockets (as it is the case for + non root users on the recent Android versions that run now SELinux in + enforcing mode). + +- bpo-32110: ``codecs.StreamReader.read(n)`` now returns not more than *n* + characters/bytes for non-negative *n*. This makes it compatible with + ``read()`` methods of other file-like objects. + +- bpo-27535: The warnings module doesn't leak memory anymore in the hidden + warnings registry for the "ignore" action of warnings filters. + warn_explicit() function doesn't add the warning key to the registry + anymore for the "ignore" action. + +- bpo-32088: warnings: When Python is build is debug mode (``Py_DEBUG``), + :exc:`DeprecationWarning`, :exc:`PendingDeprecationWarning` and + :exc:`ImportWarning` warnings are now displayed by default. + +- bpo-1647489: Fixed searching regular expression patterns that could match + an empty string. Non-empty string can now be correctly found after + matching an empty string. + +- bpo-25054: Added support of splitting on a pattern that could match an + empty string. + +- bpo-32072: Fixed issues with binary plists: Fixed saving bytearrays. + Identical objects will be saved only once. Equal references will be load + as identical objects. Added support for saving and loading recursive data + structures. + +- bpo-32069: Drop legacy SSL transport from asyncio, ssl.MemoryBIO is always + used anyway. + +- bpo-32066: asyncio: Support pathlib.Path in create_unix_connection; sock + arg should be optional + +- bpo-32046: Updates 2to3 to convert from operator.isCallable(obj) to + callable(obj). Patch by Dong-hee Na. + +- bpo-32018: inspect.signature should follow :pep:`8`, if the parameter has + an annotation and a default value. Patch by Dong-hee Na. + +- bpo-32025: Add time.thread_time() and time.thread_time_ns() + +- bpo-32037: Integers that fit in a signed 32-bit integer will be now + pickled with protocol 0 using the INT opcode. This will decrease the size + of a pickle, speed up pickling and unpickling, and make these integers be + unpickled as int instances in Python 2. + +- bpo-32034: Make asyncio.IncompleteReadError and LimitOverrunError + pickleable. + +- bpo-32015: Fixed the looping of asyncio in the case of reconnection the + socket during waiting async read/write from/to the socket. + +- bpo-32011: Restored support of loading marshal files with the TYPE_INT64 + code. These files can be produced in Python 2.7. + +- bpo-28369: Enhance add_reader/writer check that socket is not used by some + transport. Before, only cases when add_reader/writer were called with an + int FD were supported. Now the check is implemented correctly for all + file-like objects. + +- bpo-31976: Fix race condition when flushing a file is slow, which can + cause a segfault if closing the file from another thread. + +- bpo-31985: Formally deprecated aifc.openfp, sunau.openfp, and wave.openfp. + Since change 7bc817d5ba917528e8bd07ec461c635291e7b06a in 1993, openfp in + each of the three modules had been pointing to that module's open function + as a matter of backwards compatibility, though it had been both untested + and undocumented. + +- bpo-21862: cProfile command line now accepts `-m module_name` as an + alternative to script path. Patch by Sanyam Khurana. + +- bpo-31970: Reduce performance overhead of asyncio debug mode. + +- bpo-31843: *database* argument of sqlite3.connect() now accepts a + :term:`path-like object`, instead of just a string. + +- bpo-31945: Add Configurable *blocksize* to ``HTTPConnection`` and + ``HTTPSConnection`` for improved upload throughput. Patch by Nir Soffer. + +- bpo-31943: Add a ``cancelled()`` method to :class:`asyncio.Handle`. Patch + by Marat Sharafutdinov. + +- bpo-9678: Fixed determining the MAC address in the uuid module: Using + ifconfig on NetBSD and OpenBSD. Using arp on Linux, FreeBSD, NetBSD and + OpenBSD. Based on patch by Takayuki Shimizukawa. + +- bpo-30057: Fix potential missed signal in signal.signal(). + +- bpo-31933: Fix Blake2 params leaf_size and node_offset on big endian + platforms. Patch by Jack O'Connor. + +- bpo-21423: Add an initializer argument to {Process,Thread}PoolExecutor + +- bpo-31927: Fixed compilation of the socket module on NetBSD 8. Fixed + assertion failure or reading arbitrary data when parse a AF_BLUETOOTH + address on NetBSD and DragonFly BSD. + +- bpo-27666: Fixed stack corruption in curses.box() and curses.ungetmouse() + when the size of types chtype or mmask_t is less than the size of C long. + curses.box() now accepts characters as arguments. Based on patch by Steve + Fink. + +- bpo-31917: Add 3 new clock identifiers: :data:`time.CLOCK_BOOTTIME`, + :data:`time.CLOCK_PROF` and :data:`time.CLOCK_UPTIME`. + +- bpo-31897: plistlib now catches more errors when read binary plists and + raises InvalidFileException instead of unexpected exceptions. + +- bpo-25720: Fix the method for checking pad state of curses WINDOW. Patch + by Masayuki Yamamoto. + +- bpo-31893: Fixed the layout of the kqueue_event structure on OpenBSD and + NetBSD. Fixed the comparison of the kqueue_event objects. + +- bpo-31891: Fixed building the curses module on NetBSD. + +- bpo-31884: added required constants to subprocess module for setting + priority on windows + +- bpo-28281: Remove year (1-9999) limits on the Calendar.weekday() function. + Patch by Mark Gollahon. + +- bpo-31702: crypt.mksalt() now allows to specify the number of rounds for + SHA-256 and SHA-512 hashing. + +- bpo-30639: :func:`inspect.getfile` no longer computes the repr of unknown + objects to display in an error message, to protect against badly behaved + custom reprs. + +- bpo-30768: Fix the pthread+semaphore implementation of + PyThread_acquire_lock_timed() when called with timeout > 0 and + intr_flag=0: recompute the timeout if sem_timedwait() is interrupted by a + signal (EINTR). See also the :pep:`475`. + +- bpo-31854: Add ``mmap.ACCESS_DEFAULT`` constant. + +- bpo-31834: Use optimized code for BLAKE2 only with SSSE3+. The pure SSE2 + implementation is slower than the pure C reference implementation. + +- bpo-28292: Calendar.itermonthdates() will now consistently raise an + exception when a date falls outside of the 0001-01-01 through 9999-12-31 + range. To support applications that cannot tolerate such exceptions, the + new methods itermonthdays3() and itermonthdays4() are added. The new + methods return tuples and are not restricted by the range supported by + datetime.date. + +- bpo-28564: The shutil.rmtree() function has been sped up to 20--40%. This + was done using the os.scandir() function. + +- bpo-28416: Instances of pickle.Pickler subclass with the persistent_id() + method and pickle.Unpickler subclass with the persistent_load() method no + longer create reference cycles. + +- bpo-31653: Don't release the GIL if we can acquire a multiprocessing + semaphore immediately. + +- bpo-28326: Fix multiprocessing.Process when stdout and/or stderr is closed + or None. + +- bpo-20825: Add `subnet_of` and `superset_of` containment tests to + :class:`ipaddress.IPv6Network` and :class:`ipaddress.IPv4Network`. Patch + by Michel Albert and Cheryl Sabella. + +- bpo-31827: Remove the os.stat_float_times() function. It was introduced in + Python 2.3 for backward compatibility with Python 2.2, and was deprecated + since Python 3.1. + +- bpo-31756: Add a ``subprocess.Popen(text=False)`` keyword argument to + `subprocess` functions to be more explicit about when the library should + attempt to decode outputs into text. Patch by Andrew Clegg. + +- bpo-31819: Add AbstractEventLoop.sock_recv_into(). + +- bpo-31457: If nested log adapters are used, the inner ``process()`` + methods are no longer omitted. + +- bpo-31457: The ``manager`` property on LoggerAdapter objects is now + properly settable. + +- bpo-31806: Fix timeout rounding in time.sleep(), threading.Lock.acquire() + and socket.socket.settimeout() to round correctly negative timeouts + between -1.0 and 0.0. The functions now block waiting for events as + expected. Previously, the call was incorrectly non-blocking. Patch by + Pablo Galindo. + +- bpo-31803: time.clock() and time.get_clock_info('clock') now emit a + DeprecationWarning warning. + +- bpo-31800: Extended support for parsing UTC offsets. strptime '%z' can now + parse the output generated by datetime.isoformat, including seconds and + microseconds. + +- bpo-28603: traceback: Fix a TypeError that occurred during printing of + exception tracebacks when either the current exception or an exception in + its context/cause chain is unhashable. Patch by Zane Bitter. + +- bpo-30541: Add new function to seal a mock and prevent the automatically + creation of child mocks. Patch by Mario Corchero. + +- bpo-31784: Implement the :pep:`564`, add new 6 new functions with + nanosecond resolution to the :mod:`time` module: + :func:`~time.clock_gettime_ns`, :func:`~time.clock_settime_ns`, + :func:`~time.monotonic_ns`, :func:`~time.perf_counter_ns`, + :func:`~time.process_time_ns`, :func:`~time.time_ns`. + +- bpo-30143: 2to3 now generates a code that uses abstract collection classes + from collections.abc rather than collections. + +- bpo-31770: Prevent a crash when calling the ``__init__()`` method of a + ``sqlite3.Cursor`` object more than once. Patch by Oren Milman. + +- bpo-31764: Prevent a crash in ``sqlite3.Cursor.close()`` in case the + ``Cursor`` object is uninitialized. Patch by Oren Milman. + +- bpo-31752: Fix possible crash in timedelta constructor called with custom + integers. + +- bpo-31620: an empty asyncio.Queue now doesn't leak memory when queue.get + pollers timeout + +- bpo-31690: Allow the flags re.ASCII, re.LOCALE, and re.UNICODE to be used + as group flags for regular expressions. + +- bpo-30349: FutureWarning is now emitted if a regular expression contains + character set constructs that will change semantically in the future + (nested sets and set operations). + +- bpo-31664: Added support for the Blowfish hashing in the crypt module. + +- bpo-31632: Fix method set_protocol() of class _SSLProtocolTransport in + asyncio module. This method was previously modifying a wrong reference to + the protocol. + +- bpo-15037: Added a workaround for getkey() in curses for ncurses 5.7 and + earlier. + +- bpo-31307: Allow use of bytes objects for arguments to + :meth:`configparser.ConfigParser.read`. Patch by Vincent Michel. + +- bpo-31334: Fix ``poll.poll([timeout])`` in the ``select`` module for + arbitrary negative timeouts on all OSes where it can only be a + non-negative integer or -1. Patch by Riccardo Coccioli. + +- bpo-31310: multiprocessing's semaphore tracker should be launched again if + crashed. + +- bpo-31308: Make multiprocessing's forkserver process immune to Ctrl-C and + other user interruptions. If it crashes, restart it when necessary. + +- bpo-31245: Added support for AF_UNIX socket in asyncio + `create_datagram_endpoint`. + +- bpo-30553: Add HTTP/2 status code 421 (Misdirected Request) to + :class:`http.HTTPStatus`. Patch by Vitor Pereira. + +Documentation +------------- + +- bpo-32105: Added asyncio.BaseEventLoop.connect_accepted_socket + versionadded marker. + +Tests +----- + +- bpo-31380: Skip test_httpservers test_undecodable_file on macOS: fails on + APFS. + +- bpo-31705: Skip test_socket.test_sha256() on Linux kernel older than 4.5. + The test fails with ENOKEY on kernel 3.10 (on ppc64le). A fix was merged + into the kernel 4.5. + +- bpo-32138: Skip on Android test_faulthandler tests that raise SIGSEGV and + remove the test.support.requires_android_level decorator. + +- bpo-32136: The runtime embedding tests have been split out from + ``Lib/test/test_capi.py`` into a new ``Lib/test/test_embed.py`` file. + +- bpo-28668: test.support.requires_multiprocessing_queue is removed. Skip + tests with test.support.import_module('multiprocessing.synchronize') + instead when the semaphore implementation is broken or missing. + +- bpo-32126: Skip test_get_event_loop_new_process in + test.test_asyncio.test_events when sem_open() is not functional. + +- bpo-31174: Fix test_tools.test_unparse: DirectoryTestCase now stores the + names sample to always test the same files. It prevents false alarms when + hunting reference leaks. + +Build +----- + +- bpo-28538: Revert the previous changes, the if_nameindex structure is + defined by Unified Headers. + +- bpo-28762: Revert the last commit, the F_LOCK macro is defined by Android + Unified Headers. + +- bpo-29040: Support building Android with Unified Headers. The first NDK + release to support Unified Headers is android-ndk-r14. + +- bpo-32059: ``detect_modules()`` in ``setup.py`` now also searches the + sysroot paths when cross-compiling. + +- bpo-31957: Fixes Windows SDK version detection when building for Windows. + +- bpo-31609: Fixes quotes in PCbuild/clean.bat + +- bpo-31934: Abort the build when building out of a not clean source tree. + +- bpo-31926: Fixed Argument Clinic sometimes causing compilation errors when + there was more than one function and/or method in a .c file with the same + name. + +- bpo-28791: Update Windows builds to use SQLite 3.21.0. + +- bpo-28791: Update OS X installer to use SQLite 3.21.0. + +- bpo-28643: Record profile-opt build progress with stamp files. + +- bpo-31866: Finish removing support for AtheOS. + +Windows +------- + +- bpo-1102: Return ``None`` when ``View.Fetch()`` returns + ``ERROR_NO_MORE_ITEMS`` instead of raising ``MSIError``. Initial patch by + Anthony Tuininga. + +- bpo-31944: Fixes Modify button in Apps and Features dialog. + +- bpo-20486: Implement the ``Database.Close()`` method to help closing MSI + database objects. + +- bpo-31857: Make the behavior of USE_STACKCHECK deterministic in a + multi-threaded environment. + +macOS +----- + +- bpo-31392: Update macOS installer to use OpenSSL 1.0.2m + +IDLE +---- + +- bpo-32207: Improve tk event exception tracebacks in IDLE. When tk event + handling is driven by IDLE's run loop, a confusing and distracting + queue.EMPTY traceback context is no longer added to tk event exception + tracebacks. The traceback is now the same as when event handling is + driven by user code. Patch based on a suggestion by Serhiy Storchaka. + +- bpo-32164: Delete unused file idlelib/tabbedpages.py. Use of TabbedPageSet + in configdialog was replaced by ttk.Notebook. + +- bpo-32100: IDLE: Fix old and new bugs in pathbrowser; improve tests. Patch + mostly by Cheryl Sabella. + +- bpo-31858: IDLE -- Restrict shell prompt manipulation to the shell. Editor + and output windows only see an empty last prompt line. This simplifies + the code and fixes a minor bug when newline is inserted. Sys.ps1, if + present, is read on Shell start-up, but is not set or changed. + +- bpo-31860: The font sample in the IDLE configuration dialog is now + editable. Changes persist while IDLE remains open + +- bpo-31836: Test_code_module now passes if run after test_idle, which sets + ps1. The code module uses sys.ps1 if present or sets it to '>>> ' if not. + Test_code_module now properly tests both behaviors. Ditto for ps2. + +- bpo-28603: Fix a TypeError that caused a shell restart when printing a + traceback that includes an exception that is unhashable. Patch by Zane + Bitter. + +- bpo-13802: Use non-Latin characters in the IDLE's Font settings sample. + Even if one selects a font that defines a limited subset of the unicode + Basic Multilingual Plane, tcl/tk will use other fonts that define a + character. The expanded example give users of non-Latin characters a + better idea of what they might see in IDLE's shell and editors. To make + room for the expanded sample, frames on the Font tab are re-arranged. The + Font/Tabs help explains a bit about the additions. + +Tools/Demos +----------- + +- bpo-32159: Remove CVS and Subversion tools: remove svneol.py and + treesync.py scripts. CPython migrated from CVS to Subversion, to + Mercurial, and then to Git. CVS and Subversion are no longer used to + develop CPython. + +- bpo-30722: Make redemo work with Python 3.6 and newer versions. Also, + remove the ``LOCALE`` option since it doesn't work with string patterns in + Python 3. Patch by Christoph Sarnowski. + +C API +----- + +- bpo-20891: Fix PyGILState_Ensure(). When PyGILState_Ensure() is called in + a non-Python thread before PyEval_InitThreads(), only call + PyEval_InitThreads() after calling PyThreadState_New() to fix a crash. + +- bpo-32125: The ``Py_UseClassExceptionsFlag`` flag has been removed. It was + deprecated and wasn't used anymore since Python 2.0. + +- bpo-25612: Move the current exception state from the frame object to the + co-routine. This simplifies the interpreter and fixes a couple of obscure + bugs caused by having swap exception state when entering or exiting a + generator. + +- bpo-23699: Add Py_RETURN_RICHCOMPARE macro to reduce boilerplate code in + rich comparison functions. + +- bpo-30697: The `PyExc_RecursionErrorInst` singleton is removed and + `PyErr_NormalizeException()` does not use it anymore. This singleton is + persistent and its members being never cleared may cause a segfault during + finalization of the interpreter. See also issue #22898. + + +What's New in Python 3.7.0 alpha 2? +=================================== + +*Release date: 2017-10-16* + +Core and Builtins +----------------- + +- bpo-31558: ``gc.freeze()`` is a new API that allows for moving all objects + currently tracked by the garbage collector to a permanent generation, + effectively removing them from future collection events. This can be used + to protect those objects from having their PyGC_Head mutated. In effect, + this enables great copy-on-write stability at fork(). + +- bpo-31642: Restored blocking "from package import module" by setting + sys.modules["package.module"] to None. + +- bpo-31708: Allow use of asynchronous generator expressions in synchronous + functions. + +- bpo-31709: Drop support of asynchronous __aiter__. + +- bpo-30404: The -u option now makes the stdout and stderr streams + unbuffered rather than line-buffered. + +- bpo-31619: Fixed a ValueError when convert a string with large number of + underscores to integer with binary base. + +- bpo-31602: Fix an assertion failure in `zipimporter.get_source()` in case + of a bad `zlib.decompress()`. Patch by Oren Milman. + +- bpo-31592: Fixed an assertion failure in Python parser in case of a bad + `unicodedata.normalize()`. Patch by Oren Milman. + +- bpo-31588: Raise a `TypeError` with a helpful error message when class + creation fails due to a metaclass with a bad ``__prepare__()`` method. + Patch by Oren Milman. + +- bpo-31574: Importlib was instrumented with two dtrace probes to profile + import timing. + +- bpo-31566: Fix an assertion failure in `_warnings.warn()` in case of a bad + ``__name__`` global. Patch by Oren Milman. + +- bpo-31506: Improved the error message logic for object.__new__ and + object.__init__. + +- bpo-31505: Fix an assertion failure in `json`, in case + `_json.make_encoder()` received a bad `encoder()` argument. Patch by Oren + Milman. + +- bpo-31492: Fix assertion failures in case of failing to import from a + module with a bad ``__name__`` attribute, and in case of failing to access + an attribute of such a module. Patch by Oren Milman. + +- bpo-31478: Fix an assertion failure in `_random.Random.seed()` in case the + argument has a bad ``__abs__()`` method. Patch by Oren Milman. + +- bpo-31336: Speed up class creation by 10-20% by reducing the overhead in + the necessary special method lookups. Patch by Stefan Behnel. + +- bpo-31415: Add ``-X importtime`` option to show how long each import + takes. It can be used to optimize application's startup time. Support the + :envvar:`PYTHONPROFILEIMPORTTIME` as an equivalent way to enable this. + +- bpo-31410: Optimized calling wrapper and classmethod descriptors. + +- bpo-31353: :pep:`553` - Add a new built-in called ``breakpoint()`` which + calls ``sys.breakpointhook()``. By default this imports ``pdb`` and calls + ``pdb.set_trace()``, but users may override ``sys.breakpointhook()`` to + call whatever debugger they want. The original value of the hook is saved + in ``sys.__breakpointhook__``. + +- bpo-17852: Maintain a list of open buffered files, flush them before + exiting the interpreter. Based on a patch from Armin Rigo. + +- bpo-31315: Fix an assertion failure in imp.create_dynamic(), when + spec.name is not a string. Patch by Oren Milman. + +- bpo-31311: Fix a crash in the ``__setstate__()`` method of + `ctypes._CData`, in case of a bad ``__dict__``. Patch by Oren Milman. + +- bpo-31293: Fix crashes in true division and multiplication of a timedelta + object by a float with a bad as_integer_ratio() method. Patch by Oren + Milman. + +- bpo-31285: Fix an assertion failure in `warnings.warn_explicit`, when the + return value of the received loader's get_source() has a bad splitlines() + method. Patch by Oren Milman. + +- bpo-30406: Make ``async`` and ``await`` proper keywords, as specified in + :pep:`492`. + +Library +------- + +- bpo-30058: Fixed buffer overflow in select.kqueue.control(). + +- bpo-31672: ``idpattern`` in ``string.Template`` matched some non-ASCII + characters. Now it uses ``-i`` regular expression local flag to avoid + non-ASCII characters. + +- bpo-31701: On Windows, faulthandler.enable() now ignores MSC and COM + exceptions. + +- bpo-31728: Prevent crashes in `_elementtree` due to unsafe cleanup of + `Element.text` and `Element.tail`. Patch by Oren Milman. + +- bpo-31671: Now ``re.compile()`` converts passed RegexFlag to normal int + object before compiling. bm_regex_compile benchmark shows 14% performance + improvements. + +- bpo-30397: The types of compiled regular objects and match objects are now + exposed as `re.Pattern` and `re.Match`. This adds information in pydoc + output for the re module. + +- bpo-31675: Fixed memory leaks in Tkinter's methods splitlist() and split() + when pass a string larger than 2 GiB. + +- bpo-31673: Fixed typo in the name of Tkinter's method adderrorinfo(). + +- bpo-31648: Improvements to path predicates in ElementTree: Allow + whitespace around predicate parts, i.e. "[a = 'text']" instead of + requiring the less readable "[a='text']". Add support for text comparison + of the current node, like "[.='text']". Patch by Stefan Behnel. + +- bpo-30806: Fix the string representation of a netrc object. + +- bpo-31638: Add optional argument ``compressed`` to + ``zipapp.create_archive``, and add option ``--compress`` to the command + line interface of ``zipapp``. + +- bpo-25351: Avoid venv activate failures with undefined variables + +- bpo-20519: Avoid ctypes use (if possible) and improve import time for + uuid. + +- bpo-28293: The regular expression cache is no longer completely dumped + when it is full. + +- bpo-31596: Added pthread_getcpuclockid() to the time module + +- bpo-27494: Make 2to3 accept a trailing comma in generator expressions. For + example, ``set(x for x in [],)`` is now allowed. + +- bpo-30347: Stop crashes when concurrently iterate over itertools.groupby() + iterators. + +- bpo-30346: An iterator produced by itertools.groupby() iterator now + becomes exhausted after advancing the groupby iterator. + +- bpo-31556: Cancel asyncio.wait_for future faster if timeout <= 0 + +- bpo-31540: Allow passing a context object in + :class:`concurrent.futures.ProcessPoolExecutor` constructor. Also, free + job resources in :class:`concurrent.futures.ProcessPoolExecutor` earlier + to improve memory usage when a worker waits for new jobs. + +- bpo-31516: ``threading.current_thread()`` should not return a dummy thread + at shutdown. + +- bpo-31525: In the sqlite module, require the sqlite3_prepare_v2 API. Thus, + the sqlite module now requires sqlite version at least 3.3.9. + +- bpo-26510: argparse subparsers are now required by default. This matches + behaviour in Python 2. For optional subparsers, use the new parameter + ``add_subparsers(required=False)``. Patch by Anthony Sottile. (As of + 3.7.0rc1, the default was changed to not required as had been the case + since Python 3.3.) + +- bpo-27541: Reprs of subclasses of some collection and iterator classes + (`bytearray`, `array.array`, `collections.deque`, + `collections.defaultdict`, `itertools.count`, `itertools.repeat`) now + contain actual type name insteads of hardcoded name of the base class. + +- bpo-31351: python -m ensurepip now exits with non-zero exit code if pip + bootstrapping has failed. + +- bpo-31389: ``pdb.set_trace()`` now takes an optional keyword-only argument + ``header``. If given, this is printed to the console just before debugging + begins. + +Documentation +------------- + +- bpo-31537: Fix incorrect usage of ``get_history_length`` in readline + documentation example code. Patch by Brad Smith. + +- bpo-30085: The operator functions without double underscores are preferred + for clarity. The one with underscores are only kept for + back-compatibility. + +Build +----- + +- bpo-31696: Improve compiler version information in :data:`sys.version` + when Python is built with Clang. + +- bpo-31625: Stop using ranlib on static libraries. Instead, we assume ar + supports the 's' flag. + +- bpo-31624: Remove support for BSD/OS. + +- bpo-22140: Prevent double substitution of prefix in python-config.sh. + +- bpo-31569: Correct PCBuild/ case to PCbuild/ in build scripts and + documentation. + +- bpo-31536: Avoid wholesale rebuild after `make regen-all` if nothing + changed. + +IDLE +---- + +- bpo-31460: Simplify the API of IDLE's Module Browser. Passing a widget + instead of an flist with a root widget opens the option of creating a + browser frame that is only part of a window. Passing a full file name + instead of pieces assumed to come from a .py file opens the possibility of + browsing python files that do not end in .py. + +- bpo-31649: IDLE - Make _htest, _utest parameters keyword only. + +- bpo-31559: Remove test order dependence in idle_test.test_browser. + +- bpo-31459: Rename IDLE's module browser from Class Browser to Module + Browser. The original module-level class and method browser became a + module browser, with the addition of module-level functions, years ago. + Nested classes and functions were added yesterday. For + back-compatibility, the virtual event <<open-class-browser>>, which + appears on the Keys tab of the Settings dialog, is not changed. Patch by + Cheryl Sabella. + +- bpo-31500: Default fonts now are scaled on HiDPI displays. + +- bpo-1612262: IDLE module browser now shows nested classes and functions. + Original patches for code and tests by Guilherme Polo and Cheryl Sabella, + respectively. + +C API +----- + +- bpo-28280: Make `PyMapping_Keys()`, `PyMapping_Values()` and + `PyMapping_Items()` always return a `list` (rather than a `list` or a + `tuple`). Patch by Oren Milman. + +- bpo-31532: Fix memory corruption due to allocator mix in getpath.c between + Py_GetPath() and Py_SetPath() + +- bpo-25658: Implement :pep:`539` for Thread Specific Storage (TSS) API: it + is a new Thread Local Storage (TLS) API to CPython which would supersede + use of the existing TLS API within the CPython interpreter, while + deprecating the existing API. PEP written by Erik M. Bray, patch by + Masayuki Yamamoto. + + +What's New in Python 3.7.0 alpha 1? +=================================== + +*Release date: 2017-09-19* + +Security +-------- + +- bpo-29781: SSLObject.version() now correctly returns None when handshake + over BIO has not been performed yet. + +- bpo-29505: Add fuzz tests for float(str), int(str), unicode(str); for + oss-fuzz. + +- bpo-30947: Upgrade libexpat embedded copy from version 2.2.1 to 2.2.3 to + get security fixes. + +- bpo-30730: Prevent environment variables injection in subprocess on + Windows. Prevent passing other environment variables and command + arguments. + +- bpo-30694: Upgrade expat copy from 2.2.0 to 2.2.1 to get fixes of multiple + security vulnerabilities including: CVE-2017-9233 (External entity + infinite loop DoS), CVE-2016-9063 (Integer overflow, re-fix), + CVE-2016-0718 (Fix regression bugs from 2.2.0's fix to CVE-2016-0718) and + CVE-2012-0876 (Counter hash flooding with SipHash). Note: the + CVE-2016-5300 (Use os-specific entropy sources like getrandom) doesn't + impact Python, since Python already gets entropy from the OS to set the + expat secret using ``XML_SetHashSalt()``. + +- bpo-30500: Fix urllib.parse.splithost() to correctly parse fragments. For + example, ``splithost('//127.0.0.1#@evil.com/')`` now correctly returns the + ``127.0.0.1`` host, instead of treating ``@evil.com`` as the host in an + authentication (``login@host``). + +- bpo-29591: Update expat copy from 2.1.1 to 2.2.0 to get fixes of + CVE-2016-0718 and CVE-2016-4472. See + https://sourceforge.net/p/expat/bugs/537/ for more information. + +Core and Builtins +----------------- + +- bpo-31490: Fix an assertion failure in `ctypes` class definition, in case + the class has an attribute whose name is specified in ``_anonymous_`` but + not in ``_fields_``. Patch by Oren Milman. + +- bpo-31471: Fix an assertion failure in `subprocess.Popen()` on Windows, in + case the env argument has a bad keys() method. Patch by Oren Milman. + +- bpo-31418: Fix an assertion failure in `PyErr_WriteUnraisable()` in case + of an exception with a bad ``__module__`` attribute. Patch by Oren Milman. + +- bpo-31416: Fix assertion failures in case of a bad warnings.filters or + warnings.defaultaction. Patch by Oren Milman. + +- bpo-28411: Change direct usage of PyInterpreterState.modules to + PyImport_GetModuleDict(). Also introduce more uniformity in other code + that deals with sys.modules. This helps reduce complications when working + on sys.modules. + +- bpo-28411: Switch to the abstract API when dealing with + ``PyInterpreterState.modules``. This allows later support for all dict + subclasses and other Mapping implementations. Also add a + ``PyImport_GetModule()`` function to reduce a bunch of duplicated code. + +- bpo-31411: Raise a TypeError instead of SystemError in case + warnings.onceregistry is not a dictionary. Patch by Oren Milman. + +- bpo-31344: For finer control of tracing behaviour when testing the + interpreter, two new frame attributes have been added to control the + emission of particular trace events: ``f_trace_lines`` (``True`` by + default) to turn off per-line trace events; and ``f_trace_opcodes`` + (``False`` by default) to turn on per-opcode trace events. + +- bpo-31373: Fix several possible instances of undefined behavior due to + floating-point demotions. + +- bpo-30465: Location information (``lineno`` and ``col_offset``) in + f-strings is now (mostly) correct. This fixes tools like flake8 from + showing warnings on the wrong line (typically the first line of the file). + +- bpo-30860: Consolidate CPython's global runtime state under a single + struct. This improves discoverability of the runtime state. + +- bpo-31347: Fix possible undefined behavior in _PyObject_FastCall_Prepend. + +- bpo-31343: Include sys/sysmacros.h for major(), minor(), and makedev(). + GNU C libray plans to remove the functions from sys/types.h. + +- bpo-31291: Fix an assertion failure in `zipimport.zipimporter.get_data` on + Windows, when the return value of ``pathname.replace('/','\\')`` isn't a + string. Patch by Oren Milman. + +- bpo-31271: Fix an assertion failure in the write() method of + `io.TextIOWrapper`, when the encoder doesn't return a bytes object. Patch + by Oren Milman. + +- bpo-31243: Fix a crash in some methods of `io.TextIOWrapper`, when the + decoder's state is invalid. Patch by Oren Milman. + +- bpo-30721: ``print`` now shows correct usage hint for using Python 2 + redirection syntax. Patch by Sanyam Khurana. + +- bpo-31070: Fix a race condition in importlib _get_module_lock(). + +- bpo-30747: Add a non-dummy implementation of _Py_atomic_store and + _Py_atomic_load on MSVC. + +- bpo-31095: Fix potential crash during GC caused by ``tp_dealloc`` which + doesn't call ``PyObject_GC_UnTrack()``. + +- bpo-31071: Avoid masking original TypeError in call with * unpacking when + other arguments are passed. + +- bpo-30978: str.format_map() now passes key lookup exceptions through. + Previously any exception was replaced with a KeyError exception. + +- bpo-30808: Use _Py_atomic API for concurrency-sensitive signal state. + +- bpo-30876: Relative import from unloaded package now reimports the package + instead of failing with SystemError. Relative import from non-package now + fails with ImportError rather than SystemError. + +- bpo-30703: Improve signal delivery. Avoid using Py_AddPendingCall from + signal handler, to avoid calling signal-unsafe functions. The tests I'm + adding here fail without the rest of the patch, on Linux and OS X. This + means our signal delivery logic had defects (some signals could be lost). + +- bpo-30765: Avoid blocking in pthread_mutex_lock() when + PyThread_acquire_lock() is asked not to block. + +- bpo-31161: Make sure the 'Missing parentheses' syntax error message is + only applied to SyntaxError, not to subclasses. Patch by Martijn Pieters. + +- bpo-30814: Fixed a race condition when import a submodule from a package. + +- bpo-30736: The internal unicodedata database has been upgraded to Unicode + 10.0. + +- bpo-30604: Move co_extra_freefuncs from per-thread to per-interpreter to + avoid crashes. + +- bpo-30597: ``print`` now shows expected input in custom error message when + used as a Python 2 statement. Patch by Sanyam Khurana. + +- bpo-30682: Removed a too-strict assertion that failed for certain + f-strings, such as eval("f'\\\n'") and eval("f'\\\r'"). + +- bpo-30501: The compiler now produces more optimal code for complex + condition expressions in the "if", "while" and "assert" statement, the + "if" expression, and generator expressions and comprehensions. + +- bpo-28180: Implement :pep:`538` (legacy C locale coercion). This means + that when a suitable coercion target locale is available, both the core + interpreter and locale-aware C extensions will assume the use of UTF-8 as + the default text encoding, rather than ASCII. + +- bpo-30486: Allows setting cell values for __closure__. Patch by Lisa + Roach. + +- bpo-30537: itertools.islice now accepts integer-like objects (having an + __index__ method) as start, stop, and slice arguments + +- bpo-25324: Tokens needed for parsing in Python moved to C. ``COMMENT``, + ``NL`` and ``ENCODING``. This way the tokens and tok_names in the token + module don't get changed when you import the tokenize module. + +- bpo-29104: Fixed parsing backslashes in f-strings. + +- bpo-27945: Fixed various segfaults with dict when input collections are + mutated during searching, inserting or comparing. Based on patches by + Duane Griffin and Tim Mitchell. + +- bpo-25794: Fixed type.__setattr__() and type.__delattr__() for + non-interned attribute names. Based on patch by Eryk Sun. + +- bpo-30039: If a KeyboardInterrupt happens when the interpreter is in the + middle of resuming a chain of nested 'yield from' or 'await' calls, it's + now correctly delivered to the innermost frame. + +- bpo-28974: ``object.__format__(x, '')`` is now equivalent to ``str(x)`` + rather than ``format(str(self), '')``. + +- bpo-30024: Circular imports involving absolute imports with binding a + submodule to a name are now supported. + +- bpo-12414: sys.getsizeof() on a code object now returns the sizes which + includes the code struct and sizes of objects which it references. Patch + by Dong-hee Na. + +- bpo-29839: len() now raises ValueError rather than OverflowError if + __len__() returned a large negative integer. + +- bpo-11913: README.rst is now included in the list of distutils standard + READMEs and therefore included in source distributions. + +- bpo-29914: Fixed default implementations of __reduce__ and + __reduce_ex__(). object.__reduce__() no longer takes arguments, + object.__reduce_ex__() now requires one argument. + +- bpo-29949: Fix memory usage regression of set and frozenset object. + +- bpo-29935: Fixed error messages in the index() method of tuple, list and + deque when pass indices of wrong type. + +- bpo-29816: Shift operation now has less opportunity to raise + OverflowError. ValueError always is raised rather than OverflowError for + negative counts. Shifting zero with non-negative count always returns + zero. + +- bpo-24821: Fixed the slowing down to 25 times in the searching of some + unlucky Unicode characters. + +- bpo-29102: Add a unique ID to PyInterpreterState. This makes it easier to + identify each subinterpreter. + +- bpo-29894: The deprecation warning is emitted if __complex__ returns an + instance of a strict subclass of complex. In a future versions of Python + this can be an error. + +- bpo-29859: Show correct error messages when any of the pthread_* calls in + thread_pthread.h fails. + +- bpo-29849: Fix a memory leak when an ImportError is raised during from + import. + +- bpo-28856: Fix an oversight that %b format for bytes should support + objects follow the buffer protocol. + +- bpo-29723: The ``sys.path[0]`` initialization change for bpo-29139 caused + a regression by revealing an inconsistency in how sys.path is initialized + when executing ``__main__`` from a zipfile, directory, or other import + location. The interpreter now consistently avoids ever adding the import + location's parent directory to ``sys.path``, and ensures no other + ``sys.path`` entries are inadvertently modified when inserting the import + location named on the command line. + +- bpo-29568: Escaped percent "%%" in the format string for classic string + formatting no longer allows any characters between two percents. + +- bpo-29714: Fix a regression that bytes format may fail when containing + zero bytes inside. + +- bpo-29695: bool(), float(), list() and tuple() no longer take keyword + arguments. The first argument of int() can now be passes only as + positional argument. + +- bpo-28893: Set correct __cause__ for errors about invalid awaitables + returned from __aiter__ and __anext__. + +- bpo-28876: ``bool(range)`` works even if ``len(range)`` raises + :exc:`OverflowError`. + +- bpo-29683: Fixes to memory allocation in _PyCode_SetExtra. Patch by Brian + Coleman. + +- bpo-29684: Fix minor regression of PyEval_CallObjectWithKeywords. It + should raise TypeError when kwargs is not a dict. But it might cause segv + when args=NULL and kwargs is not a dict. + +- bpo-28598: Support __rmod__ for subclasses of str being called before + str.__mod__. Patch by Martijn Pieters. + +- bpo-29607: Fix stack_effect computation for CALL_FUNCTION_EX. Patch by + Matthieu Dartiailh. + +- bpo-29602: Fix incorrect handling of signed zeros in complex constructor + for complex subclasses and for inputs having a __complex__ method. Patch + by Serhiy Storchaka. + +- bpo-29347: Fixed possibly dereferencing undefined pointers when creating + weakref objects. + +- bpo-29463: Add ``docstring`` field to Module, ClassDef, FunctionDef, and + AsyncFunctionDef ast nodes. docstring is not first stmt in their body + anymore. It affects ``co_firstlineno`` and ``co_lnotab`` of code object + for module and class. (Reverted in :issue:`32911`.) + +- bpo-29438: Fixed use-after-free problem in key sharing dict. + +- bpo-29546: Set the 'path' and 'name' attribute on ImportError for ``from + ... import ...``. + +- bpo-29546: Improve from-import error message with location + +- bpo-29478: If max_line_length=None is specified while using the Compat32 + policy, it is no longer ignored. Patch by Mircea Cosbuc. + +- bpo-29319: Prevent RunMainFromImporter overwriting sys.path[0]. + +- bpo-29337: Fixed possible BytesWarning when compare the code objects. + Warnings could be emitted at compile time. + +- bpo-29327: Fixed a crash when pass the iterable keyword argument to + sorted(). + +- bpo-29034: Fix memory leak and use-after-free in os module + (path_converter). + +- bpo-29159: Fix regression in bytes(x) when x.__index__() raises Exception. + +- bpo-29049: Call _PyObject_GC_TRACK() lazily when calling Python function. + Calling function is up to 5% faster. + +- bpo-28927: bytes.fromhex() and bytearray.fromhex() now ignore all ASCII + whitespace, not only spaces. Patch by Robert Xiao. + +- bpo-28932: Do not include <sys/random.h> if it does not exist. + +- bpo-25677: Correct the positioning of the syntax error caret for indented + blocks. Based on patch by Michael Layzell. + +- bpo-29000: Fixed bytes formatting of octals with zero padding in alternate + form. + +- bpo-18896: Python function can now have more than 255 parameters. + collections.namedtuple() now supports tuples with more than 255 elements. + +- bpo-28596: The preferred encoding is UTF-8 on Android. Patch written by + Chi Hsuan Yen. + +- bpo-22257: Clean up interpreter startup (see :pep:`432`). + +- bpo-26919: On Android, operating system data is now always encoded/decoded + to/from UTF-8, instead of the locale encoding to avoid inconsistencies + with os.fsencode() and os.fsdecode() which are already using UTF-8. + +- bpo-28991: functools.lru_cache() was susceptible to an obscure reentrancy + bug triggerable by a monkey-patched len() function. + +- bpo-28147: Fix a memory leak in split-table dictionaries: setattr() must + not convert combined table into split table. Patch written by INADA Naoki. + +- bpo-28739: f-string expressions are no longer accepted as docstrings and + by ast.literal_eval() even if they do not include expressions. + +- bpo-28512: Fixed setting the offset attribute of SyntaxError by + PyErr_SyntaxLocationEx() and PyErr_SyntaxLocationObject(). + +- bpo-28918: Fix the cross compilation of xxlimited when Python has been + built with Py_DEBUG defined. + +- bpo-23722: Rather than silently producing a class that doesn't support + zero-argument ``super()`` in methods, failing to pass the new + ``__classcell__`` namespace entry up to ``type.__new__`` now results in a + ``DeprecationWarning`` and a class that supports zero-argument + ``super()``. + +- bpo-28797: Modifying the class __dict__ inside the __set_name__ method of + a descriptor that is used inside that class no longer prevents calling the + __set_name__ method of other descriptors. + +- bpo-28799: Remove the ``PyEval_GetCallStats()`` function and deprecate the + untested and undocumented ``sys.callstats()`` function. Remove the + ``CALL_PROFILE`` special build: use the :func:`sys.setprofile` function, + :mod:`cProfile` or :mod:`profile` to profile function calls. + +- bpo-12844: More than 255 arguments can now be passed to a function. + +- bpo-28782: Fix a bug in the implementation ``yield from`` when checking if + the next instruction is YIELD_FROM. Regression introduced by WORDCODE + (issue #26647). + +- bpo-28774: Fix error position of the unicode error in ASCII and Latin1 + encoders when a string returned by the error handler contains multiple + non-encodable characters (non-ASCII for the ASCII codec, characters out of + the U+0000-U+00FF range for Latin1). + +- bpo-28731: Optimize _PyDict_NewPresized() to create correct size dict. + Improve speed of dict literal with constant keys up to 30%. + +- bpo-28532: Show sys.version when -V option is supplied twice. + +- bpo-27100: The with-statement now checks for __enter__ before it checks + for __exit__. This gives less confusing error messages when both methods + are missing. Patch by Jonathan Ellington. + +- bpo-28746: Fix the set_inheritable() file descriptor method on platforms + that do not have the ioctl FIOCLEX and FIONCLEX commands. + +- bpo-26920: Fix not getting the locale's charset upon initializing the + interpreter, on platforms that do not have langinfo. + +- bpo-28648: Fixed crash in Py_DecodeLocale() in debug build on Mac OS X + when decode astral characters. Patch by Xiang Zhang. + +- bpo-28665: Improve speed of the STORE_DEREF opcode by 40%. + +- bpo-19398: Extra slash no longer added to sys.path components in case of + empty compile-time PYTHONPATH components. + +- bpo-28621: Sped up converting int to float by reusing faster bits counting + implementation. Patch by Adrian Wielgosik. + +- bpo-28580: Optimize iterating split table values. Patch by Xiang Zhang. + +- bpo-28583: PyDict_SetDefault didn't combine split table when needed. Patch + by Xiang Zhang. + +- bpo-28128: Deprecation warning for invalid str and byte escape sequences + now prints better information about where the error occurs. Patch by + Serhiy Storchaka and Eric Smith. + +- bpo-28509: dict.update() no longer allocate unnecessary large memory. + +- bpo-28426: Fixed potential crash in PyUnicode_AsDecodedObject() in debug + build. + +- bpo-28517: Fixed of-by-one error in the peephole optimizer that caused + keeping unreachable code. + +- bpo-28214: Improved exception reporting for problematic __set_name__ + attributes. + +- bpo-23782: Fixed possible memory leak in _PyTraceback_Add() and exception + loss in PyTraceBack_Here(). + +- bpo-28183: Optimize and cleanup dict iteration. + +- bpo-26081: Added C implementation of asyncio.Future. Original patch by + Yury Selivanov. + +- bpo-28379: Added sanity checks and tests for PyUnicode_CopyCharacters(). + Patch by Xiang Zhang. + +- bpo-28376: The type of long range iterator is now registered as Iterator. + Patch by Oren Milman. + +- bpo-28376: Creating instances of range_iterator by calling range_iterator + type now is disallowed. Calling iter() on range instance is the only way. + Patch by Oren Milman. + +- bpo-26906: Resolving special methods of uninitialized type now causes + implicit initialization of the type instead of a fail. + +- bpo-18287: PyType_Ready() now checks that tp_name is not NULL. Original + patch by Niklas Koep. + +- bpo-24098: Fixed possible crash when AST is changed in process of + compiling it. + +- bpo-28201: Dict reduces possibility of 2nd conflict in hash table when + hashes have same lower bits. + +- bpo-28350: String constants with null character no longer interned. + +- bpo-26617: Fix crash when GC runs during weakref callbacks. + +- bpo-27942: String constants now interned recursively in tuples and + frozensets. + +- bpo-28289: ImportError.__init__ now resets not specified attributes. + +- bpo-21578: Fixed misleading error message when ImportError called with + invalid keyword args. + +- bpo-28203: Fix incorrect type in complex(1.0, {2:3}) error message. Patch + by Soumya Sharma. + +- bpo-28086: Single var-positional argument of tuple subtype was passed + unscathed to the C-defined function. Now it is converted to exact tuple. + +- bpo-28214: Now __set_name__ is looked up on the class instead of the + instance. + +- bpo-27955: Fallback on reading /dev/urandom device when the getrandom() + syscall fails with EPERM, for example when blocked by SECCOMP. + +- bpo-28192: Don't import readline in isolated mode. + +- bpo-27441: Remove some redundant assignments to ob_size in longobject.c. + Thanks Oren Milman. + +- bpo-27222: Clean up redundant code in long_rshift function. Thanks Oren + Milman. + +- Upgrade internal unicode databases to Unicode version 9.0.0. + +- bpo-28131: Fix a regression in zipimport's compile_source(). zipimport + should use the same optimization level as the interpreter. + +- bpo-28126: Replace Py_MEMCPY with memcpy(). Visual Studio can properly + optimize memcpy(). + +- bpo-28120: Fix dict.pop() for splitted dictionary when trying to remove a + "pending key" (Not yet inserted in split-table). Patch by Xiang Zhang. + +- bpo-26182: Raise DeprecationWarning when async and await keywords are used + as variable/attribute/class/function name. + +- bpo-26182: Fix a refleak in code that raises DeprecationWarning. + +- bpo-28721: Fix asynchronous generators aclose() and athrow() to handle + StopAsyncIteration propagation properly. + +- bpo-26110: Speed-up method calls: add LOAD_METHOD and CALL_METHOD opcodes. + +Library +------- + +- bpo-31499: xml.etree: Fix a crash when a parser is part of a reference + cycle. + +- bpo-31482: ``random.seed()`` now works with bytes in version=1 + +- bpo-28556: typing.get_type_hints now finds the right globalns for classes + and modules by default (when no ``globalns`` was specified by the caller). + +- bpo-28556: Speed improvements to the ``typing`` module. Original PRs by + Ivan Levkivskyi and Mitar. + +- bpo-31544: The C accelerator module of ElementTree ignored exceptions + raised when looking up TreeBuilder target methods in XMLParser(). + +- bpo-31234: socket.create_connection() now fixes manually a reference + cycle: clear the variable storing the last exception on success. + +- bpo-31457: LoggerAdapter objects can now be nested. + +- bpo-31431: SSLContext.check_hostname now automatically sets + SSLContext.verify_mode to ssl.CERT_REQUIRED instead of failing with a + ValueError. + +- bpo-31233: socketserver.ThreadingMixIn now keeps a list of non-daemonic + threads to wait until all these threads complete in server_close(). + +- bpo-28638: Changed the implementation strategy for + collections.namedtuple() to substantially reduce the use of exec() in + favor of precomputed methods. As a result, the *verbose* parameter and + *_source* attribute are no longer supported. The benefits include 1) + having a smaller memory footprint for applications using multiple named + tuples, 2) faster creation of the named tuple class (approx 4x to 6x + depending on how it is measured), and 3) minor speed-ups for instance + creation using __new__, _make, and _replace. (The primary patch + contributor is Jelle Zijlstra with further improvements by INADA Naoki, + Serhiy Storchaka, and Raymond Hettinger.) + +- bpo-31400: Improves SSL error handling to avoid losing error numbers. + +- bpo-27629: Make return types of SSLContext.wrap_bio() and + SSLContext.wrap_socket() customizable. + +- bpo-28958: ssl.SSLContext() now uses OpenSSL error information when a + context cannot be instantiated. + +- bpo-28182: The SSL module now raises SSLCertVerificationError when OpenSSL + fails to verify the peer's certificate. The exception contains more + information about the error. + +- bpo-27340: SSLSocket.sendall() now uses memoryview to create slices of + data. This fixes support for all bytes-like object. It is also more + efficient and avoids costly copies. + +- bpo-14191: A new function + ``argparse.ArgumentParser.parse_intermixed_args`` provides the ability to + parse command lines where there user intermixes options and positional + arguments. + +- bpo-31178: Fix string concatenation bug in rare error path in the + subprocess module + +- bpo-31350: Micro-optimize :func:`asyncio._get_running_loop` to become up + to 10% faster. + +- bpo-31170: expat: Update libexpat from 2.2.3 to 2.2.4. Fix copying of + partial characters for UTF-8 input (libexpat bug 115): + https://github.com/libexpat/libexpat/issues/115 + +- bpo-29136: Add TLS 1.3 cipher suites and OP_NO_TLSv1_3. + +- bpo-1198569: ``string.Template`` subclasses can optionally define + ``braceidpattern`` if they want to specify different placeholder patterns + inside and outside the braces. If None (the default) it falls back to + ``idpattern``. + +- bpo-31326: concurrent.futures.ProcessPoolExecutor.shutdown() now + explicitly closes the call queue. Moreover, shutdown(wait=True) now also + join the call queue thread, to prevent leaking a dangling thread. + +- bpo-27144: The ``map()`` and ``as_completed()`` iterators in + ``concurrent.futures`` now avoid keeping a reference to yielded objects. + +- bpo-31281: Fix ``fileinput.FileInput(files, inplace=True)`` when ``files`` + contain ``pathlib.Path`` objects. + +- bpo-10746: Fix ctypes producing wrong :pep:`3118` type codes for integer + types. + +- bpo-27584: ``AF_VSOCK`` has been added to the socket interface which + allows communication between virtual machines and their host. + +- bpo-22536: The subprocess module now sets the filename when + FileNotFoundError is raised on POSIX systems due to the executable or cwd + not being found. + +- bpo-29741: Update some methods in the _pyio module to also accept integer + types. Patch by Oren Milman. + +- bpo-31249: concurrent.futures: WorkItem.run() used by ThreadPoolExecutor + now breaks a reference cycle between an exception object and the WorkItem + object. + +- bpo-31247: xmlrpc.server now explicitly breaks reference cycles when using + sys.exc_info() in code handling exceptions. + +- bpo-23835: configparser: reading defaults in the ``ConfigParser()`` + constructor is now using ``read_dict()``, making its behavior consistent + with the rest of the parser. Non-string keys and values in the defaults + dictionary are now being implicitly converted to strings. Patch by James + Tocknell. + +- bpo-31238: pydoc: the stop() method of the private ServerThread class now + waits until DocServer.serve_until_quit() completes and then explicitly + sets its docserver attribute to None to break a reference cycle. + +- bpo-5001: Many asserts in `multiprocessing` are now more informative, and + some error types have been changed to more specific ones. + +- bpo-31109: Convert zipimport to use Argument Clinic. + +- bpo-30102: The ssl and hashlib modules now call + OPENSSL_add_all_algorithms_noconf() on OpenSSL < 1.1.0. The function + detects CPU features and enables optimizations on some CPU architectures + such as POWER8. Patch is based on research from Gustavo Serra Scalet. + +- bpo-18966: Non-daemonic threads created by a multiprocessing.Process are + now joined on child exit. + +- bpo-31183: `dis` now works with asynchronous generator and coroutine + objects. Patch by George Collins based on diagnosis by Luciano Ramalho. + +- bpo-5001: There are a number of uninformative asserts in the + `multiprocessing` module, as noted in issue 5001. This change fixes two of + the most potentially problematic ones, since they are in error-reporting + code, in the `multiprocessing.managers.convert_to_error` function. (It + also makes more informative a ValueError message.) The only potentially + problematic change is that the AssertionError is now a TypeError; however, + this should also help distinguish it from an AssertionError being + *reported* by the function/its caller (such as in issue 31169). - Patch by + Allen W. Smith (drallensmith on github). + +- bpo-31185: Fixed miscellaneous errors in asyncio speedup module. + +- bpo-31151: socketserver.ForkingMixIn.server_close() now waits until all + child processes completed to prevent leaking zombie processes. + +- bpo-31072: Add an ``include_file`` parameter to + ``zipapp.create_archive()`` + +- bpo-24700: Optimize array.array comparison. It is now from 10x up to 70x + faster when comparing arrays holding values of the same integer type. + +- bpo-31135: ttk: fix the destroy() method of LabeledScale and OptionMenu + classes. Call the parent destroy() method even if the used attribute + doesn't exist. The LabeledScale.destroy() method now also explicitly + clears label and scale attributes to help the garbage collector to destroy + all widgets. + +- bpo-31107: Fix `copyreg._slotnames()` mangled attribute calculation for + classes whose name begins with an underscore. Patch by Shane Harvey. + +- bpo-31080: Allow `logging.config.fileConfig` to accept kwargs and/or args. + +- bpo-30897: ``pathlib.Path`` objects now include an ``is_mount()`` method + (only implemented on POSIX). This is similar to ``os.path.ismount(p)``. + Patch by Cooper Ry Lees. + +- bpo-31061: Fixed a crash when using asyncio and threads. + +- bpo-30987: Added support for CAN ISO-TP protocol in the socket module. + +- bpo-30522: Added a ``setStream`` method to ``logging.StreamHandler`` to + allow the stream to be set after creation. + +- bpo-30502: Fix handling of long oids in ssl. Based on patch by Christian + Heimes. + +- bpo-5288: Support tzinfo objects with sub-minute offsets. + +- bpo-30919: Fix shared memory performance regression in multiprocessing in + 3.x. Shared memory used anonymous memory mappings in 2.x, while 3.x mmaps + actual files. Try to be careful to do as little disk I/O as possible. + +- bpo-26732: Fix too many fds in processes started with the "forkserver" + method. A child process would inherit as many fds as the number of + still-running children. + +- bpo-29403: Fix ``unittest.mock``'s autospec to not fail on method-bound + builtin functions. Patch by Aaron Gallagher. + +- bpo-30961: Fix decrementing a borrowed reference in tracemalloc. + +- bpo-19896: Fix multiprocessing.sharedctypes to recognize typecodes ``'q'`` + and ``'Q'``. + +- bpo-30946: Remove obsolete code in readline module for platforms where GNU + readline is older than 2.1 or where select() is not available. + +- bpo-25684: Change ``ttk.OptionMenu`` radiobuttons to be unique across + instances of ``OptionMenu``. + +- bpo-30886: Fix multiprocessing.Queue.join_thread(): it now waits until the + thread completes, even if the thread was started by the same process which + created the queue. + +- bpo-29854: Fix segfault in readline when using readline's history-size + option. Patch by Nir Soffer. + +- bpo-30794: Added multiprocessing.Process.kill method to terminate using + the SIGKILL signal on Unix. + +- bpo-30319: socket.close() now ignores ECONNRESET error. + +- bpo-30828: Fix out of bounds write in + `asyncio.CFuture.remove_done_callback()`. + +- bpo-30302: Use keywords in the ``repr`` of ``datetime.timedelta``. + +- bpo-30807: signal.setitimer() may disable the timer when passed a tiny + value. Tiny values (such as 1e-6) are valid non-zero values for + setitimer(), which is specified as taking microsecond-resolution + intervals. However, on some platform, our conversion routine could convert + 1e-6 into a zero interval, therefore disabling the timer instead of + (re-)scheduling it. + +- bpo-30441: Fix bug when modifying os.environ while iterating over it + +- bpo-29585: Avoid importing ``sysconfig`` from ``site`` to improve startup + speed. Python startup is about 5% faster on Linux and 30% faster on macOS. + +- bpo-29293: Add missing parameter "n" on + multiprocessing.Condition.notify(). The doc claims + multiprocessing.Condition behaves like threading.Condition, but its + notify() method lacked the optional "n" argument (to specify the number of + sleepers to wake up) that threading.Condition.notify() accepts. + +- bpo-30532: Fix email header value parser dropping folding white space in + certain cases. + +- bpo-30596: Add a ``close()`` method to ``multiprocessing.Process``. + +- bpo-9146: Fix a segmentation fault in _hashopenssl when standard hash + functions such as md5 are not available in the linked OpenSSL library. As + in some special FIPS-140 build environments. + +- bpo-29169: Update zlib to 1.2.11. + +- bpo-30119: ftplib.FTP.putline() now throws ValueError on commands that + contains CR or LF. Patch by Dong-hee Na. + +- bpo-30879: os.listdir() and os.scandir() now emit bytes names when called + with bytes-like argument. + +- bpo-30746: Prohibited the '=' character in environment variable names in + ``os.putenv()`` and ``os.spawn*()``. + +- bpo-30664: The description of a unittest subtest now preserves the order + of keyword arguments of TestCase.subTest(). + +- bpo-21071: struct.Struct.format type is now :class:`str` instead of + :class:`bytes`. + +- bpo-29212: Fix concurrent.futures.thread.ThreadPoolExecutor threads to + have a non repr() based thread name by default when no thread_name_prefix + is supplied. They will now identify themselves as + "ThreadPoolExecutor-y_n". + +- bpo-29755: Fixed the lgettext() family of functions in the gettext module. + They now always return bytes. + +- bpo-30616: Functional API of enum allows to create empty enums. Patched by + Dong-hee Na + +- bpo-30038: Fix race condition between signal delivery and wakeup file + descriptor. Patch by Nathaniel Smith. + +- bpo-23894: lib2to3 now recognizes ``rb'...'`` and ``f'...'`` strings. + +- bpo-24744: pkgutil.walk_packages function now raises ValueError if *path* + is a string. Patch by Sanyam Khurana. + +- bpo-24484: Avoid race condition in multiprocessing cleanup. + +- bpo-30589: Fix multiprocessing.Process.exitcode to return the opposite of + the signal number when the process is killed by a signal (instead of 255) + when using the "forkserver" method. + +- bpo-28994: The traceback no longer displayed for SystemExit raised in a + callback registered by atexit. + +- bpo-30508: Don't log exceptions if Task/Future "cancel()" method was + called. + +- bpo-30645: Fix path calculation in `imp.load_package()`, fixing it for + cases when a package is only shipped with bytecodes. Patch by Alexandru + Ardelean. + +- bpo-11822: The dis.dis() function now is able to disassemble nested code + objects. + +- bpo-30624: selectors does not take KeyboardInterrupt and SystemExit into + account, leaving a fd in a bad state in case of error. Patch by Giampaolo + Rodola'. + +- bpo-30595: multiprocessing.Queue.get() with a timeout now polls its reader + in non-blocking mode if it succeeded to acquire the lock but the acquire + took longer than the timeout. + +- bpo-28556: Updates to typing module: Add generic AsyncContextManager, add + support for ContextManager on all versions. Original PRs by Jelle Zijlstra + and Ivan Levkivskyi + +- bpo-30605: re.compile() no longer raises a BytesWarning when compiling a + bytes instance with misplaced inline modifier. Patch by Roy Williams. + +- bpo-29870: Fix ssl sockets leaks when connection is aborted in asyncio/ssl + implementation. Patch by Michaël Sghaïer. + +- bpo-29743: Closing transport during handshake process leaks open socket. + Patch by Nikolay Kim + +- bpo-27585: Fix waiter cancellation in asyncio.Lock. Patch by Mathieu + Sornay. + +- bpo-30014: modify() method of poll(), epoll() and devpoll() based classes + of selectors module is around 10% faster. Patch by Giampaolo Rodola'. + +- bpo-30418: On Windows, subprocess.Popen.communicate() now also ignore + EINVAL on stdin.write() if the child process is still running but closed + the pipe. + +- bpo-30463: Addded empty __slots__ to abc.ABC. This allows subclassers to + deny __dict__ and __weakref__ creation. Patch by Aaron Hall. + +- bpo-30520: Loggers are now pickleable. + +- bpo-30557: faulthandler now correctly filters and displays exception codes + on Windows + +- bpo-30526: Add TextIOWrapper.reconfigure() and a + TextIOWrapper.write_through attribute. + +- bpo-30245: Fix possible overflow when organize struct.pack_into error + message. Patch by Yuan Liu. + +- bpo-30378: Fix the problem that logging.handlers.SysLogHandler cannot + handle IPv6 addresses. + +- bpo-16500: Allow registering at-fork handlers. + +- bpo-30470: Deprecate invalid ctypes call protection on Windows. Patch by + Mariatta Wijaya. + +- bpo-30414: multiprocessing.Queue._feed background running thread do not + break from main loop on exception. + +- bpo-30003: Fix handling escape characters in HZ codec. Based on patch by + Ma Lin. + +- bpo-30149: inspect.signature() now supports callables with + variable-argument parameters wrapped with partialmethod. Patch by Dong-hee + Na. + +- bpo-30436: importlib.find_spec() raises ModuleNotFoundError instead of + AttributeError if the specified parent module is not a package (i.e. lacks + a __path__ attribute). + +- bpo-30301: Fix AttributeError when using SimpleQueue.empty() under *spawn* + and *forkserver* start methods. + +- bpo-30375: Warnings emitted when compile a regular expression now always + point to the line in the user code. Previously they could point into + inners of the re module if emitted from inside of groups or conditionals. + +- bpo-30329: imaplib and poplib now catch the Windows socket WSAEINVAL error + (code 10022) on shutdown(SHUT_RDWR): An invalid operation was attempted. + This error occurs sometimes on SSL connections. + +- bpo-29196: Removed previously deprecated in Python 2.4 classes Plist, Dict + and _InternalDict in the plistlib module. Dict values in the result of + functions readPlist() and readPlistFromBytes() are now normal dicts. You + no longer can use attribute access to access items of these dictionaries. + +- bpo-9850: The :mod:`macpath` is now deprecated and will be removed in + Python 3.8. + +- bpo-30299: Compiling regular expression in debug mode on CPython now + displays the compiled bytecode in human readable form. + +- bpo-30048: Fixed ``Task.cancel()`` can be ignored when the task is running + coroutine and the coroutine returned without any more ``await``. + +- bpo-30266: contextlib.AbstractContextManager now supports + anti-registration by setting __enter__ = None or __exit__ = None, + following the pattern introduced in bpo-25958. Patch by Jelle Zijlstra. + +- bpo-30340: Enhanced regular expressions optimization. This increased the + performance of matching some patterns up to 25 times. + +- bpo-30298: Weaken the condition of deprecation warnings for inline + modifiers. Now allowed several subsequential inline modifiers at the start + of the pattern (e.g. ``'(?i)(?s)...'``). In verbose mode whitespaces and + comments now are allowed before and between inline modifiers (e.g. ``'(?x) + (?i) (?s)...'``). + +- bpo-30285: Optimized case-insensitive matching and searching of regular + expressions. + +- bpo-29990: Fix range checking in GB18030 decoder. Original patch by Ma + Lin. + +- bpo-29979: rewrite cgi.parse_multipart, reusing the FieldStorage class and + making its results consistent with those of FieldStorage for + multipart/form-data requests. Patch by Pierre Quentel. + +- bpo-30243: Removed the __init__ methods of _json's scanner and encoder. + Misusing them could cause memory leaks or crashes. Now scanner and + encoder objects are completely initialized in the __new__ methods. + +- bpo-30215: Compiled regular expression objects with the re.LOCALE flag no + longer depend on the locale at compile time. Only the locale at matching + time affects the result of matching. + +- bpo-30185: Avoid KeyboardInterrupt tracebacks in forkserver helper process + when Ctrl-C is received. + +- bpo-30103: binascii.b2a_uu() and uu.encode() now support using ``'`'`` as + zero instead of space. + +- bpo-28556: Various updates to typing module: add typing.NoReturn type, use + WrapperDescriptorType, minor bug-fixes. Original PRs by Jim + Fasarakis-Hilliard and Ivan Levkivskyi. + +- bpo-30205: Fix getsockname() for unbound AF_UNIX sockets on Linux. + +- bpo-30228: The seek() and tell() methods of io.FileIO now set the internal + seekable attribute to avoid one syscall on open() (in buffered or text + mode). + +- bpo-30190: unittest's assertAlmostEqual and assertNotAlmostEqual provide a + better message in case of failure which includes the difference between + left and right arguments. (patch by Giampaolo Rodola') + +- bpo-30101: Add support for curses.A_ITALIC. + +- bpo-29822: inspect.isabstract() now works during __init_subclass__. Patch + by Nate Soares. + +- bpo-29960: Preserve generator state when _random.Random.setstate() raises + an exception. Patch by Bryan Olson. + +- bpo-30070: Fixed leaks and crashes in errors handling in the parser + module. + +- bpo-22352: Column widths in the output of dis.dis() are now adjusted for + large line numbers and instruction offsets. + +- bpo-30061: Fixed crashes in IOBase methods __next__() and readlines() when + readline() or __next__() respectively return non-sizeable object. Fixed + possible other errors caused by not checking results of PyObject_Size(), + PySequence_Size(), or PyMapping_Size(). + +- bpo-30218: Fix PathLike support for shutil.unpack_archive. Patch by Jelle + Zijlstra. + +- bpo-10076: Compiled regular expression and match objects in the re module + now support copy.copy() and copy.deepcopy() (they are considered atomic). + +- bpo-30068: _io._IOBase.readlines will check if it's closed first when hint + is present. + +- bpo-29694: Fixed race condition in pathlib mkdir with flags parents=True. + Patch by Armin Rigo. + +- bpo-29692: Fixed arbitrary unchaining of RuntimeError exceptions in + contextlib.contextmanager. Patch by Siddharth Velankar. + +- bpo-26187: Test that sqlite3 trace callback is not called multiple times + when schema is changing. Indirectly fixed by switching to use + sqlite3_prepare_v2() in bpo-9303. Patch by Aviv Palivoda. + +- bpo-30017: Allowed calling the close() method of the zip entry writer + object multiple times. Writing to a closed writer now always produces a + ValueError. + +- bpo-29998: Pickling and copying ImportError now preserves name and path + attributes. + +- bpo-29995: re.escape() now escapes only regex special characters. + +- bpo-29962: Add math.remainder operation, implementing remainder as + specified in IEEE 754. + +- bpo-29649: Improve struct.pack_into() exception messages for problems with + the buffer size and offset. Patch by Andrew Nester. + +- bpo-29654: Support If-Modified-Since HTTP header (browser cache). Patch + by Pierre Quentel. + +- bpo-29931: Fixed comparison check for ipaddress.ip_interface objects. + Patch by Sanjay Sundaresan. + +- bpo-29953: Fixed memory leaks in the replace() method of datetime and time + objects when pass out of bound fold argument. + +- bpo-29942: Fix a crash in itertools.chain.from_iterable when encountering + long runs of empty iterables. + +- bpo-10030: Sped up reading encrypted ZIP files by 2 times. + +- bpo-29204: Element.getiterator() and the html parameter of XMLParser() + were deprecated only in the documentation (since Python 3.2 and 3.4 + correspondintly). Now using them emits a deprecation warning. + +- bpo-27863: Fixed multiple crashes in ElementTree caused by race conditions + and wrong types. + +- bpo-25996: Added support of file descriptors in os.scandir() on Unix. + os.fwalk() is sped up by 2 times by using os.scandir(). + +- bpo-28699: Fixed a bug in pools in multiprocessing.pool that raising an + exception at the very first of an iterable may swallow the exception or + make the program hang. Patch by Davin Potts and Xiang Zhang. + +- bpo-23890: unittest.TestCase.assertRaises() now manually breaks a + reference cycle to not keep objects alive longer than expected. + +- bpo-29901: The zipapp module now supports general path-like objects, not + just pathlib.Path. + +- bpo-25803: Avoid incorrect errors raised by Path.mkdir(exist_ok=True) when + the OS gives priority to errors such as EACCES over EEXIST. + +- bpo-29861: Release references to tasks, their arguments and their results + as soon as they are finished in multiprocessing.Pool. + +- bpo-19930: The mode argument of os.makedirs() no longer affects the file + permission bits of newly-created intermediate-level directories. + +- bpo-29884: faulthandler: Restore the old sigaltstack during teardown. + Patch by Christophe Zeitouny. + +- bpo-25455: Fixed crashes in repr of recursive buffered file-like objects. + +- bpo-29800: Fix crashes in partial.__repr__ if the keys of partial.keywords + are not strings. Patch by Michael Seifert. + +- bpo-8256: Fixed possible failing or crashing input() if attributes + "encoding" or "errors" of sys.stdin or sys.stdout are not set or are not + strings. + +- bpo-28692: Using non-integer value for selecting a plural form in gettext + is now deprecated. + +- bpo-26121: Use C library implementation for math functions erf() and + erfc(). + +- bpo-29619: os.stat() and os.DirEntry.inode() now convert inode (st_ino) + using unsigned integers. + +- bpo-28298: Fix a bug that prevented array 'Q', 'L' and 'I' from accepting + big intables (objects that have __int__) as elements. + +- bpo-29645: Speed up importing the webbrowser module. + webbrowser.register() is now thread-safe. + +- bpo-28231: The zipfile module now accepts path-like objects for external + paths. + +- bpo-26915: index() and count() methods of collections.abc.Sequence now + check identity before checking equality when do comparisons. + +- bpo-28682: Added support for bytes paths in os.fwalk(). + +- bpo-29728: Add new :data:`socket.TCP_NOTSENT_LOWAT` (Linux 3.12) constant. + Patch by Nathaniel J. Smith. + +- bpo-29623: Allow use of path-like object as a single argument in + ConfigParser.read(). Patch by David Ellis. + +- bpo-9303: Migrate sqlite3 module to _v2 API. Patch by Aviv Palivoda. + +- bpo-28963: Fix out of bound iteration in + asyncio.Future.remove_done_callback implemented in C. + +- bpo-29704: asyncio.subprocess.SubprocessStreamProtocol no longer closes + before all pipes are closed. + +- bpo-29271: Fix Task.current_task and Task.all_tasks implemented in C to + accept None argument as their pure Python implementation. + +- bpo-29703: Fix asyncio to support instantiation of new event loops in + child processes. + +- bpo-29615: SimpleXMLRPCDispatcher no longer chains KeyError (or any other + exception) to exception(s) raised in the dispatched methods. Patch by Petr + Motejlek. + +- bpo-7769: Method register_function() of + xmlrpc.server.SimpleXMLRPCDispatcher and its subclasses can now be used as + a decorator. + +- bpo-29376: Fix assertion error in threading._DummyThread.is_alive(). + +- bpo-28624: Add a test that checks that cwd parameter of Popen() accepts + PathLike objects. Patch by Sayan Chowdhury. + +- bpo-28518: Start a transaction implicitly before a DML statement. Patch by + Aviv Palivoda. + +- bpo-29742: get_extra_info() raises exception if get called on closed ssl + transport. Patch by Nikolay Kim. + +- bpo-16285: urllib.parse.quote is now based on RFC 3986 and hence includes + '~' in the set of characters that is not quoted by default. Patch by + Christian Theune and Ratnadeep Debnath. + +- bpo-29532: Altering a kwarg dictionary passed to functools.partial() no + longer affects a partial object after creation. + +- bpo-29110: Fix file object leak in aifc.open() when file is given as a + filesystem path and is not in valid AIFF format. Patch by Anthony Zhang. + +- bpo-22807: Add uuid.SafeUUID and uuid.UUID.is_safe to relay information + from the platform about whether generated UUIDs are generated with a + multiprocessing safe method. + +- bpo-29576: Improve some deprecations in importlib. Some deprecated methods + now emit DeprecationWarnings and have better descriptive messages. + +- bpo-29534: Fixed different behaviour of Decimal.from_float() for _decimal + and _pydecimal. Thanks Andrew Nester. + +- bpo-10379: locale.format_string now supports the 'monetary' keyword + argument, and locale.format is deprecated. + +- bpo-29851: importlib.reload() now raises ModuleNotFoundError if the module + lacks a spec. + +- bpo-28556: Various updates to typing module: typing.Counter, + typing.ChainMap, improved ABC caching, etc. Original PRs by Jelle + Zijlstra, Ivan Levkivskyi, Manuel Krebber, and Łukasz Langa. + +- bpo-29100: Fix datetime.fromtimestamp() regression introduced in Python + 3.6.0: check minimum and maximum years. + +- bpo-29416: Prevent infinite loop in pathlib.Path.mkdir + +- bpo-29444: Fixed out-of-bounds buffer access in the group() method of the + match object. Based on patch by WGH. + +- bpo-29377: Add WrapperDescriptorType, MethodWrapperType, and + MethodDescriptorType built-in types to types module. Original patch by + Manuel Krebber. + +- bpo-29218: Unused install_misc command is now removed. It has been + documented as unused since 2000. Patch by Eric N. Vander Weele. + +- bpo-29368: The extend() method is now called instead of the append() + method when unpickle collections.deque and other list-like objects. This + can speed up unpickling to 2 times. + +- bpo-29338: The help of a builtin or extension class now includes the + constructor signature if __text_signature__ is provided for the class. + +- bpo-29335: Fix subprocess.Popen.wait() when the child process has exited + to a stopped instead of terminated state (ex: when under ptrace). + +- bpo-29290: Fix a regression in argparse that help messages would wrap at + non-breaking spaces. + +- bpo-28735: Fixed the comparison of mock.MagickMock with mock.ANY. + +- bpo-29197: Removed deprecated function ntpath.splitunc(). + +- bpo-29210: Removed support of deprecated argument "exclude" in + tarfile.TarFile.add(). + +- bpo-29219: Fixed infinite recursion in the repr of uninitialized + ctypes.CDLL instances. + +- bpo-29192: Removed deprecated features in the http.cookies module. + +- bpo-29193: A format string argument for string.Formatter.format() is now + positional-only. + +- bpo-29195: Removed support of deprecated undocumented keyword arguments in + methods of regular expression objects. + +- bpo-28969: Fixed race condition in C implementation of + functools.lru_cache. KeyError could be raised when cached function with + full cache was simultaneously called from different threads with the same + uncached arguments. + +- bpo-20804: The unittest.mock.sentinel attributes now preserve their + identity when they are copied or pickled. + +- bpo-29142: In urllib.request, suffixes in no_proxy environment variable + with leading dots could match related hostnames again (e.g. .b.c matches + a.b.c). Patch by Milan Oberkirch. + +- bpo-28961: Fix unittest.mock._Call helper: don't ignore the name parameter + anymore. Patch written by Jiajun Huang. + +- bpo-15812: inspect.getframeinfo() now correctly shows the first line of a + context. Patch by Sam Breese. + +- bpo-28985: Update authorizer constants in sqlite3 module. Patch by + Dingyuan Wang. + +- bpo-29079: Prevent infinite loop in pathlib.resolve() on Windows + +- bpo-13051: Fixed recursion errors in large or resized + curses.textpad.Textbox. Based on patch by Tycho Andersen. + +- bpo-9770: curses.ascii predicates now work correctly with negative + integers. + +- bpo-28427: old keys should not remove new values from WeakValueDictionary + when collecting from another thread. + +- bpo-28923: Remove editor artifacts from Tix.py. + +- bpo-28871: Fixed a crash when deallocate deep ElementTree. + +- bpo-19542: Fix bugs in WeakValueDictionary.setdefault() and + WeakValueDictionary.pop() when a GC collection happens in another thread. + +- bpo-20191: Fixed a crash in resource.prlimit() when passing a sequence + that doesn't own its elements as limits. + +- bpo-16255: subprocess.Popen uses /system/bin/sh on Android as the shell, + instead of /bin/sh. + +- bpo-28779: multiprocessing.set_forkserver_preload() would crash the + forkserver process if a preloaded module instantiated some multiprocessing + objects such as locks. + +- bpo-26937: The chown() method of the tarfile.TarFile class does not fail + now when the grp module cannot be imported, as for example on Android + platforms. + +- bpo-28847: dbm.dumb now supports reading read-only files and no longer + writes the index file when it is not changed. A deprecation warning is + now emitted if the index file is missed and recreated in the 'r' and 'w' + modes (will be an error in future Python releases). + +- bpo-27030: Unknown escapes consisting of ``'\'`` and an ASCII letter in + re.sub() replacement templates regular expressions now are errors. + +- bpo-28835: Fix a regression introduced in warnings.catch_warnings(): call + warnings.showwarning() if it was overridden inside the context manager. + +- bpo-27172: To assist with upgrades from 2.7, the previously documented + deprecation of ``inspect.getfullargspec()`` has been reversed. This + decision may be revisited again after the Python 2.7 branch is no longer + officially supported. + +- bpo-28740: Add sys.getandroidapilevel(): return the build time API version + of Android as an integer. Function only available on Android. + +- bpo-26273: Add new :data:`socket.TCP_CONGESTION` (Linux 2.6.13) and + :data:`socket.TCP_USER_TIMEOUT` (Linux 2.6.37) constants. Patch written by + Omar Sandoval. + +- bpo-28752: Restored the __reduce__() methods of datetime objects. + +- bpo-28727: Regular expression patterns, _sre.SRE_Pattern objects created + by re.compile(), become comparable (only x==y and x!=y operators). This + change should fix the issue #18383: don't duplicate warning filters when + the warnings module is reloaded (thing usually only done in unit tests). + +- bpo-20572: Remove the subprocess.Popen.wait endtime parameter. It was + deprecated in 3.4 and undocumented prior to that. + +- bpo-25659: In ctypes, prevent a crash calling the from_buffer() and + from_buffer_copy() methods on abstract classes like Array. + +- bpo-28548: In the "http.server" module, parse the protocol version if + possible, to avoid using HTTP 0.9 in some error responses. + +- bpo-19717: Makes Path.resolve() succeed on paths that do not exist. Patch + by Vajrasky Kok + +- bpo-28563: Fixed possible DoS and arbitrary code execution when handle + plural form selections in the gettext module. The expression parser now + supports exact syntax supported by GNU gettext. + +- bpo-28387: Fixed possible crash in _io.TextIOWrapper deallocator when the + garbage collector is invoked in other thread. Based on patch by Sebastian + Cufre. + +- bpo-27517: LZMA compressor and decompressor no longer raise exceptions if + given empty data twice. Patch by Benjamin Fogle. + +- bpo-28549: Fixed segfault in curses's addch() with ncurses6. + +- bpo-28449: tarfile.open() with mode "r" or "r:" now tries to open a tar + file with compression before trying to open it without compression. + Otherwise it had 50% chance failed with ignore_zeros=True. + +- bpo-23262: The webbrowser module now supports Firefox 36+ and derived + browsers. Based on patch by Oleg Broytman. + +- bpo-24241: The webbrowser in an X environment now prefers using the + default browser directly. Also, the webbrowser register() function now has + a documented 'preferred' argument, to specify browsers to be returned by + get() with no arguments. Patch by David Steele + +- bpo-27939: Fixed bugs in tkinter.ttk.LabeledScale and tkinter.Scale caused + by representing the scale as float value internally in Tk. tkinter.IntVar + now works if float value is set to underlying Tk variable. + +- bpo-28255: calendar.TextCalendar.prweek() no longer prints a space after a + weeks's calendar. calendar.TextCalendar.pryear() no longer prints + redundant newline after a year's calendar. Based on patch by Xiang Zhang. + +- bpo-28255: calendar.TextCalendar.prmonth() no longer prints a space at the + start of new line after printing a month's calendar. Patch by Xiang + Zhang. + +- bpo-20491: The textwrap.TextWrapper class now honors non-breaking spaces. + Based on patch by Kaarle Ritvanen. + +- bpo-28353: os.fwalk() no longer fails on broken links. + +- bpo-28430: Fix iterator of C implemented asyncio.Future doesn't accept + non-None value is passed to it.send(val). + +- bpo-27025: Generated names for Tkinter widgets now start by the "!" prefix + for readability. + +- bpo-25464: Fixed HList.header_exists() in tkinter.tix module by addin a + workaround to Tix library bug. + +- bpo-28488: shutil.make_archive() no longer adds entry "./" to ZIP archive. + +- bpo-25953: re.sub() now raises an error for invalid numerical group + reference in replacement template even if the pattern is not found in the + string. Error message for invalid group reference now includes the group + index and the position of the reference. Based on patch by SilentGhost. + +- bpo-28469: timeit now uses the sequence 1, 2, 5, 10, 20, 50,... instead of + 1, 10, 100,... for autoranging. + +- bpo-28115: Command-line interface of the zipfile module now uses argparse. + Added support of long options. + +- bpo-18219: Optimize csv.DictWriter for large number of columns. Patch by + Mariatta Wijaya. + +- bpo-28448: Fix C implemented asyncio.Future didn't work on Windows. + +- bpo-23214: In the "io" module, the argument to BufferedReader and + BytesIO's read1() methods is now optional and can be -1, matching the + BufferedIOBase specification. + +- bpo-28480: Fix error building socket module when multithreading is + disabled. + +- bpo-28240: timeit: remove ``-c/--clock`` and ``-t/--time`` command line + options which were deprecated since Python 3.3. + +- bpo-28240: timeit now repeats the benchmarks 5 times instead of only 3 to + make benchmarks more reliable. + +- bpo-28240: timeit autorange now uses a single loop iteration if the + benchmark takes less than 10 seconds, instead of 10 iterations. "python3 + -m timeit -s 'import time' 'time.sleep(1)'" now takes 4 seconds instead of + 40 seconds. + +- Distutils.sdist now looks for README and setup.py files with case + sensitivity. This behavior matches that found in Setuptools 6.0 and later. + See `setuptools 100 <https://github.com/pypa/setuptools/issues/100>`_ for + rationale. + +- bpo-24452: Make webbrowser support Chrome on Mac OS X. Patch by Ned + Batchelder. + +- bpo-20766: Fix references leaked by pdb in the handling of SIGINT + handlers. + +- bpo-27998: Fixed bytes path support in os.scandir() on Windows. Patch by + Eryk Sun. + +- bpo-28317: The disassembler now decodes FORMAT_VALUE argument. + +- bpo-28380: unittest.mock Mock autospec functions now properly support + assert_called, assert_not_called, and assert_called_once. + +- bpo-28229: lzma module now supports pathlib. + +- bpo-28321: Fixed writing non-BMP characters with binary format in + plistlib. + +- bpo-28225: bz2 module now supports pathlib. Initial patch by Ethan + Furman. + +- bpo-28227: gzip now supports pathlib. Patch by Ethan Furman. + +- bpo-28332: Deprecated silent truncations in socket.htons and socket.ntohs. + Original patch by Oren Milman. + +- bpo-27358: Optimized merging var-keyword arguments and improved error + message when passing a non-mapping as a var-keyword argument. + +- bpo-28257: Improved error message when passing a non-iterable as a + var-positional argument. Added opcode BUILD_TUPLE_UNPACK_WITH_CALL. + +- bpo-28322: Fixed possible crashes when unpickle itertools objects from + incorrect pickle data. Based on patch by John Leitch. + +- bpo-28228: imghdr now supports pathlib. + +- bpo-28226: compileall now supports pathlib. + +- bpo-28314: Fix function declaration (C flags) for the getiterator() method + of xml.etree.ElementTree.Element. + +- bpo-28148: Stop using localtime() and gmtime() in the time module. + Introduced platform independent _PyTime_localtime API that is similar to + POSIX localtime_r, but available on all platforms. Patch by Ed Schouten. + +- bpo-28253: Fixed calendar functions for extreme months: 0001-01 and + 9999-12. Methods itermonthdays() and itermonthdays2() are reimplemented so + that they don't call itermonthdates() which can cause datetime.date + under/overflow. + +- bpo-28275: Fixed possible use after free in the decompress() methods of + the LZMADecompressor and BZ2Decompressor classes. Original patch by John + Leitch. + +- bpo-27897: Fixed possible crash in sqlite3.Connection.create_collation() + if pass invalid string-like object as a name. Patch by Xiang Zhang. + +- bpo-18844: random.choices() now has k as a keyword-only argument to + improve the readability of common cases and come into line with the + signature used in other languages. + +- bpo-18893: Fix invalid exception handling in Lib/ctypes/macholib/dyld.py. + Patch by Madison May. + +- bpo-27611: Fixed support of default root window in the tkinter.tix module. + Added the master parameter in the DisplayStyle constructor. + +- bpo-27348: In the traceback module, restore the formatting of exception + messages like "Exception: None". This fixes a regression introduced in + 3.5a2. + +- bpo-25651: Allow falsy values to be used for msg parameter of subTest(). + +- bpo-27778: Fix a memory leak in os.getrandom() when the getrandom() is + interrupted by a signal and a signal handler raises a Python exception. + +- bpo-28200: Fix memory leak on Windows in the os module (fix + path_converter() function). + +- bpo-25400: RobotFileParser now correctly returns default values for + crawl_delay and request_rate. Initial patch by Peter Wirtz. + +- bpo-27932: Prevent memory leak in win32_ver(). + +- Fix UnboundLocalError in socket._sendfile_use_sendfile. + +- bpo-28075: Check for ERROR_ACCESS_DENIED in Windows implementation of + os.stat(). Patch by Eryk Sun. + +- bpo-22493: Warning message emitted by using inline flags in the middle of + regular expression now contains a (truncated) regex pattern. Patch by Tim + Graham. + +- bpo-25270: Prevent codecs.escape_encode() from raising SystemError when an + empty bytestring is passed. + +- bpo-28181: Get antigravity over HTTPS. Patch by Kaartic Sivaraam. + +- bpo-25895: Enable WebSocket URL schemes in urllib.parse.urljoin. Patch by + Gergely Imreh and Markus Holtermann. + +- bpo-28114: Fix a crash in parse_envlist() when env contains byte strings. + Patch by Eryk Sun. + +- bpo-27599: Fixed buffer overrun in binascii.b2a_qp() and + binascii.a2b_qp(). + +- bpo-27906: Fix socket accept exhaustion during high TCP traffic. Patch by + Kevin Conway. + +- bpo-28174: Handle when SO_REUSEPORT isn't properly supported. Patch by + Seth Michael Larson. + +- bpo-26654: Inspect functools.partial in asyncio.Handle.__repr__. Patch by + iceboy. + +- bpo-26909: Fix slow pipes IO in asyncio. Patch by INADA Naoki. + +- bpo-28176: Fix callbacks race in asyncio.SelectorLoop.sock_connect. + +- bpo-27759: Fix selectors incorrectly retain invalid file descriptors. + Patch by Mark Williams. + +- bpo-28325: Remove vestigial MacOS 9 macurl2path module and its tests. + +- bpo-28368: Refuse monitoring processes if the child watcher has no loop + attached. Patch by Vincent Michel. + +- bpo-28369: Raise RuntimeError when transport's FD is used with add_reader, + add_writer, etc. + +- bpo-28370: Speedup asyncio.StreamReader.readexactly. Patch by Коренберг + Марк. + +- bpo-28371: Deprecate passing asyncio.Handles to run_in_executor. + +- bpo-28372: Fix asyncio to support formatting of non-python coroutines. + +- bpo-28399: Remove UNIX socket from FS before binding. Patch by Коренберг + Марк. + +- bpo-27972: Prohibit Tasks to await on themselves. + +- bpo-24142: Reading a corrupt config file left configparser in an invalid + state. Original patch by Florian Höch. + +- bpo-29581: ABCMeta.__new__ now accepts ``**kwargs``, allowing abstract + base classes to use keyword parameters in __init_subclass__. Patch by Nate + Soares. + +- bpo-25532: inspect.unwrap() will now only try to unwrap an object + sys.getrecursionlimit() times, to protect against objects which create a + new object on every attribute access. + +- bpo-30177: path.resolve(strict=False) no longer cuts the path after the + first element not present in the filesystem. Patch by Antoine Pietri. + +Documentation +------------- + +- bpo-31294: Fix incomplete code snippet in the ZeroMQSocketListener and + ZeroMQSocketHandler examples and adapt them to Python 3. + +- bpo-21649: Add RFC 7525 and Mozilla server side TLS links to SSL + documentation. + +- bpo-31128: Allow the pydoc server to bind to arbitrary hostnames. + +- bpo-30803: Clarify doc on truth value testing. Original patch by Peter + Thomassen. + +- bpo-30176: Add missing attribute related constants in curses + documentation. + +- bpo-30052: the link targets for :func:`bytes` and :func:`bytearray` are + now their respective type definitions, rather than the corresponding + builtin function entries. Use :ref:`bytes <func-bytes>` and + :ref:`bytearray <func-bytearray>` to reference the latter. In order to + ensure this and future cross-reference updates are applied automatically, + the daily documentation builds now disable the default output caching + features in Sphinx. + +- bpo-26985: Add missing info of code object in inspect documentation. + +- bpo-19824: Improve the documentation for, and links to, template strings + by emphasizing their utility for internationalization, and by clarifying + some usage constraints. (See also: bpo-20314, bpo-12518) + +- bpo-28929: Link the documentation to its source file on GitHub. + +- bpo-25008: Document smtpd.py as effectively deprecated and add a pointer + to aiosmtpd, a third-party asyncio-based replacement. + +- bpo-26355: Add canonical header link on each page to corresponding major + version of the documentation. Patch by Matthias Bussonnier. + +- bpo-29349: Fix Python 2 syntax in code for building the documentation. + +- bpo-23722: The data model reference and the porting section in the 3.6 + What's New guide now cover the additional ``__classcell__`` handling + needed for custom metaclasses to fully support :pep:`487` and + zero-argument ``super()``. + +- bpo-28513: Documented command-line interface of zipfile. + +Tests +----- + +- bpo-29639: test.support.HOST is now "localhost", a new HOSTv4 constant has + been added for your ``127.0.0.1`` needs, similar to the existing HOSTv6 + constant. + +- bpo-31320: Silence traceback in test_ssl + +- bpo-31346: Prefer PROTOCOL_TLS_CLIENT and PROTOCOL_TLS_SERVER protocols + for SSLContext. + +- bpo-25674: Remove sha256.tbs-internet.com ssl test + +- bpo-30715: Address ALPN callback changes for OpenSSL 1.1.0f. The latest + version behaves like OpenSSL 1.0.2 and no longer aborts handshake. + +- bpo-30822: regrtest: Exclude tzdata from regrtest --all. When running the + test suite using --use=all / -u all, exclude tzdata since it makes + test_datetime too slow (15-20 min on some buildbots) which then times out + on some buildbots. Fix also regrtest command line parser to allow passing + -u extralargefile to run test_zipfile64. + +- bpo-30695: Add the `set_nomemory(start, stop)` and `remove_mem_hooks()` + functions to the _testcapi module. + +- bpo-30357: test_thread: setUp() now uses support.threading_setup() and + support.threading_cleanup() to wait until threads complete to avoid random + side effects on following tests. Initial patch written by Grzegorz + Grzywacz. + +- bpo-30197: Enhanced functions swap_attr() and swap_item() in the + test.support module. They now work when delete replaced attribute or item + inside the with statement. The old value of the attribute or item (or + None if it doesn't exist) now will be assigned to the target of the "as" + clause, if there is one. + +- bpo-24932: Use proper command line parsing in _testembed + +- bpo-28950: Disallow -j0 to be combined with -T/-l in regrtest command line + arguments. + +- bpo-28683: Fix the tests that bind() a unix socket and raise + PermissionError on Android for a non-root user. + +- bpo-26936: Fix the test_socket failures on Android - getservbyname(), + getservbyport() and getaddrinfo() are broken on some Android API levels. + +- bpo-28666: Now test.support.rmtree is able to remove unwritable or + unreadable directories. + +- bpo-23839: Various caches now are cleared before running every test file. + +- bpo-26944: Fix test_posix for Android where 'id -G' is entirely wrong or + missing the effective gid. + +- bpo-28409: regrtest: fix the parser of command line arguments. + +- bpo-28217: Adds _testconsole module to test console input. + +- bpo-26939: Add the support.setswitchinterval() function to fix + test_functools hanging on the Android armv7 qemu emulator. + +Build +----- + +- bpo-31354: Allow --with-lto to be used on all builds, not just `make + profile-opt`. + +- bpo-31370: Remove support for building --without-threads. This option is + not really useful anymore in the 21st century. Removing lots of + conditional paths allows us to simplify the code base, including in + difficult to maintain low-level internal code. + +- bpo-31341: Per :pep:`11`, support for the IRIX operating system was + removed. + +- bpo-30854: Fix compile error when compiling --without-threads. Patch by + Masayuki Yamamoto. + +- bpo-30687: Locate msbuild.exe on Windows when building rather than + vcvarsall.bat + +- bpo-20210: Support the *disabled* marker in Setup files. Extension modules + listed after this marker are not built at all, neither by the Makefile nor + by setup.py. + +- bpo-29941: Add ``--with-assertions`` configure flag to explicitly enable C + ``assert()`` checks. Defaults to off. ``--with-pydebug`` implies + ``--with-assertions``. + +- bpo-28787: Fix out-of-tree builds of Python when configured with + ``--with--dtrace``. + +- bpo-29243: Prevent unnecessary rebuilding of Python during ``make test``, + ``make install`` and some other make targets when configured with + ``--enable-optimizations``. + +- bpo-23404: Don't regenerate generated files based on file modification + time anymore: the action is now explicit. Replace ``make touch`` with + ``make regen-all``. + +- bpo-29643: Fix ``--enable-optimization`` didn't work. + +- bpo-27593: sys.version and the platform module python_build(), + python_branch(), and python_revision() functions now use git information + rather than hg when building from a repo. + +- bpo-29572: Update Windows build and OS X installers to use OpenSSL 1.0.2k. + +- bpo-27659: Prohibit implicit C function declarations: use + ``-Werror=implicit-function-declaration`` when possible (GCC and Clang, + but it depends on the compiler version). Patch written by Chi Hsuan Yen. + +- bpo-29384: Remove old Be OS helper scripts. + +- bpo-26851: Set Android compilation and link flags. + +- bpo-28768: Fix implicit declaration of function _setmode. Patch by + Masayuki Yamamoto + +- bpo-29080: Removes hard dependency on hg.exe from PCBuild/build.bat + +- bpo-23903: Added missed names to PC/python3.def. + +- bpo-28762: lockf() is available on Android API level 24, but the F_LOCK + macro is not defined in android-ndk-r13. + +- bpo-28538: Fix the compilation error that occurs because if_nameindex() is + available on Android API level 24, but the if_nameindex structure is not + defined. + +- bpo-20211: Do not add the directory for installing C header files and the + directory for installing object code libraries to the cross compilation + search paths. Original patch by Thomas Petazzoni. + +- bpo-28849: Do not define sys.implementation._multiarch on Android. + +- bpo-10656: Fix out-of-tree building on AIX. Patch by Tristan Carel and + Michael Haubenwallner. + +- bpo-26359: Rename --with-optimiations to --enable-optimizations. + +- bpo-28444: Fix missing extensions modules when cross compiling. + +- bpo-28208: Update Windows build and OS X installers to use SQLite 3.14.2. + +- bpo-28248: Update Windows build and OS X installers to use OpenSSL 1.0.2j. + +- bpo-21124: Fix building the _struct module on Cygwin by passing ``NULL`` + instead of ``&PyType_Type`` to PyVarObject_HEAD_INIT. Patch by Masayuki + Yamamoto. + +- bpo-13756: Fix building extensions modules on Cygwin. Patch by Roumen + Petrov, based on original patch by Jason Tishler. + +- bpo-21085: Add configure check for siginfo_t.si_band, which Cygwin does + not provide. Patch by Masayuki Yamamoto with review and rebase by Erik + Bray. + +- bpo-28258: Fixed build with Estonian locale (python-config and distclean + targets in Makefile). Patch by Arfrever Frehtes Taifersar Arahesis. + +- bpo-26661: setup.py now detects system libffi with multiarch wrapper. + +- bpo-27979: A full copy of libffi is no longer bundled for use when + building _ctypes on non-OSX UNIX platforms. An installed copy of libffi + is now required when building _ctypes on such platforms. + +- bpo-15819: Remove redundant include search directory option for building + outside the source tree. + +- bpo-28676: Prevent missing 'getentropy' declaration warning on macOS. + Patch by Gareth Rees. + +Windows +------- + +- bpo-31392: Update Windows build to use OpenSSL 1.1.0f + +- bpo-30389: Adds detection of Visual Studio 2017 to distutils on Windows. + +- bpo-31358: zlib is no longer bundled in the CPython source, instead it is + downloaded on demand just like bz2, lzma, OpenSSL, Tcl/Tk, and SQLite. + +- bpo-31340: Change to building with MSVC v141 (included with Visual Studio + 2017) + +- bpo-30581: os.cpu_count() now returns the correct number of processors on + Windows when the number of logical processors is greater than 64. + +- bpo-30916: Pre-build OpenSSL, Tcl and Tk and include the binaries in the + build. + +- bpo-30731: Add a missing xmlns to python.manifest so that it matches the + schema. + +- bpo-30291: Allow requiring 64-bit interpreters from py.exe using -64 + suffix. Contributed by Steve (Gadget) Barnes. + +- bpo-30362: Adds list options (-0, -0p) to py.exe launcher. Contributed by + Steve Barnes. + +- bpo-23451: Fix socket deprecation warnings in socketmodule.c. Patch by + Segev Finer. + +- bpo-30450: The build process on Windows no longer depends on Subversion, + instead pulling external code from GitHub via a Python script. If Python + 3.6 is not found on the system (via ``py -3.6``), NuGet is used to + download a copy of 32-bit Python. + +- bpo-29579: Removes readme.txt from the installer. + +- bpo-25778: winreg does not truncate string correctly (Patch by Eryk Sun) + +- bpo-28896: Deprecate WindowsRegistryFinder and disable it by default + +- bpo-28522: Fixes mishandled buffer reallocation in getpathp.c + +- bpo-28402: Adds signed catalog files for stdlib on Windows. + +- bpo-28333: Enables Unicode for ps1/ps2 and input() prompts. (Patch by Eryk + Sun) + +- bpo-28251: Improvements to help manuals on Windows. + +- bpo-28110: launcher.msi has different product codes between 32-bit and + 64-bit + +- bpo-28161: Opening CON for write access fails + +- bpo-28162: WindowsConsoleIO readall() fails if first line starts with + Ctrl+Z + +- bpo-28163: WindowsConsoleIO fileno() passes wrong flags to _open_osfhandle + +- bpo-28164: _PyIO_get_console_type fails for various paths + +- bpo-28137: Renames Windows path file to ._pth + +- bpo-28138: Windows ._pth file should allow import site + +IDLE +---- + +- bpo-31493: IDLE code context -- fix code update and font update timers. + Canceling timers prevents a warning message when test_idle completes. + +- bpo-31488: IDLE - Update non-key options in former extension classes. When + applying configdialog changes, call .reload for each feature class. Change + ParenMatch so updated options affect existing instances attached to + existing editor windows. + +- bpo-31477: IDLE - Improve rstrip entry in doc. Strip trailing whitespace + strips more than blank spaces. Multiline string literals are not skipped. + +- bpo-31480: IDLE - make tests pass with zzdummy extension disabled by + default. + +- bpo-31421: Document how IDLE runs tkinter programs. IDLE calls tcl/tk + update in the background in order to make live interaction and + experimentation with tkinter applications much easier. + +- bpo-31414: IDLE -- fix tk entry box tests by deleting first. Adding to an + int entry is not the same as deleting and inserting because int('') will + fail. + +- bpo-31051: Rearrange IDLE configdialog GenPage into Window, Editor, and + Help sections. + +- bpo-30617: IDLE - Add docstrings and tests for outwin subclass of editor. + Move some data and functions from the class to module level. Patch by + Cheryl Sabella. + +- bpo-31287: IDLE - Do not modify tkinter.message in test_configdialog. + +- bpo-27099: Convert IDLE's built-in 'extensions' to regular features. About + 10 IDLE features were implemented as supposedly optional extensions. Their + different behavior could be confusing or worse for users and not good for + maintenance. Hence the conversion. The main difference for users is that + user configurable key bindings for builtin features are now handled + uniformly. Now, editing a binding in a keyset only affects its value in + the keyset. All bindings are defined together in the system-specific + default keysets in config-extensions.def. All custom keysets are saved as + a whole in config-extension.cfg. All take effect as soon as one clicks + Apply or Ok. The affected events are '<<force-open-completions>>', + '<<expand-word>>', '<<force-open-calltip>>', '<<flash-paren>>', + '<<format-paragraph>>', '<<run-module>>', '<<check-module>>', and + '<<zoom-height>>'. Any (global) customizations made before 3.6.3 will not + affect their keyset-specific customization after 3.6.3. and vice versa. + Initial patch by Charles Wohlganger. + +- bpo-31206: IDLE: Factor HighPage(Frame) class from ConfigDialog. Patch by + Cheryl Sabella. + +- bpo-31001: Add tests for configdialog highlight tab. Patch by Cheryl + Sabella. + +- bpo-31205: IDLE: Factor KeysPage(Frame) class from ConfigDialog. The + slightly modified tests continue to pass. Patch by Cheryl Sabella. + +- bpo-31130: IDLE -- stop leaks in test_configdialog. Initial patch by + Victor Stinner. + +- bpo-31002: Add tests for configdialog keys tab. Patch by Cheryl Sabella. + +- bpo-19903: IDLE: Calltips use `inspect.signature` instead of + `inspect.getfullargspec`. This improves calltips for builtins converted to + use Argument Clinic. Patch by Louie Lu. + +- bpo-31083: IDLE - Add an outline of a TabPage class in configdialog. + Update existing classes to match outline. Initial patch by Cheryl Sabella. + +- bpo-31050: Factor GenPage(Frame) class from ConfigDialog. The slightly + modified tests continue to pass. Patch by Cheryl Sabella. + +- bpo-31004: IDLE - Factor FontPage(Frame) class from ConfigDialog. Slightly + modified tests continue to pass. Fix General tests. Patch mostly by Cheryl + Sabella. + +- bpo-30781: IDLE - Use ttk widgets in ConfigDialog. Patches by Terry Jan + Reedy and Cheryl Sabella. + +- bpo-31060: IDLE - Finish rearranging methods of ConfigDialog Grouping + methods pertaining to each tab and the buttons will aid writing tests and + improving the tabs and will enable splitting the groups into classes. + +- bpo-30853: IDLE -- Factor a VarTrace class out of ConfigDialog. Instance + tracers manages pairs consisting of a tk variable and a callback function. + When tracing is turned on, setting the variable calls the function. Test + coverage for the new class is 100%. + +- bpo-31003: IDLE: Add more tests for General tab. + +- bpo-30993: IDLE - Improve configdialog font page and tests. In + configdialog: Document causal pathways in create_font_tab docstring. + Simplify some attribute names. Move set_samples calls to var_changed_font + (idea from Cheryl Sabella). Move related functions to positions after the + create widgets function. In test_configdialog: Fix test_font_set so not + order dependent. Fix renamed test_indent_scale so it tests the widget. + Adjust tests for movement of set_samples call. Add tests for load + functions. Put all font tests in one class and tab indent tests in + another. Except for two lines, these tests completely cover the related + functions. + +- bpo-30981: IDLE -- Add more configdialog font page tests. + +- bpo-28523: IDLE: replace 'colour' with 'color' in configdialog. + +- bpo-30917: Add tests for idlelib.config.IdleConf. Increase coverage from + 46% to 96%. Patch by Louie Lu. + +- bpo-30934: Document coverage details for idlelib tests. Add section to + idlelib/idle-test/README.txt. Include check that branches are taken both + ways. Exclude IDLE-specific code that does not run during unit tests. + +- bpo-30913: IDLE: Document ConfigDialog tk Vars, methods, and widgets in + docstrings This will facilitate improving the dialog and splitting up the + class. Original patch by Cheryl Sabella. + +- bpo-30899: IDLE: Add tests for ConfigParser subclasses in config. Patch by + Louie Lu. + +- bpo-30881: IDLE: Add docstrings to browser.py. Patch by Cheryl Sabella. + +- bpo-30851: IDLE: Remove unused variables in configdialog. One is a + duplicate, one is set but cannot be altered by users. Patch by Cheryl + Sabella. + +- bpo-30870: IDLE: In Settings dialog, select font with Up, Down keys as + well as mouse. Initial patch by Louie Lu. + +- bpo-8231: IDLE: call config.IdleConf.GetUserCfgDir only once. + +- bpo-30779: IDLE: Factor ConfigChanges class from configdialog, put in + config; test. * In config, put dump test code in a function; run it and + unittest in 'if __name__ == '__main__'. * Add class config.ConfigChanges + based on changes_class_v4.py on bpo issue. * Add class + test_config.ChangesTest, partly using configdialog_tests_v1.py. * Revise + configdialog to use ConfigChanges; see tracker msg297804. * Revise + test_configdialog to match configdialog changes. * Remove configdialog + functions unused or moved to ConfigChanges. Cheryl Sabella contributed + parts of the patch. + +- bpo-30777: IDLE: configdialog - Add docstrings and fix comments. Patch by + Cheryl Sabella. + +- bpo-30495: IDLE: Improve textview with docstrings, PEP8 names, and more + tests. Patch by Cheryl Sabella. + +- bpo-30723: IDLE: Make several improvements to parenmatch. Add 'parens' + style to highlight both opener and closer. Make 'default' style, which is + not default, a synonym for 'opener'. Make time-delay work the same with + all styles. Add help for config dialog extensions tab, including help for + parenmatch. Add new tests. Original patch by Charles Wohlganger. + +- bpo-30674: IDLE: add docstrings to grep module. Patch by Cheryl Sabella + +- bpo-21519: IDLE's basic custom key entry dialog now detects duplicates + properly. Original patch by Saimadhav Heblikar. + +- bpo-29910: IDLE no longer deletes a character after commenting out a + region by a key shortcut. Add ``return 'break'`` for this and other + potential conflicts between IDLE and default key bindings. + +- bpo-30728: Review and change idlelib.configdialog names. Lowercase method + and attribute names. Replace 'colour' with 'color', expand overly cryptic + names, delete unneeded underscores. Replace ``import *`` with specific + imports. Patches by Cheryl Sabella. + +- bpo-6739: IDLE: Verify user-entered key sequences by trying to bind them + with tk. Add tests for all 3 validation functions. Original patch by G + Polo. Tests added by Cheryl Sabella. + +- bpo-15786: Fix several problems with IDLE's autocompletion box. The + following should now work: clicking on selection box items; using the + scrollbar; selecting an item by hitting Return. Hangs on MacOSX should no + longer happen. Patch by Louie Lu. + +- bpo-25514: Add doc subsubsection about IDLE failure to start. Popup + no-connection message directs users to this section. + +- bpo-30642: Fix reference leaks in IDLE tests. Patches by Louie Lu and + Terry Jan Reedy. + +- bpo-30495: Add docstrings for textview.py and use PEP8 names. Patches by + Cheryl Sabella and Terry Jan Reedy. + +- bpo-30290: Help-about: use pep8 names and add tests. Increase coverage to + 100%. Patches by Louie Lu, Cheryl Sabella, and Terry Jan Reedy. + +- bpo-30303: Add _utest option to textview; add new tests. Increase coverage + to 100%. Patches by Louie Lu and Terry Jan Reedy. + +- bpo-29071: IDLE colors f-string prefixes (but not invalid ur prefixes). + +- bpo-28572: Add 10% to coverage of IDLE's test_configdialog. Update and + augment description of the configuration system. + +Tools/Demos +----------- + +- bpo-30983: gdb integration commands (py-bt, etc.) work on optimized shared + builds now, too. :pep:`523` introduced _PyEval_EvalFrameDefault which + inlines PyEval_EvalFrameEx on non-debug shared builds. This broke the + ability to use py-bt, py-up, and a few other Python-specific gdb + integrations. The problem is fixed by only looking for + _PyEval_EvalFrameDefault frames in python-gdb.py. Original patch by Bruno + "Polaco" Penteado. + +- bpo-29748: Added the slice index converter in Argument Clinic. + +- bpo-24037: Argument Clinic now uses the converter `bool(accept={int})` + rather than `int` for semantical booleans. This avoids repeating the + default value for Python and C and will help in converting to `bool` in + future. + +- bpo-29367: python-gdb.py now supports also ``method-wrapper`` + (``wrapperobject``) objects. + +- bpo-28023: Fix python-gdb.py didn't support new dict implementation. + +- bpo-15369: The pybench and pystone microbenchmark have been removed from + Tools. Please use the new Python benchmark suite + https://github.com/python/performance which is more reliable and includes + a portable version of pybench working on Python 2 and Python 3. + +- bpo-28102: The zipfile module CLI now prints usage to stderr. Patch by + Stephen J. Turnbull. + +C API +----- + +- bpo-31338: Added the ``Py_UNREACHABLE()`` macro for code paths which are + never expected to be reached. This and a few other useful macros are now + documented in the C API manual. + +- bpo-30832: Remove own implementation for thread-local storage. CPython has + provided the own implementation for thread-local storage (TLS) on + Python/thread.c, it's used in the case which a platform has not supplied + native TLS. However, currently all supported platforms (Windows and + pthreads) have provided native TLS and defined the Py_HAVE_NATIVE_TLS + macro with unconditional in any case. + +- bpo-30708: PyUnicode_AsWideCharString() now raises a ValueError if the + second argument is NULL and the wchar_t\* string contains null characters. + +- bpo-16500: Deprecate PyOS_AfterFork() and add PyOS_BeforeFork(), + PyOS_AfterFork_Parent() and PyOS_AfterFork_Child(). + +- bpo-6532: The type of results of PyThread_start_new_thread() and + PyThread_get_thread_ident(), and the id parameter of + PyThreadState_SetAsyncExc() changed from "long" to "unsigned long". + +- bpo-27867: Function PySlice_GetIndicesEx() is deprecated and replaced with + a macro if Py_LIMITED_API is not set or set to the value between + 0x03050400 and 0x03060000 (not including) or 0x03060100 or higher. Added + functions PySlice_Unpack() and PySlice_AdjustIndices(). + +- bpo-29083: Fixed the declaration of some public API functions. + PyArg_VaParse() and PyArg_VaParseTupleAndKeywords() were not available in + limited API. PyArg_ValidateKeywordArguments(), PyArg_UnpackTuple() and + Py_BuildValue() were not available in limited API of version < 3.3 when + PY_SSIZE_T_CLEAN is defined. + +- bpo-28769: The result of PyUnicode_AsUTF8AndSize() and PyUnicode_AsUTF8() + is now of type ``const char *`` rather of ``char *``. + +- bpo-29058: All stable API extensions added after Python 3.2 are now + available only when Py_LIMITED_API is set to the PY_VERSION_HEX value of + the minimum Python version supporting this API. + +- bpo-28822: The index parameters *start* and *end* of PyUnicode_FindChar() + are now adjusted to behave like ``str[start:end]``. + +- bpo-28808: PyUnicode_CompareWithASCIIString() now never raises exceptions. + +- bpo-28761: The fields name and doc of structures PyMemberDef, PyGetSetDef, + PyStructSequence_Field, PyStructSequence_Desc, and wrapperbase are now of + type ``const char *`` rather of ``char *``. + +- bpo-28748: Private variable _Py_PackageContext is now of type ``const char + *`` rather of ``char *``. + +- bpo-19569: Compiler warnings are now emitted if use most of deprecated + functions. + +- bpo-28426: Deprecated undocumented functions PyUnicode_AsEncodedObject(), + PyUnicode_AsDecodedObject(), PyUnicode_AsDecodedUnicode() and + PyUnicode_AsEncodedUnicode(). + + +What's New in Python 3.6.6 final? +================================= + +*Release date: 2018-06-27* + +There were no new changes in version 3.6.6. + + + +What's New in Python 3.6.6 release candidate 1? +=============================================== + +*Release date: 2018-06-11* + +Core and Builtins +----------------- + +- bpo-33786: Fix asynchronous generators to handle GeneratorExit in athrow() + correctly + +- bpo-30654: Fixed reset of the SIGINT handler to SIG_DFL on interpreter + shutdown even when there was a custom handler set previously. Patch by + Philipp Kerling. + +- bpo-33622: Fixed a leak when the garbage collector fails to add an object + with the ``__del__`` method or referenced by it into the + :data:`gc.garbage` list. :c:func:`PyGC_Collect` can now be called when an + exception is set and preserves it. + +- bpo-31849: Fix signed/unsigned comparison warning in pyhash.c. + +- bpo-33391: Fix a leak in set_symmetric_difference(). + +- bpo-28055: Fix unaligned accesses in siphash24(). Patch by Rolf Eike Beer. + +- bpo-33231: Fix potential memory leak in ``normalizestring()``. + +- bpo-29922: Improved error messages in 'async with' when ``__aenter__()`` + or ``__aexit__()`` return non-awaitable object. + +- bpo-33199: Fix ``ma_version_tag`` in dict implementation is uninitialized + when copying from key-sharing dict. + +- bpo-33041: Fixed jumping when the function contains an ``async for`` loop. + +- bpo-32282: Fix an unnecessary ifdef in the include of VersionHelpers.h in + socketmodule on Windows. + +- bpo-21983: Fix a crash in `ctypes.cast()` in case the type argument is a + ctypes structured data type. Patch by Eryk Sun and Oren Milman. + +Library +------- + +- bpo-30167: Prevent site.main() exception if PYTHONSTARTUP is set. Patch by + Steve Weber. + +- bpo-33812: Datetime instance d with non-None tzinfo, but with + d.tzinfo.utcoffset(d) returning None is now treated as naive by the + astimezone() method. + +- bpo-30805: Avoid race condition with debug logging + +- bpo-33767: The concatenation (``+``) and repetition (``*``) sequence + operations now raise :exc:`TypeError` instead of :exc:`SystemError` when + performed on :class:`mmap.mmap` objects. Patch by Zackery Spytz. + +- bpo-32684: Fix gather to propagate cancellation of itself even with + return_exceptions. + +- bpo-33674: Fix a race condition in SSLProtocol.connection_made() of + asyncio.sslproto: start immediately the handshake instead of using + call_soon(). Previously, data_received() could be called before the + handshake started, causing the handshake to hang or fail. + +- bpo-31647: Fixed bug where calling write_eof() on a + _SelectorSocketTransport after it's already closed raises AttributeError. + +- bpo-33672: Fix Task.__repr__ crash with Cython's bogus coroutines + +- bpo-33469: Fix RuntimeError after closing loop that used run_in_executor + +- bpo-11874: Use a better regex when breaking usage into wrappable parts. + Avoids bogus assertion errors from custom metavar strings. + +- bpo-30877: Fixed a bug in the Python implementation of the JSON decoder + that prevented the cache of parsed strings from clearing after finishing + the decoding. Based on patch by c-fos. + +- bpo-33548: tempfile._candidate_tempdir_list should consider common TEMP + locations + +- bpo-33542: Prevent ``uuid.get_node`` from using a DUID instead of a MAC on + Windows. Patch by Zvi Effron + +- bpo-26819: Fix race condition with `ReadTransport.resume_reading` in + Windows proactor event loop. + +- bpo-28556: Minor fixes in typing module: add annotations to + ``NamedTuple.__new__``, pass ``*args`` and ``**kwds`` in + ``Generic.__new__``. Original PRs by Paulius Šarka and Chad Dombrova. + +- bpo-20087: Updated alias mapping with glibc 2.27 supported locales. + +- bpo-33422: Fix trailing quotation marks getting deleted when looking up + byte/string literals on pydoc. Patch by Andrés Delfino. + +- bpo-33197: Update error message when constructing invalid + inspect.Parameters Patch by Dong-hee Na. + +- bpo-33383: Fixed crash in the get() method of the :mod:`dbm.ndbm` database + object when it is called with a single argument. + +- bpo-33329: Fix multiprocessing regression on newer glibcs + +- bpo-991266: Fix quoting of the ``Comment`` attribute of + :class:`http.cookies.SimpleCookie`. + +- bpo-33131: Upgrade bundled version of pip to 10.0.1. + +- bpo-33308: Fixed a crash in the :mod:`parser` module when converting an ST + object to a tree of tuples or lists with ``line_info=False`` and + ``col_info=True``. + +- bpo-33263: Fix FD leak in `_SelectorSocketTransport` Patch by Vlad + Starostin. + +- bpo-33256: Fix display of ``<module>`` call in the html produced by + ``cgitb.html()``. Patch by Stéphane Blondon. + +- bpo-33203: ``random.Random.choice()`` now raises ``IndexError`` for empty + sequences consistently even when called from subclasses without a + ``getrandbits()`` implementation. + +- bpo-33224: Update difflib.mdiff() for :pep:`479`. Convert an uncaught + StopIteration in a generator into a return-statement. + +- bpo-33209: End framing at the end of C implementation of + :func:`pickle.Pickler.dump`. + +- bpo-32861: The urllib.robotparser's ``__str__`` representation now + includes wildcard entries and the "Crawl-delay" and "Request-rate" fields. + Patch by Michael Lazar. + +- bpo-33096: Allow ttk.Treeview.insert to insert iid that has a false + boolean value. Note iid=0 and iid=False would be same. Patch by Garvit + Khatri. + +- bpo-33127: The ssl module now compiles with LibreSSL 2.7.1. + +- bpo-33021: Release the GIL during fstat() calls, avoiding hang of all + threads when calling mmap.mmap(), os.urandom(), and random.seed(). Patch + by Nir Soffer. + +- bpo-27683: Fix a regression in :mod:`ipaddress` that result of + :meth:`hosts` is empty when the network is constructed by a tuple + containing an integer mask and only 1 bit left for addresses. + +- bpo-32844: Fix wrong redirection of a low descriptor (0 or 1) to stderr in + subprocess if another low descriptor is closed. + +- bpo-31908: Fix output of cover files for ``trace`` module command-line + tool. Previously emitted cover files only when ``--missing`` option was + used. Patch by Michael Selik. + +- bpo-31457: If nested log adapters are used, the inner ``process()`` + methods are no longer omitted. + +- bpo-16865: Support arrays >=2GiB in :mod:`ctypes`. Patch by Segev Finer. + +- bpo-31238: pydoc: the stop() method of the private ServerThread class now + waits until DocServer.serve_until_quit() completes and then explicitly + sets its docserver attribute to None to break a reference cycle. + +Documentation +------------- + +- bpo-33503: Fix broken pypi link + +- bpo-33421: Add missing documentation for ``typing.AsyncContextManager``. + +- bpo-33378: Add Korean language switcher for https://docs.python.org/3/ + +- bpo-33276: Clarify that the ``__path__`` attribute on modules cannot be + just any value. + +- bpo-33201: Modernize documentation for writing C extension types. + +- bpo-33195: Deprecate ``Py_UNICODE`` usage in ``c-api/arg`` document. + ``Py_UNICODE`` related APIs are deprecated since Python 3.3, but it is + missed in the document. + +- bpo-33126: Document PyBuffer_ToContiguous(). + +- bpo-27212: Modify documentation for the :func:`islice` recipe to consume + initial values up to the start index. + +- bpo-28247: Update :mod:`zipapp` documentation to describe how to make + standalone applications. + +- bpo-18802: Documentation changes for ipaddress. Patch by Jon Foster and + Berker Peksag. + +- bpo-27428: Update documentation to clarify that ``WindowsRegistryFinder`` + implements ``MetaPathFinder``. (Patch by Himanshu Lakhara) + +- bpo-8243: Add a note about curses.addch and curses.addstr exception + behavior when writing outside a window, or pad. + +- bpo-31432: Clarify meaning of CERT_NONE, CERT_OPTIONAL, and CERT_REQUIRED + flags for ssl.SSLContext.verify_mode. + +Tests +----- + +- bpo-33655: Ignore test_posix_fallocate failures on BSD platforms that + might be due to running on ZFS. + +- bpo-19417: Add test_bdb.py. + +Build +----- + +- bpo-5755: Move ``-Wstrict-prototypes`` option to ``CFLAGS_NODIST`` from + ``OPT``. This option emitted annoying warnings when building extension + modules written in C++. + +- bpo-33614: Ensures module definition files for the stable ABI on Windows + are correctly regenerated. + +- bpo-33522: Enable CI builds on Visual Studio Team Services at + https://python.visualstudio.com/cpython + +- bpo-33012: Add ``-Wno-cast-function-type`` for gcc 8 for silencing + warnings about function casts like casting to PyCFunction in method + definition lists. + +- bpo-33394: Enable the verbose build for extension modules, when GNU make + is passed macros on the command line. + +Windows +------- + +- bpo-33184: Update Windows installer to OpenSSL 1.0.2o. + +macOS +----- + +- bpo-33184: Update macOS installer build to use OpenSSL 1.0.2o. + +IDLE +---- + +- bpo-33656: On Windows, add API call saying that tk scales for DPI. On + Windows 8.1+ or 10, with DPI compatibility properties of the Python binary + unchanged, and a monitor resolution greater than 96 DPI, this should make + text and lines sharper. It should otherwise have no effect. + +- bpo-33768: Clicking on a context line moves that line to the top of the + editor window. + +- bpo-33763: IDLE: Use read-only text widget for code context instead of + label widget. + +- bpo-33664: Scroll IDLE editor text by lines. Previously, the mouse wheel + and scrollbar slider moved text by a fixed number of pixels, resulting in + partial lines at the top of the editor box. The change also applies to + the shell and grep output windows, but not to read-only text views. + +- bpo-33679: Enable theme-specific color configuration for Code Context. Use + the Highlights tab to see the setting for built-in themes or add settings + to custom themes. + +- bpo-33642: Display up to maxlines non-blank lines for Code Context. If + there is no current context, show a single blank line. + +- bpo-33628: IDLE: Cleanup codecontext.py and its test. + +- bpo-33564: IDLE's code context now recognizes async as a block opener. + +- bpo-29706: IDLE now colors async and await as keywords in 3.6. They become + full keywords in 3.7. + +- bpo-21474: Update word/identifier definition from ascii to unicode. In + text and entry boxes, this affects selection by double-click, movement + left/right by control-left/right, and deletion left/right by + control-BACKSPACE/DEL. + +- bpo-33204: IDLE: consistently color invalid string prefixes. A 'u' string + prefix cannot be paired with either 'r' or 'f'. Consistently color as much + of the prefix, starting at the right, as is valid. Revise and extend + colorizer test. + +- bpo-32831: Add docstrings and tests for codecontext. + +Tools/Demos +----------- + +- bpo-33189: :program:`pygettext.py` now recognizes only literal strings as + docstrings and translatable strings, and rejects bytes literals and + f-string expressions. + +- bpo-31920: Fixed handling directories as arguments in the ``pygettext`` + script. Based on patch by Oleg Krasnikov. + +- bpo-29673: Fix pystackv and pystack gdbinit macros. + +- bpo-32885: Add an ``-n`` flag for ``Tools/scripts/pathfix.py`` to disable + automatic backup creation (files with ``~`` suffix). + +- bpo-31583: Fix 2to3 for using with --add-suffix option but without + --output-dir option for relative path to files in current directory. + +C API +----- + +- bpo-32374: Document that m_traverse for multi-phase initialized modules + can be called with m_state=NULL, and add a sanity check + + +What's New in Python 3.6.5 final? +================================= + +*Release date: 2018-03-28* + +Tests +----- + +- bpo-32872: Avoid regrtest compatibility issue with namespace packages. + +Build +----- + +- bpo-33163: Upgrade pip to 9.0.3 and setuptools to v39.0.1. + + +What's New in Python 3.6.5 release candidate 1? +=============================================== + +*Release date: 2018-03-13* + +Security +-------- + +- bpo-33001: Minimal fix to prevent buffer overrun in os.symlink on Windows + +- bpo-32981: Regexes in difflib and poplib were vulnerable to catastrophic + backtracking. These regexes formed potential DOS vectors (REDOS). They + have been refactored. This resolves CVE-2018-1060 and CVE-2018-1061. Patch + by Jamie Davis. + +Core and Builtins +----------------- + +- bpo-33026: Fixed jumping out of "with" block by setting f_lineno. + +- bpo-17288: Prevent jumps from 'return' and 'exception' trace events. + +- bpo-32889: Update Valgrind suppression list to account for the rename of + ``Py_ADDRESS_IN_RANG`` to ``address_in_range``. + +- bpo-32650: Pdb and other debuggers dependent on bdb.py will correctly step + over (next command) native coroutines. Patch by Pablo Galindo. + +- bpo-32685: Improve suggestion when the Python 2 form of print statement is + either present on the same line as the header of a compound statement or + else terminated by a semi-colon instead of a newline. Patch by Nitish + Chandra. + +- bpo-32583: Fix possible crashing in builtin Unicode decoders caused by + write out-of-bound errors when using customized decode error handlers. + +- bpo-26163: Improved frozenset() hash to create more distinct hash values + when faced with datasets containing many similar values. + +- bpo-27169: The ``__debug__`` constant is now optimized out at compile + time. This fixes also bpo-22091. + +- bpo-32329: ``sys.flags.hash_randomization`` is now properly set to 0 when + hash randomization is turned off by ``PYTHONHASHSEED=0``. + +- bpo-30416: The optimizer is now protected from spending much time doing + complex calculations and consuming much memory for creating large + constants in constant folding. + +- bpo-18533: ``repr()`` on a dict containing its own ``values()`` or + ``items()`` no longer raises ``RecursionError``; OrderedDict similarly. + Instead, use ``...``, as for other recursive structures. Patch by Ben + North. + +- bpo-32028: Leading whitespace is now correctly ignored when generating + suggestions for converting Py2 print statements to Py3 builtin print + function calls. Patch by Sanyam Khurana. + +- bpo-32137: The repr of deeply nested dict now raises a RecursionError + instead of crashing due to a stack overflow. + +Library +------- + +- bpo-33064: lib2to3 now properly supports trailing commas after ``*args`` + and ``**kwargs`` in function signatures. + +- bpo-31804: Avoid failing in multiprocessing.Process if the standard + streams are closed or None at exit. + +- bpo-33037: Skip sending/receiving data after SSL transport closing. + +- bpo-30353: Fix ctypes pass-by-value for structs on 64-bit Cygwin/MinGW. + +- bpo-33009: Fix inspect.signature() for single-parameter partialmethods. + +- bpo-32969: Expose several missing constants in zlib and fix corresponding + documentation. + +- bpo-32713: Fixed tarfile.itn handling of out-of-bounds float values. Patch + by Joffrey Fuhrer. + +- bpo-30622: The ssl module now detects missing NPN support in LibreSSL. + +- bpo-32922: dbm.open() now encodes filename with the filesystem encoding + rather than default encoding. + +- bpo-32859: In ``os.dup2``, don't check every call whether the ``dup3`` + syscall exists or not. + +- bpo-21060: Rewrite confusing message from setup.py upload from "No dist + file created in earlier command" to the more helpful "Must create and + upload files in one command". + +- bpo-32857: In :mod:`tkinter`, ``after_cancel(None)`` now raises a + :exc:`ValueError` instead of canceling the first scheduled function. + Patch by Cheryl Sabella. + +- bpo-32852: Make sure sys.argv remains as a list when running trace. + +- bpo-32841: Fixed `asyncio.Condition` issue which silently ignored + cancellation after notifying and cancelling a conditional lock. Patch by + Bar Harel. + +- bpo-31787: Fixed refleaks of ``__init__()`` methods in various modules. + (Contributed by Oren Milman) + +- bpo-30157: Fixed guessing quote and delimiter in csv.Sniffer.sniff() when + only the last field is quoted. Patch by Jake Davis. + +- bpo-32394: socket: Remove TCP_FASTOPEN, TCP_KEEPCNT flags on older version + Windows during run-time. + +- bpo-32777: Fix a rare but potential pre-exec child process deadlock in + subprocess on POSIX systems when marking file descriptors inheritable on + exec in the child process. This bug appears to have been introduced in + 3.4. + +- bpo-32647: The ctypes module used to depend on indirect linking for + dlopen. The shared extension is now explicitly linked against libdl on + platforms with dl. + +- bpo-32734: Fixed ``asyncio.Lock()`` safety issue which allowed acquiring + and locking the same lock multiple times, without it being free. Patch by + Bar Harel. + +- bpo-32727: Do not include name field in SMTP envelope from address. Patch + by Stéphane Wirtel + +- bpo-27931: Fix email address header parsing error when the username is an + empty quoted string. Patch by Xiang Zhang. + +- bpo-32304: distutils' upload command no longer corrupts tar files ending + with a CR byte, and no longer tries to convert CR to CRLF in any of the + upload text fields. + +- bpo-32502: uuid.uuid1 no longer raises an exception if a 64-bit hardware + address is encountered. + +- bpo-31848: Fix the error handling in Aifc_read.initfp() when the SSND + chunk is not found. Patch by Zackery Spytz. + +- bpo-32555: On FreeBSD and Solaris, os.strerror() now always decode the + byte string from the current locale encoding, rather than using + ASCII/surrogateescape in some cases. + +- bpo-32521: The nis module is now compatible with new libnsl and headers + location. + +- bpo-32473: Improve ABCMeta._dump_registry() output readability + +- bpo-32521: glibc has removed Sun RPC. Use replacement libtirpc headers and + library in nis module. + +- bpo-32228: Ensure that ``truncate()`` preserves the file position (as + reported by ``tell()``) after writes longer than the buffer size. + +- bpo-26133: Don't unsubscribe signals in asyncio UNIX event loop on + interpreter shutdown. + +- bpo-32185: The SSL module no longer sends IP addresses in SNI TLS + extension on platforms with OpenSSL 1.0.2+ or inet_pton. + +- bpo-32323: :func:`urllib.parse.urlsplit()` does not convert zone-id + (scope) to lower case for scoped IPv6 addresses in hostnames now. + +- bpo-32302: Fix bdist_wininst of distutils for CRT v142: it binary + compatible with CRT v140. + +- bpo-32255: A single empty field is now always quoted when written into a + CSV file. This allows to distinguish an empty row from a row consisting of + a single empty field. Patch by Licht Takeuchi. + +- bpo-32277: Raise ``NotImplementedError`` instead of ``SystemError`` on + platforms where ``chmod(..., follow_symlinks=False)`` is not supported. + Patch by Anthony Sottile. + +- bpo-32199: The getnode() ip getter now uses 'ip link' instead of 'ip link + list'. + +- bpo-27456: Ensure TCP_NODELAY is set on Linux. Tests by Victor Stinner. + +- bpo-31900: The :func:`locale.localeconv` function now sets temporarily the + ``LC_CTYPE`` locale to the ``LC_NUMERIC`` locale to decode + ``decimal_point`` and ``thousands_sep`` byte strings if they are non-ASCII + or longer than 1 byte, and the ``LC_NUMERIC`` locale is different than the + ``LC_CTYPE`` locale. This temporary change affects other threads. Same + change for the :meth:`str.format` method when formatting a number + (:class:`int`, :class:`float`, :class:`float` and subclasses) with the + ``n`` type (ex: ``'{:n}'.format(1234)``). + +- bpo-31802: Importing native path module (``posixpath``, ``ntpath``) now + works even if the ``os`` module still is not imported. + +Documentation +------------- + +- bpo-17232: Clarify docs for -O and -OO. Patch by Terry Reedy. + +- bpo-32800: Update link to w3c doc for xml default namespaces. + +- bpo-8722: Document :meth:`__getattr__` behavior when property :meth:`get` + method raises :exc:`AttributeError`. + +- bpo-32614: Modify RE examples in documentation to use raw strings to + prevent :exc:`DeprecationWarning` and add text to REGEX HOWTO to highlight + the deprecation. + +- bpo-31972: Improve docstrings for `pathlib.PurePath` subclasses. + +- bpo-17799: Explain real behaviour of sys.settrace and sys.setprofile and + their C-API counterparts regarding which type of events are received in + each function. Patch by Pablo Galindo Salgado. + +Tests +----- + +- bpo-32517: Fix failing ``test_asyncio`` on macOS 10.12.2+ due to transport + of ``KqueueSelector`` loop was not being closed. + +- bpo-32721: Fix test_hashlib to not fail if the _md5 module is not built. + +- bpo-32252: Fix faulthandler_suppress_crash_report() used to prevent core + dump files when testing crashes. getrlimit() returns zero on success. + +- bpo-31518: Debian Unstable has disabled TLS 1.0 and 1.1 for + SSLv23_METHOD(). Change TLS/SSL protocol of some tests to PROTOCOL_TLS or + PROTOCOL_TLSv1_2 to make them pass on Debian. + +Build +----- + +- bpo-32635: Fix segfault of the crypt module when libxcrypt is provided + instead of libcrypt at the system. + +Windows +------- + +- bpo-33016: Fix potential use of uninitialized memory in + nt._getfinalpathname + +- bpo-32903: Fix a memory leak in os.chdir() on Windows if the current + directory is set to a UNC path. + +- bpo-31966: Fixed WindowsConsoleIO.write() for writing empty data. + +- bpo-32409: Ensures activate.bat can handle Unicode contents. + +- bpo-32457: Improves handling of denormalized executable path when + launching Python. + +- bpo-32370: Use the correct encoding for ipconfig output in the uuid + module. Patch by Segev Finer. + +- bpo-29248: Fix :func:`os.readlink` on Windows, which was mistakenly + treating the ``PrintNameOffset`` field of the reparse data buffer as a + number of characters instead of bytes. Patch by Craig Holmquist and SSE4. + +- bpo-32588: Create standalone _distutils_findvs module. + +macOS +----- + +- bpo-32726: Provide an additional, more modern macOS installer variant that + supports macOS 10.9+ systems in 64-bit mode only. Upgrade the supplied + third-party libraries to OpenSSL 1.0.2n, XZ 5.2.3, and SQLite 3.22.0. The + 10.9+ installer now links with and supplies its own copy of Tcl/Tk 8.6.8. + +IDLE +---- + +- bpo-32984: Set ``__file__`` while running a startup file. Like Python, + IDLE optionally runs one startup file in the Shell window before + presenting the first interactive input prompt. For IDLE, ``-s`` runs a + file named in environmental variable :envvar:`IDLESTARTUP` or + :envvar:`PYTHONSTARTUP`; ``-r file`` runs ``file``. Python sets + ``__file__`` to the startup file name before running the file and unsets + it before the first prompt. IDLE now does the same when run normally, + without the ``-n`` option. + +- bpo-32940: Simplify and rename StringTranslatePseudoMapping in pyparse. + +- bpo-32916: Change ``str`` to ``code`` in pyparse. + +- bpo-32905: Remove unused code in pyparse module. + +- bpo-32874: Add tests for pyparse. + +- bpo-32837: Using the system and place-dependent default encoding for + open() is a bad idea for IDLE's system and location-independent files. + +- bpo-32826: Add "encoding=utf-8" to open() in IDLE's test_help_about. GUI + test test_file_buttons() only looks at initial ascii-only lines, but + failed on systems where open() defaults to 'ascii' because readline() + internally reads and decodes far enough ahead to encounter a non-ascii + character in CREDITS.txt. + +- bpo-32765: Update configdialog General tab docstring to add new widgets to + the widget list. + +Tools/Demos +----------- + +- bpo-24960: 2to3 and lib2to3 can now read pickled grammar files using + pkgutil.get_data() rather than probing the filesystem. This lets 2to3 and + lib2to3 work when run from a zipfile. + +- bpo-32222: Fix pygettext not extracting docstrings for functions with type + annotated arguments. Patch by Toby Harradine. + +C API +----- + +- bpo-29084: Undocumented C API for OrderedDict has been excluded from the + limited C API. It was added by mistake and actually never worked in the + limited C API. + + +What's New in Python 3.6.4 final? +================================= + +*Release date: 2017-12-18* + +There were no new code changes in version 3.6.4 since v3.6.4rc1. + + + +What's New in Python 3.6.4 release candidate 1? +=============================================== + +*Release date: 2017-12-05* + +Core and Builtins +----------------- + +- bpo-32176: co_flags.CO_NOFREE is now always set correctly by the code + object constructor based on freevars and cellvars, rather than needing to + be set correctly by the caller. This ensures it will be cleared + automatically when additional cell references are injected into a modified + code object and function. + +- bpo-31949: Fixed several issues in printing tracebacks + (PyTraceBack_Print()). Setting sys.tracebacklimit to 0 or less now + suppresses printing tracebacks. Setting sys.tracebacklimit to None now + causes using the default limit. Setting sys.tracebacklimit to an integer + larger than LONG_MAX now means using the limit LONG_MAX rather than the + default limit. Fixed integer overflows in the case of more than 2**31 + traceback items on Windows. Fixed output errors handling. + +- bpo-30696: Fix the interactive interpreter looping endlessly when no + memory. + +- bpo-20047: Bytearray methods partition() and rpartition() now accept only + bytes-like objects as separator, as documented. In particular they now + raise TypeError rather of returning a bogus result when an integer is + passed as a separator. + +- bpo-31852: Fix a segmentation fault caused by a combination of the async + soft keyword and continuation lines. + +- bpo-21720: BytesWarning no longer emitted when the *fromlist* argument of + ``__import__()`` or the ``__all__`` attribute of the module contain bytes + instances. + +- bpo-31825: Fixed OverflowError in the 'unicode-escape' codec and in + codecs.escape_decode() when decode an escaped non-ascii byte. + +- bpo-28603: Print the full context/cause chain of exceptions on interpreter + exit, even if an exception in the chain is unhashable or compares equal to + later ones. Patch by Zane Bitter. + +- bpo-31786: Fix timeout rounding in the select module to round correctly + negative timeouts between -1.0 and 0.0. The functions now block waiting + for events as expected. Previously, the call was incorrectly non-blocking. + Patch by Pablo Galindo. + +- bpo-31642: Restored blocking "from package import module" by setting + sys.modules["package.module"] to None. + +- bpo-31626: Fixed a bug in debug memory allocator. There was a write to + freed memory after shrinking a memory block. + +- bpo-31619: Fixed a ValueError when convert a string with large number of + underscores to integer with binary base. + +- bpo-31592: Fixed an assertion failure in Python parser in case of a bad + `unicodedata.normalize()`. Patch by Oren Milman. + +- bpo-31588: Raise a `TypeError` with a helpful error message when class + creation fails due to a metaclass with a bad ``__prepare__()`` method. + Patch by Oren Milman. + +- bpo-31566: Fix an assertion failure in `_warnings.warn()` in case of a bad + ``__name__`` global. Patch by Oren Milman. + +- bpo-31505: Fix an assertion failure in `json`, in case + `_json.make_encoder()` received a bad `encoder()` argument. Patch by Oren + Milman. + +- bpo-31492: Fix assertion failures in case of failing to import from a + module with a bad ``__name__`` attribute, and in case of failing to access + an attribute of such a module. Patch by Oren Milman. + +- bpo-31490: Fix an assertion failure in `ctypes` class definition, in case + the class has an attribute whose name is specified in ``_anonymous_`` but + not in ``_fields_``. Patch by Oren Milman. + +- bpo-31478: Fix an assertion failure in `_random.Random.seed()` in case the + argument has a bad ``__abs__()`` method. Patch by Oren Milman. + +- bpo-31315: Fix an assertion failure in imp.create_dynamic(), when + spec.name is not a string. Patch by Oren Milman. + +- bpo-31311: Fix a crash in the ``__setstate__()`` method of + `ctypes._CData`, in case of a bad ``__dict__``. Patch by Oren Milman. + +- bpo-31293: Fix crashes in true division and multiplication of a timedelta + object by a float with a bad as_integer_ratio() method. Patch by Oren + Milman. + +- bpo-31285: Fix an assertion failure in `warnings.warn_explicit`, when the + return value of the received loader's get_source() has a bad splitlines() + method. Patch by Oren Milman. + +- bpo-30817: `PyErr_PrintEx()` clears now the ignored exception that may be + raised by `_PySys_SetObjectId()`, for example when no memory. + +Library +------- + +- bpo-28556: Two minor fixes for ``typing`` module: allow shallow copying + instances of generic classes, improve interaction of ``__init_subclass__`` + with generics. Original PRs by Ivan Levkivskyi. + +- bpo-27240: The header folding algorithm for the new email policies has + been rewritten, which also fixes bpo-30788, bpo-31831, and bpo-32182. In + particular, RFC2231 folding is now done correctly. + +- bpo-32186: io.FileIO.readall() and io.FileIO.read() now release the GIL + when getting the file size. Fixed hang of all threads with inaccessible + NFS server. Patch by Nir Soffer. + +- bpo-12239: Make :meth:`msilib.SummaryInformation.GetProperty` return + ``None`` when the value of property is ``VT_EMPTY``. Initial patch by + Mark Mc Mahon. + +- bpo-31325: Fix wrong usage of :func:`collections.namedtuple` in the + :meth:`RobotFileParser.parse() <urllib.robotparser.RobotFileParser.parse>` + method. Initial patch by Robin Wellner. + +- bpo-12382: :func:`msilib.OpenDatabase` now raises a better exception + message when it couldn't open or create an MSI file. Initial patch by + William Tisäter. + +- bpo-32110: ``codecs.StreamReader.read(n)`` now returns not more than *n* + characters/bytes for non-negative *n*. This makes it compatible with + ``read()`` methods of other file-like objects. + +- bpo-32072: Fixed issues with binary plists: Fixed saving bytearrays. + Identical objects will be saved only once. Equal references will be load + as identical objects. Added support for saving and loading recursive data + structures. + +- bpo-32034: Make asyncio.IncompleteReadError and LimitOverrunError + pickleable. + +- bpo-32015: Fixed the looping of asyncio in the case of reconnection the + socket during waiting async read/write from/to the socket. + +- bpo-32011: Restored support of loading marshal files with the TYPE_INT64 + code. These files can be produced in Python 2.7. + +- bpo-31970: Reduce performance overhead of asyncio debug mode. + +- bpo-9678: Fixed determining the MAC address in the uuid module: Using + ifconfig on NetBSD and OpenBSD. Using arp on Linux, FreeBSD, NetBSD and + OpenBSD. Based on patch by Takayuki Shimizukawa. + +- bpo-30057: Fix potential missed signal in signal.signal(). + +- bpo-31933: Fix Blake2 params leaf_size and node_offset on big endian + platforms. Patch by Jack O'Connor. + +- bpo-31927: Fixed compilation of the socket module on NetBSD 8. Fixed + assertion failure or reading arbitrary data when parse a AF_BLUETOOTH + address on NetBSD and DragonFly BSD. + +- bpo-27666: Fixed stack corruption in curses.box() and curses.ungetmouse() + when the size of types chtype or mmask_t is less than the size of C long. + curses.box() now accepts characters as arguments. Based on patch by Steve + Fink. + +- bpo-31897: plistlib now catches more errors when read binary plists and + raises InvalidFileException instead of unexpected exceptions. + +- bpo-25720: Fix the method for checking pad state of curses WINDOW. Patch + by Masayuki Yamamoto. + +- bpo-31893: Fixed the layout of the kqueue_event structure on OpenBSD and + NetBSD. Fixed the comparison of the kqueue_event objects. + +- bpo-31891: Fixed building the curses module on NetBSD. + +- bpo-28416: Instances of pickle.Pickler subclass with the persistent_id() + method and pickle.Unpickler subclass with the persistent_load() method no + longer create reference cycles. + +- bpo-28326: Fix multiprocessing.Process when stdout and/or stderr is closed + or None. + +- bpo-31457: If nested log adapters are used, the inner ``process()`` + methods are no longer omitted. + +- bpo-31457: The ``manager`` property on LoggerAdapter objects is now + properly settable. + +- bpo-31806: Fix timeout rounding in time.sleep(), threading.Lock.acquire() + and socket.socket.settimeout() to round correctly negative timeouts + between -1.0 and 0.0. The functions now block waiting for events as + expected. Previously, the call was incorrectly non-blocking. Patch by + Pablo Galindo. + +- bpo-28603: traceback: Fix a TypeError that occurred during printing of + exception tracebacks when either the current exception or an exception in + its context/cause chain is unhashable. Patch by Zane Bitter. + +- bpo-30058: Fixed buffer overflow in select.kqueue.control(). + +- bpo-31770: Prevent a crash when calling the ``__init__()`` method of a + ``sqlite3.Cursor`` object more than once. Patch by Oren Milman. + +- bpo-31672: ``idpattern`` in ``string.Template`` matched some non-ASCII + characters. Now it uses ``-i`` regular expression local flag to avoid + non-ASCII characters. + +- bpo-31764: Prevent a crash in ``sqlite3.Cursor.close()`` in case the + ``Cursor`` object is uninitialized. Patch by Oren Milman. + +- bpo-31752: Fix possible crash in timedelta constructor called with custom + integers. + +- bpo-31701: On Windows, faulthandler.enable() now ignores MSC and COM + exceptions. + +- bpo-31728: Prevent crashes in `_elementtree` due to unsafe cleanup of + `Element.text` and `Element.tail`. Patch by Oren Milman. + +- bpo-31620: an empty asyncio.Queue now doesn't leak memory when queue.get + pollers timeout + +- bpo-31632: Fix method set_protocol() of class _SSLProtocolTransport in + asyncio module. This method was previously modifying a wrong reference to + the protocol. + +- bpo-31675: Fixed memory leaks in Tkinter's methods splitlist() and split() + when pass a string larger than 2 GiB. + +- bpo-31673: Fixed typo in the name of Tkinter's method adderrorinfo(). + +- bpo-30806: Fix the string representation of a netrc object. + +- bpo-15037: Added a workaround for getkey() in curses for ncurses 5.7 and + earlier. + +- bpo-25351: Avoid venv activate failures with undefined variables + +- bpo-25532: inspect.unwrap() will now only try to unwrap an object + sys.getrecursionlimit() times, to protect against objects which create a + new object on every attribute access. + +- bpo-30347: Stop crashes when concurrently iterate over itertools.groupby() + iterators. + +- bpo-31516: ``threading.current_thread()`` should not return a dummy thread + at shutdown. + +- bpo-31351: python -m ensurepip now exits with non-zero exit code if pip + bootstrapping has failed. + +- bpo-31482: ``random.seed()`` now works with bytes in version=1 + +- bpo-31334: Fix ``poll.poll([timeout])`` in the ``select`` module for + arbitrary negative timeouts on all OSes where it can only be a + non-negative integer or -1. Patch by Riccardo Coccioli. + +- bpo-31310: multiprocessing's semaphore tracker should be launched again if + crashed. + +- bpo-31308: Make multiprocessing's forkserver process immune to Ctrl-C and + other user interruptions. If it crashes, restart it when necessary. + +Documentation +------------- + +- bpo-32105: Added asyncio.BaseEventLoop.connect_accepted_socket + versionadded marker. + +- bpo-31537: Fix incorrect usage of ``get_history_length`` in readline + documentation example code. Patch by Brad Smith. + +- bpo-30085: The operator functions without double underscores are preferred + for clarity. The one with underscores are only kept for + back-compatibility. + +Tests +----- + +- bpo-31380: Skip test_httpservers test_undecodable_file on macOS: fails on + APFS. + +- bpo-31705: Skip test_socket.test_sha256() on Linux kernel older than 4.5. + The test fails with ENOKEY on kernel 3.10 (on ppc64le). A fix was merged + into the kernel 4.5. + +- bpo-31174: Fix test_tools.test_unparse: DirectoryTestCase now stores the + names sample to always test the same files. It prevents false alarms when + hunting reference leaks. + +- bpo-30695: Add the `set_nomemory(start, stop)` and `remove_mem_hooks()` + functions to the _testcapi module. + +Build +----- + +- bpo-32059: ``detect_modules()`` in ``setup.py`` now also searches the + sysroot paths when cross-compiling. + +- bpo-31957: Fixes Windows SDK version detection when building for Windows. + +- bpo-31609: Fixes quotes in PCbuild/clean.bat + +- bpo-31934: Abort the build when building out of a not clean source tree. + +- bpo-31926: Fixed Argument Clinic sometimes causing compilation errors when + there was more than one function and/or method in a .c file with the same + name. + +- bpo-28791: Update Windows builds to use SQLite 3.21.0. + +- bpo-28791: Update OS X installer to use SQLite 3.21.0. + +- bpo-22140: Prevent double substitution of prefix in python-config.sh. + +- bpo-31536: Avoid wholesale rebuild after `make regen-all` if nothing + changed. + +Windows +------- + +- bpo-1102: Return ``None`` when ``View.Fetch()`` returns + ``ERROR_NO_MORE_ITEMS`` instead of raising ``MSIError``. Initial patch by + Anthony Tuininga. + +- bpo-31944: Fixes Modify button in Apps and Features dialog. + +macOS +----- + +- bpo-31392: Update macOS installer to use OpenSSL 1.0.2m + +IDLE +---- + +- bpo-32207: Improve tk event exception tracebacks in IDLE. When tk event + handling is driven by IDLE's run loop, a confusing and distracting + queue.EMPTY traceback context is no longer added to tk event exception + tracebacks. The traceback is now the same as when event handling is + driven by user code. Patch based on a suggestion by Serhiy Storchaka. + +- bpo-32164: Delete unused file idlelib/tabbedpages.py. Use of TabbedPageSet + in configdialog was replaced by ttk.Notebook. + +- bpo-32100: IDLE: Fix old and new bugs in pathbrowser; improve tests. Patch + mostly by Cheryl Sabella. + +- bpo-31858: IDLE -- Restrict shell prompt manipulation to the shell. Editor + and output windows only see an empty last prompt line. This simplifies + the code and fixes a minor bug when newline is inserted. Sys.ps1, if + present, is read on Shell start-up, but is not set or changed. + +- bpo-31860: The font sample in the IDLE configuration dialog is now + editable. Changes persist while IDLE remains open + +- bpo-31836: Test_code_module now passes if run after test_idle, which sets + ps1. The code module uses sys.ps1 if present or sets it to '>>> ' if not. + Test_code_module now properly tests both behaviors. Ditto for ps2. + +- bpo-28603: Fix a TypeError that caused a shell restart when printing a + traceback that includes an exception that is unhashable. Patch by Zane + Bitter. + +- bpo-13802: Use non-Latin characters in the IDLE's Font settings sample. + Even if one selects a font that defines a limited subset of the unicode + Basic Multilingual Plane, tcl/tk will use other fonts that define a + character. The expanded example give users of non-Latin characters a + better idea of what they might see in IDLE's shell and editors. To make + room for the expanded sample, frames on the Font tab are re-arranged. The + Font/Tabs help explains a bit about the additions. + +- bpo-31460: Simplify the API of IDLE's Module Browser. Passing a widget + instead of an flist with a root widget opens the option of creating a + browser frame that is only part of a window. Passing a full file name + instead of pieces assumed to come from a .py file opens the possibility of + browsing python files that do not end in .py. + +- bpo-31649: IDLE - Make _htest, _utest parameters keyword only. + +- bpo-31559: Remove test order dependence in idle_test.test_browser. + +- bpo-31459: Rename IDLE's module browser from Class Browser to Module + Browser. The original module-level class and method browser became a + module browser, with the addition of module-level functions, years ago. + Nested classes and functions were added yesterday. For + back-compatibility, the virtual event <<open-class-browser>>, which + appears on the Keys tab of the Settings dialog, is not changed. Patch by + Cheryl Sabella. + +- bpo-31500: Default fonts now are scaled on HiDPI displays. + +- bpo-1612262: IDLE module browser now shows nested classes and functions. + Original patches for code and tests by Guilherme Polo and Cheryl Sabella, + respectively. + +Tools/Demos +----------- + +- bpo-30722: Make redemo work with Python 3.6 and newer versions. Also, + remove the ``LOCALE`` option since it doesn't work with string patterns in + Python 3. Patch by Christoph Sarnowski. + +C API +----- + +- bpo-20891: Fix PyGILState_Ensure(). When PyGILState_Ensure() is called in + a non-Python thread before PyEval_InitThreads(), only call + PyEval_InitThreads() after calling PyThreadState_New() to fix a crash. + +- bpo-31532: Fix memory corruption due to allocator mix in getpath.c between + Py_GetPath() and Py_SetPath() + +- bpo-30697: The `PyExc_RecursionErrorInst` singleton is removed and + `PyErr_NormalizeException()` does not use it anymore. This singleton is + persistent and its members being never cleared may cause a segfault during + finalization of the interpreter. See also issue #22898. + + +What's New in Python 3.6.3 final? +================================= + +*Release date: 2017-10-03* + +Library +------- + +- bpo-31641: Re-allow arbitrary iterables in + `concurrent.futures.as_completed()`. Fixes regression in 3.6.3rc1. + +Build +----- + +- bpo-31662: Fix typos in Windows ``uploadrelease.bat`` script. Fix Windows + Doc build issues in ``Doc/make.bat``. + +- bpo-31423: Fix building the PDF documentation with newer versions of + Sphinx. + + +What's New in Python 3.6.3 release candidate 1? +=============================================== + +*Release date: 2017-09-18* + +Security +-------- + +- bpo-29781: SSLObject.version() now correctly returns None when handshake + over BIO has not been performed yet. + +- bpo-30947: Upgrade libexpat embedded copy from version 2.2.1 to 2.2.3 to + get security fixes. + +Core and Builtins +----------------- + +- bpo-31471: Fix an assertion failure in `subprocess.Popen()` on Windows, in + case the env argument has a bad keys() method. Patch by Oren Milman. + +- bpo-31418: Fix an assertion failure in `PyErr_WriteUnraisable()` in case + of an exception with a bad ``__module__`` attribute. Patch by Oren Milman. + +- bpo-31416: Fix assertion failures in case of a bad warnings.filters or + warnings.defaultaction. Patch by Oren Milman. + +- bpo-31411: Raise a TypeError instead of SystemError in case + warnings.onceregistry is not a dictionary. Patch by Oren Milman. + +- bpo-31373: Fix several possible instances of undefined behavior due to + floating-point demotions. + +- bpo-30465: Location information (``lineno`` and ``col_offset``) in + f-strings is now (mostly) correct. This fixes tools like flake8 from + showing warnings on the wrong line (typically the first line of the file). + +- bpo-31343: Include sys/sysmacros.h for major(), minor(), and makedev(). + GNU C libray plans to remove the functions from sys/types.h. + +- bpo-31291: Fix an assertion failure in `zipimport.zipimporter.get_data` on + Windows, when the return value of ``pathname.replace('/','\\')`` isn't a + string. Patch by Oren Milman. + +- bpo-31271: Fix an assertion failure in the write() method of + `io.TextIOWrapper`, when the encoder doesn't return a bytes object. Patch + by Oren Milman. + +- bpo-31243: Fix a crash in some methods of `io.TextIOWrapper`, when the + decoder's state is invalid. Patch by Oren Milman. + +- bpo-30721: ``print`` now shows correct usage hint for using Python 2 + redirection syntax. Patch by Sanyam Khurana. + +- bpo-31070: Fix a race condition in importlib _get_module_lock(). + +- bpo-31095: Fix potential crash during GC caused by ``tp_dealloc`` which + doesn't call ``PyObject_GC_UnTrack()``. + +- bpo-31071: Avoid masking original TypeError in call with * unpacking when + other arguments are passed. + +- bpo-30978: str.format_map() now passes key lookup exceptions through. + Previously any exception was replaced with a KeyError exception. + +- bpo-30808: Use _Py_atomic API for concurrency-sensitive signal state. + +- bpo-30876: Relative import from unloaded package now reimports the package + instead of failing with SystemError. Relative import from non-package now + fails with ImportError rather than SystemError. + +- bpo-30703: Improve signal delivery. Avoid using Py_AddPendingCall from + signal handler, to avoid calling signal-unsafe functions. The tests I'm + adding here fail without the rest of the patch, on Linux and OS X. This + means our signal delivery logic had defects (some signals could be lost). + +- bpo-30765: Avoid blocking in pthread_mutex_lock() when + PyThread_acquire_lock() is asked not to block. + +- bpo-31161: Make sure the 'Missing parentheses' syntax error message is + only applied to SyntaxError, not to subclasses. Patch by Martijn Pieters. + +- bpo-30814: Fixed a race condition when import a submodule from a package. + +- bpo-30597: ``print`` now shows expected input in custom error message when + used as a Python 2 statement. Patch by Sanyam Khurana. + +Library +------- + +- bpo-31499: xml.etree: Fix a crash when a parser is part of a reference + cycle. + +- bpo-28556: typing.get_type_hints now finds the right globalns for classes + and modules by default (when no ``globalns`` was specified by the caller). + +- bpo-28556: Speed improvements to the ``typing`` module. Original PRs by + Ivan Levkivskyi and Mitar. + +- bpo-31544: The C accelerator module of ElementTree ignored exceptions + raised when looking up TreeBuilder target methods in XMLParser(). + +- bpo-31234: socket.create_connection() now fixes manually a reference + cycle: clear the variable storing the last exception on success. + +- bpo-31457: LoggerAdapter objects can now be nested. + +- bpo-31400: Improves SSL error handling to avoid losing error numbers. + +- bpo-28958: ssl.SSLContext() now uses OpenSSL error information when a + context cannot be instantiated. + +- bpo-27340: SSLSocket.sendall() now uses memoryview to create slices of + data. This fixes support for all bytes-like object. It is also more + efficient and avoids costly copies. + +- bpo-31178: Fix string concatenation bug in rare error path in the + subprocess module + +- bpo-31350: Micro-optimize :func:`asyncio._get_running_loop` to become up + to 10% faster. + +- bpo-31170: expat: Update libexpat from 2.2.3 to 2.2.4. Fix copying of + partial characters for UTF-8 input (libexpat bug 115): + https://github.com/libexpat/libexpat/issues/115 + +- bpo-29136: Add TLS 1.3 cipher suites and OP_NO_TLSv1_3. + +- bpo-29212: Fix concurrent.futures.thread.ThreadPoolExecutor threads to + have a non repr() based thread name by default when no thread_name_prefix + is supplied. They will now identify themselves as + "ThreadPoolExecutor-y_n". + +- bpo-9146: Fix a segmentation fault in _hashopenssl when standard hash + functions such as md5 are not available in the linked OpenSSL library. As + in some special FIPS-140 build environments. + +- bpo-27144: The ``map()`` and ``as_completed()`` iterators in + ``concurrent.futures`` now avoid keeping a reference to yielded objects. + +- bpo-10746: Fix ctypes producing wrong :pep:`3118` type codes for integer + types. + +- bpo-22536: The subprocess module now sets the filename when + FileNotFoundError is raised on POSIX systems due to the executable or cwd + not being found. + +- bpo-31249: concurrent.futures: WorkItem.run() used by ThreadPoolExecutor + now breaks a reference cycle between an exception object and the WorkItem + object. + +- bpo-31247: xmlrpc.server now explicitly breaks reference cycles when using + sys.exc_info() in code handling exceptions. + +- bpo-30102: The ssl and hashlib modules now call + OPENSSL_add_all_algorithms_noconf() on OpenSSL < 1.1.0. The function + detects CPU features and enables optimizations on some CPU architectures + such as POWER8. Patch is based on research from Gustavo Serra Scalet. + +- bpo-31185: Fixed miscellaneous errors in asyncio speedup module. + +- bpo-31135: ttk: fix the destroy() method of LabeledScale and OptionMenu + classes. Call the parent destroy() method even if the used attribute + doesn't exist. The LabeledScale.destroy() method now also explicitly + clears label and scale attributes to help the garbage collector to destroy + all widgets. + +- bpo-31107: Fix `copyreg._slotnames()` mangled attribute calculation for + classes whose name begins with an underscore. Patch by Shane Harvey. + +- bpo-31061: Fixed a crash when using asyncio and threads. + +- bpo-30502: Fix handling of long oids in ssl. Based on patch by Christian + Heimes. + +- bpo-30119: ftplib.FTP.putline() now throws ValueError on commands that + contains CR or LF. Patch by Dong-hee Na. + +- bpo-30595: multiprocessing.Queue.get() with a timeout now polls its reader + in non-blocking mode if it succeeded to acquire the lock but the acquire + took longer than the timeout. + +- bpo-29403: Fix ``unittest.mock``'s autospec to not fail on method-bound + builtin functions. Patch by Aaron Gallagher. + +- bpo-30961: Fix decrementing a borrowed reference in tracemalloc. + +- bpo-25684: Change ``ttk.OptionMenu`` radiobuttons to be unique across + instances of ``OptionMenu``. + +- bpo-30886: Fix multiprocessing.Queue.join_thread(): it now waits until the + thread completes, even if the thread was started by the same process which + created the queue. + +- bpo-29854: Fix segfault in readline when using readline's history-size + option. Patch by Nir Soffer. + +- bpo-30319: socket.close() now ignores ECONNRESET error. + +- bpo-30828: Fix out of bounds write in + `asyncio.CFuture.remove_done_callback()`. + +- bpo-30807: signal.setitimer() may disable the timer when passed a tiny + value. Tiny values (such as 1e-6) are valid non-zero values for + setitimer(), which is specified as taking microsecond-resolution + intervals. However, on some platform, our conversion routine could convert + 1e-6 into a zero interval, therefore disabling the timer instead of + (re-)scheduling it. + +- bpo-30441: Fix bug when modifying os.environ while iterating over it + +- bpo-30532: Fix email header value parser dropping folding white space in + certain cases. + +- bpo-30879: os.listdir() and os.scandir() now emit bytes names when called + with bytes-like argument. + +- bpo-30746: Prohibited the '=' character in environment variable names in + ``os.putenv()`` and ``os.spawn*()``. + +- bpo-29755: Fixed the lgettext() family of functions in the gettext module. + They now always return bytes. + +Documentation +------------- + +- bpo-31294: Fix incomplete code snippet in the ZeroMQSocketListener and + ZeroMQSocketHandler examples and adapt them to Python 3. + +- bpo-21649: Add RFC 7525 and Mozilla server side TLS links to SSL + documentation. + +- bpo-30803: Clarify doc on truth value testing. Original patch by Peter + Thomassen. + +Tests +----- + +- bpo-31320: Silence traceback in test_ssl + +- bpo-25674: Remove sha256.tbs-internet.com ssl test + +- bpo-30715: Address ALPN callback changes for OpenSSL 1.1.0f. The latest + version behaves like OpenSSL 1.0.2 and no longer aborts handshake. + +- bpo-30822: regrtest: Exclude tzdata from regrtest --all. When running the + test suite using --use=all / -u all, exclude tzdata since it makes + test_datetime too slow (15-20 min on some buildbots) which then times out + on some buildbots. Fix also regrtest command line parser to allow passing + -u extralargefile to run test_zipfile64. + +Build +----- + +- bpo-30854: Fix compile error when compiling --without-threads. Patch by + Masayuki Yamamoto. + +Windows +------- + +- bpo-30389: Adds detection of Visual Studio 2017 to distutils on Windows. + +- bpo-31340: Change to building with MSVC v141 (included with Visual Studio + 2017) + +- bpo-30581: os.cpu_count() now returns the correct number of processors on + Windows when the number of logical processors is greater than 64. + +- bpo-30731: Add a missing xmlns to python.manifest so that it matches the + schema. + +IDLE +---- + +- bpo-31493: IDLE code context -- fix code update and font update timers. + Canceling timers prevents a warning message when test_idle completes. + +- bpo-31488: IDLE - Update non-key options in former extension classes. When + applying configdialog changes, call .reload for each feature class. Change + ParenMatch so updated options affect existing instances attached to + existing editor windows. + +- bpo-31477: IDLE - Improve rstrip entry in doc. Strip trailing whitespace + strips more than blank spaces. Multiline string literals are not skipped. + +- bpo-31480: IDLE - make tests pass with zzdummy extension disabled by + default. + +- bpo-31421: Document how IDLE runs tkinter programs. IDLE calls tcl/tk + update in the background in order to make live interaction and + experimentation with tkinter applications much easier. + +- bpo-31414: IDLE -- fix tk entry box tests by deleting first. Adding to an + int entry is not the same as deleting and inserting because int('') will + fail. + +- bpo-31051: Rearrange IDLE configdialog GenPage into Window, Editor, and + Help sections. + +- bpo-30617: IDLE - Add docstrings and tests for outwin subclass of editor. + Move some data and functions from the class to module level. Patch by + Cheryl Sabella. + +- bpo-31287: IDLE - Do not modify tkinter.message in test_configdialog. + +- bpo-27099: Convert IDLE's built-in 'extensions' to regular features. About + 10 IDLE features were implemented as supposedly optional extensions. Their + different behavior could be confusing or worse for users and not good for + maintenance. Hence the conversion. The main difference for users is that + user configurable key bindings for builtin features are now handled + uniformly. Now, editing a binding in a keyset only affects its value in + the keyset. All bindings are defined together in the system-specific + default keysets in config-extensions.def. All custom keysets are saved as + a whole in config-extension.cfg. All take effect as soon as one clicks + Apply or Ok. The affected events are '<<force-open-completions>>', + '<<expand-word>>', '<<force-open-calltip>>', '<<flash-paren>>', + '<<format-paragraph>>', '<<run-module>>', '<<check-module>>', and + '<<zoom-height>>'. Any (global) customizations made before 3.6.3 will not + affect their keyset-specific customization after 3.6.3. and vice versa. + Initial patch by Charles Wohlganger. + +- bpo-31206: IDLE: Factor HighPage(Frame) class from ConfigDialog. Patch by + Cheryl Sabella. + +- bpo-31001: Add tests for configdialog highlight tab. Patch by Cheryl + Sabella. + +- bpo-31205: IDLE: Factor KeysPage(Frame) class from ConfigDialog. The + slightly modified tests continue to pass. Patch by Cheryl Sabella. + +- bpo-31130: IDLE -- stop leaks in test_configdialog. Initial patch by + Victor Stinner. + +- bpo-31002: Add tests for configdialog keys tab. Patch by Cheryl Sabella. + +- bpo-19903: IDLE: Calltips use `inspect.signature` instead of + `inspect.getfullargspec`. This improves calltips for builtins converted to + use Argument Clinic. Patch by Louie Lu. + +- bpo-31083: IDLE - Add an outline of a TabPage class in configdialog. + Update existing classes to match outline. Initial patch by Cheryl Sabella. + +- bpo-31050: Factor GenPage(Frame) class from ConfigDialog. The slightly + modified tests continue to pass. Patch by Cheryl Sabella. + +- bpo-31004: IDLE - Factor FontPage(Frame) class from ConfigDialog. Slightly + modified tests continue to pass. Fix General tests. Patch mostly by Cheryl + Sabella. + +- bpo-30781: IDLE - Use ttk widgets in ConfigDialog. Patches by Terry Jan + Reedy and Cheryl Sabella. + +- bpo-31060: IDLE - Finish rearranging methods of ConfigDialog Grouping + methods pertaining to each tab and the buttons will aid writing tests and + improving the tabs and will enable splitting the groups into classes. + +- bpo-30853: IDLE -- Factor a VarTrace class out of ConfigDialog. Instance + tracers manages pairs consisting of a tk variable and a callback function. + When tracing is turned on, setting the variable calls the function. Test + coverage for the new class is 100%. + +- bpo-31003: IDLE: Add more tests for General tab. + +- bpo-30993: IDLE - Improve configdialog font page and tests. In + configdialog: Document causal pathways in create_font_tab docstring. + Simplify some attribute names. Move set_samples calls to var_changed_font + (idea from Cheryl Sabella). Move related functions to positions after the + create widgets function. In test_configdialog: Fix test_font_set so not + order dependent. Fix renamed test_indent_scale so it tests the widget. + Adjust tests for movement of set_samples call. Add tests for load + functions. Put all font tests in one class and tab indent tests in + another. Except for two lines, these tests completely cover the related + functions. + +- bpo-30981: IDLE -- Add more configdialog font page tests. + +- bpo-28523: IDLE: replace 'colour' with 'color' in configdialog. + +- bpo-30917: Add tests for idlelib.config.IdleConf. Increase coverage from + 46% to 96%. Patch by Louie Lu. + +- bpo-30934: Document coverage details for idlelib tests. Add section to + idlelib/idle-test/README.txt. Include check that branches are taken both + ways. Exclude IDLE-specific code that does not run during unit tests. + +- bpo-30913: IDLE: Document ConfigDialog tk Vars, methods, and widgets in + docstrings This will facilitate improving the dialog and splitting up the + class. Original patch by Cheryl Sabella. + +- bpo-30899: IDLE: Add tests for ConfigParser subclasses in config. Patch by + Louie Lu. + +- bpo-30881: IDLE: Add docstrings to browser.py. Patch by Cheryl Sabella. + +- bpo-30851: IDLE: Remove unused variables in configdialog. One is a + duplicate, one is set but cannot be altered by users. Patch by Cheryl + Sabella. + +- bpo-30870: IDLE: In Settings dialog, select font with Up, Down keys as + well as mouse. Initial patch by Louie Lu. + +- bpo-8231: IDLE: call config.IdleConf.GetUserCfgDir only once. + +- bpo-30779: IDLE: Factor ConfigChanges class from configdialog, put in + config; test. * In config, put dump test code in a function; run it and + unittest in 'if __name__ == '__main__'. * Add class config.ConfigChanges + based on changes_class_v4.py on bpo issue. * Add class + test_config.ChangesTest, partly using configdialog_tests_v1.py. * Revise + configdialog to use ConfigChanges; see tracker msg297804. * Revise + test_configdialog to match configdialog changes. * Remove configdialog + functions unused or moved to ConfigChanges. Cheryl Sabella contributed + parts of the patch. + +- bpo-30777: IDLE: configdialog - Add docstrings and fix comments. Patch by + Cheryl Sabella. + +- bpo-30495: IDLE: Improve textview with docstrings, PEP8 names, and more + tests. Patch by Cheryl Sabella. + +- bpo-30723: IDLE: Make several improvements to parenmatch. Add 'parens' + style to highlight both opener and closer. Make 'default' style, which is + not default, a synonym for 'opener'. Make time-delay work the same with + all styles. Add help for config dialog extensions tab, including help for + parenmatch. Add new tests. Original patch by Charles Wohlganger. + +- bpo-30674: IDLE: add docstrings to grep module. Patch by Cheryl Sabella + +- bpo-21519: IDLE's basic custom key entry dialog now detects duplicates + properly. Original patch by Saimadhav Heblikar. + +- bpo-29910: IDLE no longer deletes a character after commenting out a + region by a key shortcut. Add ``return 'break'`` for this and other + potential conflicts between IDLE and default key bindings. + +- bpo-30728: Review and change idlelib.configdialog names. Lowercase method + and attribute names. Replace 'colour' with 'color', expand overly cryptic + names, delete unneeded underscores. Replace ``import *`` with specific + imports. Patches by Cheryl Sabella. + +- bpo-6739: IDLE: Verify user-entered key sequences by trying to bind them + with tk. Add tests for all 3 validation functions. Original patch by G + Polo. Tests added by Cheryl Sabella. + +Tools/Demos +----------- + +- bpo-30983: gdb integration commands (py-bt, etc.) work on optimized shared + builds now, too. :pep:`523` introduced _PyEval_EvalFrameDefault which + inlines PyEval_EvalFrameEx on non-debug shared builds. This broke the + ability to use py-bt, py-up, and a few other Python-specific gdb + integrations. The problem is fixed by only looking for + _PyEval_EvalFrameDefault frames in python-gdb.py. Original patch by Bruno + "Polaco" Penteado. + + +What's New in Python 3.6.2 final? +================================= + +*Release date: 2017-07-17* + +No changes since release candidate 2 + + + +What's New in Python 3.6.2 release candidate 2? +=============================================== + +*Release date: 2017-07-07* + +Security +-------- + +- bpo-30730: Prevent environment variables injection in subprocess on + Windows. Prevent passing other environment variables and command + arguments. + +- bpo-30694: Upgrade expat copy from 2.2.0 to 2.2.1 to get fixes of multiple + security vulnerabilities including: CVE-2017-9233 (External entity + infinite loop DoS), CVE-2016-9063 (Integer overflow, re-fix), + CVE-2016-0718 (Fix regression bugs from 2.2.0's fix to CVE-2016-0718) and + CVE-2012-0876 (Counter hash flooding with SipHash). Note: the + CVE-2016-5300 (Use os-specific entropy sources like getrandom) doesn't + impact Python, since Python already gets entropy from the OS to set the + expat secret using ``XML_SetHashSalt()``. + +- bpo-30500: Fix urllib.parse.splithost() to correctly parse fragments. For + example, ``splithost('//127.0.0.1#@evil.com/')`` now correctly returns the + ``127.0.0.1`` host, instead of treating ``@evil.com`` as the host in an + authentication (``login@host``). + + +What's New in Python 3.6.2 release candidate 1? +=============================================== + +*Release date: 2017-06-17* + +Core and Builtins +----------------- + +- bpo-30682: Removed a too-strict assertion that failed for certain + f-strings, such as eval("f'\\\n'") and eval("f'\\\r'"). + +- bpo-30604: Move co_extra_freefuncs to not be per-thread to avoid crashes + +- bpo-29104: Fixed parsing backslashes in f-strings. + +- bpo-27945: Fixed various segfaults with dict when input collections are + mutated during searching, inserting or comparing. Based on patches by + Duane Griffin and Tim Mitchell. + +- bpo-25794: Fixed type.__setattr__() and type.__delattr__() for + non-interned attribute names. Based on patch by Eryk Sun. + +- bpo-30039: If a KeyboardInterrupt happens when the interpreter is in the + middle of resuming a chain of nested 'yield from' or 'await' calls, it's + now correctly delivered to the innermost frame. + +- bpo-12414: sys.getsizeof() on a code object now returns the sizes which + includes the code struct and sizes of objects which it references. Patch + by Dong-hee Na. + +- bpo-29949: Fix memory usage regression of set and frozenset object. + +- bpo-29935: Fixed error messages in the index() method of tuple, list and + deque when pass indices of wrong type. + +- bpo-29859: Show correct error messages when any of the pthread_* calls in + thread_pthread.h fails. + +- bpo-28876: ``bool(range)`` works even if ``len(range)`` raises + :exc:`OverflowError`. + +- bpo-29600: Fix wrapping coroutine return values in StopIteration. + +- bpo-28856: Fix an oversight that %b format for bytes should support + objects follow the buffer protocol. + +- bpo-29714: Fix a regression that bytes format may fail when containing + zero bytes inside. + +- bpo-29478: If max_line_length=None is specified while using the Compat32 + policy, it is no longer ignored. Patch by Mircea Cosbuc. + +Library +------- + +- bpo-30616: Functional API of enum allows to create empty enums. Patched by + Dong-hee Na + +- bpo-30038: Fix race condition between signal delivery and wakeup file + descriptor. Patch by Nathaniel Smith. + +- bpo-23894: lib2to3 now recognizes ``rb'...'`` and ``f'...'`` strings. + +- bpo-23890: unittest.TestCase.assertRaises() now manually breaks a + reference cycle to not keep objects alive longer than expected. + +- bpo-30149: inspect.signature() now supports callables with + variable-argument parameters wrapped with partialmethod. Patch by Dong-hee + Na. + +- bpo-30645: Fix path calculation in imp.load_package(), fixing it for cases + when a package is only shipped with bytecodes. Patch by Alexandru + Ardelean. + +- bpo-29931: Fixed comparison check for ipaddress.ip_interface objects. + Patch by Sanjay Sundaresan. + +- bpo-30605: re.compile() no longer raises a BytesWarning when compiling a + bytes instance with misplaced inline modifier. Patch by Roy Williams. + +Security +-------- + +- bpo-29591: Update expat copy from 2.1.1 to 2.2.0 to get fixes of + CVE-2016-0718 and CVE-2016-4472. See + https://sourceforge.net/p/expat/bugs/537/ for more information. + +Library +------- + +- bpo-24484: Avoid race condition in multiprocessing cleanup (#2159) + +- bpo-28994: The traceback no longer displayed for SystemExit raised in a + callback registered by atexit. + +- bpo-30508: Don't log exceptions if Task/Future "cancel()" method was + called. + +- bpo-28556: Updates to typing module: Add generic AsyncContextManager, add + support for ContextManager on all versions. Original PRs by Jelle Zijlstra + and Ivan Levkivskyi + +- bpo-29870: Fix ssl sockets leaks when connection is aborted in asyncio/ssl + implementation. Patch by Michaël Sghaïer. + +- bpo-29743: Closing transport during handshake process leaks open socket. + Patch by Nikolay Kim + +- bpo-27585: Fix waiter cancellation in asyncio.Lock. Patch by Mathieu + Sornay. + +- bpo-30418: On Windows, subprocess.Popen.communicate() now also ignore + EINVAL on stdin.write() if the child process is still running but closed + the pipe. + +- bpo-29822: inspect.isabstract() now works during __init_subclass__. Patch + by Nate Soares. + +- bpo-29581: ABCMeta.__new__ now accepts ``**kwargs``, allowing abstract + base classes to use keyword parameters in __init_subclass__. Patch by Nate + Soares. + +- bpo-30557: faulthandler now correctly filters and displays exception codes + on Windows + +- bpo-30378: Fix the problem that logging.handlers.SysLogHandler cannot + handle IPv6 addresses. + +- bpo-29960: Preserve generator state when _random.Random.setstate() raises + an exception. Patch by Bryan Olson. + +- bpo-30414: multiprocessing.Queue._feed background running thread do not + break from main loop on exception. + +- bpo-30003: Fix handling escape characters in HZ codec. Based on patch by + Ma Lin. + +- bpo-30301: Fix AttributeError when using SimpleQueue.empty() under *spawn* + and *forkserver* start methods. + +- bpo-30329: imaplib and poplib now catch the Windows socket WSAEINVAL error + (code 10022) on shutdown(SHUT_RDWR): An invalid operation was attempted. + This error occurs sometimes on SSL connections. + +- bpo-30375: Warnings emitted when compile a regular expression now always + point to the line in the user code. Previously they could point into + inners of the re module if emitted from inside of groups or conditionals. + +- bpo-30048: Fixed ``Task.cancel()`` can be ignored when the task is running + coroutine and the coroutine returned without any more ``await``. + +- bpo-30266: contextlib.AbstractContextManager now supports + anti-registration by setting __enter__ = None or __exit__ = None, + following the pattern introduced in bpo-25958. Patch by Jelle Zijlstra. + +- bpo-30298: Weaken the condition of deprecation warnings for inline + modifiers. Now allowed several subsequential inline modifiers at the start + of the pattern (e.g. ``'(?i)(?s)...'``). In verbose mode whitespaces and + comments now are allowed before and between inline modifiers (e.g. ``'(?x) + (?i) (?s)...'``). + +- bpo-29990: Fix range checking in GB18030 decoder. Original patch by Ma + Lin. + +- bpo-26293: Change resulted because of zipfile breakage. (See also: + bpo-29094) + +- bpo-30243: Removed the __init__ methods of _json's scanner and encoder. + Misusing them could cause memory leaks or crashes. Now scanner and + encoder objects are completely initialized in the __new__ methods. + +- bpo-30185: Avoid KeyboardInterrupt tracebacks in forkserver helper process + when Ctrl-C is received. + +- bpo-28556: Various updates to typing module: add typing.NoReturn type, use + WrapperDescriptorType, minor bug-fixes. Original PRs by Jim + Fasarakis-Hilliard and Ivan Levkivskyi. + +- bpo-30205: Fix getsockname() for unbound AF_UNIX sockets on Linux. + +- bpo-30070: Fixed leaks and crashes in errors handling in the parser + module. + +- bpo-30061: Fixed crashes in IOBase methods __next__() and readlines() when + readline() or __next__() respectively return non-sizeable object. Fixed + possible other errors caused by not checking results of PyObject_Size(), + PySequence_Size(), or PyMapping_Size(). + +- bpo-30017: Allowed calling the close() method of the zip entry writer + object multiple times. Writing to a closed writer now always produces a + ValueError. + +- bpo-30068: _io._IOBase.readlines will check if it's closed first when hint + is present. + +- bpo-29694: Fixed race condition in pathlib mkdir with flags parents=True. + Patch by Armin Rigo. + +- bpo-29692: Fixed arbitrary unchaining of RuntimeError exceptions in + contextlib.contextmanager. Patch by Siddharth Velankar. + +- bpo-29998: Pickling and copying ImportError now preserves name and path + attributes. + +- bpo-29953: Fixed memory leaks in the replace() method of datetime and time + objects when pass out of bound fold argument. + +- bpo-29942: Fix a crash in itertools.chain.from_iterable when encountering + long runs of empty iterables. + +- bpo-27863: Fixed multiple crashes in ElementTree caused by race conditions + and wrong types. + +- bpo-28699: Fixed a bug in pools in multiprocessing.pool that raising an + exception at the very first of an iterable may swallow the exception or + make the program hang. Patch by Davin Potts and Xiang Zhang. + +- bpo-25803: Avoid incorrect errors raised by Path.mkdir(exist_ok=True) when + the OS gives priority to errors such as EACCES over EEXIST. + +- bpo-29861: Release references to tasks, their arguments and their results + as soon as they are finished in multiprocessing.Pool. + +- bpo-29884: faulthandler: Restore the old sigaltstack during teardown. + Patch by Christophe Zeitouny. + +- bpo-25455: Fixed crashes in repr of recursive buffered file-like objects. + +- bpo-29800: Fix crashes in partial.__repr__ if the keys of partial.keywords + are not strings. Patch by Michael Seifert. + +- bpo-29742: get_extra_info() raises exception if get called on closed ssl + transport. Patch by Nikolay Kim. + +- bpo-8256: Fixed possible failing or crashing input() if attributes + "encoding" or "errors" of sys.stdin or sys.stdout are not set or are not + strings. + +- bpo-28298: Fix a bug that prevented array 'Q', 'L' and 'I' from accepting + big intables (objects that have __int__) as elements. Patch by Oren + Milman. + +- bpo-28231: The zipfile module now accepts path-like objects for external + paths. + +- bpo-26915: index() and count() methods of collections.abc.Sequence now + check identity before checking equality when do comparisons. + +- bpo-29615: SimpleXMLRPCDispatcher no longer chains KeyError (or any other + exception) to exception(s) raised in the dispatched methods. Patch by Petr + Motejlek. + +- bpo-30177: path.resolve(strict=False) no longer cuts the path after the + first element not present in the filesystem. Patch by Antoine Pietri. + +IDLE +---- + +- bpo-15786: Fix several problems with IDLE's autocompletion box. The + following should now work: clicking on selection box items; using the + scrollbar; selecting an item by hitting Return. Hangs on MacOSX should no + longer happen. Patch by Louie Lu. + +- bpo-25514: Add doc subsubsection about IDLE failure to start. Popup + no-connection message directs users to this section. + +- bpo-30642: Fix reference leaks in IDLE tests. Patches by Louie Lu and + Terry Jan Reedy. + +- bpo-30495: Add docstrings for textview.py and use PEP8 names. Patches by + Cheryl Sabella and Terry Jan Reedy. + +- bpo-30290: Help-about: use pep8 names and add tests. Increase coverage to + 100%. Patches by Louie Lu, Cheryl Sabella, and Terry Jan Reedy. + +- bpo-30303: Add _utest option to textview; add new tests. Increase coverage + to 100%. Patches by Louie Lu and Terry Jan Reedy. + +C API +----- + +- bpo-27867: Function PySlice_GetIndicesEx() no longer replaced with a macro + if Py_LIMITED_API is not set. + +Build +----- + +- bpo-29941: Add ``--with-assertions`` configure flag to explicitly enable C + ``assert()`` checks. Defaults to off. ``--with-pydebug`` implies + ``--with-assertions``. + +- bpo-28787: Fix out-of-tree builds of Python when configured with + ``--with--dtrace``. + +- bpo-29243: Prevent unnecessary rebuilding of Python during ``make test``, + ``make install`` and some other make targets when configured with + ``--enable-optimizations``. + +- bpo-23404: Don't regenerate generated files based on file modification + time anymore: the action is now explicit. Replace ``make touch`` with + ``make regen-all``. + +- bpo-29643: Fix ``--enable-optimization`` didn't work. + +Documentation +------------- + +- bpo-30176: Add missing attribute related constants in curses + documentation. + +- bpo-30052: the link targets for :func:`bytes` and :func:`bytearray` are + now their respective type definitions, rather than the corresponding + builtin function entries. Use :ref:`bytes <func-bytes>` and + :ref:`bytearray <func-bytearray>` to reference the latter. In order to + ensure this and future cross-reference updates are applied automatically, + the daily documentation builds now disable the default output caching + features in Sphinx. + +- bpo-26985: Add missing info of code object in inspect documentation. + +Tools/Demos +----------- + +- bpo-29367: python-gdb.py now supports also ``method-wrapper`` + (``wrapperobject``) objects. + +Tests +----- + +- bpo-30357: test_thread: setUp() now uses support.threading_setup() and + support.threading_cleanup() to wait until threads complete to avoid random + side effects on following tests. Initial patch written by Grzegorz + Grzywacz. + +- bpo-30197: Enhanced functions swap_attr() and swap_item() in the + test.support module. They now work when delete replaced attribute or item + inside the with statement. The old value of the attribute or item (or + None if it doesn't exist) now will be assigned to the target of the "as" + clause, if there is one. + +Windows +------- + +- bpo-30687: Locate msbuild.exe on Windows when building rather than + vcvarsall.bat + +- bpo-30450: The build process on Windows no longer depends on Subversion, + instead pulling external code from GitHub via a Python script. If Python + 3.6 is not found on the system (via ``py -3.6``), NuGet is used to + download a copy of 32-bit Python. + + +What's New in Python 3.6.1 final? +================================= + +*Release date: 2017-03-21* + +Core and Builtins +----------------- + +- bpo-29723: The ``sys.path[0]`` initialization change for bpo-29139 caused + a regression by revealing an inconsistency in how sys.path is initialized + when executing ``__main__`` from a zipfile, directory, or other import + location. The interpreter now consistently avoids ever adding the import + location's parent directory to ``sys.path``, and ensures no other + ``sys.path`` entries are inadvertently modified when inserting the import + location named on the command line. + +Build +----- + +- bpo-27593: fix format of git information used in sys.version + +- Fix incompatible comment in python.h + + +What's New in Python 3.6.1 release candidate 1? +=============================================== + +*Release date: 2017-03-04* + +Core and Builtins +----------------- + +- bpo-28893: Set correct __cause__ for errors about invalid awaitables + returned from __aiter__ and __anext__. + +- bpo-29683: Fixes to memory allocation in _PyCode_SetExtra. Patch by Brian + Coleman. + +- bpo-29684: Fix minor regression of PyEval_CallObjectWithKeywords. It + should raise TypeError when kwargs is not a dict. But it might cause segv + when args=NULL and kwargs is not a dict. + +- bpo-28598: Support __rmod__ for subclasses of str being called before + str.__mod__. Patch by Martijn Pieters. + +- bpo-29607: Fix stack_effect computation for CALL_FUNCTION_EX. Patch by + Matthieu Dartiailh. + +- bpo-29602: Fix incorrect handling of signed zeros in complex constructor + for complex subclasses and for inputs having a __complex__ method. Patch + by Serhiy Storchaka. + +- bpo-29347: Fixed possibly dereferencing undefined pointers when creating + weakref objects. + +- bpo-29438: Fixed use-after-free problem in key sharing dict. + +- bpo-29319: Prevent RunMainFromImporter overwriting sys.path[0]. + +- bpo-29337: Fixed possible BytesWarning when compare the code objects. + Warnings could be emitted at compile time. + +- bpo-29327: Fixed a crash when pass the iterable keyword argument to + sorted(). + +- bpo-29034: Fix memory leak and use-after-free in os module + (path_converter). + +- bpo-29159: Fix regression in bytes(x) when x.__index__() raises Exception. + +- bpo-28932: Do not include <sys/random.h> if it does not exist. + +- bpo-25677: Correct the positioning of the syntax error caret for indented + blocks. Based on patch by Michael Layzell. + +- bpo-29000: Fixed bytes formatting of octals with zero padding in alternate + form. + +- bpo-26919: On Android, operating system data is now always encoded/decoded + to/from UTF-8, instead of the locale encoding to avoid inconsistencies + with os.fsencode() and os.fsdecode() which are already using UTF-8. + +- bpo-28991: functools.lru_cache() was susceptible to an obscure reentrancy + bug triggerable by a monkey-patched len() function. + +- bpo-28739: f-string expressions are no longer accepted as docstrings and + by ast.literal_eval() even if they do not include expressions. + +- bpo-28512: Fixed setting the offset attribute of SyntaxError by + PyErr_SyntaxLocationEx() and PyErr_SyntaxLocationObject(). + +- bpo-28918: Fix the cross compilation of xxlimited when Python has been + built with Py_DEBUG defined. + +- bpo-28731: Optimize _PyDict_NewPresized() to create correct size dict. + Improve speed of dict literal with constant keys up to 30%. + +Library +------- + +- bpo-29169: Update zlib to 1.2.11. + +- bpo-29623: Allow use of path-like object as a single argument in + ConfigParser.read(). Patch by David Ellis. + +- bpo-28963: Fix out of bound iteration in + asyncio.Future.remove_done_callback implemented in C. + +- bpo-29704: asyncio.subprocess.SubprocessStreamProtocol no longer closes + before all pipes are closed. + +- bpo-29271: Fix Task.current_task and Task.all_tasks implemented in C to + accept None argument as their pure Python implementation. + +- bpo-29703: Fix asyncio to support instantiation of new event loops in + child processes. + +- bpo-29376: Fix assertion error in threading._DummyThread.is_alive(). + +- bpo-28624: Add a test that checks that cwd parameter of Popen() accepts + PathLike objects. Patch by Sayan Chowdhury. + +- bpo-28518: Start a transaction implicitly before a DML statement. Patch by + Aviv Palivoda. + +- bpo-29532: Altering a kwarg dictionary passed to functools.partial() no + longer affects a partial object after creation. + +- bpo-29110: Fix file object leak in aifc.open() when file is given as a + filesystem path and is not in valid AIFF format. Patch by Anthony Zhang. + +- bpo-28556: Various updates to typing module: typing.Counter, + typing.ChainMap, improved ABC caching, etc. Original PRs by Jelle + Zijlstra, Ivan Levkivskyi, Manuel Krebber, and Łukasz Langa. + +- bpo-29100: Fix datetime.fromtimestamp() regression introduced in Python + 3.6.0: check minimum and maximum years. + +- bpo-29519: Fix weakref spewing exceptions during interpreter shutdown when + used with a rare combination of multiprocessing and custom codecs. + +- bpo-29416: Prevent infinite loop in pathlib.Path.mkdir + +- bpo-29444: Fixed out-of-bounds buffer access in the group() method of the + match object. Based on patch by WGH. + +- bpo-29335: Fix subprocess.Popen.wait() when the child process has exited + to a stopped instead of terminated state (ex: when under ptrace). + +- bpo-29290: Fix a regression in argparse that help messages would wrap at + non-breaking spaces. + +- bpo-28735: Fixed the comparison of mock.MagickMock with mock.ANY. + +- bpo-29316: Restore the provisional status of typing module, add + corresponding note to documentation. Patch by Ivan L. + +- bpo-29219: Fixed infinite recursion in the repr of uninitialized + ctypes.CDLL instances. + +- bpo-29011: Fix an important omission by adding Deque to the typing module. + +- bpo-28969: Fixed race condition in C implementation of + functools.lru_cache. KeyError could be raised when cached function with + full cache was simultaneously called from different threads with the same + uncached arguments. + +- bpo-29142: In urllib.request, suffixes in no_proxy environment variable + with leading dots could match related hostnames again (e.g. .b.c matches + a.b.c). Patch by Milan Oberkirch. + +- bpo-28961: Fix unittest.mock._Call helper: don't ignore the name parameter + anymore. Patch written by Jiajun Huang. + +- bpo-29203: functools.lru_cache() now respects :pep:`468` and preserves the + order of keyword arguments. f(a=1, b=2) is now cached separately from + f(b=2, a=1) since both calls could potentially give different results. + +- bpo-15812: inspect.getframeinfo() now correctly shows the first line of a + context. Patch by Sam Breese. + +- bpo-29094: Offsets in a ZIP file created with extern file object and modes + "w" and "x" now are relative to the start of the file. + +- bpo-29085: Allow random.Random.seed() to use high quality OS randomness + rather than the pid and time. + +- bpo-29061: Fixed bug in secrets.randbelow() which would hang when given a + negative input. Patch by Brendan Donegan. + +- bpo-29079: Prevent infinite loop in pathlib.resolve() on Windows + +- bpo-13051: Fixed recursion errors in large or resized + curses.textpad.Textbox. Based on patch by Tycho Andersen. + +- bpo-29119: Fix weakrefs in the pure python version of + collections.OrderedDict move_to_end() method. Contributed by Andra + Bogildea. + +- bpo-9770: curses.ascii predicates now work correctly with negative + integers. + +- bpo-28427: old keys should not remove new values from WeakValueDictionary + when collecting from another thread. + +- bpo-28923: Remove editor artifacts from Tix.py. + +- bpo-29055: Neaten-up empty population error on random.choice() by + suppressing the upstream exception. + +- bpo-28871: Fixed a crash when deallocate deep ElementTree. + +- bpo-19542: Fix bugs in WeakValueDictionary.setdefault() and + WeakValueDictionary.pop() when a GC collection happens in another thread. + +- bpo-20191: Fixed a crash in resource.prlimit() when passing a sequence + that doesn't own its elements as limits. + +- bpo-28779: multiprocessing.set_forkserver_preload() would crash the + forkserver process if a preloaded module instantiated some multiprocessing + objects such as locks. + +- bpo-28847: dbm.dumb now supports reading read-only files and no longer + writes the index file when it is not changed. + +- bpo-26937: The chown() method of the tarfile.TarFile class does not fail + now when the grp module cannot be imported, as for example on Android + platforms. + +IDLE +---- + +- bpo-29071: IDLE colors f-string prefixes (but not invalid ur prefixes). + +- bpo-28572: Add 10% to coverage of IDLE's test_configdialog. Update and + augment description of the configuration system. + +Windows +------- + +- bpo-29579: Removes readme.txt from the installer + +- bpo-29326: Ignores blank lines in ._pth files (Patch by Alexey Izbyshev) + +- bpo-28164: Correctly handle special console filenames (patch by Eryk Sun) + +- bpo-29409: Implement :pep:`529` for io.FileIO (Patch by Eryk Sun) + +- bpo-29392: Prevent crash when passing invalid arguments into msvcrt + module. + +- bpo-25778: winreg does not truncate string correctly (Patch by Eryk Sun) + +- bpo-28896: Deprecate WindowsRegistryFinder and disable it by default. + +C API +----- + +- bpo-27867: Function PySlice_GetIndicesEx() is replaced with a macro if + Py_LIMITED_API is not set or set to the value between 0x03050400 and + 0x03060000 (not including) or 0x03060100 or higher. + +- bpo-29083: Fixed the declaration of some public API functions. + PyArg_VaParse() and PyArg_VaParseTupleAndKeywords() were not available in + limited API. PyArg_ValidateKeywordArguments(), PyArg_UnpackTuple() and + Py_BuildValue() were not available in limited API of version < 3.3 when + PY_SSIZE_T_CLEAN is defined. + +- bpo-29058: All stable API extensions added after Python 3.2 are now + available only when Py_LIMITED_API is set to the PY_VERSION_HEX value of + the minimum Python version supporting this API. + +Documentation +------------- + +- bpo-28929: Link the documentation to its source file on GitHub. + +- bpo-25008: Document smtpd.py as effectively deprecated and add a pointer + to aiosmtpd, a third-party asyncio-based replacement. + +- bpo-26355: Add canonical header link on each page to corresponding major + version of the documentation. Patch by Matthias Bussonnier. + +- bpo-29349: Fix Python 2 syntax in code for building the documentation. + +Tests +----- + +- bpo-28087: Skip test_asyncore and test_eintr poll failures on macOS. Skip + some tests of select.poll when running on macOS due to unresolved issues + with the underlying system poll function on some macOS versions. + +- bpo-29571: to match the behaviour of the ``re.LOCALE`` flag, + test_re.test_locale_flag now uses ``locale.getpreferredencoding(False)`` + to determine the candidate encoding for the test regex (allowing it to + correctly skip the test when the default locale encoding is a multi-byte + encoding) + +- bpo-28950: Disallow -j0 to be combined with -T/-l in regrtest command line + arguments. + +- bpo-28683: Fix the tests that bind() a unix socket and raise + PermissionError on Android for a non-root user. + +- bpo-26939: Add the support.setswitchinterval() function to fix + test_functools hanging on the Android armv7 qemu emulator. + +Build +----- + +- bpo-27593: sys.version and the platform module python_build(), + python_branch(), and python_revision() functions now use git information + rather than hg when building from a repo. + +- bpo-29572: Update Windows build and OS X installers to use OpenSSL 1.0.2k. + +- bpo-26851: Set Android compilation and link flags. + +- bpo-28768: Fix implicit declaration of function _setmode. Patch by + Masayuki Yamamoto + +- bpo-29080: Removes hard dependency on hg.exe from PCBuild/build.bat + +- bpo-23903: Added missed names to PC/python3.def. + +- bpo-28762: lockf() is available on Android API level 24, but the F_LOCK + macro is not defined in android-ndk-r13. + +- bpo-28538: Fix the compilation error that occurs because if_nameindex() is + available on Android API level 24, but the if_nameindex structure is not + defined. + +- bpo-20211: Do not add the directory for installing C header files and the + directory for installing object code libraries to the cross compilation + search paths. Original patch by Thomas Petazzoni. + +- bpo-28849: Do not define sys.implementation._multiarch on Android. + + +What's New in Python 3.6.0 final? +================================= + +*Release date: 2016-12-23* + +No changes since release candidate 2 + + + +What's New in Python 3.6.0 release candidate 2? +=============================================== + +*Release date: 2016-12-16* + +Core and Builtins +----------------- + +- bpo-28147: Fix a memory leak in split-table dictionaries: setattr() must + not convert combined table into split table. Patch written by INADA Naoki. + +- bpo-28990: Fix asyncio SSL hanging if connection is closed before + handshake is completed. (Patch by HoHo-Ho) + +Tools/Demos +----------- + +- bpo-28770: Fix python-gdb.py for fastcalls. + +Windows +------- + +- bpo-28896: Deprecate WindowsRegistryFinder. + +Build +----- + +- bpo-28898: Prevent gdb build errors due to HAVE_LONG_LONG redefinition. + + +What's New in Python 3.6.0 release candidate 1? +=============================================== + +*Release date: 2016-12-06* + +Core and Builtins +----------------- + +- bpo-23722: Rather than silently producing a class that doesn't support + zero-argument ``super()`` in methods, failing to pass the new + ``__classcell__`` namespace entry up to ``type.__new__`` now results in a + ``DeprecationWarning`` and a class that supports zero-argument + ``super()``. + +- bpo-28797: Modifying the class __dict__ inside the __set_name__ method of + a descriptor that is used inside that class no longer prevents calling the + __set_name__ method of other descriptors. + +- bpo-28782: Fix a bug in the implementation ``yield from`` when checking if + the next instruction is YIELD_FROM. Regression introduced by WORDCODE + (issue #26647). + +Library +------- + +- bpo-27030: Unknown escapes in re.sub() replacement template are allowed + again. But they still are deprecated and will be disabled in 3.7. + +- bpo-28835: Fix a regression introduced in warnings.catch_warnings(): call + warnings.showwarning() if it was overridden inside the context manager. + +- bpo-27172: To assist with upgrades from 2.7, the previously documented + deprecation of ``inspect.getfullargspec()`` has been reversed. This + decision may be revisited again after the Python 2.7 branch is no longer + officially supported. + +- bpo-26273: Add new :data:`socket.TCP_CONGESTION` (Linux 2.6.13) and + :data:`socket.TCP_USER_TIMEOUT` (Linux 2.6.37) constants. Patch written by + Omar Sandoval. + +- bpo-24142: Reading a corrupt config file left configparser in an invalid + state. Original patch by Florian Höch. + +- bpo-28843: Fix asyncio C Task to handle exceptions __traceback__. + +C API +----- + +- bpo-28808: PyUnicode_CompareWithASCIIString() now never raises exceptions. + +Documentation +------------- + +- bpo-23722: The data model reference and the porting section in the What's + New guide now cover the additional ``__classcell__`` handling needed for + custom metaclasses to fully support :pep:`487` and zero-argument + ``super()``. + +Tools/Demos +----------- + +- bpo-28023: Fix python-gdb.py didn't support new dict implementation. + + +What's New in Python 3.6.0 beta 4? +================================== + +*Release date: 2016-11-21* + +Core and Builtins +----------------- + +- bpo-28532: Show sys.version when -V option is supplied twice. + +- bpo-27100: The with-statement now checks for __enter__ before it checks + for __exit__. This gives less confusing error messages when both methods + are missing. Patch by Jonathan Ellington. + +- bpo-28746: Fix the set_inheritable() file descriptor method on platforms + that do not have the ioctl FIOCLEX and FIONCLEX commands. + +- bpo-26920: Fix not getting the locale's charset upon initializing the + interpreter, on platforms that do not have langinfo. + +- bpo-28648: Fixed crash in Py_DecodeLocale() in debug build on Mac OS X + when decode astral characters. Patch by Xiang Zhang. + +- bpo-19398: Extra slash no longer added to sys.path components in case of + empty compile-time PYTHONPATH components. + +- bpo-28665: Improve speed of the STORE_DEREF opcode by 40%. + +- bpo-28583: PyDict_SetDefault didn't combine split table when needed. Patch + by Xiang Zhang. + +- bpo-27243: Change PendingDeprecationWarning -> DeprecationWarning. As it + was agreed in the issue, __aiter__ returning an awaitable should result in + PendingDeprecationWarning in 3.5 and in DeprecationWarning in 3.6. + +- bpo-26182: Fix a refleak in code that raises DeprecationWarning. + +- bpo-28721: Fix asynchronous generators aclose() and athrow() to handle + StopAsyncIteration propagation properly. + +Library +------- + +- bpo-28752: Restored the __reduce__() methods of datetime objects. + +- bpo-28727: Regular expression patterns, _sre.SRE_Pattern objects created + by re.compile(), become comparable (only x==y and x!=y operators). This + change should fix the issue #18383: don't duplicate warning filters when + the warnings module is reloaded (thing usually only done in unit tests). + +- bpo-20572: The subprocess.Popen.wait method's undocumented endtime + parameter now raises a DeprecationWarning. + +- bpo-25659: In ctypes, prevent a crash calling the from_buffer() and + from_buffer_copy() methods on abstract classes like Array. + +- bpo-19717: Makes Path.resolve() succeed on paths that do not exist. Patch + by Vajrasky Kok + +- bpo-28563: Fixed possible DoS and arbitrary code execution when handle + plural form selections in the gettext module. The expression parser now + supports exact syntax supported by GNU gettext. + +- bpo-28387: Fixed possible crash in _io.TextIOWrapper deallocator when the + garbage collector is invoked in other thread. Based on patch by Sebastian + Cufre. + +- bpo-28600: Optimize loop.call_soon. + +- bpo-28613: Fix get_event_loop() return the current loop if called from + coroutines/callbacks. + +- bpo-28634: Fix asyncio.isfuture() to support unittest.Mock. + +- bpo-26081: Fix refleak in _asyncio.Future.__iter__().throw. + +- bpo-28639: Fix inspect.isawaitable to always return bool Patch by Justin + Mayfield. + +- bpo-28652: Make loop methods reject socket kinds they do not support. + +- bpo-28653: Fix a refleak in functools.lru_cache. + +- bpo-28703: Fix asyncio.iscoroutinefunction to handle Mock objects. + +- bpo-28704: Fix create_unix_server to support Path-like objects (PEP 519). + +- bpo-28720: Add collections.abc.AsyncGenerator. + +Documentation +------------- + +- bpo-28513: Documented command-line interface of zipfile. + +Tests +----- + +- bpo-28666: Now test.support.rmtree is able to remove unwritable or + unreadable directories. + +- bpo-23839: Various caches now are cleared before running every test file. + +Build +----- + +- bpo-10656: Fix out-of-tree building on AIX. Patch by Tristan Carel and + Michael Haubenwallner. + +- bpo-26359: Rename --with-optimiations to --enable-optimizations. + +- bpo-28676: Prevent missing 'getentropy' declaration warning on macOS. + Patch by Gareth Rees. + + +What's New in Python 3.6.0 beta 3? +================================== + +*Release date: 2016-10-31* + +Core and Builtins +----------------- + +- bpo-28128: Deprecation warning for invalid str and byte escape sequences + now prints better information about where the error occurs. Patch by + Serhiy Storchaka and Eric Smith. + +- bpo-28509: dict.update() no longer allocate unnecessary large memory. + +- bpo-28426: Fixed potential crash in PyUnicode_AsDecodedObject() in debug + build. + +- bpo-28517: Fixed of-by-one error in the peephole optimizer that caused + keeping unreachable code. + +- bpo-28214: Improved exception reporting for problematic __set_name__ + attributes. + +- bpo-23782: Fixed possible memory leak in _PyTraceback_Add() and exception + loss in PyTraceBack_Here(). + +- bpo-28471: Fix "Python memory allocator called without holding the GIL" + crash in socket.setblocking. + +Library +------- + +- bpo-27517: LZMA compressor and decompressor no longer raise exceptions if + given empty data twice. Patch by Benjamin Fogle. + +- bpo-28549: Fixed segfault in curses's addch() with ncurses6. + +- bpo-28449: tarfile.open() with mode "r" or "r:" now tries to open a tar + file with compression before trying to open it without compression. + Otherwise it had 50% chance failed with ignore_zeros=True. + +- bpo-23262: The webbrowser module now supports Firefox 36+ and derived + browsers. Based on patch by Oleg Broytman. + +- bpo-27939: Fixed bugs in tkinter.ttk.LabeledScale and tkinter.Scale caused + by representing the scale as float value internally in Tk. tkinter.IntVar + now works if float value is set to underlying Tk variable. + +- bpo-18844: The various ways of specifying weights for random.choices() now + produce the same result sequences. + +- bpo-28255: calendar.TextCalendar().prmonth() no longer prints a space at + the start of new line after printing a month's calendar. Patch by Xiang + Zhang. + +- bpo-20491: The textwrap.TextWrapper class now honors non-breaking spaces. + Based on patch by Kaarle Ritvanen. + +- bpo-28353: os.fwalk() no longer fails on broken links. + +- bpo-28430: Fix iterator of C implemented asyncio.Future doesn't accept + non-None value is passed to it.send(val). + +- bpo-27025: Generated names for Tkinter widgets now start by the "!" prefix + for readability. + +- bpo-25464: Fixed HList.header_exists() in tkinter.tix module by addin a + workaround to Tix library bug. + +- bpo-28488: shutil.make_archive() no longer adds entry "./" to ZIP archive. + +- bpo-25953: re.sub() now raises an error for invalid numerical group + reference in replacement template even if the pattern is not found in the + string. Error message for invalid group reference now includes the group + index and the position of the reference. Based on patch by SilentGhost. + +- bpo-18219: Optimize csv.DictWriter for large number of columns. Patch by + Mariatta Wijaya. + +- bpo-28448: Fix C implemented asyncio.Future didn't work on Windows. + +- bpo-28480: Fix error building socket module when multithreading is + disabled. + +- bpo-24452: Make webbrowser support Chrome on Mac OS X. + +- bpo-20766: Fix references leaked by pdb in the handling of SIGINT + handlers. + +- bpo-28492: Fix how StopIteration exception is raised in _asyncio.Future. + +- bpo-28500: Fix asyncio to handle async gens GC from another thread. + +- bpo-26923: Fix asyncio.Gather to refuse being cancelled once all children + are done. Patch by Johannes Ebke. + +- bpo-26796: Don't configure the number of workers for default threadpool + executor. Initial patch by Hans Lawrenz. + +- bpo-28544: Implement asyncio.Task in C. + +Windows +------- + +- bpo-28522: Fixes mishandled buffer reallocation in getpathp.c + +Build +----- + +- bpo-28444: Fix missing extensions modules when cross compiling. + +- bpo-28208: Update Windows build and OS X installers to use SQLite 3.14.2. + +- bpo-28248: Update Windows build and OS X installers to use OpenSSL 1.0.2j. + +Tests +----- + +- bpo-26944: Fix test_posix for Android where 'id -G' is entirely wrong or + missing the effective gid. + +- bpo-28409: regrtest: fix the parser of command line arguments. + + +What's New in Python 3.6.0 beta 2? +================================== + +*Release date: 2016-10-10* + +Core and Builtins +----------------- + +- bpo-28183: Optimize and cleanup dict iteration. + +- bpo-26081: Added C implementation of asyncio.Future. Original patch by + Yury Selivanov. + +- bpo-28379: Added sanity checks and tests for PyUnicode_CopyCharacters(). + Patch by Xiang Zhang. + +- bpo-28376: The type of long range iterator is now registered as Iterator. + Patch by Oren Milman. + +- bpo-28376: Creating instances of range_iterator by calling range_iterator + type now is deprecated. Patch by Oren Milman. + +- bpo-28376: The constructor of range_iterator now checks that step is not + 0. Patch by Oren Milman. + +- bpo-26906: Resolving special methods of uninitialized type now causes + implicit initialization of the type instead of a fail. + +- bpo-18287: PyType_Ready() now checks that tp_name is not NULL. Original + patch by Niklas Koep. + +- bpo-24098: Fixed possible crash when AST is changed in process of + compiling it. + +- bpo-28201: Dict reduces possibility of 2nd conflict in hash table when + hashes have same lower bits. + +- bpo-28350: String constants with null character no longer interned. + +- bpo-26617: Fix crash when GC runs during weakref callbacks. + +- bpo-27942: String constants now interned recursively in tuples and + frozensets. + +- bpo-21578: Fixed misleading error message when ImportError called with + invalid keyword args. + +- bpo-28203: Fix incorrect type in complex(1.0, {2:3}) error message. Patch + by Soumya Sharma. + +- bpo-28086: Single var-positional argument of tuple subtype was passed + unscathed to the C-defined function. Now it is converted to exact tuple. + +- bpo-28214: Now __set_name__ is looked up on the class instead of the + instance. + +- bpo-27955: Fallback on reading /dev/urandom device when the getrandom() + syscall fails with EPERM, for example when blocked by SECCOMP. + +- bpo-28192: Don't import readline in isolated mode. + +- Upgrade internal unicode databases to Unicode version 9.0.0. + +- bpo-28131: Fix a regression in zipimport's compile_source(). zipimport + should use the same optimization level as the interpreter. + +- bpo-28126: Replace Py_MEMCPY with memcpy(). Visual Studio can properly + optimize memcpy(). + +- bpo-28120: Fix dict.pop() for splitted dictionary when trying to remove a + "pending key" (Not yet inserted in split-table). Patch by Xiang Zhang. + +- bpo-26182: Raise DeprecationWarning when async and await keywords are used + as variable/attribute/class/function name. + +Library +------- + +- bpo-27998: Fixed bytes path support in os.scandir() on Windows. Patch by + Eryk Sun. + +- bpo-28317: The disassembler now decodes FORMAT_VALUE argument. + +- bpo-26293: Fixed writing ZIP files that starts not from the start of the + file. Offsets in ZIP file now are relative to the start of the archive in + conforming to the specification. + +- bpo-28380: unittest.mock Mock autospec functions now properly support + assert_called, assert_not_called, and assert_called_once. + +- bpo-27181: remove statistics.geometric_mean and defer until 3.7. + +- bpo-28229: lzma module now supports pathlib. + +- bpo-28321: Fixed writing non-BMP characters with binary format in + plistlib. + +- bpo-28225: bz2 module now supports pathlib. Initial patch by Ethan + Furman. + +- bpo-28227: gzip now supports pathlib. Patch by Ethan Furman. + +- bpo-27358: Optimized merging var-keyword arguments and improved error + message when passing a non-mapping as a var-keyword argument. + +- bpo-28257: Improved error message when passing a non-iterable as a + var-positional argument. Added opcode BUILD_TUPLE_UNPACK_WITH_CALL. + +- bpo-28322: Fixed possible crashes when unpickle itertools objects from + incorrect pickle data. Based on patch by John Leitch. + +- bpo-28228: imghdr now supports pathlib. + +- bpo-28226: compileall now supports pathlib. + +- bpo-28314: Fix function declaration (C flags) for the getiterator() method + of xml.etree.ElementTree.Element. + +- bpo-28148: Stop using localtime() and gmtime() in the time module. + Introduced platform independent _PyTime_localtime API that is similar to + POSIX localtime_r, but available on all platforms. Patch by Ed Schouten. + +- bpo-28253: Fixed calendar functions for extreme months: 0001-01 and + 9999-12. Methods itermonthdays() and itermonthdays2() are reimplemented so + that they don't call itermonthdates() which can cause datetime.date + under/overflow. + +- bpo-28275: Fixed possible use after free in the decompress() methods of + the LZMADecompressor and BZ2Decompressor classes. Original patch by John + Leitch. + +- bpo-27897: Fixed possible crash in sqlite3.Connection.create_collation() + if pass invalid string-like object as a name. Patch by Xiang Zhang. + +- bpo-18844: random.choices() now has k as a keyword-only argument to + improve the readability of common cases and come into line with the + signature used in other languages. + +- bpo-18893: Fix invalid exception handling in Lib/ctypes/macholib/dyld.py. + Patch by Madison May. + +- bpo-27611: Fixed support of default root window in the tkinter.tix module. + Added the master parameter in the DisplayStyle constructor. + +- bpo-27348: In the traceback module, restore the formatting of exception + messages like "Exception: None". This fixes a regression introduced in + 3.5a2. + +- bpo-25651: Allow falsy values to be used for msg parameter of subTest(). + +- bpo-27778: Fix a memory leak in os.getrandom() when the getrandom() is + interrupted by a signal and a signal handler raises a Python exception. + +- bpo-28200: Fix memory leak on Windows in the os module (fix + path_converter() function). + +- bpo-25400: RobotFileParser now correctly returns default values for + crawl_delay and request_rate. Initial patch by Peter Wirtz. + +- bpo-27932: Prevent memory leak in win32_ver(). + +- Fix UnboundLocalError in socket._sendfile_use_sendfile. + +- bpo-28075: Check for ERROR_ACCESS_DENIED in Windows implementation of + os.stat(). Patch by Eryk Sun. + +- bpo-22493: Warning message emitted by using inline flags in the middle of + regular expression now contains a (truncated) regex pattern. Patch by Tim + Graham. + +- bpo-25270: Prevent codecs.escape_encode() from raising SystemError when an + empty bytestring is passed. + +- bpo-28181: Get antigravity over HTTPS. Patch by Kaartic Sivaraam. + +- bpo-25895: Enable WebSocket URL schemes in urllib.parse.urljoin. Patch by + Gergely Imreh and Markus Holtermann. + +- bpo-28114: Fix a crash in parse_envlist() when env contains byte strings. + Patch by Eryk Sun. + +- bpo-27599: Fixed buffer overrun in binascii.b2a_qp() and + binascii.a2b_qp(). + +- bpo-27906: Fix socket accept exhaustion during high TCP traffic. Patch by + Kevin Conway. + +- bpo-28174: Handle when SO_REUSEPORT isn't properly supported. Patch by + Seth Michael Larson. + +- bpo-26654: Inspect functools.partial in asyncio.Handle.__repr__. Patch by + iceboy. + +- bpo-26909: Fix slow pipes IO in asyncio. Patch by INADA Naoki. + +- bpo-28176: Fix callbacks race in asyncio.SelectorLoop.sock_connect. + +- bpo-27759: Fix selectors incorrectly retain invalid file descriptors. + Patch by Mark Williams. + +- bpo-28368: Refuse monitoring processes if the child watcher has no loop + attached. Patch by Vincent Michel. + +- bpo-28369: Raise RuntimeError when transport's FD is used with add_reader, + add_writer, etc. + +- bpo-28370: Speedup asyncio.StreamReader.readexactly. Patch by Коренберг + Марк. + +- bpo-28371: Deprecate passing asyncio.Handles to run_in_executor. + +- bpo-28372: Fix asyncio to support formatting of non-python coroutines. + +- bpo-28399: Remove UNIX socket from FS before binding. Patch by Коренберг + Марк. + +- bpo-27972: Prohibit Tasks to await on themselves. + +Windows +------- + +- bpo-28402: Adds signed catalog files for stdlib on Windows. + +- bpo-28333: Enables Unicode for ps1/ps2 and input() prompts. (Patch by Eryk + Sun) + +- bpo-28251: Improvements to help manuals on Windows. + +- bpo-28110: launcher.msi has different product codes between 32-bit and + 64-bit + +- bpo-28161: Opening CON for write access fails + +- bpo-28162: WindowsConsoleIO readall() fails if first line starts with + Ctrl+Z + +- bpo-28163: WindowsConsoleIO fileno() passes wrong flags to _open_osfhandle + +- bpo-28164: _PyIO_get_console_type fails for various paths + +- bpo-28137: Renames Windows path file to ._pth + +- bpo-28138: Windows ._pth file should allow import site + +C API +----- + +- bpo-28426: Deprecated undocumented functions PyUnicode_AsEncodedObject(), + PyUnicode_AsDecodedObject(), PyUnicode_AsDecodedUnicode() and + PyUnicode_AsEncodedUnicode(). + +Build +----- + +- bpo-28258: Fixed build with Estonian locale (python-config and distclean + targets in Makefile). Patch by Arfrever Frehtes Taifersar Arahesis. + +- bpo-26661: setup.py now detects system libffi with multiarch wrapper. + +- bpo-15819: Remove redundant include search directory option for building + outside the source tree. + +Tests +----- + +- bpo-28217: Adds _testconsole module to test console input. + + +What's New in Python 3.6.0 beta 1? +================================== + +*Release date: 2016-09-12* + +Core and Builtins +----------------- + +- bpo-23722: The __class__ cell used by zero-argument super() is now + initialized from type.__new__ rather than __build_class__, so class + methods relying on that will now work correctly when called from metaclass + methods during class creation. Patch by Martin Teichmann. + +- bpo-25221: Fix corrupted result from PyLong_FromLong(0) when Python is + compiled with NSMALLPOSINTS = 0. + +- bpo-27080: Implement formatting support for :pep:`515`. Initial patch by + Chris Angelico. + +- bpo-27199: In tarfile, expose copyfileobj bufsize to improve throughput. + Patch by Jason Fried. + +- bpo-27948: In f-strings, only allow backslashes inside the braces (where + the expressions are). This is a breaking change from the 3.6 alpha + releases, where backslashes are allowed anywhere in an f-string. Also, + require that expressions inside f-strings be enclosed within literal + braces, and not escapes like ``f'\x7b"hi"\x7d'``. + +- bpo-28046: Remove platform-specific directories from sys.path. + +- bpo-28071: Add early-out for differencing from an empty set. + +- bpo-25758: Prevents zipimport from unnecessarily encoding a filename + (patch by Eryk Sun) + +- bpo-25856: The __module__ attribute of extension classes and functions now + is interned. This leads to more compact pickle data with protocol 4. + +- bpo-27213: Rework CALL_FUNCTION* opcodes to produce shorter and more + efficient bytecode. Patch by Demur Rumed, design by Serhiy Storchaka, + reviewed by Serhiy Storchaka and Victor Stinner. + +- bpo-26331: Implement tokenizing support for :pep:`515`. Patch by Georg + Brandl. + +- bpo-27999: Make "global after use" a SyntaxError, and ditto for nonlocal. + Patch by Ivan Levkivskyi. + +- bpo-28003: Implement :pep:`525` -- Asynchronous Generators. + +- bpo-27985: Implement :pep:`526` -- Syntax for Variable Annotations. Patch + by Ivan Levkivskyi. + +- bpo-26058: Add a new private version to the builtin dict type, incremented + at each dictionary creation and at each dictionary change. Implementation + of the PEP 509. + +- bpo-27364: A backslash-character pair that is not a valid escape sequence + now generates a DeprecationWarning. Patch by Emanuel Barry. + +- bpo-27350: `dict` implementation is changed like PyPy. It is more compact + and preserves insertion order. (Concept developed by Raymond Hettinger and + patch by Inada Naoki.) + +- bpo-27911: Remove unnecessary error checks in + ``exec_builtin_or_dynamic()``. + +- bpo-27078: Added BUILD_STRING opcode. Optimized f-strings evaluation. + +- bpo-17884: Python now requires systems with inttypes.h and stdint.h + +- bpo-27961: Require platforms to support ``long long``. Python hasn't + compiled without ``long long`` for years, so this is basically a + formality. + +- bpo-27355: Removed support for Windows CE. It was never finished, and + Windows CE is no longer a relevant platform for Python. + +- Implement :pep:`523`. + +- bpo-27870: A left shift of zero by a large integer no longer attempts to + allocate large amounts of memory. + +- bpo-25402: In int-to-decimal-string conversion, improve the estimate of + the intermediate memory required, and remove an unnecessarily strict + overflow check. Patch by Serhiy Storchaka. + +- bpo-27214: In long_invert, be more careful about modifying object returned + by long_add, and remove an unnecessary check for small longs. Thanks Oren + Milman for analysis and patch. + +- bpo-27506: Support passing the bytes/bytearray.translate() "delete" + argument by keyword. + +- bpo-27812: Properly clear out a generator's frame's backreference to the + generator to prevent crashes in frame.clear(). + +- bpo-27811: Fix a crash when a coroutine that has not been awaited is + finalized with warnings-as-errors enabled. + +- bpo-27587: Fix another issue found by PVS-Studio: Null pointer check after + use of 'def' in _PyState_AddModule(). Initial patch by Christian Heimes. + +- bpo-27792: The modulo operation applied to ``bool`` and other ``int`` + subclasses now always returns an ``int``. Previously the return type + depended on the input values. Patch by Xiang Zhang. + +- bpo-26984: int() now always returns an instance of exact int. + +- bpo-25604: Fix a minor bug in integer true division; this bug could + potentially have caused off-by-one-ulp results on platforms with + unreliable ldexp implementations. + +- bpo-24254: Make class definition namespace ordered by default. + +- bpo-27662: Fix an overflow check in ``List_New``: the original code was + checking against ``Py_SIZE_MAX`` instead of the correct upper bound of + ``Py_SSIZE_T_MAX``. Patch by Xiang Zhang. + +- bpo-27782: Multi-phase extension module import now correctly allows the + ``m_methods`` field to be used to add module level functions to instances + of non-module types returned from ``Py_create_mod``. Patch by Xiang Zhang. + +- bpo-27936: The round() function accepted a second None argument for some + types but not for others. Fixed the inconsistency by accepting None for + all numeric types. + +- bpo-27487: Warn if a submodule argument to "python -m" or + runpy.run_module() is found in sys.modules after parent packages are + imported, but before the submodule is executed. + +- bpo-27157: Make only type() itself accept the one-argument form. Patch by + Eryk Sun and Emanuel Barry. + +- bpo-27558: Fix a SystemError in the implementation of "raise" statement. + In a brand new thread, raise a RuntimeError since there is no active + exception to reraise. Patch written by Xiang Zhang. + +- bpo-28008: Implement :pep:`530` -- asynchronous comprehensions. + +- bpo-27942: Fix memory leak in codeobject.c + +Library +------- + +- bpo-28732: Fix crash in os.spawnv() with no elements in args + +- bpo-28485: Always raise ValueError for negative + compileall.compile_dir(workers=...) parameter, even when multithreading is + unavailable. + +- bpo-28037: Use sqlite3_get_autocommit() instead of setting + Connection->inTransaction manually. + +- bpo-25283: Attributes tm_gmtoff and tm_zone are now available on all + platforms in the return values of time.localtime() and time.gmtime(). + +- bpo-24454: Regular expression match object groups are now accessible using + __getitem__. "mo[x]" is equivalent to "mo.group(x)". + +- bpo-10740: sqlite3 no longer implicitly commit an open transaction before + DDL statements. + +- bpo-17941: Add a *module* parameter to collections.namedtuple(). + +- bpo-22493: Inline flags now should be used only at the start of the + regular expression. Deprecation warning is emitted if uses them in the + middle of the regular expression. + +- bpo-26885: xmlrpc now supports unmarshalling additional data types used by + Apache XML-RPC implementation for numerics and None. + +- bpo-28070: Fixed parsing inline verbose flag in regular expressions. + +- bpo-19500: Add client-side SSL session resumption to the ssl module. + +- bpo-28022: Deprecate ssl-related arguments in favor of SSLContext. The + deprecation include manual creation of SSLSocket and certfile/keyfile (or + similar) in ftplib, httplib, imaplib, smtplib, poplib and urllib. + +- bpo-28043: SSLContext has improved default settings: OP_NO_SSLv2, + OP_NO_SSLv3, OP_NO_COMPRESSION, OP_CIPHER_SERVER_PREFERENCE, + OP_SINGLE_DH_USE, OP_SINGLE_ECDH_USE and HIGH ciphers without MD5. + +- bpo-24693: Changed some RuntimeError's in the zipfile module to more + appropriate types. Improved some error messages and debugging output. + +- bpo-17909: ``json.load`` and ``json.loads`` now support binary input + encoded as UTF-8, UTF-16 or UTF-32. Patch by Serhiy Storchaka. + +- bpo-27137: the pure Python fallback implementation of + ``functools.partial`` now matches the behaviour of its accelerated C + counterpart for subclassing, pickling and text representation purposes. + Patch by Emanuel Barry and Serhiy Storchaka. + +- Fix possible integer overflows and crashes in the mmap module with unusual + usage patterns. + +- bpo-1703178: Fix the ability to pass the --link-objects option to the + distutils build_ext command. + +- bpo-28019: itertools.count() no longer rounds non-integer step in range + between 1.0 and 2.0 to 1. + +- bpo-18401: Pdb now supports the 'readrc' keyword argument to control + whether .pdbrc files should be read. Patch by Martin Matusiak and Sam + Kimbrel. + +- bpo-25969: Update the lib2to3 grammar to handle the unpacking + generalizations added in 3.5. + +- bpo-14977: mailcap now respects the order of the lines in the mailcap + files ("first match"), as required by RFC 1542. Patch by Michael Lazar. + +- bpo-28082: Convert re flag constants to IntFlag. + +- bpo-28025: Convert all ssl module constants to IntEnum and IntFlags. + SSLContext properties now return flags and enums. + +- bpo-23591: Add Flag, IntFlag, and auto() to enum module. + +- bpo-433028: Added support of modifier spans in regular expressions. + +- bpo-24594: Validates persist parameter when opening MSI database + +- bpo-17582: xml.etree.ElementTree nows preserves whitespaces in attributes + (Patch by Duane Griffin. Reviewed and approved by Stefan Behnel.) + +- bpo-28047: Fixed calculation of line length used for the base64 CTE in the + new email policies. + +- bpo-27576: Fix call order in OrderedDict.__init__(). + +- email.generator.DecodedGenerator now supports the policy keyword. + +- bpo-28027: Remove undocumented modules from ``Lib/plat-*``: IN, CDROM, + DLFCN, TYPES, CDIO, and STROPTS. + +- bpo-27445: Don't pass str(_charset) to MIMEText.set_payload(). Patch by + Claude Paroz. + +- bpo-24277: The new email API is no longer provisional, and the docs have + been reorganized and rewritten to emphasize the new API. + +- bpo-22450: urllib now includes an ``Accept: */*`` header among the default + headers. This makes the results of REST API requests more consistent and + predictable especially when proxy servers are involved. + +- lib2to3.pgen3.driver.load_grammar() now creates a stable cache file + between runs given the same Grammar.txt input regardless of the hash + randomization setting. + +- bpo-28005: Allow ImportErrors in encoding implementation to propagate. + +- bpo-26667: Support path-like objects in importlib.util. + +- bpo-27570: Avoid zero-length memcpy() etc calls with null source pointers + in the "ctypes" and "array" modules. + +- bpo-22233: Break email header lines *only* on the RFC specified CR and LF + characters, not on arbitrary unicode line breaks. This also fixes a bug + in HTTP header parsing. + +- bpo-27331: The email.mime classes now all accept an optional policy + keyword. + +- bpo-27988: Fix email iter_attachments incorrect mutation of payload list. + +- bpo-16113: Add SHA-3 and SHAKE support to hashlib module. + +- Eliminate a tautological-pointer-compare warning in _scproxy.c. + +- bpo-27776: The :func:`os.urandom` function does now block on Linux 3.17 + and newer until the system urandom entropy pool is initialized to increase + the security. This change is part of the :pep:`524`. + +- bpo-27778: Expose the Linux ``getrandom()`` syscall as a new + :func:`os.getrandom` function. This change is part of the :pep:`524`. + +- bpo-27691: Fix ssl module's parsing of GEN_RID subject alternative name + fields in X.509 certs. + +- bpo-18844: Add random.choices(). + +- bpo-25761: Improved error reporting about truncated pickle data in C + implementation of unpickler. UnpicklingError is now raised instead of + AttributeError and ValueError in some cases. + +- bpo-26798: Add BLAKE2 (blake2b and blake2s) to hashlib. + +- bpo-26032: Optimized globbing in pathlib by using os.scandir(); it is now + about 1.5--4 times faster. + +- bpo-25596: Optimized glob() and iglob() functions in the glob module; they + are now about 3--6 times faster. + +- bpo-27928: Add scrypt (password-based key derivation function) to hashlib + module (requires OpenSSL 1.1.0). + +- bpo-27850: Remove 3DES from ssl module's default cipher list to counter + measure sweet32 attack (CVE-2016-2183). + +- bpo-27766: Add ChaCha20 Poly1305 to ssl module's default cipher list. + (Required OpenSSL 1.1.0 or LibreSSL). + +- bpo-25387: Check return value of winsound.MessageBeep. + +- bpo-27866: Add SSLContext.get_ciphers() method to get a list of all + enabled ciphers. + +- bpo-27744: Add AF_ALG (Linux Kernel crypto) to socket module. + +- bpo-26470: Port ssl and hashlib module to OpenSSL 1.1.0. + +- bpo-11620: Fix support for SND_MEMORY in winsound.PlaySound. Based on a + patch by Tim Lesher. + +- bpo-11734: Add support for IEEE 754 half-precision floats to the struct + module. Based on a patch by Eli Stevens. + +- bpo-27919: Deprecated ``extra_path`` distribution option in distutils + packaging. + +- bpo-23229: Add new ``cmath`` constants: ``cmath.inf`` and ``cmath.nan`` to + match ``math.inf`` and ``math.nan``, and also ``cmath.infj`` and + ``cmath.nanj`` to match the format used by complex repr. + +- bpo-27842: The csv.DictReader now returns rows of type OrderedDict. + (Contributed by Steve Holden.) + +- Remove support for passing a file descriptor to os.access. It never worked + but previously didn't raise. + +- bpo-12885: Fix error when distutils encounters symlink. + +- bpo-27881: Fixed possible bugs when setting + sqlite3.Connection.isolation_level. Based on patch by Xiang Zhang. + +- bpo-27861: Fixed a crash in sqlite3.Connection.cursor() when a factory + creates not a cursor. Patch by Xiang Zhang. + +- bpo-19884: Avoid spurious output on OS X with Gnu Readline. + +- bpo-27706: Restore deterministic behavior of random.Random().seed() for + string seeds using seeding version 1. Allows sequences of calls to + random() to exactly match those obtained in Python 2. Patch by Nofar + Schnider. + +- bpo-10513: Fix a regression in Connection.commit(). Statements should not + be reset after a commit. + +- bpo-12319: Chunked transfer encoding support added to + http.client.HTTPConnection requests. The + urllib.request.AbstractHTTPHandler class does not enforce a Content-Length + header any more. If a HTTP request has a file or iterable body, but no + Content-Length header, the library now falls back to use chunked + transfer-encoding. + +- A new version of typing.py from https://github.com/python/typing: - + Collection (only for 3.6) (Issue #27598) - Add FrozenSet to __all__ + (upstream #261) - fix crash in _get_type_vars() (upstream #259) - Remove + the dict constraint in ForwardRef._eval_type (upstream #252) + +- bpo-27832: Make ``_normalize`` parameter to ``Fraction`` constructor + keyword-only, so that ``Fraction(2, 3, 4)`` now raises ``TypeError``. + +- bpo-27539: Fix unnormalised ``Fraction.__pow__`` result in the case of + negative exponent and negative base. + +- bpo-21718: cursor.description is now available for queries using CTEs. + +- bpo-27819: In distutils sdists, simply produce the "gztar" (gzipped tar + format) distributions on all platforms unless "formats" is supplied. + +- bpo-2466: posixpath.ismount now correctly recognizes mount points which + the user does not have permission to access. + +- bpo-9998: On Linux, ctypes.util.find_library now looks in LD_LIBRARY_PATH + for shared libraries. + +- bpo-27573: exit message for code.interact is now configurable. + +- bpo-27930: Improved behaviour of logging.handlers.QueueListener. Thanks to + Paulo Andrade and Petr Viktorin for the analysis and patch. + +- bpo-6766: Distributed reference counting added to multiprocessing to + support nesting of shared values / proxy objects. + +- bpo-21201: Improves readability of multiprocessing error message. Thanks + to Wojciech Walczak for patch. + +- asyncio: Add set_protocol / get_protocol to Transports. + +- bpo-27456: asyncio: Set TCP_NODELAY by default. + +IDLE +---- + +- bpo-15308: Add 'interrupt execution' (^C) to Shell menu. Patch by Roger + Serwy, updated by Bayard Randel. + +- bpo-27922: Stop IDLE tests from 'flashing' gui widgets on the screen. + +- bpo-27891: Consistently group and sort imports within idlelib modules. + +- bpo-17642: add larger font sizes for classroom projection. + +- Add version to title of IDLE help window. + +- bpo-25564: In section on IDLE -- console differences, mention that using + exec means that __builtins__ is defined for each statement. + +- bpo-27821: Fix 3.6.0a3 regression that prevented custom key sets from + being selected when no custom theme was defined. + +C API +----- + +- bpo-26900: Excluded underscored names and other private API from limited + API. + +- bpo-26027: Add support for path-like objects in PyUnicode_FSConverter() & + PyUnicode_FSDecoder(). + +Tests +----- + +- bpo-27427: Additional tests for the math module. Patch by Francisco Couzo. + +- bpo-27953: Skip math and cmath tests that fail on OS X 10.4 due to a poor + libm implementation of tan. + +- bpo-26040: Improve test_math and test_cmath coverage and rigour. Patch by + Jeff Allen. + +- bpo-27787: Call gc.collect() before checking each test for "dangling + threads", since the dangling threads are weak references. + +Build +----- + +- bpo-27566: Fix clean target in freeze makefile (patch by Lisa Roach) + +- bpo-27705: Update message in validate_ucrtbase.py + +- bpo-27976: Deprecate building _ctypes with the bundled copy of libffi on + non-OSX UNIX platforms. + +- bpo-27983: Cause lack of llvm-profdata tool when using clang as required + for PGO linking to be a configure time error rather than make time when + ``--with-optimizations`` is enabled. Also improve our ability to find the + llvm-profdata tool on MacOS and some Linuxes. + +- bpo-21590: Support for DTrace and SystemTap probes. + +- bpo-26307: The profile-opt build now applies PGO to the built-in modules. + +- bpo-26359: Add the --with-optimizations flag to turn on LTO and PGO build + support when available. + +- bpo-27917: Set platform triplets for Android builds. + +- bpo-25825: Update references to the $(LIBPL) installation path on AIX. + This path was changed in 3.2a4. + +- Update OS X installer to use SQLite 3.14.1 and XZ 5.2.2. + +- bpo-21122: Fix LTO builds on OS X. + +- bpo-17128: Build OS X installer with a private copy of OpenSSL. Also + provide a sample Install Certificates command script to install a set of + root certificates from the third-party certifi module. + +Tools/Demos +----------- + +- bpo-27952: Get Tools/scripts/fixcid.py working with Python 3 and the + current "re" module, avoid invalid Python backslash escapes, and fix a bug + parsing escaped C quote signs. + +Windows +------- + +- bpo-28065: Update xz dependency to 5.2.2 and build it from source. + +- bpo-25144: Ensures TargetDir is set before continuing with custom install. + +- bpo-1602: Windows console doesn't input or print Unicode (PEP 528) + +- bpo-27781: Change file system encoding on Windows to UTF-8 (PEP 529) + +- bpo-27731: Opt-out of MAX_PATH on Windows 10 + +- bpo-6135: Adds encoding and errors parameters to subprocess. + +- bpo-27959: Adds oem encoding, alias ansi to mbcs, move aliasmbcs to codec + lookup. + +- bpo-27982: The functions of the winsound module now accept keyword + arguments. + +- bpo-20366: Build full text search support into SQLite on Windows. + +- bpo-27756: Adds new icons for Python files and processes on Windows. + Designs by Cherry Wang. + +- bpo-27883: Update sqlite to 3.14.1.0 on Windows. + + +What's New in Python 3.6.0 alpha 4? +=================================== + +*Release date: 2016-08-15* + +Core and Builtins +----------------- + +- bpo-27704: Optimized creating bytes and bytearray from byte-like objects + and iterables. Speed up to 3 times for short objects. Original patch by + Naoki Inada. + +- bpo-26823: Large sections of repeated lines in tracebacks are now + abbreviated as "[Previous line repeated {count} more times]" by the + builtin traceback rendering. Patch by Emanuel Barry. + +- bpo-27574: Decreased an overhead of parsing keyword arguments in functions + implemented with using Argument Clinic. + +- bpo-22557: Now importing already imported modules is up to 2.5 times + faster. + +- bpo-17596: Include <wincrypt.h> to help with Min GW building. + +- bpo-17599: On Windows, rename the privately defined REPARSE_DATA_BUFFER + structure to avoid conflicting with the definition from Min GW. + +- bpo-27507: Add integer overflow check in bytearray.extend(). Patch by + Xiang Zhang. + +- bpo-27581: Don't rely on wrapping for overflow check in + PySequence_Tuple(). Patch by Xiang Zhang. + +- bpo-1621: Avoid signed integer overflow in list and tuple operations. + Patch by Xiang Zhang. + +- bpo-27419: Standard __import__() no longer look up "__import__" in globals + or builtins for importing submodules or "from import". Fixed a crash if + raise a warning about unabling to resolve package from __spec__ or + __package__. + +- bpo-27083: Respect the PYTHONCASEOK environment variable under Windows. + +- bpo-27514: Make having too many statically nested blocks a SyntaxError + instead of SystemError. + +- bpo-27366: Implemented :pep:`487` (Simpler customization of class + creation). Upon subclassing, the __init_subclass__ classmethod is called + on the base class. Descriptors are initialized with __set_name__ after + class creation. + +Library +------- + +- bpo-26027: Add :pep:`519`/__fspath__() support to the os and os.path + modules. Includes code from Jelle Zijlstra. (See also: bpo-27524) + +- bpo-27598: Add Collections to collections.abc. Patch by Ivan Levkivskyi, + docs by Neil Girdhar. + +- bpo-25958: Support "anti-registration" of special methods from various + ABCs, like __hash__, __iter__ or __len__. All these (and several more) + can be set to None in an implementation class and the behavior will be as + if the method is not defined at all. (Previously, this mechanism existed + only for __hash__, to make mutable classes unhashable.) Code contributed + by Andrew Barnert and Ivan Levkivskyi. + +- bpo-16764: Support keyword arguments to zlib.decompress(). Patch by Xiang + Zhang. + +- bpo-27736: Prevent segfault after interpreter re-initialization due to ref + count problem introduced in code for Issue #27038 in 3.6.0a3. Patch by + Xiang Zhang. + +- bpo-25628: The *verbose* and *rename* parameters for + collections.namedtuple are now keyword-only. + +- bpo-12345: Add mathematical constant tau to math and cmath. See also + :pep:`628`. + +- bpo-26823: traceback.StackSummary.format now abbreviates large sections of + repeated lines as "[Previous line repeated {count} more times]" (this + change then further affects other traceback display operations in the + module). Patch by Emanuel Barry. + +- bpo-27664: Add to concurrent.futures.thread.ThreadPoolExecutor() the + ability to specify a thread name prefix. + +- bpo-27181: Add geometric_mean and harmonic_mean to statistics module. + +- bpo-27573: code.interact now prints an message when exiting. + +- bpo-6422: Add autorange method to timeit.Timer objects. + +- bpo-27773: Correct some memory management errors server_hostname in + _ssl.wrap_socket(). + +- bpo-26750: unittest.mock.create_autospec() now works properly for + subclasses of property() and other data descriptors. Removes the never + publicly used, never documented unittest.mock.DescriptorTypes tuple. + +- bpo-26754: Undocumented support of general bytes-like objects as path in + compile() and similar functions is now deprecated. + +- bpo-26800: Undocumented support of general bytes-like objects as paths in + os functions is now deprecated. + +- bpo-26981: Add _order_ compatibility shim to enum.Enum for Python 2/3 code + bases. + +- bpo-27661: Added tzinfo keyword argument to datetime.combine. + +- In the curses module, raise an error if window.getstr() or window.instr() + is passed a negative value. + +- bpo-27783: Fix possible usage of uninitialized memory in + operator.methodcaller. + +- bpo-27774: Fix possible Py_DECREF on unowned object in _sre. + +- bpo-27760: Fix possible integer overflow in binascii.b2a_qp. + +- bpo-27758: Fix possible integer overflow in the _csv module for large + record lengths. + +- bpo-27568: Prevent HTTPoxy attack (CVE-2016-1000110). Ignore the + HTTP_PROXY variable when REQUEST_METHOD environment is set, which + indicates that the script is in CGI mode. + +- bpo-7063: Remove dead code from the "array" module's slice handling. Patch + by Chuck. + +- bpo-27656: Do not assume sched.h defines any SCHED_* constants. + +- bpo-27130: In the "zlib" module, fix handling of large buffers (typically + 4 GiB) when compressing and decompressing. Previously, inputs were + limited to 4 GiB, and compression and decompression operations did not + properly handle results of 4 GiB. + +- bpo-24773: Implemented :pep:`495` (Local Time Disambiguation). + +- Expose the EPOLLEXCLUSIVE constant (when it is defined) in the select + module. + +- bpo-27567: Expose the EPOLLRDHUP and POLLRDHUP constants in the select + module. + +- bpo-1621: Avoid signed int negation overflow in the "audioop" module. + +- bpo-27533: Release GIL in nt._isdir + +- bpo-17711: Fixed unpickling by the persistent ID with protocol 0. Original + patch by Alexandre Vassalotti. + +- bpo-27522: Avoid an unintentional reference cycle in email.feedparser. + +- bpo-27512: Fix a segfault when os.fspath() called an __fspath__() method + that raised an exception. Patch by Xiang Zhang. + +IDLE +---- + +- bpo-27714: text_textview and test_autocomplete now pass when re-run in the + same process. This occurs when test_idle fails when run with the -w + option but without -jn. Fix warning from test_config. + +- bpo-27621: Put query response validation error messages in the query box + itself instead of in a separate messagebox. Redo tests to match. Add Mac + OSX refinements. Original patch by Mark Roseman. + +- bpo-27620: Escape key now closes Query box as cancelled. + +- bpo-27609: IDLE: tab after initial whitespace should tab, not + autocomplete. This fixes problem with writing docstrings at least twice + indented. + +- bpo-27609: Explicitly return None when there are also non-None returns. In + a few cases, reverse a condition and eliminate a return. + +- bpo-25507: IDLE no longer runs buggy code because of its tkinter imports. + Users must include the same imports required to run directly in Python. + +- bpo-27173: Add 'IDLE Modern Unix' to the built-in key sets. Make the + default key set depend on the platform. Add tests for the changes to the + config module. + +- bpo-27452: add line counter and crc to IDLE configHandler test dump. + +Tests +----- + +- bpo-25805: Skip a test in test_pkgutil as needed that doesn't work when + ``__name__ == __main__``. Patch by SilentGhost. + +- bpo-27472: Add test.support.unix_shell as the path to the default shell. + +- bpo-27369: In test_pyexpat, avoid testing an error message detail that + changed in Expat 2.2.0. + +- bpo-27594: Prevent assertion error when running test_ast with coverage + enabled: ensure code object has a valid first line number. Patch suggested + by Ivan Levkivskyi. + +Windows +------- + +- bpo-27647: Update bundled Tcl/Tk to 8.6.6. + +- bpo-27610: Adds :pep:`514` metadata to Windows installer + +- bpo-27469: Adds a shell extension to the launcher so that drag and drop + works correctly. + +- bpo-27309: Enables proper Windows styles in python[w].exe manifest. + +Build +----- + +- bpo-27713: Suppress spurious build warnings when updating importlib's + bootstrap files. Patch by Xiang Zhang + +- bpo-25825: Correct the references to Modules/python.exp, which is required + on AIX. The references were accidentally changed in 3.5.0a1. + +- bpo-27453: CPP invocation in configure must use CPPFLAGS. Patch by Chi + Hsuan Yen. + +- bpo-27641: The configure script now inserts comments into the makefile to + prevent the pgen and _freeze_importlib executables from being + cross-compiled. + +- bpo-26662: Set PYTHON_FOR_GEN in configure as the Python program to be + used for file generation during the build. + +- bpo-10910: Avoid C++ compilation errors on FreeBSD and OS X. Also update + FreedBSD version checks for the original ctype UTF-8 workaround. + + +What's New in Python 3.6.0 alpha 3? +=================================== + +*Release date: 2016-07-11* + +Core and Builtins +----------------- + +- bpo-27473: Fixed possible integer overflow in bytes and bytearray + concatenations. Patch by Xiang Zhang. + +- bpo-23034: The output of a special Python build with defined COUNT_ALLOCS, + SHOW_ALLOC_COUNT or SHOW_TRACK_COUNT macros is now off by default. It + can be re-enabled using the "-X showalloccount" option. It now outputs to + stderr instead of stdout. + +- bpo-27443: __length_hint__() of bytearray iterators no longer return a + negative integer for a resized bytearray. + +- bpo-27007: The fromhex() class methods of bytes and bytearray subclasses + now return an instance of corresponding subclass. + +Library +------- + +- bpo-26844: Fix error message for imp.find_module() to refer to 'path' + instead of 'name'. Patch by Lev Maximov. + +- bpo-23804: Fix SSL zero-length recv() calls to not block and not raise an + error about unclean EOF. + +- bpo-27466: Change time format returned by http.cookie.time2netscape, + confirming the netscape cookie format and making it consistent with + documentation. + +- bpo-21708: Deprecated dbm.dumb behavior that differs from common dbm + behavior: creating a database in 'r' and 'w' modes and modifying a + database in 'r' mode. + +- bpo-26721: Change the socketserver.StreamRequestHandler.wfile attribute to + implement BufferedIOBase. In particular, the write() method no longer does + partial writes. + +- bpo-22115: Added methods trace_add, trace_remove and trace_info in the + tkinter.Variable class. They replace old methods trace_variable, trace, + trace_vdelete and trace_vinfo that use obsolete Tcl commands and might not + work in future versions of Tcl. Fixed old tracing methods: + trace_vdelete() with wrong mode no longer break tracing, trace_vinfo() now + always returns a list of pairs of strings, tracing in the "u" mode now + works. + +- bpo-26243: Only the level argument to zlib.compress() is keyword argument + now. The first argument is positional-only. + +- bpo-27038: Expose the DirEntry type as os.DirEntry. Code patch by Jelle + Zijlstra. + +- bpo-27186: Update os.fspath()/PyOS_FSPath() to check the return value of + __fspath__() to be either str or bytes. + +- bpo-18726: All optional parameters of the dump(), dumps(), load() and + loads() functions and JSONEncoder and JSONDecoder class constructors in + the json module are now keyword-only. + +- bpo-27319: Methods selection_set(), selection_add(), selection_remove() + and selection_toggle() of ttk.TreeView now allow passing multiple items as + multiple arguments instead of passing them as a tuple. Deprecated + undocumented ability of calling the selection() method with arguments. + +- bpo-27079: Fixed curses.ascii functions isblank(), iscntrl() and + ispunct(). + +- bpo-27294: Numerical state in the repr for Tkinter event objects is now + represented as a combination of known flags. + +- bpo-27177: Match objects in the re module now support index-like objects + as group indices. Based on patches by Jeroen Demeyer and Xiang Zhang. + +- bpo-26754: Some functions (compile() etc) accepted a filename argument + encoded as an iterable of integers. Now only strings and byte-like objects + are accepted. + +- bpo-26536: socket.ioctl now supports SIO_LOOPBACK_FAST_PATH. Patch by + Daniel Stokes. + +- bpo-27048: Prevents distutils failing on Windows when environment + variables contain non-ASCII characters + +- bpo-27330: Fixed possible leaks in the ctypes module. + +- bpo-27238: Got rid of bare excepts in the turtle module. Original patch + by Jelle Zijlstra. + +- bpo-27122: When an exception is raised within the context being managed by + a contextlib.ExitStack() and one of the exit stack generators catches and + raises it in a chain, do not re-raise the original exception when exiting, + let the new chained one through. This avoids the :pep:`479` bug described + in issue25782. + +Security +-------- + +- bpo-27278: Fix os.urandom() implementation using getrandom() on Linux. + Truncate size to INT_MAX and loop until we collected enough random bytes, + instead of casting a directly Py_ssize_t to int. + +Library +------- + +- bpo-16864: sqlite3.Cursor.lastrowid now supports REPLACE statement. + Initial patch by Alex LordThorsen. + +- bpo-26386: Fixed ttk.TreeView selection operations with item id's + containing spaces. + +- bpo-8637: Honor a pager set by the env var MANPAGER (in preference to one + set by the env var PAGER). + +Security +-------- + +- bpo-22636: Avoid shell injection problems with ctypes.util.find_library(). + +Library +------- + +- bpo-16182: Fix various functions in the "readline" module to use the + locale encoding, and fix get_begidx() and get_endidx() to return code + point indexes. + +- bpo-27392: Add loop.connect_accepted_socket(). Patch by Jim Fulton. + +IDLE +---- + +- bpo-27477: IDLE search dialogs now use ttk widgets. + +- bpo-27173: Add 'IDLE Modern Unix' to the built-in key sets. Make the + default key set depend on the platform. Add tests for the changes to the + config module. + +- bpo-27452: make command line "idle-test> python test_help.py" work. + __file__ is relative when python is started in the file's directory. + +- bpo-27452: add line counter and crc to IDLE configHandler test dump. + +- bpo-27380: IDLE: add query.py with base Query dialog and ttk widgets. + Module had subclasses SectionName, ModuleName, and HelpSource, which are + used to get information from users by configdialog and file =>Load Module. + Each subclass has itw own validity checks. Using ModuleName allows users + to edit bad module names instead of starting over. Add tests and delete + the two files combined into the new one. + +- bpo-27372: Test_idle no longer changes the locale. + +- bpo-27365: Allow non-ascii chars in IDLE NEWS.txt, for contributor names. + +- bpo-27245: IDLE: Cleanly delete custom themes and key bindings. + Previously, when IDLE was started from a console or by import, a cascade + of warnings was emitted. Patch by Serhiy Storchaka. + +- bpo-24137: Run IDLE, test_idle, and htest with tkinter default root + disabled. Fix code and tests that fail with this restriction. Fix htests + to not create a second and redundant root and mainloop. + +- bpo-27310: Fix IDLE.app failure to launch on OS X due to vestigial import. + +C API +----- + +- bpo-26754: PyUnicode_FSDecoder() accepted a filename argument encoded as + an iterable of integers. Now only strings and byte-like objects are + accepted. + +Build +----- + +- bpo-28066: Fix the logic that searches build directories for generated + include files when building outside the source tree. + +- bpo-27442: Expose the Android API level that python was built against, in + sysconfig.get_config_vars() as 'ANDROID_API_LEVEL'. + +- bpo-27434: The interpreter that runs the cross-build, found in PATH, must + now be of the same feature version (e.g. 3.6) as the source being built. + +- bpo-26930: Update Windows builds to use OpenSSL 1.0.2h. + +- bpo-23968: Rename the platform directory from plat-$(MACHDEP) to + plat-$(PLATFORM_TRIPLET). Rename the config directory (LIBPL) from + config-$(LDVERSION) to config-$(LDVERSION)-$(PLATFORM_TRIPLET). Install + the platform specific _sysconfigdata module into the platform directory + and rename it to include the ABIFLAGS. + +- Don't use largefile support for GNU/Hurd. + +Tools/Demos +----------- + +- bpo-27332: Fixed the type of the first argument of module-level functions + generated by Argument Clinic. Patch by Petr Viktorin. + +- bpo-27418: Fixed Tools/importbench/importbench.py. + +Documentation +------------- + +- bpo-19489: Moved the search box from the sidebar to the header and footer + of each page. Patch by Ammar Askar. + +- bpo-27285: Update documentation to reflect the deprecation of ``pyvenv`` + and normalize on the term "virtual environment". Patch by Steve Piercy. + +Tests +----- + +- bpo-27027: Added test.support.is_android that is True when this is an + Android build. + + +What's New in Python 3.6.0 alpha 2? +=================================== + +*Release date: 2016-06-13* + +Core and Builtins +----------------- + +- bpo-27095: Simplified MAKE_FUNCTION and removed MAKE_CLOSURE opcodes. + Patch by Demur Rumed. + +- bpo-27190: Raise NotSupportedError if sqlite3 is older than 3.3.1. Patch + by Dave Sawyer. + +- bpo-27286: Fixed compiling BUILD_MAP_UNPACK_WITH_CALL opcode. Calling + function with generalized unpacking (PEP 448) and conflicting keyword + names could cause undefined behavior. + +- bpo-27140: Added BUILD_CONST_KEY_MAP opcode. + +- bpo-27186: Add support for os.PathLike objects to open() (part of + :pep:`519`). + +- bpo-27066: Fixed SystemError if a custom opener (for open()) returns a + negative number without setting an exception. + +- bpo-26983: float() now always return an instance of exact float. The + deprecation warning is emitted if __float__ returns an instance of a + strict subclass of float. In a future versions of Python this can be an + error. + +- bpo-27097: Python interpreter is now about 7% faster due to optimized + instruction decoding. Based on patch by Demur Rumed. + +- bpo-26647: Python interpreter now uses 16-bit wordcode instead of + bytecode. Patch by Demur Rumed. + +- bpo-23275: Allow assigning to an empty target list in round brackets: () = + iterable. + +- bpo-27243: Update the __aiter__ protocol: instead of returning an + awaitable that resolves to an asynchronous iterator, the asynchronous + iterator should be returned directly. Doing the former will trigger a + PendingDeprecationWarning. + +Library +------- + +- Comment out socket (SO_REUSEPORT) and posix (O_SHLOCK, O_EXLOCK) constants + exposed on the API which are not implemented on GNU/Hurd. They would not + work at runtime anyway. + +- bpo-27025: Generated names for Tkinter widgets are now more meaningful and + recognizable. + +- bpo-25455: Fixed crashes in repr of recursive ElementTree.Element and + functools.partial objects. + +- bpo-27294: Improved repr for Tkinter event objects. + +- bpo-20508: Improve exception message of IPv{4,6}Network.__getitem__. Patch + by Gareth Rees. + +Security +-------- + +- bpo-26556: Update expat to 2.1.1, fixes CVE-2015-1283. + +- Fix TLS stripping vulnerability in smtplib, CVE-2016-0772. Reported by + Team Oststrom. + +Library +------- + +- bpo-21386: Implement missing IPv4Address.is_global property. It was + documented since 07a5610bae9d. Initial patch by Roger Luethi. + +- bpo-27029: Removed deprecated support of universal newlines mode from + ZipFile.open(). + +- bpo-27030: Unknown escapes consisting of ``'\'`` and an ASCII letter in + regular expressions now are errors. The re.LOCALE flag now can be used + only with bytes patterns. + +- bpo-27186: Add os.PathLike support to DirEntry (part of :pep:`519`). + Initial patch by Jelle Zijlstra. + +- bpo-20900: distutils register command now decodes HTTP responses + correctly. Initial patch by ingrid. + +- bpo-27186: Add os.PathLike support to pathlib, removing its provisional + status (part of PEP 519). Initial patch by Dusty Phillips. + +- bpo-27186: Add support for os.PathLike objects to os.fsencode() and + os.fsdecode() (part of :pep:`519`). + +- bpo-27186: Introduce os.PathLike and os.fspath() (part of :pep:`519`). + +- A new version of typing.py provides several new classes and features: + @overload outside stubs, Reversible, DefaultDict, Text, ContextManager, + Type[], NewType(), TYPE_CHECKING, and numerous bug fixes (note that some + of the new features are not yet implemented in mypy or other static + analyzers). Also classes for :pep:`492` (Awaitable, AsyncIterable, + AsyncIterator) have been added (in fact they made it into 3.5.1 but were + never mentioned). + +- bpo-25738: Stop http.server.BaseHTTPRequestHandler.send_error() from + sending a message body for 205 Reset Content. Also, don't send Content + header fields in responses that don't have a body. Patch by Susumu + Koshiba. + +- bpo-21313: Fix the "platform" module to tolerate when sys.version contains + truncated build information. + +Security +-------- + +- bpo-26839: On Linux, :func:`os.urandom` now calls ``getrandom()`` with + ``GRND_NONBLOCK`` to fall back on reading ``/dev/urandom`` if the urandom + entropy pool is not initialized yet. Patch written by Colm Buckley. + +Library +------- + +- bpo-23883: Added missing APIs to __all__ to match the documented APIs for + the following modules: cgi, mailbox, mimetypes, plistlib and smtpd. + Patches by Jacek Kołodziej. + +- bpo-27164: In the zlib module, allow decompressing raw Deflate streams + with a predefined zdict. Based on patch by Xiang Zhang. + +- bpo-24291: Fix wsgiref.simple_server.WSGIRequestHandler to completely + write data to the client. Previously it could do partial writes and + truncate data. Also, wsgiref.handler.ServerHandler can now handle stdout + doing partial writes, but this is deprecated. + +- bpo-21272: Use _sysconfigdata.py to initialize distutils.sysconfig. + +- bpo-19611: :mod:`inspect` now reports the implicit ``.0`` parameters + generated by the compiler for comprehension and generator expression + scopes as if they were positional-only parameters called ``implicit0``. + Patch by Jelle Zijlstra. + +- bpo-26809: Add ``__all__`` to :mod:`string`. Patch by Emanuel Barry. + +- bpo-26373: subprocess.Popen.communicate now correctly ignores + BrokenPipeError when the child process dies before .communicate() is + called in more/all circumstances. + +- signal, socket, and ssl module IntEnum constant name lookups now return a + consistent name for values having multiple names. Ex: signal.Signals(6) + now refers to itself as signal.SIGALRM rather than flipping between that + and signal.SIGIOT based on the interpreter's hash randomization seed. + +- bpo-27167: Clarify the subprocess.CalledProcessError error message text + when the child process died due to a signal. + +- bpo-25931: Don't define socketserver.Forking* names on platforms such as + Windows that do not support os.fork(). + +- bpo-21776: distutils.upload now correctly handles HTTPError. Initial patch + by Claudiu Popa. + +- bpo-26526: Replace custom parse tree validation in the parser module with + a simple DFA validator. + +- bpo-27114: Fix SSLContext._load_windows_store_certs fails with + PermissionError + +- bpo-18383: Avoid creating duplicate filters when using filterwarnings and + simplefilter. Based on patch by Alex Shkop. + +- bpo-23026: winreg.QueryValueEx() now return an integer for REG_QWORD type. + +- bpo-26741: subprocess.Popen destructor now emits a ResourceWarning warning + if the child process is still running. + +- bpo-27056: Optimize pickle.load() and pickle.loads(), up to 10% faster to + deserialize a lot of small objects. + +- bpo-21271: New keyword only parameters in reset_mock call. + +IDLE +---- + +- bpo-5124: Paste with text selected now replaces the selection on X11. This + matches how paste works on Windows, Mac, most modern Linux apps, and ttk + widgets. Original patch by Serhiy Storchaka. + +- bpo-24750: Switch all scrollbars in IDLE to ttk versions. Where needed, + minimal tests are added to cover changes. + +- bpo-24759: IDLE requires tk 8.5 and availability ttk widgets. Delete now + unneeded tk version tests and code for older versions. Add test for IDLE + syntax colorizer. + +- bpo-27239: idlelib.macosx.isXyzTk functions initialize as needed. + +- bpo-27262: move Aqua unbinding code, which enable context menus, to + macosx. + +- bpo-24759: Make clear in idlelib.idle_test.__init__ that the directory is + a private implementation of test.test_idle and tool for maintainers. + +- bpo-27196: Stop 'ThemeChanged' warnings when running IDLE tests. These + persisted after other warnings were suppressed in #20567. Apply Serhiy + Storchaka's update_idletasks solution to four test files. Record this + additional advice in idle_test/README.txt + +- bpo-20567: Revise idle_test/README.txt with advice about avoiding tk + warning messages from tests. Apply advice to several IDLE tests. + +- bpo-24225: Update idlelib/README.txt with new file names and event + handlers. + +- bpo-27156: Remove obsolete code not used by IDLE. + +- bpo-27117: Make colorizer htest and turtledemo work with dark themes. Move + code for configuring text widget colors to a new function. + +- bpo-24225: Rename many `idlelib/*.py` and `idle_test/test_*.py` files. + Edit files to replace old names with new names when the old name referred + to the module rather than the class it contained. See the issue and IDLE + section in What's New in 3.6 for more. + +- bpo-26673: When tk reports font size as 0, change to size 10. Such fonts + on Linux prevented the configuration dialog from opening. + +- bpo-21939: Add test for IDLE's percolator. Original patch by Saimadhav + Heblikar. + +- bpo-21676: Add test for IDLE's replace dialog. Original patch by Saimadhav + Heblikar. + +- bpo-18410: Add test for IDLE's search dialog. Original patch by Westley + Martínez. + +- bpo-21703: Add test for undo delegator. Patch mostly by Saimadhav + Heblikar . + +- bpo-27044: Add ConfigDialog.remove_var_callbacks to stop memory leaks. + +- bpo-23977: Add more asserts to test_delegator. + +Documentation +------------- + +- bpo-16484: Change the default PYTHONDOCS URL to "https:", and fix the + resulting links to use lowercase. Patch by Sean Rodman, test by Kaushik + Nadikuditi. + +- bpo-24136: Document the new :pep:`448` unpacking syntax of 3.5. + +- bpo-22558: Add remaining doc links to source code for Python-coded + modules. Patch by Yoni Lavi. + +Tests +----- + +- bpo-25285: regrtest now uses subprocesses when the -j1 command line option + is used: each test file runs in a fresh child process. Before, the -j1 + option was ignored. + +- bpo-25285: Tools/buildbot/test.bat script now uses -j1 by default to run + each test file in fresh child process. + +Windows +------- + +- bpo-27064: The py.exe launcher now defaults to Python 3. The Windows + launcher ``py.exe`` no longer prefers an installed Python 2 version over + Python 3 by default when used interactively. + +Build +----- + +- bpo-27229: Fix the cross-compiling pgen rule for in-tree builds. Patch by + Xavier de Gaye. + +- bpo-26930: Update OS X 10.5+ 32-bit-only installer to build and link with + OpenSSL 1.0.2h. + +Windows +------- + +- bpo-17500: Remove unused and outdated icons. (See also: + https://github.com/python/pythondotorg/issues/945) + +C API +----- + +- bpo-27186: Add the PyOS_FSPath() function (part of :pep:`519`). + +- bpo-26282: PyArg_ParseTupleAndKeywords() now supports positional-only + parameters. + +Tools/Demos +----------- + +- bpo-26282: Argument Clinic now supports positional-only and keyword + parameters in the same function. + + +What's New in Python 3.6.0 alpha 1? +=================================== + +*Release date: 2016-05-16* + +Core and Builtins +----------------- + +- bpo-20041: Fixed TypeError when frame.f_trace is set to None. Patch by + Xavier de Gaye. + +- bpo-26168: Fixed possible refleaks in failing Py_BuildValue() with the "N" + format unit. + +- bpo-26991: Fix possible refleak when creating a function with annotations. + +- bpo-27039: Fixed bytearray.remove() for values greater than 127. Based on + patch by Joe Jevnik. + +- bpo-23640: int.from_bytes() no longer bypasses constructors for + subclasses. + +- bpo-27005: Optimized the float.fromhex() class method for exact float. It + is now 2 times faster. + +- bpo-18531: Single var-keyword argument of dict subtype was passed + unscathed to the C-defined function. Now it is converted to exact dict. + +- bpo-26811: gc.get_objects() no longer contains a broken tuple with NULL + pointer. + +- bpo-20120: Use RawConfigParser for .pypirc parsing, removing support for + interpolation unintentionally added with move to Python 3. Behavior no + longer does any interpolation in .pypirc files, matching behavior in + Python 2.7 and Setuptools 19.0. + +- bpo-26249: Memory functions of the :c:func:`PyMem_Malloc` domain + (:c:data:`PYMEM_DOMAIN_MEM`) now use the :ref:`pymalloc allocator + <pymalloc>` rather than system :c:func:`malloc`. Applications calling + :c:func:`PyMem_Malloc` without holding the GIL can now crash: use + ``PYTHONMALLOC=debug`` environment variable to validate the usage of + memory allocators in your application. + +- bpo-26802: Optimize function calls only using unpacking like + ``func(*tuple)`` (no other positional argument, no keyword): avoid copying + the tuple. Patch written by Joe Jevnik. + +- bpo-26659: Make the builtin slice type support cycle collection. + +- bpo-26718: super.__init__ no longer leaks memory if called multiple times. + NOTE: A direct call of super.__init__ is not endorsed! + +- bpo-27138: Fix the doc comment for FileFinder.find_spec(). + +- bpo-27147: Mention :pep:`420` in the importlib docs. + +- bpo-25339: PYTHONIOENCODING now has priority over locale in setting the + error handler for stdin and stdout. + +- bpo-26494: Fixed crash on iterating exhausting iterators. Affected classes + are generic sequence iterators, iterators of str, bytes, bytearray, list, + tuple, set, frozenset, dict, OrderedDict, corresponding views and + os.scandir() iterator. + +- bpo-26574: Optimize ``bytes.replace(b'', b'.')`` and + ``bytearray.replace(b'', b'.')``. Patch written by Josh Snider. + +- bpo-26581: If coding cookie is specified multiple times on a line in + Python source code file, only the first one is taken to account. + +- bpo-19711: Add tests for reloading namespace packages. + +- bpo-21099: Switch applicable importlib tests to use :pep:`451` API. + +- bpo-26563: Debug hooks on Python memory allocators now raise a fatal error + if functions of the :c:func:`PyMem_Malloc` family are called without + holding the GIL. + +- bpo-26564: On error, the debug hooks on Python memory allocators now use + the :mod:`tracemalloc` module to get the traceback where a memory block + was allocated. + +- bpo-26558: The debug hooks on Python memory allocator + :c:func:`PyObject_Malloc` now detect when functions are called without + holding the GIL. + +- bpo-26516: Add :envvar:`PYTHONMALLOC` environment variable to set the + Python memory allocators and/or install debug hooks. + +- bpo-26516: The :c:func:`PyMem_SetupDebugHooks` function can now also be + used on Python compiled in release mode. + +- bpo-26516: The :envvar:`PYTHONMALLOCSTATS` environment variable can now + also be used on Python compiled in release mode. It now has no effect if + set to an empty string. + +- bpo-26516: In debug mode, debug hooks are now also installed on Python + memory allocators when Python is configured without pymalloc. + +- bpo-26464: Fix str.translate() when string is ASCII and first replacements + removes character, but next replacement uses a non-ASCII character or a + string longer than 1 character. Regression introduced in Python 3.5.0. + +- bpo-22836: Ensure exception reports from PyErr_Display() and + PyErr_WriteUnraisable() are sensible even when formatting them produces + secondary errors. This affects the reports produced by + sys.__excepthook__() and when __del__() raises an exception. + +- bpo-26302: Correct behavior to reject comma as a legal character for + cookie names. + +- bpo-26136: Upgrade the warning when a generator raises StopIteration from + PendingDeprecationWarning to DeprecationWarning. Patch by Anish Shah. + +- bpo-26204: The compiler now ignores all constant statements: bytes, str, + int, float, complex, name constants (None, False, True), Ellipsis and + ast.Constant; not only str and int. For example, ``1.0`` is now ignored in + ``def f(): 1.0``. + +- bpo-4806: Avoid masking the original TypeError exception when using star + (``*``) unpacking in function calls. Based on patch by Hagen Fürstenau + and Daniel Urban. + +- bpo-26146: Add a new kind of AST node: ``ast.Constant``. It can be used by + external AST optimizers, but the compiler does not emit directly such + node. + +- bpo-23601: Sped-up allocation of dict key objects by using Python's small + object allocator. (Contributed by Julian Taylor.) + +- bpo-18018: Import raises ImportError instead of SystemError if a relative + import is attempted without a known parent package. + +- bpo-25843: When compiling code, don't merge constants if they are equal + but have a different types. For example, ``f1, f2 = lambda: 1, lambda: + 1.0`` is now correctly compiled to two different functions: ``f1()`` + returns ``1`` (``int``) and ``f2()`` returns ``1.0`` (``float``), even if + ``1`` and ``1.0`` are equal. + +- bpo-26107: The format of the ``co_lnotab`` attribute of code objects + changes to support negative line number delta. + +- bpo-26154: Add a new private _PyThreadState_UncheckedGet() function to get + the current Python thread state, but don't issue a fatal error if it is + NULL. This new function must be used instead of accessing directly the + _PyThreadState_Current variable. The variable is no more exposed since + Python 3.5.1 to hide the exact implementation of atomic C types, to avoid + compiler issues. + +- bpo-25791: If __package__ != __spec__.parent or if neither __package__ or + __spec__ are defined then ImportWarning is raised. + +- bpo-22995: [UPDATE] Comment out the one of the pickleability tests in + _PyObject_GetState() due to regressions observed in Cython-based projects. + +- bpo-25961: Disallowed null characters in the type name. + +- bpo-25973: Fix segfault when an invalid nonlocal statement binds a name + starting with two underscores. + +- bpo-22995: Instances of extension types with a state that aren't + subclasses of list or dict and haven't implemented any pickle-related + methods (__reduce__, __reduce_ex__, __getnewargs__, __getnewargs_ex__, or + __getstate__), can no longer be pickled. Including memoryview. + +- bpo-20440: Massive replacing unsafe attribute setting code with special + macro Py_SETREF. + +- bpo-25766: Special method __bytes__() now works in str subclasses. + +- bpo-25421: __sizeof__ methods of builtin types now use dynamic basic size. + This allows sys.getsize() to work correctly with their subclasses with + __slots__ defined. + +- bpo-25709: Fixed problem with in-place string concatenation and utf-8 + cache. + +- bpo-5319: New Py_FinalizeEx() API allowing Python to set an exit status of + 120 on failure to flush buffered streams. + +- bpo-25485: telnetlib.Telnet is now a context manager. + +- bpo-24097: Fixed crash in object.__reduce__() if slot name is freed inside + __getattr__. + +- bpo-24731: Fixed crash on converting objects with special methods + __bytes__, __trunc__, and __float__ returning instances of subclasses of + bytes, int, and float to subclasses of bytes, int, and float + correspondingly. + +- bpo-25630: Fix a possible segfault during argument parsing in functions + that accept filesystem paths. + +- bpo-23564: Fixed a partially broken sanity check in the _posixsubprocess + internals regarding how fds_to_pass were passed to the child. The bug had + no actual impact as subprocess.py already avoided it. + +- bpo-25388: Fixed tokenizer crash when processing undecodable source code + with a null byte. + +- bpo-25462: The hash of the key now is calculated only once in most + operations in C implementation of OrderedDict. + +- bpo-22995: Default implementation of __reduce__ and __reduce_ex__ now + rejects builtin types with not defined __new__. + +- bpo-24802: Avoid buffer overreads when int(), float(), compile(), exec() + and eval() are passed bytes-like objects. These objects are not + necessarily terminated by a null byte, but the functions assumed they + were. + +- bpo-25555: Fix parser and AST: fill lineno and col_offset of "arg" node + when compiling AST from Python objects. + +- bpo-24726: Fixed a crash and leaking NULL in repr() of OrderedDict that + was mutated by direct calls of dict methods. + +- bpo-25449: Iterating OrderedDict with keys with unstable hash now raises + KeyError in C implementations as well as in Python implementation. + +- bpo-25395: Fixed crash when highly nested OrderedDict structures were + garbage collected. + +- bpo-25401: Optimize bytes.fromhex() and bytearray.fromhex(): they are now + between 2x and 3.5x faster. + +- bpo-25399: Optimize bytearray % args using the new private _PyBytesWriter + API. Formatting is now between 2.5 and 5 times faster. + +- bpo-25274: sys.setrecursionlimit() now raises a RecursionError if the new + recursion limit is too low depending at the current recursion depth. + Modify also the "lower-water mark" formula to make it monotonic. This mark + is used to decide when the overflowed flag of the thread state is reset. + +- bpo-24402: Fix input() to prompt to the redirected stdout when + sys.stdout.fileno() fails. + +- bpo-25349: Optimize bytes % args using the new private _PyBytesWriter API. + Formatting is now up to 2 times faster. + +- bpo-24806: Prevent builtin types that are not allowed to be subclassed + from being subclassed through multiple inheritance. + +- bpo-25301: The UTF-8 decoder is now up to 15 times as fast for error + handlers: ``ignore``, ``replace`` and ``surrogateescape``. + +- bpo-24848: Fixed a number of bugs in UTF-7 decoding of misformed data. + +- bpo-25267: The UTF-8 encoder is now up to 75 times as fast for error + handlers: ``ignore``, ``replace``, ``surrogateescape``, ``surrogatepass``. + Patch co-written with Serhiy Storchaka. + +- bpo-25280: Import trace messages emitted in verbose (-v) mode are no + longer formatted twice. + +- bpo-25227: Optimize ASCII and latin1 encoders with the ``surrogateescape`` + error handler: the encoders are now up to 3 times as fast. Initial patch + written by Serhiy Storchaka. + +- bpo-25003: On Solaris 11.3 or newer, os.urandom() now uses the getrandom() + function instead of the getentropy() function. The getentropy() function + is blocking to generate very good quality entropy, os.urandom() doesn't + need such high-quality entropy. + +- bpo-9232: Modify Python's grammar to allow trailing commas in the argument + list of a function declaration. For example, "def f(\*, a = 3,): pass" is + now legal. Patch from Mark Dickinson. + +- bpo-24965: Implement :pep:`498` "Literal String Interpolation". This + allows you to embed expressions inside f-strings, which are converted to + normal strings at run time. Given x=3, then f'value={x}' == 'value=3'. + Patch by Eric V. Smith. + +- bpo-26478: Fix semantic bugs when using binary operators with dictionary + views and tuples. + +- bpo-26171: Fix possible integer overflow and heap corruption in + zipimporter.get_data(). + +- bpo-25660: Fix TAB key behaviour in REPL with readline. + +- bpo-26288: Optimize PyLong_AsDouble. + +- bpo-26289: Optimize floor and modulo division for single-digit longs. + Microbenchmarks show 2-2.5x improvement. Built-in 'divmod' function is + now also ~10% faster. (See also: bpo-26315) + +- bpo-25887: Raise a RuntimeError when a coroutine object is awaited more + than once. + +Library +------- + +- bpo-27057: Fix os.set_inheritable() on Android, ioctl() is blocked by + SELinux and fails with EACCESS. The function now falls back to fcntl(). + Patch written by Michał Bednarski. + +- bpo-27014: Fix infinite recursion using typing.py. Thanks to Kalle Tuure! + +- bpo-27031: Removed dummy methods in Tkinter widget classes: tk_menuBar() + and tk_bindForTraversal(). + +- bpo-14132: Fix urllib.request redirect handling when the target only has a + query string. Original fix by Ján Janech. + +- bpo-17214: The "urllib.request" module now percent-encodes non-ASCII bytes + found in redirect target URLs. Some servers send Location header fields + with non-ASCII bytes, but "http.client" requires the request target to be + ASCII-encodable, otherwise a UnicodeEncodeError is raised. Based on patch + by Christian Heimes. + +- bpo-27033: The default value of the decode_data parameter for + smtpd.SMTPChannel and smtpd.SMTPServer constructors is changed to False. + +- bpo-27034: Removed deprecated class asynchat.fifo. + +- bpo-26870: Added readline.set_auto_history(), which can stop entries being + automatically added to the history list. Based on patch by Tyler + Crompton. + +- bpo-26039: zipfile.ZipFile.open() can now be used to write data into a ZIP + file, as well as for extracting data. Patch by Thomas Kluyver. + +- bpo-26892: Honor debuglevel flag in urllib.request.HTTPHandler. Patch + contributed by Chi Hsuan Yen. + +- bpo-22274: In the subprocess module, allow stderr to be redirected to + stdout even when stdout is not redirected. Patch by Akira Li. + +- bpo-26807: mock_open 'files' no longer error on readline at end of file. + Patch from Yolanda Robla. + +- bpo-25745: Fixed leaking a userptr in curses panel destructor. + +- bpo-26977: Removed unnecessary, and ignored, call to sum of squares helper + in statistics.pvariance. + +- bpo-26002: Use bisect in statistics.median instead of a linear search. + Patch by Upendra Kuma. + +- bpo-25974: Make use of new Decimal.as_integer_ratio() method in statistics + module. Patch by Stefan Krah. + +- bpo-26996: Add secrets module as described in :pep:`506`. + +- bpo-26881: The modulefinder module now supports extended opcode arguments. + +- bpo-23815: Fixed crashes related to directly created instances of types in + _tkinter and curses.panel modules. + +- bpo-17765: weakref.ref() no longer silently ignores keyword arguments. + Patch by Georg Brandl. + +- bpo-26873: xmlrpc now raises ResponseError on unsupported type tags + instead of silently return incorrect result. + +- bpo-26915: The __contains__ methods in the collections ABCs now check for + identity before checking equality. This better matches the behavior of + the concrete classes, allows sensible handling of NaNs, and makes it + easier to reason about container invariants. + +- bpo-26711: Fixed the comparison of plistlib.Data with other types. + +- bpo-24114: Fix an uninitialized variable in `ctypes.util`. The bug only + occurs on SunOS when the ctypes implementation searches for the `crle` + program. Patch by Xiang Zhang. Tested on SunOS by Kees Bos. + +- bpo-26864: In urllib.request, change the proxy bypass host checking + against no_proxy to be case-insensitive, and to not match unrelated host + names that happen to have a bypassed hostname as a suffix. Patch by Xiang + Zhang. + +- bpo-24902: Print server URL on http.server startup. Initial patch by + Felix Kaiser. + +- bpo-25788: fileinput.hook_encoded() now supports an "errors" argument for + passing to open. Original patch by Joseph Hackman. + +- bpo-26634: recursive_repr() now sets __qualname__ of wrapper. Patch by + Xiang Zhang. + +- bpo-26804: urllib.request will prefer lower_case proxy environment + variables over UPPER_CASE or Mixed_Case ones. Patch contributed by + Hans-Peter Jansen. + +- bpo-26837: assertSequenceEqual() now correctly outputs non-stringified + differing items (like bytes in the -b mode). This affects + assertListEqual() and assertTupleEqual(). + +- bpo-26041: Remove "will be removed in Python 3.7" from deprecation + messages of platform.dist() and platform.linux_distribution(). Patch by + Kumaripaba Miyurusara Athukorala. + +- bpo-26822: itemgetter, attrgetter and methodcaller objects no longer + silently ignore keyword arguments. + +- bpo-26733: Disassembling a class now disassembles class and static + methods. Patch by Xiang Zhang. + +- bpo-26801: Fix error handling in :func:`shutil.get_terminal_size`, catch + :exc:`AttributeError` instead of :exc:`NameError`. Patch written by + Emanuel Barry. + +- bpo-24838: tarfile's ustar and gnu formats now correctly calculate name + and link field limits for multibyte character encodings like utf-8. + +Security +-------- + +- bpo-26657: Fix directory traversal vulnerability with http.server on + Windows. This fixes a regression that was introduced in 3.3.4rc1 and + 3.4.0rc1. Based on patch by Philipp Hagemeister. + +Library +------- + +- bpo-26717: Stop encoding Latin-1-ized WSGI paths with UTF-8. Patch by + Anthony Sottile. + +- bpo-26782: Add STARTUPINFO to subprocess.__all__ on Windows. + +- bpo-26404: Add context manager to socketserver. Patch by Aviv Palivoda. + +- bpo-26735: Fix :func:`os.urandom` on Solaris 11.3 and newer when reading + more than 1,024 bytes: call ``getrandom()`` multiple times with a limit of + 1024 bytes per call. + +- bpo-26585: Eliminate http.server._quote_html() and use + html.escape(quote=False). Patch by Xiang Zhang. + +- bpo-26685: Raise OSError if closing a socket fails. + +- bpo-16329: Add .webm to mimetypes.types_map. Patch by Giampaolo Rodola'. + +- bpo-13952: Add .csv to mimetypes.types_map. Patch by Geoff Wilson. + +- bpo-26587: the site module now allows .pth files to specify files to be + added to sys.path (e.g. zip files). + +- bpo-25609: Introduce contextlib.AbstractContextManager and + typing.ContextManager. + +- bpo-26709: Fixed Y2038 problem in loading binary PLists. + +- bpo-23735: Handle terminal resizing with Readline 6.3+ by installing our + own SIGWINCH handler. Patch by Eric Price. + +- bpo-25951: Change SSLSocket.sendall() to return None, as explicitly + documented for plain socket objects. Patch by Aviv Palivoda. + +- bpo-26586: In http.server, respond with "413 Request header fields too + large" if there are too many header fields to parse, rather than killing + the connection and raising an unhandled exception. Patch by Xiang Zhang. + +- bpo-26676: Added missing XMLPullParser to ElementTree.__all__. + +- bpo-22854: Change BufferedReader.writable() and BufferedWriter.readable() + to always return False. + +- bpo-26492: Exhausted iterator of array.array now conforms with the + behavior of iterators of other mutable sequences: it lefts exhausted even + if iterated array is extended. + +- bpo-26641: doctest.DocFileTest and doctest.testfile() now support packages + (module splitted into multiple directories) for the package parameter. + +- bpo-25195: Fix a regression in mock.MagicMock. _Call is a subclass of + tuple (changeset 3603bae63c13 only works for classes) so we need to + implement __ne__ ourselves. Patch by Andrew Plummer. + +- bpo-26644: Raise ValueError rather than SystemError when a negative length + is passed to SSLSocket.recv() or read(). + +- bpo-23804: Fix SSL recv(0) and read(0) methods to return zero bytes + instead of up to 1024. + +- bpo-26616: Fixed a bug in datetime.astimezone() method. + +- bpo-26637: The :mod:`importlib` module now emits an :exc:`ImportError` + rather than a :exc:`TypeError` if :func:`__import__` is tried during the + Python shutdown process but :data:`sys.path` is already cleared (set to + ``None``). + +- bpo-21925: :func:`warnings.formatwarning` now catches exceptions when + calling :func:`linecache.getline` and + :func:`tracemalloc.get_object_traceback` to be able to log + :exc:`ResourceWarning` emitted late during the Python shutdown process. + +- bpo-23848: On Windows, faulthandler.enable() now also installs an + exception handler to dump the traceback of all Python threads on any + Windows exception, not only on UNIX signals (SIGSEGV, SIGFPE, SIGABRT). + +- bpo-26530: Add C functions :c:func:`_PyTraceMalloc_Track` and + :c:func:`_PyTraceMalloc_Untrack` to track memory blocks using the + :mod:`tracemalloc` module. Add :c:func:`_PyTraceMalloc_GetTraceback` to + get the traceback of an object. + +- bpo-26588: The _tracemalloc now supports tracing memory allocations of + multiple address spaces (domains). + +- bpo-24266: Ctrl+C during Readline history search now cancels the search + mode when compiled with Readline 7. + +- bpo-26590: Implement a safe finalizer for the _socket.socket type. It now + releases the GIL to close the socket. + +- bpo-18787: spwd.getspnam() now raises a PermissionError if the user + doesn't have privileges. + +- bpo-26560: Avoid potential ValueError in BaseHandler.start_response. + Initial patch by Peter Inglesby. + +- bpo-26567: Add a new function :c:func:`PyErr_ResourceWarning` function to + pass the destroyed object. Add a *source* attribute to + :class:`warnings.WarningMessage`. Add warnings._showwarnmsg() which uses + tracemalloc to get the traceback where source object was allocated. + +Security +-------- + +- bpo-26313: ssl.py _load_windows_store_certs fails if windows cert store is + empty. Patch by Baji. + +Library +------- + +- bpo-26569: Fix :func:`pyclbr.readmodule` and :func:`pyclbr.readmodule_ex` + to support importing packages. + +- bpo-26499: Account for remaining Content-Length in HTTPResponse.readline() + and read1(). Based on patch by Silent Ghost. Also document that + HTTPResponse now supports these methods. + +- bpo-25320: Handle sockets in directories unittest discovery is scanning. + Patch from Victor van den Elzen. + +- bpo-16181: cookiejar.http2time() now returns None if year is higher than + datetime.MAXYEAR. + +- bpo-26513: Fixes platform module detection of Windows Server + +- bpo-23718: Fixed parsing time in week 0 before Jan 1. Original patch by + Tamás Bence Gedai. + +- bpo-26323: Add Mock.assert_called() and Mock.assert_called_once() methods + to unittest.mock. Patch written by Amit Saha. + +- bpo-20589: Invoking Path.owner() and Path.group() on Windows now raise + NotImplementedError instead of ImportError. + +- bpo-26177: Fixed the keys() method for Canvas and Scrollbar widgets. + +- bpo-15068: Got rid of excessive buffering in fileinput. The bufsize + parameter is now deprecated and ignored. + +- bpo-19475: Added an optional argument timespec to the datetime isoformat() + method to choose the precision of the time component. + +- bpo-2202: Fix UnboundLocalError in + AbstractDigestAuthHandler.get_algorithm_impls. Initial patch by Mathieu + Dupuy. + +- bpo-26167: Minimized overhead in copy.copy() and copy.deepcopy(). + Optimized copying and deepcopying bytearrays, NotImplemented, slices, + short lists, tuples, dicts, sets. + +- bpo-25718: Fixed pickling and copying the accumulate() iterator with total + is None. + +- bpo-26475: Fixed debugging output for regular expressions with the (?x) + flag. + +- bpo-26482: Allowed pickling recursive dequeues. + +- bpo-26335: Make mmap.write() return the number of bytes written like other + write methods. Patch by Jakub Stasiak. + +- bpo-26457: Fixed the subnets() methods in IP network classes for the case + when resulting prefix length is equal to maximal prefix length. Based on + patch by Xiang Zhang. + +- bpo-26385: Remove the file if the internal open() call in + NamedTemporaryFile() fails. Patch by Silent Ghost. + +- bpo-26402: Fix XML-RPC client to retry when the server shuts down a + persistent connection. This was a regression related to the new + http.client.RemoteDisconnected exception in 3.5.0a4. + +- bpo-25913: Leading ``<~`` is optional now in base64.a85decode() with + adobe=True. Patch by Swati Jaiswal. + +- bpo-26186: Remove an invalid type check in importlib.util.LazyLoader. + +- bpo-26367: importlib.__import__() raises ImportError like + builtins.__import__() when ``level`` is specified but without an + accompanying package specified. + +- bpo-26309: In the "socketserver" module, shut down the request (closing + the connected socket) when verify_request() returns false. Patch by Aviv + Palivoda. + +- bpo-23430: Change the socketserver module to only catch exceptions raised + from a request handler that are derived from Exception (instead of + BaseException). Therefore SystemExit and KeyboardInterrupt no longer + trigger the handle_error() method, and will now to stop a single-threaded + server. + +Security +-------- + +- bpo-25939: On Windows open the cert store readonly in + ssl.enum_certificates. + +Library +------- + +- bpo-25995: os.walk() no longer uses FDs proportional to the tree depth. + +- bpo-25994: Added the close() method and the support of the context manager + protocol for the os.scandir() iterator. + +- bpo-23992: multiprocessing: make MapResult not fail-fast upon exception. + +- bpo-26243: Support keyword arguments to zlib.compress(). Patch by Aviv + Palivoda. + +- bpo-26117: The os.scandir() iterator now closes file descriptor not only + when the iteration is finished, but when it was failed with error. + +- bpo-25949: __dict__ for an OrderedDict instance is now created only when + needed. + +- bpo-25911: Restored support of bytes paths in os.walk() on Windows. + +- bpo-26045: Add UTF-8 suggestion to error message when posting a + non-Latin-1 string with http.client. + +- bpo-26039: Added zipfile.ZipInfo.from_file() and zipinfo.ZipInfo.is_dir(). + Patch by Thomas Kluyver. + +- bpo-12923: Reset FancyURLopener's redirect counter even if there is an + exception. Based on patches by Brian Brazil and Daniel Rocco. + +- bpo-25945: Fixed a crash when unpickle the functools.partial object with + wrong state. Fixed a leak in failed functools.partial constructor. "args" + and "keywords" attributes of functools.partial have now always types tuple + and dict correspondingly. + +- bpo-26202: copy.deepcopy() now correctly copies range() objects with + non-atomic attributes. + +- bpo-23076: Path.glob() now raises a ValueError if it's called with an + invalid pattern. Patch by Thomas Nyberg. + +- bpo-19883: Fixed possible integer overflows in zipimport. + +- bpo-26227: On Windows, getnameinfo(), gethostbyaddr() and + gethostbyname_ex() functions of the socket module now decode the hostname + from the ANSI code page rather than UTF-8. + +- bpo-26099: The site module now writes an error into stderr if + sitecustomize module can be imported but executing the module raise an + ImportError. Same change for usercustomize. + +- bpo-26147: xmlrpc now works with strings not encodable with used non-UTF-8 + encoding. + +- bpo-25935: Garbage collector now breaks reference loops with OrderedDict. + +- bpo-16620: Fixed AttributeError in msilib.Directory.glob(). + +- bpo-26013: Added compatibility with broken protocol 2 pickles created in + old Python 3 versions (3.4.3 and lower). + +- bpo-26129: Deprecated accepting non-integers in grp.getgrgid(). + +- bpo-25850: Use cross-compilation by default for 64-bit Windows. + +- bpo-25822: Add docstrings to the fields of urllib.parse results. Patch + contributed by Swati Jaiswal. + +- bpo-22642: Convert trace module option parsing mechanism to argparse. + Patch contributed by SilentGhost. + +- bpo-24705: Fix sysconfig._parse_makefile not expanding ${} vars appearing + before $() vars. + +- bpo-26069: Remove the deprecated apis in the trace module. + +- bpo-22138: Fix mock.patch behavior when patching descriptors. Restore + original values after patching. Patch contributed by Sean McCully. + +- bpo-25672: In the ssl module, enable the SSL_MODE_RELEASE_BUFFERS mode + option if it is safe to do so. + +- bpo-26012: Don't traverse into symlinks for ``**`` pattern in + pathlib.Path.[r]glob(). + +- bpo-24120: Ignore PermissionError when traversing a tree with + pathlib.Path.[r]glob(). Patch by Ulrich Petri. + +- bpo-21815: Accept ] characters in the data portion of imap responses, in + order to handle the flags with square brackets accepted and produced by + servers such as gmail. + +- bpo-25447: fileinput now uses sys.stdin as-is if it does not have a buffer + attribute (restores backward compatibility). + +- bpo-25971: Optimized creating Fractions from floats by 2 times and from + Decimals by 3 times. + +- bpo-25802: Document as deprecated the remaining implementations of + importlib.abc.Loader.load_module(). + +- bpo-25928: Add Decimal.as_integer_ratio(). + +- bpo-25447: Copying the lru_cache() wrapper object now always works, + independently from the type of the wrapped object (by returning the + original object unchanged). + +- bpo-25768: Have the functions in compileall return booleans instead of + ints and add proper documentation and tests for the return values. + +- bpo-24103: Fixed possible use after free in ElementTree.XMLPullParser. + +- bpo-25860: os.fwalk() no longer skips remaining directories when error + occurs. Original patch by Samson Lee. + +- bpo-25914: Fixed and simplified OrderedDict.__sizeof__. + +- bpo-25869: Optimized deepcopying ElementTree; it is now 20 times faster. + +- bpo-25873: Optimized iterating ElementTree. Iterating elements + Element.iter() is now 40% faster, iterating text Element.itertext() is now + up to 2.5 times faster. + +- bpo-25902: Fixed various refcount issues in ElementTree iteration. + +- bpo-22227: The TarFile iterator is reimplemented using generator. This + implementation is simpler that using class. + +- bpo-25638: Optimized ElementTree.iterparse(); it is now 2x faster. + Optimized ElementTree parsing; it is now 10% faster. + +- bpo-25761: Improved detecting errors in broken pickle data. + +- bpo-25717: Restore the previous behaviour of tolerating most fstat() + errors when opening files. This was a regression in 3.5a1, and stopped + anonymous temporary files from working in special cases. + +- bpo-24903: Fix regression in number of arguments compileall accepts when + '-d' is specified. The check on the number of arguments has been dropped + completely as it never worked correctly anyway. + +- bpo-25764: In the subprocess module, preserve any exception caused by + fork() failure when preexec_fn is used. + +- bpo-25771: Tweak the exception message for importlib.util.resolve_name() + when 'package' isn't specified but necessary. + +- bpo-6478: _strptime's regexp cache now is reset after changing timezone + with time.tzset(). + +- bpo-14285: When executing a package with the "python -m package" option, + and package initialization fails, a proper traceback is now reported. The + "runpy" module now lets exceptions from package initialization pass back + to the caller, rather than raising ImportError. + +- bpo-19771: Also in runpy and the "-m" option, omit the irrelevant message + ". . . is a package and cannot be directly executed" if the package could + not even be initialized (e.g. due to a bad ``*.pyc`` file). + +- bpo-25177: Fixed problem with the mean of very small and very large + numbers. As a side effect, statistics.mean and statistics.variance should + be significantly faster. + +- bpo-25718: Fixed copying object with state with boolean value is false. + +- bpo-10131: Fixed deep copying of minidom documents. Based on patch by + Marian Ganisin. + +- bpo-7990: dir() on ElementTree.Element now lists properties: "tag", + "text", "tail" and "attrib". Original patch by Santoso Wijaya. + +- bpo-25725: Fixed a reference leak in pickle.loads() when unpickling + invalid data including tuple instructions. + +- bpo-25663: In the Readline completer, avoid listing duplicate global + names, and search the global namespace before searching builtins. + +- bpo-25688: Fixed file leak in ElementTree.iterparse() raising an error. + +- bpo-23914: Fixed SystemError raised by unpickler on broken pickle data. + +- bpo-25691: Fixed crash on deleting ElementTree.Element attributes. + +- bpo-25624: ZipFile now always writes a ZIP_STORED header for directory + entries. Patch by Dingyuan Wang. + +- bpo-25626: Change three zlib functions to accept sizes that fit in + Py_ssize_t, but internally cap those sizes to UINT_MAX. This resolves a + regression in 3.5 where GzipFile.read() failed to read chunks larger than + 2 or 4 GiB. The change affects the zlib.Decompress.decompress() + max_length parameter, the zlib.decompress() bufsize parameter, and the + zlib.Decompress.flush() length parameter. + +- bpo-25583: Avoid incorrect errors raised by os.makedirs(exist_ok=True) + when the OS gives priority to errors such as EACCES over EEXIST. + +- bpo-25593: Change semantics of EventLoop.stop() in asyncio. + +- bpo-6973: When we know a subprocess.Popen process has died, do not allow + the send_signal(), terminate(), or kill() methods to do anything as they + could potentially signal a different process. + +- bpo-23883: Added missing APIs to __all__ to match the documented APIs for + the following modules: calendar, csv, enum, fileinput, ftplib, logging, + optparse, tarfile, threading and wave. Also added a + test.support.check__all__() helper. Patches by Jacek Kołodziej, Mauro S. + M. Rodrigues and Joel Taddei. + +- bpo-25590: In the Readline completer, only call getattr() once per + attribute. Also complete names of attributes such as properties and slots + which are listed by dir() but not yet created on an instance. + +- bpo-25498: Fix a crash when garbage-collecting ctypes objects created by + wrapping a memoryview. This was a regression made in 3.5a1. Based on + patch by Eryksun. + +- bpo-25584: Added "escape" to the __all__ list in the glob module. + +- bpo-25584: Fixed recursive glob() with patterns starting with ``**``. + +- bpo-25446: Fix regression in smtplib's AUTH LOGIN support. + +- bpo-18010: Fix the pydoc web server's module search function to handle + exceptions from importing packages. + +- bpo-25554: Got rid of circular references in regular expression parsing. + +- bpo-18973: Command-line interface of the calendar module now uses argparse + instead of optparse. + +- bpo-25510: fileinput.FileInput.readline() now returns b'' instead of '' at + the end if the FileInput was opened with binary mode. Patch by Ryosuke + Ito. + +- bpo-25503: Fixed inspect.getdoc() for inherited docstrings of properties. + Original patch by John Mark Vandenberg. + +- bpo-25515: Always use os.urandom as a source of randomness in uuid.uuid4. + +- bpo-21827: Fixed textwrap.dedent() for the case when largest common + whitespace is a substring of smallest leading whitespace. Based on patch + by Robert Li. + +- bpo-25447: The lru_cache() wrapper objects now can be copied and pickled + (by returning the original object unchanged). + +- bpo-25390: typing: Don't crash on Union[str, Pattern]. + +- bpo-25441: asyncio: Raise error from drain() when socket is closed. + +- bpo-25410: Cleaned up and fixed minor bugs in C implementation of + OrderedDict. + +- bpo-25411: Improved Unicode support in SMTPHandler through better use of + the email package. Thanks to user simon04 for the patch. + +- Move the imp module from a PendingDeprecationWarning to + DeprecationWarning. + +- bpo-25407: Remove mentions of the formatter module being removed in Python + 3.6. + +- bpo-25406: Fixed a bug in C implementation of OrderedDict.move_to_end() + that caused segmentation fault or hang in iterating after moving several + items to the start of ordered dict. + +- bpo-25382: pickletools.dis() now outputs implicit memo index for the + MEMOIZE opcode. + +- bpo-25357: Add an optional newline parameter to binascii.b2a_base64(). + base64.b64encode() uses it to avoid a memory copy. + +- bpo-24164: Objects that need calling ``__new__`` with keyword arguments, + can now be pickled using pickle protocols older than protocol version 4. + +- bpo-25364: zipfile now works in threads disabled builds. + +- bpo-25328: smtpd's SMTPChannel now correctly raises a ValueError if both + decode_data and enable_SMTPUTF8 are set to true. + +- bpo-16099: RobotFileParser now supports Crawl-delay and Request-rate + extensions. Patch by Nikolay Bogoychev. + +- bpo-25316: distutils raises OSError instead of DistutilsPlatformError when + MSVC is not installed. + +- bpo-25380: Fixed protocol for the STACK_GLOBAL opcode in + pickletools.opcodes. + +- bpo-23972: Updates asyncio datagram create method allowing reuseport and + reuseaddr socket options to be set prior to binding the socket. Mirroring + the existing asyncio create_server method the reuseaddr option for + datagram sockets defaults to True if the O/S is 'posix' (except if the + platform is Cygwin). Patch by Chris Laws. + +- bpo-25304: Add asyncio.run_coroutine_threadsafe(). This lets you submit a + coroutine to a loop from another thread, returning a + concurrent.futures.Future. By Vincent Michel. + +- bpo-25232: Fix CGIRequestHandler to split the query from the URL at the + first question mark (?) rather than the last. Patch from Xiang Zhang. + +- bpo-24657: Prevent CGIRequestHandler from collapsing slashes in the query + part of the URL as if it were a path. Patch from Xiang Zhang. + +- bpo-25287: Don't add crypt.METHOD_CRYPT to crypt.methods if it's not + supported. Check if it is supported, it may not be supported on OpenBSD + for example. + +- bpo-23600: Default implementation of tzinfo.fromutc() was returning wrong + results in some cases. + +- bpo-25203: Failed readline.set_completer_delims() no longer left the + module in inconsistent state. + +- bpo-25011: rlcompleter now omits private and special attribute names + unless the prefix starts with underscores. + +- bpo-25209: rlcompleter now can add a space or a colon after completed + keyword. + +- bpo-22241: timezone.utc name is now plain 'UTC', not 'UTC-00:00'. + +- bpo-23517: fromtimestamp() and utcfromtimestamp() methods of + datetime.datetime now round microseconds to nearest with ties going to + nearest even integer (ROUND_HALF_EVEN), as round(float), instead of + rounding towards -Infinity (ROUND_FLOOR). + +- bpo-23552: Timeit now warns when there is substantial (4x) variance + between best and worst times. Patch from Serhiy Storchaka. + +- bpo-24633: site-packages/README -> README.txt. + +- bpo-24879: help() and pydoc can now list named tuple fields in the order + they were defined rather than alphabetically. The ordering is determined + by the _fields attribute if present. + +- bpo-24874: Improve speed of itertools.cycle() and make its pickle more + compact. + +- Fix crash in itertools.cycle.__setstate__() when the first argument wasn't + a list. + +- bpo-20059: urllib.parse raises ValueError on all invalid ports. Patch by + Martin Panter. + +- bpo-24360: Improve __repr__ of argparse.Namespace() for invalid + identifiers. Patch by Matthias Bussonnier. + +- bpo-23426: run_setup was broken in distutils. Patch from Alexander + Belopolsky. + +- bpo-13938: 2to3 converts StringTypes to a tuple. Patch from Mark Hammond. + +- bpo-2091: open() accepted a 'U' mode string containing '+', but 'U' can + only be used with 'r'. Patch from Jeff Balogh and John O'Connor. + +- bpo-8585: improved tests for zipimporter2. Patch from Mark Lawrence. + +- bpo-18622: unittest.mock.mock_open().reset_mock would recurse infinitely. + Patch from Nicola Palumbo and Laurent De Buyst. + +- bpo-24426: Fast searching optimization in regular expressions now works + for patterns that starts with capturing groups. Fast searching + optimization now can't be disabled at compile time. + +- bpo-23661: unittest.mock side_effects can now be exceptions again. This + was a regression vs Python 3.4. Patch from Ignacio Rossi + +- bpo-13248: Remove deprecated inspect.getmoduleinfo function. + +- bpo-25578: Fix (another) memory leak in SSLSocket.getpeercer(). + +- bpo-25530: Disable the vulnerable SSLv3 protocol by default when creating + ssl.SSLContext. + +- bpo-25569: Fix memory leak in SSLSocket.getpeercert(). + +- bpo-25471: Sockets returned from accept() shouldn't appear to be + nonblocking. + +- bpo-25319: When threading.Event is reinitialized, the underlying condition + should use a regular lock rather than a recursive lock. + +- Skip getaddrinfo if host is already resolved. Patch by A. Jesse Jiryu + Davis. + +- bpo-26050: Add asyncio.StreamReader.readuntil() method. Patch by Марк + Коренберг. + +- bpo-25924: Avoid unnecessary serialization of getaddrinfo(3) calls on OS X + versions 10.5 or higher. Original patch by A. Jesse Jiryu Davis. + +- bpo-26406: Avoid unnecessary serialization of getaddrinfo(3) calls on + current versions of OpenBSD and NetBSD. Patch by A. Jesse Jiryu Davis. + +- bpo-26848: Fix asyncio/subprocess.communicate() to handle empty input. + Patch by Jack O'Connor. + +- bpo-27040: Add loop.get_exception_handler method + +- bpo-27041: asyncio: Add loop.create_future method + +IDLE +---- + +- bpo-20640: Add tests for idlelib.configHelpSourceEdit. Patch by Saimadhav + Heblikar. + +- In the 'IDLE-console differences' section of the IDLE doc, clarify how + running with IDLE affects sys.modules and the standard streams. + +- bpo-25507: fix incorrect change in IOBinding that prevented printing. + Augment IOBinding htest to include all major IOBinding functions. + +- bpo-25905: Revert unwanted conversion of ' to ’ RIGHT SINGLE QUOTATION + MARK in README.txt and open this and NEWS.txt with 'ascii'. Re-encode + CREDITS.txt to utf-8 and open it with 'utf-8'. + +- bpo-15348: Stop the debugger engine (normally in a user process) before + closing the debugger window (running in the IDLE process). This prevents + the RuntimeErrors that were being caught and ignored. + +- bpo-24455: Prevent IDLE from hanging when a) closing the shell while the + debugger is active (15347); b) closing the debugger with the [X] button + (15348); and c) activating the debugger when already active (24455). The + patch by Mark Roseman does this by making two changes. 1. Suspend and + resume the gui.interaction method with the tcl vwait mechanism intended + for this purpose (instead of root.mainloop & .quit). 2. In gui.run, allow + any existing interaction to terminate first. + +- Change 'The program' to 'Your program' in an IDLE 'kill program?' message + to make it clearer that the program referred to is the currently running + user program, not IDLE itself. + +- bpo-24750: Improve the appearance of the IDLE editor window status bar. + Patch by Mark Roseman. + +- bpo-25313: Change the handling of new built-in text color themes to better + address the compatibility problem introduced by the addition of IDLE Dark. + Consistently use the revised idleConf.CurrentTheme everywhere in idlelib. + +- bpo-24782: Extension configuration is now a tab in the IDLE Preferences + dialog rather than a separate dialog. The former tabs are now a sorted + list. Patch by Mark Roseman. + +- bpo-22726: Re-activate the config dialog help button with some content + about the other buttons and the new IDLE Dark theme. + +- bpo-24820: IDLE now has an 'IDLE Dark' built-in text color theme. It is + more or less IDLE Classic inverted, with a cobalt blue background. + Strings, comments, keywords, ... are still green, red, orange, ... . To + use it with IDLEs released before November 2015, hit the 'Save as New + Custom Theme' button and enter a new name, such as 'Custom Dark'. The + custom theme will work with any IDLE release, and can be modified. + +- bpo-25224: README.txt is now an idlelib index for IDLE developers and + curious users. The previous user content is now in the IDLE doc chapter. + 'IDLE' now means 'Integrated Development and Learning Environment'. + +- bpo-24820: Users can now set breakpoint colors in Settings -> Custom + Highlighting. Original patch by Mark Roseman. + +- bpo-24972: Inactive selection background now matches active selection + background, as configured by users, on all systems. Found items are now + always highlighted on Windows. Initial patch by Mark Roseman. + +- bpo-24570: Idle: make calltip and completion boxes appear on Macs affected + by a tk regression. Initial patch by Mark Roseman. + +- bpo-24988: Idle ScrolledList context menus (used in debugger) now work on + Mac Aqua. Patch by Mark Roseman. + +- bpo-24801: Make right-click for context menu work on Mac Aqua. Patch by + Mark Roseman. + +- bpo-25173: Associate tkinter messageboxes with a specific widget. For Mac + OSX, make them a 'sheet'. Patch by Mark Roseman. + +- bpo-25198: Enhance the initial html viewer now used for Idle Help. + Properly indent fixed-pitch text (patch by Mark Roseman). Give code + snippet a very Sphinx-like light blueish-gray background. Re-use initial + width and height set by users for shell and editor. When the Table of + Contents (TOC) menu is used, put the section header at the top of the + screen. + +- bpo-25225: Condense and rewrite Idle doc section on text colors. + +- bpo-21995: Explain some differences between IDLE and console Python. + +- bpo-22820: Explain need for *print* when running file from Idle editor. + +- bpo-25224: Doc: augment Idle feature list and no-subprocess section. + +- bpo-25219: Update doc for Idle command line options. Some were missing and + notes were not correct. + +- bpo-24861: Most of idlelib is private and subject to change. Use + idleib.idle.* to start Idle. See idlelib.__init__.__doc__. + +- bpo-25199: Idle: add synchronization comments for future maintainers. + +- bpo-16893: Replace help.txt with help.html for Idle doc display. The new + idlelib/help.html is rstripped Doc/build/html/library/idle.html. It looks + better than help.txt and will better document Idle as released. The + tkinter html viewer that works for this file was written by Rose Roseman. + The now unused EditorWindow.HelpDialog class and helt.txt file are + deprecated. + +- bpo-24199: Deprecate unused idlelib.idlever with possible removal in 3.6. + +- bpo-24790: Remove extraneous code (which also create 2 & 3 conflicts). + +Documentation +------------- + +- bpo-26736: Used HTTPS for external links in the documentation if possible. + +- bpo-6953: Rework the Readline module documentation to group related + functions together, and add more details such as what underlying Readline + functions and variables are accessed. + +- bpo-23606: Adds note to ctypes documentation regarding cdll.msvcrt. + +- bpo-24952: Clarify the default size argument of stack_size() in the + "threading" and "_thread" modules. Patch from Mattip. + +- bpo-26014: Update 3.x packaging documentation: * "See also" links to the + new docs are now provided in the legacy pages * links to setuptools + documentation have been updated + +Tests +----- + +- bpo-21916: Added tests for the turtle module. Patch by ingrid, Gregory + Loyse and Jelle Zijlstra. + +- bpo-26295: When using "python3 -m test --testdir=TESTDIR", regrtest + doesn't add "test." prefix to test module names. + +- bpo-26523: The multiprocessing thread pool (multiprocessing.dummy.Pool) + was untested. + +- bpo-26015: Added new tests for pickling iterators of mutable sequences. + +- bpo-26325: Added test.support.check_no_resource_warning() to check that no + ResourceWarning is emitted. + +- bpo-25940: Changed test_ssl to use its internal local server more. This + avoids relying on svn.python.org, which recently changed root certificate. + +- bpo-25616: Tests for OrderedDict are extracted from test_collections into + separate file test_ordered_dict. + +- bpo-25449: Added tests for OrderedDict subclasses. + +- bpo-25188: Add -P/--pgo to test.regrtest to suppress error output when + running the test suite for the purposes of a PGO build. Initial patch by + Alecsandru Patrascu. + +- bpo-22806: Add ``python -m test --list-tests`` command to list tests. + +- bpo-18174: ``python -m test --huntrleaks ...`` now also checks for leak of + file descriptors. Patch written by Richard Oudkerk. + +- bpo-25260: Fix ``python -m test --coverage`` on Windows. Remove the list + of ignored directories. + +- ``PCbuild\rt.bat`` now accepts an unlimited number of arguments to pass + along to regrtest.py. Previously there was a limit of 9. + +- bpo-26583: Skip test_timestamp_overflow in test_import if bytecode files + cannot be written. + +Build +----- + +- bpo-21277: Don't try to link _ctypes with a ffi_convenience library. + +- bpo-26884: Fix linking extension modules for cross builds. Patch by Xavier + de Gaye. + +- bpo-26932: Fixed support of RTLD_* constants defined as enum values, not + via macros (in particular on Android). Patch by Chi Hsuan Yen. + +- bpo-22359: Disable the rules for running _freeze_importlib and pgen when + cross-compiling. The output of these programs is normally saved with the + source code anyway, and is still regenerated when doing a native build. + Patch by Xavier de Gaye. + +- bpo-21668: Link audioop, _datetime, _ctypes_test modules to libm, except + on Mac OS X. Patch written by Chi Hsuan Yen. + +- bpo-25702: A --with-lto configure option has been added that will enable + link time optimizations at build time during a make profile-opt. Some + compilers and toolchains are known to not produce stable code when using + LTO, be sure to test things thoroughly before relying on it. It can + provide a few % speed up over profile-opt alone. + +- bpo-26624: Adds validation of ucrtbase[d].dll version with warning for old + versions. + +- bpo-17603: Avoid error about nonexistent fileblocks.o file by using a + lower-level check for st_blocks in struct stat. + +- bpo-26079: Fixing the build output folder for tix-8.4.3.6. Patch by Bjoern + Thiel. + +- bpo-26465: Update Windows builds to use OpenSSL 1.0.2g. + +- bpo-25348: Added ``--pgo`` and ``--pgo-job`` arguments to + ``PCbuild\build.bat`` for building with Profile-Guided Optimization. The + old ``PCbuild\build_pgo.bat`` script is removed. + +- bpo-25827: Add support for building with ICC to ``configure``, including a + new ``--with-icc`` flag. + +- bpo-25696: Fix installation of Python on UNIX with make -j9. + +- bpo-24986: It is now possible to build Python on Windows without errors + when external libraries are not available. + +- bpo-24421: Compile Modules/_math.c once, before building extensions. + Previously it could fail to compile properly if the math and cmath builds + were concurrent. + +- bpo-26465: Update OS X 10.5+ 32-bit-only installer to build and link with + OpenSSL 1.0.2g. + +- bpo-26268: Update Windows builds to use OpenSSL 1.0.2f. + +- bpo-25136: Support Apple Xcode 7's new textual SDK stub libraries. + +- bpo-24324: Do not enable unreachable code warnings when using gcc as the + option does not work correctly in older versions of gcc and has been + silently removed as of gcc-4.5. + +Windows +------- + +- bpo-27053: Updates make_zip.py to correctly generate library ZIP file. + +- bpo-26268: Update the prepare_ssl.py script to handle OpenSSL releases + that don't include the contents of the include directory (that is, 1.0.2e + and later). + +- bpo-26071: bdist_wininst created binaries fail to start and find 32bit + Python + +- bpo-26073: Update the list of magic numbers in launcher + +- bpo-26065: Excludes venv from library when generating embeddable distro. + +- bpo-25022: Removed very outdated PC/example_nt/ directory. + +Tools/Demos +----------- + +- bpo-26799: Fix python-gdb.py: don't get C types once when the Python code + is loaded, but get C types on demand. The C types can change if + python-gdb.py is loaded before the Python executable. Patch written by + Thomas Ilsche. + +- bpo-26271: Fix the Freeze tool to properly use flags passed through + configure. Patch by Daniel Shaulov. + +- bpo-26489: Add dictionary unpacking support to Tools/parser/unparse.py. + Patch by Guo Ci Teo. + +- bpo-26316: Fix variable name typo in Argument Clinic. + +- bpo-25440: Fix output of python-config --extension-suffix. + +- bpo-25154: The pyvenv script has been deprecated in favour of `python3 -m + venv`. + +C API +----- + +- bpo-26312: SystemError is now raised in all programming bugs with using + PyArg_ParseTupleAndKeywords(). RuntimeError did raised before in some + programming bugs. + +- bpo-26198: ValueError is now raised instead of TypeError on buffer + overflow in parsing "es#" and "et#" format units. SystemError is now + raised instead of TypeError on programmatical error in parsing format + string. + + +What's New in Python 3.5.5 final? +================================= + +*Release date: 2018-02-04* + +There were no new changes in version 3.5.5. + + + +What's New in Python 3.5.5 release candidate 1? +=============================================== + +*Release date: 2018-01-23* + +Security +-------- + +- bpo-32551: The ``sys.path[0]`` initialization change for bpo-29139 caused + a regression by revealing an inconsistency in how sys.path is initialized + when executing ``__main__`` from a zipfile, directory, or other import + location. This is considered a potential security issue, as it may lead to + privileged processes unexpectedly loading code from user controlled + directories in situations where that was not previously the case. The + interpreter now consistently avoids ever adding the import location's + parent directory to ``sys.path``, and ensures no other ``sys.path`` + entries are inadvertently modified when inserting the import location + named on the command line. (Originally reported as bpo-29723 against + Python 3.6rc1, but it was missed at the time that the then upcoming Python + 3.5.4 release would also be affected) + +- bpo-30657: Fixed possible integer overflow in PyBytes_DecodeEscape, + CVE-2017-1000158. Original patch by Jay Bosamiya; rebased to Python 3 by + Miro Hrončok. + +- bpo-30947: Upgrade libexpat embedded copy from version 2.2.1 to 2.2.3 to + get security fixes. + +Core and Builtins +----------------- + +- bpo-31095: Fix potential crash during GC caused by ``tp_dealloc`` which + doesn't call ``PyObject_GC_UnTrack()``. + +Library +------- + +- bpo-32072: Fixed issues with binary plists: Fixed saving bytearrays. + Identical objects will be saved only once. Equal references will be load + as identical objects. Added support for saving and loading recursive data + structures. + +- bpo-31170: expat: Update libexpat from 2.2.3 to 2.2.4. Fix copying of + partial characters for UTF-8 input (libexpat bug 115): + https://github.com/libexpat/libexpat/issues/115 + + +What's New in Python 3.5.4 final? +================================= + +*Release date: 2017-08-07* + +Library +------- + +- bpo-30119: ftplib.FTP.putline() now throws ValueError on commands that + contains CR or LF. Patch by Dong-hee Na. + + +What's New in Python 3.5.4 release candidate 1? +=============================================== + +*Release date: 2017-07-23* + +Security +-------- + +- bpo-30730: Prevent environment variables injection in subprocess on + Windows. Prevent passing other environment variables and command + arguments. + +- bpo-30694: Upgrade expat copy from 2.2.0 to 2.2.1 to get fixes of multiple + security vulnerabilities including: CVE-2017-9233 (External entity + infinite loop DoS), CVE-2016-9063 (Integer overflow, re-fix), + CVE-2016-0718 (Fix regression bugs from 2.2.0's fix to CVE-2016-0718) and + CVE-2012-0876 (Counter hash flooding with SipHash). Note: the + CVE-2016-5300 (Use os-specific entropy sources like getrandom) doesn't + impact Python, since Python already gets entropy from the OS to set the + expat secret using ``XML_SetHashSalt()``. + +- bpo-30500: Fix urllib.parse.splithost() to correctly parse fragments. For + example, ``splithost('//127.0.0.1#@evil.com/')`` now correctly returns the + ``127.0.0.1`` host, instead of treating ``@evil.com`` as the host in an + authentication (``login@host``). + +- bpo-29591: Update expat copy from 2.1.1 to 2.2.0 to get fixes of + CVE-2016-0718 and CVE-2016-4472. See + https://sourceforge.net/p/expat/bugs/537/ for more information. + +Core and Builtins +----------------- + +- bpo-30876: Relative import from unloaded package now reimports the package + instead of failing with SystemError. Relative import from non-package now + fails with ImportError rather than SystemError. + +- bpo-30765: Avoid blocking in pthread_mutex_lock() when + PyThread_acquire_lock() is asked not to block. + +- bpo-27945: Fixed various segfaults with dict when input collections are + mutated during searching, inserting or comparing. Based on patches by + Duane Griffin and Tim Mitchell. + +- bpo-25794: Fixed type.__setattr__() and type.__delattr__() for + non-interned attribute names. Based on patch by Eryk Sun. + +- bpo-29935: Fixed error messages in the index() method of tuple, list and + deque when pass indices of wrong type. + +- bpo-28876: ``bool(range)`` works even if ``len(range)`` raises + :exc:`OverflowError`. + +- bpo-29600: Fix wrapping coroutine return values in StopIteration. + +- bpo-29537: Restore runtime compatibility with bytecode files generated by + CPython 3.5.0 to 3.5.2, and adjust the eval loop to avoid the problems + that could be caused by the malformed variant of the + BUILD_MAP_UNPACK_WITH_CALL opcode that they may contain. Patch by Petr + Viktorin, Serhiy Storchaka, and Nick Coghlan. + +- bpo-28598: Support __rmod__ for subclasses of str being called before + str.__mod__. Patch by Martijn Pieters. + +- bpo-29602: Fix incorrect handling of signed zeros in complex constructor + for complex subclasses and for inputs having a __complex__ method. Patch + by Serhiy Storchaka. + +- bpo-29347: Fixed possibly dereferencing undefined pointers when creating + weakref objects. + +- bpo-29438: Fixed use-after-free problem in key sharing dict. + +- bpo-29319: Prevent RunMainFromImporter overwriting sys.path[0]. + +- bpo-29337: Fixed possible BytesWarning when compare the code objects. + Warnings could be emitted at compile time. + +- bpo-29478: If max_line_length=None is specified while using the Compat32 + policy, it is no longer ignored. Patch by Mircea Cosbuc. + +Library +------- + +- bpo-29403: Fix ``unittest.mock``'s autospec to not fail on method-bound + builtin functions. Patch by Aaron Gallagher. + +- bpo-30961: Fix decrementing a borrowed reference in tracemalloc. + +- bpo-30886: Fix multiprocessing.Queue.join_thread(): it now waits until the + thread completes, even if the thread was started by the same process which + created the queue. + +- bpo-29854: Fix segfault in readline when using readline's history-size + option. Patch by Nir Soffer. + +- bpo-30807: signal.setitimer() may disable the timer when passed a tiny + value. Tiny values (such as 1e-6) are valid non-zero values for + setitimer(), which is specified as taking microsecond-resolution + intervals. However, on some platform, our conversion routine could convert + 1e-6 into a zero interval, therefore disabling the timer instead of + (re-)scheduling it. + +- bpo-30441: Fix bug when modifying os.environ while iterating over it + +- bpo-30532: Fix email header value parser dropping folding white space in + certain cases. + +- bpo-29169: Update zlib to 1.2.11. + +- bpo-30879: os.listdir() and os.scandir() now emit bytes names when called + with bytes-like argument. + +- bpo-30746: Prohibited the '=' character in environment variable names in + ``os.putenv()`` and ``os.spawn*()``. + +- bpo-29755: Fixed the lgettext() family of functions in the gettext module. + They now always return bytes. + +- bpo-30645: Fix path calculation in imp.load_package(), fixing it for cases + when a package is only shipped with bytecodes. Patch by Alexandru + Ardelean. + +- bpo-23890: unittest.TestCase.assertRaises() now manually breaks a + reference cycle to not keep objects alive longer than expected. + +- bpo-30149: inspect.signature() now supports callables with + variable-argument parameters wrapped with partialmethod. Patch by Dong-hee + Na. + +- bpo-29931: Fixed comparison check for ipaddress.ip_interface objects. + Patch by Sanjay Sundaresan. + +- bpo-24484: Avoid race condition in multiprocessing cleanup. + +- bpo-28994: The traceback no longer displayed for SystemExit raised in a + callback registered by atexit. + +- bpo-30508: Don't log exceptions if Task/Future "cancel()" method was + called. + +- bpo-28556: Updates to typing module: Add generic AsyncContextManager, add + support for ContextManager on all versions. Original PRs by Jelle Zijlstra + and Ivan Levkivskyi + +- bpo-29870: Fix ssl sockets leaks when connection is aborted in asyncio/ssl + implementation. Patch by Michaël Sghaïer. + +- bpo-29743: Closing transport during handshake process leaks open socket. + Patch by Nikolay Kim + +- bpo-27585: Fix waiter cancellation in asyncio.Lock. Patch by Mathieu + Sornay. + +- bpo-30418: On Windows, subprocess.Popen.communicate() now also ignore + EINVAL on stdin.write() if the child process is still running but closed + the pipe. + +- bpo-30378: Fix the problem that logging.handlers.SysLogHandler cannot + handle IPv6 addresses. + +- bpo-29960: Preserve generator state when _random.Random.setstate() raises + an exception. Patch by Bryan Olson. + +- bpo-30414: multiprocessing.Queue._feed background running thread do not + break from main loop on exception. + +- bpo-30003: Fix handling escape characters in HZ codec. Based on patch by + Ma Lin. + +- bpo-30301: Fix AttributeError when using SimpleQueue.empty() under *spawn* + and *forkserver* start methods. + +- bpo-30329: imaplib and poplib now catch the Windows socket WSAEINVAL error + (code 10022) on shutdown(SHUT_RDWR): An invalid operation was attempted. + This error occurs sometimes on SSL connections. + +- bpo-30375: Warnings emitted when compile a regular expression now always + point to the line in the user code. Previously they could point into + inners of the re module if emitted from inside of groups or conditionals. + +- bpo-30048: Fixed ``Task.cancel()`` can be ignored when the task is running + coroutine and the coroutine returned without any more ``await``. + +- bpo-29990: Fix range checking in GB18030 decoder. Original patch by Ma + Lin. + +- bpo-26293: Change resulted because of zipfile breakage. (See also: + bpo-29094) + +- bpo-30243: Removed the __init__ methods of _json's scanner and encoder. + Misusing them could cause memory leaks or crashes. Now scanner and + encoder objects are completely initialized in the __new__ methods. + +- bpo-30185: Avoid KeyboardInterrupt tracebacks in forkserver helper process + when Ctrl-C is received. + +- bpo-28556: Various updates to typing module: add typing.NoReturn type, use + WrapperDescriptorType, minor bug-fixes. Original PRs by Jim + Fasarakis-Hilliard and Ivan Levkivskyi. + +- bpo-30205: Fix getsockname() for unbound AF_UNIX sockets on Linux. + +- bpo-30070: Fixed leaks and crashes in errors handling in the parser + module. + +- bpo-30061: Fixed crashes in IOBase methods __next__() and readlines() when + readline() or __next__() respectively return non-sizeable object. Fixed + possible other errors caused by not checking results of PyObject_Size(), + PySequence_Size(), or PyMapping_Size(). + +- bpo-30068: _io._IOBase.readlines will check if it's closed first when hint + is present. + +- bpo-29694: Fixed race condition in pathlib mkdir with flags parents=True. + Patch by Armin Rigo. + +- bpo-29692: Fixed arbitrary unchaining of RuntimeError exceptions in + contextlib.contextmanager. Patch by Siddharth Velankar. + +- bpo-29998: Pickling and copying ImportError now preserves name and path + attributes. + +- bpo-29942: Fix a crash in itertools.chain.from_iterable when encountering + long runs of empty iterables. + +- bpo-27863: Fixed multiple crashes in ElementTree caused by race conditions + and wrong types. + +- bpo-28699: Fixed a bug in pools in multiprocessing.pool that raising an + exception at the very first of an iterable may swallow the exception or + make the program hang. Patch by Davin Potts and Xiang Zhang. + +- bpo-25803: Avoid incorrect errors raised by Path.mkdir(exist_ok=True) when + the OS gives priority to errors such as EACCES over EEXIST. + +- bpo-29861: Release references to tasks, their arguments and their results + as soon as they are finished in multiprocessing.Pool. + +- bpo-29884: faulthandler: Restore the old sigaltstack during teardown. + Patch by Christophe Zeitouny. + +- bpo-25455: Fixed crashes in repr of recursive buffered file-like objects. + +- bpo-29800: Fix crashes in partial.__repr__ if the keys of partial.keywords + are not strings. Patch by Michael Seifert. + +- bpo-29742: get_extra_info() raises exception if get called on closed ssl + transport. Patch by Nikolay Kim. + +- bpo-8256: Fixed possible failing or crashing input() if attributes + "encoding" or "errors" of sys.stdin or sys.stdout are not set or are not + strings. + +- bpo-28298: Fix a bug that prevented array 'Q', 'L' and 'I' from accepting + big intables (objects that have __int__) as elements. Patch by Oren + Milman. + +- bpo-29615: SimpleXMLRPCDispatcher no longer chains KeyError (or any other + exception) to exception(s) raised in the dispatched methods. Patch by Petr + Motejlek. + +- bpo-29704: asyncio.subprocess.SubprocessStreamProtocol no longer closes + before all pipes are closed. + +- bpo-29703: Fix asyncio to support instantiation of new event loops in + child processes. + +- bpo-29376: Fix assertion error in threading._DummyThread.is_alive(). + +- bpo-29110: Fix file object leak in aifc.open() when file is given as a + filesystem path and is not in valid AIFF format. Patch by Anthony Zhang. + +- bpo-28961: Fix unittest.mock._Call helper: don't ignore the name parameter + anymore. Patch written by Jiajun Huang. + +- bpo-29532: Altering a kwarg dictionary passed to functools.partial() no + longer affects a partial object after creation. + +- bpo-28556: Various updates to typing module: typing.Counter, + typing.ChainMap, improved ABC caching, etc. Original PRs by Jelle + Zijlstra, Ivan Levkivskyi, Manuel Krebber, and Łukasz Langa. + +- bpo-29100: Fix datetime.fromtimestamp() regression introduced in Python + 3.6.0: check minimum and maximum years. + +- bpo-29519: Fix weakref spewing exceptions during interpreter shutdown when + used with a rare combination of multiprocessing and custom codecs. + +- bpo-29416: Prevent infinite loop in pathlib.Path.mkdir + +- bpo-29444: Fixed out-of-bounds buffer access in the group() method of the + match object. Based on patch by WGH. + +- bpo-29335: Fix subprocess.Popen.wait() when the child process has exited + to a stopped instead of terminated state (ex: when under ptrace). + +- bpo-29290: Fix a regression in argparse that help messages would wrap at + non-breaking spaces. + +- bpo-28735: Fixed the comparison of mock.MagickMock with mock.ANY. + +- bpo-29011: Fix an important omission by adding Deque to the typing module. + +- bpo-29219: Fixed infinite recursion in the repr of uninitialized + ctypes.CDLL instances. + +- bpo-28969: Fixed race condition in C implementation of + functools.lru_cache. KeyError could be raised when cached function with + full cache was simultaneously called from different threads with the same + uncached arguments. + +- bpo-29142: In urllib.request, suffixes in no_proxy environment variable + with leading dots could match related hostnames again (e.g. .b.c matches + a.b.c). Patch by Milan Oberkirch. + +Documentation +------------- + +- bpo-30176: Add missing attribute related constants in curses + documentation. + +- bpo-26985: Add missing info of code object in inspect documentation. + +- bpo-28929: Link the documentation to its source file on GitHub. + +- bpo-25008: Document smtpd.py as effectively deprecated and add a pointer + to aiosmtpd, a third-party asyncio-based replacement. + +- bpo-26355: Add canonical header link on each page to corresponding major + version of the documentation. Patch by Matthias Bussonnier. + +- bpo-29349: Fix Python 2 syntax in code for building the documentation. + +Tests +----- + +- bpo-30822: Fix regrtest command line parser to allow passing -u + extralargefile to run test_zipfile64. + +- bpo-30383: regrtest: Enhance regrtest and backport features from the + master branch. Add options: --coverage, --testdir, --list-tests (list test + files, don't run them), --list-cases (list test identifiers, don't run + them, :issue:`30523`), --matchfile (load a list of test filters from a + text file, :issue:`30540`), --slowest (alias to --slow). Enhance output: + add timestamp, test result, currently running tests, "Tests result: xxx" + summary with total duration, etc. Fix reference leak hunting in regrtest, + --huntrleaks: regrtest now warms up caches, create explicitly all internal + singletons which are created on demand to prevent false positives when + checking for reference leaks. (:issue:`30675`). + +- bpo-30357: test_thread: setUp() now uses support.threading_setup() and + support.threading_cleanup() to wait until threads complete to avoid random + side effects on following tests. Initial patch written by Grzegorz + Grzywacz. + +- bpo-28087: Skip test_asyncore and test_eintr poll failures on macOS. Skip + some tests of select.poll when running on macOS due to unresolved issues + with the underlying system poll function on some macOS versions. + +- bpo-30197: Enhanced functions swap_attr() and swap_item() in the + test.support module. They now work when delete replaced attribute or item + inside the with statement. The old value of the attribute or item (or + None if it doesn't exist) now will be assigned to the target of the "as" + clause, if there is one. + +- bpo-29571: to match the behaviour of the ``re.LOCALE`` flag, + test_re.test_locale_flag now uses ``locale.getpreferredencoding(False)`` + to determine the candidate encoding for the test regex (allowing it to + correctly skip the test when the default locale encoding is a multi-byte + encoding) + +Build +----- + +- bpo-29243: Prevent unnecessary rebuilding of Python during ``make test``, + ``make install`` and some other make targets when configured with + ``--enable-optimizations``. + +- bpo-23404: Don't regenerate generated files based on file modification + time anymore: the action is now explicit. Replace ``make touch`` with + ``make regen-all``. + +- bpo-29643: Fix ``--enable-optimization`` didn't work. + +Windows +------- + +- bpo-30687: Locate msbuild.exe on Windows when building rather than + vcvarsall.bat + +- bpo-29392: Prevent crash when passing invalid arguments into msvcrt + module. + +C API +----- + +- bpo-27867: Function PySlice_GetIndicesEx() is replaced with a macro if + Py_LIMITED_API is set to the value between 0x03050400 and 0x03060000 (not + including) or 0x03060100 or higher. + +- bpo-29083: Fixed the declaration of some public API functions. + PyArg_VaParse() and PyArg_VaParseTupleAndKeywords() were not available in + limited API. PyArg_ValidateKeywordArguments(), PyArg_UnpackTuple() and + Py_BuildValue() were not available in limited API of version < 3.3 when + PY_SSIZE_T_CLEAN is defined. + + +What's New in Python 3.5.3 final? +================================= + +*Release date: 2017-01-17* + +There were no code changes between 3.5.3rc1 and 3.5.3 final. + + + +What's New in Python 3.5.3 release candidate 1? +=============================================== + +*Release date: 2017-01-02* + +Core and Builtins +----------------- + +- bpo-29073: bytearray formatting no longer truncates on first null byte. + +- bpo-28932: Do not include <sys/random.h> if it does not exist. + +- bpo-28147: Fix a memory leak in split-table dictionaries: setattr() must + not convert combined table into split table. + +- bpo-25677: Correct the positioning of the syntax error caret for indented + blocks. Based on patch by Michael Layzell. + +- bpo-29000: Fixed bytes formatting of octals with zero padding in alternate + form. + +- bpo-28512: Fixed setting the offset attribute of SyntaxError by + PyErr_SyntaxLocationEx() and PyErr_SyntaxLocationObject(). + +- bpo-28991: functools.lru_cache() was susceptible to an obscure reentrancy + bug caused by a monkey-patched len() function. + +- bpo-28648: Fixed crash in Py_DecodeLocale() in debug build on Mac OS X + when decode astral characters. Patch by Xiang Zhang. + +- bpo-19398: Extra slash no longer added to sys.path components in case of + empty compile-time PYTHONPATH components. + +- bpo-28426: Fixed potential crash in PyUnicode_AsDecodedObject() in debug + build. + +- bpo-23782: Fixed possible memory leak in _PyTraceback_Add() and exception + loss in PyTraceBack_Here(). + +- bpo-28379: Added sanity checks and tests for PyUnicode_CopyCharacters(). + Patch by Xiang Zhang. + +- bpo-28376: The type of long range iterator is now registered as Iterator. + Patch by Oren Milman. + +- bpo-28376: The constructor of range_iterator now checks that step is not + 0. Patch by Oren Milman. + +- bpo-26906: Resolving special methods of uninitialized type now causes + implicit initialization of the type instead of a fail. + +- bpo-18287: PyType_Ready() now checks that tp_name is not NULL. Original + patch by Niklas Koep. + +- bpo-24098: Fixed possible crash when AST is changed in process of + compiling it. + +- bpo-28350: String constants with null character no longer interned. + +- bpo-26617: Fix crash when GC runs during weakref callbacks. + +- bpo-27942: String constants now interned recursively in tuples and + frozensets. + +- bpo-21578: Fixed misleading error message when ImportError called with + invalid keyword args. + +- bpo-28203: Fix incorrect type in error message from ``complex(1.0, + {2:3})``. Patch by Soumya Sharma. + +- bpo-27955: Fallback on reading /dev/urandom device when the getrandom() + syscall fails with EPERM, for example when blocked by SECCOMP. + +- bpo-28131: Fix a regression in zipimport's compile_source(). zipimport + should use the same optimization level as the interpreter. + +- bpo-25221: Fix corrupted result from PyLong_FromLong(0) when Python is + compiled with NSMALLPOSINTS = 0. + +- bpo-25758: Prevents zipimport from unnecessarily encoding a filename + (patch by Eryk Sun) + +- bpo-28189: dictitems_contains no longer swallows compare errors. (Patch by + Xiang Zhang) + +- bpo-27812: Properly clear out a generator's frame's backreference to the + generator to prevent crashes in frame.clear(). + +- bpo-27811: Fix a crash when a coroutine that has not been awaited is + finalized with warnings-as-errors enabled. + +- bpo-27587: Fix another issue found by PVS-Studio: Null pointer check after + use of 'def' in _PyState_AddModule(). Initial patch by Christian Heimes. + +- bpo-26020: set literal evaluation order did not match documented + behaviour. + +- bpo-27782: Multi-phase extension module import now correctly allows the + ``m_methods`` field to be used to add module level functions to instances + of non-module types returned from ``Py_create_mod``. Patch by Xiang Zhang. + +- bpo-27936: The round() function accepted a second None argument for some + types but not for others. Fixed the inconsistency by accepting None for + all numeric types. + +- bpo-27487: Warn if a submodule argument to "python -m" or + runpy.run_module() is found in sys.modules after parent packages are + imported, but before the submodule is executed. + +- bpo-27558: Fix a SystemError in the implementation of "raise" statement. + In a brand new thread, raise a RuntimeError since there is no active + exception to reraise. Patch written by Xiang Zhang. + +- bpo-27419: Standard __import__() no longer look up "__import__" in globals + or builtins for importing submodules or "from import". Fixed handling an + error of non-string package name. + +- bpo-27083: Respect the PYTHONCASEOK environment variable under Windows. + +- bpo-27514: Make having too many statically nested blocks a SyntaxError + instead of SystemError. + +- bpo-27473: Fixed possible integer overflow in bytes and bytearray + concatenations. Patch by Xiang Zhang. + +- bpo-27507: Add integer overflow check in bytearray.extend(). Patch by + Xiang Zhang. + +- bpo-27581: Don't rely on wrapping for overflow check in + PySequence_Tuple(). Patch by Xiang Zhang. + +- bpo-27443: __length_hint__() of bytearray iterators no longer return a + negative integer for a resized bytearray. + +- bpo-27942: Fix memory leak in codeobject.c + +Library +------- + +- bpo-15812: inspect.getframeinfo() now correctly shows the first line of a + context. Patch by Sam Breese. + +- bpo-29094: Offsets in a ZIP file created with extern file object and modes + "w" and "x" now are relative to the start of the file. + +- bpo-13051: Fixed recursion errors in large or resized + curses.textpad.Textbox. Based on patch by Tycho Andersen. + +- bpo-29119: Fix weakrefs in the pure python version of + collections.OrderedDict move_to_end() method. Contributed by Andra + Bogildea. + +- bpo-9770: curses.ascii predicates now work correctly with negative + integers. + +- bpo-28427: old keys should not remove new values from WeakValueDictionary + when collecting from another thread. + +- bpo-28923: Remove editor artifacts from Tix.py. + +- bpo-28871: Fixed a crash when deallocate deep ElementTree. + +- bpo-19542: Fix bugs in WeakValueDictionary.setdefault() and + WeakValueDictionary.pop() when a GC collection happens in another thread. + +- bpo-20191: Fixed a crash in resource.prlimit() when pass a sequence that + doesn't own its elements as limits. + +- bpo-28779: multiprocessing.set_forkserver_preload() would crash the + forkserver process if a preloaded module instantiated some multiprocessing + objects such as locks. + +- bpo-28847: dbm.dumb now supports reading read-only files and no longer + writes the index file when it is not changed. + +- bpo-25659: In ctypes, prevent a crash calling the from_buffer() and + from_buffer_copy() methods on abstract classes like Array. + +- bpo-28732: Fix crash in os.spawnv() with no elements in args + +- bpo-28485: Always raise ValueError for negative + compileall.compile_dir(workers=...) parameter, even when multithreading is + unavailable. + +- bpo-28387: Fixed possible crash in _io.TextIOWrapper deallocator when the + garbage collector is invoked in other thread. Based on patch by Sebastian + Cufre. + +- bpo-27517: LZMA compressor and decompressor no longer raise exceptions if + given empty data twice. Patch by Benjamin Fogle. + +- bpo-28549: Fixed segfault in curses's addch() with ncurses6. + +- bpo-28449: tarfile.open() with mode "r" or "r:" now tries to open a tar + file with compression before trying to open it without compression. + Otherwise it had 50% chance failed with ignore_zeros=True. + +- bpo-23262: The webbrowser module now supports Firefox 36+ and derived + browsers. Based on patch by Oleg Broytman. + +- bpo-27939: Fixed bugs in tkinter.ttk.LabeledScale and tkinter.Scale caused + by representing the scale as float value internally in Tk. tkinter.IntVar + now works if float value is set to underlying Tk variable. + +- bpo-28255: calendar.TextCalendar().prmonth() no longer prints a space at + the start of new line after printing a month's calendar. Patch by Xiang + Zhang. + +- bpo-20491: The textwrap.TextWrapper class now honors non-breaking spaces. + Based on patch by Kaarle Ritvanen. + +- bpo-28353: os.fwalk() no longer fails on broken links. + +- bpo-25464: Fixed HList.header_exists() in tkinter.tix module by addin a + workaround to Tix library bug. + +- bpo-28488: shutil.make_archive() no longer add entry "./" to ZIP archive. + +- bpo-24452: Make webbrowser support Chrome on Mac OS X. + +- bpo-20766: Fix references leaked by pdb in the handling of SIGINT + handlers. + +- bpo-26293: Fixed writing ZIP files that starts not from the start of the + file. Offsets in ZIP file now are relative to the start of the archive in + conforming to the specification. + +- bpo-28321: Fixed writing non-BMP characters with binary format in + plistlib. + +- bpo-28322: Fixed possible crashes when unpickle itertools objects from + incorrect pickle data. Based on patch by John Leitch. + +- Fix possible integer overflows and crashes in the mmap module with unusual + usage patterns. + +- bpo-1703178: Fix the ability to pass the --link-objects option to the + distutils build_ext command. + +- bpo-28253: Fixed calendar functions for extreme months: 0001-01 and + 9999-12. Methods itermonthdays() and itermonthdays2() are reimplemented so + that they don't call itermonthdates() which can cause datetime.date + under/overflow. + +- bpo-28275: Fixed possible use after free in the decompress() methods of + the LZMADecompressor and BZ2Decompressor classes. Original patch by John + Leitch. + +- bpo-27897: Fixed possible crash in sqlite3.Connection.create_collation() + if pass invalid string-like object as a name. Patch by Xiang Zhang. + +- bpo-18893: Fix invalid exception handling in Lib/ctypes/macholib/dyld.py. + Patch by Madison May. + +- bpo-27611: Fixed support of default root window in the tkinter.tix module. + +- bpo-27348: In the traceback module, restore the formatting of exception + messages like "Exception: None". This fixes a regression introduced in + 3.5a2. + +- bpo-25651: Allow falsy values to be used for msg parameter of subTest(). + +- bpo-27932: Prevent memory leak in win32_ver(). + +- Fix UnboundLocalError in socket._sendfile_use_sendfile. + +- bpo-28075: Check for ERROR_ACCESS_DENIED in Windows implementation of + os.stat(). Patch by Eryk Sun. + +- bpo-25270: Prevent codecs.escape_encode() from raising SystemError when an + empty bytestring is passed. + +- bpo-28181: Get antigravity over HTTPS. Patch by Kaartic Sivaraam. + +- bpo-25895: Enable WebSocket URL schemes in urllib.parse.urljoin. Patch by + Gergely Imreh and Markus Holtermann. + +- bpo-27599: Fixed buffer overrun in binascii.b2a_qp() and + binascii.a2b_qp(). + +- bpo-19003: m email.generator now replaces only ``\r`` and/or ``\n`` line + endings, per the RFC, instead of all unicode line endings. + +- bpo-28019: itertools.count() no longer rounds non-integer step in range + between 1.0 and 2.0 to 1. + +- bpo-25969: Update the lib2to3 grammar to handle the unpacking + generalizations added in 3.5. + +- bpo-14977: mailcap now respects the order of the lines in the mailcap + files ("first match"), as required by RFC 1542. Patch by Michael Lazar. + +- bpo-24594: Validates persist parameter when opening MSI database + +- bpo-17582: xml.etree.ElementTree nows preserves whitespaces in attributes + (Patch by Duane Griffin. Reviewed and approved by Stefan Behnel.) + +- bpo-28047: Fixed calculation of line length used for the base64 CTE in the + new email policies. + +- bpo-27445: Don't pass str(_charset) to MIMEText.set_payload(). Patch by + Claude Paroz. + +- bpo-22450: urllib now includes an ``Accept: */*`` header among the default + headers. This makes the results of REST API requests more consistent and + predictable especially when proxy servers are involved. + +- lib2to3.pgen3.driver.load_grammar() now creates a stable cache file + between runs given the same Grammar.txt input regardless of the hash + randomization setting. + +- bpo-27570: Avoid zero-length memcpy() etc calls with null source pointers + in the "ctypes" and "array" modules. + +- bpo-22233: Break email header lines *only* on the RFC specified CR and LF + characters, not on arbitrary unicode line breaks. This also fixes a bug + in HTTP header parsing. + +- bpo-27988: Fix email iter_attachments incorrect mutation of payload list. + +- bpo-27691: Fix ssl module's parsing of GEN_RID subject alternative name + fields in X.509 certs. + +- bpo-27850: Remove 3DES from ssl module's default cipher list to counter + measure sweet32 attack (CVE-2016-2183). + +- bpo-27766: Add ChaCha20 Poly1305 to ssl module's default cipher list. + (Required OpenSSL 1.1.0 or LibreSSL). + +- bpo-26470: Port ssl and hashlib module to OpenSSL 1.1.0. + +- Remove support for passing a file descriptor to os.access. It never worked + but previously didn't raise. + +- bpo-12885: Fix error when distutils encounters symlink. + +- bpo-27881: Fixed possible bugs when setting + sqlite3.Connection.isolation_level. Based on patch by Xiang Zhang. + +- bpo-27861: Fixed a crash in sqlite3.Connection.cursor() when a factory + creates not a cursor. Patch by Xiang Zhang. + +- bpo-19884: Avoid spurious output on OS X with Gnu Readline. + +- bpo-27706: Restore deterministic behavior of random.Random().seed() for + string seeds using seeding version 1. Allows sequences of calls to + random() to exactly match those obtained in Python 2. Patch by Nofar + Schnider. + +- bpo-10513: Fix a regression in Connection.commit(). Statements should not + be reset after a commit. + +- A new version of typing.py from https://github.com/python/typing: + Collection (only for 3.6) (Issue #27598). Add FrozenSet to __all__ + (upstream #261). Fix crash in _get_type_vars() (upstream #259). Remove the + dict constraint in ForwardRef._eval_type (upstream #252). + +- bpo-27539: Fix unnormalised ``Fraction.__pow__`` result in the case of + negative exponent and negative base. + +- bpo-21718: cursor.description is now available for queries using CTEs. + +- bpo-2466: posixpath.ismount now correctly recognizes mount points which + the user does not have permission to access. + +- bpo-27773: Correct some memory management errors server_hostname in + _ssl.wrap_socket(). + +- bpo-26750: unittest.mock.create_autospec() now works properly for + subclasses of property() and other data descriptors. + +- In the curses module, raise an error if window.getstr() or window.instr() + is passed a negative value. + +- bpo-27783: Fix possible usage of uninitialized memory in + operator.methodcaller. + +- bpo-27774: Fix possible Py_DECREF on unowned object in _sre. + +- bpo-27760: Fix possible integer overflow in binascii.b2a_qp. + +- bpo-27758: Fix possible integer overflow in the _csv module for large + record lengths. + +- bpo-27568: Prevent HTTPoxy attack (CVE-2016-1000110). Ignore the + HTTP_PROXY variable when REQUEST_METHOD environment is set, which + indicates that the script is in CGI mode. + +- bpo-27656: Do not assume sched.h defines any SCHED_* constants. + +- bpo-27130: In the "zlib" module, fix handling of large buffers (typically + 4 GiB) when compressing and decompressing. Previously, inputs were + limited to 4 GiB, and compression and decompression operations did not + properly handle results of 4 GiB. + +- bpo-27533: Release GIL in nt._isdir + +- bpo-17711: Fixed unpickling by the persistent ID with protocol 0. Original + patch by Alexandre Vassalotti. + +- bpo-27522: Avoid an unintentional reference cycle in email.feedparser. + +- bpo-26844: Fix error message for imp.find_module() to refer to 'path' + instead of 'name'. Patch by Lev Maximov. + +- bpo-23804: Fix SSL zero-length recv() calls to not block and not raise an + error about unclean EOF. + +- bpo-27466: Change time format returned by http.cookie.time2netscape, + confirming the netscape cookie format and making it consistent with + documentation. + +- bpo-26664: Fix activate.fish by removing mis-use of ``$``. + +- bpo-22115: Fixed tracing Tkinter variables: trace_vdelete() with wrong + mode no longer break tracing, trace_vinfo() now always returns a list of + pairs of strings, tracing in the "u" mode now works. + +- Fix a scoping issue in importlib.util.LazyLoader which triggered an + UnboundLocalError when lazy-loading a module that was already put into + sys.modules. + +- bpo-27079: Fixed curses.ascii functions isblank(), iscntrl() and + ispunct(). + +- bpo-26754: Some functions (compile() etc) accepted a filename argument + encoded as an iterable of integers. Now only strings and byte-like objects + are accepted. + +- bpo-27048: Prevents distutils failing on Windows when environment + variables contain non-ASCII characters + +- bpo-27330: Fixed possible leaks in the ctypes module. + +- bpo-27238: Got rid of bare excepts in the turtle module. Original patch + by Jelle Zijlstra. + +- bpo-27122: When an exception is raised within the context being managed by + a contextlib.ExitStack() and one of the exit stack generators catches and + raises it in a chain, do not re-raise the original exception when exiting, + let the new chained one through. This avoids the :pep:`479` bug described + in issue25782. + +Security +-------- + +- bpo-27278: Fix os.urandom() implementation using getrandom() on Linux. + Truncate size to INT_MAX and loop until we collected enough random bytes, + instead of casting a directly Py_ssize_t to int. + +Library +------- + +- bpo-26386: Fixed ttk.TreeView selection operations with item id's + containing spaces. + +Security +-------- + +- bpo-22636: Avoid shell injection problems with ctypes.util.find_library(). + +Library +------- + +- bpo-16182: Fix various functions in the "readline" module to use the + locale encoding, and fix get_begidx() and get_endidx() to return code + point indexes. + +- bpo-27392: Add loop.connect_accepted_socket(). Patch by Jim Fulton. + +- bpo-27930: Improved behaviour of logging.handlers.QueueListener. Thanks to + Paulo Andrade and Petr Viktorin for the analysis and patch. + +- bpo-21201: Improves readability of multiprocessing error message. Thanks + to Wojciech Walczak for patch. + +- bpo-27456: asyncio: Set TCP_NODELAY by default. + +- bpo-27906: Fix socket accept exhaustion during high TCP traffic. Patch by + Kevin Conway. + +- bpo-28174: Handle when SO_REUSEPORT isn't properly supported. Patch by + Seth Michael Larson. + +- bpo-26654: Inspect functools.partial in asyncio.Handle.__repr__. Patch by + iceboy. + +- bpo-26909: Fix slow pipes IO in asyncio. Patch by INADA Naoki. + +- bpo-28176: Fix callbacks race in asyncio.SelectorLoop.sock_connect. + +- bpo-27759: Fix selectors incorrectly retain invalid file descriptors. + Patch by Mark Williams. + +- bpo-28368: Refuse monitoring processes if the child watcher has no loop + attached. Patch by Vincent Michel. + +- bpo-28369: Raise RuntimeError when transport's FD is used with add_reader, + add_writer, etc. + +- bpo-28370: Speedup asyncio.StreamReader.readexactly. Patch by Коренберг + Марк. + +- bpo-28371: Deprecate passing asyncio.Handles to run_in_executor. + +- bpo-28372: Fix asyncio to support formatting of non-python coroutines. + +- bpo-28399: Remove UNIX socket from FS before binding. Patch by Коренберг + Марк. + +- bpo-27972: Prohibit Tasks to await on themselves. + +- bpo-26923: Fix asyncio.Gather to refuse being cancelled once all children + are done. Patch by Johannes Ebke. + +- bpo-26796: Don't configure the number of workers for default threadpool + executor. Initial patch by Hans Lawrenz. + +- bpo-28600: Optimize loop.call_soon(). + +- bpo-28613: Fix get_event_loop() return the current loop if called from + coroutines/callbacks. + +- bpo-28639: Fix inspect.isawaitable to always return bool Patch by Justin + Mayfield. + +- bpo-28652: Make loop methods reject socket kinds they do not support. + +- bpo-28653: Fix a refleak in functools.lru_cache. + +- bpo-28703: Fix asyncio.iscoroutinefunction to handle Mock objects. + +- bpo-24142: Reading a corrupt config file left the parser in an invalid + state. Original patch by Florian Höch. + +- bpo-28990: Fix SSL hanging if connection is closed before handshake + completed. (Patch by HoHo-Ho) + +IDLE +---- + +- bpo-15308: Add 'interrupt execution' (^C) to Shell menu. Patch by Roger + Serwy, updated by Bayard Randel. + +- bpo-27922: Stop IDLE tests from 'flashing' gui widgets on the screen. + +- Add version to title of IDLE help window. + +- bpo-25564: In section on IDLE -- console differences, mention that using + exec means that __builtins__ is defined for each statement. + +- bpo-27714: text_textview and test_autocomplete now pass when re-run in the + same process. This occurs when test_idle fails when run with the -w + option but without -jn. Fix warning from test_config. + +- bpo-25507: IDLE no longer runs buggy code because of its tkinter imports. + Users must include the same imports required to run directly in Python. + +- bpo-27452: add line counter and crc to IDLE configHandler test dump. + +- bpo-27365: Allow non-ascii chars in IDLE NEWS.txt, for contributor names. + +- bpo-27245: IDLE: Cleanly delete custom themes and key bindings. + Previously, when IDLE was started from a console or by import, a cascade + of warnings was emitted. Patch by Serhiy Storchaka. + +C API +----- + +- bpo-28808: PyUnicode_CompareWithASCIIString() now never raises exceptions. + +- bpo-26754: PyUnicode_FSDecoder() accepted a filename argument encoded as + an iterable of integers. Now only strings and bytes-like objects are + accepted. + +Documentation +------------- + +- bpo-28513: Documented command-line interface of zipfile. + +Tests +----- + +- bpo-28950: Disallow -j0 to be combined with -T/-l/-M in regrtest command + line arguments. + +- bpo-28666: Now test.support.rmtree is able to remove unwritable or + unreadable directories. + +- bpo-23839: Various caches now are cleared before running every test file. + +- bpo-28409: regrtest: fix the parser of command line arguments. + +- bpo-27787: Call gc.collect() before checking each test for "dangling + threads", since the dangling threads are weak references. + +- bpo-27369: In test_pyexpat, avoid testing an error message detail that + changed in Expat 2.2.0. + +Tools/Demos +----------- + +- bpo-27952: Get Tools/scripts/fixcid.py working with Python 3 and the + current "re" module, avoid invalid Python backslash escapes, and fix a bug + parsing escaped C quote signs. + +- bpo-27332: Fixed the type of the first argument of module-level functions + generated by Argument Clinic. Patch by Petr Viktorin. + +- bpo-27418: Fixed Tools/importbench/importbench.py. + +Windows +------- + +- bpo-28251: Improvements to help manuals on Windows. + +- bpo-28110: launcher.msi has different product codes between 32-bit and + 64-bit + +- bpo-25144: Ensures TargetDir is set before continuing with custom install. + +- bpo-27469: Adds a shell extension to the launcher so that drag and drop + works correctly. + +- bpo-27309: Enabled proper Windows styles in python[w].exe manifest. + +Build +----- + +- bpo-29080: Removes hard dependency on hg.exe from PCBuild/build.bat + +- bpo-23903: Added missed names to PC/python3.def. + +- bpo-10656: Fix out-of-tree building on AIX. Patch by Tristan Carel and + Michael Haubenwallner. + +- bpo-26359: Rename --with-optimiations to --enable-optimizations. + +- bpo-28444: Fix missing extensions modules when cross compiling. + +- bpo-28248: Update Windows build and OS X installers to use OpenSSL 1.0.2j. + +- bpo-28258: Fixed build with Estonian locale (python-config and distclean + targets in Makefile). Patch by Arfrever Frehtes Taifersar Arahesis. + +- bpo-26661: setup.py now detects system libffi with multiarch wrapper. + +- bpo-28066: Fix the logic that searches build directories for generated + include files when building outside the source tree. + +- bpo-15819: Remove redundant include search directory option for building + outside the source tree. + +- bpo-27566: Fix clean target in freeze makefile (patch by Lisa Roach) + +- bpo-27705: Update message in validate_ucrtbase.py + +- bpo-27983: Cause lack of llvm-profdata tool when using clang as required + for PGO linking to be a configure time error rather than make time when + --with-optimizations is enabled. Also improve our ability to find the + llvm-profdata tool on MacOS and some Linuxes. + +- bpo-26307: The profile-opt build now applies PGO to the built-in modules. + +- bpo-26359: Add the --with-optimizations configure flag. + +- bpo-27713: Suppress spurious build warnings when updating importlib's + bootstrap files. Patch by Xiang Zhang + +- bpo-25825: Correct the references to Modules/python.exp and ld_so_aix, + which are required on AIX. This updates references to an installation + path that was changed in 3.2a4, and undoes changed references to the build + tree that were made in 3.5.0a1. + +- bpo-27453: CPP invocation in configure must use CPPFLAGS. Patch by Chi + Hsuan Yen. + +- bpo-27641: The configure script now inserts comments into the makefile to + prevent the pgen and _freeze_importlib executables from being + cross-compiled. + +- bpo-26662: Set PYTHON_FOR_GEN in configure as the Python program to be + used for file generation during the build. + +- bpo-10910: Avoid C++ compilation errors on FreeBSD and OS X. Also update + FreedBSD version checks for the original ctype UTF-8 workaround. + +- bpo-28676: Prevent missing 'getentropy' declaration warning on macOS. + Patch by Gareth Rees. + + +What's New in Python 3.5.2 final? +================================= + +*Release date: 2016-06-26* + +Core and Builtins +----------------- + +- bpo-26930: Update Windows builds to use OpenSSL 1.0.2h. + +Tests +----- + +- bpo-26867: Ubuntu's openssl OP_NO_SSLv3 is forced on by default; fix test. + +IDLE +---- + +- bpo-27365: Allow non-ascii in idlelib/NEWS.txt - minimal part for 3.5.2. + + +What's New in Python 3.5.2 release candidate 1? +=============================================== + +*Release date: 2016-06-12* + +Core and Builtins +----------------- + +- bpo-27066: Fixed SystemError if a custom opener (for open()) returns a + negative number without setting an exception. + +- bpo-20041: Fixed TypeError when frame.f_trace is set to None. Patch by + Xavier de Gaye. + +- bpo-26168: Fixed possible refleaks in failing Py_BuildValue() with the "N" + format unit. + +- bpo-26991: Fix possible refleak when creating a function with annotations. + +- bpo-27039: Fixed bytearray.remove() for values greater than 127. Patch by + Joe Jevnik. + +- bpo-23640: int.from_bytes() no longer bypasses constructors for + subclasses. + +- bpo-26811: gc.get_objects() no longer contains a broken tuple with NULL + pointer. + +- bpo-20120: Use RawConfigParser for .pypirc parsing, removing support for + interpolation unintentionally added with move to Python 3. Behavior no + longer does any interpolation in .pypirc files, matching behavior in + Python 2.7 and Setuptools 19.0. + +- bpo-26659: Make the builtin slice type support cycle collection. + +- bpo-26718: super.__init__ no longer leaks memory if called multiple times. + NOTE: A direct call of super.__init__ is not endorsed! + +- bpo-25339: PYTHONIOENCODING now has priority over locale in setting the + error handler for stdin and stdout. + +- bpo-26494: Fixed crash on iterating exhausting iterators. Affected classes + are generic sequence iterators, iterators of str, bytes, bytearray, list, + tuple, set, frozenset, dict, OrderedDict, corresponding views and + os.scandir() iterator. + +- bpo-26581: If coding cookie is specified multiple times on a line in + Python source code file, only the first one is taken to account. + +- bpo-26464: Fix str.translate() when string is ASCII and first replacements + removes character, but next replacement uses a non-ASCII character or a + string longer than 1 character. Regression introduced in Python 3.5.0. + +- bpo-22836: Ensure exception reports from PyErr_Display() and + PyErr_WriteUnraisable() are sensible even when formatting them produces + secondary errors. This affects the reports produced by + sys.__excepthook__() and when __del__() raises an exception. + +- bpo-26302: Correct behavior to reject comma as a legal character for + cookie names. + +- bpo-4806: Avoid masking the original TypeError exception when using star + (``*``) unpacking in function calls. Based on patch by Hagen Fürstenau + and Daniel Urban. + +- bpo-27138: Fix the doc comment for FileFinder.find_spec(). + +- bpo-26154: Add a new private _PyThreadState_UncheckedGet() function to get + the current Python thread state, but don't issue a fatal error if it is + NULL. This new function must be used instead of accessing directly the + _PyThreadState_Current variable. The variable is no more exposed since + Python 3.5.1 to hide the exact implementation of atomic C types, to avoid + compiler issues. + +- bpo-26194: Deque.insert() gave odd results for bounded deques that had + reached their maximum size. Now an IndexError will be raised when + attempting to insert into a full deque. + +- bpo-25843: When compiling code, don't merge constants if they are equal + but have a different types. For example, ``f1, f2 = lambda: 1, lambda: + 1.0`` is now correctly compiled to two different functions: ``f1()`` + returns ``1`` (``int``) and ``f2()`` returns ``1.0`` (``int``), even if + ``1`` and ``1.0`` are equal. + +- bpo-22995: [UPDATE] Comment out the one of the pickleability tests in + _PyObject_GetState() due to regressions observed in Cython-based projects. + +- bpo-25961: Disallowed null characters in the type name. + +- bpo-25973: Fix segfault when an invalid nonlocal statement binds a name + starting with two underscores. + +- bpo-22995: Instances of extension types with a state that aren't + subclasses of list or dict and haven't implemented any pickle-related + methods (__reduce__, __reduce_ex__, __getnewargs__, __getnewargs_ex__, or + __getstate__), can no longer be pickled. Including memoryview. + +- bpo-20440: Massive replacing unsafe attribute setting code with special + macro Py_SETREF. + +- bpo-25766: Special method __bytes__() now works in str subclasses. + +- bpo-25421: __sizeof__ methods of builtin types now use dynamic basic size. + This allows sys.getsize() to work correctly with their subclasses with + __slots__ defined. + +- bpo-25709: Fixed problem with in-place string concatenation and utf-8 + cache. + +- bpo-27147: Mention :pep:`420` in the importlib docs. + +- bpo-24097: Fixed crash in object.__reduce__() if slot name is freed inside + __getattr__. + +- bpo-24731: Fixed crash on converting objects with special methods + __bytes__, __trunc__, and __float__ returning instances of subclasses of + bytes, int, and float to subclasses of bytes, int, and float + correspondingly. + +- bpo-26478: Fix semantic bugs when using binary operators with dictionary + views and tuples. + +- bpo-26171: Fix possible integer overflow and heap corruption in + zipimporter.get_data(). + +- bpo-25660: Fix TAB key behaviour in REPL with readline. + +- bpo-25887: Raise a RuntimeError when a coroutine object is awaited more + than once. + +- bpo-27243: Update the __aiter__ protocol: instead of returning an + awaitable that resolves to an asynchronous iterator, the asynchronous + iterator should be returned directly. Doing the former will trigger a + PendingDeprecationWarning. + +Security +-------- + +- bpo-26556: Update expat to 2.1.1, fixes CVE-2015-1283. + +- Fix TLS stripping vulnerability in smtplib, CVE-2016-0772. Reported by + Team Oststrom + +Library +------- + +- bpo-21386: Implement missing IPv4Address.is_global property. It was + documented since 07a5610bae9d. Initial patch by Roger Luethi. + +- bpo-20900: distutils register command now decodes HTTP responses + correctly. Initial patch by ingrid. + +- A new version of typing.py provides several new classes and features: + @overload outside stubs, Reversible, DefaultDict, Text, ContextManager, + Type[], NewType(), TYPE_CHECKING, and numerous bug fixes (note that some + of the new features are not yet implemented in mypy or other static + analyzers). Also classes for :pep:`492` (Awaitable, AsyncIterable, + AsyncIterator) have been added (in fact they made it into 3.5.1 but were + never mentioned). + +- bpo-25738: Stop http.server.BaseHTTPRequestHandler.send_error() from + sending a message body for 205 Reset Content. Also, don't send Content + header fields in responses that don't have a body. Patch by Susumu + Koshiba. + +- bpo-21313: Fix the "platform" module to tolerate when sys.version contains + truncated build information. + +Security +-------- + +- bpo-26839: On Linux, :func:`os.urandom` now calls ``getrandom()`` with + ``GRND_NONBLOCK`` to fall back on reading ``/dev/urandom`` if the urandom + entropy pool is not initialized yet. Patch written by Colm Buckley. + +Library +------- + +- bpo-27164: In the zlib module, allow decompressing raw Deflate streams + with a predefined zdict. Based on patch by Xiang Zhang. + +- bpo-24291: Fix wsgiref.simple_server.WSGIRequestHandler to completely + write data to the client. Previously it could do partial writes and + truncate data. Also, wsgiref.handler.ServerHandler can now handle stdout + doing partial writes, but this is deprecated. + +- bpo-26809: Add ``__all__`` to :mod:`string`. Patch by Emanuel Barry. + +- bpo-26373: subprocess.Popen.communicate now correctly ignores + BrokenPipeError when the child process dies before .communicate() is + called in more/all circumstances. + +- bpo-21776: distutils.upload now correctly handles HTTPError. Initial patch + by Claudiu Popa. + +- bpo-27114: Fix SSLContext._load_windows_store_certs fails with + PermissionError + +- bpo-18383: Avoid creating duplicate filters when using filterwarnings and + simplefilter. Based on patch by Alex Shkop. + +- bpo-27057: Fix os.set_inheritable() on Android, ioctl() is blocked by + SELinux and fails with EACCESS. The function now falls back to fcntl(). + Patch written by Michał Bednarski. + +- bpo-27014: Fix infinite recursion using typing.py. Thanks to Kalle Tuure! + +- bpo-14132: Fix urllib.request redirect handling when the target only has a + query string. Original fix by Ján Janech. + +- bpo-17214: The "urllib.request" module now percent-encodes non-ASCII bytes + found in redirect target URLs. Some servers send Location header fields + with non-ASCII bytes, but "http.client" requires the request target to be + ASCII-encodable, otherwise a UnicodeEncodeError is raised. Based on patch + by Christian Heimes. + +- bpo-26892: Honor debuglevel flag in urllib.request.HTTPHandler. Patch + contributed by Chi Hsuan Yen. + +- bpo-22274: In the subprocess module, allow stderr to be redirected to + stdout even when stdout is not redirected. Patch by Akira Li. + +- bpo-26807: mock_open 'files' no longer error on readline at end of file. + Patch from Yolanda Robla. + +- bpo-25745: Fixed leaking a userptr in curses panel destructor. + +- bpo-26977: Removed unnecessary, and ignored, call to sum of squares helper + in statistics.pvariance. + +- bpo-26881: The modulefinder module now supports extended opcode arguments. + +- bpo-23815: Fixed crashes related to directly created instances of types in + _tkinter and curses.panel modules. + +- bpo-17765: weakref.ref() no longer silently ignores keyword arguments. + Patch by Georg Brandl. + +- bpo-26873: xmlrpc now raises ResponseError on unsupported type tags + instead of silently return incorrect result. + +- bpo-26711: Fixed the comparison of plistlib.Data with other types. + +- bpo-24114: Fix an uninitialized variable in `ctypes.util`. The bug only + occurs on SunOS when the ctypes implementation searches for the `crle` + program. Patch by Xiang Zhang. Tested on SunOS by Kees Bos. + +- bpo-26864: In urllib.request, change the proxy bypass host checking + against no_proxy to be case-insensitive, and to not match unrelated host + names that happen to have a bypassed hostname as a suffix. Patch by Xiang + Zhang. + +- bpo-26634: recursive_repr() now sets __qualname__ of wrapper. Patch by + Xiang Zhang. + +- bpo-26804: urllib.request will prefer lower_case proxy environment + variables over UPPER_CASE or Mixed_Case ones. Patch contributed by + Hans-Peter Jansen. + +- bpo-26837: assertSequenceEqual() now correctly outputs non-stringified + differing items (like bytes in the -b mode). This affects + assertListEqual() and assertTupleEqual(). + +- bpo-26041: Remove "will be removed in Python 3.7" from deprecation + messages of platform.dist() and platform.linux_distribution(). Patch by + Kumaripaba Miyurusara Athukorala. + +- bpo-26822: itemgetter, attrgetter and methodcaller objects no longer + silently ignore keyword arguments. + +- bpo-26733: Disassembling a class now disassembles class and static + methods. Patch by Xiang Zhang. + +- bpo-26801: Fix error handling in :func:`shutil.get_terminal_size`, catch + :exc:`AttributeError` instead of :exc:`NameError`. Patch written by + Emanuel Barry. + +- bpo-24838: tarfile's ustar and gnu formats now correctly calculate name + and link field limits for multibyte character encodings like utf-8. + +Security +-------- + +- bpo-26657: Fix directory traversal vulnerability with http.server on + Windows. This fixes a regression that was introduced in 3.3.4rc1 and + 3.4.0rc1. Based on patch by Philipp Hagemeister. + +Library +------- + +- bpo-26717: Stop encoding Latin-1-ized WSGI paths with UTF-8. Patch by + Anthony Sottile. + +- bpo-26735: Fix :func:`os.urandom` on Solaris 11.3 and newer when reading + more than 1,024 bytes: call ``getrandom()`` multiple times with a limit of + 1024 bytes per call. + +- bpo-16329: Add .webm to mimetypes.types_map. Patch by Giampaolo Rodola'. + +- bpo-13952: Add .csv to mimetypes.types_map. Patch by Geoff Wilson. + +- bpo-26709: Fixed Y2038 problem in loading binary PLists. + +- bpo-23735: Handle terminal resizing with Readline 6.3+ by installing our + own SIGWINCH handler. Patch by Eric Price. + +- bpo-26586: In http.server, respond with "413 Request header fields too + large" if there are too many header fields to parse, rather than killing + the connection and raising an unhandled exception. Patch by Xiang Zhang. + +- bpo-22854: Change BufferedReader.writable() and BufferedWriter.readable() + to always return False. + +- bpo-25195: Fix a regression in mock.MagicMock. _Call is a subclass of + tuple (changeset 3603bae63c13 only works for classes) so we need to + implement __ne__ ourselves. Patch by Andrew Plummer. + +- bpo-26644: Raise ValueError rather than SystemError when a negative length + is passed to SSLSocket.recv() or read(). + +- bpo-23804: Fix SSL recv(0) and read(0) methods to return zero bytes + instead of up to 1024. + +- bpo-26616: Fixed a bug in datetime.astimezone() method. + +- bpo-21925: :func:`warnings.formatwarning` now catches exceptions on + ``linecache.getline(...)`` to be able to log :exc:`ResourceWarning` + emitted late during the Python shutdown process. + +- bpo-24266: Ctrl+C during Readline history search now cancels the search + mode when compiled with Readline 7. + +- bpo-26560: Avoid potential ValueError in BaseHandler.start_response. + Initial patch by Peter Inglesby. + +Security +-------- + +- bpo-26313: ssl.py _load_windows_store_certs fails if windows cert store is + empty. Patch by Baji. + +Library +------- + +- bpo-26569: Fix :func:`pyclbr.readmodule` and :func:`pyclbr.readmodule_ex` + to support importing packages. + +- bpo-26499: Account for remaining Content-Length in HTTPResponse.readline() + and read1(). Based on patch by Silent Ghost. Also document that + HTTPResponse now supports these methods. + +- bpo-25320: Handle sockets in directories unittest discovery is scanning. + Patch from Victor van den Elzen. + +- bpo-16181: cookiejar.http2time() now returns None if year is higher than + datetime.MAXYEAR. + +- bpo-26513: Fixes platform module detection of Windows Server + +- bpo-23718: Fixed parsing time in week 0 before Jan 1. Original patch by + Tamás Bence Gedai. + +- bpo-20589: Invoking Path.owner() and Path.group() on Windows now raise + NotImplementedError instead of ImportError. + +- bpo-26177: Fixed the keys() method for Canvas and Scrollbar widgets. + +- bpo-15068: Got rid of excessive buffering in the fileinput module. The + bufsize parameter is no longer used. + +- bpo-2202: Fix UnboundLocalError in + AbstractDigestAuthHandler.get_algorithm_impls. Initial patch by Mathieu + Dupuy. + +- bpo-25718: Fixed pickling and copying the accumulate() iterator with total + is None. + +- bpo-26475: Fixed debugging output for regular expressions with the (?x) + flag. + +- bpo-26457: Fixed the subnets() methods in IP network classes for the case + when resulting prefix length is equal to maximal prefix length. Based on + patch by Xiang Zhang. + +- bpo-26385: Remove the file if the internal open() call in + NamedTemporaryFile() fails. Patch by Silent Ghost. + +- bpo-26402: Fix XML-RPC client to retry when the server shuts down a + persistent connection. This was a regression related to the new + http.client.RemoteDisconnected exception in 3.5.0a4. + +- bpo-25913: Leading ``<~`` is optional now in base64.a85decode() with + adobe=True. Patch by Swati Jaiswal. + +- bpo-26186: Remove an invalid type check in importlib.util.LazyLoader. + +- bpo-26367: importlib.__import__() raises SystemError like + builtins.__import__() when ``level`` is specified but without an + accompanying package specified. + +- bpo-26309: In the "socketserver" module, shut down the request (closing + the connected socket) when verify_request() returns false. Patch by Aviv + Palivoda. + +Security +-------- + +- bpo-25939: On Windows open the cert store readonly in + ssl.enum_certificates. + +Library +------- + +- bpo-25995: os.walk() no longer uses FDs proportional to the tree depth. + +- bpo-26117: The os.scandir() iterator now closes file descriptor not only + when the iteration is finished, but when it was failed with error. + +- bpo-25911: Restored support of bytes paths in os.walk() on Windows. + +- bpo-26045: Add UTF-8 suggestion to error message when posting a + non-Latin-1 string with http.client. + +- bpo-12923: Reset FancyURLopener's redirect counter even if there is an + exception. Based on patches by Brian Brazil and Daniel Rocco. + +- bpo-25945: Fixed a crash when unpickle the functools.partial object with + wrong state. Fixed a leak in failed functools.partial constructor. "args" + and "keywords" attributes of functools.partial have now always types tuple + and dict correspondingly. + +- bpo-26202: copy.deepcopy() now correctly copies range() objects with + non-atomic attributes. + +- bpo-23076: Path.glob() now raises a ValueError if it's called with an + invalid pattern. Patch by Thomas Nyberg. + +- bpo-19883: Fixed possible integer overflows in zipimport. + +- bpo-26227: On Windows, getnameinfo(), gethostbyaddr() and + gethostbyname_ex() functions of the socket module now decode the hostname + from the ANSI code page rather than UTF-8. + +- bpo-26147: xmlrpc now works with strings not encodable with used non-UTF-8 + encoding. + +- bpo-25935: Garbage collector now breaks reference loops with OrderedDict. + +- bpo-16620: Fixed AttributeError in msilib.Directory.glob(). + +- bpo-26013: Added compatibility with broken protocol 2 pickles created in + old Python 3 versions (3.4.3 and lower). + +- bpo-25850: Use cross-compilation by default for 64-bit Windows. + +- bpo-17633: Improve zipimport's support for namespace packages. + +- bpo-24705: Fix sysconfig._parse_makefile not expanding ${} vars appearing + before $() vars. + +- bpo-22138: Fix mock.patch behavior when patching descriptors. Restore + original values after patching. Patch contributed by Sean McCully. + +- bpo-25672: In the ssl module, enable the SSL_MODE_RELEASE_BUFFERS mode + option if it is safe to do so. + +- bpo-26012: Don't traverse into symlinks for ``**`` pattern in + pathlib.Path.[r]glob(). + +- bpo-24120: Ignore PermissionError when traversing a tree with + pathlib.Path.[r]glob(). Patch by Ulrich Petri. + +- bpo-25447: fileinput now uses sys.stdin as-is if it does not have a buffer + attribute (restores backward compatibility). + +- bpo-25447: Copying the lru_cache() wrapper object now always works, + independently from the type of the wrapped object (by returning the + original object unchanged). + +- bpo-24103: Fixed possible use after free in ElementTree.XMLPullParser. + +- bpo-25860: os.fwalk() no longer skips remaining directories when error + occurs. Original patch by Samson Lee. + +- bpo-25914: Fixed and simplified OrderedDict.__sizeof__. + +- bpo-25902: Fixed various refcount issues in ElementTree iteration. + +- bpo-25717: Restore the previous behaviour of tolerating most fstat() + errors when opening files. This was a regression in 3.5a1, and stopped + anonymous temporary files from working in special cases. + +- bpo-24903: Fix regression in number of arguments compileall accepts when + '-d' is specified. The check on the number of arguments has been dropped + completely as it never worked correctly anyway. + +- bpo-25764: In the subprocess module, preserve any exception caused by + fork() failure when preexec_fn is used. + +- bpo-6478: _strptime's regexp cache now is reset after changing timezone + with time.tzset(). + +- bpo-14285: When executing a package with the "python -m package" option, + and package initialization fails, a proper traceback is now reported. The + "runpy" module now lets exceptions from package initialization pass back + to the caller, rather than raising ImportError. + +- bpo-19771: Also in runpy and the "-m" option, omit the irrelevant message + ". . . is a package and cannot be directly executed" if the package could + not even be initialized (e.g. due to a bad ``*.pyc`` file). + +- bpo-25177: Fixed problem with the mean of very small and very large + numbers. As a side effect, statistics.mean and statistics.variance should + be significantly faster. + +- bpo-25718: Fixed copying object with state with boolean value is false. + +- bpo-10131: Fixed deep copying of minidom documents. Based on patch by + Marian Ganisin. + +- bpo-25725: Fixed a reference leak in pickle.loads() when unpickling + invalid data including tuple instructions. + +- bpo-25663: In the Readline completer, avoid listing duplicate global + names, and search the global namespace before searching builtins. + +- bpo-25688: Fixed file leak in ElementTree.iterparse() raising an error. + +- bpo-23914: Fixed SystemError raised by unpickler on broken pickle data. + +- bpo-25691: Fixed crash on deleting ElementTree.Element attributes. + +- bpo-25624: ZipFile now always writes a ZIP_STORED header for directory + entries. Patch by Dingyuan Wang. + +- Skip getaddrinfo if host is already resolved. Patch by A. Jesse Jiryu + Davis. + +- bpo-26050: Add asyncio.StreamReader.readuntil() method. Patch by Марк + Коренберг. + +- bpo-25924: Avoid unnecessary serialization of getaddrinfo(3) calls on OS X + versions 10.5 or higher. Original patch by A. Jesse Jiryu Davis. + +- bpo-26406: Avoid unnecessary serialization of getaddrinfo(3) calls on + current versions of OpenBSD and NetBSD. Patch by A. Jesse Jiryu Davis. + +- bpo-26848: Fix asyncio/subprocess.communicate() to handle empty input. + Patch by Jack O'Connor. + +- bpo-27040: Add loop.get_exception_handler method + +- bpo-27041: asyncio: Add loop.create_future method + +- bpo-27223: asyncio: Fix _read_ready and _write_ready to respect + _conn_lost. Patch by Łukasz Langa. + +- bpo-22970: asyncio: Fix inconsistency cancelling Condition.wait. Patch by + David Coles. + +IDLE +---- + +- bpo-5124: Paste with text selected now replaces the selection on X11. This + matches how paste works on Windows, Mac, most modern Linux apps, and ttk + widgets. Original patch by Serhiy Storchaka. + +- bpo-24759: Make clear in idlelib.idle_test.__init__ that the directory is + a private implementation of test.test_idle and tool for maintainers. + +- bpo-27196: Stop 'ThemeChanged' warnings when running IDLE tests. These + persisted after other warnings were suppressed in #20567. Apply Serhiy + Storchaka's update_idletasks solution to four test files. Record this + additional advice in idle_test/README.txt + +- bpo-20567: Revise idle_test/README.txt with advice about avoiding tk + warning messages from tests. Apply advice to several IDLE tests. + +- bpo-27117: Make colorizer htest and turtledemo work with dark themes. Move + code for configuring text widget colors to a new function. + +- bpo-26673: When tk reports font size as 0, change to size 10. Such fonts + on Linux prevented the configuration dialog from opening. + +- bpo-21939: Add test for IDLE's percolator. Original patch by Saimadhav + Heblikar. + +- bpo-21676: Add test for IDLE's replace dialog. Original patch by Saimadhav + Heblikar. + +- bpo-18410: Add test for IDLE's search dialog. Original patch by Westley + Martínez. + +- bpo-21703: Add test for IDLE's undo delegator. Original patch by Saimadhav + Heblikar . + +- bpo-27044: Add ConfigDialog.remove_var_callbacks to stop memory leaks. + +- bpo-23977: Add more asserts to test_delegator. + +- bpo-20640: Add tests for idlelib.configHelpSourceEdit. Patch by Saimadhav + Heblikar. + +- In the 'IDLE-console differences' section of the IDLE doc, clarify how + running with IDLE affects sys.modules and the standard streams. + +- bpo-25507: fix incorrect change in IOBinding that prevented printing. + Augment IOBinding htest to include all major IOBinding functions. + +- bpo-25905: Revert unwanted conversion of ' to ’ RIGHT SINGLE QUOTATION + MARK in README.txt and open this and NEWS.txt with 'ascii'. Re-encode + CREDITS.txt to utf-8 and open it with 'utf-8'. + +Documentation +------------- + +- bpo-19489: Moved the search box from the sidebar to the header and footer + of each page. Patch by Ammar Askar. + +- bpo-24136: Document the new :pep:`448` unpacking syntax of 3.5. + +- bpo-26736: Used HTTPS for external links in the documentation if possible. + +- bpo-6953: Rework the Readline module documentation to group related + functions together, and add more details such as what underlying Readline + functions and variables are accessed. + +- bpo-23606: Adds note to ctypes documentation regarding cdll.msvcrt. + +- bpo-25500: Fix documentation to not claim that __import__ is searched for + in the global scope. + +- bpo-26014: Update 3.x packaging documentation: * "See also" links to the + new docs are now provided in the legacy pages * links to setuptools + documentation have been updated + +Tests +----- + +- bpo-21916: Added tests for the turtle module. Patch by ingrid, Gregory + Loyse and Jelle Zijlstra. + +- bpo-26523: The multiprocessing thread pool (multiprocessing.dummy.Pool) + was untested. + +- bpo-26015: Added new tests for pickling iterators of mutable sequences. + +- bpo-26325: Added test.support.check_no_resource_warning() to check that no + ResourceWarning is emitted. + +- bpo-25940: Changed test_ssl to use self-signed.pythontest.net. This + avoids relying on svn.python.org, which recently changed root certificate. + +- bpo-25616: Tests for OrderedDict are extracted from test_collections into + separate file test_ordered_dict. + +- bpo-26583: Skip test_timestamp_overflow in test_import if bytecode files + cannot be written. + +Build +----- + +- bpo-26884: Fix linking extension modules for cross builds. Patch by Xavier + de Gaye. + +- bpo-22359: Disable the rules for running _freeze_importlib and pgen when + cross-compiling. The output of these programs is normally saved with the + source code anyway, and is still regenerated when doing a native build. + Patch by Xavier de Gaye. + +- bpo-27229: Fix the cross-compiling pgen rule for in-tree builds. Patch by + Xavier de Gaye. + +- bpo-21668: Link audioop, _datetime, _ctypes_test modules to libm, except + on Mac OS X. Patch written by Xavier de Gaye. + +- bpo-25702: A --with-lto configure option has been added that will enable + link time optimizations at build time during a make profile-opt. Some + compilers and toolchains are known to not produce stable code when using + LTO, be sure to test things thoroughly before relying on it. It can + provide a few % speed up over profile-opt alone. + +- bpo-26624: Adds validation of ucrtbase[d].dll version with warning for old + versions. + +- bpo-17603: Avoid error about nonexistent fileblocks.o file by using a + lower-level check for st_blocks in struct stat. + +- bpo-26079: Fixing the build output folder for tix-8.4.3.6. Patch by Bjoern + Thiel. + +- bpo-26465: Update Windows builds to use OpenSSL 1.0.2g. + +- bpo-24421: Compile Modules/_math.c once, before building extensions. + Previously it could fail to compile properly if the math and cmath builds + were concurrent. + +- bpo-25348: Added ``--pgo`` and ``--pgo-job`` arguments to + ``PCbuild\build.bat`` for building with Profile-Guided Optimization. The + old ``PCbuild\build_pgo.bat`` script is now deprecated, and simply calls + ``PCbuild\build.bat --pgo %*``. + +- bpo-25827: Add support for building with ICC to ``configure``, including a + new ``--with-icc`` flag. + +- bpo-25696: Fix installation of Python on UNIX with make -j9. + +- bpo-26930: Update OS X 10.5+ 32-bit-only installer to build and link with + OpenSSL 1.0.2h. + +- bpo-26268: Update Windows builds to use OpenSSL 1.0.2f. + +- bpo-25136: Support Apple Xcode 7's new textual SDK stub libraries. + +- bpo-24324: Do not enable unreachable code warnings when using gcc as the + option does not work correctly in older versions of gcc and has been + silently removed as of gcc-4.5. + +Windows +------- + +- bpo-27053: Updates make_zip.py to correctly generate library ZIP file. + +- bpo-26268: Update the prepare_ssl.py script to handle OpenSSL releases + that don't include the contents of the include directory (that is, 1.0.2e + and later). + +- bpo-26071: bdist_wininst created binaries fail to start and find 32bit + Python + +- bpo-26073: Update the list of magic numbers in launcher + +- bpo-26065: Excludes venv from library when generating embeddable distro. + +Tools/Demos +----------- + +- bpo-26799: Fix python-gdb.py: don't get C types once when the Python code + is loaded, but get C types on demand. The C types can change if + python-gdb.py is loaded before the Python executable. Patch written by + Thomas Ilsche. + +- bpo-26271: Fix the Freeze tool to properly use flags passed through + configure. Patch by Daniel Shaulov. + +- bpo-26489: Add dictionary unpacking support to Tools/parser/unparse.py. + Patch by Guo Ci Teo. + +- bpo-26316: Fix variable name typo in Argument Clinic. + +Windows +------- + +- bpo-17500: Remove unused and outdated icons. (See also: + https://github.com/python/pythondotorg/issues/945) + + +What's New in Python 3.5.1 final? +================================= + +*Release date: 2015-12-06* + +Core and Builtins +----------------- + +- bpo-25709: Fixed problem with in-place string concatenation and utf-8 + cache. + +Windows +------- + +- bpo-25715: Python 3.5.1 installer shows wrong upgrade path and incorrect + logic for launcher detection. + + +What's New in Python 3.5.1 release candidate 1? +=============================================== + +*Release date: 2015-11-22* + +Core and Builtins +----------------- + +- bpo-25630: Fix a possible segfault during argument parsing in functions + that accept filesystem paths. + +- bpo-23564: Fixed a partially broken sanity check in the _posixsubprocess + internals regarding how fds_to_pass were passed to the child. The bug had + no actual impact as subprocess.py already avoided it. + +- bpo-25388: Fixed tokenizer crash when processing undecodable source code + with a null byte. + +- bpo-25462: The hash of the key now is calculated only once in most + operations in C implementation of OrderedDict. + +- bpo-22995: Default implementation of __reduce__ and __reduce_ex__ now + rejects builtin types with not defined __new__. + +- bpo-25555: Fix parser and AST: fill lineno and col_offset of "arg" node + when compiling AST from Python objects. + +- bpo-24802: Avoid buffer overreads when int(), float(), compile(), exec() + and eval() are passed bytes-like objects. These objects are not + necessarily terminated by a null byte, but the functions assumed they + were. + +- bpo-24726: Fixed a crash and leaking NULL in repr() of OrderedDict that + was mutated by direct calls of dict methods. + +- bpo-25449: Iterating OrderedDict with keys with unstable hash now raises + KeyError in C implementations as well as in Python implementation. + +- bpo-25395: Fixed crash when highly nested OrderedDict structures were + garbage collected. + +- bpo-25274: sys.setrecursionlimit() now raises a RecursionError if the new + recursion limit is too low depending at the current recursion depth. + Modify also the "lower-water mark" formula to make it monotonic. This mark + is used to decide when the overflowed flag of the thread state is reset. + +- bpo-24402: Fix input() to prompt to the redirected stdout when + sys.stdout.fileno() fails. + +- bpo-24806: Prevent builtin types that are not allowed to be subclassed + from being subclassed through multiple inheritance. + +- bpo-24848: Fixed a number of bugs in UTF-7 decoding of misformed data. + +- bpo-25280: Import trace messages emitted in verbose (-v) mode are no + longer formatted twice. + +- bpo-25003: On Solaris 11.3 or newer, os.urandom() now uses the getrandom() + function instead of the getentropy() function. The getentropy() function + is blocking to generate very good quality entropy, os.urandom() doesn't + need such high-quality entropy. + +- bpo-25182: The stdprinter (used as sys.stderr before the io module is + imported at startup) now uses the backslashreplace error handler. + +- bpo-25131: Make the line number and column offset of set/dict literals and + comprehensions correspond to the opening brace. + +- bpo-25150: Hide the private _Py_atomic_xxx symbols from the public + Python.h header to fix a compilation error with OpenMP. + PyThreadState_GET() becomes an alias to PyThreadState_Get() to avoid ABI + incompatibilities. + +Library +------- + +- bpo-25626: Change three zlib functions to accept sizes that fit in + Py_ssize_t, but internally cap those sizes to UINT_MAX. This resolves a + regression in 3.5 where GzipFile.read() failed to read chunks larger than + 2 or 4 GiB. The change affects the zlib.Decompress.decompress() + max_length parameter, the zlib.decompress() bufsize parameter, and the + zlib.Decompress.flush() length parameter. + +- bpo-25583: Avoid incorrect errors raised by os.makedirs(exist_ok=True) + when the OS gives priority to errors such as EACCES over EEXIST. + +- bpo-25593: Change semantics of EventLoop.stop() in asyncio. + +- bpo-6973: When we know a subprocess.Popen process has died, do not allow + the send_signal(), terminate(), or kill() methods to do anything as they + could potentially signal a different process. + +- bpo-25590: In the Readline completer, only call getattr() once per + attribute. + +- bpo-25498: Fix a crash when garbage-collecting ctypes objects created by + wrapping a memoryview. This was a regression made in 3.5a1. Based on + patch by Eryksun. + +- bpo-25584: Added "escape" to the __all__ list in the glob module. + +- bpo-25584: Fixed recursive glob() with patterns starting with ``**``. + +- bpo-25446: Fix regression in smtplib's AUTH LOGIN support. + +- bpo-18010: Fix the pydoc web server's module search function to handle + exceptions from importing packages. + +- bpo-25554: Got rid of circular references in regular expression parsing. + +- bpo-25510: fileinput.FileInput.readline() now returns b'' instead of '' at + the end if the FileInput was opened with binary mode. Patch by Ryosuke + Ito. + +- bpo-25503: Fixed inspect.getdoc() for inherited docstrings of properties. + Original patch by John Mark Vandenberg. + +- bpo-25515: Always use os.urandom as a source of randomness in uuid.uuid4. + +- bpo-21827: Fixed textwrap.dedent() for the case when largest common + whitespace is a substring of smallest leading whitespace. Based on patch + by Robert Li. + +- bpo-25447: The lru_cache() wrapper objects now can be copied and pickled + (by returning the original object unchanged). + +- bpo-25390: typing: Don't crash on Union[str, Pattern]. + +- bpo-25441: asyncio: Raise error from drain() when socket is closed. + +- bpo-25410: Cleaned up and fixed minor bugs in C implementation of + OrderedDict. + +- bpo-25411: Improved Unicode support in SMTPHandler through better use of + the email package. Thanks to user simon04 for the patch. + +- bpo-25407: Remove mentions of the formatter module being removed in Python + 3.6. + +- bpo-25406: Fixed a bug in C implementation of OrderedDict.move_to_end() + that caused segmentation fault or hang in iterating after moving several + items to the start of ordered dict. + +- bpo-25364: zipfile now works in threads disabled builds. + +- bpo-25328: smtpd's SMTPChannel now correctly raises a ValueError if both + decode_data and enable_SMTPUTF8 are set to true. + +- bpo-25316: distutils raises OSError instead of DistutilsPlatformError when + MSVC is not installed. + +- bpo-25380: Fixed protocol for the STACK_GLOBAL opcode in + pickletools.opcodes. + +- bpo-23972: Updates asyncio datagram create method allowing reuseport and + reuseaddr socket options to be set prior to binding the socket. Mirroring + the existing asyncio create_server method the reuseaddr option for + datagram sockets defaults to True if the O/S is 'posix' (except if the + platform is Cygwin). Patch by Chris Laws. + +- bpo-25304: Add asyncio.run_coroutine_threadsafe(). This lets you submit a + coroutine to a loop from another thread, returning a + concurrent.futures.Future. By Vincent Michel. + +- bpo-25232: Fix CGIRequestHandler to split the query from the URL at the + first question mark (?) rather than the last. Patch from Xiang Zhang. + +- bpo-24657: Prevent CGIRequestHandler from collapsing slashes in the query + part of the URL as if it were a path. Patch from Xiang Zhang. + +- bpo-24483: C implementation of functools.lru_cache() now calculates key's + hash only once. + +- bpo-22958: Constructor and update method of weakref.WeakValueDictionary + now accept the self and the dict keyword arguments. + +- bpo-22609: Constructor of collections.UserDict now accepts the self + keyword argument. + +- bpo-25111: Fixed comparison of traceback.FrameSummary. + +- bpo-25262: Added support for BINBYTES8 opcode in Python implementation of + unpickler. Highest 32 bits of 64-bit size for BINUNICODE8 and BINBYTES8 + opcodes no longer silently ignored on 32-bit platforms in C + implementation. + +- bpo-25034: Fix string.Formatter problem with auto-numbering and nested + format_specs. Patch by Anthon van der Neut. + +- bpo-25233: Rewrite the guts of asyncio.Queue and asyncio.Semaphore to be + more understandable and correct. + +- bpo-25203: Failed readline.set_completer_delims() no longer left the + module in inconsistent state. + +- bpo-23600: Default implementation of tzinfo.fromutc() was returning wrong + results in some cases. + +- bpo-23329: Allow the ssl module to be built with older versions of + LibreSSL. + +- Prevent overflow in _Unpickler_Read. + +- bpo-25047: The XML encoding declaration written by Element Tree now + respects the letter case given by the user. This restores the ability to + write encoding names in uppercase like "UTF-8", which worked in Python 2. + +- bpo-25135: Make deque_clear() safer by emptying the deque before clearing. + This helps avoid possible reentrancy issues. + +- bpo-19143: platform module now reads Windows version from kernel32.dll to + avoid compatibility shims. + +- bpo-25092: Fix datetime.strftime() failure when errno was already set to + EINVAL. + +- bpo-23517: Fix rounding in fromtimestamp() and utcfromtimestamp() methods + of datetime.datetime: microseconds are now rounded to nearest with ties + going to nearest even integer (ROUND_HALF_EVEN), instead of being rounding + towards minus infinity (ROUND_FLOOR). It's important that these methods + use the same rounding mode than datetime.timedelta to keep the property: + (datetime(1970,1,1) + timedelta(seconds=t)) == + datetime.utcfromtimestamp(t). It also the rounding mode used by + round(float) for example. + +- bpo-25155: Fix datetime.datetime.now() and datetime.datetime.utcnow() on + Windows to support date after year 2038. It was a regression introduced in + Python 3.5.0. + +- bpo-25108: Omitted internal frames in traceback functions print_stack(), + format_stack(), and extract_stack() called without arguments. + +- bpo-25118: Fix a regression of Python 3.5.0 in os.waitpid() on Windows. + +- bpo-24684: socket.socket.getaddrinfo() now calls + PyUnicode_AsEncodedString() instead of calling the encode() method of the + host, to handle correctly custom string with an encode() method which + doesn't return a byte string. The encoder of the IDNA codec is now called + directly instead of calling the encode() method of the string. + +- bpo-25060: Correctly compute stack usage of the BUILD_MAP opcode. + +- bpo-24857: Comparing call_args to a long sequence now correctly returns a + boolean result instead of raising an exception. Patch by A Kaptur. + +- bpo-23144: Make sure that HTMLParser.feed() returns all the data, even + when convert_charrefs is True. + +- bpo-24982: shutil.make_archive() with the "zip" format now adds entries + for directories (including empty directories) in ZIP file. + +- bpo-25019: Fixed a crash caused by setting non-string key of expat parser. + Based on patch by John Leitch. + +- bpo-16180: Exit pdb if file has syntax error, instead of trapping user in + an infinite loop. Patch by Xavier de Gaye. + +- bpo-24891: Fix a race condition at Python startup if the file descriptor + of stdin (0), stdout (1) or stderr (2) is closed while Python is creating + sys.stdin, sys.stdout and sys.stderr objects. These attributes are now set + to None if the creation of the object failed, instead of raising an + OSError exception. Initial patch written by Marco Paolini. + +- bpo-24992: Fix error handling and a race condition (related to garbage + collection) in collections.OrderedDict constructor. + +- bpo-24881: Fixed setting binary mode in Python implementation of FileIO on + Windows and Cygwin. Patch from Akira Li. + +- bpo-25578: Fix (another) memory leak in SSLSocket.getpeercer(). + +- bpo-25530: Disable the vulnerable SSLv3 protocol by default when creating + ssl.SSLContext. + +- bpo-25569: Fix memory leak in SSLSocket.getpeercert(). + +- bpo-25471: Sockets returned from accept() shouldn't appear to be + nonblocking. + +- bpo-25319: When threading.Event is reinitialized, the underlying condition + should use a regular lock rather than a recursive lock. + +- bpo-21112: Fix regression in unittest.expectedFailure on subclasses. Patch + from Berker Peksag. + +- bpo-24764: cgi.FieldStorage.read_multi() now ignores the Content-Length + header in part headers. Patch written by Peter Landry and reviewed by + Pierre Quentel. + +- bpo-24913: Fix overrun error in deque.index(). Found by John Leitch and + Bryce Darling. + +- bpo-24774: Fix docstring in http.server.test. Patch from Chiu-Hsiang Hsu. + +- bpo-21159: Improve message in + configparser.InterpolationMissingOptionError. Patch from Łukasz Langa. + +- bpo-20362: Honour TestCase.longMessage correctly in assertRegex. Patch + from Ilia Kurenkov. + +- bpo-23572: Fixed functools.singledispatch on classes with falsy + metaclasses. Patch by Ethan Furman. + +- asyncio: ensure_future() now accepts awaitable objects. + +IDLE +---- + +- bpo-15348: Stop the debugger engine (normally in a user process) before + closing the debugger window (running in the IDLE process). This prevents + the RuntimeErrors that were being caught and ignored. + +- bpo-24455: Prevent IDLE from hanging when a) closing the shell while the + debugger is active (15347); b) closing the debugger with the [X] button + (15348); and c) activating the debugger when already active (24455). The + patch by Mark Roseman does this by making two changes. 1. Suspend and + resume the gui.interaction method with the tcl vwait mechanism intended + for this purpose (instead of root.mainloop & .quit). 2. In gui.run, allow + any existing interaction to terminate first. + +- Change 'The program' to 'Your program' in an IDLE 'kill program?' message + to make it clearer that the program referred to is the currently running + user program, not IDLE itself. + +- bpo-24750: Improve the appearance of the IDLE editor window status bar. + Patch by Mark Roseman. + +- bpo-25313: Change the handling of new built-in text color themes to better + address the compatibility problem introduced by the addition of IDLE Dark. + Consistently use the revised idleConf.CurrentTheme everywhere in idlelib. + +- bpo-24782: Extension configuration is now a tab in the IDLE Preferences + dialog rather than a separate dialog. The former tabs are now a sorted + list. Patch by Mark Roseman. + +- bpo-22726: Re-activate the config dialog help button with some content + about the other buttons and the new IDLE Dark theme. + +- bpo-24820: IDLE now has an 'IDLE Dark' built-in text color theme. It is + more or less IDLE Classic inverted, with a cobalt blue background. + Strings, comments, keywords, ... are still green, red, orange, ... . To + use it with IDLEs released before November 2015, hit the 'Save as New + Custom Theme' button and enter a new name, such as 'Custom Dark'. The + custom theme will work with any IDLE release, and can be modified. + +- bpo-25224: README.txt is now an idlelib index for IDLE developers and + curious users. The previous user content is now in the IDLE doc chapter. + 'IDLE' now means 'Integrated Development and Learning Environment'. + +- bpo-24820: Users can now set breakpoint colors in Settings -> Custom + Highlighting. Original patch by Mark Roseman. + +- bpo-24972: Inactive selection background now matches active selection + background, as configured by users, on all systems. Found items are now + always highlighted on Windows. Initial patch by Mark Roseman. + +- bpo-24570: Idle: make calltip and completion boxes appear on Macs affected + by a tk regression. Initial patch by Mark Roseman. + +- bpo-24988: Idle ScrolledList context menus (used in debugger) now work on + Mac Aqua. Patch by Mark Roseman. + +- bpo-24801: Make right-click for context menu work on Mac Aqua. Patch by + Mark Roseman. + +- bpo-25173: Associate tkinter messageboxes with a specific widget. For Mac + OSX, make them a 'sheet'. Patch by Mark Roseman. + +- bpo-25198: Enhance the initial html viewer now used for Idle Help. + Properly indent fixed-pitch text (patch by Mark Roseman). Give code + snippet a very Sphinx-like light blueish-gray background. Re-use initial + width and height set by users for shell and editor. When the Table of + Contents (TOC) menu is used, put the section header at the top of the + screen. + +- bpo-25225: Condense and rewrite Idle doc section on text colors. + +- bpo-21995: Explain some differences between IDLE and console Python. + +- bpo-22820: Explain need for *print* when running file from Idle editor. + +- bpo-25224: Doc: augment Idle feature list and no-subprocess section. + +- bpo-25219: Update doc for Idle command line options. Some were missing and + notes were not correct. + +- bpo-24861: Most of idlelib is private and subject to change. Use + idleib.idle.* to start Idle. See idlelib.__init__.__doc__. + +- bpo-25199: Idle: add synchronization comments for future maintainers. + +- bpo-16893: Replace help.txt with help.html for Idle doc display. The new + idlelib/help.html is rstripped Doc/build/html/library/idle.html. It looks + better than help.txt and will better document Idle as released. The + tkinter html viewer that works for this file was written by Mark Roseman. + The now unused EditorWindow.HelpDialog class and helt.txt file are + deprecated. + +- bpo-24199: Deprecate unused idlelib.idlever with possible removal in 3.6. + +- bpo-24790: Remove extraneous code (which also create 2 & 3 conflicts). + +Documentation +------------- + +- bpo-22558: Add remaining doc links to source code for Python-coded + modules. Patch by Yoni Lavi. + +- bpo-12067: Rewrite Comparisons section in the Expressions chapter of the + language reference. Some of the details of comparing mixed types were + incorrect or ambiguous. NotImplemented is only relevant at a lower level + than the Expressions chapter. Added details of comparing range() objects, + and default behaviour and consistency suggestions for user-defined + classes. Patch from Andy Maier. + +- bpo-24952: Clarify the default size argument of stack_size() in the + "threading" and "_thread" modules. Patch from Mattip. + +- bpo-23725: Overhaul tempfile docs. Note deprecated status of mktemp. Patch + from Zbigniew Jędrzejewski-Szmek. + +- bpo-24808: Update the types of some PyTypeObject fields. Patch by Joseph + Weston. + +- bpo-22812: Fix unittest discovery examples. Patch from Pam McA'Nulty. + +Tests +----- + +- bpo-25449: Added tests for OrderedDict subclasses. + +- bpo-25099: Make test_compileall not fail when an entry on sys.path cannot + be written to (commonly seen in administrative installs on Windows). + +- bpo-23919: Prevents assert dialogs appearing in the test suite. + +- ``PCbuild\rt.bat`` now accepts an unlimited number of arguments to pass + along to regrtest.py. Previously there was a limit of 9. + +Build +----- + +- bpo-24915: Add LLVM support for PGO builds and use the test suite to + generate the profile data. Initial patch by Alecsandru Patrascu of Intel. + +- bpo-24910: Windows MSIs now have unique display names. + +- bpo-24986: It is now possible to build Python on Windows without errors + when external libraries are not available. + +Windows +------- + +- bpo-25450: Updates shortcuts to start Python in installation directory. + +- bpo-25164: Changes default all-users install directory to match per-user + directory. + +- bpo-25143: Improves installer error messages for unsupported platforms. + +- bpo-25163: Display correct directory in installer when using non-default + settings. + +- bpo-25361: Disables use of SSE2 instructions in Windows 32-bit build + +- bpo-25089: Adds logging to installer for case where launcher is not + selected on upgrade. + +- bpo-25165: Windows uninstallation should not remove launcher if other + versions remain + +- bpo-25112: py.exe launcher is missing icons + +- bpo-25102: Windows installer does not precompile for -O or -OO. + +- bpo-25081: Makes Back button in installer go back to upgrade page when + upgrading. + +- bpo-25091: Increases font size of the installer. + +- bpo-25126: Clarifies that the non-web installer will download some + components. + +- bpo-25213: Restores requestedExecutionLevel to manifest to disable UAC + virtualization. + +- bpo-25022: Removed very outdated PC/example_nt/ directory. + +Tools/Demos +----------- + +- bpo-25440: Fix output of python-config --extension-suffix. + + +What's New in Python 3.5.0 final? +================================= + +*Release date: 2015-09-13* + +Build +----- + +- bpo-25071: Windows installer should not require TargetDir parameter when + installing quietly. + + +What's New in Python 3.5.0 release candidate 4? +=============================================== + +*Release date: 2015-09-09* + +Library +------- + +- bpo-25029: Fixes MemoryError in test_strptime. + +Build +----- + +- bpo-25027: Reverts partial-static build options and adds vcruntime140.dll + to Windows installation. + + +What's New in Python 3.5.0 release candidate 3? +=============================================== + +*Release date: 2015-09-07* + +Core and Builtins +----------------- + +- bpo-24305: Prevent import subsystem stack frames from being counted by the + warnings.warn(stacklevel=) parameter. + +- bpo-24912: Prevent __class__ assignment to immutable built-in objects. + +- bpo-24975: Fix AST compilation for :pep:`448` syntax. + +Library +------- + +- bpo-24917: time_strftime() buffer over-read. + +- bpo-24748: To resolve a compatibility problem found with py2exe and + pywin32, imp.load_dynamic() once again ignores previously loaded modules + to support Python modules replacing themselves with extension modules. + Patch by Petr Viktorin. + +- bpo-24635: Fixed a bug in typing.py where isinstance([], typing.Iterable) + would return True once, then False on subsequent calls. + +- bpo-24989: Fixed buffer overread in BytesIO.readline() if a position is + set beyond size. Based on patch by John Leitch. + +- bpo-24913: Fix overrun error in deque.index(). Found by John Leitch and + Bryce Darling. + + +What's New in Python 3.5.0 release candidate 2? +=============================================== + +*Release date: 2015-08-25* + +Core and Builtins +----------------- + +- bpo-24769: Interpreter now starts properly when dynamic loading is + disabled. Patch by Petr Viktorin. + +- bpo-21167: NAN operations are now handled correctly when python is + compiled with ICC even if -fp-model strict is not specified. + +- bpo-24492: A "package" lacking a __name__ attribute when trying to perform + a ``from .. import ...`` statement will trigger an ImportError instead of + an AttributeError. + +Library +------- + +- bpo-24847: Removes vcruntime140.dll dependency from Tcl/Tk. + +- bpo-24839: platform._syscmd_ver raises DeprecationWarning + +- bpo-24867: Fix Task.get_stack() for 'async def' coroutines + + +What's New in Python 3.5.0 release candidate 1? +=============================================== + +*Release date: 2015-08-09* + +Core and Builtins +----------------- + +- bpo-24667: Resize odict in all cases that the underlying dict resizes. + +Library +------- + +- bpo-24824: Signatures of codecs.encode() and codecs.decode() now are + compatible with pydoc. + +- bpo-24634: Importing uuid should not try to load libc on Windows + +- bpo-24798: _msvccompiler.py doesn't properly support manifests + +- bpo-4395: Better testing and documentation of binary operators. Patch by + Martin Panter. + +- bpo-23973: Update typing.py from GitHub repo. + +- bpo-23004: mock_open() now reads binary data correctly when the type of + read_data is bytes. Initial patch by Aaron Hill. + +- bpo-23888: Handle fractional time in cookie expiry. Patch by ssh. + +- bpo-23652: Make it possible to compile the select module against the libc + headers from the Linux Standard Base, which do not include some EPOLL + macros. Patch by Matt Frank. + +- bpo-22932: Fix timezones in email.utils.formatdate. Patch from Dmitry + Shachnev. + +- bpo-23779: imaplib raises TypeError if authenticator tries to abort. Patch + from Craig Holmquist. + +- bpo-23319: Fix ctypes.BigEndianStructure, swap correctly bytes. Patch + written by Matthieu Gautier. + +- bpo-23254: Document how to close the TCPServer listening socket. Patch + from Martin Panter. + +- bpo-19450: Update Windows and OS X installer builds to use SQLite 3.8.11. + +- bpo-17527: Add PATCH to wsgiref.validator. Patch from Luca Sbardella. + +- bpo-24791: Fix grammar regression for call syntax: 'g(\*a or b)'. + +IDLE +---- + +- bpo-23672: Allow Idle to edit and run files with astral chars in name. + Patch by Mohd Sanad Zaki Rizvi. + +- bpo-24745: Idle editor default font. Switch from Courier to + platform-sensitive TkFixedFont. This should not affect current customized + font selections. If there is a problem, edit + $HOME/.idlerc/config-main.cfg and remove 'fontxxx' entries from [Editor + Window]. Patch by Mark Roseman. + +- bpo-21192: Idle editor. When a file is run, put its name in the restart + bar. Do not print false prompts. Original patch by Adnan Umer. + +- bpo-13884: Idle menus. Remove tearoff lines. Patch by Roger Serwy. + +Documentation +------------- + +- bpo-24129: Clarify the reference documentation for name resolution. This + includes removing the assumption that readers will be familiar with the + name resolution scheme Python used prior to the introduction of lexical + scoping for function namespaces. Patch by Ivan Levkivskyi. + +- bpo-20769: Improve reload() docs. Patch by Dorian Pula. + +- bpo-23589: Remove duplicate sentence from the FAQ. Patch by Yongzhi Pan. + +- bpo-24729: Correct IO tutorial to match implementation regarding encoding + parameter to open function. + +Tests +----- + +- bpo-24751: When running regrtest with the ``-w`` command line option, a + test run is no longer marked as a failure if all tests succeed when + re-run. + + +What's New in Python 3.5.0 beta 4? +================================== + +*Release date: 2015-07-26* + +Core and Builtins +----------------- + +- bpo-23573: Restored optimization of bytes.rfind() and bytearray.rfind() + for single-byte argument on Linux. + +- bpo-24569: Make :pep:`448` dictionary evaluation more consistent. + +- bpo-24583: Fix crash when set is mutated while being updated. + +- bpo-24407: Fix crash when dict is mutated while being updated. + +- bpo-24619: New approach for tokenizing async/await. As a consequence, it + is now possible to have one-line 'async def foo(): await ..' functions. + +- bpo-24687: Plug refleak on SyntaxError in function parameters annotations. + +- bpo-15944: memoryview: Allow arbitrary formats when casting to bytes. + Patch by Martin Panter. + +Library +------- + +- bpo-23441: rcompleter now prints a tab character instead of displaying + possible completions for an empty word. Initial patch by Martin Sekera. + +- bpo-24683: Fixed crashes in _json functions called with arguments of + inappropriate type. + +- bpo-21697: shutil.copytree() now correctly handles symbolic links that + point to directories. Patch by Eduardo Seabra and Thomas Kluyver. + +- bpo-14373: Fixed segmentation fault when gc.collect() is called during + constructing lru_cache (C implementation). + +- bpo-24695: Fix a regression in traceback.print_exception(). If + exc_traceback is None we shouldn't print a traceback header like described + in the documentation. + +- bpo-24620: Random.setstate() now validates the value of state last + element. + +- bpo-22485: Fixed an issue that caused `inspect.getsource` to return + incorrect results on nested functions. + +- bpo-22153: Improve unittest docs. Patch from Martin Panter and evilzero. + +- bpo-24580: Symbolic group references to open group in re patterns now are + explicitly forbidden as well as numeric group references. + +- bpo-24206: Fixed __eq__ and __ne__ methods of inspect classes. + +- bpo-24631: Fixed regression in the timeit module with multiline setup. + +- bpo-18622: unittest.mock.mock_open().reset_mock would recurse infinitely. + Patch from Nicola Palumbo and Laurent De Buyst. + +- bpo-23661: unittest.mock side_effects can now be exceptions again. This + was a regression vs Python 3.4. Patch from Ignacio Rossi + +- bpo-24608: chunk.Chunk.read() now always returns bytes, not str. + +- bpo-18684: Fixed reading out of the buffer in the re module. + +- bpo-24259: tarfile now raises a ReadError if an archive is truncated + inside a data segment. + +- bpo-15014: SMTP.auth() and SMTP.login() now support RFC 4954's optional + initial-response argument to the SMTP AUTH command. + +- bpo-24669: Fix inspect.getsource() for 'async def' functions. Patch by Kai + Groner. + +- bpo-24688: ast.get_docstring() for 'async def' functions. + +Build +----- + +- bpo-24603: Update Windows builds and OS X 10.5 installer to use OpenSSL + 1.0.2d. + + +What's New in Python 3.5.0 beta 3? +================================== + +*Release date: 2015-07-05* + +Core and Builtins +----------------- + +- bpo-24467: Fixed possible buffer over-read in bytearray. The bytearray + object now always allocates place for trailing null byte and it's buffer + now is always null-terminated. + +- Upgrade to Unicode 8.0.0. + +- bpo-24345: Add Py_tp_finalize slot for the stable ABI. + +- bpo-24400: Introduce a distinct type for :pep:`492` coroutines; add + types.CoroutineType, inspect.getcoroutinestate, + inspect.getcoroutinelocals; coroutines no longer use CO_GENERATOR flag; + sys.set_coroutine_wrapper works only for 'async def' coroutines; + inspect.iscoroutine no longer uses collections.abc.Coroutine, it's + intended to test for pure 'async def' coroutines only; add new opcode: + GET_YIELD_FROM_ITER; fix generators wrapper used in types.coroutine to be + instance of collections.abc.Generator; collections.abc.Awaitable and + collections.abc.Coroutine can no longer be used to detect generator-based + coroutines--use inspect.isawaitable instead. + +- bpo-24450: Add gi_yieldfrom to generators and cr_await to coroutines. + Contributed by Benno Leslie and Yury Selivanov. + +- bpo-19235: Add new RecursionError exception. Patch by Georg Brandl. + +Library +------- + +- bpo-21750: mock_open.read_data can now be read from each instance, as it + could in Python 3.3. + +- bpo-24552: Fix use after free in an error case of the _pickle module. + +- bpo-24514: tarfile now tolerates number fields consisting of only + whitespace. + +- bpo-19176: Fixed doctype() related bugs in C implementation of + ElementTree. A deprecation warning no longer issued by XMLParser subclass + with default doctype() method. Direct call of doctype() now issues a + warning. Parser's doctype() now is not called if target's doctype() is + called. Based on patch by Martin Panter. + +- bpo-20387: Restore semantic round-trip correctness in tokenize/untokenize + for tab-indented blocks. + +- bpo-24456: Fixed possible buffer over-read in adpcm2lin() and lin2adpcm() + functions of the audioop module. + +- bpo-24336: The contextmanager decorator now works with functions with + keyword arguments called "func" and "self". Patch by Martin Panter. + +- bpo-24522: Fix possible integer overflow in json accelerator module. + +- bpo-24489: ensure a previously set C errno doesn't disturb cmath.polar(). + +- bpo-24408: Fixed AttributeError in measure() and metrics() methods of + tkinter.Font. + +- bpo-14373: C implementation of functools.lru_cache() now can be used with + methods. + +- bpo-24347: Set KeyError if PyDict_GetItemWithError returns NULL. + +- bpo-24348: Drop superfluous incref/decref. + +- bpo-24359: Check for changed OrderedDict size during iteration. + +- bpo-24368: Support keyword arguments in OrderedDict methods. + +- bpo-24362: Simplify the C OrderedDict fast nodes resize logic. + +- bpo-24377: Fix a ref leak in OrderedDict.__repr__. + +- bpo-24369: Defend against key-changes during iteration. + +Tests +----- + +- bpo-24373: _testmultiphase and xxlimited now use tp_traverse and + tp_finalize to avoid reference leaks encountered when combining tp_dealloc + with PyType_FromSpec (see issue #16690 for details) + +Documentation +------------- + +- bpo-24458: Update documentation to cover multi-phase initialization for + extension modules (PEP 489). Patch by Petr Viktorin. + +- bpo-24351: Clarify what is meant by "identifier" in the context of + string.Template instances. + +Build +----- + +- bpo-24432: Update Windows builds and OS X 10.5 installer to use OpenSSL + 1.0.2c. + + +What's New in Python 3.5.0 beta 2? +================================== + +*Release date: 2015-05-31* + +Core and Builtins +----------------- + +- bpo-24284: The startswith and endswith methods of the str class no longer + return True when finding the empty string and the indexes are completely + out of range. + +- bpo-24115: Update uses of PyObject_IsTrue(), PyObject_Not(), + PyObject_IsInstance(), PyObject_RichCompareBool() and _PyDict_Contains() + to check for and handle errors correctly. + +- bpo-24328: Fix importing one character extension modules. + +- bpo-11205: In dictionary displays, evaluate the key before the value. + +- bpo-24285: Fixed regression that prevented importing extension modules + from inside packages. Patch by Petr Viktorin. + +Library +------- + +- bpo-23247: Fix a crash in the StreamWriter.reset() of CJK codecs. + +- bpo-24270: Add math.isclose() and cmath.isclose() functions as per + :pep:`485`. Contributed by Chris Barker and Tal Einat. + +- bpo-5633: Fixed timeit when the statement is a string and the setup is + not. + +- bpo-24326: Fixed audioop.ratecv() with non-default weightB argument. + Original patch by David Moore. + +- bpo-16991: Add a C implementation of OrderedDict. + +- bpo-23934: Fix inspect.signature to fail correctly for builtin types + lacking signature information. Initial patch by James Powell. + + +What's New in Python 3.5.0 beta 1? +================================== + +*Release date: 2015-05-24* + +Core and Builtins +----------------- + +- bpo-24276: Fixed optimization of property descriptor getter. + +- bpo-24268: PEP 489: Multi-phase extension module initialization. Patch by + Petr Viktorin. + +- bpo-23955: Add pyvenv.cfg option to suppress registry/environment lookup + for generating sys.path on Windows. + +- bpo-24257: Fixed system error in the comparison of faked + types.SimpleNamespace. + +- bpo-22939: Fixed integer overflow in iterator object. Patch by Clement + Rouault. + +- bpo-23985: Fix a possible buffer overrun when deleting a slice from the + front of a bytearray and then appending some other bytes data. + +- bpo-24102: Fixed exception type checking in standard error handlers. + +- bpo-15027: The UTF-32 encoder is now 3x to 7x faster. + +- bpo-23290: Optimize set_merge() for cases where the target is empty. + (Contributed by Serhiy Storchaka.) + +- bpo-2292: PEP 448: Additional Unpacking Generalizations. + +- bpo-24096: Make warnings.warn_explicit more robust against mutation of the + warnings.filters list. + +- bpo-23996: Avoid a crash when a delegated generator raises an unnormalized + StopIteration exception. Patch by Stefan Behnel. + +- bpo-23910: Optimize property() getter calls. Patch by Joe Jevnik. + +- bpo-23911: Move path-based importlib bootstrap code to a separate frozen + module. + +- bpo-24192: Fix namespace package imports. + +- bpo-24022: Fix tokenizer crash when processing undecodable source code. + +- bpo-9951: Added a hex() method to bytes, bytearray, and memoryview. + +- bpo-22906: PEP 479: Change StopIteration handling inside generators. + +- bpo-24017: PEP 492: Coroutines with async and await syntax. + +Library +------- + +- bpo-14373: Added C implementation of functools.lru_cache(). Based on + patches by Matt Joiner and Alexey Kachayev. + +- bpo-24230: The tempfile module now accepts bytes for prefix, suffix and + dir parameters and returns bytes in such situations (matching the os + module APIs). + +- bpo-22189: collections.UserString now supports __getnewargs__(), + __rmod__(), casefold(), format_map(), isprintable(), and maketrans(). + Patch by Joe Jevnik. + +- bpo-24244: Prevents termination when an invalid format string is + encountered on Windows in strftime. + +- bpo-23973: PEP 484: Add the typing module. + +- bpo-23086: The collections.abc.Sequence() abstract base class added + *start* and *stop* parameters to the index() mixin. Patch by Devin + Jeanpierre. + +- bpo-20035: Replaced the ``tkinter._fix`` module used for setting up the + Tcl/Tk environment on Windows with a private function in the ``_tkinter`` + module that makes no permanent changes to the environment. + +- bpo-24257: Fixed segmentation fault in sqlite3.Row constructor with faked + cursor type. + +- bpo-15836: assertRaises(), assertRaisesRegex(), assertWarns() and + assertWarnsRegex() assertments now check the type of the first argument to + prevent possible user error. Based on patch by Daniel Wagner-Hall. + +- bpo-9858: Add missing method stubs to _io.RawIOBase. Patch by Laura + Rupprecht. + +- bpo-22955: attrgetter, itemgetter and methodcaller objects in the operator + module now support pickling. Added readable and evaluable repr for these + objects. Based on patch by Josh Rosenberg. + +- bpo-22107: tempfile.gettempdir() and tempfile.mkdtemp() now try again when + a directory with the chosen name already exists on Windows as well as on + Unix. tempfile.mkstemp() now fails early if parent directory is not valid + (not exists or is a file) on Windows. + +- bpo-23780: Improved error message in os.path.join() with single argument. + +- bpo-6598: Increased time precision and random number range in + email.utils.make_msgid() to strengthen the uniqueness of the message ID. + +- bpo-24091: Fixed various crashes in corner cases in C implementation of + ElementTree. + +- bpo-21931: msilib.FCICreate() now raises TypeError in the case of a bad + argument instead of a ValueError with a bogus FCI error number. Patch by + Jeffrey Armstrong. + +- bpo-13866: *quote_via* argument added to urllib.parse.urlencode. + +- bpo-20098: New mangle_from policy option for email, default True for + compat32, but False for all other policies. + +- bpo-24211: The email library now supports RFC 6532: it can generate + headers using utf-8 instead of encoded words. + +- bpo-16314: Added support for the LZMA compression in distutils. + +- bpo-21804: poplib now supports RFC 6856 (UTF8). + +- bpo-18682: Optimized pprint functions for builtin scalar types. + +- bpo-22027: smtplib now supports RFC 6531 (SMTPUTF8). + +- bpo-23488: Random generator objects now consume 2x less memory on 64-bit. + +- bpo-1322: platform.dist() and platform.linux_distribution() functions are + now deprecated. Initial patch by Vajrasky Kok. + +- bpo-22486: Added the math.gcd() function. The fractions.gcd() function + now is deprecated. Based on patch by Mark Dickinson. + +- bpo-24064: Property() docstrings are now writeable. (Patch by Berker + Peksag.) + +- bpo-22681: Added support for the koi8_t encoding. + +- bpo-22682: Added support for the kz1048 encoding. + +- bpo-23796: peek and read1 methods of BufferedReader now raise ValueError + if they called on a closed object. Patch by John Hergenroeder. + +- bpo-21795: smtpd now supports the 8BITMIME extension whenever the new + *decode_data* constructor argument is set to False. + +- bpo-24155: optimize heapq.heapify() for better cache performance when + heapifying large lists. + +- bpo-21800: imaplib now supports RFC 5161 (enable), RFC 6855 + (utf8/internationalized email) and automatically encodes non-ASCII + usernames and passwords to UTF8. + +- bpo-20274: When calling a _sqlite.Connection, it now complains if passed + any keyword arguments. Previously it silently ignored them. + +- bpo-20274: Remove ignored and erroneous "kwargs" parameters from three + METH_VARARGS methods on _sqlite.Connection. + +- bpo-24134: assertRaises(), assertRaisesRegex(), assertWarns() and + assertWarnsRegex() checks now emits a deprecation warning when callable is + None or keyword arguments except msg is passed in the context manager + mode. + +- bpo-24018: Add a collections.abc.Generator abstract base class. + Contributed by Stefan Behnel. + +- bpo-23880: Tkinter's getint() and getdouble() now support Tcl_Obj. + Tkinter's getdouble() now supports any numbers (in particular int). + +- bpo-22619: Added negative limit support in the traceback module. Based on + patch by Dmitry Kazakov. + +- bpo-24094: Fix possible crash in json.encode with poorly behaved dict + subclasses. + +- bpo-9246: On POSIX, os.getcwd() now supports paths longer than 1025 bytes. + Patch written by William Orr. + +- bpo-17445: add difflib.diff_bytes() to support comparison of byte strings + (fixes a regression from Python 2). + +- bpo-23917: Fall back to sequential compilation when ProcessPoolExecutor + doesn't exist. Patch by Claudiu Popa. + +- bpo-23008: Fixed resolving attributes with boolean value is False in + pydoc. + +- Fix asyncio issue 235: LifoQueue and PriorityQueue's put didn't increment + unfinished tasks (this bug was introduced when JoinableQueue was merged + with Queue). + +- bpo-23908: os functions now reject paths with embedded null character on + Windows instead of silently truncating them. + +- bpo-23728: binascii.crc_hqx() could return an integer outside of the range + 0-0xffff for empty data. + +- bpo-23887: urllib.error.HTTPError now has a proper repr() representation. + Patch by Berker Peksag. + +- asyncio: New event loop APIs: set_task_factory() and get_task_factory(). + +- asyncio: async() function is deprecated in favour of ensure_future(). + +- bpo-24178: asyncio.Lock, Condition, Semaphore, and BoundedSemaphore + support new 'async with' syntax. Contributed by Yury Selivanov. + +- bpo-24179: Support 'async for' for asyncio.StreamReader. Contributed by + Yury Selivanov. + +- bpo-24184: Add AsyncIterator and AsyncIterable ABCs to collections.abc. + Contributed by Yury Selivanov. + +- bpo-22547: Implement informative __repr__ for inspect.BoundArguments. + Contributed by Yury Selivanov. + +- bpo-24190: Implement inspect.BoundArgument.apply_defaults() method. + Contributed by Yury Selivanov. + +- bpo-20691: Add 'follow_wrapped' argument to + inspect.Signature.from_callable() and inspect.signature(). Contributed by + Yury Selivanov. + +- bpo-24248: Deprecate inspect.Signature.from_function() and + inspect.Signature.from_builtin(). + +- bpo-23898: Fix inspect.classify_class_attrs() to support attributes with + overloaded __eq__ and __bool__. Patch by Mike Bayer. + +- bpo-24298: Fix inspect.signature() to correctly unwrap wrappers around + bound methods. + +IDLE +---- + +- bpo-23184: remove unused names and imports in idlelib. Initial patch by Al + Sweigart. + +Tests +----- + +- bpo-21520: test_zipfile no longer fails if the word 'bad' appears anywhere + in the name of the current directory. + +- bpo-9517: Move script_helper into the support package. Patch by Christie + Wilson. + +Documentation +------------- + +- bpo-22155: Add File Handlers subsection with createfilehandler to tkinter + doc. Remove obsolete example from FAQ. Patch by Martin Panter. + +- bpo-24029: Document the name binding behavior for submodule imports. + +- bpo-24077: Fix typo in man page for -I command option: -s, not -S + +Tools/Demos +----------- + +- bpo-24000: Improved Argument Clinic's mapping of converters to legacy + "format units". Updated the documentation to match. + +- bpo-24001: Argument Clinic converters now use accept={type} instead of + types={'type'} to specify the types the converter accepts. + +- bpo-23330: h2py now supports arbitrary filenames in #include. + +- bpo-24031: make patchcheck now supports git checkouts, too. + + +What's New in Python 3.5.0 alpha 4? +=================================== + +*Release date: 2015-04-19* + +Core and Builtins +----------------- + +- bpo-22980: Under Linux, GNU/KFreeBSD and the Hurd, C extensions now + include the architecture triplet in the extension name, to make it easy to + test builds for different ABIs in the same working tree. Under OS X, the + extension name now includes :pep:`3149`-style information. + +- bpo-22631: Added Linux-specific socket constant CAN_RAW_FD_FRAMES. Patch + courtesy of Joe Jevnik. + +- bpo-23731: Implement :pep:`488`: removal of .pyo files. + +- bpo-23726: Don't enable GC for user subclasses of non-GC types that don't + add any new fields. Patch by Eugene Toder. + +- bpo-23309: Avoid a deadlock at shutdown if a daemon thread is aborted + while it is holding a lock to a buffered I/O object, and the main thread + tries to use the same I/O object (typically stdout or stderr). A fatal + error is emitted instead. + +- bpo-22977: Fixed formatting Windows error messages on Wine. Patch by + Martin Panter. + +- bpo-23466: %c, %o, %x, and %X in bytes formatting now raise TypeError on + non-integer input. + +- bpo-24044: Fix possible null pointer dereference in list.sort in out of + memory conditions. + +- bpo-21354: PyCFunction_New function is exposed by python DLL again. + +Library +------- + +- bpo-23840: tokenize.open() now closes the temporary binary file on error + to fix a resource warning. + +- bpo-16914: new debuglevel 2 in smtplib adds timestamps to debug output. + +- bpo-7159: urllib.request now supports sending auth credentials + automatically after the first 401. This enhancement is a superset of the + enhancement from issue #19494 and supersedes that change. + +- bpo-23703: Fix a regression in urljoin() introduced in 901e4e52b20a. Patch + by Demian Brecht. + +- bpo-4254: Adds _curses.update_lines_cols(). Patch by Arnon Yaari + +- bpo-19933: Provide default argument for ndigits in round. Patch by + Vajrasky Kok. + +- bpo-23193: Add a numeric_owner parameter to tarfile.TarFile.extract and + tarfile.TarFile.extractall. Patch by Michael Vogt and Eric Smith. + +- bpo-23342: Add a subprocess.run() function than returns a CalledProcess + instance for a more consistent API than the existing call* functions. + +- bpo-21217: inspect.getsourcelines() now tries to compute the start and end + lines from the code object, fixing an issue when a lambda function is used + as decorator argument. Patch by Thomas Ballinger and Allison Kaptur. + +- bpo-24521: Fix possible integer overflows in the pickle module. + +- bpo-22931: Allow '[' and ']' in cookie values. + +- The keywords attribute of functools.partial is now always a dictionary. + +- bpo-23811: Add missing newline to the PyCompileError error message. Patch + by Alex Shkop. + +- bpo-21116: Avoid blowing memory when allocating a multiprocessing shared + array that's larger than 50% of the available RAM. Patch by Médéric + Boquien. + +- bpo-22982: Improve BOM handling when seeking to multiple positions of a + writable text file. + +- bpo-23464: Removed deprecated asyncio JoinableQueue. + +- bpo-23529: Limit the size of decompressed data when reading from GzipFile, + BZ2File or LZMAFile. This defeats denial of service attacks using + compressed bombs (i.e. compressed payloads which decompress to a huge + size). Patch by Martin Panter and Nikolaus Rath. + +- bpo-21859: Added Python implementation of io.FileIO. + +- bpo-23865: close() methods in multiple modules now are idempotent and more + robust at shutdown. If they need to release multiple resources, all are + released even if errors occur. + +- bpo-23400: Raise same exception on both Python 2 and 3 if sem_open is not + available. Patch by Davin Potts. + +- bpo-10838: The subprocess now module includes SubprocessError and + TimeoutError in its list of exported names for the users wild enough to + use ``from subprocess import *``. + +- bpo-23411: Added DefragResult, ParseResult, SplitResult, + DefragResultBytes, ParseResultBytes, and SplitResultBytes to + urllib.parse.__all__. Patch by Martin Panter. + +- bpo-23881: urllib.request.ftpwrapper constructor now closes the socket if + the FTP connection failed to fix a ResourceWarning. + +- bpo-23853: :meth:`socket.socket.sendall` does no more reset the socket + timeout each time data is sent successfully. The socket timeout is now the + maximum total duration to send all data. + +- bpo-22721: An order of multiline pprint output of set or dict containing + orderable and non-orderable elements no longer depends on iteration order + of set or dict. + +- bpo-15133: _tkinter.tkapp.getboolean() now supports Tcl_Obj and always + returns bool. tkinter.BooleanVar now validates input values (accepted + bool, int, str, and Tcl_Obj). tkinter.BooleanVar.get() now always returns + bool. + +- bpo-10590: xml.sax.parseString() now supports string argument. + +- bpo-23338: Fixed formatting ctypes error messages on Cygwin. Patch by + Makoto Kato. + +- bpo-15582: inspect.getdoc() now follows inheritance chains. + +- bpo-2175: SAX parsers now support a character stream of InputSource + object. + +- bpo-16840: Tkinter now supports 64-bit integers added in Tcl 8.4 and + arbitrary precision integers added in Tcl 8.5. + +- bpo-23834: Fix socket.sendto(), use the C Py_ssize_t type to store the + result of sendto() instead of the C int type. + +- bpo-23618: :meth:`socket.socket.connect` now waits until the connection + completes instead of raising :exc:`InterruptedError` if the connection is + interrupted by signals, signal handlers don't raise an exception and the + socket is blocking or has a timeout. :meth:`socket.socket.connect` still + raise :exc:`InterruptedError` for non-blocking sockets. + +- bpo-21526: Tkinter now supports new boolean type in Tcl 8.5. + +- bpo-23836: Fix the faulthandler module to handle reentrant calls to its + signal handlers. + +- bpo-23838: linecache now clears the cache and returns an empty result on + MemoryError. + +- bpo-10395: Added os.path.commonpath(). Implemented in posixpath and + ntpath. Based on patch by Rafik Draoui. + +- bpo-23611: Serializing more "lookupable" objects (such as unbound methods + or nested classes) now are supported with pickle protocols < 4. + +- bpo-13583: sqlite3.Row now supports slice indexing. + +- bpo-18473: Fixed 2to3 and 3to2 compatible pickle mappings. Fixed + ambiguous reverse mappings. Added many new mappings. Import mapping is + no longer applied to modules already mapped with full name mapping. + +- bpo-23485: select.select() is now retried automatically with the + recomputed timeout when interrupted by a signal, except if the signal + handler raises an exception. This change is part of the :pep:`475`. + +- bpo-23752: When built from an existing file descriptor, io.FileIO() now + only calls fstat() once. Before fstat() was called twice, which was not + necessary. + +- bpo-23704: collections.deque() objects now support __add__, __mul__, and + __imul__(). + +- bpo-23171: csv.Writer.writerow() now supports arbitrary iterables. + +- bpo-23745: The new email header parser now handles duplicate MIME + parameter names without error, similar to how get_param behaves. + +- bpo-22117: Fix os.utime(), it now rounds the timestamp towards minus + infinity (-inf) instead of rounding towards zero. + +- bpo-23310: Fix MagicMock's initializer to work with __methods__, just like + configure_mock(). Patch by Kasia Jachim. + +Build +----- + +- bpo-23817: FreeBSD now uses "1.0" in the SOVERSION as other operating + systems, instead of just "1". + +- bpo-23501: Argument Clinic now generates code into separate files by + default. + +Tests +----- + +- bpo-23799: Added test.support.start_threads() for running and cleaning up + multiple threads. + +- bpo-22390: test.regrtest now emits a warning if temporary files or + directories are left after running a test. + +Tools/Demos +----------- + +- bpo-18128: pygettext now uses standard +NNNN format in the + POT-Creation-Date header. + +- bpo-23935: Argument Clinic's understanding of format units accepting + bytes, bytearrays, and buffers is now consistent with both the + documentation and the implementation. + +- bpo-23944: Argument Clinic now wraps long impl prototypes at column 78. + +- bpo-20586: Argument Clinic now ensures that functions without docstrings + have signatures. + +- bpo-23492: Argument Clinic now generates argument parsing code with + PyArg_Parse instead of PyArg_ParseTuple if possible. + +- bpo-23500: Argument Clinic is now smarter about generating the "#ifndef" + (empty) definition of the methoddef macro: it's only generated once, even + if Argument Clinic processes the same symbol multiple times, and it's + emitted at the end of all processing rather than immediately after the + first use. + +C API +----- + +- bpo-23998: PyImport_ReInitLock() now checks for lock allocation error + + +What's New in Python 3.5.0 alpha 3? +=================================== + +*Release date: 2015-03-28* + +Core and Builtins +----------------- + +- bpo-23573: Increased performance of string search operations (str.find, + str.index, str.count, the in operator, str.split, str.partition) with + arguments of different kinds (UCS1, UCS2, UCS4). + +- bpo-23753: Python doesn't support anymore platforms without stat() or + fstat(), these functions are always required. + +- bpo-23681: The -b option now affects comparisons of bytes with int. + +- bpo-23632: Memoryviews now allow tuple indexing (including for + multi-dimensional memoryviews). + +- bpo-23192: Fixed generator lambdas. Patch by Bruno Cauet. + +- bpo-23629: Fix the default __sizeof__ implementation for variable-sized + objects. + +Library +------- + +- bpo-14260: The groupindex attribute of regular expression pattern object + now is non-modifiable mapping. + +- bpo-23792: Ignore KeyboardInterrupt when the pydoc pager is active. This + mimics the behavior of the standard unix pagers, and prevents pipepager + from shutting down while the pager itself is still running. + +- bpo-23775: pprint() of OrderedDict now outputs the same representation as + repr(). + +- bpo-23765: Removed IsBadStringPtr calls in ctypes + +- bpo-22364: Improved some re error messages using regex for hints. + +- bpo-23742: ntpath.expandvars() no longer loses unbalanced single quotes. + +- bpo-21717: The zipfile.ZipFile.open function now supports 'x' (exclusive + creation) mode. + +- bpo-21802: The reader in BufferedRWPair now is closed even when closing + writer failed in BufferedRWPair.close(). + +- bpo-23622: Unknown escapes in regular expressions that consist of ``'\'`` + and ASCII letter now raise a deprecation warning and will be forbidden in + Python 3.6. + +- bpo-23671: string.Template now allows specifying the "self" parameter as a + keyword argument. string.Formatter now allows specifying the "self" and + the "format_string" parameters as keyword arguments. + +- bpo-23502: The pprint module now supports mapping proxies. + +- bpo-17530: pprint now wraps long bytes objects and bytearrays. + +- bpo-22687: Fixed some corner cases in breaking words in tetxtwrap. Got rid + of quadratic complexity in breaking long words. + +- bpo-4727: The copy module now uses pickle protocol 4 (PEP 3154) and + supports copying of instances of classes whose __new__ method takes + keyword-only arguments. + +- bpo-23491: Added a zipapp module to support creating executable zip file + archives of Python code. Registered ".pyz" and ".pyzw" extensions on + Windows for these archives (PEP 441). + +- bpo-23657: Avoid explicit checks for str in zipapp, adding support for + pathlib.Path objects as arguments. + +- bpo-23688: Added support of arbitrary bytes-like objects and avoided + unnecessary copying of memoryview in gzip.GzipFile.write(). Original patch + by Wolfgang Maier. + +- bpo-23252: Added support for writing ZIP files to unseekable streams. + +- bpo-23647: Increase imaplib's MAXLINE to accommodate modern mailbox sizes. + +- bpo-23539: If body is None, http.client.HTTPConnection.request now sets + Content-Length to 0 for PUT, POST, and PATCH headers to avoid 411 errors + from some web servers. + +- bpo-22351: The nntplib.NNTP constructor no longer leaves the connection + and socket open until the garbage collector cleans them up. Patch by + Martin Panter. + +- bpo-23704: collections.deque() objects now support methods for index(), + insert(), and copy(). This allows deques to be registered as a + MutableSequence and it improves their substitutability for lists. + +- bpo-23715: :func:`signal.sigwaitinfo` and :func:`signal.sigtimedwait` are + now retried when interrupted by a signal not in the *sigset* parameter, if + the signal handler does not raise an exception. signal.sigtimedwait() + recomputes the timeout with a monotonic clock when it is retried. + +- bpo-23001: Few functions in modules mmap, ossaudiodev, socket, ssl, and + codecs, that accepted only read-only bytes-like object now accept writable + bytes-like object too. + +- bpo-23646: If time.sleep() is interrupted by a signal, the sleep is now + retried with the recomputed delay, except if the signal handler raises an + exception (PEP 475). + +- bpo-23136: _strptime now uniformly handles all days in week 0, including + Dec 30 of previous year. Based on patch by Jim Carroll. + +- bpo-23700: Iterator of NamedTemporaryFile now keeps a reference to + NamedTemporaryFile instance. Patch by Bohuslav Kabrda. + +- bpo-22903: The fake test case created by unittest.loader when it fails + importing a test module is now picklable. + +- bpo-22181: On Linux, os.urandom() now uses the new getrandom() syscall if + available, syscall introduced in the Linux kernel 3.17. It is more + reliable and more secure, because it avoids the need of a file descriptor + and waits until the kernel has enough entropy. + +- bpo-2211: Updated the implementation of the http.cookies.Morsel class. + Setting attributes key, value and coded_value directly now is deprecated. + update() and setdefault() now transform and check keys. Comparing for + equality now takes into account attributes key, value and coded_value. + copy() now returns a Morsel, not a dict. repr() now contains all + attributes. Optimized checking keys and quoting values. Added new tests. + Original patch by Demian Brecht. + +- bpo-18983: Allow selection of output units in timeit. Patch by Julian + Gindi. + +- bpo-23631: Fix traceback.format_list when a traceback has been mutated. + +- bpo-23568: Add rdivmod support to MagicMock() objects. Patch by Håkan + Lövdahl. + +- bpo-2052: Add charset parameter to HtmlDiff.make_file(). + +- bpo-23668: Support os.truncate and os.ftruncate on Windows. + +- bpo-23138: Fixed parsing cookies with absent keys or values in cookiejar. + Patch by Demian Brecht. + +- bpo-23051: multiprocessing.Pool methods imap() and imap_unordered() now + handle exceptions raised by an iterator. Patch by Alon Diamant and Davin + Potts. + +- bpo-23581: Add matmul support to MagicMock. Patch by Håkan Lövdahl. + +- bpo-23566: enable(), register(), dump_traceback() and + dump_traceback_later() functions of faulthandler now accept file + descriptors. Patch by Wei Wu. + +- bpo-22928: Disabled HTTP header injections in http.client. Original patch + by Demian Brecht. + +- bpo-23615: Modules bz2, tarfile and tokenize now can be reloaded with + imp.reload(). Patch by Thomas Kluyver. + +- bpo-23605: os.walk() now calls os.scandir() instead of os.listdir(). The + usage of os.scandir() reduces the number of calls to os.stat(). Initial + patch written by Ben Hoyt. + +Build +----- + +- bpo-23585: make patchcheck will ensure the interpreter is built. + +Tests +----- + +- bpo-23583: Added tests for standard IO streams in IDLE. + +- bpo-22289: Prevent test_urllib2net failures due to ftp connection timeout. + +Tools/Demos +----------- + +- bpo-22826: The result of open() in Tools/freeze/bkfile.py is now better + compatible with regular files (in particular it now supports the context + management protocol). + + +What's New in Python 3.5.0 alpha 2? +=================================== + +*Release date: 2015-03-09* + +Core and Builtins +----------------- + +- bpo-23571: PyObject_Call() and PyCFunction_Call() now raise a SystemError + if a function returns a result and raises an exception. The SystemError is + chained to the previous exception. + +Library +------- + +- bpo-22524: New os.scandir() function, part of the :pep:`471`: + "os.scandir() function -- a better and faster directory iterator". Patch + written by Ben Hoyt. + +- bpo-23103: Reduced the memory consumption of IPv4Address and IPv6Address. + +- bpo-21793: BaseHTTPRequestHandler again logs response code as numeric, not + as stringified enum. Patch by Demian Brecht. + +- bpo-23476: In the ssl module, enable OpenSSL's X509_V_FLAG_TRUSTED_FIRST + flag on certificate stores when it is available. + +- bpo-23576: Avoid stalling in SSL reads when EOF has been reached in the + SSL layer but the underlying connection hasn't been closed. + +- bpo-23504: Added an __all__ to the types module. + +- bpo-23563: Optimized utility functions in urllib.parse. + +- bpo-7830: Flatten nested functools.partial. + +- bpo-20204: Added the __module__ attribute to _tkinter classes. + +- bpo-19980: Improved help() for non-recognized strings. help('') now shows + the help on str. help('help') now shows the help on help(). Original + patch by Mark Lawrence. + +- bpo-23521: Corrected pure python implementation of timedelta division. + Eliminated OverflowError from ``timedelta * float`` for some floats; + Corrected rounding in timedelta true division. + +- bpo-21619: Popen objects no longer leave a zombie after exit in the with + statement if the pipe was broken. Patch by Martin Panter. + +- bpo-22936: Make it possible to show local variables in tracebacks for both + the traceback module and unittest. + +- bpo-15955: Add an option to limit the output size in bz2.decompress(). + Patch by Nikolaus Rath. + +- bpo-6639: Module-level turtle functions no longer raise TclError after + closing the window. + +- bpo-814253: Group references and conditional group references now work in + lookbehind assertions in regular expressions. (See also: bpo-9179) + +- bpo-23215: Multibyte codecs with custom error handlers that ignores errors + consumed too much memory and raised SystemError or MemoryError. Original + patch by Aleksi Torhamo. + +- bpo-5700: io.FileIO() called flush() after closing the file. flush() was + not called in close() if closefd=False. + +- bpo-23374: Fixed pydoc failure with non-ASCII files when stdout encoding + differs from file system encoding (e.g. on Mac OS). + +- bpo-23481: Remove RC4 from the SSL module's default cipher list. + +- bpo-21548: Fix pydoc.synopsis() and pydoc.apropos() on modules with empty + docstrings. + +- bpo-22885: Fixed arbitrary code execution vulnerability in the dbm.dumb + module. Original patch by Claudiu Popa. + +- bpo-23239: ssl.match_hostname() now supports matching of IP addresses. + +- bpo-23146: Fix mishandling of absolute Windows paths with forward slashes + in pathlib. + +- bpo-23096: Pickle representation of floats with protocol 0 now is the same + for both Python and C implementations. + +- bpo-19105: pprint now more efficiently uses free space at the right. + +- bpo-14910: Add allow_abbrev parameter to argparse.ArgumentParser. Patch by + Jonathan Paugh, Steven Bethard, paul j3 and Daniel Eriksson. + +- bpo-21717: tarfile.open() now supports 'x' (exclusive creation) mode. + +- bpo-23344: marshal.dumps() is now 20-25% faster on average. + +- bpo-20416: marshal.dumps() with protocols 3 and 4 is now 40-50% faster on + average. + +- bpo-23421: Fixed compression in tarfile CLI. Patch by wdv4758h. + +- bpo-23367: Fix possible overflows in the unicodedata module. + +- bpo-23361: Fix possible overflow in Windows subprocess creation code. + +- logging.handlers.QueueListener now takes a respect_handler_level keyword + argument which, if set to True, will pass messages to handlers taking + handler levels into account. + +- bpo-19705: turtledemo now has a visual sorting algorithm demo. Original + patch from Jason Yeo. + +- bpo-23801: Fix issue where cgi.FieldStorage did not always ignore the + entire preamble to a multipart body. + +Build +----- + +- bpo-23445: pydebug builds now use "gcc -Og" where possible, to make the + resulting executable faster. + +- bpo-23686: Update OS X 10.5 installer build to use OpenSSL 1.0.2a. + +C API +----- + +- bpo-20204: Deprecation warning is now raised for builtin types without the + __module__ attribute. + +Windows +------- + +- bpo-23465: Implement :pep:`486` - Make the Python Launcher aware of + virtual environments. Patch by Paul Moore. + +- bpo-23437: Make user scripts directory versioned on Windows. Patch by Paul + Moore. + + +What's New in Python 3.5.0 alpha 1? +=================================== + +*Release date: 2015-02-08* + +Core and Builtins +----------------- + +- bpo-23285: PEP 475 - EINTR handling. + +- bpo-22735: Fix many edge cases (including crashes) involving custom mro() + implementations. + +- bpo-22896: Avoid using PyObject_AsCharBuffer(), PyObject_AsReadBuffer() + and PyObject_AsWriteBuffer(). + +- bpo-21295: Revert some changes (issue #16795) to AST line numbers and + column offsets that constituted a regression. + +- bpo-22986: Allow changing an object's __class__ between a dynamic type and + static type in some cases. + +- bpo-15859: PyUnicode_EncodeFSDefault(), PyUnicode_EncodeMBCS() and + PyUnicode_EncodeCodePage() now raise an exception if the object is not a + Unicode object. For PyUnicode_EncodeFSDefault(), it was already the case + on platforms other than Windows. Patch written by Campbell Barton. + +- bpo-21408: The default __ne__() now returns NotImplemented if __eq__() + returned NotImplemented. Original patch by Martin Panter. + +- bpo-23321: Fixed a crash in str.decode() when error handler returned + replacement string longer than malformed input data. + +- bpo-22286: The "backslashreplace" error handlers now works with decoding + and translating. + +- bpo-23253: Delay-load ShellExecute[AW] in os.startfile for reduced startup + overhead on Windows. + +- bpo-22038: pyatomic.h now uses stdatomic.h or GCC built-in functions for + atomic memory access if available. Patch written by Vitor de Lima and + Gustavo Temple. + +- bpo-20284: %-interpolation (aka printf) formatting added for bytes and + bytearray. + +- bpo-23048: Fix jumping out of an infinite while loop in the pdb. + +- bpo-20335: bytes constructor now raises TypeError when encoding or errors + is specified with non-string argument. Based on patch by Renaud Blanch. + +- bpo-22834: If the current working directory ends up being set to a + non-existent directory then import will no longer raise FileNotFoundError. + +- bpo-22869: Move the interpreter startup & shutdown code to a new dedicated + pylifecycle.c module + +- bpo-22847: Improve method cache efficiency. + +- bpo-22335: Fix crash when trying to enlarge a bytearray to 0x7fffffff + bytes on a 32-bit platform. + +- bpo-22653: Fix an assertion failure in debug mode when doing a reentrant + dict insertion in debug mode. + +- bpo-22643: Fix integer overflow in Unicode case operations (upper, lower, + title, swapcase, casefold). + +- bpo-17636: Circular imports involving relative imports are now supported. + +- bpo-22604: Fix assertion error in debug mode when dividing a complex + number by (nan+0j). + +- bpo-21052: Do not raise ImportWarning when sys.path_hooks or sys.meta_path + are set to None. + +- bpo-16518: Use 'bytes-like object required' in error messages that + previously used the far more cryptic "'x' does not support the buffer + protocol. + +- bpo-22470: Fixed integer overflow issues in "backslashreplace", + "xmlcharrefreplace", and "surrogatepass" error handlers. + +- bpo-22540: speed up `PyObject_IsInstance` and `PyObject_IsSubclass` in the + common case that the second argument has metaclass `type`. + +- bpo-18711: Add a new `PyErr_FormatV` function, similar to `PyErr_Format` + but accepting a `va_list` argument. + +- bpo-22520: Fix overflow checking when generating the repr of a unicode + object. + +- bpo-22519: Fix overflow checking in PyBytes_Repr. + +- bpo-22518: Fix integer overflow issues in latin-1 encoding. + +- bpo-16324: _charset parameter of MIMEText now also accepts + email.charset.Charset instances. Initial patch by Claude Paroz. + +- bpo-1764286: Fix inspect.getsource() to support decorated functions. Patch + by Claudiu Popa. + +- bpo-18554: os.__all__ includes posix functions. + +- bpo-21391: Use os.path.abspath in the shutil module. + +- bpo-11471: avoid generating a JUMP_FORWARD instruction at the end of an + if-block if there is no else-clause. Original patch by Eugene Toder. + +- bpo-22215: Now ValueError is raised instead of TypeError when str or bytes + argument contains not permitted null character or byte. + +- bpo-22258: Fix the internal function set_inheritable() on Illumos. This + platform exposes the function ``ioctl(FIOCLEX)``, but calling it fails + with errno is ENOTTY: "Inappropriate ioctl for device". set_inheritable() + now falls back to the slower ``fcntl()`` (``F_GETFD`` and then + ``F_SETFD``). + +- bpo-21389: Displaying the __qualname__ of the underlying function in the + repr of a bound method. + +- bpo-22206: Using pthread, PyThread_create_key() now sets errno to ENOMEM + and returns -1 (error) on integer overflow. + +- bpo-20184: Argument Clinic based signature introspection added for 30 of + the builtin functions. + +- bpo-22116: C functions and methods (of the 'builtin_function_or_method' + type) can now be weakref'ed. Patch by Wei Wu. + +- bpo-22077: Improve index error messages for bytearrays, bytes, lists, and + tuples by adding 'or slices'. Added ', not <typename>' for bytearrays. + Original patch by Claudiu Popa. + +- bpo-20179: Apply Argument Clinic to bytes and bytearray. Patch by Tal + Einat. + +- bpo-22082: Clear interned strings in slotdefs. + +- Upgrade Unicode database to Unicode 7.0.0. + +- bpo-21897: Fix a crash with the f_locals attribute with closure variables + when frame.clear() has been called. + +- bpo-21205: Add a new ``__qualname__`` attribute to generator, the + qualified name, and use it in the representation of a generator + (``repr(gen)``). The default name of the generator (``__name__`` + attribute) is now get from the function instead of the code. Use + ``gen.gi_code.co_name`` to get the name of the code. + +- bpo-21669: With the aid of heuristics in SyntaxError.__init__, the parser + now attempts to generate more meaningful (or at least more search engine + friendly) error messages when "exec" and "print" are used as statements. + +- bpo-21642: In the conditional if-else expression, allow an integer written + with no space between itself and the ``else`` keyword (e.g. ``True if + 42else False``) to be valid syntax. + +- bpo-21523: Fix over-pessimistic computation of the stack effect of some + opcodes in the compiler. This also fixes a quadratic compilation time + issue noticeable when compiling code with a large number of "and" and "or" + operators. + +- bpo-21418: Fix a crash in the builtin function super() when called without + argument and without current frame (ex: embedded Python). + +- bpo-21425: Fix flushing of standard streams in the interactive + interpreter. + +- bpo-21435: In rare cases, when running finalizers on objects in cyclic + trash a bad pointer dereference could occur due to a subtle flaw in + internal iteration logic. + +- bpo-21377: PyBytes_Concat() now tries to concatenate in-place when the + first argument has a reference count of 1. Patch by Nikolaus Rath. + +- bpo-20355: -W command line options now have higher priority than the + PYTHONWARNINGS environment variable. Patch by Arfrever. + +- bpo-21274: Define PATH_MAX for GNU/Hurd in Python/pythonrun.c. + +- bpo-20904: Support setting FPU precision on m68k. + +- bpo-21209: Fix sending tuples to custom generator objects with the yield + from syntax. + +- bpo-21193: pow(a, b, c) now raises ValueError rather than TypeError when b + is negative. Patch by Josh Rosenberg. + +- bpo-21176: PEP 465: Add the '@' operator for matrix multiplication. + +- bpo-21134: Fix segfault when str is called on an uninitialized + UnicodeEncodeError, UnicodeDecodeError, or UnicodeTranslateError object. + +- bpo-19537: Fix PyUnicode_DATA() alignment under m68k. Patch by Andreas + Schwab. + +- bpo-20929: Add a type cast to avoid shifting a negative number. + +- bpo-20731: Properly position in source code files even if they are opened + in text mode. Patch by Serhiy Storchaka. + +- bpo-20637: Key-sharing now also works for instance dictionaries of + subclasses. Patch by Peter Ingebretson. + +- bpo-8297: Attributes missing from modules now include the module name in + the error text. Original patch by ysj.ray. + +- bpo-19995: %c, %o, %x, and %X now raise TypeError on non-integer input. + +- bpo-19655: The ASDL parser - used by the build process to generate code + for managing the Python AST in C - was rewritten. The new parser is self + contained and does not require to carry long the spark.py parser-generator + library; spark.py was removed from the source base. + +- bpo-12546: Allow ``\x00`` to be used as a fill character when using str, + int, float, and complex __format__ methods. + +- bpo-20480: Add ipaddress.reverse_pointer. Patch by Leon Weber. + +- bpo-13598: Modify string.Formatter to support auto-numbering of + replacement fields. It now matches the behavior of str.format() in this + regard. Patches by Phil Elson and Ramchandra Apte. + +- bpo-8931: Make alternate formatting ('#') for type 'c' raise an exception. + In versions prior to 3.5, '#' with 'c' had no effect. Now specifying it is + an error. Patch by Torsten Landschoff. + +- bpo-23165: Perform overflow checks before allocating memory in the + _Py_char2wchar function. + +Library +------- + +- bpo-23399: pyvenv creates relative symlinks where possible. + +- bpo-20289: cgi.FieldStorage() now supports the context management + protocol. + +- bpo-13128: Print response headers for CONNECT requests when debuglevel > + 0. Patch by Demian Brecht. + +- bpo-15381: Optimized io.BytesIO to make less allocations and copyings. + +- bpo-22818: Splitting on a pattern that could match an empty string now + raises a warning. Patterns that can only match empty strings are now + rejected. + +- bpo-23099: Closing io.BytesIO with exported buffer is rejected now to + prevent corrupting exported buffer. + +- bpo-23326: Removed __ne__ implementations. Since fixing default __ne__ + implementation in issue #21408 they are redundant. + +- bpo-23363: Fix possible overflow in itertools.permutations. + +- bpo-23364: Fix possible overflow in itertools.product. + +- bpo-23366: Fixed possible integer overflow in itertools.combinations. + +- bpo-23369: Fixed possible integer overflow in + _json.encode_basestring_ascii. + +- bpo-23353: Fix the exception handling of generators in + PyEval_EvalFrameEx(). At entry, save or swap the exception state even if + PyEval_EvalFrameEx() is called with throwflag=0. At exit, the exception + state is now always restored or swapped, not only if why is WHY_YIELD or + WHY_RETURN. Patch co-written with Antoine Pitrou. + +- bpo-14099: Restored support of writing ZIP files to tellable but + non-seekable streams. + +- bpo-14099: Writing to ZipFile and reading multiple ZipExtFiles is + threadsafe now. + +- bpo-19361: JSON decoder now raises JSONDecodeError instead of ValueError. + +- bpo-18518: timeit now rejects statements which can't be compiled outside a + function or a loop (e.g. "return" or "break"). + +- bpo-23094: Fixed readline with frames in Python implementation of pickle. + +- bpo-23268: Fixed bugs in the comparison of ipaddress classes. + +- bpo-21408: Removed incorrect implementations of __ne__() which didn't + returned NotImplemented if __eq__() returned NotImplemented. The default + __ne__() now works correctly. + +- bpo-19996: :class:`email.feedparser.FeedParser` now handles (malformed) + headers with no key rather than assuming the body has started. + +- bpo-20188: Support Application-Layer Protocol Negotiation (ALPN) in the + ssl module. + +- bpo-23133: Pickling of ipaddress objects now produces more compact and + portable representation. + +- bpo-23248: Update ssl error codes from latest OpenSSL git master. + +- bpo-23266: Much faster implementation of ipaddress.collapse_addresses() + when there are many non-consecutive addresses. + +- bpo-23098: 64-bit dev_t is now supported in the os module. + +- bpo-21817: When an exception is raised in a task submitted to a + ProcessPoolExecutor, the remote traceback is now displayed in the parent + process. Patch by Claudiu Popa. + +- bpo-15955: Add an option to limit output size when decompressing LZMA + data. Patch by Nikolaus Rath and Martin Panter. + +- bpo-23250: In the http.cookies module, capitalize "HttpOnly" and "Secure" + as they are written in the standard. + +- bpo-23063: In the distutils' check command, fix parsing of reST with code + or code-block directives. + +- bpo-23209: selectors.BaseSelector.get_key() now raises a RuntimeError if + the selector is closed. And selectors.BaseSelector.close() now clears its + internal reference to the selector mapping to break a reference cycle. + Initial patch written by Martin Richard. (See also: bpo-23225) + +- bpo-17911: Provide a way to seed the linecache for a PEP-302 module + without actually loading the code. + +- bpo-17911: Provide a new object API for traceback, including the ability + to not lookup lines at all until the traceback is actually rendered, + without any trace of the original objects being kept alive. + +- bpo-19777: Provide a home() classmethod on Path objects. Contributed by + Victor Salgado and Mayank Tripathi. + +- bpo-23206: Make ``json.dumps(..., ensure_ascii=False)`` as fast as the + default case of ``ensure_ascii=True``. Patch by Naoki Inada. + +- bpo-23185: Add math.inf and math.nan constants. + +- bpo-23186: Add ssl.SSLObject.shared_ciphers() and + ssl.SSLSocket.shared_ciphers() to fetch the client's list ciphers sent at + handshake. + +- bpo-23143: Remove compatibility with OpenSSLs older than 0.9.8. + +- bpo-23132: Improve performance and introspection support of comparison + methods created by functool.total_ordering. + +- bpo-19776: Add an expanduser() method on Path objects. + +- bpo-23112: Fix SimpleHTTPServer to correctly carry the query string and + fragment when it redirects to add a trailing slash. + +- bpo-21793: Added http.HTTPStatus enums (i.e. HTTPStatus.OK, + HTTPStatus.NOT_FOUND). Patch by Demian Brecht. + +- bpo-23093: In the io, module allow more operations to work on detached + streams. + +- bpo-23111: In the ftplib, make ssl.PROTOCOL_SSLv23 the default protocol + version. + +- bpo-22585: On OpenBSD 5.6 and newer, os.urandom() now calls getentropy(), + instead of reading /dev/urandom, to get pseudo-random bytes. + +- bpo-19104: pprint now produces evaluable output for wrapped strings. + +- bpo-23071: Added missing names to codecs.__all__. Patch by Martin Panter. + +- bpo-22783: Pickling now uses the NEWOBJ opcode instead of the NEWOBJ_EX + opcode if possible. + +- bpo-15513: Added a __sizeof__ implementation for pickle classes. + +- bpo-19858: pickletools.optimize() now aware of the MEMOIZE opcode, can + produce more compact result and no longer produces invalid output if input + data contains MEMOIZE opcodes together with PUT or BINPUT opcodes. + +- bpo-22095: Fixed HTTPConnection.set_tunnel with default port. The port + value in the host header was set to "None". Patch by Demian Brecht. + +- bpo-23016: A warning no longer produces an AttributeError when the program + is run with pythonw.exe. + +- bpo-21775: shutil.copytree(): fix crash when copying to VFAT. An exception + handler assumed that OSError objects always have a 'winerror' attribute. + That is not the case, so the exception handler itself raised + AttributeError when run on Linux (and, presumably, any other non-Windows + OS). Patch by Greg Ward. + +- bpo-1218234: Fix inspect.getsource() to load updated source of reloaded + module. Initial patch by Berker Peksag. + +- bpo-21740: Support wrapped callables in doctest. Patch by Claudiu Popa. + +- bpo-23009: Make sure selectors.EpollSelector.select() works when no FD is + registered. + +- bpo-22959: In the constructor of http.client.HTTPSConnection, prefer the + context's check_hostname attribute over the *check_hostname* parameter. + +- bpo-22696: Add function :func:`sys.is_finalizing` to know about + interpreter shutdown. + +- bpo-16043: Add a default limit for the amount of data + xmlrpclib.gzip_decode will return. This resolves CVE-2013-1753. + +- bpo-14099: ZipFile.open() no longer reopen the underlying file. Objects + returned by ZipFile.open() can now operate independently of the ZipFile + even if the ZipFile was created by passing in a file-like object as the + first argument to the constructor. + +- bpo-22966: Fix __pycache__ pyc file name clobber when pyc_compile is asked + to compile a source file containing multiple dots in the source file name. + +- bpo-21971: Update turtledemo doc and add module to the index. + +- bpo-21032: Fixed socket leak if HTTPConnection.getresponse() fails. + Original patch by Martin Panter. + +- bpo-22407: Deprecated the use of re.LOCALE flag with str patterns or + re.ASCII. It was newer worked. + +- bpo-22902: The "ip" command is now used on Linux to determine MAC address + in uuid.getnode(). Pach by Bruno Cauet. + +- bpo-22960: Add a context argument to xmlrpclib.ServerProxy constructor. + +- bpo-22389: Add contextlib.redirect_stderr(). + +- bpo-21356: Make ssl.RAND_egd() optional to support LibreSSL. The + availability of the function is checked during the compilation. Patch + written by Bernard Spil. + +- bpo-22915: SAX parser now supports files opened with file descriptor or + bytes path. + +- bpo-22609: Constructors and update methods of mapping classes in the + collections module now accept the self keyword argument. + +- bpo-22940: Add readline.append_history_file. + +- bpo-19676: Added the "namereplace" error handler. + +- bpo-22788: Add *context* parameter to logging.handlers.HTTPHandler. + +- bpo-22921: Allow SSLContext to take the *hostname* parameter even if + OpenSSL doesn't support SNI. + +- bpo-22894: TestCase.subTest() would cause the test suite to be stopped + when in failfast mode, even in the absence of failures. + +- bpo-22796: HTTP cookie parsing is now stricter, in order to protect + against potential injection attacks. + +- bpo-22370: Windows detection in pathlib is now more robust. + +- bpo-22841: Reject coroutines in asyncio add_signal_handler(). Patch by + Ludovic.Gasc. + +- bpo-19494: Added urllib.request.HTTPBasicPriorAuthHandler. Patch by Matej + Cepl. + +- bpo-22578: Added attributes to the re.error class. + +- bpo-22849: Fix possible double free in the io.TextIOWrapper constructor. + +- bpo-12728: Different Unicode characters having the same uppercase but + different lowercase are now matched in case-insensitive regular + expressions. + +- bpo-22821: Fixed fcntl() with integer argument on 64-bit big-endian + platforms. + +- bpo-21650: Add an `--sort-keys` option to json.tool CLI. + +- bpo-22824: Updated reprlib output format for sets to use set literals. + Patch contributed by Berker Peksag. + +- bpo-22824: Updated reprlib output format for arrays to display empty + arrays without an unnecessary empty list. Suggested by Serhiy Storchaka. + +- bpo-22406: Fixed the uu_codec codec incorrectly ported to 3.x. Based on + patch by Martin Panter. + +- bpo-17293: uuid.getnode() now determines MAC address on AIX using netstat. + Based on patch by Aivars Kalvāns. + +- bpo-22769: Fixed ttk.Treeview.tag_has() when called without arguments. + +- bpo-22417: Verify certificates by default in httplib (PEP 476). + +- bpo-22775: Fixed unpickling of http.cookies.SimpleCookie with protocol 2 + and above. Patch by Tim Graham. + +- bpo-22776: Brought excluded code into the scope of a try block in + SysLogHandler.emit(). + +- bpo-22665: Add missing get_terminal_size and SameFileError to + shutil.__all__. + +- bpo-6623: Remove deprecated Netrc class in the ftplib module. Patch by + Matt Chaput. + +- bpo-17381: Fixed handling of case-insensitive ranges in regular + expressions. + +- bpo-22410: Module level functions in the re module now cache compiled + locale-dependent regular expressions taking into account the locale. + +- bpo-22759: Query methods on pathlib.Path() (exists(), is_dir(), etc.) now + return False when the underlying stat call raises NotADirectoryError. + +- bpo-8876: distutils now falls back to copying files when hard linking + doesn't work. This allows use with special filesystems such as VirtualBox + shared folders. + +- bpo-22217: Implemented reprs of classes in the zipfile module. + +- bpo-22457: Honour load_tests in the start_dir of discovery. + +- bpo-18216: gettext now raises an error when a .mo file has an unsupported + major version number. Patch by Aaron Hill. + +- bpo-13918: Provide a locale.delocalize() function which can remove + locale-specific number formatting from a string representing a number, + without then converting it to a specific type. Patch by Cédric Krier. + +- bpo-22676: Make the pickling of global objects which don't have a + __module__ attribute less slow. + +- bpo-18853: Fixed ResourceWarning in shlex.__nain__. + +- bpo-9351: Defaults set with set_defaults on an argparse subparser are no + longer ignored when also set on the parent parser. + +- bpo-7559: unittest test loading ImportErrors are reported as import errors + with their import exception rather than as attribute errors after the + import has already failed. + +- bpo-19746: Make it possible to examine the errors from unittest discovery + without executing the test suite. The new `errors` attribute on TestLoader + exposes these non-fatal errors encountered during discovery. + +- bpo-21991: Make email.headerregistry's header 'params' attributes be + read-only (MappingProxyType). Previously the dictionary was modifiable + but a new one was created on each access of the attribute. + +- bpo-22638: SSLv3 is now disabled throughout the standard library. It can + still be enabled by instantiating a SSLContext manually. + +- bpo-22641: In asyncio, the default SSL context for client connections is + now created using ssl.create_default_context(), for stronger security. + +- bpo-17401: Include closefd in io.FileIO repr. + +- bpo-21338: Add silent mode for compileall. quiet parameters of + compile_{dir, file, path} functions now have a multilevel value. Also, -q + option of the CLI now have a multilevel value. Patch by Thomas Kluyver. + +- bpo-20152: Convert the array and cmath modules to Argument Clinic. + +- bpo-18643: Add socket.socketpair() on Windows. + +- bpo-22435: Fix a file descriptor leak when socketserver bind fails. + +- bpo-13096: Fixed segfault in CTypes POINTER handling of large values. + +- bpo-11694: Raise ConversionError in xdrlib as documented. Patch by Filip + Gruszczyński and Claudiu Popa. + +- bpo-19380: Optimized parsing of regular expressions. + +- bpo-1519638: Now unmatched groups are replaced with empty strings in + re.sub() and re.subn(). + +- bpo-18615: sndhdr.what/whathdr now return a namedtuple. + +- bpo-22462: Fix pyexpat's creation of a dummy frame to make it appear in + exception tracebacks. + +- bpo-21965: Add support for in-memory SSL to the ssl module. Patch by + Geert Jansen. + +- bpo-21173: Fix len() on a WeakKeyDictionary when .clear() was called with + an iterator alive. + +- bpo-11866: Eliminated race condition in the computation of names for new + threads. + +- bpo-21905: Avoid RuntimeError in pickle.whichmodule() when sys.modules is + mutated while iterating. Patch by Olivier Grisel. + +- bpo-11271: concurrent.futures.Executor.map() now takes a *chunksize* + argument to allow batching of tasks in child processes and improve + performance of ProcessPoolExecutor. Patch by Dan O'Reilly. + +- bpo-21883: os.path.join() and os.path.relpath() now raise a TypeError with + more helpful error message for unsupported or mismatched types of + arguments. + +- bpo-22219: The zipfile module CLI now adds entries for directories + (including empty directories) in ZIP file. + +- bpo-22449: In the ssl.SSLContext.load_default_certs, consult the + environmental variables SSL_CERT_DIR and SSL_CERT_FILE on Windows. + +- bpo-22508: The email.__version__ variable has been removed; the email code + is no longer shipped separately from the stdlib, and __version__ hasn't + been updated in several releases. + +- bpo-20076: Added non derived UTF-8 aliases to locale aliases table. + +- bpo-20079: Added locales supported in glibc 2.18 to locale alias table. + +- bpo-20218: Added convenience methods read_text/write_text and read_bytes/ + write_bytes to pathlib.Path objects. + +- bpo-22396: On 32-bit AIX platform, don't expose os.posix_fadvise() nor + os.posix_fallocate() because their prototypes in system headers are wrong. + +- bpo-22517: When an io.BufferedRWPair object is deallocated, clear its + weakrefs. + +- bpo-22437: Number of capturing groups in regular expression is no longer + limited by 100. + +- bpo-17442: InteractiveInterpreter now displays the full chained traceback + in its showtraceback method, to match the built in interactive + interpreter. + +- bpo-23392: Added tests for marshal C API that works with FILE*. + +- bpo-10510: distutils register and upload methods now use HTML standards + compliant CRLF line endings. + +- bpo-9850: Fixed macpath.join() for empty first component. Patch by Oleg + Oshmyan. + +- bpo-5309: distutils' build and build_ext commands now accept a ``-j`` + option to enable parallel building of extension modules. + +- bpo-22448: Improve canceled timer handles cleanup to prevent unbound + memory usage. Patch by Joshua Moore-Oliva. + +- bpo-22427: TemporaryDirectory no longer attempts to clean up twice when + used in the with statement in generator. + +- bpo-22362: Forbidden ambiguous octal escapes out of range 0-0o377 in + regular expressions. + +- bpo-20912: Now directories added to ZIP file have correct Unix and MS-DOS + directory attributes. + +- bpo-21866: ZipFile.close() no longer writes ZIP64 central directory + records if allowZip64 is false. + +- bpo-22278: Fix urljoin problem with relative urls, a regression observed + after changes to issue22118 were submitted. + +- bpo-22415: Fixed debugging output of the GROUPREF_EXISTS opcode in the re + module. Removed trailing spaces in debugging output. + +- bpo-22423: Unhandled exception in thread no longer causes unhandled + AttributeError when sys.stderr is None. + +- bpo-21332: Ensure that ``bufsize=1`` in subprocess.Popen() selects line + buffering, rather than block buffering. Patch by Akira Li. + +- bpo-21091: Fix API bug: email.message.EmailMessage.is_attachment is now a + method. + +- bpo-21079: Fix email.message.EmailMessage.is_attachment to return the + correct result when the header has parameters as well as a value. + +- bpo-22247: Add NNTPError to nntplib.__all__. + +- bpo-22366: urllib.request.urlopen will accept a context object + (SSLContext) as an argument which will then be used for HTTPS connection. + Patch by Alex Gaynor. + +- bpo-4180: The warnings registries are now reset when the filters are + modified. + +- bpo-22419: Limit the length of incoming HTTP request in wsgiref server to + 65536 bytes and send a 414 error code for higher lengths. Patch + contributed by Devin Cook. + +- Lax cookie parsing in http.cookies could be a security issue when combined + with non-standard cookie handling in some Web browsers. Reported by + Sergey Bobrov. + +- bpo-20537: logging methods now accept an exception instance as well as a + Boolean value or exception tuple. Thanks to Yury Selivanov for the patch. + +- bpo-22384: An exception in Tkinter callback no longer crashes the program + when it is run with pythonw.exe. + +- bpo-22168: Prevent turtle AttributeError with non-default Canvas on OS X. + +- bpo-21147: sqlite3 now raises an exception if the request contains a null + character instead of truncating it. Based on patch by Victor Stinner. + +- bpo-13968: The glob module now supports recursive search in subdirectories + using the ``**`` pattern. + +- bpo-21951: Fixed a crash in Tkinter on AIX when called Tcl command with + empty string or tuple argument. + +- bpo-21951: Tkinter now most likely raises MemoryError instead of crash if + the memory allocation fails. + +- bpo-22338: Fix a crash in the json module on memory allocation failure. + +- bpo-12410: imaplib.IMAP4 now supports the context management protocol. + Original patch by Tarek Ziadé. + +- bpo-21270: We now override tuple methods in mock.call objects so that they + can be used as normal call attributes. + +- bpo-16662: load_tests() is now unconditionally run when it is present in a + package's __init__.py. TestLoader.loadTestsFromModule() still accepts + use_load_tests, but it is deprecated and ignored. A new keyword-only + attribute `pattern` is added and documented. Patch given by Robert + Collins, tweaked by Barry Warsaw. + +- bpo-22226: First letter no longer is stripped from the "status" key in the + result of Treeview.heading(). + +- bpo-19524: Fixed resource leak in the HTTP connection when an invalid + response is received. Patch by Martin Panter. + +- bpo-20421: Add a .version() method to SSL sockets exposing the actual + protocol version in use. + +- bpo-19546: configparser exceptions no longer expose implementation + details. Chained KeyErrors are removed, which leads to cleaner tracebacks. + Patch by Claudiu Popa. + +- bpo-22051: turtledemo no longer reloads examples to re-run them. + Initialization of variables and gui setup should be done in main(), which + is called each time a demo is run, but not on import. + +- bpo-21933: Turtledemo users can change the code font size with a menu + selection or control(command) '-' or '+' or control-mousewheel. Original + patch by Lita Cho. + +- bpo-21597: The separator between the turtledemo text pane and the drawing + canvas can now be grabbed and dragged with a mouse. The code text pane + can be widened to easily view or copy the full width of the text. The + canvas can be widened on small screens. Original patches by Jan Kanis and + Lita Cho. + +- bpo-18132: Turtledemo buttons no longer disappear when the window is + shrunk. Original patches by Jan Kanis and Lita Cho. + +- bpo-22043: time.monotonic() is now always available. + ``threading.Lock.acquire()``, ``threading.RLock.acquire()`` and socket + operations now use a monotonic clock, instead of the system clock, when a + timeout is used. + +- bpo-21527: Add a default number of workers to ThreadPoolExecutor equal to + 5 times the number of CPUs. Patch by Claudiu Popa. + +- bpo-22216: smtplib now resets its state more completely after a quit. The + most obvious consequence of the previous behavior was a STARTTLS failure + during a connect/starttls/quit/connect/starttls sequence. + +- bpo-22098: ctypes' BigEndianStructure and LittleEndianStructure now define + an empty __slots__ so that subclasses don't always get an instance dict. + Patch by Claudiu Popa. + +- bpo-22185: Fix an occasional RuntimeError in threading.Condition.wait() + caused by mutation of the waiters queue without holding the lock. Patch + by Doug Zongker. + +- bpo-22287: On UNIX, _PyTime_gettimeofday() now uses + clock_gettime(CLOCK_REALTIME) if available. As a side effect, Python now + depends on the librt library on Solaris and on Linux (only with glibc + older than 2.17). + +- bpo-22182: Use e.args to unpack exceptions correctly in + distutils.file_util.move_file. Patch by Claudiu Popa. + +- The webbrowser module now uses subprocess's start_new_session=True rather + than a potentially risky preexec_fn=os.setsid call. + +- bpo-22042: signal.set_wakeup_fd(fd) now raises an exception if the file + descriptor is in blocking mode. + +- bpo-16808: inspect.stack() now returns a named tuple instead of a tuple. + Patch by Daniel Shahaf. + +- bpo-22236: Fixed Tkinter images copying operations in NoDefaultRoot mode. + +- bpo-2527: Add a *globals* argument to timeit functions, in order to + override the globals namespace in which the timed code is executed. Patch + by Ben Roberts. + +- bpo-22118: Switch urllib.parse to use RFC 3986 semantics for the + resolution of relative URLs, rather than RFCs 1808 and 2396. Patch by + Demian Brecht. + +- bpo-21549: Added the "members" parameter to TarFile.list(). + +- bpo-19628: Allow compileall recursion depth to be specified with a -r + option. + +- bpo-15696: Add a __sizeof__ implementation for mmap objects on Windows. + +- bpo-22068: Avoided reference loops with Variables and Fonts in Tkinter. + +- bpo-22165: SimpleHTTPRequestHandler now supports undecodable file names. + +- bpo-15381: Optimized line reading in io.BytesIO. + +- bpo-8797: Raise HTTPError on failed Basic Authentication immediately. + Initial patch by Sam Bull. + +- bpo-20729: Restored the use of lazy iterkeys()/itervalues()/iteritems() in + the mailbox module. + +- bpo-21448: Changed FeedParser feed() to avoid O(N**2) behavior when + parsing long line. Original patch by Raymond Hettinger. + +- bpo-22184: The functools LRU Cache decorator factory now gives an earlier + and clearer error message when the user forgets the required parameters. + +- bpo-17923: glob() patterns ending with a slash no longer match non-dirs on + AIX. Based on patch by Delhallt. + +- bpo-21725: Added support for RFC 6531 (SMTPUTF8) in smtpd. + +- bpo-22176: Update the ctypes module's libffi to v3.1. This release adds + support for the Linux AArch64 and POWERPC ELF ABIv2 little endian + architectures. + +- bpo-5411: Added support for the "xztar" format in the shutil module. + +- bpo-21121: Don't force 3rd party C extensions to be built with + -Werror=declaration-after-statement. + +- bpo-21975: Fixed crash when using uninitialized sqlite3.Row (in particular + when unpickling pickled sqlite3.Row). sqlite3.Row is now initialized in + the __new__() method. + +- bpo-20170: Convert posixmodule to use Argument Clinic. + +- bpo-21539: Add an *exists_ok* argument to `Pathlib.mkdir()` to mimic + `mkdir -p` and `os.makedirs()` functionality. When true, ignore + FileExistsErrors. Patch by Berker Peksag. + +- bpo-22127: Bypass IDNA for pure-ASCII host names in the socket module (in + particular for numeric IPs). + +- bpo-21047: set the default value for the *convert_charrefs* argument of + HTMLParser to True. Patch by Berker Peksag. + +- Add an __all__ to html.entities. + +- bpo-15114: the strict mode and argument of HTMLParser, HTMLParser.error, + and the HTMLParserError exception have been removed. + +- bpo-22085: Dropped support of Tk 8.3 in Tkinter. + +- bpo-21580: Now Tkinter correctly handles bytes arguments passed to Tk. In + particular this allows initializing images from binary data. + +- bpo-22003: When initialized from a bytes object, io.BytesIO() now defers + making a copy until it is mutated, improving performance and memory use on + some use cases. Patch by David Wilson. + +- bpo-22018: On Windows, signal.set_wakeup_fd() now also supports sockets. A + side effect is that Python depends to the WinSock library. + +- bpo-22054: Add os.get_blocking() and os.set_blocking() functions to get + and set the blocking mode of a file descriptor (False if the O_NONBLOCK + flag is set, True otherwise). These functions are not available on + Windows. + +- bpo-17172: Make turtledemo start as active on OS X even when run with + subprocess. Patch by Lita Cho. + +- bpo-21704: Fix build error for _multiprocessing when semaphores are not + available. Patch by Arfrever Frehtes Taifersar Arahesis. + +- bpo-20173: Convert sha1, sha256, sha512 and md5 to ArgumentClinic. Patch + by Vajrasky Kok. + +- Fix repr(_socket.socket) on Windows 64-bit: don't fail with OverflowError + on closed socket. repr(socket.socket) already works fine. + +- bpo-22033: Reprs of most Python implemented classes now contain actual + class name instead of hardcoded one. + +- bpo-21947: The dis module can now disassemble generator-iterator objects + based on their gi_code attribute. Patch by Clement Rouault. + +- bpo-16133: The asynchat.async_chat.handle_read() method now ignores + BlockingIOError exceptions. + +- bpo-22044: Fixed premature DECREF in call_tzinfo_method. Patch by Tom + Flanagan. + +- bpo-19884: readline: Disable the meta modifier key if stdout is not a + terminal to not write the ANSI sequence ``"\033[1034h"`` into stdout. This + sequence is used on some terminal (ex: TERM=xterm-256color") to enable + support of 8 bit characters. + +- bpo-4350: Removed a number of out-of-dated and non-working for a long time + Tkinter methods. + +- bpo-6167: Scrollbar.activate() now returns the name of active element if + the argument is not specified. Scrollbar.set() now always accepts only 2 + arguments. + +- bpo-15275: Clean up and speed up the ntpath module. + +- bpo-21888: plistlib's load() and loads() now work if the fmt parameter is + specified. + +- bpo-22032: __qualname__ instead of __name__ is now always used to format + fully qualified class names of Python implemented classes. + +- bpo-22031: Reprs now always use hexadecimal format with the "0x" prefix + when contain an id in form " at 0x...". + +- bpo-22018: signal.set_wakeup_fd() now raises an OSError instead of a + ValueError on ``fstat()`` failure. + +- bpo-21044: tarfile.open() now handles fileobj with an integer 'name' + attribute. Based on patch by Antoine Pietri. + +- bpo-21966: Respect -q command-line option when code module is ran. + +- bpo-19076: Don't pass the redundant 'file' argument to self.error(). + +- bpo-16382: Improve exception message of warnings.warn() for bad category. + Initial patch by Phil Elson. + +- bpo-21932: os.read() now uses a :c:func:`Py_ssize_t` type instead of + :c:type:`int` for the size to support reading more than 2 GB at once. On + Windows, the size is truncated to INT_MAX. As any call to os.read(), the + OS may read less bytes than the number of requested bytes. + +- bpo-21942: Fixed source file viewing in pydoc's server mode on Windows. + +- bpo-11259: asynchat.async_chat().set_terminator() now raises a ValueError + if the number of received bytes is negative. + +- bpo-12523: asynchat.async_chat.push() now raises a TypeError if it doesn't + get a bytes string + +- bpo-21707: Add missing kwonlyargcount argument to + ModuleFinder.replace_paths_in_code(). + +- bpo-20639: calling Path.with_suffix('') allows removing the suffix again. + Patch by July Tikhonov. + +- bpo-21714: Disallow the construction of invalid paths using + Path.with_name(). Original patch by Antony Lee. + +- bpo-15014: Added 'auth' method to smtplib to make implementing auth + mechanisms simpler, and used it internally in the login method. + +- bpo-21151: Fixed a segfault in the winreg module when ``None`` is passed + as a ``REG_BINARY`` value to SetValueEx. Patch by John Ehresman. + +- bpo-21090: io.FileIO.readall() does not ignore I/O errors anymore. Before, + it ignored I/O errors if at least the first C call read() succeed. + +- bpo-5800: headers parameter of wsgiref.headers.Headers is now optional. + Initial patch by Pablo Torres Navarrete and SilentGhost. + +- bpo-21781: ssl.RAND_add() now supports strings longer than 2 GB. + +- bpo-21679: Prevent extraneous fstat() calls during open(). Patch by + Bohuslav Kabrda. + +- bpo-21863: cProfile now displays the module name of C extension functions, + in addition to their own name. + +- bpo-11453: asyncore: emit a ResourceWarning when an unclosed file_wrapper + object is destroyed. The destructor now closes the file if needed. The + close() method can now be called twice: the second call does nothing. + +- bpo-21858: Better handling of Python exceptions in the sqlite3 module. + +- bpo-21476: Make sure the email.parser.BytesParser TextIOWrapper is + discarded after parsing, so the input file isn't unexpectedly closed. + +- bpo-20295: imghdr now recognizes OpenEXR format images. + +- bpo-21729: Used the "with" statement in the dbm.dumb module to ensure + files closing. Patch by Claudiu Popa. + +- bpo-21491: socketserver: Fix a race condition in child processes reaping. + +- bpo-21719: Added the ``st_file_attributes`` field to os.stat_result on + Windows. + +- bpo-21832: Require named tuple inputs to be exact strings. + +- bpo-21722: The distutils "upload" command now exits with a non-zero return + code when uploading fails. Patch by Martin Dengler. + +- bpo-21723: asyncio.Queue: support any type of number (ex: float) for the + maximum size. Patch written by Vajrasky Kok. + +- bpo-21711: support for "site-python" directories has now been removed from + the site module (it was deprecated in 3.4). + +- bpo-17552: new socket.sendfile() method allowing a file to be sent over a + socket by using high-performance os.sendfile() on UNIX. Patch by Giampaolo + Rodola'. + +- bpo-18039: dbm.dump.open() now always creates a new database when the flag + has the value 'n'. Patch by Claudiu Popa. + +- bpo-21326: Add a new is_closed() method to asyncio.BaseEventLoop. + run_forever() and run_until_complete() methods of asyncio.BaseEventLoop + now raise an exception if the event loop was closed. + +- bpo-21766: Prevent a security hole in CGIHTTPServer by URL unquoting paths + before checking for a CGI script at that path. + +- bpo-21310: Fixed possible resource leak in failed open(). + +- bpo-21256: Printout of keyword args should be in deterministic order in a + mock function call. This will help to write better doctests. + +- bpo-21677: Fixed chaining nonnormalized exceptions in io close() methods. + +- bpo-11709: Fix the pydoc.help function to not fail when sys.stdin is not a + valid file. + +- bpo-21515: tempfile.TemporaryFile now uses os.O_TMPFILE flag is available. + +- bpo-13223: Fix pydoc.writedoc so that the HTML documentation for methods + that use 'self' in the example code is generated correctly. + +- bpo-21463: In urllib.request, fix pruning of the FTP cache. + +- bpo-21618: The subprocess module could fail to close open fds that were + inherited by the calling process and already higher than POSIX resource + limits would otherwise allow. On systems with a functioning /proc/self/fd + or /dev/fd interface the max is now ignored and all fds are closed. + +- bpo-20383: Introduce importlib.util.module_from_spec() as the preferred + way to create a new module. + +- bpo-21552: Fixed possible integer overflow of too long string lengths in + the tkinter module on 64-bit platforms. + +- bpo-14315: The zipfile module now ignores extra fields in the central + directory that are too short to be parsed instead of letting a + struct.unpack error bubble up as this "bad data" appears in many real + world zip files in the wild and is ignored by other zip tools. + +- bpo-13742: Added "key" and "reverse" parameters to heapq.merge(). (First + draft of patch contributed by Simon Sapin.) + +- bpo-21402: tkinter.ttk now works when default root window is not set. + +- bpo-3015: _tkinter.create() now creates tkapp object with wantobject=1 by + default. + +- bpo-10203: sqlite3.Row now truly supports sequence protocol. In + particular it supports reverse() and negative indices. Original patch by + Claudiu Popa. + +- bpo-18807: If copying (no symlinks) specified for a venv, then the python + interpreter aliases (python, python3) are now created by copying rather + than symlinking. + +- bpo-20197: Added support for the WebP image type in the imghdr module. + Patch by Fabrice Aneche and Claudiu Popa. + +- bpo-21513: Speedup some properties of IP addresses (IPv4Address, + IPv6Address) such as .is_private or .is_multicast. + +- bpo-21137: Improve the repr for threading.Lock() and its variants by + showing the "locked" or "unlocked" status. Patch by Berker Peksag. + +- bpo-21538: The plistlib module now supports loading of binary plist files + when reference or offset size is not a power of two. + +- bpo-21455: Add a default backlog to socket.listen(). + +- bpo-21525: Most Tkinter methods which accepted tuples now accept lists + too. + +- bpo-22166: With the assistance of a new internal _codecs._forget_codec + helping function, test_codecs now clears the encoding caches to avoid the + appearance of a reference leak + +- bpo-22236: Tkinter tests now don't reuse default root window. New root + window is created for every test class. + +- bpo-10744: Fix :pep:`3118` format strings on ctypes objects with a + nontrivial shape. + +- bpo-20826: Optimize ipaddress.collapse_addresses(). + +- bpo-21487: Optimize ipaddress.summarize_address_range() and + ipaddress.{IPv4Network,IPv6Network}.subnets(). + +- bpo-21486: Optimize parsing of netmasks in ipaddress.IPv4Network and + ipaddress.IPv6Network. + +- bpo-13916: Disallowed the surrogatepass error handler for non UTF-\* + encodings. + +- bpo-20998: Fixed re.fullmatch() of repeated single character pattern with + ignore case. Original patch by Matthew Barnett. + +- bpo-21075: fileinput.FileInput now reads bytes from standard stream if + binary mode is specified. Patch by Sam Kimbrel. + +- bpo-19775: Add a samefile() method to pathlib Path objects. Initial patch + by Vajrasky Kok. + +- bpo-21226: Set up modules properly in PyImport_ExecCodeModuleObject (and + friends). + +- bpo-21398: Fix a unicode error in the pydoc pager when the documentation + contains characters not encodable to the stdout encoding. + +- bpo-16531: ipaddress.IPv4Network and ipaddress.IPv6Network now accept an + (address, netmask) tuple argument, so as to easily construct network + objects from existing addresses. + +- bpo-21156: importlib.abc.InspectLoader.source_to_code() is now a + staticmethod. + +- bpo-21424: Simplified and optimized heaqp.nlargest() and nmsmallest() to + make fewer tuple comparisons. + +- bpo-21396: Fix TextIOWrapper(..., write_through=True) to not force a + flush() on the underlying binary stream. Patch by akira. + +- bpo-18314: Unlink now removes junctions on Windows. Patch by Kim Gräsman + +- bpo-21088: Bugfix for curses.window.addch() regression in 3.4.0. In + porting to Argument Clinic, the first two arguments were reversed. + +- bpo-21407: _decimal: The module now supports function signatures. + +- bpo-10650: Remove the non-standard 'watchexp' parameter from the + Decimal.quantize() method in the Python version. It had never been + present in the C version. + +- bpo-21469: Reduced the risk of false positives in robotparser by checking + to make sure that robots.txt has been read or does not exist prior to + returning True in can_fetch(). + +- bpo-19414: Have the OrderedDict mark deleted links as unusable. This gives + an early failure if the link is deleted during iteration. + +- bpo-21421: Add __slots__ to the MappingViews ABC. Patch by Josh Rosenberg. + +- bpo-21101: Eliminate double hashing in the C speed-up code for + collections.Counter(). + +- bpo-21321: itertools.islice() now releases the reference to the source + iterator when the slice is exhausted. Patch by Anton Afanasyev. + +- bpo-21057: TextIOWrapper now allows the underlying binary stream's read() + or read1() method to return an arbitrary bytes-like object (such as a + memoryview). Patch by Nikolaus Rath. + +- bpo-20951: SSLSocket.send() now raises either SSLWantReadError or + SSLWantWriteError on a non-blocking socket if the operation would block. + Previously, it would return 0. Patch by Nikolaus Rath. + +- bpo-13248: removed previously deprecated asyncore.dispatcher __getattr__ + cheap inheritance hack. + +- bpo-9815: assertRaises now tries to clear references to local variables in + the exception's traceback. + +- bpo-19940: ssl.cert_time_to_seconds() now interprets the given time string + in the UTC timezone (as specified in RFC 5280), not the local timezone. + +- bpo-13204: Calling sys.flags.__new__ would crash the interpreter, now it + raises a TypeError. + +- bpo-19385: Make operations on a closed dbm.dumb database always raise the + same exception. + +- bpo-21207: Detect when the os.urandom cached fd has been closed or + replaced, and open it anew. + +- bpo-21291: subprocess's Popen.wait() is now thread safe so that multiple + threads may be calling wait() or poll() on a Popen instance at the same + time without losing the Popen.returncode value. + +- bpo-21127: Path objects can now be instantiated from str subclass + instances (such as ``numpy.str_``). + +- bpo-15002: urllib.response object to use _TemporaryFileWrapper (and + _TemporaryFileCloser) facility. Provides a better way to handle file + descriptor close. Patch contributed by Christian Theune. + +- bpo-12220: mindom now raises a custom ValueError indicating it doesn't + support spaces in URIs instead of letting a 'split' ValueError bubble up. + +- bpo-21068: The ssl.PROTOCOL* constants are now enum members. + +- bpo-21276: posixmodule: Don't define USE_XATTRS on KFreeBSD and the Hurd. + +- bpo-21262: New method assert_not_called for Mock. It raises AssertionError + if the mock has been called. + +- bpo-21238: New keyword argument `unsafe` to Mock. It raises + `AttributeError` incase of an attribute startswith assert or assret. + +- bpo-20896: ssl.get_server_certificate() now uses PROTOCOL_SSLv23, not + PROTOCOL_SSLv3, for maximum compatibility. + +- bpo-21239: patch.stopall() didn't work deterministically when the same + name was patched more than once. + +- bpo-21203: Updated fileConfig and dictConfig to remove inconsistencies. + Thanks to Jure Koren for the patch. + +- bpo-21222: Passing name keyword argument to mock.create_autospec now + works. + +- bpo-21197: Add lib64 -> lib symlink in venvs on 64-bit non-OS X POSIX. + +- bpo-17498: Some SMTP servers disconnect after certain errors, violating + strict RFC conformance. Instead of losing the error code when we issue + the subsequent RSET, smtplib now returns the error code and defers raising + the SMTPServerDisconnected error until the next command is issued. + +- bpo-17826: setting an iterable side_effect on a mock function created by + create_autospec now works. Patch by Kushal Das. + +- bpo-7776: Fix ``Host:`` header and reconnection when using + http.client.HTTPConnection.set_tunnel(). Patch by Nikolaus Rath. + +- bpo-20968: unittest.mock.MagicMock now supports division. Patch by + Johannes Baiter. + +- bpo-21529: Fix arbitrary memory access in JSONDecoder.raw_decode with a + negative second parameter. Bug reported by Guido Vranken. (See also: + CVE-2014-4616) + +- bpo-21169: getpass now handles non-ascii characters that the input stream + encoding cannot encode by re-encoding using the replace error handler. + +- bpo-21171: Fixed undocumented filter API of the rot13 codec. Patch by + Berker Peksag. + +- bpo-20539: Improved math.factorial error message for large positive inputs + and changed exception type (OverflowError -> ValueError) for large + negative inputs. + +- bpo-21172: isinstance check relaxed from dict to collections.Mapping. + +- bpo-21155: asyncio.EventLoop.create_unix_server() now raises a ValueError + if path and sock are specified at the same time. + +- bpo-21136: Avoid unnecessary normalization of Fractions resulting from + power and other operations. Patch by Raymond Hettinger. + +- bpo-17621: Introduce importlib.util.LazyLoader. + +- bpo-21076: signal module constants were turned into enums. Patch by + Giampaolo Rodola'. + +- bpo-20636: Improved the repr of Tkinter widgets. + +- bpo-19505: The items, keys, and values views of OrderedDict now support + reverse iteration using reversed(). + +- bpo-21149: Improved thread-safety in logging cleanup during interpreter + shutdown. Thanks to Devin Jeanpierre for the patch. + +- bpo-21058: Fix a leak of file descriptor in + :func:`tempfile.NamedTemporaryFile`, close the file descriptor if + :func:`io.open` fails + +- bpo-21200: Return None from pkgutil.get_loader() when __spec__ is missing. + +- bpo-21013: Enhance ssl.create_default_context() when used for server side + sockets to provide better security by default. + +- bpo-20145: `assertRaisesRegex` and `assertWarnsRegex` now raise a + TypeError if the second argument is not a string or compiled regex. + +- bpo-20633: Replace relative import by absolute import. + +- bpo-20980: Stop wrapping exception when using ThreadPool. + +- bpo-21082: In os.makedirs, do not set the process-wide umask. Note this + changes behavior of makedirs when exist_ok=True. + +- bpo-20990: Fix issues found by pyflakes for multiprocessing. + +- bpo-21015: SSL contexts will now automatically select an elliptic curve + for ECDH key exchange on OpenSSL 1.0.2 and later, and otherwise default to + "prime256v1". + +- bpo-21000: Improve the command-line interface of json.tool. + +- bpo-20995: Enhance default ciphers used by the ssl module to enable better + security and prioritize perfect forward secrecy. + +- bpo-20884: Don't assume that __file__ is defined on importlib.__init__. + +- bpo-21499: Ignore __builtins__ in several test_importlib.test_api tests. + +- bpo-20627: xmlrpc.client.ServerProxy is now a context manager. + +- bpo-19165: The formatter module now raises DeprecationWarning instead of + PendingDeprecationWarning. + +- bpo-13936: Remove the ability of datetime.time instances to be considered + false in boolean contexts. + +- bpo-18931: selectors module now supports /dev/poll on Solaris. Patch by + Giampaolo Rodola'. + +- bpo-19977: When the ``LC_TYPE`` locale is the POSIX locale (``C`` locale), + :py:data:`sys.stdin` and :py:data:`sys.stdout` are now using the + ``surrogateescape`` error handler, instead of the ``strict`` error + handler. + +- bpo-20574: Implement incremental decoder for cp65001 code (Windows code + page 65001, Microsoft UTF-8). + +- bpo-20879: Delay the initialization of encoding and decoding tables for + base32, ascii85 and base85 codecs in the base64 module, and delay the + initialization of the unquote_to_bytes() table of the urllib.parse module, + to not waste memory if these modules are not used. + +- bpo-19157: Include the broadcast address in the usuable hosts for IPv6 in + ipaddress. + +- bpo-11599: When an external command (e.g. compiler) fails, distutils now + prints out the whole command line (instead of just the command name) if + the environment variable DISTUTILS_DEBUG is set. + +- bpo-4931: distutils should not produce unhelpful "error: None" messages + anymore. distutils.util.grok_environment_error is kept but doc-deprecated. + +- bpo-20875: Prevent possible gzip "'read' is not defined" NameError. Patch + by Claudiu Popa. + +- bpo-11558: ``email.message.Message.attach`` now returns a more useful + error message if ``attach`` is called on a message for which + ``is_multipart`` is False. + +- bpo-20283: RE pattern methods now accept the string keyword parameters as + documented. The pattern and source keyword parameters are left as + deprecated aliases. + +- bpo-20778: Fix modulefinder to work with bytecode-only modules. + +- bpo-20791: copy.copy() now doesn't make a copy when the input is a bytes + object. Initial patch by Peter Otten. + +- bpo-19748: On AIX, time.mktime() now raises an OverflowError for year + outsize range [1902; 2037]. + +- bpo-19573: inspect.signature: Use enum for parameter kind constants. + +- bpo-20726: inspect.signature: Make Signature and Parameter picklable. + +- bpo-17373: Add inspect.Signature.from_callable method. + +- bpo-20378: Improve repr of inspect.Signature and inspect.Parameter. + +- bpo-20816: Fix inspect.getcallargs() to raise correct TypeError for + missing keyword-only arguments. Patch by Jeremiah Lowin. + +- bpo-20817: Fix inspect.getcallargs() to fail correctly if more than 3 + arguments are missing. Patch by Jeremiah Lowin. + +- bpo-6676: Ensure a meaningful exception is raised when attempting to parse + more than one XML document per pyexpat xmlparser instance. (Original + patches by Hirokazu Yamamoto and Amaury Forgeot d'Arc, with suggested + wording by David Gutteridge) + +- bpo-21117: Fix inspect.signature to better support functools.partial. Due + to the specifics of functools.partial implementation, + positional-or-keyword arguments passed as keyword arguments become + keyword-only. + +- bpo-20334: inspect.Signature and inspect.Parameter are now hashable. + Thanks to Antony Lee for bug reports and suggestions. + +- bpo-15916: doctest.DocTestSuite returns an empty unittest.TestSuite + instead of raising ValueError if it finds no tests + +- bpo-21209: Fix asyncio.tasks.CoroWrapper to workaround a bug in yield-from + implementation in CPythons prior to 3.4.1. + +- asyncio: Add gi_{frame,running,code} properties to CoroWrapper (upstream + issue #163). + +- bpo-21311: Avoid exception in _osx_support with non-standard compiler + configurations. Patch by John Szakmeister. + +- bpo-11571: Ensure that the turtle window becomes the topmost window when + launched on OS X. + +- bpo-21801: Validate that __signature__ is None or an instance of + Signature. + +- bpo-21923: Prevent AttributeError in + distutils.sysconfig.customize_compiler due to possible uninitialized + _config_vars. + +- bpo-21323: Fix http.server to again handle scripts in CGI subdirectories, + broken by the fix for security issue #19435. Patch by Zach Byrne. + +- bpo-22733: Fix ffi_prep_args not zero-extending argument values correctly + on 64-bit Windows. + +- bpo-23302: Default to TCP_NODELAY=1 upon establishing an HTTPConnection. + Removed use of hard-coded MSS as it's an optimization that's no longer + needed with Nagle disabled. + +IDLE +---- + +- bpo-20577: Configuration of the max line length for the FormatParagraph + extension has been moved from the General tab of the Idle preferences + dialog to the FormatParagraph tab of the Config Extensions dialog. Patch + by Tal Einat. + +- bpo-16893: Update Idle doc chapter to match current Idle and add new + information. + +- bpo-3068: Add Idle extension configuration dialog to Options menu. Changes + are written to HOME/.idlerc/config-extensions.cfg. Original patch by Tal + Einat. + +- bpo-16233: A module browser (File : Class Browser, Alt+C) requires an + editor window with a filename. When Class Browser is requested otherwise, + from a shell, output window, or 'Untitled' editor, Idle no longer displays + an error box. It now pops up an Open Module box (Alt+M). If a valid name + is entered and a module is opened, a corresponding browser is also opened. + +- bpo-4832: Save As to type Python files automatically adds .py to the name + you enter (even if your system does not display it). Some systems + automatically add .txt when type is Text files. + +- bpo-21986: Code objects are not normally pickled by the pickle module. To + match this, they are no longer pickled when running under Idle. + +- bpo-17390: Adjust Editor window title; remove 'Python', move version to + end. + +- bpo-14105: Idle debugger breakpoints no longer disappear when inserting or + deleting lines. + +- bpo-17172: Turtledemo can now be run from Idle. Currently, the entry is on + the Help menu, but it may move to Run. Patch by Ramchandra Apt and Lita + Cho. + +- bpo-21765: Add support for non-ascii identifiers to HyperParser. + +- bpo-21940: Add unittest for WidgetRedirector. Initial patch by Saimadhav + Heblikar. + +- bpo-18592: Add unittest for SearchDialogBase. Patch by Phil Webster. + +- bpo-21694: Add unittest for ParenMatch. Patch by Saimadhav Heblikar. + +- bpo-21686: add unittest for HyperParser. Original patch by Saimadhav + Heblikar. + +- bpo-12387: Add missing upper(lower)case versions of default Windows key + bindings for Idle so Caps Lock does not disable them. Patch by Roger + Serwy. + +- bpo-21695: Closing a Find-in-files output window while the search is still + in progress no longer closes Idle. + +- bpo-18910: Add unittest for textView. Patch by Phil Webster. + +- bpo-18292: Add unittest for AutoExpand. Patch by Saihadhav Heblikar. + +- bpo-18409: Add unittest for AutoComplete. Patch by Phil Webster. + +- bpo-21477: htest.py - Improve framework, complete set of tests. Patches by + Saimadhav Heblikar + +- bpo-18104: Add idlelib/idle_test/htest.py with a few sample tests to begin + consolidating and improving human-validated tests of Idle. Change other + files as needed to work with htest. Running the module as __main__ runs + all tests. + +- bpo-21139: Change default paragraph width to 72, the :pep:`8` + recommendation. + +- bpo-21284: Paragraph reformat test passes after user changes reformat + width. + +- bpo-17654: Ensure IDLE menus are customized properly on OS X for + non-framework builds and for all variants of Tk. + +- bpo-23180: Rename IDLE "Windows" menu item to "Window". Patch by Al + Sweigart. + +Build +----- + +- bpo-15506: Use standard PKG_PROG_PKG_CONFIG autoconf macro in the + configure script. + +- bpo-22935: Allow the ssl module to be compiled if openssl doesn't support + SSL 3. + +- bpo-22592: Drop support of the Borland C compiler to build Python. The + distutils module still supports it to build extensions. + +- bpo-22591: Drop support of MS-DOS, especially of the DJGPP compiler + (MS-DOS port of GCC). + +- bpo-16537: Check whether self.extensions is empty in setup.py. Patch by + Jonathan Hosmer. + +- bpo-22359: Remove incorrect uses of recursive make. Patch by Jonas + Wagner. + +- bpo-21958: Define HAVE_ROUND when building with Visual Studio 2013 and + above. Patch by Zachary Turner. + +- bpo-18093: the programs that embed the CPython runtime are now in a + separate "Programs" directory, rather than being kept in the Modules + directory. + +- bpo-15759: "make suspicious", "make linkcheck" and "make doctest" in Doc/ + now display special message when and only when there are failures. + +- bpo-21141: The Windows build process no longer attempts to find Perl, + instead relying on OpenSSL source being configured and ready to build. + The ``PCbuild\build_ssl.py`` script has been re-written and re-named to + ``PCbuild\prepare_ssl.py``, and takes care of configuring OpenSSL source + for both 32 and 64 bit platforms. OpenSSL sources obtained from + svn.python.org will always be pre-configured and ready to build. + +- bpo-21037: Add a build option to enable AddressSanitizer support. + +- bpo-19962: The Windows build process now creates "python.bat" in the root + of the source tree, which passes all arguments through to the most + recently built interpreter. + +- bpo-21285: Refactor and fix curses configure check to always search in a + ncursesw directory. + +- bpo-15234: For BerkelyDB and Sqlite, only add the found library and + include directories if they aren't already being searched. This avoids an + explicit runtime library dependency. + +- bpo-17861: Tools/scripts/generate_opcode_h.py automatically regenerates + Include/opcode.h from Lib/opcode.py if the latter gets any change. + +- bpo-20644: OS X installer build support for documentation build changes in + 3.4.1: assume externally supplied sphinx-build is available in /usr/bin. + +- bpo-20022: Eliminate use of deprecated bundlebuilder in OS X builds. + +- bpo-15968: Incorporated Tcl, Tk, and Tix builds into the Windows build + solution. + +- bpo-17095: Fix Modules/Setup *shared* support. + +- bpo-21811: Anticipated fixes to support OS X versions > 10.9. + +- bpo-21166: Prevent possible segfaults and other random failures of python + --generate-posix-vars in pybuilddir.txt build target. + +- bpo-18096: Fix library order returned by python-config. + +- bpo-17219: Add library build dir for Python extension cross-builds. + +- bpo-22919: Windows build updated to support VC 14.0 (Visual Studio 2015), + which will be used for the official release. + +- bpo-21236: Build _msi.pyd with cabinet.lib instead of fci.lib + +- bpo-17128: Use private version of OpenSSL for OS X 10.5+ installer. + +C API +----- + +- bpo-14203: Remove obsolete support for view==NULL in PyBuffer_FillInfo(), + bytearray_getbuffer(), bytesiobuf_getbuffer() and array_buffer_getbuf(). + All functions now raise BufferError in that case. + +- bpo-22445: PyBuffer_IsContiguous() now implements precise contiguity + tests, compatible with NumPy's NPY_RELAXED_STRIDES_CHECKING compilation + flag. Previously the function reported false negatives for corner cases. + +- bpo-22079: PyType_Ready() now checks that statically allocated type has no + dynamically allocated bases. + +- bpo-22453: Removed non-documented macro PyObject_REPR(). + +- bpo-18395: Rename ``_Py_char2wchar()`` to :c:func:`Py_DecodeLocale`, + rename ``_Py_wchar2char()`` to :c:func:`Py_EncodeLocale`, and document + these functions. + +- bpo-21233: Add new C functions: PyMem_RawCalloc(), PyMem_Calloc(), + PyObject_Calloc(), _PyObject_GC_Calloc(). bytes(int) is now using + ``calloc()`` instead of ``malloc()`` for large objects which is faster and + use less memory. + +- bpo-20942: PyImport_ImportFrozenModuleObject() no longer sets __file__ to + match what importlib does; this affects _frozen_importlib as well as any + module loaded using imp.init_frozen(). + +Documentation +------------- + +- bpo-19548: Update the codecs module documentation to better cover the + distinction between text encodings and other codecs, together with other + clarifications. Patch by Martin Panter. + +- bpo-22394: Doc/Makefile now supports ``make venv PYTHON=../python`` to + create a venv for generating the documentation, e.g., ``make html + PYTHON=venv/bin/python3``. + +- bpo-21514: The documentation of the json module now refers to new JSON RFC + 7159 instead of obsoleted RFC 4627. + +- bpo-21777: The binary sequence methods on bytes and bytearray are now + documented explicitly, rather than assuming users will be able to derive + the expected behaviour from the behaviour of the corresponding str + methods. + +- bpo-6916: undocument deprecated asynchat.fifo class. + +- bpo-17386: Expanded functionality of the ``Doc/make.bat`` script to make + it much more comparable to ``Doc/Makefile``. + +- bpo-21312: Update the thread_foobar.h template file to include newer + threading APIs. Patch by Jack McCracken. + +- bpo-21043: Remove the recommendation for specific CA organizations and to + mention the ability to load the OS certificates. + +- bpo-20765: Add missing documentation for PurePath.with_name() and + PurePath.with_suffix(). + +- bpo-19407: New package installation and distribution guides based on the + Python Packaging Authority tools. Existing guides have been retained as + legacy links from the distutils docs, as they still contain some required + reference material for tool developers that isn't recorded anywhere else. + +- bpo-19697: Document cases where __main__.__spec__ is None. + +Tests +----- + +- bpo-18982: Add tests for CLI of the calendar module. + +- bpo-19548: Added some additional checks to test_codecs to ensure that + statements in the updated documentation remain accurate. Patch by Martin + Panter. + +- bpo-22838: All test_re tests now work with unittest test discovery. + +- bpo-22173: Update lib2to3 tests to use unittest test discovery. + +- bpo-16000: Convert test_curses to use unittest. + +- bpo-21456: Skip two tests in test_urllib2net.py if _ssl module not + present. Patch by Remi Pointel. + +- bpo-20746: Fix test_pdb to run in refleak mode (-R). Patch by Xavier de + Gaye. + +- bpo-22060: test_ctypes has been somewhat cleaned up and simplified; it now + uses unittest test discovery to find its tests. + +- bpo-22104: regrtest.py no longer holds a reference to the suite of tests + loaded from test modules that don't define test_main(). + +- bpo-22111: Assorted cleanups in test_imaplib. Patch by Milan Oberkirch. + +- bpo-22002: Added ``load_package_tests`` function to test.support and used + it to implement/augment test discovery in test_asyncio, test_email, + test_importlib, test_json, and test_tools. + +- bpo-21976: Fix test_ssl to accept LibreSSL version strings. Thanks to + William Orr. + +- bpo-21918: Converted test_tools from a module to a package containing + separate test files for each tested script. + +- bpo-9554: Use modern unittest features in test_argparse. Initial patch by + Denver Coneybeare and Radu Voicilas. + +- bpo-20155: Changed HTTP method names in failing tests in test_httpservers + so that packet filtering software (specifically Windows Base Filtering + Engine) does not interfere with the transaction semantics expected by the + tests. + +- bpo-19493: Refactored the ctypes test package to skip tests explicitly + rather than silently. + +- bpo-18492: All resources are now allowed when tests are not run by + regrtest.py. + +- bpo-21634: Fix pystone micro-benchmark: use floor division instead of true + division to benchmark integers instead of floating point numbers. Set + pystone version to 1.2. Patch written by Lennart Regebro. + +- bpo-21605: Added tests for Tkinter images. + +- bpo-21493: Added test for ntpath.expanduser(). Original patch by Claudiu + Popa. + +- bpo-19925: Added tests for the spwd module. Original patch by Vajrasky + Kok. + +- bpo-21522: Added Tkinter tests for Listbox.itemconfigure(), + PanedWindow.paneconfigure(), and Menu.entryconfigure(). + +- bpo-17756: Fix test_code test when run from the installed location. + +- bpo-17752: Fix distutils tests when run from the installed location. + +- bpo-18604: Consolidated checks for GUI availability. All platforms now at + least check whether Tk can be instantiated when the GUI resource is + requested. + +- bpo-21275: Fix a socket test on KFreeBSD. + +- bpo-21223: Pass test_site/test_startup_imports when some of the extensions + are built as builtins. + +- bpo-20635: Added tests for Tk geometry managers. + +- Add test case for freeze. + +- bpo-20743: Fix a reference leak in test_tcl. + +- bpo-21097: Move test_namespace_pkgs into test_importlib. + +- bpo-21503: Use test_both() consistently in test_importlib. + +- bpo-20939: Avoid various network test failures due to new redirect of + http://www.python.org/ to https://www.python.org: use + http://www.example.com instead. + +- bpo-20668: asyncio tests no longer rely on tests.txt file. (Patch by + Vajrasky Kok) + +- bpo-21093: Prevent failures of ctypes test_macholib on OS X if a copy of + libz exists in $HOME/lib or /usr/local/lib. + +- bpo-22770: Prevent some Tk segfaults on OS X when running gui tests. + +- bpo-23211: Workaround test_logging failure on some OS X 10.6 systems. + +- bpo-23345: Prevent test_ssl failures with large OpenSSL patch level values + (like 0.9.8zc). + +Tools/Demos +----------- + +- bpo-22314: pydoc now works when the LINES environment variable is set. + +- bpo-22615: Argument Clinic now supports the "type" argument for the int + converter. This permits using the int converter with enums and typedefs. + +- bpo-20076: The makelocalealias.py script no longer ignores UTF-8 mapping. + +- bpo-20079: The makelocalealias.py script now can parse the SUPPORTED file + from glibc sources and supports command line options for source paths. + +- bpo-22201: Command-line interface of the zipfile module now correctly + extracts ZIP files with directory entries. Patch by Ryan Wilson. + +- bpo-22120: For functions using an unsigned integer return converter, + Argument Clinic now generates a cast to that type for the comparison to -1 + in the generated code. (This suppresses a compilation warning.) + +- bpo-18974: Tools/scripts/diff.py now uses argparse instead of optparse. + +- bpo-21906: Make Tools/scripts/md5sum.py work in Python 3. Patch by Zachary + Ware. + +- bpo-21629: Fix Argument Clinic's "--converters" feature. + +- Add support for ``yield from`` to 2to3. + +- Add support for the :pep:`465` matrix multiplication operator to 2to3. + +- bpo-16047: Fix module exception list and __file__ handling in freeze. + Patch by Meador Inge. + +- bpo-11824: Consider ABI tags in freeze. Patch by Meador Inge. + +- bpo-20535: PYTHONWARNING no longer affects the run_tests.py script. Patch + by Arfrever Frehtes Taifersar Arahesis. + +Windows +------- + +- bpo-23260: Update Windows installer + +- The bundled version of Tcl/Tk has been updated to 8.6.3. The most visible + result of this change is the addition of new native file dialogs when + running on Windows Vista or newer. See Tcl/Tk's TIP 432 for more + information. Also, this version of Tcl/Tk includes support for Windows + 10. + +- bpo-17896: The Windows build scripts now expect external library sources + to be in ``PCbuild\..\externals`` rather than ``PCbuild\..\..``. + +- bpo-17717: The Windows build scripts now use a copy of NASM pulled from + svn.python.org to build OpenSSL. + +- bpo-21907: Improved the batch scripts provided for building Python. + +- bpo-22644: The bundled version of OpenSSL has been updated to 1.0.1j. + +- bpo-10747: Use versioned labels in the Windows start menu. Patch by Olive + Kilburn. + +- bpo-22980: .pyd files with a version and platform tag (for example, + ".cp35-win32.pyd") will now be loaded in preference to those without tags. + + +**(For information about older versions, consult the HISTORY file.)** diff --git a/Modules/config.c b/Modules/config.c new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy9jb25maWcuYw== --- /dev/null +++ b/Modules/config.c @@ -0,0 +1,114 @@ +/* Generated automatically from ./Modules/config.c.in by makesetup. */ +/* -*- C -*- *********************************************** +Copyright (c) 2000, BeOpen.com. +Copyright (c) 1995-2000, Corporation for National Research Initiatives. +Copyright (c) 1990-1995, Stichting Mathematisch Centrum. +All rights reserved. + +See the file "Misc/COPYRIGHT" for information on usage and +redistribution of this file, and for a DISCLAIMER OF ALL WARRANTIES. +******************************************************************/ + +/* Module configuration */ + +/* !!! !!! !!! This file is edited by the makesetup script !!! !!! !!! */ + +/* This file contains the table of built-in modules. + See create_builtin() in import.c. */ + +#include "Python.h" + +#ifdef __cplusplus +extern "C" { +#endif + + +extern PyObject* PyInit_posix(void); +extern PyObject* PyInit_errno(void); +extern PyObject* PyInit_pwd(void); +extern PyObject* PyInit__sre(void); +extern PyObject* PyInit__codecs(void); +extern PyObject* PyInit__weakref(void); +extern PyObject* PyInit__functools(void); +extern PyObject* PyInit__operator(void); +extern PyObject* PyInit__collections(void); +extern PyObject* PyInit__abc(void); +extern PyObject* PyInit_itertools(void); +extern PyObject* PyInit_atexit(void); +extern PyObject* PyInit__signal(void); +extern PyObject* PyInit__stat(void); +extern PyObject* PyInit_time(void); +extern PyObject* PyInit__thread(void); +extern PyObject* PyInit__locale(void); +extern PyObject* PyInit__io(void); +extern PyObject* PyInit_faulthandler(void); +extern PyObject* PyInit__tracemalloc(void); +extern PyObject* PyInit__symtable(void); +extern PyObject* PyInit_xxsubtype(void); + +/* -- ADDMODULE MARKER 1 -- */ + +extern PyObject* PyMarshal_Init(void); +extern PyObject* PyInit__imp(void); +extern PyObject* PyInit_gc(void); +extern PyObject* PyInit__ast(void); +extern PyObject* _PyWarnings_Init(void); +extern PyObject* PyInit__string(void); + +struct _inittab _PyImport_Inittab[] = { + + {"posix", PyInit_posix}, + {"errno", PyInit_errno}, + {"pwd", PyInit_pwd}, + {"_sre", PyInit__sre}, + {"_codecs", PyInit__codecs}, + {"_weakref", PyInit__weakref}, + {"_functools", PyInit__functools}, + {"_operator", PyInit__operator}, + {"_collections", PyInit__collections}, + {"_abc", PyInit__abc}, + {"itertools", PyInit_itertools}, + {"atexit", PyInit_atexit}, + {"_signal", PyInit__signal}, + {"_stat", PyInit__stat}, + {"time", PyInit_time}, + {"_thread", PyInit__thread}, + {"_locale", PyInit__locale}, + {"_io", PyInit__io}, + {"faulthandler", PyInit_faulthandler}, + {"_tracemalloc", PyInit__tracemalloc}, + {"_symtable", PyInit__symtable}, + {"xxsubtype", PyInit_xxsubtype}, + +/* -- ADDMODULE MARKER 2 -- */ + + /* This module lives in marshal.c */ + {"marshal", PyMarshal_Init}, + + /* This lives in import.c */ + {"_imp", PyInit__imp}, + + /* This lives in Python/Python-ast.c */ + {"_ast", PyInit__ast}, + + /* These entries are here for sys.builtin_module_names */ + {"builtins", NULL}, + {"sys", NULL}, + + /* This lives in gcmodule.c */ + {"gc", PyInit_gc}, + + /* This lives in _warnings.c */ + {"_warnings", _PyWarnings_Init}, + + /* This lives in Objects/unicodeobject.c */ + {"_string", PyInit__string}, + + /* Sentinel */ + {0, 0} +}; + + +#ifdef __cplusplus +} +#endif diff --git a/Modules/rdb/db.c b/Modules/rdb/db.c new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy9yZGIvZGIuYw== --- /dev/null +++ b/Modules/rdb/db.c @@ -0,0 +1,767 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <errno.h> +#include <descrip.h> + +#pragma names save +#pragma names uppercase +#include <sql_rdb_headers.h> +#include <sql_literals.h> +#include <sql_sqlca.h> +#pragma names restore + +#include <starlet.h> +#include <str$routines.h> +#include <lib$routines.h> +#include <assert.h> +#include <unixlib.h> + +#include "db.h" + +#ifndef OKAY +#define OKAY(STATUS) (((STATUS) & 1) != 0) +#endif + + +#define MAXARGS 100 + +#pragma nomember_alignment + +typedef struct +{ + char sqldaid[8]; + int i0; + short sqln; + short sqld; + struct sqlvar + { + short sqltype; + long sqldlen; + int i0; + char * sqldata; + int * sqlnind; + int i1; + int i2; + short l0; + char d0[128]; + char d1[128]; + char d2[128]; + char d3[128]; + } + sqlvar[MAXARGS]; +} +sqlda_t; + +typedef struct { + sqlda_t sqlda_i; + sqlda_t sqlda_o; + long id; + char cursor[32]; +} +stmt_t; + + +static struct SQLCA SQLCA = { + "SQLCA ", 128, 0, {0, ""}, {0, 0, 0, 0, 0, 0}, {0, 0, 0, 0, 0, 0, 0, 0}, "" + }; + + + +typedef long vc_len_t; +typedef short sc_len_t; + + +# define MAXVLEN 8192 + +typedef struct +{ + unsigned long dlen; + char data[MAXVLEN]; +} +vc_t; + + +#pragma names save +#pragma names uppercase +extern void eib$$db_attach(void *, char *); +extern void eib$$db_detach(void *); +extern void eib$$db_commit(void *); +extern void eib$$db_rollback(void *); +extern void eib$$db_exec_immediate(void *, char *); +extern void eib$$db_exec(void *, long *, void *, void *); +extern void eib$$db_set_readonly(void *); +extern void eib$$db_release(void *, long *); +extern void eib$$db_prepare(void *, long *, char *); +extern void eib$$db_open_cursor(void *, char *, void *); +extern void eib$$db_close_cursor(void *, char *); +extern void eib$$db_declare(void *, char *, long *); +extern void eib$$db_describe_select(void *, long *, void *); +extern void eib$$db_describe_markers(void *, long *, void *); +extern void eib$$db_fetch(void *, char *, void *); +#pragma names restore + + + +static char errstr[256] = ""; + + + + +static char *eib_DB_ErrorString() +{ + static char str[256]; + unsigned short pos; + unsigned short len; + struct dsc$descriptor_s dsc; + + dsc.dsc$w_length = sizeof(str) - 1; + dsc.dsc$b_class = DSC$K_CLASS_S; + dsc.dsc$b_dtype = DSC$K_DTYPE_T; + dsc.dsc$a_pointer = str; + + sql$get_error_text(&dsc); + + str$trim(&dsc, &dsc, &len); + str[len] = '\0'; + return ( (char *)str ); +} + +/* ------------------------------------------------------------------------------------------------------------------------------ */ + +int Sqlcode() +{ + return (SQLCA.SQLCODE); +} + +const char *Error() +{ + return (errstr); +} + +/* ------------------------------------------------------------------------------------------------------------------------------ */ + +int Attach(const char *db) +{ + char * tmp = NULL; + int rv = 0; + +// + int old = -1, idx = -1; + if ((idx = decc$feature_get_index("DECC$UNIX_LEVEL")) >= 0) + { + old = decc$feature_set_value(idx, 1, 0); + } +// + + errstr[0] = '\0'; + + if (db == NULL || ! strlen(db)) + { + sprintf(errstr, "Invalid database name"); + rv = -1; + goto hell; + } + + tmp = malloc((strlen(db) + 16) * sizeof(char)); + assert(tmp); + sprintf(tmp, "filename %s", db); + + eib$$db_attach(&SQLCA, tmp); + free(tmp); + + if (SQLCA.SQLCODE != SQLCODE_SUCCESS) { + strcpy(errstr, eib_DB_ErrorString()); + rv = -1; + goto hell; + } + +hell: + if (idx >= 0) + { + decc$feature_set_value(idx, 1, old); + } + + return (rv); +} + +/* ------------------------------------------------------------------------------------------------------------------------------ */ + +int Rollback() +{ + errstr[0] = '\0'; + + eib$$db_rollback(&SQLCA); + + if (SQLCA.SQLCODE != SQLCODE_SUCCESS) { + strcpy(errstr, eib_DB_ErrorString()); + return (-1); + } + + return (0); +} + +/* ------------------------------------------------------------------------------------------------------------------------------ */ + +int Commit() +{ + errstr[0] = '\0'; + + eib$$db_commit(&SQLCA); + + if (SQLCA.SQLCODE != SQLCODE_SUCCESS) { + strcpy(errstr, eib_DB_ErrorString()); + return (-1); + } + + return (0); +} + +/* ------------------------------------------------------------------------------------------------------------------------------ */ + +int Exec(void *addr) +{ + stmt_t * sp = (stmt_t *) addr; + + eib$$db_exec(&SQLCA, &sp->id, &sp->sqlda_i, &sp->sqlda_o); + + if (SQLCA.SQLCODE != SQLCODE_SUCCESS) { + strcpy(errstr, eib_DB_ErrorString()); + return (-1); + } + + return (0); +} + +int ExecI(char *stmt) +{ + errstr[0] = '\0'; + eib$$db_exec_immediate(&SQLCA, stmt); + + if (SQLCA.SQLCODE != SQLCODE_SUCCESS) { + strcpy(errstr, eib_DB_ErrorString()); + return (-1); + } + + return (0); +} + +/* ------------------------------------------------------------------------------------------------------------------------------ */ + +int Detach() +{ + errstr[0] = '\0'; + + eib$$db_detach(&SQLCA); + + if (SQLCA.SQLCODE != SQLCODE_SUCCESS) { + strcpy(errstr, eib_DB_ErrorString()); + return (-1); + } + + return (0); +} + +/* ------------------------------------------------------------------------------------------------------------------------------ */ + +static int eib_DB_Alloc(sqlda_t *sqlda_o) +{ + short type; + int i; + + errstr[0] = '\0'; + + for (i = 0; i < sqlda_o->sqld; i++) + { + sqlda_o->sqlvar[i].sqlnind = malloc(sizeof(int)); + assert(sqlda_o->sqlvar[i].sqlnind); + type = sqlda_o->sqlvar[i].sqltype; + + switch (type) + { + case SQLDA_VARCHAR: + sqlda_o->sqlvar[i].sqldata = malloc(sizeof(vc_t)); + assert(sqlda_o->sqlvar[i].sqldata); + break; + + case SQLDA_CHAR: + case SQLDA_INTEGER: + case SQLDA_SMALLINT: + case SQLDA_TINYINT: + case SQLDA_FLOAT: + case SQLDA_SEGSTRING: + case SQLDA_QUADWORD: + case SQLDA_DATE: + case SQLDA2_DATETIME: + sqlda_o->sqlvar[i].sqldata = malloc(sqlda_o->sqlvar[i].sqldlen); + assert(sqlda_o->sqlvar[i].sqldata); + break; + + default: + abort(); /* Unknown data type */ + break; + } + } + + return (0); +} + +/* ------------------------------------------------------------------------------------------------------------------------------ */ + +int SetReadonly() +{ + errstr[0] = '\0'; + + eib$$db_set_readonly(&SQLCA); + + if (SQLCA.SQLCODE != SQLCODE_SUCCESS) { + strcpy(errstr, eib_DB_ErrorString()); + return (-1); + } + + return (0); +} + +/* ------------------------------------------------------------------------------------------------------------------------------ */ + +int Free(void *addr) +{ + stmt_t * sp = (stmt_t *) addr; + int i; + + if (sp->id != 0) + { + eib$$db_release(&SQLCA, &sp->id); + } + + sp->id = 0; + + for (i = 0; i < MAXARGS; i++) + { + if (sp->sqlda_o.sqlvar[i].sqlnind != NULL) + { + free(sp->sqlda_o.sqlvar[i].sqlnind); + } + + if (sp->sqlda_o.sqlvar[i].sqldata != NULL) + { + free(sp->sqlda_o.sqlvar[i].sqldata); + } + } + + for (i = 0; i < MAXARGS; i++) + { + if (sp->sqlda_i.sqlvar[i].sqlnind != NULL) + { + free(sp->sqlda_i.sqlvar[i].sqlnind); + } + + if (sp->sqlda_i.sqlvar[i].sqldata != NULL) + { + free(sp->sqlda_i.sqlvar[i].sqldata); + } + } + + free(sp); + return (0); +} + +/* ------------------------------------------------------------------------------------------------------------------------------ */ + +int OpenCursor(void *addr) +{ + stmt_t * sp = (stmt_t *) addr; + + errstr[0] = '\0'; + + eib$$db_open_cursor(&SQLCA, sp->cursor, &sp->sqlda_i); + + if (SQLCA.SQLCODE != SQLCODE_SUCCESS) { + strcpy(errstr, eib_DB_ErrorString()); + return (-1); + } + + return (0); +} + +/* ------------------------------------------------------------------------------------------------------------------------------ */ + +int CloseCursor(void *addr) +{ + stmt_t * sp = (stmt_t *) addr; + + errstr[0] = '\0'; + + eib$$db_close_cursor(&SQLCA, sp->cursor); + + if (SQLCA.SQLCODE != SQLCODE_SUCCESS) { + strcpy(errstr, eib_DB_ErrorString()); + return (-1); + } + + return (0); +} + +/* ------------------------------------------------------------------------------------------------------------------------------ */ + +void *Prepare(char *stmt) +{ + stmt_t *sp = NULL; + int i; + int ss; /* Not really used */ + + errstr[0] = '\0'; + + sp = calloc(1, sizeof(stmt_t)); + assert(sp); + + sp->sqlda_i.sqln = MAXARGS; + sp->sqlda_o.sqln = MAXARGS; + + strncpy(&sp->sqlda_i.sqldaid[0], "SQLDA2 ", 8); + strncpy(&sp->sqlda_o.sqldaid[0], "SQLDA2 ", 8); + + eib$$db_prepare(&SQLCA, &sp->id, stmt); + + if (SQLCA.SQLCODE != SQLCODE_SUCCESS) + { + strcpy(errstr, eib_DB_ErrorString()); + free(sp); + return (NULL); + } + + eib$$db_describe_select(&SQLCA, &sp->id, &sp->sqlda_o); + + if (SQLCA.SQLCODE != SQLCODE_SUCCESS) + { + strcpy(errstr, eib_DB_ErrorString()); + free(sp); + return (NULL); + } + + eib$$db_describe_markers(&SQLCA, &sp->id, &sp->sqlda_i); + + if (SQLCA.SQLCODE != SQLCODE_SUCCESS) + { + strcpy(errstr, eib_DB_ErrorString()); + free(sp); + return (NULL); + } + + ss = SQLCA.SQLERRD[1]; + + for (i = 0; i < sp->sqlda_i.sqld; i++) + { + sp->sqlda_i.sqlvar[i].sqldata = malloc(sp->sqlda_i.sqlvar[i].sqldlen * sizeof(char)); + assert(sp->sqlda_i.sqlvar[i].sqldata); + sp->sqlda_i.sqlvar[i].sqlnind = NULL; + } + + for (i = 0; i < sp->sqlda_o.sqld; i++) + { + if (sp->sqlda_o.sqlvar[i].sqltype == SQLDA2_INTERVAL) + { + sp->sqlda_o.sqlvar[i].sqltype = SQLDA_VARCHAR; + sp->sqlda_o.sqlvar[i].sqldlen = 100; + } + } + + return ((void *) sp); +} + +/* ------------------------------------------------------------------------------------------------------------------------------ */ + +void *DeclareCursor(char *cursor, char *stmt) +{ + stmt_t * sp = NULL; + + errstr[0] = '\0'; + +#pragma message disable (MAYLOSEDATA2) /* We know we're getting a 32-bit address */ + if ((sp = Prepare(stmt)) == NULL) + { + return (NULL); + } +#pragma message enable (MAYLOSEDATA2) + + if (eib_DB_Alloc(&sp->sqlda_o) != 0) + { + Free((void *) sp); + return (NULL); + } + + strcpy(sp->cursor, cursor); + eib$$db_declare(&SQLCA, sp->cursor, &sp->id); + + if (SQLCA.SQLCODE != SQLCODE_SUCCESS) + { + strcpy(errstr, eib_DB_ErrorString()); + Free((void *) sp); + return (NULL); + } + + return ((void *) sp); +} + +/* ------------------------------------------------------------------------------------------------------------------------------ */ + +void eib_DB_FreeRow(char **arr) +{ + int i = 0; + + if (arr != NULL) + { + while (arr[i]) + { + free(arr[i]); + i++; + } + free(arr); + } +} + + + +char **FetchRow(void *addr) +{ + stmt_t * sp = (stmt_t *) addr; + char ** arr = NULL; + int i; + int nc; + + if (Fetch(addr) != 1) + { + return (NULL); + } + + nc = sp->sqlda_o.sqld; + arr = calloc((nc + 1), sizeof(char *)); + assert(arr); + + for (i = 0; i < nc; i++) + { + arr[i] = strdup(Data(addr, i)); + assert(arr[i]); + } + + arr[i] = NULL; + return (arr); +} + +/* ------------------------------------------------------------------------------------------------------------------------------ */ + +int Fetch(void *addr) +{ + stmt_t * sp = (stmt_t *) addr; + + eib$$db_fetch(&SQLCA, sp->cursor, &sp->sqlda_o); + + switch (SQLCA.SQLCODE) + { + case SQLCODE_SUCCESS: + return (1); + break; + + case SQLCODE_EOS: + return (0); + break; + + default: + return (-1); + break; + } +} + +/* ------------------------------------------------------------------------------------------------------------------------------ */ + +int NCol(void *addr) +{ + stmt_t * sp = (stmt_t *) addr; + return (sp->sqlda_o.sqld); +} + +/* ------------------------------------------------------------------------------------------------------------------------------ */ + +static unsigned long dbl_to_str(double val, char *str, int len) +{ + struct dsc$descriptor_sd data_desc; + struct dsc$descriptor_s strn_desc; + unsigned long status; + + data_desc.dsc$b_class = DSC$K_CLASS_SD; + data_desc.dsc$w_length = sizeof(double); + data_desc.dsc$a_pointer = (char *) &val; + data_desc.dsc$b_scale = 0; + data_desc.dsc$b_digits = 0; + data_desc.dsc$b_dtype = DSC$K_DTYPE_G; /* G-Floating 64-bit */ + + strn_desc.dsc$w_length = len; + strn_desc.dsc$b_dtype = DSC$K_DTYPE_T; + strn_desc.dsc$b_class = DSC$K_CLASS_S; + strn_desc.dsc$a_pointer = str; + + status = lib$cvt_dx_dx(&data_desc, &strn_desc); + + if (OKAY(status)) + { + str[strn_desc.dsc$w_length] = '\0'; + } + + return (status); +} + +/* ------------------------------------------------------------------------------------------------------------------------------ */ + +static unsigned long flt_to_str(float val, char *str, int len) +{ + struct dsc$descriptor_sd data_desc; + struct dsc$descriptor_s strn_desc; + unsigned long status; + + data_desc.dsc$b_class = DSC$K_CLASS_SD; + data_desc.dsc$w_length = sizeof(double); + data_desc.dsc$a_pointer = (char *) &val; + data_desc.dsc$b_scale = 0; + data_desc.dsc$b_digits = 0; + data_desc.dsc$b_dtype = DSC$K_DTYPE_F; /* F-Floating 32-bit */ + + strn_desc.dsc$w_length = len; + strn_desc.dsc$b_dtype = DSC$K_DTYPE_T; + strn_desc.dsc$b_class = DSC$K_CLASS_S; + strn_desc.dsc$a_pointer = str; + + status = lib$cvt_dx_dx(&data_desc, &strn_desc); + + if (OKAY(status)) + { + str[strn_desc.dsc$w_length] = '\0'; + } + + return (status); +} + +/* ------------------------------------------------------------------------------------------------------------------------------ */ + +char *Data(void *addr, int n) +{ + stmt_t * sp = (stmt_t *) addr; + struct dsc$descriptor_s dd; + vc_len_t len; + sc_len_t * p; + char * q; + struct dsc$descriptor_sd qd; + static char str[MAXVLEN]; + struct sqlvar * var; + + var = &sp->sqlda_o.sqlvar[n]; + + if (*var->sqlnind < 0) + { + strcpy(str, "<null>"); + } + else + { + switch (var->sqltype) + { + case SQLDA_VARCHAR: + len = (vc_len_t) *var->sqldata; + + if (len < 0) /* Hack */ + { + len = 256 + len; + } + + str[len] = '\0'; + strncpy(str, (char *)(var->sqldata + sizeof(vc_len_t)), len); + + for (q = str + len - 1; q >= str && *q == ' ' ; q--) + { + *q = '\0'; + } + + break; + + case SQLDA_CHAR: + len = var->sqldlen; + str[len] = '\0'; + strncpy(str, var->sqldata, len); + + for (q = str + len - 1 ; q >= str && *q == ' ' ; q--) + { + *q = '\0'; + } + + break; + + case SQLDA_TINYINT: + sprintf(str, "%d", *(char *) var->sqldata); + break; + + case SQLDA_FLOAT: + if (var->sqldlen == 8) + { + dbl_to_str(*(double *) var->sqldata, str, sizeof(str) - 1); + } + else + { + flt_to_str(*(float *) var->sqldata, str, sizeof(str) - 1); + } + + break; + + case SQLDA_DATE: + dd.dsc$w_length = 32; + dd.dsc$b_dtype = DSC$K_DTYPE_T; + dd.dsc$b_class = DSC$K_CLASS_S; + dd.dsc$a_pointer = str; + + sys$asctim(0, &dd, var->sqldata, 0); + str[20] = '\0'; + if (str[0] == ' ') str[0] = '0'; + + break; + + case SQLDA_SMALLINT: + case SQLDA_QUADWORD: + case SQLDA_INTEGER: + p = (sc_len_t *) &var->sqldlen; + + dd.dsc$w_length = 64; + dd.dsc$b_dtype = DSC$K_DTYPE_T; + dd.dsc$b_class = DSC$K_CLASS_S; + dd.dsc$a_pointer = str; + + qd.dsc$b_class = DSC$K_CLASS_SD; + qd.dsc$w_length = p[0]; + qd.dsc$a_pointer = var->sqldata; + qd.dsc$b_scale = -1 * p[1]; + qd.dsc$b_digits = 0; + + switch (var->sqltype) + { + case SQLDA_SMALLINT: + qd.dsc$b_dtype = DSC$K_DTYPE_W; + break; + + case SQLDA_QUADWORD: + qd.dsc$b_dtype = DSC$K_DTYPE_Q; + break; + + case SQLDA_INTEGER: + qd.dsc$b_dtype = DSC$K_DTYPE_L; + break; + } + + lib$cvt_dx_dx(&qd, &dd, &dd.dsc$w_length); + str[dd.dsc$w_length] = '\0'; + break; + + default: + strcpy(str, "<null>"); + break; + } + } + + return (str); +} + diff --git a/Modules/rdb/db.h b/Modules/rdb/db.h new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy9yZGIvZGIuaA== --- /dev/null +++ b/Modules/rdb/db.h @@ -0,0 +1,31 @@ +# ifndef __DB_H__ +# define __DB_H__ + +# ifdef __cplusplus + extern "C" { +#endif + +extern char ** FetchRow(void *); +extern int NCol(void *); +extern int Attach(const char *); +extern int CloseCursor(void *); +extern int Commit(); +extern char * Data(void *, int); +extern void * DeclareCursor(char *, char *); +extern int Detach(); +extern int Exec(void *); +extern int ExecI(char *); +extern int Fetch(void *); +extern int Free(void *); +extern int OpenCursor(void *); +extern void * Prepare(char *); +extern int Rollback(); +extern int SetReadonly(); +extern const char * Error(); +extern int Sqlcode(); + +# ifdef __cplusplus + } +#endif + +# endif diff --git a/Modules/rdb/rdb.i b/Modules/rdb/rdb.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy9yZGIvcmRiLmk= --- /dev/null +++ b/Modules/rdb/rdb.i @@ -0,0 +1,26 @@ +%module rdb +%{ + #include "db.h" +%} + +%typemap(out) char** { + int len,i; + if ($1 == NULL) { + $result = Py_None; + } else { + len = 0; + while ($1[len]) len++; + $result = PyList_New(len); + for (i = 0; i < len; i++) { + PyList_SetItem($result, i, PyString_FromString($1[i])); + } + } +} +%typemap(freearg) char ** +{ + extern void eib_DB_FreeRow(char **); + eib_DB_FreeRow( $1 ); +} + +%include "db.h" + diff --git a/Modules/rdb/sql.sqlmod b/Modules/rdb/sql.sqlmod new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy9yZGIvc3FsLnNxbG1vZA== --- /dev/null +++ b/Modules/rdb/sql.sqlmod @@ -0,0 +1,126 @@ +--############################################################################## + +module eib$$db_functions + + language c + authorization $$rdb$$ + parameter colons + + declare $$rdb$$ alias for filename sql$database + +-- ============================================================================ +procedure eib$$db_attach + sqlca + :p_attach char(255); + + attach :p_attach; + +-- ============================================================================ +procedure eib$$db_detach + sqlca; + + disconnect default; + +-- ============================================================================ +procedure eib$$db_commit + sqlca; + + commit; + +-- ============================================================================ +procedure eib$$db_rollback + sqlca; + + rollback; + +-- ============================================================================ +procedure eib$$db_set_readonly + sqlca; + + set transaction read only; + +-- ============================================================================ +procedure eib$$db_set_readwrite + sqlca; + + set transaction read write; + +-- ============================================================================ +procedure eib$$db_exec_immediate + sqlca + :p_statement char(8192); + + execute immediate :p_statement; + +-- ============================================================================ +procedure eib$$db_exec + sqlca + :p_statement_id integer + :i_sqlda sqlda + :o_sqlda sqlda; + + execute :p_statement_id into descriptor :o_sqlda using descriptor :i_sqlda; + +-- ============================================================================ +procedure eib$$db_prepare + sqlca + :p_statement_id integer + :p_statement char(8192); + + prepare :p_statement_id from :p_statement; + +-- ============================================================================ +procedure eib$$db_release + sqlca + :p_statement_id integer; + + release :p_statement_id; + +-- ============================================================================ +procedure eib$$db_open_cursor + sqlca + :p_name char(32) + sqlda; + + open :p_name using descriptor sqlda; + +-- ============================================================================ +procedure eib$$db_close_cursor + sqlca + :p_name char(32); + + close :p_name; + +-- ============================================================================ +procedure eib$$db_declare + sqlca + :p_name char(32) + :p_statement_id integer; + + declare :p_name cursor for :p_statement_id; + +-- ============================================================================ +procedure eib$$db_describe_select + sqlca + :p_statement_id integer + sqlda; + + describe :p_statement_id select list into sqlda; + +-- ============================================================================ +procedure eib$$db_describe_markers + sqlca + :p_statement_id integer + sqlda; + + describe :p_statement_id markers into sqlda; + +-- ============================================================================ +procedure eib$$db_fetch + sqlca + :p_cursor char(32) + sqlda; + + fetch :p_cursor using descriptor sqlda; + +--############################################################################## diff --git a/Modules/vms/__init__.py b/Modules/vms/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvX19pbml0X18ucHk= --- /dev/null +++ b/Modules/vms/__init__.py @@ -0,0 +1,1 @@ +# empty \ No newline at end of file diff --git a/Modules/vms/accdef/accdef.c b/Modules/vms/accdef/accdef.c new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvYWNjZGVmL2FjY2RlZi5j --- /dev/null +++ b/Modules/vms/accdef/accdef.c @@ -0,0 +1,67 @@ +#include <Python.h> +#include <accdef.h> + +PyDoc_STRVAR(doc__accdef, +"ACC definitions"); + +static struct PyModuleDef _accdef_module = { + PyModuleDef_HEAD_INIT, + "accdef", + doc__accdef, + -1, + NULL, + NULL, + NULL, + NULL, + NULL +}; + +PyMODINIT_FUNC +PyInit__accdef(void) +{ + PyObject *m = NULL; + char buff[64]; + + m = PyModule_Create(&_accdef_module); + + PyModule_AddIntConstant(m, "ACC_K_TERMLEN", 84); + PyModule_AddIntConstant(m, "ACC_C_TERMLEN", 84); + PyModule_AddIntConstant(m, "ACC_K_JOB_LEN", 108); + PyModule_AddIntConstant(m, "ACC_C_JOB_LEN", 108); + PyModule_AddIntConstant(m, "ACC_S_ACCDEF", 108); + PyModule_AddIntConstant(m, "ACC_S_TERMTIME", 8); + PyModule_AddIntConstant(m, "ACC_S_ACCOUNT", 8); + PyModule_AddIntConstant(m, "ACC_S_USERNAME", 12); + PyModule_AddIntConstant(m, "ACC_S_LOGIN", 8); + PyModule_AddIntConstant(m, "ACC_S_JOB_NAME", 8); + PyModule_AddIntConstant(m, "ACC_S_JOB_QUE", 16); + PyModule_AddIntConstant(m, "ACC_K_PRT_LEN", 88); + PyModule_AddIntConstant(m, "ACC_C_PRT_LEN", 88); + PyModule_AddIntConstant(m, "ACC_S_ACCDEF1", 88); + PyModule_AddIntConstant(m, "ACC_S_QUETIME", 8); + PyModule_AddIntConstant(m, "ACC_S_PRT_NAME", 8); + PyModule_AddIntConstant(m, "ACC_S_PRT_QUE", 12); + PyModule_AddIntConstant(m, "ACC_K_INS_LEN", 176); + PyModule_AddIntConstant(m, "ACC_C_INS_LEN", 176); + PyModule_AddIntConstant(m, "ACC_K_PRCTRM", 1); + PyModule_AddIntConstant(m, "ACC_K_BATTRM", 2); + PyModule_AddIntConstant(m, "ACC_K_INTTRM", 3); + PyModule_AddIntConstant(m, "ACC_K_LOGTRM", 4); + PyModule_AddIntConstant(m, "ACC_K_IMGTRM", 5); + PyModule_AddIntConstant(m, "ACC_K_SUBTRM", 6); + PyModule_AddIntConstant(m, "ACC_K_DETTRM", 7); + PyModule_AddIntConstant(m, "ACC_K_NETTRM", 8); + PyModule_AddIntConstant(m, "ACC_K_PRTJOB", 16); + PyModule_AddIntConstant(m, "ACC_K_INSMSG", 17); + PyModule_AddIntConstant(m, "ACC_K_INSMESG", 1); + PyModule_AddIntConstant(m, "ACC_K_NEWFILE", 2); + PyModule_AddIntConstant(m, "ACC_K_ENABACC", 3); + PyModule_AddIntConstant(m, "ACC_K_DISAACC", 4); + PyModule_AddIntConstant(m, "ACC_K_ENABSEL", 5); + PyModule_AddIntConstant(m, "ACC_K_DISASEL", 6); + PyModule_AddIntConstant(m, "ACC_S_ACCDEF2", 176); + PyModule_AddIntConstant(m, "ACC_S_USER_DATA", 132); + + return m; + +} \ No newline at end of file diff --git a/Modules/vms/accdef/accdef.i b/Modules/vms/accdef/accdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvYWNjZGVmL2FjY2RlZi5p --- /dev/null +++ b/Modules/vms/accdef/accdef.i @@ -0,0 +1,39 @@ +%module accdef + +%constant int ACC_K_TERMLEN = 84; +%constant int ACC_C_TERMLEN = 84; +%constant int ACC_K_JOB_LEN = 108; +%constant int ACC_C_JOB_LEN = 108; +%constant int ACC_S_ACCDEF = 108; +%constant int ACC_S_TERMTIME = 8; +%constant int ACC_S_ACCOUNT = 8; +%constant int ACC_S_USERNAME = 12; +%constant int ACC_S_LOGIN = 8; +%constant int ACC_S_JOB_NAME = 8; +%constant int ACC_S_JOB_QUE = 16; +%constant int ACC_K_PRT_LEN = 88; +%constant int ACC_C_PRT_LEN = 88; +%constant int ACC_S_ACCDEF1 = 88; +%constant int ACC_S_QUETIME = 8; +%constant int ACC_S_PRT_NAME = 8; +%constant int ACC_S_PRT_QUE = 12; +%constant int ACC_K_INS_LEN = 176; +%constant int ACC_C_INS_LEN = 176; +%constant int ACC_K_PRCTRM = 1; +%constant int ACC_K_BATTRM = 2; +%constant int ACC_K_INTTRM = 3; +%constant int ACC_K_LOGTRM = 4; +%constant int ACC_K_IMGTRM = 5; +%constant int ACC_K_SUBTRM = 6; +%constant int ACC_K_DETTRM = 7; +%constant int ACC_K_NETTRM = 8; +%constant int ACC_K_PRTJOB = 16; +%constant int ACC_K_INSMSG = 17; +%constant int ACC_K_INSMESG = 1; +%constant int ACC_K_NEWFILE = 2; +%constant int ACC_K_ENABACC = 3; +%constant int ACC_K_DISAACC = 4; +%constant int ACC_K_ENABSEL = 5; +%constant int ACC_K_DISASEL = 6; +%constant int ACC_S_ACCDEF2 = 176; +%constant int ACC_S_USER_DATA = 132; diff --git a/Modules/vms/accdef/accdef.py b/Modules/vms/accdef/accdef.py new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvYWNjZGVmL2FjY2RlZi5weQ== --- /dev/null +++ b/Modules/vms/accdef/accdef.py @@ -0,0 +1,1 @@ +from _accdef import * diff --git a/Modules/vms/acldef/acldef.i b/Modules/vms/acldef/acldef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvYWNsZGVmL2FjbGRlZi5p --- /dev/null +++ b/Modules/vms/acldef/acldef.i @@ -0,0 +1,56 @@ +%module acldef + +%constant int ACL_K_LENGTH = 12; +%constant int ACL_C_LENGTH = 12; +%constant int ACL_C_FILE = 1; +%constant int ACL_C_DEVICE = 2; +%constant int ACL_C_JOBCTL_QUEUE = 3; +%constant int ACL_C_COMMON_EF_CLUSTER = 4; +%constant int ACL_C_LOGICAL_NAME_TABLE = 5; +%constant int ACL_C_PROCESS = 6; +%constant int ACL_C_GROUP_GLOBAL_SECTION = 7; +%constant int ACL_C_SYSTEM_GLOBAL_SECTION = 8; +%constant int ACL_C_CAPABILITY = 9; +%constant int ACL_C_EVENT_FACILITY = 10; +%constant int ACL_C_LOCK = 11; +%constant int ACL_C_VOLUME = 12; +%constant int ACL_C_MAX_OBJECT = 13; +%constant int ACL_C_NUM_OBJECTS = 12; +%constant int ACL_K_NUM_OBJECTS = 12; +%constant int ACL_C_ADDACLENT = 1; +%constant int ACL_C_DELACLENT = 2; +%constant int ACL_C_MODACLENT = 3; +%constant int ACL_C_FNDACLENT = 4; +%constant int ACL_C_FNDACETYP = 5; +%constant int ACL_C_DELETEACL = 6; +%constant int ACL_C_READACL = 7; +%constant int ACL_C_ACLLENGTH = 8; +%constant int ACL_C_READACE = 9; +%constant int ACL_C_RLOCK_ACL = 10; +%constant int ACL_C_WLOCK_ACL = 11; +%constant int ACL_C_UNLOCK_ACL = 12; +%constant int ACL_C_GRANT_ACE = 13; +%constant int ACL_C_NEXT_ACE = 14; +%constant int ACL_C_DELETE_ALL = 15; +%constant int ACL_C_RESERVED_ITEM_2 = 16; +%constant int ACL_C_RESERVED_ITEM_3 = 17; +%constant int ACL_S_ADDACLENT = 255; +%constant int ACL_S_DELACLENT = 255; +%constant int ACL_S_MODACLENT = 255; +%constant int ACL_S_FNDACLENT = 255; +%constant int ACL_S_FNDACETYP = 255; +%constant int ACL_S_DELETEACL = 255; +%constant int ACL_S_READACL = 512; +%constant int ACL_S_ACLLENGTH = 4; +%constant int ACL_S_READACE = 255; +%constant int ACL_S_RLOCK_ACL = 4; +%constant int ACL_S_WLOCK_ACL = 4; +%constant int ACL_S_UNLOCK_ACL = 4; +%constant int ACL_S_GRANT_ACE = 255; +%constant int ACL_S_NEXT_ACE = 4; +%constant int ACL_S_DELETE_ALL = 255; +%constant int ACL_S_RESERVED_ITEM_2 = 255; +%constant int ACL_S_RESERVED_ITEM_3 = 255; +%constant int ACL_C_MAX_SEGMENT_SIZE = 512; +%constant int ACL_K_MAX_SEGMENT_SIZE = 512; +%constant int ACL_S_ACLDEF = 16; diff --git a/Modules/vms/acrdef/acrdef.i b/Modules/vms/acrdef/acrdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvYWNyZGVmL2FjcmRlZi5p --- /dev/null +++ b/Modules/vms/acrdef/acrdef.i @@ -0,0 +1,63 @@ +%module acrdef + +%constant int ACR_K_VERSION2 = 0; +%constant int ACR_K_VERSION3T = 1; +%constant int ACR_K_VERSION3 = 2; +%constant int ACR_K_VERSION4 = 3; +%constant int ACR_K_CURVER = 3; +%constant int ACR_M_PACKET = 0x1L; +%constant int ACR_M_TYPE = 0xFEL; +%constant int ACR_M_SUBTYPE = 0xF00L; +%constant int ACR_M_VERSION = 0x7000L; +%constant int ACR_M_CUSTOMER = 0x8000L; +%constant int ACR_K_PRCDEL = 1; +%constant int ACR_K_PRCPUR = 2; +%constant int ACR_K_IMGDEL = 3; +%constant int ACR_K_IMGPUR = 4; +%constant int ACR_K_SYSINIT = 5; +%constant int ACR_K_SETTIME = 6; +%constant int ACR_K_LOGFAIL = 7; +%constant int ACR_K_PRINT = 8; +%constant int ACR_K_USER = 9; +%constant int ACR_K_ENABLE = 10; +%constant int ACR_K_DISABLE = 11; +%constant int ACR_K_ALTACM = 12; +%constant int ACR_K_FILE_FL = 13; +%constant int ACR_K_FILE_BL = 14; +%constant int ACR_K_INTERACTIVE = 1; +%constant int ACR_K_SUBPROCESS = 2; +%constant int ACR_K_DETACHED = 3; +%constant int ACR_K_BATCH = 4; +%constant int ACR_K_NETWORK = 5; +%constant int ACR_K_ID = 1; +%constant int ACR_K_RESOURCE = 2; +%constant int ACR_K_IMAGENAME = 3; +%constant int ACR_K_FILENAME = 4; +%constant int ACR_K_USER_DATA = 5; +%constant int ACR_S_ACRDEF = 4; +%constant int ACR_S_TYPE = 7; +%constant int ACR_S_SUBTYPE = 4; +%constant int ACR_S_VERSION = 3; +%constant int ACR_K_HDRLEN = 12; +%constant int ACR_C_HDRLEN = 12; +%constant int ACR_S_ACRDEF1 = 12; +%constant int ACR_S_SYSTIME = 8; +%constant int ACR_M_FULLNAME = 0x1L; +%constant int ACR_M_UIDGID = 0x2L; +%constant int ACR_M_FILL_1 = 0xFCL; +%constant int ACR_K_IDVAR = 58; +%constant int ACR_C_IDVAR = 58; +%constant int ACR_S_ACRDEF2 = 58; +%constant int ACR_S_PRIV = 8; +%constant int ACR_S_FILL_1 = 6; +%constant int ACR_S_ACRDEF3 = 56; +%constant int ACR_S_LOGIN = 8; +%constant int ACR_S_ACRDEF4 = 260; +%constant int ACR_S_IMAGENAME = 256; +%constant int ACR_S_ACRDEF5 = 40; +%constant int ACR_S_QUETIME = 8; +%constant int ACR_S_BEGTIME = 8; +%constant int ACR_S_ACRDEF6 = 260; +%constant int ACR_S_FILENAME = 256; +%constant int ACR_S_ACRDEF7 = 260; +%constant int ACR_S_USER_DATA = 256; diff --git a/Modules/vms/armdef/armdef.i b/Modules/vms/armdef/armdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvYXJtZGVmL2FybWRlZi5p --- /dev/null +++ b/Modules/vms/armdef/armdef.i @@ -0,0 +1,16 @@ +%module armdef + +%constant int ARM_M_READ = 0x1L; +%constant int ARM_M_WRITE = 0x2L; +%constant int ARM_M_EXECUTE = 0x4L; +%constant int ARM_M_DELETE = 0x8L; +%constant int ARM_M_CONTROL = 0x10L; +%constant int ARM_M_CREATE = 0x4L; +%constant int ARM_M_LOCK = 0x4L; +%constant int ARM_M_PHYSICAL = 0x4L; +%constant int ARM_M_LOGICAL = 0x8L; +%constant int ARM_M_ASSOCIATE = 0x1L; +%constant int ARM_M_SUBMIT = 0x2L; +%constant int ARM_M_MANAGE = 0x4L; +%constant int ARM_S_ARMDEF = 4; +%constant int ARM_S_FILL = 27; diff --git a/Modules/vms/brkdef/brkdef.i b/Modules/vms/brkdef/brkdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvYnJrZGVmL2Jya2RlZi5p --- /dev/null +++ b/Modules/vms/brkdef/brkdef.i @@ -0,0 +1,37 @@ +%module brkdef + +%constant int BRK_C_DEVICE = 1; +%constant int BRK_C_USERNAME = 2; +%constant int BRK_C_ALLUSERS = 3; +%constant int BRK_C_ALLTERMS = 4; +%constant int BRK_C_MAXSENDTYPE = 4; +%constant int BRK_C_GENERAL = 0; +%constant int BRK_C_PHONE = 1; +%constant int BRK_C_MAIL = 2; +%constant int BRK_C_QUEUE = 3; +%constant int BRK_C_SHUTDOWN = 4; +%constant int BRK_C_URGENT = 5; +%constant int BRK_C_DCL = 6; +%constant int BRK_C_OPCOM = 7; +%constant int BRK_C_USER1 = 32; +%constant int BRK_C_USER2 = 33; +%constant int BRK_C_USER3 = 34; +%constant int BRK_C_USER4 = 35; +%constant int BRK_C_USER5 = 36; +%constant int BRK_C_USER6 = 37; +%constant int BRK_C_USER7 = 38; +%constant int BRK_C_USER8 = 39; +%constant int BRK_C_USER9 = 40; +%constant int BRK_C_USER10 = 41; +%constant int BRK_C_USER11 = 42; +%constant int BRK_C_USER12 = 43; +%constant int BRK_C_USER13 = 44; +%constant int BRK_C_USER14 = 45; +%constant int BRK_C_USER15 = 46; +%constant int BRK_C_USER16 = 47; +%constant int BRK_M_SCREEN = 0x100L; +%constant int BRK_M_BOTTOM = 0x200L; +%constant int BRK_M_NOREFRESH = 0x400L; +%constant int BRK_M_CLUSTER = 0x800L; +%constant int BRK_S_FLAGS_INPUT = 2; +%constant int BRK_S_ERASE_LINES = 8; diff --git a/Modules/vms/capdef/capdef.i b/Modules/vms/capdef/capdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvY2FwZGVmL2NhcGRlZi5p --- /dev/null +++ b/Modules/vms/capdef/capdef.i @@ -0,0 +1,71 @@ +%module capdef + +%constant int CAP_K_ALL_USER = -1; +%constant int CAP_K_ALL_USER_ADD = -1; +%constant int CAP_K_ALL_CPU_ADD = -1; +%constant int CAP_K_ALL_ACTIVE_CPUS = -1; +%constant int CAP_K_ALL_USER_REMOVE = 0; +%constant int CAP_K_ALL_CPU_REMOVE = 0; +%constant int CAP_K_GET_FREE_CAP = 0; +%constant int CAP_M_USER1 = 0x1L; +%constant int CAP_M_USER2 = 0x2L; +%constant int CAP_M_USER3 = 0x4L; +%constant int CAP_M_USER4 = 0x8L; +%constant int CAP_M_USER5 = 0x10L; +%constant int CAP_M_USER6 = 0x20L; +%constant int CAP_M_USER7 = 0x40L; +%constant int CAP_M_USER8 = 0x80L; +%constant int CAP_M_USER9 = 0x100L; +%constant int CAP_M_USER10 = 0x200L; +%constant int CAP_M_USER11 = 0x400L; +%constant int CAP_M_USER12 = 0x800L; +%constant int CAP_M_USER13 = 0x1000L; +%constant int CAP_M_USER14 = 0x2000L; +%constant int CAP_M_USER15 = 0x4000L; +%constant int CAP_M_USER16 = 0x8000L; +%constant int CAP_S_CAP = 4; +%constant int CAP_M_CPU0 = 0x1L; +%constant int CAP_M_CPU1 = 0x2L; +%constant int CAP_M_CPU2 = 0x4L; +%constant int CAP_M_CPU3 = 0x8L; +%constant int CAP_M_CPU4 = 0x10L; +%constant int CAP_M_CPU5 = 0x20L; +%constant int CAP_M_CPU6 = 0x40L; +%constant int CAP_M_CPU7 = 0x80L; +%constant int CAP_M_CPU8 = 0x100L; +%constant int CAP_M_CPU9 = 0x200L; +%constant int CAP_M_CPU10 = 0x400L; +%constant int CAP_M_CPU11 = 0x800L; +%constant int CAP_M_CPU12 = 0x1000L; +%constant int CAP_M_CPU13 = 0x2000L; +%constant int CAP_M_CPU14 = 0x4000L; +%constant int CAP_M_CPU15 = 0x8000L; +%constant int CAP_M_CPU16 = 0x10000L; +%constant int CAP_M_CPU17 = 0x20000L; +%constant int CAP_M_CPU18 = 0x40000L; +%constant int CAP_M_CPU19 = 0x80000L; +%constant int CAP_M_CPU20 = 0x100000L; +%constant int CAP_M_CPU21 = 0x200000L; +%constant int CAP_M_CPU22 = 0x400000L; +%constant int CAP_M_CPU23 = 0x800000L; +%constant int CAP_M_CPU24 = 0x1000000L; +%constant int CAP_M_CPU25 = 0x2000000L; +%constant int CAP_M_CPU26 = 0x4000000L; +%constant int CAP_M_CPU27 = 0x8000000L; +%constant int CAP_M_CPU28 = 0x10000000L; +%constant int CAP_M_CPU29 = 0x20000000L; +%constant int CAP_M_CPU30 = 0x40000000L; +%constant int CAP_M_CPU31 = 0x80000000L; +%constant int CAP_S_CAP_CPUS = 4; +%constant int CAP_M_IMPLICIT_AFFINITY_CLEAR = 0x1L; +%constant int CAP_M_IMPLICIT_AFFINITY_SET = 0x2L; +%constant int CAP_M_IMPLICIT_DEFAULT_ONLY = 0x4L; +%constant int CAP_M_IMPLICIT_ALL_THREADS = 0x8L; +%constant int CAP_S_IMP_FLAGS = 1; +%constant int CAP_M_FLAG_CHECK_CPU = 0x1L; +%constant int CAP_M_FLAG_PERMANENT = 0x2L; +%constant int CAP_M_FLAG_CHECK_CPU_ACTIVE = 0x8L; +%constant int CAP_M_FLAG_DEFAULT_ONLY = 0x10L; +%constant int CAP_M_ALL_THREADS = 0x20L; +%constant int CAP_M_PURGE_WS_IF_NEW_RAD = 0x40L; +%constant int CAP_S_CAP_FLAGS = 1; diff --git a/Modules/vms/chpdef/chpdef.i b/Modules/vms/chpdef/chpdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvY2hwZGVmL2NocGRlZi5p --- /dev/null +++ b/Modules/vms/chpdef/chpdef.i @@ -0,0 +1,73 @@ +%module chpdef + +%constant int CHP__END = 0; +%constant int CHP__ACCESS = 1; +%constant int CHP__FLAGS = 2; +%constant int CHP__PRIV = 3; +%constant int CHP__ACMODE = 4; +%constant int CHP__ACCLASS = 5; +%constant int CHP__RIGHTS = 6; +%constant int CHP__ADD_RIGHTS = 7; +%constant int CHP__MODE = 8; +%constant int CHP__MODES = 9; +%constant int CHP__MIN_CLASS = 10; +%constant int CHP__MAX_CLASS = 11; +%constant int CHP__OWNER = 12; +%constant int CHP__PROT = 13; +%constant int CHP__ACL = 14; +%constant int CHP__AUDIT_NAME = 15; +%constant int CHP__ALARM_NAME = 16; +%constant int CHP__MATCHED_ACE = 17; +%constant int CHP__PRIVUSED = 18; +%constant int CHP__AUDIT_LIST = 19; +%constant int CHP__OBJECT_NAME = 20; +%constant int CHP__OBJECT_CLASS = 21; +%constant int CHP__UIC = 22; +%constant int CHP__OBJECT_SPECIFIC = 23; +%constant int CHP__MAX_CODE = 24; +%constant int CHP__ADDRIGHTS = 7; +%constant int CHP__MINCLASS = 10; +%constant int CHP__MAXCLASS = 11; +%constant int CHP__AUDITNAME = 15; +%constant int CHP__ALARMNAME = 16; +%constant int CHP__MATCHEDACE = 17; +%constant int CHP__CLASS = 5; +%constant int CHP_K_MATCHED_ACE_LENGTH = 255; +%constant int CHP_K_ALARM_LENGTH = 768; +%constant int CHP_K_AUDIT_LENGTH = 1560; +%constant int CHP_M_SYSPRV = 0x1L; +%constant int CHP_M_BYPASS = 0x2L; +%constant int CHP_M_UPGRADE = 0x4L; +%constant int CHP_M_DOWNGRADE = 0x8L; +%constant int CHP_M_GRPPRV = 0x10L; +%constant int CHP_M_READALL = 0x20L; +%constant int CHP_M_OPER = 0x40L; +%constant int CHP_M_GRPNAM = 0x80L; +%constant int CHP_M_SYSNAM = 0x100L; +%constant int CHP_M_GROUP = 0x200L; +%constant int CHP_M_WORLD = 0x400L; +%constant int CHP_M_PRMCEB = 0x800L; +%constant int CHP_K_NUMBER_OF_PRIVS = 12; +%constant int CHP_S_PRIVS_USED_BITS = 2; +%constant int CHP_M_OBSERVE = 0x1L; +%constant int CHP_M_ALTER = 0x2L; +%constant int CHP_M_READ = 0x1L; +%constant int CHP_M_WRITE = 0x2L; +%constant int CHP_M_USEREADALL = 0x4L; +%constant int CHP_M_AUDIT = 0x8L; +%constant int CHP_M_NOFAILAUD = 0x10L; +%constant int CHP_M_NOSUCCAUD = 0x20L; +%constant int CHP_M_DELETE = 0x40L; +%constant int CHP_M_MANDATORY = 0x80L; +%constant int CHP_M_FLUSH = 0x100L; +%constant int CHP_M_CREATE = 0x200L; +%constant int CHP_M_INTERNAL = 0x400L; +%constant int CHP_M_SERVER = 0x800L; +%constant int CHP_S_FLAG_BITS = 2; +%constant int CHP_M_NOACCESS = 0x1L; +%constant int CHP_M_REMDUPID = 0x2L; +%constant int CHP_M_INCSYSID = 0x4L; +%constant int CHP_M_INCIMGID = 0x8L; +%constant int CHP_M_DEFPRIV = 0x10L; +%constant int CHP_M_DEFCLASS = 0x20L; +%constant int CHP_S_PROFILE_FLAGS = 1; diff --git a/Modules/vms/ciadef/ciadef.i b/Modules/vms/ciadef/ciadef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvY2lhZGVmL2NpYWRlZi5p --- /dev/null +++ b/Modules/vms/ciadef/ciadef.i @@ -0,0 +1,90 @@ +%module ciadef + +%constant int CIA_K_SCAN = 1; +%constant int CIA_K_DELETE = 2; +%constant int CIA_K_SHOW = 3; +%constant int CIA_K_PERFORMANCE = 4; +%constant int CIA_K_ZERO_PERFORMANCE = 5; +%constant int CIA_K_SCAN_EXTENDED = 6; +%constant int CIA_K_DELETE_EXTENDED = 7; +%constant int CIA_K_SHOW_EXTENDED = 8; +%constant int CIA_K_MAX_CIA_CODE = 9; +%constant int CIA_K_PERFORMANCE_LENGTH = 40; +%constant int CIA_S_PERFORMANCE = 40; +%constant int CIA_K_SOURCE_TERMINAL_LENGTH = 64; +%constant int CIA_K_SOURCE_NODE_MAX_LENGTH = 1024; +%constant int CIA_K_USER_SPEC_MAX_LENGTH = 1058; +%constant int CIA_K_USER_STRING_MAX_LENGTH = 32; +%constant int CIA_K_PASSWORD_MAX_LENGTH = 32; +%constant int CIA_K_SOURCE_ADDRESS_MAX_LENGTH = 128; +%constant int CIA_K_SCSNODE_LENGTH = 8; +%constant int CIA_K_SCSNODE_REPLY_LENGTH = 12; +%constant int CIA_K_USERDATA_LENGTH = 256; +%constant int CIA_S_CIA_GENERIC_DESC = 5; +%constant int CIAEXT_S_PACKET = 4; +%constant int CIAEXT_S_EXTENSION_PACKET = 4; +%constant int CIAEXT__USER_DATA = 100; +%constant int CIAEXT__SCSNODE = 101; +%constant int CIAEXT__SCSNODE_REPLY = 102; +%constant int CIAEXT__IMAGE_NAME = 103; +%constant int CIAEXT__MAX_CIAEXT_CODE = 104; +%constant int CIA__SCSNODE_LIST = 200; +%constant int CIA__SCSNODE = 201; +%constant int CIA__OUTPUT_LIST = 202; +%constant int CIA__USER_DATA = 203; +%constant int CIA__USER_CRITERIAL = 204; +%constant int CIA__FAILED_USERNAME = 205; +%constant int CIA__IMAGE_NAME = 206; +%constant int CIA__MAX_CIA_ITEM = 207; +%constant int CIA_K_IMAGE_NAME_MAX_SIZE = 4096; +%constant int CIA_S_IMAGE_NAME = 4100; +%constant int CIA_S_IMAGE_STRING = 4096; +%constant int CIA_M_IGNORE_RETURN = 0x1L; +%constant int CIA_M_RESERVED_1 = 0xFEL; +%constant int CIA_M_SUSPECTS = 0x100L; +%constant int CIA_M_INTRUDERS = 0x200L; +%constant int CIA_M_SECONDARY_PASSWORD = 0x400L; +%constant int CIA_M_NOAUDIT = 0x800L; +%constant int CIA_M_REAL_USERNAME = 0x1000L; +%constant int CIA_M_SHOW_NODE = 0x2000L; +%constant int CIA_M_ITEMLIST = 0x4000L; +%constant int CIA_M_FILL_1 = 0xFFFF8000L; +%constant int CIA_K_HEADER_LENGTH = 8; +%constant int CIA_S_HEADER = 8; +%constant int CIA_S_RESERVED_1 = 7; +%constant int CIA_S_FILL_1 = 17; +%constant int CIA_K_SHOW_INPUT_LENGTH = 1062; +%constant int CIA_K_DELETE_INPUT_LENGTH = 1062; +%constant int CIA_S_CONTENTS = 1062; +%constant int CIA_S_NAME = 1058; +%constant int CIA_K_SCAN_CONTENTS_LENGTH = 1386; +%constant int CIA_S_SCAN_CONTENTS = 1386; +%constant int CIA_S_SOURCE_TERMINAL = 68; +%constant int CIA_S_SOURCE_TERM_NAME = 64; +%constant int CIA_S_SOURCE_USER = 36; +%constant int CIA_S_SOURCE_USER_NAME = 32; +%constant int CIA_S_SOURCE_ADDRESS = 132; +%constant int CIA_S_SOURCE_ADDRESS_NAME = 128; +%constant int CIA_S_FAILED_USER = 36; +%constant int CIA_S_FAILED_USER_NAME = 32; +%constant int CIA_S_FAILED_PASSWORD = 36; +%constant int CIA_S_FAILED_PASS_NAME = 32; +%constant int CIA_S_PARENT_USER = 36; +%constant int CIA_S_PARENT_USER_NAME = 32; +%constant int CIA_S_SOURCE_NODE = 1028; +%constant int CIA_S_SOURCE_NODE_NAME = 1024; +%constant int CIA_M_INTRUDER = 0x1L; +%constant int CIA_M_SUSPECT = 0x2L; +%constant int CIA_M_NETWORK = 0x4L; +%constant int CIA_M_TERM_USER = 0x8L; +%constant int CIA_M_TERMINAL = 0x10L; +%constant int CIA_M_USERNAME = 0x20L; +%constant int CIA_M_FILL_2 = 0xFFFFFFC0L; +%constant int CIA_K_SHOW_OUTPUT_LENGTH = 1086; +%constant int CIA_S_SHOW_OUTPUT = 1086; +%constant int CIA_S_EXPIRATION_TIME = 8; +%constant int CIA_S_USER_SPEC = 1062; +%constant int CIA_S_USER_SPEC_NAME = 1058; +%constant int CIA_S_BREAKIN_BLOCK = 16; +%constant int CIA_S_BREAK_TIME = 8; +%constant int CIA_S_CIA_GENERIC_REPLY = 4; diff --git a/Modules/vms/clidef/clidef.i b/Modules/vms/clidef/clidef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvY2xpZGVmL2NsaWRlZi5p --- /dev/null +++ b/Modules/vms/clidef/clidef.i @@ -0,0 +1,108 @@ +%module clidef + +%constant int CLI_M_DEBUG = 0x1L; +%constant int CLI_M_DBGTRU = 0x2L; +%constant int CLI_M_VERIFY = 0x4L; +%constant int CLI_M_BATCH = 0x8L; +%constant int CLI_M_INDIRECT = 0x10L; +%constant int CLI_M_VFYINP = 0x20L; +%constant int CLI_M_TRMVRBLV = 0x300L; +%constant int CLI_M_DBGEXCP = 0x10000L; +%constant int CLI_S_CLIDEF = 32; +%constant int CLI_S_TRMVRBLV = 2; +%constant int CLI_M_PARMREQ = 0x1L; +%constant int CLI_M_ABSADR = 0x2L; +%constant int CLI_M_EXPNAM = 0x4L; +%constant int CLI_M_LASTVAL = 0x1L; +%constant int CLI_M_DUMMY = 0x2L; +%constant int CLI_M_PARMPRS = 0x1L; +%constant int CLI_M_CONCATINP = 0x2L; +%constant int CLI_M_MOREINP = 0x4L; +%constant int CLI_M_PARMDEF = 0x8L; +%constant int CLI_M_MOREVALS = 0x1L; +%constant int CLI_M_KEYVALU = 0x2L; +%constant int CLI_K_REQDESC = 28; +%constant int CLI_C_REQDESC = 28; +%constant int CLI_S_CLIDEF1 = 28; +%constant int CLI_S_SUBTYP = 4; +%constant int CLI_S_PRITYP = 4; +%constant int CLI_S_RQDESC = 8; +%constant int CLI_S_CLIDEF2 = 36; +%constant int CLI_S_NAMDESC = 8; +%constant int CLI_S_VALDESC = 8; +%constant int CLI_S_TABDESC = 8; +%constant int CLI_S_CLIDEF3 = 12; +%constant int CLI_S_CLIDEF4 = 8; +%constant int CLI_M_NOWAIT = 0x1L; +%constant int CLI_M_NOCLISYM = 0x2L; +%constant int CLI_M_NOLOGNAM = 0x4L; +%constant int CLI_M_NOKEYPAD = 0x8L; +%constant int CLI_M_NOTIFY = 0x10L; +%constant int CLI_M_NOCONTROL = 0x20L; +%constant int CLI_M_TRUSTED = 0x40L; +%constant int CLI_M_AUTHPRIV = 0x80L; +%constant int CLI_M_SUBSYSTEM = 0x100L; +%constant int CLI_M_DETACHED = 0x200L; +%constant int CLI_K_SPAWN_VERSION = 1; +%constant int CLI_C_SPAWN_VERSION = 1; +%constant int CLI_K_SRVDESC = 88; +%constant int CLI_C_SRVDESC = 88; +%constant int CLI_S_CLIDEF5 = 88; +%constant int CLI_S_CMDSTR = 8; +%constant int CLI_S_INPUT = 8; +%constant int CLI_S_OUTPUT = 8; +%constant int CLI_S_PRCNAM = 8; +%constant int CLI_S_PROMPT = 8; +%constant int CLI_S_CLI = 8; +%constant int CLI_S_TABLE = 8; +%constant int CLI_M_ALLOCCUR = 0x1L; +%constant int CLI_M_QDUSRV = 0x2L; +%constant int CLI_M_QDEXPA = 0x4L; +%constant int CLI_M_QUALTRU = 0x1L; +%constant int CLI_M_QUALEXP = 0x2L; +%constant int CLI_K_QUALDEF = 20; +%constant int CLI_C_QUALDEF = 20; +%constant int CLI_K_QDBITS = 20; +%constant int CLI_C_QDBITS = 20; +%constant int CLI_S_CLIDEF6 = 24; +%constant int CLI_S_QDVALDESC = 8; +%constant int CLI_K_WORKAREA = 128; +%constant int CLI_C_WORKAREA = 128; +%constant int CLI_K_UTILOPR = 0; +%constant int CLI_K_INPSPEC = 1; +%constant int CLI_K_OUTSPEC = 2; +%constant int CLI_K_PARDONE = 3; +%constant int CLI_K_VALCONV = 4; +%constant int CLI_K_CLINT = 5; +%constant int CLI_K_INITPRS = 0; +%constant int CLI_K_GETCMD = 1; +%constant int CLI_K_GETQUAL = 2; +%constant int CLI_K_GETOPT = 3; +%constant int CLI_K_GETLINE = 4; +%constant int CLI_K_CLISERV = 5; +%constant int CLI_K_INPUT1 = 16; +%constant int CLI_K_INPUT2 = 17; +%constant int CLI_K_INPUT3 = 18; +%constant int CLI_K_INPUT4 = 19; +%constant int CLI_K_OUTPUT1 = 32; +%constant int CLI_K_OUTPUT2 = 33; +%constant int CLI_K_OUTPUT3 = 34; +%constant int CLI_K_OUTPUT4 = 35; +%constant int CLI_K_ENDPRM1 = 48; +%constant int CLI_K_ENDPRM2 = 49; +%constant int CLI_K_ENDPRM3 = 50; +%constant int CLI_K_ENDPRM4 = 51; +%constant int CLI_K_NUMERVAL = 64; +%constant int CLI_K_ASCIIVAL = 65; +%constant int CLI_K_KEYWORD = 66; +%constant int CLI_K_KEYVAL = 67; +%constant int CLI_K_FILSPEC = 68; +%constant int CLI_K_PRESENT = 80; +%constant int CLI_K_GETVALUE = 81; +%constant int CLI_K_ENDPARSE = 82; +%constant int CLI_K_DCLPARSE = 83; +%constant int CLI_K_DISPATCH = 84; +%constant int CLI_K_NEXTQUAL = 85; +%constant int CLI_S_CLIDEF7 = 128; +%constant int CLI_S_WORKAREA = 128; +%constant int CLI_S_CLIDEF8 = 8; diff --git a/Modules/vms/cmbdef/cmbdef.i b/Modules/vms/cmbdef/cmbdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvY21iZGVmL2NtYmRlZi5p --- /dev/null +++ b/Modules/vms/cmbdef/cmbdef.i @@ -0,0 +1,5 @@ +%module cmbdef + +%constant int CMB_M_READONLY = 0x1L; +%constant int CMB_M_WRITEONLY = 0x2L; +%constant int CMB_S_CMBDEF = 4; diff --git a/Modules/vms/cvtfnmdef/cvtfnmdef.i b/Modules/vms/cvtfnmdef/cvtfnmdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvY3Z0Zm5tZGVmL2N2dGZubWRlZi5p --- /dev/null +++ b/Modules/vms/cvtfnmdef/cvtfnmdef.i @@ -0,0 +1,10 @@ +%module cvtfnmdef + +%constant int CVTFNM_M_WORD_CHARS = 0x1L; +%constant int CVTFNM_M_NO_DELIMITERS = 0x2L; +%constant int CVTFNM_M_FORCE_UPCASE = 0x4L; +%constant int CVTFNM_S_INOUTFLAGS = 4; +%constant int CVTFNM_C_RMS_TO_ACPQIO = 1; +%constant int CVTFNM_C_ACPQIO_TO_RMS = 2; +%constant int CVTFNM_K_RMS_TO_ACPQIO = 1; +%constant int CVTFNM_K_ACPQIO_TO_RMS = 2; diff --git a/Modules/vms/dcdef/dcdef.i b/Modules/vms/dcdef/dcdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZGNkZWYvZGNkZWYuaQ== --- /dev/null +++ b/Modules/vms/dcdef/dcdef.i @@ -0,0 +1,694 @@ +%module dcdef + +%constant int AT__MBA = 0; +%constant int AT__UBA = 1; +%constant int AT__DR = 2; +%constant int AT__MPM = 3; +%constant int AT__CI = 4; +%constant int AT__NULL = 5; +%constant int AT__BDA = 6; +%constant int AT__DMB32 = 7; +%constant int AT__DRB32 = 8; +%constant int AT__BVP = 9; +%constant int AT__BVP_SSP = 10; +%constant int AT__BVP_NIP = 11; +%constant int AT__KA410 = 12; +%constant int AT__KA420 = 12; +%constant int AT__GENBI = 13; +%constant int AT__NBI = 14; +%constant int AT__DISK9 = 15; +%constant int AT__XBI = 16; +%constant int AT__TERM9 = 17; +%constant int AT__TAPE9 = 18; +%constant int AT__PRTR9 = 19; +%constant int AT__SFUN9 = 20; +%constant int AT__USER9 = 21; +%constant int AT__MBUSIO = 22; +%constant int AT__MBUSGFX = 23; +%constant int AT__KA640 = 24; +%constant int AT__XWATCH = 25; +%constant int AT__XBI_PLUS_XMI = 26; +%constant int AT__XBI_PLUS_BI = 27; +%constant int AT__XJA = 28; +%constant int AT__HSX50 = 29; +%constant int AT__KDM70 = 29; +%constant int AT__NI = 30; +%constant int AT__KA43 = 31; +%constant int AT__SJA = 32; +%constant int AT__GENXMI = 33; +%constant int AT__KA440 = 34; +%constant int AT__KA46 = 34; +%constant int AT__KA520 = 35; +%constant int AT__XSA = 36; +%constant int AT__XZA = 37; +%constant int AT__XZA_SCSI = 37; +%constant int AT__VME = 38; +%constant int AT__IOP = 39; +%constant int AT__LAMB = 40; +%constant int AT__KA49 = 41; +%constant int AT__TC = 42; +%constant int AT__X1303 = 43; +%constant int AT__XMI = 44; +%constant int AT__FBUS = 45; +%constant int AT__COREIO = 46; +%constant int AT__KA0202 = 47; +%constant int AT__KA0202_LBUS = 48; +%constant int AT__KA0302 = 49; +%constant int AT__KA0402 = 50; +%constant int AT__TURBO_SCSI = 51; +%constant int AT__CIMNA = 52; +%constant int AT__XZA_DSSI = 53; +%constant int AT__DEMNA = 54; +%constant int AT__FFA = 55; +%constant int AT__KA0602 = 56; +%constant int AT__EISA = 57; +%constant int AT__VTI_COMBO = 58; +%constant int AT__KA0702 = 64; +%constant int AT__TC_MULTI_NI = 65; +%constant int AT__AHA_1742A = 66; +%constant int AT__KA0902 = 67; +%constant int AT__PCI = 68; +%constant int AT__KA0802 = 69; +%constant int AT__MULTIFUNCTION_PCI = 70; +%constant int AT__ISA = 71; +%constant int AT__XBUS = 72; +%constant int AT__KA0C05 = 73; +%constant int AT__KA0E04 = 74; +%constant int AT__KA0D02 = 75; +%constant int AT__THIRDPARTY0 = 76; +%constant int AT__THIRDPARTY1 = 77; +%constant int AT__THIRDPARTY2 = 78; +%constant int AT__THIRDPARTY3 = 79; +%constant int AT__THIRDPARTY4 = 80; +%constant int AT__THIRDPARTY5 = 81; +%constant int AT__THIRDPARTY6 = 82; +%constant int AT__THIRDPARTY7 = 83; +%constant int AT__MULTIFUNCTION_ISA = 84; +%constant int AT__KA0F05 = 85; +%constant int AT__LMCP = 86; +%constant int AT__TIOP = 87; +%constant int AT__ITIOP = 88; +%constant int AT__KA1102 = 89; +%constant int AT__KA1504 = 90; +%constant int AT__HPC = 91; +%constant int AT__PCMCIA = 92; +%constant int AT__KA1402 = 93; +%constant int AT__KA0905 = 94; +%constant int AT__KA1802 = 95; +%constant int AT__KA1805 = 96; +%constant int AT__MEMCHAN = 97; +%constant int AT__KA1B02 = 98; +%constant int AT__KA1B05 = 99; +%constant int AT__KA1A05 = 100; +%constant int AT__KA1605 = 101; +%constant int AT__MC_BUS = 102; +%constant int AT__KA1105 = 103; +%constant int AT__KA1702 = 104; +%constant int AT__KA1E07 = 105; +%constant int AT__KA2005 = 106; +%constant int AT__KA2405 = 107; +%constant int AT__KA2208 = 108; +%constant int AT__KA2508 = 109; +%constant int AT__KA2308 = 110; +%constant int AT__WFQBB = 111; +%constant int AT__WFIOP = 112; +%constant int AT__WFPCA = 113; +%constant int AT__KA2608 = 114; +%constant int AT__KA270F = 115; +%constant int AT__IO7 = 116; +%constant int AT__I2000 = 117; +%constant int AT__ACPI_IA64_PLTFRM = 118; +%constant int AT__ACPI_IA64_CONTAIN = 119; +%constant int AT__ACPI_IA64_SYSBUS = 120; +%constant int AT__ACPI_IA64_BUSLESS = 121; +%constant int AT__ACPI_IA64_IOC = 122; +%constant int AT__PCIE = 123; +%constant int DC__ANY = 0; +%constant int DC__DISK = 1; +%constant int DC__TAPE = 2; +%constant int DC__SCOM = 32; +%constant int DC__CARD = 65; +%constant int DC__TERM = 66; +%constant int DC__LP = 67; +%constant int DC__WORKSTATION = 70; +%constant int DC__REALTIME = 96; +%constant int DC__DECVOICE = 97; +%constant int DC__AUDIO = 98; +%constant int DC__VIDEO = 99; +%constant int DC__BUS = 128; +%constant int DC__MAILBOX = 160; +%constant int DC__REMCSL_STORAGE = 170; +%constant int DC__MISC = 200; +%constant int DT__RK06 = 1; +%constant int DT__RK07 = 2; +%constant int DT__RP04 = 3; +%constant int DT__RP05 = 4; +%constant int DT__RP06 = 5; +%constant int DT__RM03 = 6; +%constant int DT__RP07 = 7; +%constant int DT__RP07HT = 8; +%constant int DT__RL01 = 9; +%constant int DT__RL02 = 10; +%constant int DT__RX02 = 11; +%constant int DT__RX04 = 12; +%constant int DT__RM80 = 13; +%constant int DT__TU58 = 14; +%constant int DT__RM05 = 15; +%constant int DT__RX01 = 16; +%constant int DT__ML11 = 17; +%constant int DT__RB02 = 18; +%constant int DT__RB80 = 19; +%constant int DT__RA80 = 20; +%constant int DT__RA81 = 21; +%constant int DT__RA60 = 22; +%constant int DT__RZ01 = 23; +%constant int DT__RC25 = 23; +%constant int DT__RZF01 = 24; +%constant int DT__RCF25 = 24; +%constant int DT__RD51 = 25; +%constant int DT__RX50 = 26; +%constant int DT__RD52 = 27; +%constant int DT__RD53 = 28; +%constant int DT__RD26 = 29; +%constant int DT__RA82 = 30; +%constant int DT__RD31 = 31; +%constant int DT__RD54 = 32; +%constant int DT__CRX50 = 33; +%constant int DT__RRD50 = 34; +%constant int DT__GENERIC_DU = 35; +%constant int DT__RX33 = 36; +%constant int DT__RX18 = 37; +%constant int DT__RA70 = 38; +%constant int DT__RA90 = 39; +%constant int DT__RD32 = 40; +%constant int DT__DISK9 = 41; +%constant int DT__RX35 = 42; +%constant int DT__RF30 = 43; +%constant int DT__RF70 = 44; +%constant int DT__RF71 = 44; +%constant int DT__RD33 = 45; +%constant int DT__ESE20 = 46; +%constant int DT__TU56 = 47; +%constant int DT__RZ22 = 48; +%constant int DT__RZ23 = 49; +%constant int DT__RZ24 = 50; +%constant int DT__RZ55 = 51; +%constant int DT__RRD40S = 52; +%constant int DT__RRD40 = 53; +%constant int DT__GENERIC_DK = 54; +%constant int DT__RX23 = 55; +%constant int DT__RF31 = 56; +%constant int DT__RF72 = 57; +%constant int DT__RAM_DISK = 58; +%constant int DT__RZ25 = 59; +%constant int DT__RZ56 = 60; +%constant int DT__RZ57 = 61; +%constant int DT__RX23S = 62; +%constant int DT__RX33S = 63; +%constant int DT__RA92 = 64; +%constant int DT__SSTRIPE = 65; +%constant int DT__RZ23L = 66; +%constant int DT__RX26 = 67; +%constant int DT__RZ57I = 68; +%constant int DT__RZ31 = 69; +%constant int DT__RZ58 = 70; +%constant int DT__SCSI_MO = 71; +%constant int DT__RWZ01 = 71; +%constant int DT__RRD42 = 72; +%constant int DT__CD_LOADER_1 = 73; +%constant int DT__ESE25 = 74; +%constant int DT__RFH31 = 75; +%constant int DT__RFH72 = 76; +%constant int DT__RF73 = 77; +%constant int DT__RFH73 = 78; +%constant int DT__RA72 = 79; +%constant int DT__RA71 = 80; +%constant int DT__RAH72 = 80; +%constant int DT__RF32 = 81; +%constant int DT__RF35 = 81; +%constant int DT__RFH32 = 82; +%constant int DT__RFH35 = 82; +%constant int DT__RFF31 = 83; +%constant int DT__RF31F = 83; +%constant int DT__RZ72 = 84; +%constant int DT__RZ73 = 85; +%constant int DT__RZ35 = 86; +%constant int DT__RZ24L = 87; +%constant int DT__RZ25L = 88; +%constant int DT__RZ55L = 89; +%constant int DT__RZ56L = 90; +%constant int DT__RZ57L = 91; +%constant int DT__RA73 = 92; +%constant int DT__RZ26 = 93; +%constant int DT__RZ36 = 94; +%constant int DT__RZ74 = 95; +%constant int DT__ESE52 = 96; +%constant int DT__ESE56 = 97; +%constant int DT__ESE58 = 98; +%constant int DT__RZ27 = 99; +%constant int DT__RZ37 = 100; +%constant int DT__RZ34L = 101; +%constant int DT__RZ35L = 102; +%constant int DT__RZ36L = 103; +%constant int DT__RZ38 = 104; +%constant int DT__RZ75 = 105; +%constant int DT__RZ59 = 106; +%constant int DT__RZ13 = 107; +%constant int DT__RZ14 = 108; +%constant int DT__RZ15 = 109; +%constant int DT__RZ16 = 110; +%constant int DT__RZ17 = 111; +%constant int DT__RZ18 = 112; +%constant int DT__EZ51 = 113; +%constant int DT__EZ52 = 114; +%constant int DT__EZ53 = 115; +%constant int DT__EZ54 = 116; +%constant int DT__EZ58 = 117; +%constant int DT__EF51 = 118; +%constant int DT__EF52 = 119; +%constant int DT__EF53 = 120; +%constant int DT__EF54 = 121; +%constant int DT__EF58 = 122; +%constant int DT__RF36 = 123; +%constant int DT__RF37 = 124; +%constant int DT__RF74 = 125; +%constant int DT__RF75 = 126; +%constant int DT__HSZ10 = 127; +%constant int DT__RZ28 = 128; +%constant int DT__GENERIC_RX = 180; +%constant int DT__FD1 = 129; +%constant int DT__FD2 = 130; +%constant int DT__FD3 = 131; +%constant int DT__FD4 = 132; +%constant int DT__FD5 = 133; +%constant int DT__FD6 = 134; +%constant int DT__FD7 = 135; +%constant int DT__FD8 = 136; +%constant int DT__RZ29 = 137; +%constant int DT__RZ26L = 138; +%constant int DT__RRD43 = 139; +%constant int DT__RRD44 = 140; +%constant int DT__HSX00 = 141; +%constant int DT__HSX01 = 142; +%constant int DT__RZ26B = 143; +%constant int DT__RZ27B = 144; +%constant int DT__RZ28B = 145; +%constant int DT__RZ29B = 146; +%constant int DT__RZ73B = 147; +%constant int DT__RZ74B = 148; +%constant int DT__RZ75B = 149; +%constant int DT__RWZ21 = 150; +%constant int DT__RZ27L = 151; +%constant int DT__HSZ20 = 152; +%constant int DT__HSZ40 = 153; +%constant int DT__HSZ15 = 154; +%constant int DT__RZ26M = 155; +%constant int DT__RW504 = 156; +%constant int DT__RW510 = 157; +%constant int DT__RW514 = 158; +%constant int DT__RW516 = 159; +%constant int DT__RWZ52 = 160; +%constant int DT__RWZ53 = 161; +%constant int DT__RWZ54 = 162; +%constant int DT__RWZ31 = 163; +%constant int DT__EZ31 = 164; +%constant int DT__EZ32 = 165; +%constant int DT__EZ33 = 166; +%constant int DT__EZ34 = 167; +%constant int DT__EZ35 = 168; +%constant int DT__EZ31L = 169; +%constant int DT__EZ32L = 170; +%constant int DT__EZ33L = 171; +%constant int DT__RZ28L = 172; +%constant int DT__RWZ51 = 173; +%constant int DT__EZ56R = 174; +%constant int DT__RAID0 = 175; +%constant int DT__RAID5 = 176; +%constant int DT__CONSOLE_CALLBACK = 177; +%constant int DT__FILES_64 = 178; +%constant int DT__SWXCR = 179; +%constant int DT__SNAPPY_DISK = 180; +%constant int DT__SNAPPY_POOL = 181; +%constant int DT__USB_CB_DISK = 182; +%constant int DT__TE16 = 1; +%constant int DT__TU45 = 2; +%constant int DT__TU77 = 3; +%constant int DT__TS11 = 4; +%constant int DT__TU78 = 5; +%constant int DT__TA78 = 6; +%constant int DT__TU80 = 7; +%constant int DT__TU81 = 8; +%constant int DT__TA81 = 9; +%constant int DT__TK50 = 10; +%constant int DT__MR_TU70 = 11; +%constant int DT__MR_TU72 = 12; +%constant int DT__MW_TSU05 = 13; +%constant int DT__MW_TSV05 = 14; +%constant int DT__TK70 = 15; +%constant int DT__RV20 = 16; +%constant int DT__RV80 = 16; +%constant int DT__TK60 = 17; +%constant int DT__GENERIC_TU = 18; +%constant int DT__TA79 = 19; +%constant int DT__TAPE9 = 20; +%constant int DT__TA90 = 21; +%constant int DT__TF30 = 22; +%constant int DT__TF85 = 22; +%constant int DT__TF70 = 23; +%constant int DT__RV60 = 24; +%constant int DT__TZ30 = 25; +%constant int DT__TM32 = 26; +%constant int DT__TZX0 = 27; +%constant int DT__TSZ05 = 27; +%constant int DT__GENERIC_MK = 28; +%constant int DT__TK50S = 29; +%constant int DT__TZ30S = 30; +%constant int DT__TK70L = 31; +%constant int DT__TLZ04 = 32; +%constant int DT__TZK10 = 33; +%constant int DT__TSZ07 = 34; +%constant int DT__TSZ08 = 35; +%constant int DT__TA90E = 36; +%constant int DT__TZK11 = 37; +%constant int DT__TZ85 = 38; +%constant int DT__TZ86 = 39; +%constant int DT__TZ87 = 40; +%constant int DT__TZ857 = 41; +%constant int DT__EXABYTE = 42; +%constant int DT__TAPE_LOADER_1 = 43; +%constant int DT__TA91 = 44; +%constant int DT__TLZ06 = 45; +%constant int DT__TA85 = 46; +%constant int DT__TKZ60 = 47; +%constant int DT__TLZ6 = 48; +%constant int DT__TZ867 = 49; +%constant int DT__TZ877 = 50; +%constant int DT__TAD85 = 51; +%constant int DT__TF86 = 52; +%constant int DT__TKZ09 = 53; +%constant int DT__TA86 = 54; +%constant int DT__TA87 = 55; +%constant int DT__TD34 = 56; +%constant int DT__TD44 = 57; +%constant int DT__HST00 = 58; +%constant int DT__HST01 = 59; +%constant int DT__TLZ07 = 60; +%constant int DT__TLZ7 = 61; +%constant int DT__TZ88 = 62; +%constant int DT__TZ885 = 63; +%constant int DT__TZ887 = 64; +%constant int DT__TZ89 = 65; +%constant int DT__TZ895 = 66; +%constant int DT__TZ897 = 67; +%constant int DT__TZ875 = 68; +%constant int DT__TL810 = 69; +%constant int DT__TL820 = 70; +%constant int DT__TZ865 = 71; +%constant int DT__TTYUNKN = 0; +%constant int DT__VT05 = 1; +%constant int DT__FT1 = 16; +%constant int DT__FT2 = 17; +%constant int DT__FT3 = 18; +%constant int DT__FT4 = 19; +%constant int DT__FT5 = 20; +%constant int DT__FT6 = 21; +%constant int DT__FT7 = 22; +%constant int DT__FT8 = 23; +%constant int DT__LAX = 32; +%constant int DT__LA36 = 32; +%constant int DT__LA120 = 33; +%constant int DT__VT5X = 64; +%constant int DT__VT52 = 64; +%constant int DT__VT55 = 65; +%constant int DT__TQ_BTS = 4; +%constant int DT__TEK401X = 10; +%constant int DT__VT100 = 96; +%constant int DT__VK100 = 2; +%constant int DT__VT173 = 3; +%constant int DT__LA34 = 34; +%constant int DT__LA38 = 35; +%constant int DT__LA12 = 36; +%constant int DT__LA24 = 37; +%constant int DT__LA100 = 37; +%constant int DT__LQP02 = 38; +%constant int DT__VT101 = 97; +%constant int DT__VT102 = 98; +%constant int DT__VT105 = 99; +%constant int DT__VT125 = 100; +%constant int DT__VT131 = 101; +%constant int DT__VT132 = 102; +%constant int DT__DZ11 = 66; +%constant int DT__DZ32 = 67; +%constant int DT__DZ730 = 68; +%constant int DT__DMZ32 = 69; +%constant int DT__DHV = 70; +%constant int DT__DHU = 71; +%constant int DT__SLU = 72; +%constant int DT__TERM9 = 73; +%constant int DT__LAT = 74; +%constant int DT__VS100 = 1; +%constant int DT__VS125 = 2; +%constant int DT__VL_VS8200 = 3; +%constant int DT__VD = 4; +%constant int DT__DECW_OUTPUT = 5; +%constant int DT__DECW_INPUT = 6; +%constant int DT__DECW_PSEUDO = 7; +%constant int DT__DMC11 = 1; +%constant int DT__DMR11 = 2; +%constant int DT__XK_3271 = 3; +%constant int DT__XJ_2780 = 4; +%constant int DT__NW_X25 = 5; +%constant int DT__NV_X29 = 6; +%constant int DT__SB_ISB11 = 7; +%constant int DT__MX_MUX200 = 8; +%constant int DT__DMP11 = 9; +%constant int DT__DMF32 = 10; +%constant int DT__XV_3271 = 11; +%constant int DT__CI = 12; +%constant int DT__NI = 13; +%constant int DT__UNA11 = 14; +%constant int DT__DEUNA = 14; +%constant int DT__YN_X25 = 15; +%constant int DT__YO_X25 = 16; +%constant int DT__YP_ADCCP = 17; +%constant int DT__YQ_3271 = 18; +%constant int DT__YR_DDCMP = 19; +%constant int DT__YS_SDLC = 20; +%constant int DT__UK_KTC32 = 21; +%constant int DT__DEQNA = 22; +%constant int DT__DMV11 = 23; +%constant int DT__ES_LANCE = 24; +%constant int DT__DELUA = 25; +%constant int DT__NQ_3271 = 26; +%constant int DT__DMB32 = 27; +%constant int DT__YI_KMS11K = 28; +%constant int DT__ET_DEBNT = 29; +%constant int DT__ET_DEBNA = 29; +%constant int DT__SJ_DSV11 = 30; +%constant int DT__SL_DSB32 = 31; +%constant int DT__ZS_DST32 = 32; +%constant int DT__XQ_DELQA = 33; +%constant int DT__ET_DEBNI = 34; +%constant int DT__EZ_SGEC = 35; +%constant int DT__EX_DEMNA = 36; +%constant int DT__DIV32 = 37; +%constant int DT__XQ_DEQTA = 38; +%constant int DT__FT_NI = 39; +%constant int DT__EP_LANCE = 40; +%constant int DT__KWV32 = 41; +%constant int DT__SM_DSF32 = 42; +%constant int DT__FX_DEMFA = 43; +%constant int DT__SF_DSF32 = 44; +%constant int DT__SE_DUP11 = 45; +%constant int DT__SE_DPV11 = 46; +%constant int DT__ZT_DSW = 47; +%constant int DT__FC_DEFZA = 48; +%constant int DT__EC_PMAD = 49; +%constant int DT__EZ_TGEC = 50; +%constant int DT__EA_DEANA = 51; +%constant int DT__EY_NITC2 = 52; +%constant int DT__ER_DE422 = 53; +%constant int DT__ER_DE200 = 54; +%constant int DT__EW_TULIP = 55; +%constant int DT__FA_DEFAA = 56; +%constant int DT__FC_DEFTA = 57; +%constant int DT__FQ_DEFQA = 58; +%constant int DT__FR_DEFEA = 59; +%constant int DT__FW_DEFPA = 60; +%constant int DT__IC_DETRA = 61; +%constant int DT__IQ_DEQRA = 62; +%constant int DT__IR_DW300 = 63; +%constant int DT__ZR_SCC = 64; +%constant int DT__ZY_DSYT1 = 65; +%constant int DT__ZE_DNSES = 66; +%constant int DT__ER_DE425 = 67; +%constant int DT__EW_DE435 = 68; +%constant int DT__ER_DE205 = 69; +%constant int DT__HC_OTTO = 70; +%constant int DT__ZS_PBXDI = 71; +%constant int DT__EL_ELAN = 72; +%constant int DT__HW_OTTO = 73; +%constant int DT__EO_3C598 = 74; +%constant int DT__IW_TC4048 = 75; +%constant int DT__EW_DE450 = 76; +%constant int DT__EW_DE500 = 77; +%constant int DT__CL_CLIP = 78; +%constant int DT__ZW_PBXDP = 79; +%constant int DT__HW_METEOR = 80; +%constant int DT__ER_DE305 = 81; +%constant int DT__EW_DEGPA = 82; +%constant int DT__IW_RACORE = 83; +%constant int DT__EB_SMLAN = 84; +%constant int DT__EI_82558 = 85; +%constant int DT__EI_82559 = 86; +%constant int DT__HW_HE622 = 87; +%constant int DT__HW_HE155 = 88; +%constant int DT__EW_BCM5703 = 89; +%constant int DT__EW_BCM5704 = 90; +%constant int DT__EW_XFRAME = 91; +%constant int DT__EW_BCM5701 = 92; +%constant int DT__LL_LLAN = 93; +%constant int DT__EG_ELP_FC = 94; +%constant int DT__EG_Q_FC = 95; +%constant int DT__EI_82540 = 96; +%constant int DT__VL_VLAN = 97; +%constant int DT__EW_BCM5715 = 98; +%constant int DT__EI_AVIO = 99; +%constant int DT__ER_BCM57711 = 100; +%constant int DT__EW_BCM57711 = 101; +%constant int DT__EB_BE = 102; +%constant int DT__EW_BE = 103; +%constant int DT__LP11 = 1; +%constant int DT__LA11 = 2; +%constant int DT__LA180 = 3; +%constant int DT__LC_DMF32 = 4; +%constant int DT__LI_DMB32 = 5; +%constant int DT__PRTR9 = 6; +%constant int DT__SCSI_SCANNER_1 = 7; +%constant int DT__PC_PRINTER = 8; +%constant int DT__CR11 = 1; +%constant int DT__MBX = 1; +%constant int DT__SHRMBX = 2; +%constant int DT__NULL = 3; +%constant int DT__PIPE = 4; +%constant int DT__DAP_DEVICE = 1; +%constant int DT__LPA11 = 1; +%constant int DT__DR780 = 2; +%constant int DT__DR750 = 3; +%constant int DT__DR11W = 4; +%constant int DT__PCL11R = 5; +%constant int DT__PCL11T = 6; +%constant int DT__DR11C = 7; +%constant int DT__BS_DT07 = 8; +%constant int DT__XP_PCL11B = 9; +%constant int DT__IX_IEX11 = 10; +%constant int DT__FP_FEPCM = 11; +%constant int DT__TK_FCM = 12; +%constant int DT__XI_DR11C = 13; +%constant int DT__XA_DRV11WA = 14; +%constant int DT__DRB32 = 15; +%constant int DT__HX_DRQ3B = 16; +%constant int DT__DECVOICE = 1; +%constant int DT__DTC04 = 2; +%constant int DT__DTC05 = 3; +%constant int DT__DTCN5 = 4; +%constant int DT__AMD79C30A = 1; +%constant int DT__CMI8738 = 2; +%constant int DT__CI780 = 1; +%constant int DT__CI750 = 2; +%constant int DT__UQPORT = 3; +%constant int DT__UDA50 = 3; +%constant int DT__UDA50A = 4; +%constant int DT__LESI = 5; +%constant int DT__TU81P = 6; +%constant int DT__RDRX = 7; +%constant int DT__TK50P = 8; +%constant int DT__RUX50P = 9; +%constant int DT__RC26P = 10; +%constant int DT__QDA50 = 11; +%constant int DT__KDA50 = 11; +%constant int DT__BDA50 = 12; +%constant int DT__KDB50 = 12; +%constant int DT__RRD50P = 13; +%constant int DT__QDA25 = 14; +%constant int DT__KDA25 = 14; +%constant int DT__BCI750 = 15; +%constant int DT__BCA = 16; +%constant int DT__RQDX3 = 17; +%constant int DT__NISCA = 18; +%constant int DT__AIO = 19; +%constant int DT__KFBTA = 19; +%constant int DT__AIE = 20; +%constant int DT__DEBNT = 20; +%constant int DT__BSA = 21; +%constant int DT__KSB50 = 21; +%constant int DT__TK70P = 22; +%constant int DT__RV20P = 23; +%constant int DT__RV80P = 23; +%constant int DT__TK60P = 24; +%constant int DT__SII = 25; +%constant int DT__KFSQSA = 26; +%constant int DT__KFQSA = 26; +%constant int DT__SHAC = 27; +%constant int DT__CIXCD = 28; +%constant int DT__N5380 = 29; +%constant int DT__SCSII = 30; +%constant int DT__HSX50 = 31; +%constant int DT__KDM70 = 31; +%constant int DT__TM32P = 32; +%constant int DT__TK7LP = 33; +%constant int DT__SWIFT = 34; +%constant int DT__N53C94 = 35; +%constant int DT__KFMSA = 36; +%constant int DT__SCSI_XTENDR = 37; +%constant int DT__FT_TRACE_RAM = 38; +%constant int DT__XVIB = 39; +%constant int DT__XZA_SCSI = 40; +%constant int DT__XZA_DSSI = 41; +%constant int DT__N710_SCSI = 42; +%constant int DT__N710_DSSI = 43; +%constant int DT__AHA1742A = 44; +%constant int DT__TZA_SCSI = 45; +%constant int DT__N810_SCSI = 46; +%constant int DT__CIPCA = 47; +%constant int DT__ISP1020 = 48; +%constant int DT__MC_SPUR = 49; +%constant int DT__PZA_SCSI = 50; +%constant int DT__MCSCA = 51; +%constant int DT__SMCI = 52; +%constant int DT__KZPCM_SCSI = 53; +%constant int DT__SYM896_SCSI = 54; +%constant int DT__FCP_SCSI = 55; +%constant int DT__LP7000_FC = 56; +%constant int DT__SYM895_SCSI = 57; +%constant int DT__KZPCA_SCSI = 58; +%constant int DT__ADAPTEC7892_SCSI = 59; +%constant int DT__ADAPTEC7895_SCSI = 60; +%constant int DT__ADAPTEC7897_SCSI = 61; +%constant int DT__ADAPTEC7899_SCSI = 62; +%constant int DT__CISS = 63; +%constant int DT__ISP23XX_FC = 64; +%constant int DT__LSI1010_SCSI = 65; +%constant int DT__LSI1030_SCSI = 66; +%constant int DT__ISP24XX_FC = 67; +%constant int DT__LSI106X_SAS = 68; +%constant int DT__SW_ISCSI = 69; +%constant int DT__LP8000_FC = 70; +%constant int DT__LP9000_FC = 71; +%constant int DT__LP9802_FC = 72; +%constant int DT__LP10000_FC = 73; +%constant int DT__LP11002_FC = 74; +%constant int DT__ISP243X_FC = 75; +%constant int DT__EP2422_FC = 76; +%constant int DT__ISP253X_FC = 77; +%constant int DT__GSP = 78; +%constant int DT__ICH10_AHCI = 79; +%constant int DT__DN11 = 1; +%constant int DT__PV = 2; +%constant int DT__SFUN9 = 3; +%constant int DT__USER9 = 4; +%constant int DT__GENERIC_SCSI = 5; +%constant int DT__DMA_520 = 6; +%constant int DT__T3270 = 7; +%constant int DT__IPMI = 9; +%constant int DT__ACPI_SE = 10; diff --git a/Modules/vms/decc/decc.c b/Modules/vms/decc/decc.c new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZGVjYy9kZWNjLmM= --- /dev/null +++ b/Modules/vms/decc/decc.c @@ -0,0 +1,218 @@ +#define __NEW_STARLET 1 +#include <stdio.h> +#include <string.h> +#include <lib$routines.h> +#include <starlet.h> +#include <descrip.h> +#include <ssdef.h> +#include <stdlib.h> +#include <unistd.h> +#include <time.h> +#include <assert.h> +#include <dlfcn.h> + +#include "decc.h" + +extern unsigned int decc$fix_time(long long *); + +unsigned int _fix_time(long long vms_time) +{ + return (decc$fix_time(&vms_time)); +} + + +static long long epoch = 0; + +#define UNIX_EPOCH "01-JAN-1970 00:00:00.00" +#define FAC 10000000L + +static int offset() +{ + time_t gmt, rawtime = time(NULL); + struct tm *ptm; + + struct tm gbuf; + ptm = gmtime_r(&rawtime, &gbuf); + ptm->tm_isdst = -1; + gmt = mktime(ptm); + + return ((int) difftime(rawtime, gmt)); +} + +unsigned int _unixtime(long long dt) +{ + unsigned int sec; + __int64 diff; + + if (epoch == 0) { + struct dsc$descriptor_s epoch_dsc; + + epoch_dsc.dsc$w_length = strlen(UNIX_EPOCH); + epoch_dsc.dsc$b_class = DSC$K_CLASS_S; + epoch_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + epoch_dsc.dsc$a_pointer = UNIX_EPOCH; + + sys$bintim(&epoch_dsc, (struct _generic_64 *) &epoch); + } + + diff = dt - epoch; + sec = diff / FAC - offset(); + return (sec); +} + + + +long long _vmstime(unsigned int dt) +{ + long long val; + long long tmp; + + if (epoch == 0) { + struct dsc$descriptor_s epoch_dsc; + + epoch_dsc.dsc$w_length = strlen(UNIX_EPOCH); + epoch_dsc.dsc$b_class = DSC$K_CLASS_S; + epoch_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + epoch_dsc.dsc$a_pointer = UNIX_EPOCH; + + sys$bintim(&epoch_dsc, (struct _generic_64 *) &epoch); + } + + tmp = dt; + val = epoch + (tmp * FAC); + + return (val); +} + + +extern int decc$from_vms(const char *, int (*)(char *, void *), int, ...); +extern int decc$to_vms(const char *, int (*)(char *, int, void *), int, int, ...); + +typedef struct { + int len; + int cap; + char** buf; +} _simple_arr; + +static int cb_from_vms(char *name, void *user_data) +{ + _simple_arr *parr = (_simple_arr *) user_data; + assert(parr); + if (parr->len + 1 >= parr->cap ) { + parr->cap += 8; + parr->buf = realloc(parr->buf, parr->cap * sizeof(char*)); + } + parr->buf[parr->len] = strdup(name); + assert(parr->buf[parr->len]); + ++parr->len; + parr->buf[parr->len] = NULL; + return (1); +} + + +char **_from_vms(char *path, int wild_flag) +{ + _simple_arr arr; + arr.len = 0; + arr.cap = 8; + arr.buf = malloc(arr.cap * sizeof(char*)); + arr.buf[arr.len] = NULL; + + assert(path); + int num_files = decc$from_vms(path, cb_from_vms, wild_flag, &arr); + return (arr.buf); +} + + +static int cb_to_vms(char *name, int flag, void *user_data) +{ + _simple_arr *parr = (_simple_arr *) user_data; + assert(parr); + if (parr->len + 1 >= parr->cap ) { + parr->cap += 8; + parr->buf = realloc(parr->buf, parr->cap * sizeof(char*)); + } + parr->buf[parr->len] = strdup(name); + assert(parr->buf[parr->len]); + ++parr->len; + parr->buf[parr->len] = NULL; + return (1); +} + +char **_to_vms(char *path, int allow_wild, int no_directory) +{ + _simple_arr arr; + arr.len = 0; + arr.cap = 8; + arr.buf = malloc(arr.cap * sizeof(char*)); + arr.buf[arr.len] = NULL; + + assert(path); + decc$to_vms(path, cb_to_vms, allow_wild, no_directory, &arr); + return (arr.buf); +} + + +char *_getenv(char *name, char *def) +{ + char *tmp, *val = NULL; + + assert(name); + val = getenv(name); + + if (val == NULL && def != NULL) { + val = def; + } + + if (val) { + tmp = strdup(val); + assert(tmp); + } else { + tmp = NULL; + } + + return (tmp); +} + + +long _sysconf(int name) +{ + return (sysconf(name)); +} + + +int _sleep(unsigned int nsec) +{ + return (sleep(nsec)); +} + +int _dlopen_test(char *name) { + void *handle = dlopen(name, 0); + if (handle) { + dlclose(handle); + return 1; + } + return 0; +} + +int _get_symbol(char *name, char** value) { + struct dsc$descriptor_s symbol_name; + symbol_name.dsc$w_length = strlen(name); + symbol_name.dsc$b_class = DSC$K_CLASS_S; + symbol_name.dsc$b_dtype = DSC$K_DTYPE_T; + symbol_name.dsc$a_pointer = name; + + char buffer[256]; + buffer[0] = 0; + struct dsc$descriptor_s symbol_value; + symbol_value.dsc$w_length = 255; + symbol_value.dsc$b_class = DSC$K_CLASS_S; + symbol_value.dsc$b_dtype = DSC$K_DTYPE_T; + symbol_value.dsc$a_pointer = buffer; + + short result_len = 0; + int status = lib$get_symbol(&symbol_name, &symbol_value, &result_len); + buffer[result_len] = 0; + *value = strdup(buffer); + return status; +} \ No newline at end of file diff --git a/Modules/vms/decc/decc.h b/Modules/vms/decc/decc.h new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZGVjYy9kZWNjLmg= --- /dev/null +++ b/Modules/vms/decc/decc.h @@ -0,0 +1,22 @@ +#ifndef __DECC_H__ +#define __DECC_H__ + +#ifdef __cplusplus + extern "C" { +#endif + +extern unsigned int _fix_time(long long); +extern unsigned int _unixtime(long long dt); +extern long long _vmstime(unsigned int); +extern char ** _from_vms(char *, int); +extern char ** _to_vms(char *, int, int); +extern char *_getenv(char *, char *); +extern long _sysconf(int); +extern int _sleep(unsigned int); +extern int _dlopen_test(char *name); +extern int _get_symbol(char *name, char** value); + +#ifdef __cplusplus + } +#endif +#endif diff --git a/Modules/vms/decc/decc.i b/Modules/vms/decc/decc.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZGVjYy9kZWNjLmk= --- /dev/null +++ b/Modules/vms/decc/decc.i @@ -0,0 +1,139 @@ +%module decc + +%{ +#include "decc.h" +%} + +%include "typemaps.i" +%include <cstring.i> +%cstring_output_allocate(char **OUTPUT, free(*$1)); + +%exception { + Py_BEGIN_ALLOW_THREADS + $action + Py_END_ALLOW_THREADS +} + +%typemap(out) char * +{ + if ($1 == NULL) { + $result = Py_None; + Py_INCREF($result); + } else { + $result = PyUnicode_DecodeUTF8($1, strlen($1), "surrogateescape"); + free($1); + } +} + +%typemap(out) char** { + int len,i; + if ($1 == NULL) { + $result = Py_None; + Py_INCREF($result); + } else { + len = 0; + while ($1[len]) len++; + $result = PyList_New(len); + for (i = 0; i < len; i++) { + PyList_SetItem($result, i, PyString_FromString($1[i])); + } + } +} + +%typemap(newfree) char ** { + if ($1 != NULL) { + int i; + i = 0; + while ($1[i]) { + free($1[i]); + ++i; + } + free($1); + } +} + +%constant int _SC_ARG_MAX = 100; +%constant int _SC_CHILD_MAX = 101; +%constant int _SC_CLK_TCK = 102; +%constant int _SC_NGROUPS_MAX = 103; +%constant int _SC_OPEN_MAX = 104; +%constant int _SC_STREAM_MAX = 105; +%constant int _SC_TZNAME_MAX = 106; +%constant int _SC_JOB_CONTROL = 107; +%constant int _SC_SAVED_IDS = 108; +%constant int _SC_VERSION = 109; +%constant int _SC_BC_BASE_MAX = 121; +%constant int _SC_BC_DIM_MAX = 122; +%constant int _SC_BC_SCALE_MAX = 123; +%constant int _SC_BC_STRING_MAX = 124; +%constant int _SC_COLL_WEIGHTS_MAX = 125; +%constant int _SC_EXPR_NEST_MAX = 126; +%constant int _SC_LINE_MAX = 127; +%constant int _SC_RE_DUP_MAX = 128; +%constant int _SC_2_VERSION = 129; +%constant int _SC_2_C_BIND = 130; +%constant int _SC_2_C_DEV = 131; +%constant int _SC_2_FORT_DEV = 132; +%constant int _SC_2_SW_DEV = 133; +%constant int _SC_2_FORT_RUN = 134; +%constant int _SC_2_LOCALEDEF = 135; +%constant int _SC_2_UPE = 136; +%constant int _SC_GETGR_R_SIZE_MAX = 150; +%constant int _SC_GETPW_R_SIZE_MAX = 151; +%constant int _SC_THREAD_DESTRUCTOR_ITERATIONS = 140; +%constant int _SC_THREAD_KEYS_MAX = 141; +%constant int _SC_THREAD_STACK_MIN = 142; +%constant int _SC_THREAD_THREADS_MAX = 143; +%constant int _SC_THREAD_SAFE_FUNCTIONS = 144; +%constant int _SC_THREADS = 145; +%constant int _SC_THREAD_ATTR_STACKSIZE = 146; +%constant int _SC_THREAD_PRIORITY_SCHEDULING = 147; +%constant int _SC_XOPEN_VERSION = 110; +%constant int _SC_PASS_MAX = 111; +%constant int _SC_XOPEN_CRYPT = 118; +%constant int _SC_XOPEN_ENH_I18N = 119; +%constant int _SC_XOPEN_SHM = 120; +%constant int _SC_PAGESIZE = 117; +%constant int _SC_PAGE_SIZE = 117; /* _SC_PAGESIZE */ +%constant int _SC_ATEXIT_MAX = 138; /* not in POSIX, but in XPG4 */ +%constant int _SC_IOV_MAX = 139; /* not in POSIX, but in XPG4 */ +%constant int _SC_XOPEN_UNIX = 148; +%constant int _SC_NPROC_CONF = 200; +%constant int _SC_NPROCESSORS_CONF = 200; /* _SC_NPROC_CONF */ +%constant int _SC_NPROC_ONLN = 201; +%constant int _SC_NPROCESSORS_ONLN = 201; /* _SC_NPROC_ONLN */ +%constant int _SC_2_C_VERSION = 129; /* _SC_2_VERSION */ +%constant int _SC_2_CHAR_TERM = 137; +%constant int _SC_DELAYTIMER_MAX = 112; +%constant int _SC_TIMER_MAX = 113; +%constant int _SC_MAPPED_FILES = 114; +%constant int _SC_FSYNC = 115; +%constant int _SC_TIMERS = 116; +%constant int _SC_CPU_CHIP_TYPE = 160; + +%rename(fix_time) _fix_time; +%rename(unixtime) _unixtime; +%rename(vmstime) _vmstime; +%rename(from_vms) _from_vms; +%rename(to_vms) _to_vms; +%rename(getenv) _getenv; +%rename(sysconf) _sysconf; +%rename(sleep) _sleep; +%rename(dlopen_test) _dlopen_test; +%rename(get_symbol) _get_symbol; + +%newobject _from_vms; +%newobject _to_vms; + +extern unsigned int _fix_time(long long); +extern unsigned int _unixtime(long long dt); +extern long long _vmstime(unsigned int); +extern char ** _from_vms(char *, int); +extern char ** _to_vms(char *, int, int); +extern char *_getenv(char *, char *); +extern long _sysconf(int); +extern int _sleep(unsigned int); +extern int _dlopen_test(char *name); +extern int _get_symbol(char *name, char** OUTPUT); + + diff --git a/Modules/vms/dmtdef/dmtdef.i b/Modules/vms/dmtdef/dmtdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZG10ZGVmL2RtdGRlZi5p --- /dev/null +++ b/Modules/vms/dmtdef/dmtdef.i @@ -0,0 +1,14 @@ +%module dmtdef + +%constant int DMT_M_NOUNLOAD = 0x1L; +%constant int DMT_M_UNIT = 0x2L; +%constant int DMT_M_ABORT = 0x4L; +%constant int DMT_M_CLUSTER = 0x8L; +%constant int DMT_M_UNLOAD = 0x10L; +%constant int DMT_M_OVR_CHECKS = 0x20L; +%constant int DMT_M_CHECK_ONLY = 0x40L; +%constant int DMT_M_REMOTE = 0x80L; +%constant int DMT_M_MINICOPY_REQUIRED = 0x100L; +%constant int DMT_M_MINICOPY_OPTIONAL = 0x200L; +%constant int DMT_M_FORCE = 0x400L; +%constant int DMT_S_DMTDEF = 2; diff --git a/Modules/vms/dpsdef/dpsdef.i b/Modules/vms/dpsdef/dpsdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZHBzZGVmL2Rwc2RlZi5p --- /dev/null +++ b/Modules/vms/dpsdef/dpsdef.i @@ -0,0 +1,3 @@ +%module dpsdef + +%constant int DPS__MP_PATHNAME = 1; diff --git a/Modules/vms/dscdef/dscdef.i b/Modules/vms/dscdef/dscdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZHNjZGVmL2RzY2RlZi5p --- /dev/null +++ b/Modules/vms/dscdef/dscdef.i @@ -0,0 +1,230 @@ +%module dscdef + +%constant int DSC_K_DTYPE_Z = 0; +%constant int DSC64_K_DTYPE_Z = 0; +%constant int DSC_K_DTYPE_BU = 2; +%constant int DSC64_K_DTYPE_BU = 2; +%constant int DSC_K_DTYPE_WU = 3; +%constant int DSC64_K_DTYPE_WU = 3; +%constant int DSC_K_DTYPE_LU = 4; +%constant int DSC64_K_DTYPE_LU = 4; +%constant int DSC_K_DTYPE_QU = 5; +%constant int DSC64_K_DTYPE_QU = 5; +%constant int DSC_K_DTYPE_OU = 25; +%constant int DSC64_K_DTYPE_OU = 25; +%constant int DSC_K_DTYPE_B = 6; +%constant int DSC64_K_DTYPE_B = 6; +%constant int DSC_K_DTYPE_W = 7; +%constant int DSC64_K_DTYPE_W = 7; +%constant int DSC_K_DTYPE_L = 8; +%constant int DSC64_K_DTYPE_L = 8; +%constant int DSC_K_DTYPE_Q = 9; +%constant int DSC64_K_DTYPE_Q = 9; +%constant int DSC_K_DTYPE_O = 26; +%constant int DSC64_K_DTYPE_O = 26; +%constant int DSC_K_DTYPE_F = 10; +%constant int DSC64_K_DTYPE_F = 10; +%constant int DSC_K_DTYPE_D = 11; +%constant int DSC64_K_DTYPE_D = 11; +%constant int DSC_K_DTYPE_G = 27; +%constant int DSC64_K_DTYPE_G = 27; +%constant int DSC_K_DTYPE_H = 28; +%constant int DSC64_K_DTYPE_H = 28; +%constant int DSC_K_DTYPE_FC = 12; +%constant int DSC64_K_DTYPE_FC = 12; +%constant int DSC_K_DTYPE_DC = 13; +%constant int DSC64_K_DTYPE_DC = 13; +%constant int DSC_K_DTYPE_GC = 29; +%constant int DSC64_K_DTYPE_GC = 29; +%constant int DSC_K_DTYPE_HC = 30; +%constant int DSC64_K_DTYPE_HC = 30; +%constant int DSC_K_DTYPE_FS = 52; +%constant int DSC64_K_DTYPE_FS = 52; +%constant int DSC_K_DTYPE_FT = 53; +%constant int DSC64_K_DTYPE_FT = 53; +%constant int DSC_K_DTYPE_FSC = 54; +%constant int DSC64_K_DTYPE_FSC = 54; +%constant int DSC_K_DTYPE_FTC = 55; +%constant int DSC64_K_DTYPE_FTC = 55; +%constant int DSC_K_DTYPE_FX = 57; +%constant int DSC64_K_DTYPE_FX = 57; +%constant int DSC_K_DTYPE_FXC = 58; +%constant int DSC64_K_DTYPE_FXC = 58; +%constant int DSC_K_DTYPE_CIT = 31; +%constant int DSC64_K_DTYPE_CIT = 31; +%constant int DSC_K_DTYPE_T = 14; +%constant int DSC64_K_DTYPE_T = 14; +%constant int DSC_K_DTYPE_VT = 37; +%constant int DSC64_K_DTYPE_VT = 37; +%constant int DSC_K_DTYPE_T2 = 38; +%constant int DSC64_K_DTYPE_T2 = 38; +%constant int DSC_K_DTYPE_NU = 15; +%constant int DSC64_K_DTYPE_NU = 15; +%constant int DSC_K_DTYPE_NL = 16; +%constant int DSC64_K_DTYPE_NL = 16; +%constant int DSC_K_DTYPE_NLO = 17; +%constant int DSC64_K_DTYPE_NLO = 17; +%constant int DSC_K_DTYPE_NR = 18; +%constant int DSC64_K_DTYPE_NR = 18; +%constant int DSC_K_DTYPE_NRO = 19; +%constant int DSC64_K_DTYPE_NRO = 19; +%constant int DSC_K_DTYPE_NZ = 20; +%constant int DSC64_K_DTYPE_NZ = 20; +%constant int DSC_K_DTYPE_P = 21; +%constant int DSC64_K_DTYPE_P = 21; +%constant int DSC_K_DTYPE_V = 1; +%constant int DSC64_K_DTYPE_V = 1; +%constant int DSC_K_DTYPE_VU = 34; +%constant int DSC64_K_DTYPE_VU = 34; +%constant int DSC_K_DTYPE_ZI = 22; +%constant int DSC64_K_DTYPE_ZI = 22; +%constant int DSC_K_DTYPE_ZEM = 23; +%constant int DSC64_K_DTYPE_ZEM = 23; +%constant int DSC_K_DTYPE_DSC = 24; +%constant int DSC64_K_DTYPE_DSC = 24; +%constant int DSC_K_DTYPE_BPV = 32; +%constant int DSC64_K_DTYPE_BPV = 32; +%constant int DSC_K_DTYPE_BLV = 33; +%constant int DSC64_K_DTYPE_BLV = 33; +%constant int DSC_K_DTYPE_ADT = 35; +%constant int DSC64_K_DTYPE_ADT = 35; +%constant int DSC_K_DTYPE_CAD = 178; +%constant int DSC64_K_DTYPE_CAD = 178; +%constant int DSC_K_DTYPE_ENT = 179; +%constant int DSC64_K_DTYPE_ENT = 179; +%constant int DSC_K_DTYPE_GBL = 180; +%constant int DSC64_K_DTYPE_GBL = 180; +%constant int DSC_K_DTYPE_EPT = 181; +%constant int DSC64_K_DTYPE_EPT = 181; +%constant int DSC_K_DTYPE_R11 = 182; +%constant int DSC64_K_DTYPE_R11 = 182; +%constant int DSC_K_DTYPE_FLD = 183; +%constant int DSC64_K_DTYPE_FLD = 183; +%constant int DSC_K_DTYPE_PCT = 184; +%constant int DSC64_K_DTYPE_PCT = 184; +%constant int DSC_K_DTYPE_DPC = 185; +%constant int DSC64_K_DTYPE_DPC = 185; +%constant int DSC_K_DTYPE_LBL = 186; +%constant int DSC64_K_DTYPE_LBL = 186; +%constant int DSC_K_DTYPE_SLB = 187; +%constant int DSC64_K_DTYPE_SLB = 187; +%constant int DSC_K_DTYPE_MOD = 188; +%constant int DSC64_K_DTYPE_MOD = 188; +%constant int DSC_K_DTYPE_EOM = 189; +%constant int DSC64_K_DTYPE_EOM = 189; +%constant int DSC_K_DTYPE_RTN = 190; +%constant int DSC64_K_DTYPE_RTN = 190; +%constant int DSC_K_DTYPE_EOR = 191; +%constant int DSC64_K_DTYPE_EOR = 191; +%constant int DSC_K_CLASS_Z = 0; +%constant int DSC64_K_CLASS_Z = 0; +%constant int DSC_K_CLASS_S = 1; +%constant int DSC64_K_CLASS_S = 1; +%constant int DSC_K_CLASS_D = 2; +%constant int DSC64_K_CLASS_D = 2; +%constant int DSC_K_CLASS_V = 3; +%constant int DSC64_K_CLASS_V = 3; +%constant int DSC_K_CLASS_A = 4; +%constant int DSC64_K_CLASS_A = 4; +%constant int DSC_K_CLASS_P = 5; +%constant int DSC64_K_CLASS_P = 5; +%constant int DSC_K_CLASS_PI = 6; +%constant int DSC64_K_CLASS_PI = 6; +%constant int DSC_K_CLASS_J = 7; +%constant int DSC64_K_CLASS_J = 7; +%constant int DSC_K_CLASS_JI = 8; +%constant int DSC_K_CLASS_SD = 9; +%constant int DSC64_K_CLASS_SD = 9; +%constant int DSC_K_CLASS_NCA = 10; +%constant int DSC64_K_CLASS_NCA = 10; +%constant int DSC_K_CLASS_VS = 11; +%constant int DSC64_K_CLASS_VS = 11; +%constant int DSC_K_CLASS_VSA = 12; +%constant int DSC64_K_CLASS_VSA = 12; +%constant int DSC_K_CLASS_UBS = 13; +%constant int DSC64_K_CLASS_UBS = 13; +%constant int DSC_K_CLASS_UBA = 14; +%constant int DSC64_K_CLASS_UBA = 14; +%constant int DSC_K_CLASS_SB = 15; +%constant int DSC64_K_CLASS_SB = 15; +%constant int DSC_K_CLASS_UBSB = 16; +%constant int DSC64_K_CLASS_UBSB = 16; +%constant int DSC_K_CLASS_BFA = 191; +%constant int DSC_S_DSCDEF = 14; +%constant int DSC_S_DSCDEF1 = 8; +%constant int DSC_K_Z_BLN = 8; +%constant int DSC_C_Z_BLN = 8; +%constant int DSC_K_S_BLN = 8; +%constant int DSC_C_S_BLN = 8; +%constant int DSC_K_D_BLN = 8; +%constant int DSC_C_D_BLN = 8; +%constant int DSC_K_P_BLN = 8; +%constant int DSC_C_P_BLN = 8; +%constant int DSC_K_J_BLN = 8; +%constant int DSC_C_J_BLN = 8; +%constant int DSC_K_VS_BLN = 8; +%constant int DSC_C_VS_BLN = 8; +%constant int DSC_S_DSCDEF2 = 8; +%constant int DSC_K_UBS_BLN = 12; +%constant int DSC_C_UBS_BLN = 12; +%constant int DSC_S_DSCDEF3 = 12; +%constant int DSC_S_DSCDEF4 = 12; +%constant int DSC_K_SD_BLN = 12; +%constant int DSC_C_SD_BLN = 12; +%constant int DSC_S_DSCDEF5 = 20; +%constant int DSC_S_DSCDEF6 = 28; +%constant int DSC_S_DSCDEF7 = 28; +%constant int DSC_K_PI_BLN = 12; +%constant int DSC_C_PI_BLN = 12; +%constant int DSC_K_JI_BLN = 12; +%constant int DSC_C_JI_BLN = 12; +%constant int DSC_S_DSCDEF8 = 12; +%constant int DSC_S_DSCDEF9 = 16; +%constant int DSC_S_DSCDEF10 = 20; +%constant int DSC64_S_DSCDEF64 = 16; +%constant int DSC64_S_LENGTH = 8; +%constant int DSC64_S_DSCDEF1_64 = 24; +%constant int DSC64_S_MAXSTRLEN = 8; +%constant int DSC64_S_POINTER = 8; +%constant int DSC64_K_Z_BLN = 24; +%constant int DSC64_C_Z_BLN = 24; +%constant int DSC64_K_S_BLN = 24; +%constant int DSC64_C_S_BLN = 24; +%constant int DSC64_K_D_BLN = 24; +%constant int DSC64_C_D_BLN = 24; +%constant int DSC64_K_P_BLN = 24; +%constant int DSC64_C_P_BLN = 24; +%constant int DSC64_K_J_BLN = 24; +%constant int DSC64_C_J_BLN = 24; +%constant int DSC64_K_VS_BLN = 24; +%constant int DSC64_C_VS_BLN = 24; +%constant int DSC64_S_DSCDEF2_64 = 24; +%constant int DSC64_S_BASE = 8; +%constant int DSC64_K_UBS_BLN = 32; +%constant int DSC64_C_UBS_BLN = 32; +%constant int DSC64_S_DSCDEF3_64 = 32; +%constant int DSC64_S_POS = 8; +%constant int DSC64_K_SD_BLN = 32; +%constant int DSC64_C_SD_BLN = 32; +%constant int DSC64_S_DSCDEF5_64 = 48; +%constant int DSC64_S_ARSIZE = 8; +%constant int DSC64_S_A0 = 8; +%constant int DSC64_S_DSCDEF6_64 = 64; +%constant int DSC64_S_V0 = 8; +%constant int DSC64_S_S1 = 8; +%constant int DSC64_S_S2 = 8; +%constant int DSC64_S_DSCDEF7_64 = 64; +%constant int DSC64_S_M1 = 8; +%constant int DSC64_S_M2 = 8; +%constant int DSC64_K_PI_BLN = 32; +%constant int DSC64_C_PI_BLN = 32; +%constant int DSC64_K_JI_BLN = 32; +%constant int DSC64_C_JI_BLN = 32; +%constant int DSC64_S_DSCDEF8_64 = 32; +%constant int DSC64_S_FRAME = 8; +%constant int DSC64_S_DSCDEF9_64 = 40; +%constant int DSC64_S_SB_L1 = 8; +%constant int DSC64_S_SB_U1 = 8; +%constant int DSC64_S_DSCDEF10_64 = 48; +%constant int DSC64_S_UBSB_L1 = 8; +%constant int DSC64_S_UBSB_U1 = 8; diff --git a/Modules/vms/dtr/dtr.c b/Modules/vms/dtr/dtr.c new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZHRyL2R0ci5j --- /dev/null +++ b/Modules/vms/dtr/dtr.c @@ -0,0 +1,501 @@ +#include <stdio.h> +#include <str$routines.h> +#include <lib$routines.h> +#include <stdlib.h> +#include <string.h> +#include <assert.h> +#include <ssdef.h> +#include <unixlib.h> +#include "dtr.h" +#include "lcl.h" + + +#ifndef dtr_Assert +#define dtr_Assert(x) \ + do { \ + if ((!(x))) { \ + fprintf(stderr, "Assertion failed: %s (%s: %d)\n", #x, __FILE__, __LINE__); \ + abort(); \ + } \ + } while (0) +#endif + +#ifndef OKAY +#define OKAY(status) (((status) & 1) != 0) +#endif + + +extern void REC_load(void *, void *, unsigned short); +extern void REC_pack(void *, unsigned short, void *, unsigned short *); + +#define MSG_BUF_LEN 255 +#define AUX_BUF_LEN 255 +#define TMP_BUF_LEN 255 + + +unsigned int _command(unsigned int obj, char *str, int *condition, unsigned short *state) +{ + DTR_access_block *dab = (DTR_access_block *) obj; + unsigned int status; + struct dsc$descriptor_s str_dsc; + + dtr_Assert(dab); + dtr_Assert(str); + + str_dsc.dsc$w_length = strlen(str); + str_dsc.dsc$b_class = DSC$K_CLASS_S; + str_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + str_dsc.dsc$a_pointer = str; + + status = dtr$command(dab, &str_dsc); + + if (condition) { + *condition = dab->dab$l_condition; + } + + if (state) { + *state = dab->dab$w_state; + } + + return (status); +} + + +unsigned int _continue(unsigned int obj, int *condition, unsigned short *state) +{ + DTR_access_block *dab = (DTR_access_block *) obj; + unsigned int status; + + dtr_Assert(dab); + status = dtr$continue(dab); + + if (condition) { + *condition = dab->dab$l_condition; + } + + if (state) { + *state = dab->dab$w_state; + } + + return (status); +} + + +unsigned int _create_udk(unsigned int obj, char *str, short index, short context) +{ + DTR_access_block *dab = (DTR_access_block *) obj; + unsigned int status; + struct dsc$descriptor_s str_dsc; + + dtr_Assert(dab); + dtr_Assert(str); + + str_dsc.dsc$w_length = strlen(str); + str_dsc.dsc$b_class = DSC$K_CLASS_S; + str_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + str_dsc.dsc$a_pointer = str; + + status = dtr$create_udk(dab, &str_dsc, &index, &context); + return (status); +} + + + +unsigned int _end_udk(unsigned int obj) +{ + DTR_access_block *dab = (DTR_access_block *) obj; + unsigned int status; + + dtr_Assert(dab); + status = dtr$end_udk(dab); + return (status); +} + + +unsigned int _finish(unsigned int obj) +{ + DTR_access_block *dab = (DTR_access_block *) obj; + unsigned int status; + + dtr_Assert(dab); + status = dtr$finish(dab); + + if (dab->dab$a_msg_buf) { + free(dab->dab$a_msg_buf); + } + + if (dab->dab$a_aux_buf) { + free(dab->dab$a_aux_buf); + } + + free(dab); + return (status); +} + + +unsigned int _get_port(unsigned int obj, void *loc) +{ + DTR_access_block *dab = (DTR_access_block *) obj; + unsigned int status; + LCL_rec *rec = (LCL_rec *) loc; + + dtr_Assert(dab); + dtr_Assert(rec); + + status = dtr$get_port(dab, rec->buf); + + if (OKAY(status)) { + REC_load(rec, rec->buf, rec->len); + } + + return (status); +} + + +unsigned int _get_string(unsigned int obj, int type, char **str, char *cmp) +{ + DTR_access_block *dab = (DTR_access_block *) obj; + unsigned int status; + char tmp[TMP_BUF_LEN + 1]; + unsigned short len; + struct dsc$descriptor_s tmp_dsc; + struct dsc$descriptor_s cmp_dsc; + + dtr_Assert(dab); + dtr_Assert(str); + + if (cmp) { + cmp_dsc.dsc$w_length = strlen(cmp); + cmp_dsc.dsc$b_class = DSC$K_CLASS_S; + cmp_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + cmp_dsc.dsc$a_pointer = cmp; + } + + tmp_dsc.dsc$w_length = TMP_BUF_LEN; + tmp_dsc.dsc$b_class = DSC$K_CLASS_S; + tmp_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + tmp_dsc.dsc$a_pointer = tmp; + + status = + dtr$get_string(dab, (long *) &type, &tmp_dsc, &len, + cmp ? &cmp_dsc : NULL); + + if (OKAY(status)) { + tmp[len] = '\0'; + dtr_Assert((*str = strdup(tmp))); + } + + return (status); +} + + +unsigned int _info(unsigned int obj, + int id, char code, int *ret, char **str, int index) +{ + DTR_access_block *dab = (DTR_access_block *) obj; + unsigned int status; + char tmp[TMP_BUF_LEN + 1]; + unsigned short len; + struct dsc$descriptor_s tmp_dsc; + + dtr_Assert(dab); + dtr_Assert(ret); + + if (str) { + tmp_dsc.dsc$w_length = TMP_BUF_LEN; + tmp_dsc.dsc$b_class = DSC$K_CLASS_S; + tmp_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + tmp_dsc.dsc$a_pointer = tmp; + } + + status = + dtr$info(dab, (long *) &id, &code, (long *) ret, + str ? &tmp_dsc : NULL, index); + + if (OKAY(status)) { + if (str) { + str$trim(&tmp_dsc, &tmp_dsc, &len); + tmp[len] = '\0'; + dtr_Assert((*str = strdup(tmp))); + } + } + + return (status); +} + + +unsigned int _init(unsigned int *obj, int size, int options) +{ + DTR_access_block *dab = NULL; + unsigned int status; + +#ifdef __PYTHON + int old = -1, idx = -1; + if ((idx = decc$feature_get_index("DECC$UNIX_LEVEL")) >= 0) { + old = decc$feature_set_value(idx, 1, 0); + } +#endif + + dtr_Assert(obj); + dtr_Assert((dab = malloc(sizeof(DTR_access_block)))); + + dtr_Assert((dab->dab$a_msg_buf = malloc(MSG_BUF_LEN + 1))); + dab->dab$w_msg_buf_len = MSG_BUF_LEN; + + dtr_Assert((dab->dab$a_aux_buf = malloc(MSG_BUF_LEN + 1))); + dab->dab$w_aux_buf_len = MSG_BUF_LEN; + + status = + dtr$init(dab, size ? &size : NULL, NULL, NULL, + options ? &options : NULL); + +#ifdef __PYTHON + if (idx >= 0) { + decc$feature_set_value(idx, 1, old); + } +#endif + + if (!OKAY(status)) { + free(dab->dab$a_msg_buf); + free(dab->dab$a_aux_buf); + free(dab); + return (status); + } + + *obj = (unsigned int) dab; + return (status); +} + + +unsigned int _lookup(unsigned int obj, char type, int *id, char *name) +{ + DTR_access_block *dab = (DTR_access_block *) obj; + unsigned int status; + struct dsc$descriptor_s name_dsc; + + dtr_Assert(dab); + dtr_Assert(id); + + if (name) { + name_dsc.dsc$w_length = strlen(name); + name_dsc.dsc$b_class = DSC$K_CLASS_S; + name_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + name_dsc.dsc$a_pointer = name; + } + + status = dtr$lookup(dab, &type, (long *) id, name ? &name_dsc : NULL); + return (status); +} + + +unsigned int _port_eof(unsigned int obj) +{ + DTR_access_block *dab = (DTR_access_block *) obj; + unsigned int status; + + dtr_Assert(dab); + status = dtr$port_eof(dab); + return (status); +} + + +unsigned int _put_port(unsigned int obj, void *loc) +{ + DTR_access_block *dab = (DTR_access_block *) obj; + unsigned int status; + LCL_rec *rec = (LCL_rec *) loc; + unsigned short len; + + dtr_Assert(dab); + dtr_Assert(rec); + + REC_pack(rec->buf, rec->len, loc, &len); + status = dtr$put_port(dab, rec->buf); + return (status); +} + + + +unsigned int _put_value(unsigned int obj, char *val) +{ + DTR_access_block *dab = (DTR_access_block *) obj; + unsigned int status; + struct dsc$descriptor_s val_dsc; + + dtr_Assert(dab); + + if (val) { + val_dsc.dsc$w_length = strlen(val); + val_dsc.dsc$b_class = DSC$K_CLASS_S; + val_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + val_dsc.dsc$a_pointer = val; + } + + status = dtr$put_value(dab, val ? &val_dsc : NULL); + return (status); +} + + +unsigned int _unwind(unsigned int obj) +{ + DTR_access_block *dab = (DTR_access_block *) obj; + dtr_Assert(dab); + return (dtr$unwind(dab)); +} + + +unsigned int _condition(unsigned int obj) +{ + DTR_access_block *dab = (DTR_access_block *) obj; + dtr_Assert(dab); + return (dab->dab$l_condition); +} + + +unsigned int _state(unsigned int obj) +{ + DTR_access_block *dab = (DTR_access_block *) obj; + dtr_Assert(dab); + return (dab->dab$w_state); +} + + +char *_msg_buf(unsigned int obj) +{ + DTR_access_block *dab = (DTR_access_block *) obj; + unsigned short len; + struct dsc$descriptor_s tmp_dsc; + char *val; + + tmp_dsc.dsc$w_length = MSG_BUF_LEN; + tmp_dsc.dsc$b_class = DSC$K_CLASS_S; + tmp_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + tmp_dsc.dsc$a_pointer = dab->dab$a_msg_buf; + + str$trim(&tmp_dsc, &tmp_dsc, &len); + + dab->dab$a_msg_buf[len] = '\0'; + dtr_Assert((val = strdup(dab->dab$a_msg_buf))); + return (val); +} + + +char *_aux_buf(unsigned int obj) +{ + DTR_access_block *dab = (DTR_access_block *) obj; + unsigned short len; + struct dsc$descriptor_s tmp_dsc; + char *val; + + tmp_dsc.dsc$w_length = AUX_BUF_LEN; + tmp_dsc.dsc$b_class = DSC$K_CLASS_S; + tmp_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + tmp_dsc.dsc$a_pointer = dab->dab$a_aux_buf; + + str$trim(&tmp_dsc, &tmp_dsc, &len); + + dab->dab$a_aux_buf[len] = '\0'; + dtr_Assert((val = strdup(dab->dab$a_aux_buf))); + return (val); +} + + +unsigned int _get_options(unsigned int obj) +{ + DTR_access_block *dab = (DTR_access_block *) obj; + dtr_Assert(dab); + return (dab->dab$l_options); +} + + +unsigned int _set_options(unsigned int obj, unsigned int options) +{ + DTR_access_block *dab = (DTR_access_block *) obj; + dtr_Assert(dab); + dab->dab$l_options = dab->dab$l_options | options; + return (dab->dab$l_options); +} + + +unsigned int _clear_options(unsigned int obj, unsigned int options) +{ + DTR_access_block *dab = (DTR_access_block *) obj; + dtr_Assert(dab); + dab->dab$l_options = dab->dab$l_options & (~options); + return (dab->dab$l_options); +} + + +unsigned int _get_rec_len(unsigned int obj) +{ + DTR_access_block *dab = (DTR_access_block *) obj; + dtr_Assert(dab); + return (dab->dab$w_rec_length); +} + + +unsigned int _get_flags(unsigned int obj) +{ + DTR_access_block *dab = (DTR_access_block *) obj; + dtr_Assert(dab); + return (dab->dab$l_flags); +} + + +unsigned int _get_udk_index(unsigned int obj) +{ + DTR_access_block *dab = (DTR_access_block *) obj; + dtr_Assert(dab); + return (dab->dab$w_udk_index); +} + + + +unsigned int _dtr(unsigned int obj, int opt) +{ + DTR_access_block *dab = (DTR_access_block *) obj; + dtr_Assert(dab); + return (dtr$dtr(dab, (long *) &opt)); +} + + +unsigned int _skip(unsigned int obj, unsigned int n) +{ + DTR_access_block *dab = (DTR_access_block *) obj; + int i; + unsigned int status = SS$_NORMAL; + + dtr_Assert(dab); + + for (i = 0; i < n; i++) { + if (dab->dab$w_state != DTR$K_STL_LINE) { + break; + } + + status = dtr$continue(dab); + + if (! OKAY(status)) { + break; + } + } + + return (status); + +} + + + +extern int rsscanf(const char *buffer, const char *format, char ***argv); + +char **_row(unsigned int obj, char *fmt) +{ + DTR_access_block *dab = (DTR_access_block *) obj; + char **arr = NULL; + + dtr_Assert(dab); + dtr_Assert(fmt); + + rsscanf(dab->dab$a_msg_buf, fmt, &arr); + dtr$continue(dab); + return (arr); +} diff --git a/Modules/vms/dtr/dtr.h b/Modules/vms/dtr/dtr.h new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZHRyL2R0ci5o --- /dev/null +++ b/Modules/vms/dtr/dtr.h @@ -0,0 +1,50 @@ +#ifndef __DTR_H__ +#define __DTR_H__ + +#pragma names save +#pragma names uppercase +#include "dab.h" /* DATATRIEVE definitions */ + + + + + +#pragma names restore + + +#ifdef __cplusplus +extern "C" { +#endif + + extern unsigned int _command(unsigned int, char *, int *, unsigned short *); + extern unsigned int _continue(unsigned int, int *, unsigned short *); + extern unsigned int _create_udk(unsigned int, char *, short, short); + extern unsigned int _end_udk(unsigned int); + extern unsigned int _finish(unsigned int); + extern unsigned int _get_port(unsigned int, void *); + extern unsigned int _get_string(unsigned int, int, char **, char *); + extern unsigned int _info(unsigned int, int, char, int *, char **, int); + extern unsigned int _init(unsigned int *, int, int); + extern unsigned int _lookup(unsigned int, char, int *, char *); + extern unsigned int _port_eof(unsigned int); + extern unsigned int _put_port(unsigned int, void *); + extern unsigned int _put_value(unsigned int, char *); + extern unsigned int _unwind(unsigned int); + extern unsigned int _condition(unsigned int); + extern unsigned int _state(unsigned int); + extern char *_msg_buf(unsigned int); + extern char *_aux_buf(unsigned int); + extern unsigned int _get_options(unsigned int); + extern unsigned int _set_options(unsigned int, unsigned int); + extern unsigned int _clear_options(unsigned int, unsigned int); + extern unsigned int _get_rec_len(unsigned int); + extern unsigned int _get_flags(unsigned int); + extern unsigned int _get_udk_index(unsigned int); + extern unsigned int _dtr(unsigned int, int); + extern unsigned int _skip(unsigned int, unsigned int); + extern char **_row(unsigned int, char *); + +#ifdef __cplusplus +} +#endif +#endif diff --git a/Modules/vms/dtr/dtr.i b/Modules/vms/dtr/dtr.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZHRyL2R0ci5p --- /dev/null +++ b/Modules/vms/dtr/dtr.i @@ -0,0 +1,243 @@ +%module dtr + +%{ +#include "dtr.h" +%} + +%include "typemaps.i" +%include <cstring.i> +%cstring_output_allocate(char **OUTPUT, free(*$1)); + +%typemap(out) char * +{ + resultobj = SWIG_FromCharPtr((const char *)result); + free(result); +} + +%typemap(out) char** { + int len,i; + if ($1 == NULL) { + $result = Py_None; + } else { + len = 0; + while ($1[len]) len++; + $result = PyList_New(len); + for (i = 0; i < len; i++) { + PyList_SetItem($result, i, PyString_FromString($1[i])); + free($1[i]); + } + free($1); + } +} + +%constant int _K_STL_CMD = DTR$K_STL_CMD; +%constant int _K_STL_PRMPT = DTR$K_STL_PRMPT; +%constant int _K_STL_LINE = DTR$K_STL_LINE; +%constant int _K_STL_MSG = DTR$K_STL_MSG; +%constant int _K_STL_PGET = DTR$K_STL_PGET; +%constant int _K_STL_PPUT = DTR$K_STL_PPUT; +%constant int _K_STL_CONT = DTR$K_STL_CONT; +%constant int _K_STL_UDK = DTR$K_STL_UDK; +%constant int _K_STL_END_UDK = DTR$K_STL_END_UDK; + +%constant int _K_SEMI_COLON_OPT = DTR_K_SEMI_COLON_OPT; +%constant int _K_UNQUOTED_LIT = DTR_K_UNQUOTED_LIT; +%constant int _K_SYNTAX_PROMPT = DTR_K_SYNTAX_PROMPT; +%constant int _K_IMMED_RETURN = DTR_K_IMMED_RETURN; +%constant int _K_FORMS_ENABLE = DTR_K_FORMS_ENABLE; +%constant int _K_VERIFY = DTR_K_VERIFY; +%constant int _K_BIG_ENDIAN = DTR_K_BIG_ENDIAN; +%constant int _K_IEEE_FLOAT = DTR_K_IEEE_FLOAT; +%constant int _K_CONTEXT_SEARCH = DTR_K_CONTEXT_SEARCH; +%constant int _K_HYPHEN_DISABLED = DTR_K_HYPHEN_DISABLED; +%constant int _K_MORE_COMMANDS = DTR_K_MORE_COMMANDS; +%constant int _K_ABORT = DTR_K_ABORT; +%constant int _K_LOCK_WAIT = DTR_K_LOCK_WAIT; +%constant int _K_FN_PORT_SUPPORT = DTR_K_FN_PORT_SUPPORT; +%constant int _K_DATE_STR = DTR_K_DATE_STR; +%constant int _K_RET_ON_PRINT_ERROR = DTR_K_RET_ON_PRINT_ERROR; +%constant int _K_GET_ROUTINES_SUPPORT = DTR_K_GET_ROUTINES_SUPPORT; + +%constant int _M_OPT_CMD = DTR$M_OPT_CMD; +%constant int _M_OPT_PRMPT = DTR$M_OPT_PRMPT; +%constant int _M_OPT_LINE = DTR$M_OPT_LINE; +%constant int _M_OPT_MSG = DTR$M_OPT_MSG; +%constant int _M_OPT_PGET = DTR$M_OPT_PGET; +%constant int _M_OPT_PPUT = DTR$M_OPT_PPUT; +%constant int _M_OPT_CONT = DTR$M_OPT_CONT; +%constant int _M_OPT_UDK = DTR$M_OPT_UDK; +%constant int _M_OPT_DTR_UDK = DTR$M_OPT_DTR_UDK; +%constant int _M_OPT_END_UDK = DTR$M_OPT_END_UDK; +%constant int _M_OPT_UNWIND = DTR$M_OPT_UNWIND; +%constant int _M_OPT_CONTROL_C = DTR$M_OPT_CONTROL_C; +%constant int _M_OPT_STARTUP = DTR$M_OPT_STARTUP; +%constant int _M_OPT_FOREIGN = DTR$M_OPT_FOREIGN; +%constant int _M_OPT_BANNER = DTR$M_OPT_BANNER; +%constant int _M_OPT_REMOVE_CTLC = DTR$M_OPT_REMOVE_CTLC; +%constant int _M_OPT_KEYDEFS = DTR$M_OPT_KEYDEFS; + +%constant int _K_UDK_SET = DTR$K_UDK_SET; +%constant int _K_UDK_SET_NO = DTR$K_UDK_SET_NO; +%constant int _K_UDK_SHOW = DTR$K_UDK_SHOW; +%constant int _K_UDK_STATEMENT = DTR$K_UDK_STATEMENT; +%constant int _K_UDK_COMMAND = DTR$K_UDK_COMMAND; + +%constant int _K_TOK_TOKEN = DTR$K_TOK_TOKEN; +%constant int _K_TOK_PICTURE = DTR$K_TOK_PICTURE; +%constant int _K_TOK_FILENAME = DTR$K_TOK_FILENAME; +%constant int _K_TOK_COMMAND = DTR$K_TOK_COMMAND; +%constant int _K_TOK_TEST_TOKEN = DTR$K_TOK_TEST_TOKEN; +%constant int _K_TOK_LIST_ELEMENT = DTR$K_TOK_LIST_ELEMENT; +%constant int _K_TOK_TEST_EOL = DTR$K_TOK_TEST_EOL; + +%constant int _SUCCESS = DTR_SUCCESS; + +%constant int _K_INF_TYPE_DOMAIN = DTR$K_INF_TYPE_DOMAIN; +%constant int _K_INF_TYPE_COLLECTION = DTR$K_INF_TYPE_COLLECTION; +%constant int _K_INF_TYPE_KEYWORD = DTR$K_INF_TYPE_KEYWORD; +%constant int _K_INF_TYPE_DIC_NAME = DTR$K_INF_TYPE_DIC_NAME; +%constant int _K_INF_TYPE_GLV = DTR$K_INF_TYPE_GLV; +%constant int _K_INF_TYPE_PLOT = DTR$K_INF_TYPE_PLOT; + +%constant int _K_INF_DOM_FLD = DTR$K_INF_DOM_FLD; +%constant int _K_INF_DOM_FORM = DTR$K_INF_DOM_FORM; +%constant int _K_INF_DOM_SHARE = DTR$K_INF_DOM_SHARE; +%constant int _K_INF_DOM_ACCESS = DTR$K_INF_DOM_ACCESS; +%constant int _K_INF_DOM_NAME = DTR$K_INF_DOM_NAME; +%constant int _K_INF_DOM_NEXT_DOM = DTR$K_INF_DOM_NEXT_DOM; +%constant int _K_INF_DOM_SSC = DTR$K_INF_DOM_SSC; +%constant int _K_INF_DOM_REC_LEN = DTR$K_INF_DOM_REC_LEN; + +%constant int _K_INF_FLD_NAME = DTR$K_INF_FLD_NAME; +%constant int _K_INF_FLD_QNAME = DTR$K_INF_FLD_QNAME; +%constant int _K_INF_FLD_PICTURE = DTR$K_INF_FLD_PICTURE; +%constant int _K_INF_FLD_EDIT = DTR$K_INF_FLD_EDIT; +%constant int _K_INF_FLD_DTYPE = DTR$K_INF_FLD_DTYPE; +%constant int _K_INF_FLD_OFFSET = DTR$K_INF_FLD_OFFSET; +%constant int _K_INF_FLD_LENGTH = DTR$K_INF_FLD_LENGTH; +%constant int _K_INF_FLD_SCALE = DTR$K_INF_FLD_SCALE; +%constant int _K_INF_FLD_CHILD = DTR$K_INF_FLD_CHILD; +%constant int _K_INF_FLD_CNT = DTR$K_INF_FLD_CNT; +%constant int _K_INF_FLD_LIST = DTR$K_INF_FLD_LIST; +%constant int _K_INF_FLD_REDEFINES = DTR$K_INF_FLD_REDEFINES; +%constant int _K_INF_FLD_VIRTUAL = DTR$K_INF_FLD_VIRTUAL; +%constant int _K_INF_FLD_FILLER = DTR$K_INF_FLD_FILLER; +%constant int _K_INF_FLD_MISSING = DTR$K_INF_FLD_MISSING; +%constant int _K_INF_FLD_MISSING_TXT = DTR$K_INF_FLD_MISSING_TXT; +%constant int _K_INF_FLD_SEG_STRING = DTR$K_INF_FLD_SEG_STRING; + +%constant int _K_INF_COL_CURSOR = DTR$K_INF_COL_CURSOR; +%constant int _K_INF_COL_SIZE = DTR$K_INF_COL_SIZE; +%constant int _K_INF_COL_FLD = DTR$K_INF_COL_FLD; +%constant int _K_INF_COL_DROPPED = DTR$K_INF_COL_DROPPED; +%constant int _K_INF_COL_ERASED = DTR$K_INF_COL_ERASED; +%constant int _K_INF_COL_INVISIBLE = DTR$K_INF_COL_INVISIBLE; +%constant int _K_INF_COL_NAME = DTR$K_INF_COL_NAME; +%constant int _K_INF_COL_NEXT_COL = DTR$K_INF_COL_NEXT_COL; + +%constant int _K_INF_GLV_FIRST_DOM = DTR$K_INF_GLV_FIRST_DOM; +%constant int _K_INF_GLV_FIRST_COL = DTR$K_INF_GLV_FIRST_COL; +%constant int _K_INF_GLV_FIRST_SSC = DTR$K_INF_GLV_FIRST_SSC; +%constant int _K_INF_GLV_DEF_DIC = DTR$K_INF_GLV_DEF_DIC; + +%constant int _K_INF_FRM_NAME = DTR$K_INF_FRM_NAME; +%constant int _K_INF_FRM_LIBRARY = DTR$K_INF_FRM_LIBRARY; + +%constant int _K_INF_SSC_NAME = DTR$K_INF_SSC_NAME; +%constant int _K_INF_SSC_SET = DTR$K_INF_SSC_SET; +%constant int _K_INF_SSC_NEXT = DTR$K_INF_SSC_NEXT; + +%constant int _K_INF_SET_NAME = DTR$K_INF_SET_NAME; +%constant int _K_INF_SET_NEXT = DTR$K_INF_SET_NEXT; +%constant int _K_INF_SET_SDP = DTR$K_INF_SET_SDP; +%constant int _K_INF_SET_SINGULAR = DTR$K_INF_SET_SINGULAR; + +%constant int _K_INF_SDP_NEXT = DTR$K_INF_SDP_NEXT; +%constant int _K_INF_SDP_DOMAIN = DTR$K_INF_SDP_DOMAIN; +%constant int _K_INF_SDP_TENANCY = DTR$K_INF_SDP_TENANCY; +%constant int _K_INF_SDP_INSERT = DTR$K_INF_SDP_INSERT; +%constant int _K_INF_SDP_RETAIN = DTR$K_INF_SDP_RETAIN; + +%constant int _K_INF_FLD_QHDR = DTR$K_INF_FLD_QHDR; + +%constant int _K_INF_HDR_CNT = DTR$K_INF_HDR_CNT; +%constant int _K_INF_HDR_STRING = DTR$K_INF_HDR_STRING; + +%constant int _K_INF_GLV_STA_OBJ = DTR$K_INF_GLV_STA_OBJ; +%constant int _K_INF_GLV_STA_CNT = DTR$K_INF_GLV_STA_CNT; +%constant int _K_INF_GLV_STA_LINE = DTR$K_INF_GLV_STA_LINE; + +%constant int _K_INF_PLO_CNT = DTR$K_INF_PLO_CNT; +%constant int _K_INF_PLO_PAI = DTR$K_INF_PLO_PAI; + +%constant int _K_INF_PAI_PROMPT = DTR$K_INF_PAI_PROMPT; +%constant int _K_INF_PAI_DTYPE = DTR$K_INF_PAI_DTYPE; + +%constant int _K_INF_DOM_ACCESS_READ = DTR$K_INF_DOM_ACCESS_READ; +%constant int _K_INF_DOM_ACCESS_WRITE = DTR$K_INF_DOM_ACCESS_WRITE; +%constant int _K_INF_DOM_ACCESS_MODIFY = DTR$K_INF_DOM_ACCESS_MODIFY; +%constant int _K_INF_DOM_ACCESS_EXTEND = DTR$K_INF_DOM_ACCESS_EXTEND; + +%constant int _K_INF_DOM_SHARE_EXCLUSIVE = DTR$K_INF_DOM_SHARE_EXCLUSIVE; +%constant int _K_INF_DOM_SHARE_SHARED = DTR$K_INF_DOM_SHARE_SHARED; +%constant int _K_INF_DOM_SHARE_PROTECT = DTR$K_INF_DOM_SHARE_PROTECT; + +%constant int _NTS = DTR_NTS; + +%rename(command) _command; +%rename(cont) _continue; +%rename(create_udk) _create_udk; +%rename(dtr) _dtr; +%rename(end_udk) _end_udk; +%rename(finish) _finish; +%rename(get_port) _get_port; +%rename(get_string) _get_string; +%rename(info) _info; +%rename(init) _init; +%rename(lookup) _lookup; +%rename(port_eof) _port_eof; +%rename(put_port) _put_port; +%rename(put_value) _put_value; +%rename(unwind) _unwind; +%rename(condition) _condition; +%rename(state) _state; +%rename(msg_buf) _msg_buf; +%rename(aux_buf) _aux_buf; +%rename(get_options) _get_options; +%rename(set_options) _set_options; +%rename(clear_options) _clear_options; +%rename(get_rec_len) _get_rec_len; +%rename(get_flags) _get_flags; +%rename(get_udk_index) _get_udk_index; +%rename(dtr) _dtr; +%rename(skip) _skip; +%rename(row) _row; + +unsigned int _command(unsigned int, char *, int *OUTPUT, unsigned short *OUTPUT); +unsigned int _continue(unsigned int, int *OUTPUT, unsigned short *OUTPUT); +unsigned int _create_udk(unsigned int, char *, short, short); +unsigned int _end_udk(unsigned int); +unsigned int _finish(unsigned int); +unsigned int _get_port(unsigned int, void *); +unsigned int _get_string(unsigned int, int, char **OUTPUT, char *); +unsigned int _info(unsigned int, int, char, int *OUTPUT, char **OUTPUT, int); +unsigned int _init(unsigned int *OUTPUT, int, int); +unsigned int _lookup(unsigned int, char, int *OUTPUT, char *); +unsigned int _port_eof(unsigned int); +unsigned int _put_port(unsigned int, void *); +unsigned int _put_value(unsigned int, char *); +unsigned int _unwind(unsigned int); +unsigned int _condition(unsigned int); +unsigned int _state(unsigned int); +char *_msg_buf(unsigned int); +char *_aux_buf(unsigned int); +unsigned int _get_options(unsigned int); +unsigned int _set_options(unsigned int, unsigned int); +unsigned int _clear_options(unsigned int, unsigned int); +unsigned int _get_rec_len(unsigned int); +unsigned int _get_flags(unsigned int); +unsigned int _get_udk_index(unsigned int); +unsigned int _dtr(unsigned int, int); +unsigned int _skip(unsigned int, unsigned int); +char **_row(unsigned int, char *); + diff --git a/Modules/vms/dtr/dtr.py b/Modules/vms/dtr/dtr.py new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZHRyL2R0ci5weQ== --- /dev/null +++ b/Modules/vms/dtr/dtr.py @@ -0,0 +1,593 @@ +# This file was automatically generated by SWIG (http://www.swig.org). +# Version 3.0.5 +# +# Do not make changes to this file unless you know what you are doing--modify +# the SWIG interface file instead. + + + + + +from sys import version_info +if version_info >= (2, 6, 0): + def swig_import_helper(): + from os.path import dirname + import imp + fp = None + try: + fp, pathname, description = imp.find_module('_dtr', [dirname(__file__)]) + except ImportError: + import _dtr + return _dtr + if fp is not None: + try: + _mod = imp.load_module('_dtr', fp, pathname, description) + finally: + fp.close() + return _mod + _dtr = swig_import_helper() + del swig_import_helper +else: + import _dtr +del version_info +try: + _swig_property = property +except NameError: + pass # Python < 2.2 doesn't have 'property'. + + +def _swig_setattr_nondynamic(self, class_type, name, value, static=1): + if (name == "thisown"): + return self.this.own(value) + if (name == "this"): + if type(value).__name__ == 'SwigPyObject': + self.__dict__[name] = value + return + method = class_type.__swig_setmethods__.get(name, None) + if method: + return method(self, value) + if (not static): + object.__setattr__(self, name, value) + else: + raise AttributeError("You cannot add attributes to %s" % self) + + +def _swig_setattr(self, class_type, name, value): + return _swig_setattr_nondynamic(self, class_type, name, value, 0) + + +def _swig_getattr_nondynamic(self, class_type, name, static=1): + if (name == "thisown"): + return self.this.own() + method = class_type.__swig_getmethods__.get(name, None) + if method: + return method(self) + if (not static): + return object.__getattr__(self, name) + else: + raise AttributeError(name) + +def _swig_getattr(self, class_type, name): + return _swig_getattr_nondynamic(self, class_type, name, 0) + + +def _swig_repr(self): + try: + strthis = "proxy of " + self.this.__repr__() + except: + strthis = "" + return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,) + +try: + _object = object + _newclass = 1 +except AttributeError: + class _object: + pass + _newclass = 0 + + + +_dtr._K_STL_CMD_swigconstant(_dtr) +_K_STL_CMD = _dtr._K_STL_CMD + +_dtr._K_STL_PRMPT_swigconstant(_dtr) +_K_STL_PRMPT = _dtr._K_STL_PRMPT + +_dtr._K_STL_LINE_swigconstant(_dtr) +_K_STL_LINE = _dtr._K_STL_LINE + +_dtr._K_STL_MSG_swigconstant(_dtr) +_K_STL_MSG = _dtr._K_STL_MSG + +_dtr._K_STL_PGET_swigconstant(_dtr) +_K_STL_PGET = _dtr._K_STL_PGET + +_dtr._K_STL_PPUT_swigconstant(_dtr) +_K_STL_PPUT = _dtr._K_STL_PPUT + +_dtr._K_STL_CONT_swigconstant(_dtr) +_K_STL_CONT = _dtr._K_STL_CONT + +_dtr._K_STL_UDK_swigconstant(_dtr) +_K_STL_UDK = _dtr._K_STL_UDK + +_dtr._K_STL_END_UDK_swigconstant(_dtr) +_K_STL_END_UDK = _dtr._K_STL_END_UDK + +_dtr._K_SEMI_COLON_OPT_swigconstant(_dtr) +_K_SEMI_COLON_OPT = _dtr._K_SEMI_COLON_OPT + +_dtr._K_UNQUOTED_LIT_swigconstant(_dtr) +_K_UNQUOTED_LIT = _dtr._K_UNQUOTED_LIT + +_dtr._K_SYNTAX_PROMPT_swigconstant(_dtr) +_K_SYNTAX_PROMPT = _dtr._K_SYNTAX_PROMPT + +_dtr._K_IMMED_RETURN_swigconstant(_dtr) +_K_IMMED_RETURN = _dtr._K_IMMED_RETURN + +_dtr._K_FORMS_ENABLE_swigconstant(_dtr) +_K_FORMS_ENABLE = _dtr._K_FORMS_ENABLE + +_dtr._K_VERIFY_swigconstant(_dtr) +_K_VERIFY = _dtr._K_VERIFY + +_dtr._K_BIG_ENDIAN_swigconstant(_dtr) +_K_BIG_ENDIAN = _dtr._K_BIG_ENDIAN + +_dtr._K_IEEE_FLOAT_swigconstant(_dtr) +_K_IEEE_FLOAT = _dtr._K_IEEE_FLOAT + +_dtr._K_CONTEXT_SEARCH_swigconstant(_dtr) +_K_CONTEXT_SEARCH = _dtr._K_CONTEXT_SEARCH + +_dtr._K_HYPHEN_DISABLED_swigconstant(_dtr) +_K_HYPHEN_DISABLED = _dtr._K_HYPHEN_DISABLED + +_dtr._K_MORE_COMMANDS_swigconstant(_dtr) +_K_MORE_COMMANDS = _dtr._K_MORE_COMMANDS + +_dtr._K_ABORT_swigconstant(_dtr) +_K_ABORT = _dtr._K_ABORT + +_dtr._K_LOCK_WAIT_swigconstant(_dtr) +_K_LOCK_WAIT = _dtr._K_LOCK_WAIT + +_dtr._K_FN_PORT_SUPPORT_swigconstant(_dtr) +_K_FN_PORT_SUPPORT = _dtr._K_FN_PORT_SUPPORT + +_dtr._K_DATE_STR_swigconstant(_dtr) +_K_DATE_STR = _dtr._K_DATE_STR + +_dtr._K_RET_ON_PRINT_ERROR_swigconstant(_dtr) +_K_RET_ON_PRINT_ERROR = _dtr._K_RET_ON_PRINT_ERROR + +_dtr._K_GET_ROUTINES_SUPPORT_swigconstant(_dtr) +_K_GET_ROUTINES_SUPPORT = _dtr._K_GET_ROUTINES_SUPPORT + +_dtr._M_OPT_CMD_swigconstant(_dtr) +_M_OPT_CMD = _dtr._M_OPT_CMD + +_dtr._M_OPT_PRMPT_swigconstant(_dtr) +_M_OPT_PRMPT = _dtr._M_OPT_PRMPT + +_dtr._M_OPT_LINE_swigconstant(_dtr) +_M_OPT_LINE = _dtr._M_OPT_LINE + +_dtr._M_OPT_MSG_swigconstant(_dtr) +_M_OPT_MSG = _dtr._M_OPT_MSG + +_dtr._M_OPT_PGET_swigconstant(_dtr) +_M_OPT_PGET = _dtr._M_OPT_PGET + +_dtr._M_OPT_PPUT_swigconstant(_dtr) +_M_OPT_PPUT = _dtr._M_OPT_PPUT + +_dtr._M_OPT_CONT_swigconstant(_dtr) +_M_OPT_CONT = _dtr._M_OPT_CONT + +_dtr._M_OPT_UDK_swigconstant(_dtr) +_M_OPT_UDK = _dtr._M_OPT_UDK + +_dtr._M_OPT_DTR_UDK_swigconstant(_dtr) +_M_OPT_DTR_UDK = _dtr._M_OPT_DTR_UDK + +_dtr._M_OPT_END_UDK_swigconstant(_dtr) +_M_OPT_END_UDK = _dtr._M_OPT_END_UDK + +_dtr._M_OPT_UNWIND_swigconstant(_dtr) +_M_OPT_UNWIND = _dtr._M_OPT_UNWIND + +_dtr._M_OPT_CONTROL_C_swigconstant(_dtr) +_M_OPT_CONTROL_C = _dtr._M_OPT_CONTROL_C + +_dtr._M_OPT_STARTUP_swigconstant(_dtr) +_M_OPT_STARTUP = _dtr._M_OPT_STARTUP + +_dtr._M_OPT_FOREIGN_swigconstant(_dtr) +_M_OPT_FOREIGN = _dtr._M_OPT_FOREIGN + +_dtr._M_OPT_BANNER_swigconstant(_dtr) +_M_OPT_BANNER = _dtr._M_OPT_BANNER + +_dtr._M_OPT_REMOVE_CTLC_swigconstant(_dtr) +_M_OPT_REMOVE_CTLC = _dtr._M_OPT_REMOVE_CTLC + +_dtr._M_OPT_KEYDEFS_swigconstant(_dtr) +_M_OPT_KEYDEFS = _dtr._M_OPT_KEYDEFS + +_dtr._K_UDK_SET_swigconstant(_dtr) +_K_UDK_SET = _dtr._K_UDK_SET + +_dtr._K_UDK_SET_NO_swigconstant(_dtr) +_K_UDK_SET_NO = _dtr._K_UDK_SET_NO + +_dtr._K_UDK_SHOW_swigconstant(_dtr) +_K_UDK_SHOW = _dtr._K_UDK_SHOW + +_dtr._K_UDK_STATEMENT_swigconstant(_dtr) +_K_UDK_STATEMENT = _dtr._K_UDK_STATEMENT + +_dtr._K_UDK_COMMAND_swigconstant(_dtr) +_K_UDK_COMMAND = _dtr._K_UDK_COMMAND + +_dtr._K_TOK_TOKEN_swigconstant(_dtr) +_K_TOK_TOKEN = _dtr._K_TOK_TOKEN + +_dtr._K_TOK_PICTURE_swigconstant(_dtr) +_K_TOK_PICTURE = _dtr._K_TOK_PICTURE + +_dtr._K_TOK_FILENAME_swigconstant(_dtr) +_K_TOK_FILENAME = _dtr._K_TOK_FILENAME + +_dtr._K_TOK_COMMAND_swigconstant(_dtr) +_K_TOK_COMMAND = _dtr._K_TOK_COMMAND + +_dtr._K_TOK_TEST_TOKEN_swigconstant(_dtr) +_K_TOK_TEST_TOKEN = _dtr._K_TOK_TEST_TOKEN + +_dtr._K_TOK_LIST_ELEMENT_swigconstant(_dtr) +_K_TOK_LIST_ELEMENT = _dtr._K_TOK_LIST_ELEMENT + +_dtr._K_TOK_TEST_EOL_swigconstant(_dtr) +_K_TOK_TEST_EOL = _dtr._K_TOK_TEST_EOL + +_dtr._SUCCESS_swigconstant(_dtr) +_SUCCESS = _dtr._SUCCESS + +_dtr._K_INF_TYPE_DOMAIN_swigconstant(_dtr) +_K_INF_TYPE_DOMAIN = _dtr._K_INF_TYPE_DOMAIN + +_dtr._K_INF_TYPE_COLLECTION_swigconstant(_dtr) +_K_INF_TYPE_COLLECTION = _dtr._K_INF_TYPE_COLLECTION + +_dtr._K_INF_TYPE_KEYWORD_swigconstant(_dtr) +_K_INF_TYPE_KEYWORD = _dtr._K_INF_TYPE_KEYWORD + +_dtr._K_INF_TYPE_DIC_NAME_swigconstant(_dtr) +_K_INF_TYPE_DIC_NAME = _dtr._K_INF_TYPE_DIC_NAME + +_dtr._K_INF_TYPE_GLV_swigconstant(_dtr) +_K_INF_TYPE_GLV = _dtr._K_INF_TYPE_GLV + +_dtr._K_INF_TYPE_PLOT_swigconstant(_dtr) +_K_INF_TYPE_PLOT = _dtr._K_INF_TYPE_PLOT + +_dtr._K_INF_DOM_FLD_swigconstant(_dtr) +_K_INF_DOM_FLD = _dtr._K_INF_DOM_FLD + +_dtr._K_INF_DOM_FORM_swigconstant(_dtr) +_K_INF_DOM_FORM = _dtr._K_INF_DOM_FORM + +_dtr._K_INF_DOM_SHARE_swigconstant(_dtr) +_K_INF_DOM_SHARE = _dtr._K_INF_DOM_SHARE + +_dtr._K_INF_DOM_ACCESS_swigconstant(_dtr) +_K_INF_DOM_ACCESS = _dtr._K_INF_DOM_ACCESS + +_dtr._K_INF_DOM_NAME_swigconstant(_dtr) +_K_INF_DOM_NAME = _dtr._K_INF_DOM_NAME + +_dtr._K_INF_DOM_NEXT_DOM_swigconstant(_dtr) +_K_INF_DOM_NEXT_DOM = _dtr._K_INF_DOM_NEXT_DOM + +_dtr._K_INF_DOM_SSC_swigconstant(_dtr) +_K_INF_DOM_SSC = _dtr._K_INF_DOM_SSC + +_dtr._K_INF_DOM_REC_LEN_swigconstant(_dtr) +_K_INF_DOM_REC_LEN = _dtr._K_INF_DOM_REC_LEN + +_dtr._K_INF_FLD_NAME_swigconstant(_dtr) +_K_INF_FLD_NAME = _dtr._K_INF_FLD_NAME + +_dtr._K_INF_FLD_QNAME_swigconstant(_dtr) +_K_INF_FLD_QNAME = _dtr._K_INF_FLD_QNAME + +_dtr._K_INF_FLD_PICTURE_swigconstant(_dtr) +_K_INF_FLD_PICTURE = _dtr._K_INF_FLD_PICTURE + +_dtr._K_INF_FLD_EDIT_swigconstant(_dtr) +_K_INF_FLD_EDIT = _dtr._K_INF_FLD_EDIT + +_dtr._K_INF_FLD_DTYPE_swigconstant(_dtr) +_K_INF_FLD_DTYPE = _dtr._K_INF_FLD_DTYPE + +_dtr._K_INF_FLD_OFFSET_swigconstant(_dtr) +_K_INF_FLD_OFFSET = _dtr._K_INF_FLD_OFFSET + +_dtr._K_INF_FLD_LENGTH_swigconstant(_dtr) +_K_INF_FLD_LENGTH = _dtr._K_INF_FLD_LENGTH + +_dtr._K_INF_FLD_SCALE_swigconstant(_dtr) +_K_INF_FLD_SCALE = _dtr._K_INF_FLD_SCALE + +_dtr._K_INF_FLD_CHILD_swigconstant(_dtr) +_K_INF_FLD_CHILD = _dtr._K_INF_FLD_CHILD + +_dtr._K_INF_FLD_CNT_swigconstant(_dtr) +_K_INF_FLD_CNT = _dtr._K_INF_FLD_CNT + +_dtr._K_INF_FLD_LIST_swigconstant(_dtr) +_K_INF_FLD_LIST = _dtr._K_INF_FLD_LIST + +_dtr._K_INF_FLD_REDEFINES_swigconstant(_dtr) +_K_INF_FLD_REDEFINES = _dtr._K_INF_FLD_REDEFINES + +_dtr._K_INF_FLD_VIRTUAL_swigconstant(_dtr) +_K_INF_FLD_VIRTUAL = _dtr._K_INF_FLD_VIRTUAL + +_dtr._K_INF_FLD_FILLER_swigconstant(_dtr) +_K_INF_FLD_FILLER = _dtr._K_INF_FLD_FILLER + +_dtr._K_INF_FLD_MISSING_swigconstant(_dtr) +_K_INF_FLD_MISSING = _dtr._K_INF_FLD_MISSING + +_dtr._K_INF_FLD_MISSING_TXT_swigconstant(_dtr) +_K_INF_FLD_MISSING_TXT = _dtr._K_INF_FLD_MISSING_TXT + +_dtr._K_INF_FLD_SEG_STRING_swigconstant(_dtr) +_K_INF_FLD_SEG_STRING = _dtr._K_INF_FLD_SEG_STRING + +_dtr._K_INF_COL_CURSOR_swigconstant(_dtr) +_K_INF_COL_CURSOR = _dtr._K_INF_COL_CURSOR + +_dtr._K_INF_COL_SIZE_swigconstant(_dtr) +_K_INF_COL_SIZE = _dtr._K_INF_COL_SIZE + +_dtr._K_INF_COL_FLD_swigconstant(_dtr) +_K_INF_COL_FLD = _dtr._K_INF_COL_FLD + +_dtr._K_INF_COL_DROPPED_swigconstant(_dtr) +_K_INF_COL_DROPPED = _dtr._K_INF_COL_DROPPED + +_dtr._K_INF_COL_ERASED_swigconstant(_dtr) +_K_INF_COL_ERASED = _dtr._K_INF_COL_ERASED + +_dtr._K_INF_COL_INVISIBLE_swigconstant(_dtr) +_K_INF_COL_INVISIBLE = _dtr._K_INF_COL_INVISIBLE + +_dtr._K_INF_COL_NAME_swigconstant(_dtr) +_K_INF_COL_NAME = _dtr._K_INF_COL_NAME + +_dtr._K_INF_COL_NEXT_COL_swigconstant(_dtr) +_K_INF_COL_NEXT_COL = _dtr._K_INF_COL_NEXT_COL + +_dtr._K_INF_GLV_FIRST_DOM_swigconstant(_dtr) +_K_INF_GLV_FIRST_DOM = _dtr._K_INF_GLV_FIRST_DOM + +_dtr._K_INF_GLV_FIRST_COL_swigconstant(_dtr) +_K_INF_GLV_FIRST_COL = _dtr._K_INF_GLV_FIRST_COL + +_dtr._K_INF_GLV_FIRST_SSC_swigconstant(_dtr) +_K_INF_GLV_FIRST_SSC = _dtr._K_INF_GLV_FIRST_SSC + +_dtr._K_INF_GLV_DEF_DIC_swigconstant(_dtr) +_K_INF_GLV_DEF_DIC = _dtr._K_INF_GLV_DEF_DIC + +_dtr._K_INF_FRM_NAME_swigconstant(_dtr) +_K_INF_FRM_NAME = _dtr._K_INF_FRM_NAME + +_dtr._K_INF_FRM_LIBRARY_swigconstant(_dtr) +_K_INF_FRM_LIBRARY = _dtr._K_INF_FRM_LIBRARY + +_dtr._K_INF_SSC_NAME_swigconstant(_dtr) +_K_INF_SSC_NAME = _dtr._K_INF_SSC_NAME + +_dtr._K_INF_SSC_SET_swigconstant(_dtr) +_K_INF_SSC_SET = _dtr._K_INF_SSC_SET + +_dtr._K_INF_SSC_NEXT_swigconstant(_dtr) +_K_INF_SSC_NEXT = _dtr._K_INF_SSC_NEXT + +_dtr._K_INF_SET_NAME_swigconstant(_dtr) +_K_INF_SET_NAME = _dtr._K_INF_SET_NAME + +_dtr._K_INF_SET_NEXT_swigconstant(_dtr) +_K_INF_SET_NEXT = _dtr._K_INF_SET_NEXT + +_dtr._K_INF_SET_SDP_swigconstant(_dtr) +_K_INF_SET_SDP = _dtr._K_INF_SET_SDP + +_dtr._K_INF_SET_SINGULAR_swigconstant(_dtr) +_K_INF_SET_SINGULAR = _dtr._K_INF_SET_SINGULAR + +_dtr._K_INF_SDP_NEXT_swigconstant(_dtr) +_K_INF_SDP_NEXT = _dtr._K_INF_SDP_NEXT + +_dtr._K_INF_SDP_DOMAIN_swigconstant(_dtr) +_K_INF_SDP_DOMAIN = _dtr._K_INF_SDP_DOMAIN + +_dtr._K_INF_SDP_TENANCY_swigconstant(_dtr) +_K_INF_SDP_TENANCY = _dtr._K_INF_SDP_TENANCY + +_dtr._K_INF_SDP_INSERT_swigconstant(_dtr) +_K_INF_SDP_INSERT = _dtr._K_INF_SDP_INSERT + +_dtr._K_INF_SDP_RETAIN_swigconstant(_dtr) +_K_INF_SDP_RETAIN = _dtr._K_INF_SDP_RETAIN + +_dtr._K_INF_FLD_QHDR_swigconstant(_dtr) +_K_INF_FLD_QHDR = _dtr._K_INF_FLD_QHDR + +_dtr._K_INF_HDR_CNT_swigconstant(_dtr) +_K_INF_HDR_CNT = _dtr._K_INF_HDR_CNT + +_dtr._K_INF_HDR_STRING_swigconstant(_dtr) +_K_INF_HDR_STRING = _dtr._K_INF_HDR_STRING + +_dtr._K_INF_GLV_STA_OBJ_swigconstant(_dtr) +_K_INF_GLV_STA_OBJ = _dtr._K_INF_GLV_STA_OBJ + +_dtr._K_INF_GLV_STA_CNT_swigconstant(_dtr) +_K_INF_GLV_STA_CNT = _dtr._K_INF_GLV_STA_CNT + +_dtr._K_INF_GLV_STA_LINE_swigconstant(_dtr) +_K_INF_GLV_STA_LINE = _dtr._K_INF_GLV_STA_LINE + +_dtr._K_INF_PLO_CNT_swigconstant(_dtr) +_K_INF_PLO_CNT = _dtr._K_INF_PLO_CNT + +_dtr._K_INF_PLO_PAI_swigconstant(_dtr) +_K_INF_PLO_PAI = _dtr._K_INF_PLO_PAI + +_dtr._K_INF_PAI_PROMPT_swigconstant(_dtr) +_K_INF_PAI_PROMPT = _dtr._K_INF_PAI_PROMPT + +_dtr._K_INF_PAI_DTYPE_swigconstant(_dtr) +_K_INF_PAI_DTYPE = _dtr._K_INF_PAI_DTYPE + +_dtr._K_INF_DOM_ACCESS_READ_swigconstant(_dtr) +_K_INF_DOM_ACCESS_READ = _dtr._K_INF_DOM_ACCESS_READ + +_dtr._K_INF_DOM_ACCESS_WRITE_swigconstant(_dtr) +_K_INF_DOM_ACCESS_WRITE = _dtr._K_INF_DOM_ACCESS_WRITE + +_dtr._K_INF_DOM_ACCESS_MODIFY_swigconstant(_dtr) +_K_INF_DOM_ACCESS_MODIFY = _dtr._K_INF_DOM_ACCESS_MODIFY + +_dtr._K_INF_DOM_ACCESS_EXTEND_swigconstant(_dtr) +_K_INF_DOM_ACCESS_EXTEND = _dtr._K_INF_DOM_ACCESS_EXTEND + +_dtr._K_INF_DOM_SHARE_EXCLUSIVE_swigconstant(_dtr) +_K_INF_DOM_SHARE_EXCLUSIVE = _dtr._K_INF_DOM_SHARE_EXCLUSIVE + +_dtr._K_INF_DOM_SHARE_SHARED_swigconstant(_dtr) +_K_INF_DOM_SHARE_SHARED = _dtr._K_INF_DOM_SHARE_SHARED + +_dtr._K_INF_DOM_SHARE_PROTECT_swigconstant(_dtr) +_K_INF_DOM_SHARE_PROTECT = _dtr._K_INF_DOM_SHARE_PROTECT + +_dtr._NTS_swigconstant(_dtr) +_NTS = _dtr._NTS + +def command(arg1, arg2): + return _dtr.command(arg1, arg2) +command = _dtr.command + +def cont(arg1): + return _dtr.cont(arg1) +cont = _dtr.cont + +def create_udk(arg1, arg2, arg3, arg4): + return _dtr.create_udk(arg1, arg2, arg3, arg4) +create_udk = _dtr.create_udk + +def end_udk(arg1): + return _dtr.end_udk(arg1) +end_udk = _dtr.end_udk + +def finish(arg1): + return _dtr.finish(arg1) +finish = _dtr.finish + +def get_port(arg1, arg2): + return _dtr.get_port(arg1, arg2) +get_port = _dtr.get_port + +def get_string(arg1, arg2, arg4): + return _dtr.get_string(arg1, arg2, arg4) +get_string = _dtr.get_string + +def info(arg1, arg2, arg3, arg6): + return _dtr.info(arg1, arg2, arg3, arg6) +info = _dtr.info + +def init(arg2, arg3): + return _dtr.init(arg2, arg3) +init = _dtr.init + +def lookup(arg1, arg2, arg4): + return _dtr.lookup(arg1, arg2, arg4) +lookup = _dtr.lookup + +def port_eof(arg1): + return _dtr.port_eof(arg1) +port_eof = _dtr.port_eof + +def put_port(arg1, arg2): + return _dtr.put_port(arg1, arg2) +put_port = _dtr.put_port + +def put_value(arg1, arg2): + return _dtr.put_value(arg1, arg2) +put_value = _dtr.put_value + +def unwind(arg1): + return _dtr.unwind(arg1) +unwind = _dtr.unwind + +def condition(arg1): + return _dtr.condition(arg1) +condition = _dtr.condition + +def state(arg1): + return _dtr.state(arg1) +state = _dtr.state + +def msg_buf(arg1): + return _dtr.msg_buf(arg1) +msg_buf = _dtr.msg_buf + +def aux_buf(arg1): + return _dtr.aux_buf(arg1) +aux_buf = _dtr.aux_buf + +def get_options(arg1): + return _dtr.get_options(arg1) +get_options = _dtr.get_options + +def set_options(arg1, arg2): + return _dtr.set_options(arg1, arg2) +set_options = _dtr.set_options + +def clear_options(arg1, arg2): + return _dtr.clear_options(arg1, arg2) +clear_options = _dtr.clear_options + +def get_rec_len(arg1): + return _dtr.get_rec_len(arg1) +get_rec_len = _dtr.get_rec_len + +def get_flags(arg1): + return _dtr.get_flags(arg1) +get_flags = _dtr.get_flags + +def get_udk_index(arg1): + return _dtr.get_udk_index(arg1) +get_udk_index = _dtr.get_udk_index + +def dtr(arg1, arg2): + return _dtr.dtr(arg1, arg2) +dtr = _dtr.dtr + +def skip(arg1, arg2): + return _dtr.skip(arg1, arg2) +skip = _dtr.skip + +def row(arg1, arg2): + return _dtr.row(arg1, arg2) +row = _dtr.row +# This file is compatible with both classic and new-style classes. + + diff --git a/Modules/vms/dtr/lcl.h b/Modules/vms/dtr/lcl.h new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZHRyL2xjbC5o --- /dev/null +++ b/Modules/vms/dtr/lcl.h @@ -0,0 +1,33 @@ +#ifndef __LCL_H__ +#define __LCL_H__ + +#define __NEW_STARLET 1 +#include <iledef.h> + +typedef struct { + unsigned short top; + int size; + int elem; + ILE3 *list; + int *types; + unsigned short bot; +} LCL_ile3; + + +typedef struct { + unsigned short ncol; + struct { + char *name; + unsigned short idx; + unsigned short type; + unsigned short size; + unsigned short off; + int digits; + int scale; + void *val; + } *fields; + char *buf; + unsigned short len; +} LCL_rec; + +#endif diff --git a/Modules/vms/dtr/rec.c b/Modules/vms/dtr/rec.c new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZHRyL3JlYy5j --- /dev/null +++ b/Modules/vms/dtr/rec.c @@ -0,0 +1,942 @@ +#define __NEW_STARLET 1 + +#include <descrip.h> +#include <lib$routines.h> +#include <starlet.h> +#include <ssdef.h> +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <ctype.h> + +#include "lcl.h" + +#ifndef rec_Assert +#define rec_Assert(x) \ + do { \ + if ((!((x)))) { \ + fprintf (stderr, "Assertion failed: %s (%s: %d)\n", #x, __FILE__, __LINE__); \ + abort(); \ + } \ + } while (0) +#endif + +#ifndef OKAY +#define OKAY(STATUS) (((STATUS) & 1) != 0) +#endif + + + +void *_new() +{ + LCL_rec *rec = NULL; + + rec_Assert((rec = calloc(1, sizeof(LCL_rec)))); + rec->ncol = 0; + rec->fields = NULL; + + rec->len = 0; + rec->buf = NULL; + + return (rec); +} + + +void _delete(void *addr) +{ + LCL_rec *rec = (LCL_rec *) addr; + int i; + + rec_Assert(rec); + + if (rec->fields) { + for (i = 0; i < rec->ncol; i++) { + if (rec->fields[i].name) { + free(rec->fields[i].name); + } + if (rec->fields[i].val) { + free(rec->fields[i].val); + } + } + free(rec->fields); + } + + if (rec->buf) { + free(rec->buf); + } + + free(rec); +} + + +char *_getstr(void *addr, int idx) +{ + LCL_rec *rec = (LCL_rec *) addr; + char *tmp; + int i; + unsigned short size; + + rec_Assert((rec->ncol)); + rec_Assert((idx < rec->ncol)); + rec_Assert((rec->fields)); + rec_Assert((rec->fields[idx].type == DSC$K_DTYPE_T)); + + size = rec->fields[idx].size; + rec_Assert((tmp = calloc((size + 1), sizeof(char)))); + memcpy(tmp, rec->fields[idx].val, size); + + i = rec->fields[idx].size - 1; + + while (i > 0 && isspace(tmp[i])) { + i--; + } + i++; + tmp[i] = '\0'; + + return (tmp); +} + + +char *_gethex(void *addr, int idx) +{ + LCL_rec *rec = (LCL_rec *) addr; + char tmp[32], *val; + unsigned short type; + + rec_Assert((rec->ncol)); + rec_Assert((idx < rec->ncol)); + rec_Assert((rec->fields)); + + val = rec->fields[idx].val; + type = rec->fields[idx].type; + + switch (type) { + case DSC$K_DTYPE_BU: + sprintf(tmp, "0x%llx", *(unsigned char *) val); + break; + case DSC$K_DTYPE_B: + sprintf(tmp, "0x%llx", *(char *) val); + break; + case DSC$K_DTYPE_WU: + sprintf(tmp, "0x%llx", *(unsigned short *) val); + break; + case DSC$K_DTYPE_W: + sprintf(tmp, "0x%llx", *(short *) val); + break; + case DSC$K_DTYPE_LU: + sprintf(tmp, "0x%llx", *(unsigned int *) val); + break; + case DSC$K_DTYPE_L: + sprintf(tmp, "0x%llx", *(int *) val); + break; + case DSC$K_DTYPE_QU: + sprintf(tmp, "0x%llx", *(unsigned long long *) val); + break; + case DSC$K_DTYPE_Q: + sprintf(tmp, "0x%llx", *(long long *) val); + break; + default: + abort(); + break; + } + + rec_Assert(val = strdup(tmp)); + return (val); +} + + +long long _getint(void *addr, int idx) +{ + LCL_rec *rec = (LCL_rec *) addr; + void *val; + unsigned short type; + + rec_Assert((rec->ncol)); + rec_Assert((idx < rec->ncol)); + rec_Assert((rec->fields)); + + val = rec->fields[idx].val; + type = rec->fields[idx].type; + + switch (type) { + case DSC$K_DTYPE_BU: + return (*(unsigned char *) val); + break; + case DSC$K_DTYPE_B: + return (*(char *) val); + break; + case DSC$K_DTYPE_WU: + return (*(unsigned short *) val); + break; + case DSC$K_DTYPE_W: + return (*(short *) val); + break; + case DSC$K_DTYPE_LU: + return (*(unsigned int *) val); + break; + case DSC$K_DTYPE_L: + return (*(int *) val); + break; + case DSC$K_DTYPE_QU: + case DSC$K_DTYPE_Q: + return (*(long long *) val); + break; + default: + abort(); + break; + } + + return (0); +} + + +double _getnum(void *addr, int idx) +{ + LCL_rec *rec = (LCL_rec *) addr; + struct dsc$descriptor_sd from, to; + double tmp; + unsigned short type; + + rec_Assert((rec->ncol)); + rec_Assert((idx < rec->ncol)); + rec_Assert((rec->fields)); + + type = rec->fields[idx].type; + + switch (type) { + case DSC$K_DTYPE_NU: + case DSC$K_DTYPE_NL: + case DSC$K_DTYPE_NLO: + case DSC$K_DTYPE_NR: + case DSC$K_DTYPE_NRO: + case DSC$K_DTYPE_NZ: + case DSC$K_DTYPE_P: + from.dsc$b_class = DSC$K_CLASS_SD; + from.dsc$w_length = rec->fields[idx].size; + from.dsc$a_pointer = (char *) rec->fields[idx].val; + from.dsc$b_scale = rec->fields[idx].scale; + from.dsc$b_digits = rec->fields[idx].digits; + from.dsc$b_dtype = type; + + to.dsc$b_class = DSC$K_CLASS_SD; + to.dsc$w_length = sizeof(double); + to.dsc$a_pointer = (char *) &tmp; + to.dsc$b_scale = 0; + to.dsc$b_digits = 0; + to.dsc$b_dtype = DSC$K_DTYPE_FT; + + rec_Assert((OKAY + (lib$cvt_dx_dx + ((unsigned int *) &from, (unsigned int *) &to)))); + return (tmp); + break; + default: + abort(); + break; + } + + return (0.0); +} + + + +double _getfloat(void *addr, int idx) +{ + LCL_rec *rec = (LCL_rec *) addr; + void *val; + unsigned short type; + + rec_Assert((rec->ncol)); + rec_Assert((idx < rec->ncol)); + rec_Assert((rec->fields)); + + val = rec->fields[idx].val; + type = rec->fields[idx].type; + + switch (type) { + case DSC$K_DTYPE_F: + { + struct dsc$descriptor_sd from, to; + double tmp; + + from.dsc$b_class = DSC$K_CLASS_SD; + from.dsc$w_length = sizeof(float); + from.dsc$a_pointer = (char *) val; + from.dsc$b_scale = 0; + from.dsc$b_digits = 0; + from.dsc$b_dtype = DSC$K_DTYPE_F; + + to.dsc$b_class = DSC$K_CLASS_SD; + to.dsc$w_length = sizeof(double); + to.dsc$a_pointer = (char *) &tmp; + to.dsc$b_scale = 0; + to.dsc$b_digits = 0; + to.dsc$b_dtype = DSC$K_DTYPE_FT; + + rec_Assert((OKAY + (lib$cvt_dx_dx + ((unsigned int *) &from, (unsigned int *) &to)))); + return (tmp); + } + break; + case DSC$K_DTYPE_FS: + return (*(float *) val); + break; + case DSC$K_DTYPE_G: + { + struct dsc$descriptor_sd from, to; + double tmp; + + from.dsc$b_class = DSC$K_CLASS_SD; + from.dsc$w_length = sizeof(double); + from.dsc$a_pointer = (char *) val; + from.dsc$b_scale = 0; + from.dsc$b_digits = 0; + from.dsc$b_dtype = DSC$K_DTYPE_G; + + to.dsc$b_class = DSC$K_CLASS_SD; + to.dsc$w_length = sizeof(double); + to.dsc$a_pointer = (char *) &tmp; + to.dsc$b_scale = 0; + to.dsc$b_digits = 0; + to.dsc$b_dtype = DSC$K_DTYPE_FT; + + rec_Assert((OKAY + (lib$cvt_dx_dx + ((unsigned int *) &from, (unsigned int *) &to)))); + return (tmp); + } + break; + case DSC$K_DTYPE_FT: + return (*(double *) val); + break; + default: + abort(); + break; + } + + return (0.0); +} + + +void _setstr(void *addr, char *val, int idx) +{ + LCL_rec *rec = (LCL_rec *) addr; + unsigned short len; + + rec_Assert(rec); + rec_Assert(idx < rec->ncol); + rec_Assert((rec->fields[idx].type == DSC$K_DTYPE_T)); + + memset(rec->fields[idx].val, ' ', rec->fields[idx].size); + + if (val) { + len = strlen(val); + rec_Assert((len <= rec->fields[idx].size)); + memcpy(rec->fields[idx].val, val, len); + } +} + + +void _addstr(void *addr, char *val, unsigned short len, unsigned short off) +{ + LCL_rec *rec = (LCL_rec *) addr; + int n; + int idx; + + rec_Assert(rec); + + if (val) { + rec_Assert(((n = strlen(val)) <= len)); + } + + idx = rec->ncol; + rec->ncol++; + rec_Assert((rec->fields = + realloc(rec->fields, sizeof(rec->fields[0]) * rec->ncol))); + rec_Assert((rec->fields[idx].val = malloc(len))); + memset(rec->fields[idx].val, ' ', len); + + if (val) { + memcpy(rec->fields[idx].val, val, n); + } + + rec->fields[idx].type = DSC$K_DTYPE_T; + rec->fields[idx].off = off; + rec->fields[idx].idx = idx; + rec->fields[idx].size = len; + rec->fields[idx].digits = -1; + rec->fields[idx].scale = -1; + rec->fields[idx].name = NULL; + + rec->len += len; + rec_Assert((rec->buf = realloc(rec->buf, rec->len))); +} + + +void _setint(void *addr, long long val, int idx) +{ + LCL_rec *rec = (LCL_rec *) addr; + int type; + int size; + + rec_Assert(rec); + rec_Assert(idx < rec->ncol); + + type = rec->fields[idx].type; + size = rec->fields[idx].size; + + switch (type) { + case DSC$K_DTYPE_BU: + { + unsigned char tmp = (unsigned char) val; + memcpy(rec->fields[idx].val, &tmp, size); + } + break; + case DSC$K_DTYPE_B: + { + char tmp = (char) val; + memcpy(rec->fields[idx].val, &tmp, size); + } + break; + case DSC$K_DTYPE_WU: + { + unsigned short tmp = (unsigned short) val; + memcpy(rec->fields[idx].val, &tmp, size); + } + break; + case DSC$K_DTYPE_W: + { + short tmp = (short) val; + memcpy(rec->fields[idx].val, &tmp, size); + } + break; + case DSC$K_DTYPE_LU: + { + unsigned long tmp = (unsigned long) val; + memcpy(rec->fields[idx].val, &tmp, size); + } + break; + case DSC$K_DTYPE_L: + { + long tmp = (long) val; + memcpy(rec->fields[idx].val, &tmp, size); + } + break; + case DSC$K_DTYPE_QU: + case DSC$K_DTYPE_Q: + memcpy(rec->fields[idx].val, &val, size); + break; + default: + abort(); + break; + } +} + + + +void _addint(void *addr, int type, long long val, unsigned short off) +{ + LCL_rec *rec = (LCL_rec *) addr; + int size; + int idx; + + rec_Assert(rec); + + idx = rec->ncol; + rec->ncol++; + rec_Assert((rec->fields = + realloc(rec->fields, sizeof(rec->fields[0]) * rec->ncol))); + + switch (type) { + case DSC$K_DTYPE_BU: + case DSC$K_DTYPE_B: + size = 1; + break; + case DSC$K_DTYPE_WU: + case DSC$K_DTYPE_W: + size = 2; + break; + case DSC$K_DTYPE_LU: + case DSC$K_DTYPE_L: + size = 4; + break; + case DSC$K_DTYPE_QU: + case DSC$K_DTYPE_Q: + size = 8; + break; + default: + abort(); + break; + } + + rec_Assert((rec->fields[idx].val = calloc(1, size))); + + switch (type) { + case DSC$K_DTYPE_BU: + { + unsigned char tmp = (unsigned char) val; + memcpy(rec->fields[idx].val, &tmp, size); + } + break; + case DSC$K_DTYPE_B: + { + char tmp = (char) val; + memcpy(rec->fields[idx].val, &tmp, size); + } + break; + case DSC$K_DTYPE_WU: + { + unsigned short tmp = (unsigned short) val; + memcpy(rec->fields[idx].val, &tmp, size); + } + break; + case DSC$K_DTYPE_W: + { + short tmp = (short) val; + memcpy(rec->fields[idx].val, &tmp, size); + } + break; + case DSC$K_DTYPE_LU: + { + unsigned long tmp = (unsigned long) val; + memcpy(rec->fields[idx].val, &tmp, size); + } + break; + case DSC$K_DTYPE_L: + { + long tmp = (long) val; + memcpy(rec->fields[idx].val, &tmp, size); + } + break; + case DSC$K_DTYPE_QU: + case DSC$K_DTYPE_Q: + memcpy(rec->fields[idx].val, &val, size); + break; + default: + abort(); + break; + } + + rec->fields[idx].size = size; + rec->fields[idx].type = type; + rec->fields[idx].off = off; + rec->fields[idx].idx = idx; + rec->fields[idx].digits = -1; + rec->fields[idx].scale = -1; + rec->fields[idx].name = NULL; + + rec->len += size; + rec_Assert((rec->buf = realloc(rec->buf, rec->len))); +} + + + +void _setnum(void *addr, double val, int idx) +{ + LCL_rec *rec = (LCL_rec *) addr; + struct dsc$descriptor_sd from, to; + + rec_Assert(rec); + rec_Assert(idx < rec->ncol); + + switch (rec->fields[idx].type) { + case DSC$K_DTYPE_NU: + case DSC$K_DTYPE_NL: + case DSC$K_DTYPE_NLO: + case DSC$K_DTYPE_NR: + case DSC$K_DTYPE_NRO: + case DSC$K_DTYPE_NZ: + case DSC$K_DTYPE_P: + break; + default: + abort(); + break; + } + + from.dsc$b_class = DSC$K_CLASS_SD; + from.dsc$w_length = sizeof(double); + from.dsc$a_pointer = (char *) &val; + from.dsc$b_scale = 0; + from.dsc$b_digits = 0; + from.dsc$b_dtype = DSC$K_DTYPE_FT; + + to.dsc$b_class = DSC$K_CLASS_SD; + to.dsc$w_length = rec->fields[idx].size; + to.dsc$a_pointer = rec->fields[idx].val; + to.dsc$b_scale = rec->fields[idx].scale; + to.dsc$b_digits = rec->fields[idx].digits; + to.dsc$b_dtype = rec->fields[idx].type; + + rec_Assert((OKAY + (lib$cvt_dx_dx + ((unsigned int *) &from, (unsigned int *) &to)))); +} + + + +void _addnum(void *addr, int type, double val, short scale, + unsigned short digits, unsigned short len, unsigned short off) +{ + LCL_rec *rec = (LCL_rec *) addr; + struct dsc$descriptor_sd from, to; + int idx; + + rec_Assert(rec); + + switch (type) { + case DSC$K_DTYPE_NU: + case DSC$K_DTYPE_NL: + case DSC$K_DTYPE_NLO: + case DSC$K_DTYPE_NR: + case DSC$K_DTYPE_NRO: + case DSC$K_DTYPE_NZ: + case DSC$K_DTYPE_P: + break; + default: + abort(); + break; + } + + idx = rec->ncol; + rec->ncol++; + rec_Assert((rec->fields = + realloc(rec->fields, sizeof(rec->fields[0]) * rec->ncol))); + + if (type == DSC$K_DTYPE_P) { + len = digits; + } + + rec_Assert((rec->fields[idx].val = calloc(1, len))); + + from.dsc$b_class = DSC$K_CLASS_SD; + from.dsc$w_length = sizeof(double); + from.dsc$a_pointer = (char *) &val; + from.dsc$b_scale = 0; + from.dsc$b_digits = 0; + from.dsc$b_dtype = DSC$K_DTYPE_FT; + + to.dsc$b_class = DSC$K_CLASS_SD; + to.dsc$w_length = len; + to.dsc$a_pointer = rec->fields[idx].val; + to.dsc$b_scale = scale; + to.dsc$b_digits = digits; + to.dsc$b_dtype = type; + + rec_Assert((OKAY + (lib$cvt_dx_dx + ((unsigned int *) &from, (unsigned int *) &to)))); + + rec->fields[idx].size = len; + rec->fields[idx].type = type; + rec->fields[idx].off = off; + rec->fields[idx].idx = idx; + rec->fields[idx].digits = digits; + rec->fields[idx].scale = scale; + rec->fields[idx].name = NULL; + + rec->len += len; + rec_Assert((rec->buf = realloc(rec->buf, rec->len))); +} + + + +void _setfloat(void *addr, double val, int idx) +{ + LCL_rec *rec = (LCL_rec *) addr; + struct dsc$descriptor_sd from, to; + + rec_Assert(rec); + rec_Assert(idx < rec->ncol); + + switch (rec->fields[idx].type) { + case DSC$K_DTYPE_F: + case DSC$K_DTYPE_FS: + case DSC$K_DTYPE_G: + case DSC$K_DTYPE_FT: + break; + default: + abort(); + break; + } + + from.dsc$b_class = DSC$K_CLASS_SD; + from.dsc$w_length = sizeof(double); + from.dsc$a_pointer = (char *) &val; + from.dsc$b_scale = 0; + from.dsc$b_digits = 0; + from.dsc$b_dtype = DSC$K_DTYPE_FT; + + to.dsc$b_class = DSC$K_CLASS_SD; + to.dsc$w_length = rec->fields[idx].size; + to.dsc$a_pointer = rec->fields[idx].val; + to.dsc$b_scale = 0; + to.dsc$b_digits = 0; + to.dsc$b_dtype = rec->fields[idx].type; + + rec_Assert((OKAY + (lib$cvt_dx_dx + ((unsigned int *) &from, (unsigned int *) &to)))); +} + + +void _addfloat(void *addr, int type, double val, unsigned short off) +{ + LCL_rec *rec = (LCL_rec *) addr; + int size; + int idx; + + rec_Assert(rec); + + idx = rec->ncol; + rec->ncol++; + rec_Assert((rec->fields = + realloc(rec->fields, sizeof(rec->fields[0]) * rec->ncol))); + + switch (type) { + case DSC$K_DTYPE_F: + case DSC$K_DTYPE_FS: + size = 4; + break; + case DSC$K_DTYPE_G: + case DSC$K_DTYPE_FT: + size = 8; + break; + default: + abort(); + break; + } + + rec_Assert((rec->fields[idx].val = calloc(1, size))); + + switch (type) { + case DSC$K_DTYPE_F: + { + struct dsc$descriptor_sd from, to; + float tmp; + + from.dsc$b_class = DSC$K_CLASS_SD; + from.dsc$w_length = sizeof(double); + from.dsc$a_pointer = (char *) &val; + from.dsc$b_scale = 0; + from.dsc$b_digits = 0; + from.dsc$b_dtype = DSC$K_DTYPE_FT; + + to.dsc$b_class = DSC$K_CLASS_SD; + to.dsc$w_length = sizeof(float); + to.dsc$a_pointer = (char *) &tmp; + to.dsc$b_scale = 0; + to.dsc$b_digits = 0; + to.dsc$b_dtype = DSC$K_DTYPE_F; + + rec_Assert((OKAY + (lib$cvt_dx_dx + ((unsigned int *) &from, (unsigned int *) &to)))); + memcpy(rec->fields[idx].val, &tmp, size); + } + break; + case DSC$K_DTYPE_FS: + { + float tmp = (float) val; + memcpy(rec->fields[idx].val, &tmp, size); + } + break; + case DSC$K_DTYPE_G: // IEEE double to G float + { + struct dsc$descriptor_sd from, to; + double tmp; + + from.dsc$b_class = DSC$K_CLASS_SD; + from.dsc$w_length = sizeof(double); + from.dsc$a_pointer = (char *) &val; + from.dsc$b_scale = 0; + from.dsc$b_digits = 0; + from.dsc$b_dtype = DSC$K_DTYPE_FT; + + to.dsc$b_class = DSC$K_CLASS_SD; + to.dsc$w_length = sizeof(double); + to.dsc$a_pointer = (char *) &tmp; + to.dsc$b_scale = 0; + to.dsc$b_digits = 0; + to.dsc$b_dtype = DSC$K_DTYPE_G; + + rec_Assert((OKAY + (lib$cvt_dx_dx + ((unsigned int *) &from, (unsigned int *) &to)))); + memcpy(rec->fields[idx].val, &tmp, size); + } + break; + case DSC$K_DTYPE_FT: + { + memcpy(rec->fields[idx].val, &val, size); + } + break; + default: + abort(); + break; + } + + rec->fields[idx].type = type; + rec->fields[idx].off = off; + rec->fields[idx].idx = idx; + rec->fields[idx].digits = -1; + rec->fields[idx].scale = -1; + rec->fields[idx].name = NULL; + + rec->len += size; + rec_Assert((rec->buf = realloc(rec->buf, rec->len))); +} + + +void _load(void *addr, void *data, unsigned short len) +{ + LCL_rec *rec = (LCL_rec *) addr; + char *loc; + char *end; + unsigned short size; + int i; + + rec_Assert(rec); + rec_Assert(data); + + end = (char *) data + len; + + for (i = 0; i < rec->ncol; i++) { + loc = (char *) data + rec->fields[i].off; + switch (rec->fields[i].type) { + case DSC$K_DTYPE_T: + size = rec->fields[i].size; + rec_Assert((loc + size) <= end); + memcpy(rec->fields[i].val, loc, size); + break; + case DSC$K_DTYPE_BU: + case DSC$K_DTYPE_B: + rec_Assert((size = rec->fields[i].size) == 1); + rec_Assert((loc + size) <= end); + memcpy(rec->fields[i].val, loc, size); + break; + case DSC$K_DTYPE_WU: + case DSC$K_DTYPE_W: + rec_Assert((size = rec->fields[i].size) == 2); + rec_Assert((loc + size) <= end); + memcpy(rec->fields[i].val, loc, size); + break; + case DSC$K_DTYPE_LU: + case DSC$K_DTYPE_L: + rec_Assert((size = rec->fields[i].size) == 4); + rec_Assert((loc + size) <= end); + memcpy(rec->fields[i].val, loc, size); + break; + case DSC$K_DTYPE_QU: + case DSC$K_DTYPE_Q: + rec_Assert((size = rec->fields[i].size) == 8); + rec_Assert((loc + size) <= end); + memcpy(rec->fields[i].val, loc, size); + break; + case DSC$K_DTYPE_F: + { + struct dsc$descriptor_sd from, to; + rec_Assert((size = rec->fields[i].size) == 4); + + from.dsc$b_class = DSC$K_CLASS_SD; + from.dsc$w_length = sizeof(float); + from.dsc$a_pointer = (char *) loc; + from.dsc$b_scale = 0; + from.dsc$b_digits = 0; + from.dsc$b_dtype = DSC$K_DTYPE_F; + + to.dsc$b_class = DSC$K_CLASS_SD; + to.dsc$w_length = sizeof(float); + to.dsc$a_pointer = (char *) &rec->fields[i].val; + to.dsc$b_scale = 0; + to.dsc$b_digits = 0; + to.dsc$b_dtype = DSC$K_DTYPE_FS; + + rec_Assert((OKAY + (lib$cvt_dx_dx + ((unsigned int *) &from, (unsigned int *) &to)))); + } + break; + case DSC$K_DTYPE_FS: + rec_Assert((size = rec->fields[i].size) == 4); + rec_Assert((loc + size) <= end); + memcpy(rec->fields[i].val, loc, size); + break; + case DSC$K_DTYPE_G: + { + struct dsc$descriptor_sd from, to; + rec_Assert((size = rec->fields[i].size) == 8); + + from.dsc$b_class = DSC$K_CLASS_SD; + from.dsc$w_length = sizeof(double); + from.dsc$a_pointer = (char *) loc; + from.dsc$b_scale = 0; + from.dsc$b_digits = 0; + from.dsc$b_dtype = DSC$K_DTYPE_G; + + to.dsc$b_class = DSC$K_CLASS_SD; + to.dsc$w_length = sizeof(double); + to.dsc$a_pointer = (char *) &rec->fields[i].val; + to.dsc$b_scale = 0; + to.dsc$b_digits = 0; + to.dsc$b_dtype = DSC$K_DTYPE_FT; + + rec_Assert((OKAY + (lib$cvt_dx_dx + ((unsigned int *) &from, (unsigned int *) &to)))); + } + break; + case DSC$K_DTYPE_FT: + rec_Assert((size = rec->fields[i].size) == 8); + rec_Assert((loc + size) <= end); + memcpy(rec->fields[i].val, loc, size); + break; + case DSC$K_DTYPE_NU: + case DSC$K_DTYPE_NL: + case DSC$K_DTYPE_NLO: + case DSC$K_DTYPE_NR: + case DSC$K_DTYPE_NRO: + case DSC$K_DTYPE_NZ: + case DSC$K_DTYPE_P: + size = rec->fields[i].size; + rec_Assert((loc + size) <= end); + memcpy(rec->fields[i].val, loc, size); + break; + default: + abort(); + break; + } + } + +} + + +void REC_load(void *addr, void *data, unsigned short len) +{ + _load(addr, data, len); +} + + +void REC_pack(void *data, unsigned short maxlen, void *addr, + unsigned short *len) +{ + LCL_rec *rec = (LCL_rec *) addr; + char *loc; + char *end; + unsigned short size; + int i; + + rec_Assert(addr); + rec_Assert(data); + + end = (char *) data + maxlen; + *len = 0; + + for (i = 0; i < rec->ncol; i++) { + loc = (char *) data + rec->fields[i].off; + size = rec->fields[i].size; + rec_Assert((loc + size) <= end); + memcpy(loc, rec->fields[i].val, size); + *len += size; + } +} diff --git a/Modules/vms/dtr/rec.h b/Modules/vms/dtr/rec.h new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZHRyL3JlYy5o --- /dev/null +++ b/Modules/vms/dtr/rec.h @@ -0,0 +1,28 @@ +#ifndef __REC_H__ +#define __REC_H__ + +#ifdef __cplusplus + extern "C" { +#endif + +extern void *_new(); +extern void _delete(void *); +extern char *_getstr(void *, int); +extern long long _getint(void *, int); +extern void _addstr(void *, char *, unsigned short, unsigned short); +extern void _addint(void *, int, long long, unsigned short); +extern void _load(void *, void *, unsigned short); +extern void _addfloat(void *, int, double, unsigned short); +extern double _getfloat(void *, int); +extern void _addnum(void *, int, double, short, unsigned short, unsigned short, unsigned short); +extern char *_gethex(void *, int); +extern double _getnum(void *, int); +extern void _setstr(void *, char *, int); +extern void _setint(void *, long long, int); +extern void _setnum(void *, double, int); +extern void _setfloat(void *, double, int); + +#ifdef __cplusplus + } +#endif +#endif diff --git a/Modules/vms/dtr/rec.i b/Modules/vms/dtr/rec.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZHRyL3JlYy5p --- /dev/null +++ b/Modules/vms/dtr/rec.i @@ -0,0 +1,56 @@ +%module rec + +%{ +#include "rec.h" +%} + +%include "typemaps.i" +%include <cstring.i> +%cstring_output_allocate(char **OUTPUT, free(*$1)); + +%typemap(out) char * +{ + if (result) { + resultobj = PyUnicode_DecodeUTF8(result, strlen(result), "surrogateescape"); + free(result); + } else { + resultobj = Py_None; + Py_INCREF(resultobj); + } +} + +%rename(new) _new; +%rename(delete) _delete; +%rename(getstr) _getstr; +%rename(getint) _getint; +%rename(addstr) _addstr; +%rename(addint) _addint; +%rename(load) _load; +%rename(addfloat) _addfloat; +%rename(getfloat) _getfloat; +%rename(addnum) _addnum; +%rename(gethex) _gethex; +%rename(getnum) _getnum; +%rename(setstr) _setstr; +%rename(setint) _setint; +%rename(setnum) _setnum; +%rename(setfloat) _setfloat; + +extern void *_new(); +extern void _delete(void *); +extern char *_getstr(void *, int); +extern long long _getint(void *, int); +extern void _addstr(void *, char *, unsigned short, unsigned short); +extern void _addint(void *, int, long long, unsigned short); +extern void _load(void *, void *, unsigned short); +extern void _addfloat(void *, int, double, unsigned short); +extern double _getfloat(void *, int); +extern void _addnum(void *, int, double, short, unsigned short, unsigned short, unsigned short); +extern char *_gethex(void *, int); +extern double _getnum(void *, int); +extern void _setstr(void *, char *, int); +extern void _setint(void *, long long, int); +extern void _setnum(void *, double, int); +extern void _setfloat(void *, double, int); + + diff --git a/Modules/vms/dtr/rec.py b/Modules/vms/dtr/rec.py new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZHRyL3JlYy5weQ== --- /dev/null +++ b/Modules/vms/dtr/rec.py @@ -0,0 +1,156 @@ +# This file was automatically generated by SWIG (http://www.swig.org). +# Version 3.0.5 +# +# Do not make changes to this file unless you know what you are doing--modify +# the SWIG interface file instead. + + + + + +from sys import version_info +if version_info >= (2, 6, 0): + def swig_import_helper(): + from os.path import dirname + import imp + fp = None + try: + fp, pathname, description = imp.find_module('_rec', [dirname(__file__)]) + except ImportError: + import _rec + return _rec + if fp is not None: + try: + _mod = imp.load_module('_rec', fp, pathname, description) + finally: + fp.close() + return _mod + _rec = swig_import_helper() + del swig_import_helper +else: + import _rec +del version_info +try: + _swig_property = property +except NameError: + pass # Python < 2.2 doesn't have 'property'. + + +def _swig_setattr_nondynamic(self, class_type, name, value, static=1): + if (name == "thisown"): + return self.this.own(value) + if (name == "this"): + if type(value).__name__ == 'SwigPyObject': + self.__dict__[name] = value + return + method = class_type.__swig_setmethods__.get(name, None) + if method: + return method(self, value) + if (not static): + object.__setattr__(self, name, value) + else: + raise AttributeError("You cannot add attributes to %s" % self) + + +def _swig_setattr(self, class_type, name, value): + return _swig_setattr_nondynamic(self, class_type, name, value, 0) + + +def _swig_getattr_nondynamic(self, class_type, name, static=1): + if (name == "thisown"): + return self.this.own() + method = class_type.__swig_getmethods__.get(name, None) + if method: + return method(self) + if (not static): + return object.__getattr__(self, name) + else: + raise AttributeError(name) + +def _swig_getattr(self, class_type, name): + return _swig_getattr_nondynamic(self, class_type, name, 0) + + +def _swig_repr(self): + try: + strthis = "proxy of " + self.this.__repr__() + except: + strthis = "" + return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,) + +try: + _object = object + _newclass = 1 +except AttributeError: + class _object: + pass + _newclass = 0 + + + +def new(): + return _rec.new() +new = _rec.new + +def delete(arg1): + return _rec.delete(arg1) +delete = _rec.delete + +def getstr(arg1, arg2): + return _rec.getstr(arg1, arg2) +getstr = _rec.getstr + +def getint(arg1, arg2): + return _rec.getint(arg1, arg2) +getint = _rec.getint + +def addstr(arg1, arg2, arg3, arg4): + return _rec.addstr(arg1, arg2, arg3, arg4) +addstr = _rec.addstr + +def addint(arg1, arg2, arg3, arg4): + return _rec.addint(arg1, arg2, arg3, arg4) +addint = _rec.addint + +def load(arg1, arg2, arg3): + return _rec.load(arg1, arg2, arg3) +load = _rec.load + +def addfloat(arg1, arg2, arg3, arg4): + return _rec.addfloat(arg1, arg2, arg3, arg4) +addfloat = _rec.addfloat + +def getfloat(arg1, arg2): + return _rec.getfloat(arg1, arg2) +getfloat = _rec.getfloat + +def addnum(arg1, arg2, arg3, arg4, arg5, arg6, arg7): + return _rec.addnum(arg1, arg2, arg3, arg4, arg5, arg6, arg7) +addnum = _rec.addnum + +def gethex(arg1, arg2): + return _rec.gethex(arg1, arg2) +gethex = _rec.gethex + +def getnum(arg1, arg2): + return _rec.getnum(arg1, arg2) +getnum = _rec.getnum + +def setstr(arg1, arg2, arg3): + return _rec.setstr(arg1, arg2, arg3) +setstr = _rec.setstr + +def setint(arg1, arg2, arg3): + return _rec.setint(arg1, arg2, arg3) +setint = _rec.setint + +def setnum(arg1, arg2, arg3): + return _rec.setnum(arg1, arg2, arg3) +setnum = _rec.setnum + +def setfloat(arg1, arg2, arg3): + return _rec.setfloat(arg1, arg2, arg3) +setfloat = _rec.setfloat +# This file is compatible with both classic and new-style classes. + + diff --git a/Modules/vms/dtr/rsscanf.c b/Modules/vms/dtr/rsscanf.c new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZHRyL3Jzc2NhbmYuYw== --- /dev/null +++ b/Modules/vms/dtr/rsscanf.c @@ -0,0 +1,505 @@ +/* + * rsscanf.c + * + * vsscanf(), from which the rest of the scanf() + * family is built + * + * Adapted from https://github.com/apache/mynewt-core/blob/master/libc/baselibc/src/vsscanf.c + * + */ + +#include <ctype.h> +#include <stdarg.h> +#include <stddef.h> +#include <inttypes.h> +#include <string.h> +#include <limits.h> +#include <stdio.h> +#include <stdlib.h> + +#ifndef LONG_BIT +#define LONG_BIT (CHAR_BIT*sizeof(long)) +#endif + +#ifndef __STDINT_LOADED +typedef unsigned int uintmax_t; +#endif + +enum flags { + FL_SPLAT = 0x01, /* Drop the value, do not assign */ + FL_INV = 0x02, /* Character-set with inverse */ + FL_WIDTH = 0x04, /* Field width specified */ + FL_MINUS = 0x08, /* Negative number */ +}; + +enum ranks { + rank_char = -2, + rank_short = -1, + rank_int = 0, + rank_long = 1, + rank_longlong = 2, + rank_ptr = INT_MAX /* Special value used for pointers */ +}; + +#define MIN_RANK rank_char +#define MAX_RANK rank_longlong + +#define INTMAX_RANK rank_longlong +#define SIZE_T_RANK rank_long +#define PTRDIFF_T_RANK rank_long + +enum bail { + bail_none = 0, /* No error condition */ + bail_eof, /* Hit EOF */ + bail_err /* Conversion mismatch */ +}; + + + +static inline int digitval(int ch) +{ + if (ch >= '0' && ch <= '9') { + return ch - '0'; + } else if (ch >= 'A' && ch <= 'Z') { + return ch - 'A' + 10; + } else if (ch >= 'a' && ch <= 'z') { + return ch - 'a' + 10; + } else { + return -1; + } +} + +static uintmax_t strntoumax(const char *nptr, char **endptr, int base, size_t n) +{ + int minus = 0; + uintmax_t v = 0; + int d; + + while (n && isspace((unsigned char)*nptr)) { + nptr++; + n--; + } + + /* Single optional + or - */ + if (n) { + char c = *nptr; + if (c == '-' || c == '+') { + minus = (c == '-'); + nptr++; + n--; + } + } + + if (base == 0) { + if (n >= 2 && nptr[0] == '0' && + (nptr[1] == 'x' || nptr[1] == 'X')) { + n -= 2; + nptr += 2; + base = 16; + } else if (n >= 1 && nptr[0] == '0') { + n--; + nptr++; + base = 8; + } else { + base = 10; + } + } else if (base == 16) { + if (n >= 2 && nptr[0] == '0' && + (nptr[1] == 'x' || nptr[1] == 'X')) { + n -= 2; + nptr += 2; + } + } + + while (n && (d = digitval(*nptr)) >= 0 && d < base) { + v = v * base + d; + n--; + nptr++; + } + + if (endptr) + *endptr = (char *)nptr; + + return minus ? -v : v; +} + + +static inline const char *skipspace(const char *p) +{ + while (isspace((unsigned char)*p)) + p++; + return p; +} + +#undef set_bit +static inline void set_bit(unsigned long *bitmap, unsigned int bit) +{ + bitmap[bit / LONG_BIT] |= 1UL << (bit % LONG_BIT); +} + +#undef test_bit +static inline int test_bit(unsigned long *bitmap, unsigned int bit) +{ + return (int)(bitmap[bit / LONG_BIT] >> (bit % LONG_BIT)) & 1; +} + +int rsscanf(const char *buffer, const char *format, char ***argv) +{ + const char *p = format; + char ch; + unsigned char uc; + const char *q = buffer; + const char *qq; + uintmax_t val = 0; + int rank = rank_int; /* Default rank */ + unsigned int width = UINT_MAX; + int base; + enum flags flags = 0; + enum { + st_normal, /* Ground state */ + st_flags, /* Special flags */ + st_width, /* Field width */ + st_modifiers, /* Length or conversion modifiers */ + st_match_init, /* Initial state of %[ sequence */ + st_match, /* Main state of %[ sequence */ + st_match_range, /* After - in a %[ sequence */ + } state = st_normal; + char *sarg = NULL; /* %s %c or %[ string argument */ + enum bail bail = bail_none; + int sign; + int converted = 0; /* Successful conversions */ + unsigned long matchmap[((1 << CHAR_BIT) + (LONG_BIT - 1)) / LONG_BIT]; + int matchinv = 0; /* Is match map inverted? */ + unsigned char range_start = 0; + (void)sign; + char tmp[256]; + + *argv = NULL; + + while ((ch = *p++) && !bail) { + switch (state) { + case st_normal: + if (ch == '%') { + state = st_flags; + flags = 0; + rank = rank_int; + width = UINT_MAX; + } else if (isspace((unsigned char)ch)) { + q = skipspace(q); + } else { + if (*q == ch) + q++; + else + bail = bail_err; /* Match failure */ + } + break; + + case st_flags: + switch (ch) { + case '*': + flags |= FL_SPLAT; + break; + case '0': + case '1': + case '2': + case '3': + case '4': + case '5': + case '6': + case '7': + case '8': + case '9': + width = (ch - '0'); + state = st_width; + flags |= FL_WIDTH; + break; + default: + state = st_modifiers; + p--; /* Process this character again */ + break; + } + break; + + case st_width: + if (ch >= '0' && ch <= '9') { + width = width * 10 + (ch - '0'); + } else { + state = st_modifiers; + p--; /* Process this character again */ + } + break; + + case st_modifiers: + switch (ch) { + /* Length modifiers - nonterminal sequences */ + case 'h': + rank--; /* Shorter rank */ + break; + case 'l': + rank++; /* Longer rank */ + break; + case 'j': + rank = INTMAX_RANK; + break; + case 'z': + rank = SIZE_T_RANK; + break; + case 't': + rank = PTRDIFF_T_RANK; + break; + case 'L': + case 'q': + rank = rank_longlong; /* long double/long long */ + break; + + default: + /* Output modifiers - terminal sequences */ + /* Next state will be normal */ + state = st_normal; + + /* Canonicalize rank */ + if (rank < MIN_RANK) + rank = MIN_RANK; + else if (rank > MAX_RANK) + rank = MAX_RANK; + + switch (ch) { + case 'P': /* Upper case pointer */ + case 'p': /* Pointer */ + rank = rank_ptr; + base = 0; + sign = 0; + goto scan_int; + + case 'i': /* Base-independent integer */ + base = 0; + sign = 1; + goto scan_int; + + case 'd': /* Decimal integer */ + base = 10; + sign = 1; + goto scan_int; + + case 'o': /* Octal integer */ + base = 8; + sign = 0; + goto scan_int; + + case 'u': /* Unsigned decimal integer */ + base = 10; + sign = 0; + goto scan_int; + + case 'x': /* Hexadecimal integer */ + case 'X': + base = 16; + sign = 0; + goto scan_int; + + case 'n': /* # of characters consumed */ + val = (q - buffer); + goto set_integer; + + scan_int: + q = skipspace(q); + if (!*q) { + bail = bail_eof; + break; + } + val = + strntoumax(q, (char **)&qq, base, + width); + if (qq == q) { + bail = bail_err; + break; + } + q = qq; + if (!(flags & FL_SPLAT)) + converted++; + /* fall through */ + + set_integer: + if (!(flags & FL_SPLAT)) { + switch (rank) { + case rank_char: + sprintf(tmp, "%c", *(char*)&val); + *argv = realloc(*argv, (converted + 1) * sizeof(char *)); + (*argv)[converted - 1] = strdup(tmp); + break; + case rank_short: + sprintf(tmp, "%d", *(short*)&val); + *argv = realloc(*argv, (converted + 1) * sizeof(char *)); + (*argv)[converted - 1] = strdup(tmp); + break; + case rank_int: + sprintf(tmp, "%d", *(int*)&val); + *argv = realloc(*argv, (converted + 1) * sizeof(char *)); + (*argv)[converted - 1] = strdup(tmp); + break; + case rank_long: + sprintf(tmp, "%ld", *(long*)&val); + *argv = realloc(*argv, (converted + 1) * sizeof(char *)); + (*argv)[converted - 1] = strdup(tmp); + break; + case rank_longlong: + sprintf(tmp, "%lld", *(long long int*)&val); + *argv = realloc(*argv, (converted + 1) * sizeof(char *)); + (*argv)[converted - 1] = strdup(tmp); + break; + case rank_ptr: + sprintf(tmp, "%llx", *(void**)&val); + *argv = realloc(*argv, (converted + 1) * sizeof(char *)); + (*argv)[converted - 1] = strdup(tmp); + break; + } + } + break; + + case 'c': /* Character */ + /* Default width == 1 */ + width = (flags & FL_WIDTH) ? width : 1; + if (flags & FL_SPLAT) { + while (width--) { + if (!*q) { + bail = bail_eof; + break; + } + } + } else { + sarg = tmp; + while (width--) { + if (!*q) { + bail = bail_eof; + break; + } + *sarg++ = *q++; + } + if (!bail) { + converted++; + *sarg = '\0'; + *argv = realloc(*argv, (converted + 1) * sizeof(char *)); + (*argv)[converted - 1] = strdup(tmp); + } + } + break; + + case 's': /* String */ + uc = 1; /* Anything nonzero */ + if (flags & FL_SPLAT) { + while (width-- && (uc = *q) && + !isspace(uc)) { + q++; + } + } else { + char *sp; + sp = sarg = tmp; + while (width-- && (uc = *q) && + !isspace(uc)) { + *sp++ = uc; + q++; + } + if (sarg != sp) { + /* Terminate output */ + *sp = '\0'; + converted++; + *argv = realloc(*argv, (converted + 1) * sizeof(char *)); + (*argv)[converted - 1] = strdup(tmp); + } + } + if (!uc) + bail = bail_eof; + break; + + case '[': /* Character range */ + sarg = (flags & FL_SPLAT) ? NULL + : tmp; + state = st_match_init; + matchinv = 0; + memset(matchmap, 0, sizeof matchmap); + break; + + case '%': /* %% sequence */ + if (*q == '%') + q++; + else + bail = bail_err; + break; + + default: /* Anything else */ + /* Unknown sequence */ + bail = bail_err; + break; + } + } + break; + + case st_match_init: /* Initial state for %[ match */ + if (ch == '^' && !(flags & FL_INV)) { + matchinv = 1; + } else { + set_bit(matchmap, (unsigned char)ch); + state = st_match; + } + break; + + case st_match: /* Main state for %[ match */ + if (ch == ']') { + goto match_run; + } else if (ch == '-') { + range_start = (unsigned char)ch; + state = st_match_range; + } else { + set_bit(matchmap, (unsigned char)ch); + } + break; + + case st_match_range: /* %[ match after - */ + if (ch == ']') { + /* - was last character */ + set_bit(matchmap, (unsigned char)'-'); + goto match_run; + } else { + int i; + for (i = range_start; i < (unsigned char)ch; + i++) + set_bit(matchmap, i); + state = st_match; + } + break; + + match_run: /* Match expression finished */ + qq = q; + uc = 1; /* Anything nonzero */ + while (width && (uc = *q) + && test_bit(matchmap, uc)^matchinv) { + if (sarg) + *sarg++ = uc; + q++; + } + if (q != qq && sarg) { + *sarg = '\0'; + converted++; + *argv = realloc(*argv, (converted + 1) * sizeof(char *)); + (*argv)[converted - 1] = strdup(tmp); + } else { + bail = bail_err; + } + if (!uc) + bail = bail_eof; + break; + } + } + + if (converted) { + (*argv)[converted] = NULL; + } + + if (bail == bail_eof && !converted) { + converted = -1; /* Return EOF (-1) */ + } + + + return converted; +} + diff --git a/Modules/vms/dvidef/dvidef.i b/Modules/vms/dvidef/dvidef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZHZpZGVmL2R2aWRlZi5p --- /dev/null +++ b/Modules/vms/dvidef/dvidef.i @@ -0,0 +1,298 @@ +%module dvidef + +%constant int DVI__DEVCHAR = 2; +%constant int DVI__DEVCLASS = 4; +%constant int DVI__DEVTYPE = 6; +%constant int DVI__DEVBUFSIZ = 8; +%constant int DVI__DEVDEPEND = 10; +%constant int DVI__UNIT = 12; +%constant int DVI__PID = 14; +%constant int DVI__OWNUIC = 16; +%constant int DVI__VPROT = 18; +%constant int DVI__ERRCNT = 20; +%constant int DVI__OPCNT = 22; +%constant int DVI__RECSIZ = 24; +%constant int DVI__MAXBLOCK = 26; +%constant int DVI__DEVDEPEND2 = 28; +%constant int DVI__REFCNT = 30; +%constant int DVI__DEVNAM = 32; +%constant int DVI__VOLNAM = 34; +%constant int DVI__SECTORS = 36; +%constant int DVI__TRACKS = 38; +%constant int DVI__CYLINDERS = 40; +%constant int DVI__FREEBLOCKS = 42; +%constant int DVI__LOGVOLNAM = 44; +%constant int DVI__VOLNUMBER = 46; +%constant int DVI__VOLCOUNT = 48; +%constant int DVI__ROOTDEVNAM = 50; +%constant int DVI__NEXTDEVNAM = 52; +%constant int DVI__TRANSCNT = 54; +%constant int DVI__MOUNTCNT = 56; +%constant int DVI__CLUSTER = 58; +%constant int DVI__MAXFILES = 60; +%constant int DVI__SERIALNUM = 62; +%constant int DVI__ACPPID = 64; +%constant int DVI__ACPTYPE = 66; +%constant int DVI__CONCEALED = 68; +%constant int DVI__REC = 70; +%constant int DVI__CCL = 72; +%constant int DVI__TRM = 74; +%constant int DVI__DIR = 76; +%constant int DVI__SDI = 78; +%constant int DVI__SQD = 80; +%constant int DVI__SPL = 82; +%constant int DVI__OPR = 84; +%constant int DVI__RCT = 86; +%constant int DVI__NET = 88; +%constant int DVI__FOD = 90; +%constant int DVI__DUA = 92; +%constant int DVI__SHR = 94; +%constant int DVI__GEN = 96; +%constant int DVI__AVL = 98; +%constant int DVI__MNT = 100; +%constant int DVI__MBX = 102; +%constant int DVI__DMT = 104; +%constant int DVI__ELG = 106; +%constant int DVI__ALL = 108; +%constant int DVI__FOR = 110; +%constant int DVI__SWL = 112; +%constant int DVI__IDV = 114; +%constant int DVI__ODV = 116; +%constant int DVI__RND = 118; +%constant int DVI__RTM = 120; +%constant int DVI__RCK = 122; +%constant int DVI__WCK = 124; +%constant int DVI__TT_PASSALL = 126; +%constant int DVI__TT_NOECHO = 128; +%constant int DVI__TT_NOTYPEAHD = 130; +%constant int DVI__TT_ESCAPE = 132; +%constant int DVI__TT_HOSTSYNC = 134; +%constant int DVI__TT_TTSYNC = 136; +%constant int DVI__TT_SCRIPT = 138; +%constant int DVI__TT_LOWER = 140; +%constant int DVI__TT_MECHTAB = 142; +%constant int DVI__TT_WRAP = 144; +%constant int DVI__TT_CRFILL = 146; +%constant int DVI__TT_LFFILL = 148; +%constant int DVI__TT_SCOPE = 150; +%constant int DVI__TT_REMOTE = 152; +%constant int DVI__TT_EIGHTBIT = 154; +%constant int DVI__TT_MBXDSABL = 156; +%constant int DVI__TT_NOBRDCST = 158; +%constant int DVI__TT_READSYNC = 160; +%constant int DVI__TT_MECHFORM = 162; +%constant int DVI__TT_HALFDUP = 164; +%constant int DVI__TT_MODEM = 166; +%constant int DVI__TT_OPER = 168; +%constant int DVI__TT_PAGE = 170; +%constant int DVI__TT_LOCALECHO = 172; +%constant int DVI__TT_AUTOBAUD = 174; +%constant int DVI__TT_HANGUP = 176; +%constant int DVI__TT_MODHANGUP = 178; +%constant int DVI__TT_BRDCSTMBX = 180; +%constant int DVI__TT_DMA = 182; +%constant int DVI__TT_ALTYPEAHD = 184; +%constant int DVI__TT_SETSPEED = 186; +%constant int DVI__TT_DCL_MAILBX = 188; +%constant int DVI__TT_EDITING = 190; +%constant int DVI__TT_INSERT = 192; +%constant int DVI__TT_FALLBACK = 194; +%constant int DVI__TT_DIALUP = 196; +%constant int DVI__TT_SECURE = 198; +%constant int DVI__TT_DISCONNECT = 200; +%constant int DVI__TT_PASTHRU = 202; +%constant int DVI__TT_SIXEL = 204; +%constant int DVI__TT_DRCS = 206; +%constant int DVI__TT_PRINTER = 208; +%constant int DVI__TT_APP_KEYPAD = 210; +%constant int DVI__TT_SYSPWD = 212; +%constant int DVI__TT_ANSICRT = 214; +%constant int DVI__TT_REGIS = 216; +%constant int DVI__TT_BLOCK = 218; +%constant int DVI__TT_AVO = 220; +%constant int DVI__TT_EDIT = 222; +%constant int DVI__TT_DECCRT = 224; +%constant int DVI__STS = 226; +%constant int DVI__DEVSTS = 228; +%constant int DVI__DEVCHAR2 = 230; +%constant int DVI__FULLDEVNAM = 232; +%constant int DVI__LOCKID = 234; +%constant int DVI__ALLDEVNAM = 236; +%constant int DVI__VOLSETMEM = 238; +%constant int DVI__DEVLOCKNAM = 240; +%constant int DVI__ALLOCLASS = 242; +%constant int DVI__ALT_HOST_AVAIL = 244; +%constant int DVI__ALT_HOST_NAME = 246; +%constant int DVI__ALT_HOST_TYPE = 248; +%constant int DVI__HOST_AVAIL = 250; +%constant int DVI__HOST_COUNT = 252; +%constant int DVI__HOST_NAME = 254; +%constant int DVI__HOST_TYPE = 256; +%constant int DVI__REMOTE_DEVICE = 258; +%constant int DVI__SERVED_DEVICE = 260; +%constant int DVI__SHDW_CATCHUP_COPYING = 262; +%constant int DVI__SHDW_MASTER = 264; +%constant int DVI__SHDW_MASTER_NAME = 266; +%constant int DVI__SHDW_MEMBER = 268; +%constant int DVI__SHDW_MERGE_COPYING = 270; +%constant int DVI__SHDW_NEXT_MBR_NAME = 272; +%constant int DVI__TT_PHYDEVNAM = 274; +%constant int DVI__TT_DECCRT2 = 276; +%constant int DVI__MEDIA_NAME = 278; +%constant int DVI__MEDIA_TYPE = 280; +%constant int DVI__MEDIA_ID = 282; +%constant int DVI__SHDW_FAILED_MEMBER = 284; +%constant int DVI__MSCP_UNIT_NUMBER = 286; +%constant int DVI__DISPLAY_DEVNAM = 288; +%constant int DVI__TT_ACCPORNAM = 290; +%constant int DVI__DEVDEPEND3 = 292; +%constant int DVI__TT_MULTISESSION = 294; +%constant int DVI__TT_DECCRT3 = 296; +%constant int DVI__SET_HOST_TERMINAL = 298; +%constant int DVI__DFS_ACCESS = 300; +%constant int DVI__DAPDEVNAM = 302; +%constant int DVI__TT_DECCRT4 = 304; +%constant int DVI__TT_CHARSET = 306; +%constant int DVI__TT_CS_KANA = 308; +%constant int DVI__TT_CS_KANJI = 310; +%constant int DVI__TT_CS_HANZI = 312; +%constant int DVI__TT_CS_HANGUL = 314; +%constant int DVI__TT_CS_HANYU = 316; +%constant int DVI__TT_CS_THAI = 318; +%constant int DVI__DEVDEPEND4 = 320; +%constant int DVI__DEVICE_TYPE_NAME = 322; +%constant int DVI__TT_ASIAN_MODE = 324; +%constant int DVI__PREFERRED_CPU = 326; +%constant int DVI__TT_DECCRT5 = 328; +%constant int DVI__TT_ANSI_COLOR = 330; +%constant int DVI__MT3_SUPPORTED = 332; +%constant int DVI__MT3_DENSITY = 334; +%constant int DVI__DRIVER_IMAGE_NAME = 336; +%constant int DVI__CLIENT_DEVICE = 338; +%constant int DVI__FC_PORT_NAME = 340; +%constant int DVI__FC_NODE_NAME = 342; +%constant int DVI__WWID = 344; +%constant int DVI__VOLCHAR = 346; +%constant int DVI__HBVS_MASTER_MEMBER = 348; +%constant int DVI__MULTIPATH = 350; +%constant int DVI__MPDEV_CURRENT_PATH = 352; +%constant int DVI__VOLSIZE = 354; +%constant int DVI__EXPSIZE = 356; +%constant int DVI__QLEN = 358; +%constant int DVI__SHDW_SITE = 360; +%constant int DVI__SHDW_MBR_COUNT = 362; +%constant int DVI__SHDW_DEVICE_COUNT = 364; +%constant int DVI__SHDW_MBR_READ_COST = 366; +%constant int DVI__SHDW_READ_SOURCE = 368; +%constant int DVI__SHDW_TIMEOUT = 370; +%constant int DVI__DVI_UNUSED_1 = 372; +%constant int DVI__SHDW_GENERATION = 374; +%constant int DVI__SHDW_STATUS = 376; +%constant int DVI__SHDW_MBR_COPY_DONE = 378; +%constant int DVI__SHDW_MBR_MERGE_DONE = 380; +%constant int DVI__SHDW_MINIMERGE_ENABLE = 382; +%constant int DVI__DVI_UNUSED_2 = 384; +%constant int DVI__SHDW_COPIER_NODE = 386; +%constant int DVI__SHDW_MASTER_MBR = 388; +%constant int DVI__MPDEV_AUTO_PATH_SW_CNT = 390; +%constant int DVI__MPDEV_MAN_PATH_SW_CNT = 392; +%constant int DVI__WRITETHRU_CACHE_ENABLED = 394; +%constant int DVI__NOCACHE_ON_VOLUME = 396; +%constant int DVI__MOUNTVER_ELIGIBLE = 398; +%constant int DVI__ERASE_ON_DELETE = 400; +%constant int DVI__NOHIGHWATER = 402; +%constant int DVI__NOSHARE_MOUNTED = 404; +%constant int DVI__CLUSLOCK = 406; +%constant int DVI__ODS2_SUBSET0 = 408; +%constant int DVI__PROT_SUBSYSTEM_ENABLED = 410; +%constant int DVI__ODS5 = 412; +%constant int DVI__ACCESSTIMES_RECORDED = 414; +%constant int DVI__HARDLINKS_SUPPORTED = 416; +%constant int DVI__SCSI_DEVICE_FIRMWARE_REV = 418; +%constant int DVI__TOTAL_PATH_COUNT = 420; +%constant int DVI__AVAILABLE_PATH_COUNT = 422; +%constant int DVI__VOLUME_EXTEND_QUANTITY = 424; +%constant int DVI__MOUNT_TIME = 426; +%constant int DVI__VOLUME_MOUNT_SYS = 428; +%constant int DVI__VOLUME_MOUNT_GROUP = 430; +%constant int DVI__PATH_AVAILABLE = 432; +%constant int DVI__PATH_USER_DISABLED = 434; +%constant int DVI__PATH_NOT_RESPONDING = 436; +%constant int DVI__PATH_POLL_ENABLED = 438; +%constant int DVI__MVSUPMSG = 440; +%constant int DVI__PATH_SWITCH_TO_TIME = 442; +%constant int DVI__PATH_SWITCH_FROM_TIME = 444; +%constant int DVI__ERROR_RESET_TIME = 446; +%constant int DVI__DEVICE_MAX_IO_SIZE = 448; +%constant int DVI__VOLUME_RETAIN_MAX = 450; +%constant int DVI__VOLUME_RETAIN_MIN = 452; +%constant int DVI__PREFERRED_CPU_BITMAP = 454; +%constant int DVI__MAILBOX_INITIAL_QUOTA = 456; +%constant int DVI__MAILBOX_BUFFER_QUOTA = 458; +%constant int DVI__VOLUME_WINDOW = 460; +%constant int DVI__VOLUME_SPOOLED_DEV_CNT = 462; +%constant int DVI__VOLUME_PENDING_WRITE_ERR = 464; +%constant int DVI__LAN_SPEED = 466; +%constant int DVI__LAN_LINK_UP = 468; +%constant int DVI__LAN_DEFAULT_MAC_ADDRESS = 470; +%constant int DVI__LAN_MAC_ADDRESS = 472; +%constant int DVI__LAN_FULL_DUPLEX = 474; +%constant int DVI__LAN_ALL_MULTICAST_MODE = 476; +%constant int DVI__LAN_PROMISCUOUS_MODE = 478; +%constant int DVI__LAN_JUMBO_FRAMES_ENABLED = 480; +%constant int DVI__LAN_AUTONEG_ENABLED = 482; +%constant int DVI__LAN_PROTOCOL_TYPE = 484; +%constant int DVI__LAN_PROTOCOL_NAME = 486; +%constant int DVI__LAN_LINK_STATE_VALID = 488; +%constant int DVI__FC_HBA_FIRMWARE_REV = 490; +%constant int DVI__ADAPTER_IDENT = 492; +%constant int DVI__MOUNTCNT_CLUSTER = 494; +%constant int DVI__SHDW_HBMM_RESET_COUNT = 496; +%constant int DVI__SHDW_HBMM_RESET_TIME = 498; +%constant int DVI__SPECIAL_FILES = 500; +%constant int DVI__NOXFCCACHE_ON_VOLUME = 502; +%constant int DVI__XFC_DEPOSING = 504; +%constant int DVI__SSD_USAGE_REMAINING = 506; +%constant int DVI__SSD_LIFE_REMAINING = 508; +%constant int DVI_M_SECONDARY = 0x1L; +%constant int DVI_M_NOREDIRECT = 0x8000L; +%constant int DVI_S_DVIDEF = 2; +%constant int DVI_S_ITEM_CODE = 14; +%constant int DVI_M_VOL_READDIR = 0xFL; +%constant int DVI_C_READDIR_NONE = 0; +%constant int DVI_C_READDIR_VIO = 1; +%constant int DVI_C_READDIR_IO = 2; +%constant int DVI_C_READDIR_ACP = 3; +%constant int DVI_M_VOL_LENGTH_HINT = 0x10L; +%constant int DVI_M_VOL_CACHING_ATTR = 0x20L; +%constant int DVI_M_VOL_ACCESS_DATE = 0x40L; +%constant int DVI_M_VOL_HARDLINK = 0x80L; +%constant int DVI_M_VOL_SET_SECURITY = 0x100L; +%constant int DVI_M_VOL_FID_TO_NAME = 0x200L; +%constant int DVI_M_VOL_ODS1_STYLE_PURGE = 0x400L; +%constant int DVI_M_VOL_SHARED_TRUNCATE = 0x800L; +%constant int DVI_M_VOL_WRITE_BARRIER = 0x1000L; +%constant int DVI_M_VOL_DIRSEQ_QIO = 0x2000L; +%constant int DVI_M_VOL_EFS = 0x4000L; +%constant int DVI_M_VOL_UCS2 = 0x8000L; +%constant int DVI_M_VOL_CASE_VARIANT = 0x10000L; +%constant int DVI_M_VOL_MODDATE = 0x20000L; +%constant int DVI_M_VOL_SPECIAL_FILE = 0x40000L; +%constant int DVI_M_VOL_SSIO = 0x80000L; +%constant int DVI_M_VOL_LOOKUP_SPECIAL = 0x100000L; +%constant int DVI_S_DVIVOLDEF = 16; +%constant int DVI_S_VOL_READDIR = 4; +%constant int DVI_C_SECONDARY = 1; +%constant int DVI_C_ACP_F11V1 = 1; +%constant int DVI_C_ACP_F11V2 = 2; +%constant int DVI_C_ACP_MTA = 3; +%constant int DVI_C_ACP_NET = 4; +%constant int DVI_C_ACP_REM = 5; +%constant int DVI_C_ACP_HBS = 6; +%constant int DVI_C_ACP_F11V3 = 7; +%constant int DVI_C_ACP_F11V4 = 8; +%constant int DVI_C_ACP_F64 = 9; +%constant int DVI_C_ACP_UCX = 10; +%constant int DVI_C_ACP_F11V5 = 11; +%constant int DVI_C_ACP_F11V6 = 12; +%constant int DVI_C_ACP_HBVS = 13; diff --git a/Modules/vms/dvsdef/dvsdef.i b/Modules/vms/dvsdef/dvsdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZHZzZGVmL2R2c2RlZi5p --- /dev/null +++ b/Modules/vms/dvsdef/dvsdef.i @@ -0,0 +1,4 @@ +%module dvsdef + +%constant int DVS__DEVCLASS = 1; +%constant int DVS__DEVTYPE = 2; diff --git a/Modules/vms/efndef/efndef.i b/Modules/vms/efndef/efndef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZWZuZGVmL2VmbmRlZi5p --- /dev/null +++ b/Modules/vms/efndef/efndef.i @@ -0,0 +1,4 @@ +%module efndef + +%constant int EFN_C_ENF = 128; +%constant int EFN_C_CTX = 129; diff --git a/Modules/vms/eradef/eradef.i b/Modules/vms/eradef/eradef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZXJhZGVmL2VyYWRlZi5p --- /dev/null +++ b/Modules/vms/eradef/eradef.i @@ -0,0 +1,9 @@ +%module eradef + +%constant int ERA_K_LODUMMY = 0; +%constant int ERA_K_MEMORY = 1; +%constant int ERA_K_DISK = 2; +%constant int ERA_K_TAPE = 3; +%constant int ERA_K_HIDUMMY = 4; +%constant int ERA_K_MINTYPE = 1; +%constant int ERA_K_MAXTYPE = 3; diff --git a/Modules/vms/fabdef/fabdef.i b/Modules/vms/fabdef/fabdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZmFiZGVmL2ZhYmRlZi5p --- /dev/null +++ b/Modules/vms/fabdef/fabdef.i @@ -0,0 +1,101 @@ +%module fabdef + +%constant int FAB_C_BID = 3; +%constant int FAB_M_PPF_RAT = 0x3FC0L; +%constant int FAB_M_PPF_IND = 0x4000L; +%constant int FAB_M_PPIFI = 0x8000L; +%constant int FAB_M_ASY = 0x1L; +%constant int FAB_M_MXV = 0x2L; +%constant int FAB_M_SUP = 0x4L; +%constant int FAB_M_TMP = 0x8L; +%constant int FAB_M_TMD = 0x10L; +%constant int FAB_M_DFW = 0x20L; +%constant int FAB_M_SQO = 0x40L; +%constant int FAB_M_RWO = 0x80L; +%constant int FAB_M_POS = 0x100L; +%constant int FAB_M_WCK = 0x200L; +%constant int FAB_M_NEF = 0x400L; +%constant int FAB_M_RWC = 0x800L; +%constant int FAB_M_DMO = 0x1000L; +%constant int FAB_M_SPL = 0x2000L; +%constant int FAB_M_SCF = 0x4000L; +%constant int FAB_M_DLT = 0x8000L; +%constant int FAB_M_NFS = 0x10000L; +%constant int FAB_M_UFO = 0x20000L; +%constant int FAB_M_PPF = 0x40000L; +%constant int FAB_M_INP = 0x80000L; +%constant int FAB_M_CTG = 0x100000L; +%constant int FAB_M_CBT = 0x200000L; +%constant int FAB_M_SYNCSTS = 0x400000L; +%constant int FAB_M_RCK = 0x800000L; +%constant int FAB_M_NAM = 0x1000000L; +%constant int FAB_M_CIF = 0x2000000L; +%constant int FAB_M_ESC = 0x8000000L; +%constant int FAB_M_TEF = 0x10000000L; +%constant int FAB_M_OFP = 0x20000000L; +%constant int FAB_M_KFO = 0x40000000L; +%constant int FAB_M_EXTEND_FOP = 0x80000000L; +%constant int FAB_M_ERL = 0x8000L; +%constant int FAB_M_PUT = 0x1L; +%constant int FAB_M_GET = 0x2L; +%constant int FAB_M_DEL = 0x4L; +%constant int FAB_M_UPD = 0x8L; +%constant int FAB_M_TRN = 0x10L; +%constant int FAB_M_BIO = 0x20L; +%constant int FAB_M_BRO = 0x40L; +%constant int FAB_M_EXE = 0x80L; +%constant int FAB_M_SHRPUT = 0x1L; +%constant int FAB_M_SHRGET = 0x2L; +%constant int FAB_M_SHRDEL = 0x4L; +%constant int FAB_M_SHRUPD = 0x8L; +%constant int FAB_M_MSE = 0x10L; +%constant int FAB_M_NIL = 0x20L; +%constant int FAB_M_UPI = 0x40L; +%constant int FAB_M_NQL = 0x80L; +%constant int FAB_M_ORG = 0xF0L; +%constant int FAB_C_SEQ = 0; +%constant int FAB_C_REL = 16; +%constant int FAB_C_IDX = 32; +%constant int FAB_C_HSH = 48; +%constant int FAB_C_SPECIAL = 64; +%constant int FAB_M_FTN = 0x1L; +%constant int FAB_M_CR = 0x2L; +%constant int FAB_M_PRN = 0x4L; +%constant int FAB_M_BLK = 0x8L; +%constant int FAB_M_MSB = 0x10L; +%constant int FAB_C_FIFO = 1; +%constant int FAB_C_CHAR_SPECIAL = 2; +%constant int FAB_C_BLOCK_SPECIAL = 3; +%constant int FAB_C_SYMLINK = 4; +%constant int FAB_C_SYMBOLIC_LINK = 5; +%constant int FAB_C_RFM_DFLT = 2; +%constant int FAB_C_UDF = 0; +%constant int FAB_C_FIX = 1; +%constant int FAB_C_VAR = 2; +%constant int FAB_C_VFC = 3; +%constant int FAB_C_STM = 4; +%constant int FAB_C_STMLF = 5; +%constant int FAB_C_STMCR = 6; +%constant int FAB_C_MAXRFM = 6; +%constant int FAB_M_ONLY_RU = 0x1L; +%constant int FAB_M_RU = 0x2L; +%constant int FAB_M_BI = 0x4L; +%constant int FAB_M_AI = 0x8L; +%constant int FAB_M_AT = 0x10L; +%constant int FAB_M_NEVER_RU = 0x20L; +%constant int FAB_M_JOURNAL_FILE = 0x40L; +%constant int FAB_M_SSIO_RQST = 0x1L; +%constant int FAB_M_SSIO_GRANTED = 0x2L; +%constant int FAB_M_SSIO_FOC = 0x4L; +%constant int FAB_M_RCF_RU = 0x1L; +%constant int FAB_M_RCF_AI = 0x2L; +%constant int FAB_M_RCF_BI = 0x4L; +%constant int FAB_S_FABDEF = 80; +%constant int FAB_S_PPF_RAT = 8; +%constant int FAB_S_ORG = 4; +%constant int FAB_S_LNM_MODE = 2; +%constant int FAB_S_CHAN_MODE = 2; +%constant int FAB_S_FILE_MODE = 2; +%constant int FAB_S_CALLERS_MODE = 2; +%constant int FAB_K_BLN = 80; +%constant int FAB_C_BLN = 80; diff --git a/Modules/vms/fdldef/fdldef.i b/Modules/vms/fdldef/fdldef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZmRsZGVmL2ZkbGRlZi5p --- /dev/null +++ b/Modules/vms/fdldef/fdldef.i @@ -0,0 +1,11 @@ +%module fdldef + +%constant int FDL_C_VERSION = 2; +%constant int FDL_K_VERSION = 2; +%constant int FDL_M_SIGNAL = 0x1L; +%constant int FDL_M_FDL_STRING = 0x2L; +%constant int FDL_M_DEFAULT_STRING = 0x4L; +%constant int FDL_M_FULL_OUTPUT = 0x8L; +%constant int FDL_M__CALLBACK = 0x10L; +%constant int FDL_M_LONG_NAMES = 0x20L; +%constant int FDL_S_FDLDEF = 1; diff --git a/Modules/vms/fpdef/fpdef.i b/Modules/vms/fpdef/fpdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZnBkZWYvZnBkZWYuaQ== --- /dev/null +++ b/Modules/vms/fpdef/fpdef.i @@ -0,0 +1,19 @@ +%module fpdef + +%constant int FP_K_BALANCE_PORTS = 1; +%constant int FP_K_CPU_CONFIGURED = 2; +%constant int FP_K_CPU_STARTING = 3; +%constant int FP_K_CPU_STOPPING = 4; +%constant int FP_K_CPU_STOP_FAILED = 5; +%constant int HWINT_M_CPU_SELECTED = 0x1L; +%constant int HWINT_M_CPU_NOT_IN_RAD = 0x2L; +%constant int HWINT_M_PRIMARY = 0x4L; +%constant int HWINT_S_HWINT_FLAGS = 8; +%constant int FPRAD_S_FPRAD = 16; +%constant int FP_M_SPL_HOLD = 0x1L; +%constant int FP_K_LENGTH = 96; +%constant int FP_C_LENGTH = 96; +%constant int FP_S_FP = 96; +%constant int FP_S_SIZE = 8; +%constant int FP_S_USEABLE_CPUS = 8; +%constant int FP_S_FAVORED_CPUS = 8; diff --git a/Modules/vms/fscndef/fscndef.i b/Modules/vms/fscndef/fscndef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvZnNjbmRlZi9mc2NuZGVmLmk= --- /dev/null +++ b/Modules/vms/fscndef/fscndef.i @@ -0,0 +1,26 @@ +%module fscndef + +%constant int FSCN_M_NODE = 0x1L; +%constant int FSCN_M_DEVICE = 0x2L; +%constant int FSCN_M_ROOT = 0x4L; +%constant int FSCN_M_DIRECTORY = 0x8L; +%constant int FSCN_M_NAME = 0x10L; +%constant int FSCN_M_TYPE = 0x20L; +%constant int FSCN_M_VERSION = 0x40L; +%constant int FSCN_M_NODE_PRIMARY = 0x80L; +%constant int FSCN_M_NODE_ACS = 0x100L; +%constant int FSCN_M_NODE_SECONDARY = 0x200L; +%constant int FSCN_S_FLDFLAGS = 4; +%constant int FSCN__FILESPEC = 1; +%constant int FSCN__NODE = 2; +%constant int FSCN__DEVICE = 3; +%constant int FSCN__ROOT = 4; +%constant int FSCN__DIRECTORY = 5; +%constant int FSCN__NAME = 6; +%constant int FSCN__TYPE = 7; +%constant int FSCN__VERSION = 8; +%constant int FSCN__NODE_PRIMARY = 9; +%constant int FSCN__NODE_ACS = 10; +%constant int FSCN__NODE_SECONDARY = 11; +%constant int FSCN_S_ITEM_LEN = 8; +%constant int FSCN_S_FSCNDEF = 8; diff --git a/Modules/vms/iccdef/iccdef.i b/Modules/vms/iccdef/iccdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvaWNjZGVmL2ljY2RlZi5p --- /dev/null +++ b/Modules/vms/iccdef/iccdef.i @@ -0,0 +1,22 @@ +%module iccdef + +%constant int IOS_ICC_S_IOS_ICC = 20; +%constant int IOS_ICC_s_parameters = 16; +%constant int IOS_ICC_s_connect = 16; +%constant int IOS_ICC_s_receive = 16; +%constant int IOS_ICC_s_reply = 16; +%constant int IOS_ICC_s_transceive = 16; +%constant int IOS_ICC_s_reply_buffer = 8; +%constant int ICC_C_receive_len = 16; +%constant int ICC_C_reply_len = 8; +%constant int ICC_C_transceive_len = 20; +%constant int ICC_C_MAX_ASSOC_LEN = 31; +%constant int ICC_C_MAX_CONN_DATA_LEN = 1000; +%constant int ICC_M_Synch_Mode = 0x1L; +%constant int ICC_S_ICC_CONNECTION_FLAGS = 1; +%constant int ICC_C_EV_CONNECT = 0; +%constant int ICC_C_EV_DISCONNECT = 1; +%constant int ICC_C_min_event = 0; +%constant int ICC_C_max_event = 1; +%constant int ICC_C_DFLT_ASSOC_HANDLE = 1; +%constant int ICC_C_DEFAULT_MAXFLOWBUFCNT = 5; diff --git a/Modules/vms/ile3/ile3.c b/Modules/vms/ile3/ile3.c new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvaWxlMy9pbGUzLmM= --- /dev/null +++ b/Modules/vms/ile3/ile3.c @@ -0,0 +1,403 @@ +#define __NEW_STARLET 1 + +#include <descrip.h> +#include <starlet.h> +#include <ssdef.h> +#include <iledef.h> +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <ctype.h> +#include <assert.h> + +#include "ile3.h" +#include "lcl.h" + +#ifndef OKAY +#define OKAY(STATUS) (((STATUS) & 1) != 0) +#endif + +#ifndef MIN +#define MIN(a,b) ((a)<(b)?(a):(b)) +#endif + +void init_item(ILE3 *item) { + item->ile3$w_length = 0; + item->ile3$w_code = 0; + item->ile3$ps_bufaddr = NULL; + item->ile3$ps_retlen_addr = NULL; +} + + +void *_new() +{ + LCL_ile3 *obj = NULL; + + obj = calloc(1, sizeof(LCL_ile3)); + assert(obj); + obj->list = calloc(1, sizeof(ILE3)); + assert(obj->list); + obj->types = calloc(1, sizeof(int)); + assert(obj->types); + obj->size = 1; + obj->elem = 0; + init_item(&obj->list[obj->elem]); + return (obj); +} + +int _size(void *addr) { + LCL_ile3 *obj = (LCL_ile3 *) addr; + return obj->size - 1; +} + +void _delete(void *addr) +{ + LCL_ile3 *obj = (LCL_ile3 *) addr; + int i; + ILE3 *item; + + for (i = 0; i < obj->size; i++) { + item = &obj->list[i]; + if (item) { + free(item->ile3$ps_bufaddr); + free(item->ile3$ps_retlen_addr); + free(item); + } + free(obj->types); + } + + free(obj); +} + + +int _getbyte(void *addr, int idx, int n) +{ + LCL_ile3 *obj = (LCL_ile3 *) addr; + ILE3 *item; + unsigned short len; + char *tmp; + + assert((idx >= 0) && (idx <= obj->elem)); + item = &obj->list[idx]; + len = *item->ile3$ps_retlen_addr; + assert(len); + assert(len > n); + tmp = (char *) item->ile3$ps_bufaddr; + return (tmp[n]); +} + + +char *_getstr(void *addr, int idx, int flag) +{ + LCL_ile3 *obj = (LCL_ile3 *) addr; + ILE3 *item; + unsigned short len; + char *tmp; + char *ptr; + + assert((idx >= 0) && (idx <= obj->elem)); + assert((obj->types[idx] == DSC$K_DTYPE_T)); + item = &obj->list[idx]; + + ptr = (char *) item->ile3$ps_bufaddr; + + if (flag) { + len = ptr[0]; + ptr++; + } else { + len = *item->ile3$ps_retlen_addr; + } + + tmp = malloc(len + 1); + assert(tmp); + memcpy(tmp, ptr, len); + tmp[len] = '\0'; + + if (!flag) { + char *cp = &tmp[len - 1]; + while (cp >= tmp && isspace(*cp)) { + *cp = '\0'; + cp--; + } + } + + return (tmp); +} + + +long long _getint(void *addr, int idx) +{ + LCL_ile3 *obj = (LCL_ile3 *) addr; + ILE3 *item; + int type; + + assert((idx >= 0) && (idx <= obj->elem)); + item = &obj->list[idx]; + type = obj->types[idx]; + + switch (type) { + case DSC$K_DTYPE_BU: + return (*(unsigned char *) item->ile3$ps_bufaddr); + case DSC$K_DTYPE_B: + return (*(char *) item->ile3$ps_bufaddr); + case DSC$K_DTYPE_WU: + return (*(unsigned short *) item->ile3$ps_bufaddr); + case DSC$K_DTYPE_W: + return (*(short *) item->ile3$ps_bufaddr); + case DSC$K_DTYPE_LU: + return (*(unsigned int *) item->ile3$ps_bufaddr); + case DSC$K_DTYPE_L: + return (*(int *) item->ile3$ps_bufaddr); + case DSC$K_DTYPE_QU: + return (*(unsigned long long *) item->ile3$ps_bufaddr); + case DSC$K_DTYPE_Q: + return (*(long long *) item->ile3$ps_bufaddr); + default: + abort(); + } +} + + +char *_gethex(void *addr, int idx) +{ + LCL_ile3 *obj = (LCL_ile3 *) addr; + ILE3 *item; + unsigned short size; + int type; + char tmp[32], *val; + + assert((idx >= 0) && (idx <= obj->elem)); + item = &obj->list[idx]; + type = obj->types[idx]; + + switch (type) { + case DSC$K_DTYPE_BU: + sprintf(tmp, "0x%llx", *(unsigned char *) item->ile3$ps_bufaddr); + break; + case DSC$K_DTYPE_B: + sprintf(tmp, "0x%llx", *(char *) item->ile3$ps_bufaddr); + break; + case DSC$K_DTYPE_WU: + sprintf(tmp, "0x%llx", *(unsigned short *) item->ile3$ps_bufaddr); + break; + case DSC$K_DTYPE_W: + sprintf(tmp, "0x%llx", *(short *) item->ile3$ps_bufaddr); + break; + case DSC$K_DTYPE_LU: + sprintf(tmp, "0x%llx", *(unsigned int *) item->ile3$ps_bufaddr); + break; + case DSC$K_DTYPE_L: + sprintf(tmp, "0x%llx", *(int *) item->ile3$ps_bufaddr); + break; + case DSC$K_DTYPE_QU: + sprintf(tmp, "0x%llx", + *(unsigned long long *) item->ile3$ps_bufaddr); + break; + case DSC$K_DTYPE_Q: + sprintf(tmp, "0x%llx", *(long long *) item->ile3$ps_bufaddr); + break; + default: + abort(); + break; + } + + val = strdup(tmp); + assert(val); + return (val); +} + + +void _addstr(void *addr, int code, char *val, unsigned short len) +{ + LCL_ile3 *obj = (LCL_ile3 *) addr; + ILE3 *item; + + assert(obj); + + obj->size++; + obj->list = realloc(obj->list, sizeof(ILE3) * obj->size); + assert(obj->list); + obj->types = realloc(obj->types, sizeof(int) * obj->size); + assert(obj->types); + item = &obj->list[obj->elem]; + + item->ile3$w_code = code; + item->ile3$ps_retlen_addr = calloc(1, 2); + assert(item->ile3$ps_retlen_addr); + + if (val) { + item->ile3$w_length = strlen(val); + item->ile3$ps_bufaddr = strdup(val); + assert(item->ile3$ps_bufaddr); + } else { + item->ile3$w_length = len; + item->ile3$ps_bufaddr = calloc(1, len); + assert(item->ile3$ps_bufaddr); + } + *item->ile3$ps_retlen_addr = item->ile3$w_length; + + obj->types[obj->elem] = DSC$K_DTYPE_T; + obj->elem++; + init_item(&obj->list[obj->elem]); +} + +int size_by_type(int type) { + switch (type) { + case DSC$K_DTYPE_BU: + case DSC$K_DTYPE_B: + return 1; + case DSC$K_DTYPE_WU: + case DSC$K_DTYPE_W: + return 2; + case DSC$K_DTYPE_LU: + case DSC$K_DTYPE_L: + return 4; + case DSC$K_DTYPE_QU: + case DSC$K_DTYPE_Q: + return 8; + default: + return 0; + } +} + +void _addint(void *addr, int code, int type, long long val) +{ + LCL_ile3 *obj = (LCL_ile3 *) addr; + ILE3 *item; + unsigned short size; + + assert(obj); + + obj->size++; + obj->list = realloc(obj->list, sizeof(ILE3) * obj->size); + assert(obj->list); + obj->types = realloc(obj->types, sizeof(int) * obj->size); + assert(obj->types); + item = &obj->list[obj->elem]; + + size = size_by_type(type); + assert(size); + + item->ile3$w_length = size; + item->ile3$w_code = code; + item->ile3$ps_bufaddr = calloc(1, size); + assert(item->ile3$ps_bufaddr); + item->ile3$ps_retlen_addr = calloc(1, 2); + assert(item->ile3$ps_retlen_addr); + + memcpy(item->ile3$ps_bufaddr, &val, size); + + obj->types[obj->elem] = type; + *item->ile3$ps_retlen_addr = size; + + obj->elem++; + init_item(&obj->list[obj->elem]); +} + + +void _addstrd(void *addr, int code, char *val, unsigned char len) +{ + LCL_ile3 *obj = (LCL_ile3 *) addr; + ILE3 *item; + int n; + char *ptr; + + assert(obj); + assert(val); + + obj->size++; + obj->list = realloc(obj->list, sizeof(ILE3) * obj->size); + assert(obj->list); + obj->types = realloc(obj->types, sizeof(int) * obj->size); + assert(obj->types); + item = &obj->list[obj->elem]; + + item->ile3$w_code = code; + item->ile3$ps_retlen_addr = calloc(1, 2); + assert(item->ile3$ps_retlen_addr); + + item->ile3$w_length = len; + item->ile3$ps_bufaddr = calloc(1, len); + assert(item->ile3$ps_bufaddr); + memset(item->ile3$ps_bufaddr, ' ', len); + + ptr = item->ile3$ps_bufaddr; + n = MIN(strlen(val), len - 1); + *ptr = n; + ptr++; + memcpy(ptr, val, n); + *item->ile3$ps_retlen_addr = (unsigned short)n; + + obj->types[obj->elem] = DSC$K_DTYPE_T; + obj->elem++; + init_item(&obj->list[obj->elem]); +} + + + +void _addstrn(void *addr, int code, char *val, unsigned short len) +{ + LCL_ile3 *obj = (LCL_ile3 *) addr; + ILE3 *item; + + assert(obj); + assert(val); + + obj->size++; + obj->list = realloc(obj->list, sizeof(ILE3) * obj->size); + assert(obj->list); + obj->types = realloc(obj->types, sizeof(int) * obj->size); + assert(obj->types); + item = &obj->list[obj->elem]; + + item->ile3$w_code = code; + item->ile3$ps_retlen_addr = calloc(1, 2); + assert(item->ile3$ps_retlen_addr); + + item->ile3$w_length = len; + item->ile3$ps_bufaddr = calloc(1, len); + assert(item->ile3$ps_bufaddr); + memset(item->ile3$ps_bufaddr, ' ', len); + *item->ile3$ps_retlen_addr = (unsigned short)MIN(len, strlen(val)); + memcpy(item->ile3$ps_bufaddr, val, *item->ile3$ps_retlen_addr); + + obj->types[obj->elem] = DSC$K_DTYPE_T; + obj->elem++; + init_item(&obj->list[obj->elem]); +} + + +void _addbin(void *addr, int code, long long val, unsigned short off, unsigned short num) +{ + LCL_ile3 *obj = (LCL_ile3 *) addr; + ILE3 *item; + char *ptr; + + assert(obj); + // assert((off < num)); + assert(((off + num) <= sizeof(val))); + + obj->size++; + obj->list = realloc(obj->list, sizeof(ILE3) * obj->size); + assert(obj->list); + obj->types = realloc(obj->types, sizeof(int) * obj->size); + assert(obj->types); + item = &obj->list[obj->elem]; + + item->ile3$w_code = code; + item->ile3$ps_retlen_addr = calloc(1, 2); + assert(item->ile3$ps_retlen_addr); + + item->ile3$w_length = num; + item->ile3$ps_bufaddr = malloc(num); + assert(item->ile3$ps_bufaddr); + ptr = ((char*)&val) + off; + memcpy(item->ile3$ps_bufaddr, ptr, num); + + *item->ile3$ps_retlen_addr = num; // initialize retlen + + obj->types[obj->elem] = DSC$K_DTYPE_T; + obj->elem++; + init_item(&obj->list[obj->elem]); +} + diff --git a/Modules/vms/ile3/ile3.h b/Modules/vms/ile3/ile3.h new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvaWxlMy9pbGUzLmg= --- /dev/null +++ b/Modules/vms/ile3/ile3.h @@ -0,0 +1,24 @@ +#ifndef __RTL_H__ +#define __RTL_H__ + +# ifdef __cplusplus + extern "C" { +#endif + +extern void *_new(); +extern void _delete(void *); +extern void _addint(void *, int, int, long long); +extern long long _getint(void *, int); +extern char* _gethex(void *, int); +extern void _addstr(void *, int, char *, unsigned short); +extern void _addstrd(void *, int, char *, unsigned char); +extern void _addstrn(void *, int, char *, unsigned short); +extern char *_getstr(void *, int, int); +extern int _getbyte(void *, int, int); +extern void _addbin(void *, int, long long, unsigned short, unsigned short); +extern int _size(void *); + +# ifdef __cplusplus + } +#endif +#endif diff --git a/Modules/vms/ile3/ile3.i b/Modules/vms/ile3/ile3.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvaWxlMy9pbGUzLmk= --- /dev/null +++ b/Modules/vms/ile3/ile3.i @@ -0,0 +1,46 @@ +%module ile3 + +%{ +#include "ile3.h" +%} + +%include "typemaps.i" +%include <cstring.i> +%cstring_output_allocate(char **OUTPUT, free(*$1)); + +%typemap(out) char * +{ + if (result) { + resultobj = PyUnicode_DecodeUTF8(result, strlen(result), "surrogateescape"); + free(result); + } else { + resultobj = Py_None; + Py_INCREF(resultobj); + } +} + +%rename(new) _new; +%rename(delete) _delete; +%rename(addint) _addint; +%rename(getint) _getint; +%rename(gethex) _gethex; +%rename(addstr) _addstr; +%rename(addstrd) _addstrd; +%rename(addstrn) _addstrn; +%rename(getstr) _getstr; +%rename(getbyte) _getbyte; +%rename(addbin) _addbin; +%rename(size) _size; + +extern void *_new(); +extern void _delete(void *); +extern void _addint(void *, int, int, long long); +extern long long _getint(void *, int); +extern char *_gethex(void *, int); +extern void _addstr(void *, int, char *, unsigned short); +extern void _addstrd(void *, int, char *, unsigned char); +extern void _addstrn(void *, int, char *, unsigned short); +extern char *_getstr(void *, int, int); +extern int _getbyte(void *, int, int); +extern void _addbin(void *, int, long long, unsigned short, unsigned short); +extern int _size(void *); diff --git a/Modules/vms/ile3/lcl.h b/Modules/vms/ile3/lcl.h new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvaWxlMy9sY2wuaA== --- /dev/null +++ b/Modules/vms/ile3/lcl.h @@ -0,0 +1,15 @@ +#ifndef __LCL_H__ +#define __LCL_H__ + +#define __NEW_STARLET 1 +#include <iledef.h> + +typedef struct { + int size; + int elem; + ILE3 *list; + int *types; +} LCL_ile3; + + +#endif diff --git a/Modules/vms/iledef/iledef.i b/Modules/vms/iledef/iledef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvaWxlZGVmL2lsZWRlZi5p --- /dev/null +++ b/Modules/vms/iledef/iledef.i @@ -0,0 +1,19 @@ +%module iledef + +%constant int ILE3_S_ILE3 = 12; +%constant int ILE3_K_LENGTH = 12; +%constant int ILE3_C_LENGTH = 12; +%constant int ILEB_64_S_ILEB_64 = 32; +%constant int ILEB_64_S_LENGTH = 8; +%constant int ILEB_64_S_BUFADDR = 8; +%constant int ILEB_64_S_RETLEN_ADDR = 8; +%constant int ILEB_64_K_LENGTH = 32; +%constant int ILEB_64_C_LENGTH = 32; +%constant int ILE2_S_ILE2 = 8; +%constant int ILE2_K_LENGTH = 8; +%constant int ILE2_C_LENGTH = 8; +%constant int ILEA_64_S_ILEA_64 = 24; +%constant int ILEA_64_S_LENGTH = 8; +%constant int ILEA_64_S_BUFADDR = 8; +%constant int ILEA_64_K_LENGTH = 24; +%constant int ILEA_64_C_LENGTH = 24; diff --git a/Modules/vms/impdef/impdef.i b/Modules/vms/impdef/impdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvaW1wZGVmL2ltcGRlZi5p --- /dev/null +++ b/Modules/vms/impdef/impdef.i @@ -0,0 +1,13 @@ +%module impdef + +%constant int IMP_C_ASYEFN = 30; +%constant int IMP_C_IOREFN = 30; +%constant int IMP_C_ASYQIOEFN = 31; +%constant int IMP_C_SYNCEFN = 27; +%constant int IMP_C_MBXEFN = 26; +%constant int IMP_C_NPIOFILES = 63; +%constant int IMP_C_ENTPERSEG = 15; +%constant int IMP_S_IMPDEF = 112; +%constant int IMP_S_IMP = 112; +%constant int IMP_S_FREEPGLH = 8; +%constant int IMP_S_ASB_LOOKASIDE_LIST = 8; diff --git a/Modules/vms/initdef/initdef.i b/Modules/vms/initdef/initdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvaW5pdGRlZi9pbml0ZGVmLmk= --- /dev/null +++ b/Modules/vms/initdef/initdef.i @@ -0,0 +1,84 @@ +%module initdef + +%constant int INIT_K_DENSITY_800_BPI = 1; +%constant int INIT_K_DENSITY_1600_BPI = 2; +%constant int INIT_K_DENSITY_6250_BPI = 3; +%constant int INIT_K_DENSITY_SINGLE_DISK = 4; +%constant int INIT_K_DENSITY_DOUBLE_DISK = 5; +%constant int INIT_K_DENSITY_DD_DISK = 6; +%constant int INIT_K_DENSITY_HD_DISK = 7; +%constant int INIT_K_DENSITY_COMPACT = 8; +%constant int INIT_K_DENSITY_ED_DISK = 9; +%constant int INIT_K_HOMEBLOCKS_GEOMETRY = 1; +%constant int INIT_K_HOMEBLOCKS_FIXED = 2; +%constant int INIT_K_HOMEBLOCKS_CONTIGUOUS = 3; +%constant int INIT_S_BADBLOCKS_LBN_DEF = 8; +%constant int INIT_S_BADBLOCKS_SEC_DEF = 16; +%constant int INIT__ACCESSED = 1; +%constant int INIT__BADBLOCKS_LBN = 2; +%constant int INIT__BADBLOCKS_SEC = 3; +%constant int INIT__CLUSTERSIZE = 4; +%constant int INIT__COMPACTION = 5; +%constant int INIT__NO_COMPACTION = 6; +%constant int INIT__DENSITY = 7; +%constant int INIT__DIRECTORIES = 8; +%constant int INIT__ERASE = 9; +%constant int INIT__NO_ERASE = 10; +%constant int INIT__EXTENSION = 11; +%constant int INIT__FPROT = 12; +%constant int INIT__HEADERS = 13; +%constant int INIT__HIGHWATER = 14; +%constant int INIT__NO_HIGHWATER = 15; +%constant int INIT__INDEX_BEGINNING = 16; +%constant int INIT__INDEX_BLOCK = 17; +%constant int INIT__INDEX_END = 18; +%constant int INIT__INDEX_MIDDLE = 19; +%constant int INIT__INTERCHANGE = 20; +%constant int INIT__NO_INTERCHANGE = 21; +%constant int INIT__LABEL_ACCESS = 22; +%constant int INIT__LABEL_VOLO = 23; +%constant int INIT__MAXFILES = 24; +%constant int INIT__OVR_ACCESS = 25; +%constant int INIT__NO_OVR_ACCESS = 26; +%constant int INIT__OVR_EXP = 27; +%constant int INIT__NO_OVR_EXP = 28; +%constant int INIT__OVR_VOLO = 29; +%constant int INIT__NO_OVR_VOLO = 30; +%constant int INIT__OWNER = 31; +%constant int INIT__READCHECK = 32; +%constant int INIT__NO_READCHECK = 33; +%constant int INIT__SIZE = 34; +%constant int INIT__STRUCTURE_LEVEL_1 = 35; +%constant int INIT__STRUCTURE_LEVEL_2 = 36; +%constant int INIT__STRUCTURE_LEVEL_2_SUB_0 = 37; +%constant int INIT__USER_NAME = 38; +%constant int INIT__VERIFIED = 39; +%constant int INIT__NO_VERIFIED = 40; +%constant int INIT__VPROT = 41; +%constant int INIT__WINDOW = 42; +%constant int INIT__WRITECHECK = 43; +%constant int INIT__NO_WRITECHECK = 44; +%constant int INIT__MIN_CLASS = 45; +%constant int INIT__MAX_CLASS = 46; +%constant int INIT__NO_PROTECTION = 47; +%constant int INIT__HOMEBLOCKS = 48; +%constant int INIT__STRUCTURE_LEVEL_5 = 49; +%constant int INIT__SHADOW = 50; +%constant int INIT__HARDLINKS = 51; +%constant int INIT__ACCESS_DATES = 52; +%constant int INIT__SPARE = 53; +%constant int INIT__VOLUME_LIMIT = 54; +%constant int INIT__GPT = 55; +%constant int INIT__NO_GPT = 56; +%constant int INIT__ERASE_ON_DELETE = 57; +%constant int INIT__ERASE_ON_INIT = 58; +%constant int INIT__STRUCTURE_LEVEL_6 = 59; +%constant int INIT__LOGSIZE = 60; +%constant int INIT__SPECIAL_FILES = 61; +%constant int INIT__NO_SPECIAL_FILES = 62; +%constant int INIT__LAST_INIT_ITEM = 63; +%constant int INIT__MAX_ITEM_CODE = 62; +%constant int INIT_S_USER_NAME = 12; +%constant int INIT_S_DEVICE_NAME = 64; +%constant int INIT_C_MIN_SECURITY_BLKCNT = 6; +%constant int INIT_C_MIN_GPT_BLKCNT = 34; diff --git a/Modules/vms/iodef/iodef.i b/Modules/vms/iodef/iodef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvaW9kZWYvaW9kZWYuaQ== --- /dev/null +++ b/Modules/vms/iodef/iodef.i @@ -0,0 +1,346 @@ +%module iodef + +%constant int IO__NOP = 0; +%constant int IO__UNLOAD = 1; +%constant int IO__LOADMCODE = 1; +%constant int IO__START_BUS = 1; +%constant int IO__SEEK = 2; +%constant int IO__SPACEFILE = 2; +%constant int IO__STARTMPROC = 2; +%constant int IO__STOP_BUS = 2; +%constant int IO__RECAL = 3; +%constant int IO__DUPLEX = 3; +%constant int IO__STOP = 3; +%constant int IO__DEF_COMP = 3; +%constant int IO__DRVCLR = 4; +%constant int IO__INITIALIZE = 4; +%constant int IO__MIMIC = 4; +%constant int IO__DEF_COMP_LIST = 4; +%constant int IO__FLUSH_ERROR = 4; +%constant int IO__RELEASE = 5; +%constant int IO__SETCLOCKP = 5; +%constant int IO__START_ANALYSIS = 5; +%constant int IO__BIND = 5; +%constant int IO__PATH_VERIFY = 5; +%constant int IO__OFFSET = 6; +%constant int IO__ERASETAPE = 6; +%constant int IO__STARTDATAP = 6; +%constant int IO__STOP_ANALYSIS = 6; +%constant int IO__UNBIND = 6; +%constant int IO__RETCENTER = 7; +%constant int IO__QSTOP = 7; +%constant int IO__START_MONITOR = 7; +%constant int IO__CREDISK = 7; +%constant int IO__LOCAL_DRAIN = 7; +%constant int IO__PACKACK = 8; +%constant int IO__STOP_MONITOR = 8; +%constant int IO__SEARCH = 9; +%constant int IO__SPACERECORD = 9; +%constant int IO__READRCT = 9; +%constant int IO__REMDISK = 9; +%constant int IO__WRITECHECK = 10; +%constant int IO__EXPORT = 10; +%constant int IO__WRITEPBLK = 11; +%constant int IO__READPBLK = 12; +%constant int IO__WRITEHEAD = 13; +%constant int IO__RDSTATS = 13; +%constant int IO__CRESHAD = 13; +%constant int IO__READHEAD = 14; +%constant int IO__ADDSHAD = 14; +%constant int IO__WRITETRACKD = 15; +%constant int IO__COPYSHAD = 15; +%constant int IO__READTRACKD = 16; +%constant int IO__REMSHAD = 16; +%constant int IO__AVAILABLE = 17; +%constant int IO__SETPRFPATH = 18; +%constant int IO__DISPLAY = 19; +%constant int IO__REMSHADMBR = 20; +%constant int IO__DSE = 21; +%constant int IO__REREADN = 22; +%constant int IO__DISK_COPY_DATA = 22; +%constant int IO__MOUNTSHAD = 23; +%constant int IO__REREADP = 23; +%constant int IO__WHM = 23; +%constant int IO__AS_SETCHAR = 23; +%constant int IO__WRITERET = 24; +%constant int IO__WRITECHECKH = 24; +%constant int IO__AS_SENSECHAR = 24; +%constant int IO__ADDSHADMBR = 25; +%constant int IO__READPRESET = 25; +%constant int IO__STARTSPNDL = 25; +%constant int IO__SETCHAR = 26; +%constant int IO__SENSECHAR = 27; +%constant int IO__WRITEMARK = 28; +%constant int IO__COPYMEM = 28; +%constant int IO__PSXSETCHAR = 28; +%constant int IO__WRTTMKR = 29; +%constant int IO__DIAGNOSE = 29; +%constant int IO__SHADMV = 29; +%constant int IO__PSXSENSECHAR = 29; +%constant int IO__FORMAT = 30; +%constant int IO__CLEAN = 30; +%constant int IO__UPSHAD = 30; +%constant int IO__PHYSICAL = 31; +%constant int IO__WRITELBLK = 32; +%constant int IO__READLBLK = 33; +%constant int IO__REWINDOFF = 34; +%constant int IO__READRCTL = 34; +%constant int IO__SETMODE = 35; +%constant int IO__REWIND = 36; +%constant int IO__SKIPFILE = 37; +%constant int IO__PSXSETMODE = 37; +%constant int IO__SKIPRECORD = 38; +%constant int IO__PSXSENSEMODE = 38; +%constant int IO__SENSEMODE = 39; +%constant int IO__WRITEOF = 40; +%constant int IO__TTY_PORT_BUFIO = 40; +%constant int IO__TTY_PORT = 41; +%constant int IO__FREECAP = 41; +%constant int IO__FLUSH = 42; +%constant int IO__AS_SETMODE = 42; +%constant int IO__READLCHUNK = 43; +%constant int IO__AS_SENSEMODE = 43; +%constant int IO__WRITELCHUNK = 44; +%constant int IO__LOGICAL = 47; +%constant int IO__WRITEVBLK = 48; +%constant int IO__READVBLK = 49; +%constant int IO__ACCESS = 50; +%constant int IO__PSXWRITEVBLK = 50; +%constant int IO__CREATE = 51; +%constant int IO__DEACCESS = 52; +%constant int IO__PSXREADVBLK = 52; +%constant int IO__DELETE = 53; +%constant int IO__MODIFY = 54; +%constant int IO__NETCONTROL = 54; +%constant int IO__READPROMPT = 55; +%constant int IO__SETCLOCK = 55; +%constant int IO__AUDIO = 55; +%constant int IO__ACPCONTROL = 56; +%constant int IO__STARTDATA = 56; +%constant int IO__IOCTLV = 56; +%constant int IO__MANAGE = 56; +%constant int IO__MOUNT = 57; +%constant int IO__TTYREADALL = 58; +%constant int IO__DISMOUNT = 58; +%constant int IO__TTYREADPALL = 59; +%constant int IO__USBATTR = 59; +%constant int IO__CONINTREAD = 60; +%constant int IO__CONINTWRITE = 61; +%constant int IO__READDIR = 62; +%constant int IO__VIRTUAL = 63; +%constant int IO_M_FCODE = 0x3FL; +%constant int IO_M_FMODIFIERS = 0xFFC0L; +%constant int IO_M_INHERLOG = 0x800L; +%constant int IO_M_ERASE = 0x400L; +%constant int IO_M_EXFUNC = 0x2000L; +%constant int IO_M_DATACHECK = 0x4000L; +%constant int IO_M_INHRETRY = 0x8000L; +%constant int IO_M_SYNCSTS = 0x10000L; +%constant int IO_M_NOVCACHE = 0x20000L; +%constant int IO_M_BUFOBJ = 0x40000L; +%constant int IO_M_TRUSTED = 0x80000L; +%constant int IO_M_FILE_FLUSH = 0x100000L; +%constant int IO_M_BARRIER = 0x200000L; +%constant int IO_M_RAH_HINT = 0x400000L; +%constant int IO_M_INHSEEK = 0x1000L; +%constant int IO_M_READ_TO_EOF = 0x200000L; +%constant int IO_M_REVERSE = 0x40L; +%constant int IO_M_NOWAIT = 0x80L; +%constant int IO_M_INHEXTGAP = 0x1000L; +%constant int IO_M_RETENSION = 0x2000L; +%constant int IO_M_ALLOWFAST = 0x4000L; +%constant int IO_M_MT3_DENSITY = 0x8000L; +%constant int IO_M_MSCPMODIFS = 0x100L; +%constant int IO_M_SHADOW = 0x40L; +%constant int IO_M_LOCATE = 0x80L; +%constant int IO_M_MSCP_FORMAT = 0x40L; +%constant int IO_M_ALLHOSTS = 0x40L; +%constant int IO_M_DISSOLVE = 0x80L; +%constant int IO_M_NOCLEANUP = 0x100L; +%constant int IO_M_SPINDOWN = 0x40L; +%constant int IO_M_EST_COM_PATH = 0x40L; +%constant int IO_M_LCL_SRC_UNIT = 0x80L; +%constant int IO_M_RTN_COM_PATH = 0x100L; +%constant int IO_M_DEALC_ALL = 0x40L; +%constant int IO_M_DEALC_HRN = 0x80L; +%constant int IO_M_DEALC_ENTLOC = 0x100L; +%constant int IO_M_DECR_AFC = 0x200L; +%constant int IO_M_READ_ALL = 0x400L; +%constant int IO_M_READ_HRN = 0x800L; +%constant int IO_M_BREAK_CONN = 0x1000L; +%constant int IO_M_STEPOVER = 0x40L; +%constant int IO_M_COPYOP = 0x100L; +%constant int IO_M_EXISTS = 0x40L; +%constant int IO_M_CBS = 0x80L; +%constant int IO_M_BOOTING = 0x100L; +%constant int IO_M_REQ_MINICOPY = 0x200L; +%constant int IO_M_OPT_MINICOPY = 0x400L; +%constant int IO_M_NOMINICOPY = 0x800L; +%constant int IO_M_EXPECT_MOUNT_DONE = 0x2000L; +%constant int IO_M_VUEX_FC = 0x200L; +%constant int IO_M_WRITE_SCB = 0x200L; +%constant int IO_M_UPD_SCBLBN = 0x2000L; +%constant int IO_M_FORCEPATH = 0x40L; +%constant int IO_M_PREFERRED_CPU = 0x80L; +%constant int IO_M_SYS_ASSIGNABLE = 0x100L; +%constant int IO_M_COMMOD = 0x40L; +%constant int IO_M_MOVETRACKD = 0x80L; +%constant int IO_M_DIAGNOSTIC = 0x100L; +%constant int IO_M_SKPSECINH = 0x200L; +%constant int IO_M_DELDATA = 0x40L; +%constant int IO_M_NOMRSP = 0x40L; +%constant int IO_M_SWAP = 0x100L; +%constant int IO_M_OPPOSITE = 0x200L; +%constant int IO_M_CLSEREXCP = 0x200L; +%constant int IO_M_CHUNKDIAG = 0x40L; +%constant int IO_M_TBC = 0x400L; +%constant int IO_M_ENAREP = 0x40L; +%constant int IO_M_ACCESS = 0x40L; +%constant int IO_M_CREATE = 0x80L; +%constant int IO_M_DELETE = 0x100L; +%constant int IO_M_MOUNT = 0x200L; +%constant int IO_M_DMOUNT = 0x400L; +%constant int IO_M_REMOUNT = 0x800L; +%constant int IO_M_MOVEFILE = 0x1000L; +%constant int IO_M_RWSHELVED = 0x4000L; +%constant int IO_M_SETDIR = 0x8000L; +%constant int IO_M_BINARY = 0x40L; +%constant int IO_M_PACKED = 0x80L; +%constant int IO_M_NOW = 0x40L; +%constant int IO_M_STREAM = 0x80L; +%constant int IO_M_READERCHECK = 0x100L; +%constant int IO_M_WRITERCHECK = 0x200L; +%constant int IO_M_NORSWAIT = 0x400L; +%constant int IO_M_MB_ROOM_NOTIFY = 0x40L; +%constant int IO_M_READATTN = 0x80L; +%constant int IO_M_WRTATTN = 0x100L; +%constant int IO_M_SETPROT = 0x200L; +%constant int IO_M_READERWAIT = 0x400L; +%constant int IO_M_WRITERWAIT = 0x800L; +%constant int IO_M_NOECHO = 0x40L; +%constant int IO_M_TIMED = 0x80L; +%constant int IO_M_CVTLOW = 0x100L; +%constant int IO_M_NOFILTR = 0x200L; +%constant int IO_M_DSABLMBX = 0x400L; +%constant int IO_M_PURGE = 0x800L; +%constant int IO_M_TRMNOECHO = 0x1000L; +%constant int IO_M_REFRESH = 0x2000L; +%constant int IO_M_ESCAPE = 0x4000L; +%constant int IO_M_EXTEND = 0x8000L; +%constant int IO_M_CANCTRLO = 0x40L; +%constant int IO_M_ENABLMBX = 0x80L; +%constant int IO_M_NOFORMAT = 0x100L; +%constant int IO_M_BREAKTHRU = 0x200L; +%constant int IO_M_NEWLINE = 0x400L; +%constant int IO_M_TYPEAHDCNT = 0x40L; +%constant int IO_M_MAINT = 0x40L; +%constant int IO_M_CTRLYAST = 0x80L; +%constant int IO_M_CTRLCAST = 0x100L; +%constant int IO_M_HANGUP = 0x200L; +%constant int IO_M_OUTBAND = 0x400L; +%constant int IO_M_TT_CONNECT = 0x800L; +%constant int IO_M_TT_DISCON = 0x1000L; +%constant int IO_M_TT_PROCESS = 0x2000L; +%constant int IO_M_BRDCST = 0x4000L; +%constant int IO_M_LOOP = 0x80L; +%constant int IO_M_UNLOOP = 0x100L; +%constant int IO_M_LINE_OFF = 0x200L; +%constant int IO_M_SET_MODEM = 0x400L; +%constant int IO_M_LINE_ON = 0x800L; +%constant int IO_M_LOOP_EXT = 0x1000L; +%constant int IO_M_AUTXOF_ENA = 0x2000L; +%constant int IO_M_AUTXOF_DIS = 0x4000L; +%constant int IO_M_INCLUDE = 0x800L; +%constant int IO_M_TT_ABORT = 0x1000L; +%constant int IO_M_POSIXINIT = 0x40L; +%constant int IO_M_POSIXFLOW = 0x80L; +%constant int IO_M_SET_POSIX = 0x80L; +%constant int IO_M_CLEAR_POSIX = 0x100L; +%constant int IO_M_SET_TERMIOS = 0x200L; +%constant int IO_M_SET_PTC = 0x400L; +%constant int IO_M_CLEAR_PTC = 0x800L; +%constant int IO_M_FLUSH_TAB = 0x1000L; +%constant int IO_M_FLUSH_OUTPUT = 0x2000L; +%constant int IO_M_UPDATE_PTC = 0x4000L; +%constant int IO_M_OUT_XOFF = 0x100L; +%constant int IO_M_OUT_XON = 0x200L; +%constant int IO_M_IN_XOFF = 0x400L; +%constant int IO_M_IN_XON = 0x800L; +%constant int IO_M_O_NONBLOCK = 0x40L; +%constant int IO_M_INTERRUPT = 0x40L; +%constant int IO_M_MULTIPLE = 0x80L; +%constant int IO_M_LOCKBUF = 0x100L; +%constant int IO_M_NOBLOCK = 0x200L; +%constant int IO_M_ABORT = 0x100L; +%constant int IO_M_SYNCH = 0x200L; +%constant int IO_M_RESPONSE = 0x40L; +%constant int IO_M_STARTUP = 0x40L; +%constant int IO_M_SHUTDOWN = 0x80L; +%constant int IO_M_ATTNAST = 0x100L; +%constant int IO_M_CTRL = 0x200L; +%constant int IO_M_SET_MAC = 0x800L; +%constant int IO_M_UPDATE_MAP = 0x1000L; +%constant int IO_M_ROUTE = 0x2000L; +%constant int IO_M_RD_MEM = 0x40L; +%constant int IO_M_RD_MODEM = 0x80L; +%constant int IO_M_RD_COUNT = 0x100L; +%constant int IO_M_CLR_COUNT = 0x400L; +%constant int IO_M_SENSE_MAC = 0x800L; +%constant int IO_M_SHOW_MAP = 0x1000L; +%constant int IO_M_SHOW_ROUTE = 0x2000L; +%constant int IO_K_SRRUNOUT = 0; +%constant int IO_K_PTPBSC = 8192; +%constant int IO_K_LOOPTEST = 57344; +%constant int IO_M_MORE = 0x40L; +%constant int IO_M_QUALIFIED = 0x80L; +%constant int IO_M_REDIRECT = 0x40L; +%constant int IO_M_ACCEPT = 0x80L; +%constant int IO_M_SETEVF = 0x40L; +%constant int IO_M_WORD = 0x40L; +%constant int IO_M_SETFNCT = 0x200L; +%constant int IO_M_DATAPATH = 0x400L; +%constant int IO_M_CYCLE = 0x1000L; +%constant int IO_M_RESET = 0x2000L; +%constant int IO_M_SETCUADR = 0x100L; +%constant int IO_M_SETBSIZE = 0x200L; +%constant int IO_M_SETPOOLSZ = 0x400L; +%constant int IO_M_SETENQCNT = 0x800L; +%constant int IO_M_CLEAR = 0x1000L; +%constant int IO_M_LPBEXT = 0x2000L; +%constant int IO_M_LPBINT = 0x4000L; +%constant int IO_M_READCSR = 0x8000L; +%constant int IO_M_NOCTSWAIT = 0x40L; +%constant int IO_M_SLAVLOOP = 0x80L; +%constant int IO_M_NODSRWAIT = 0x100L; +%constant int IO_M_MAINTLOOP = 0x200L; +%constant int IO_M_LASTBLOCK = 0x400L; +%constant int IO_M_INTCLOCK = 0x1000L; +%constant int IO_M_LT_CONNECT = 0x40L; +%constant int IO_M_LT_DISCON = 0x80L; +%constant int IO_M_LT_READPORT = 0x100L; +%constant int IO_M_LT_MAP_PORT = 0x200L; +%constant int IO_M_LT_RATING = 0x400L; +%constant int IO_M_LT_SOL_INFO = 0x800L; +%constant int IO_M_LT_RCV_INFO = 0x1000L; +%constant int IO_M_LT_SETMODE = 0x2000L; +%constant int IO_M_LT_SENSEMODE = 0x4000L; +%constant int IO_M_LT_QUE_CHG_NOTIF = 0x8000L; +%constant int IO_M_LT_MAP_FILLER = 0x1L; +%constant int IO_M_LT_MAP_NODNAM = 0x2L; +%constant int IO_M_LT_MAP_PORNAM = 0x4L; +%constant int IO_M_LT_MAP_SRVNAM = 0x8L; +%constant int IO_M_LT_MAP_LNKNAM = 0x10L; +%constant int IO_M_LT_MAP_NETADR = 0x20L; +%constant int IO_M_FLUSH = 0x40L; +%constant int IO_M_WRITE_BARRIER = 0x80L; +%constant int IO_M_MKFILL1 = 0x40L; +%constant int IO_M_ALLOWFAST_NEVER = 0x80L; +%constant int IO_M_ALLOWFAST_PER_IO = 0x100L; +%constant int IO_M_ALLOWFAST_ALWAYS = 0x200L; +%constant int IO_M_ADD = 0x40L; +%constant int IO_M_IDSTRING = 0x40L; +%constant int IO_M_SERIALNUM = 0x80L; +%constant int IO_M_BYPASS_VALID_CHK = 0x80L; +%constant int IO_S_IODEF = 3; +%constant int IO_S_FCODE = 6; +%constant int IO_S_FMODIFIERS = 10; diff --git a/Modules/vms/issdef/issdef.i b/Modules/vms/issdef/issdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvaXNzZGVmL2lzc2RlZi5p --- /dev/null +++ b/Modules/vms/issdef/issdef.i @@ -0,0 +1,117 @@ +%module issdef + +%constant int ISS__FLAGS = 1; +%constant int ISS__ARBFLAGS = 2; +%constant int ISS__WORKPRIV = 3; +%constant int ISS__MODE = 4; +%constant int ISS__WORKCLASS = 5; +%constant int ISS__RIGHTS = 6; +%constant int ISS__ADD_RIGHTS = 7; +%constant int ISS__ADD_AUTHRIGHTS = 8; +%constant int ISS__USERNAME = 9; +%constant int ISS__ACCOUNT = 10; +%constant int ISS__NOAUDIT = 11; +%constant int ISS__AUTHPRIV = 12; +%constant int ISS__PERMPRIV = 13; +%constant int ISS__IMAGE_WORKPRIV = 14; +%constant int ISS__ENABLED = 15; +%constant int ISS__AUTHRIGHTS = 16; +%constant int ISS__MINCLASS = 17; +%constant int ISS__MAXCLASS = 18; +%constant int ISS__UID = 19; +%constant int ISS__PERSONA_ID = 20; +%constant int ISS__PRINCIPAL = 21; +%constant int ISS__UIC = 22; +%constant int ISS__SWITCH_EXTENSION = 23; +%constant int ISS__PRIMARY_EXTENSION = 24; +%constant int ISS__EXTENSION_COUNT = 25; +%constant int ISS__EXTENSION_ARRAY = 26; +%constant int ISS__RIGHTS_INDEX = 27; +%constant int ISS__INPUT_DATA = 28; +%constant int ISS__POSIX_UID = 29; +%constant int ISS__POSIX_GID = 30; +%constant int ISS__MIN_ITEM_CODE = 1; +%constant int ISS__MAX_ITEM_CODE = 30; +%constant int ISS_M_FLAG_PERMANENT = 0x1L; +%constant int ISS_M_FLAG_SECAUDIT = 0x2L; +%constant int ISS_S_ISSFLAGSDEF = 4; +%constant int ISS__COMMON_FLAGS = 1024; +%constant int ISS__COMMON_USERNAME = 1025; +%constant int ISS__COMMON_ACCOUNT = 1026; +%constant int ISS__DOMAIN = 1027; +%constant int ISS__COMMON_PRINCIPAL = 1028; +%constant int ISS__DOI = 1029; +%constant int ISS__EXTENSION = 1030; +%constant int ISS__MAKE_TLV = 1031; +%constant int ISS__MIN_COMMON_ITEM_CODE = 1024; +%constant int ISS__MAX_COMMON_ITEM_CODE = 1031; +%constant int ISS__NT_TOKEN = 8192; +%constant int ISS__NT_SECURITY_SUBJECT = 8193; +%constant int ISS__NT_FLAGS = 8194; +%constant int ISS__NT_USER_REFCOUNT = 8195; +%constant int ISS__NT_PRINCIPAL = 8196; +%constant int ISS__NT_CREDENTIALS = 8197; +%constant int ISS__NT_NT_OWF_PASSWORD = 8198; +%constant int ISS__NT_LM_OWF_PASSWORD = 8199; +%constant int ISS__NT_UNPACK_CRED_SIZE = 8200; +%constant int ISS__NT_TOKEN_TOKENID = 8201; +%constant int ISS__NT_TOKEN_IMPERSONATELEVEL = 8202; +%constant int ISS__NT_TOKEN_AUTHENTICATIONID = 8203; +%constant int ISS__NT_TOKEN_USERANDGROUPCOUNT = 8204; +%constant int ISS__NT_TOKEN_VARIABLELENGTH = 8205; +%constant int ISS__NT_TOKEN_USERANDGROUPS = 8206; +%constant int ISS__NT_TOKEN_USERANDGROUPS_SID = 8207; +%constant int ISS__NT_TOKEN_PRIMARYGROUP = 8208; +%constant int ISS__NT_TOKEN_PRIVILEGES = 8209; +%constant int ISS__NT_TOKEN_DEFAULTDACL = 8210; +%constant int ISS__NT_TOKEN_UNIXUID = 8211; +%constant int ISS__NT_TOKEN_UNIXGID = 8212; +%constant int ISS__NT_TOKEN_GIDINFO = 8213; +%constant int ISS__NT_TOKEN_GIDINFO_GIDS = 8214; +%constant int ISS__NT_TOKEN_UNIXNAME = 8215; +%constant int ISS__NT_TOKEN_DOMAINNAME = 8216; +%constant int ISS__NT_TOKEN_USERNAME = 8217; +%constant int ISS__NT_TOKEN_USERSESSIONKEY = 8218; +%constant int ISS__NT_TOKEN_LMSESSIONKEY = 8219; +%constant int ISS__NT_TOKEN_VARIABLEPART = 8220; +%constant int ISS__NT_TOKEN_GROUP_LIST = 8221; +%constant int ISS__NT_TOKEN_PRIVILEGES_LIST = 8222; +%constant int ISS__NT_SECURITY_SIGNATURE = 8223; +%constant int ISS__NT_SECURITY_SMBUID = 8224; +%constant int ISS__NT_SECURITY_PROCESSAUDITID = 8225; +%constant int ISS__NT_SECURITY_PROCESSID = 8226; +%constant int ISS__NT_SECURITY_LOGONID = 8227; +%constant int ISS__NT_SECURITY_LOGONTYPE = 8228; +%constant int ISS__NT_SECURITY_SUBJECTFLAGS = 8229; +%constant int ISS__NT_SECURITY_CONTEXT_OTHER = 8230; +%constant int ISS__MIN_NT_ITEM_CODE = 8192; +%constant int ISS__MAX_NT_ITEM_CODE = 8230; +%constant int ISS_M_ENABLED_PERSONA = 0x1L; +%constant int ISS_M_ENABLED_SUBSYSTEM = 0x2L; +%constant int ISS_M_ENABLED_IMAGE = 0x4L; +%constant int ISS_M_ENABLED_SYSTEM = 0x8L; +%constant int ISS_M_ENABLED_TEMPORARY = 0x10L; +%constant int ISS_S_ISSENABLEDDEF = 4; +%constant int ISS_C_ARB_UNSPECIFIED = -1; +%constant int ISS_C_ARB_NONE = 0; +%constant int ISS_C_ARB_CLEAR = 1; +%constant int ISS_C_ARB_READ_ONLY = 2; +%constant int ISS_C_ARB_FULL = 3; +%constant int ISS_C_ARB_FORCE = 4; +%constant int ISS_C_ARB_MAX_CODE = 4; +%constant int ISS_C_ARB_MIN_CODE = 0; +%constant int ISS_C_ID_NATURAL = 1; +%constant int ISS_C_ID_POSIX_REAL = -2; +%constant int ISS_C_ID_IMAGE_PERSONA = -2; +%constant int ISS_M_IMP_FLAGS = 0x7FL; +%constant int ISS_M_ASSUME_NODEREF_OLD = 0x10000L; +%constant int ISS_M_ASSUME_NOREF_NEW = 0x20000L; +%constant int ISS_M_CREATE_DEFPRIV = 0x8L; +%constant int ISS_M_CREATE_DEFCLASS = 0x10L; +%constant int ISS_M_CREATE_AUTHPRIV = 0x20L; +%constant int ISS_M_NOACCESS = 0x100000L; +%constant int ISS_S_ISSSRVCFLG = 4; +%constant int ISS_S_IMP_FLAGS = 7; +%constant int ISS_S_ASSUME_FLAGS = 4; +%constant int ISS_S_CREATE_FLAGS = 4; +%constant int ISS_K_NT_VERSION_1 = 1; diff --git a/Modules/vms/jbcmsgdef/jbcmsgdef.i b/Modules/vms/jbcmsgdef/jbcmsgdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvamJjbXNnZGVmL2piY21zZ2RlZi5p --- /dev/null +++ b/Modules/vms/jbcmsgdef/jbcmsgdef.i @@ -0,0 +1,148 @@ +%module jbcmsgdef + +%constant int JBC__FACILITY = 4; +%constant int JBC__NORMAL = 262145; +%constant int JBC__NOCMKRNL = 272386; +%constant int JBC__NOOPER = 272530; +%constant int JBC__NOSYSNAM = 272402; +%constant int JBC__ILLDEVNAM = 294916; +%constant int JBC__UNSDEVTYP = 294924; +%constant int JBC__ILLFILNAM = 294932; +%constant int JBC__INVQUENAM = 294940; +%constant int JBC__NOPRIV = 294946; +%constant int JBC__NOQUEHDR = 294956; +%constant int JBC__NOQUESPACE = 294962; +%constant int JBC__NOSUCHQUE = 294970; +%constant int JBC__NOSUCHJOB = 294978; +%constant int JBC__NOOPENJOB = 294986; +%constant int JBC__REFERENCED = 294994; +%constant int JBC__STARTED = 295002; +%constant int JBC__INVITMCOD = 295012; +%constant int JBC__INVFUNCOD = 295020; +%constant int JBC__EMPTYJOB = 295026; +%constant int JBC__JOBQUEDIS = 295034; +%constant int JBC__JOBABORT = 295044; +%constant int JBC__ACMINVOP = 295052; +%constant int JBC__INVPARLEN = 295060; +%constant int JBC__TRMMBXUSE = 295068; +%constant int JBC__MAXSYMEXD = 295076; +%constant int JBC__SCTTABFUL = 295084; +%constant int JBC__CREPRCFAL = 295092; +%constant int JBC__SYMNTBFUL = 295100; +%constant int JBC__NODSTQUE = 295106; +%constant int JBC__INVDSTQUE = 295116; +%constant int JBC__JOBDELETE = 295124; +%constant int JBC__NORESTART = 295130; +%constant int JBC__JOBREQUEUE = 295140; +%constant int JBC__QUERESET = 295148; +%constant int JBC__SYSFAIL = 295156; +%constant int JBC__EXECUTING = 295162; +%constant int JBC__INVMSGBUF = 295172; +%constant int JBC__MISREQPAR = 295180; +%constant int JBC__INVPARVAL = 295188; +%constant int JBC__INCQUETYP = 295196; +%constant int JBC__INCDSTQUE = 295204; +%constant int JBC__JOBQUEENA = 295210; +%constant int JBC__NOTASSIGN = 295218; +%constant int JBC__INCOMPLETE = 295226; +%constant int JBC__INVCHANAM = 295236; +%constant int JBC__INVFORNAM = 295244; +%constant int JBC__NOSUCHCHAR = 295250; +%constant int JBC__NOSUCHFORM = 295258; +%constant int JBC__DUPFORM = 295266; +%constant int JBC__INCFORMPAR = 295276; +%constant int JBC__NOSUCHFILE = 295282; +%constant int JBC__DELACCESS = 295290; +%constant int JBC__QUENOTSTOP = 295298; +%constant int JBC__NOMORECHAR = 295306; +%constant int JBC__NOMOREFILE = 295314; +%constant int JBC__NOMOREFORM = 295322; +%constant int JBC__NOMOREJOB = 295330; +%constant int JBC__NOMOREQUE = 295338; +%constant int JBC__NOJOBCTX = 295346; +%constant int JBC__NOQUECTX = 295354; +%constant int JBC__NOSUCHNODE = 295362; +%constant int JBC__GEN_MAX = 295370; +%constant int JBC__QUE_CLOSED = 295378; +%constant int JBC__NOSUCHENT = 295386; +%constant int JBC__NOMOREENT = 295394; +%constant int JBC__JOBCTLABORT = 295404; +%constant int JBC__NOTSUPPORTED = 295412; +%constant int JBC__NOTMEANINGFUL = 295419; +%constant int JBC__QUEDISABLED = 295426; +%constant int JBC__NOTDISABLED = 295434; +%constant int JBC__NOTENAGEN = 295442; +%constant int JBC__ENABLEQUE = 295448; +%constant int JBC__QUENOTMOD = 295459; +%constant int JBC__ATT_MAX = 295466; +%constant int JBC__ATTNOTAVAIL = 295474; +%constant int JBC__QEXISTS = 295482; +%constant int JBC__NOSUCHQMGR = 295490; +%constant int JBC__JOBNOTEXEC = 295498; +%constant int JBC__DUPCHARNAME = 295506; +%constant int JBC__DUPCHARNUM = 295514; +%constant int JBC__DUPFORMNAME = 295522; +%constant int JBC__STKNOTCHANGE = 295530; +%constant int JBC__ITMREMOVED = 295539; +%constant int JBC__PRIOSMALL = 295547; +%constant int JBC__QMANMAX = 295552; +%constant int JBC__NOAUTOSTART = 295560; +%constant int JBC__NOTALLREQUE = 295568; +%constant int JBC__NULL1 = 295580; +%constant int JBC__TOOMUCHINFO = 295586; +%constant int JBC__AUTONOTSTART = 295595; +%constant int JBC__NULL2 = 295602; +%constant int JBC__QMANNOTSTARTED = 295610; +%constant int JBC__BUFTOOSMALL = 295616; +%constant int JBC__INTERNALERROR = 295624; +%constant int JBC__QMGREXISTS = 295634; +%constant int JBC__TWOQMGRS = 295642; +%constant int JBC__INVQMANNAM = 295650; +%constant int JBC__NOMOREQMGR = 295658; +%constant int JBC__QMANABORT = 295668; +%constant int JBC__ACCDISERR = 295939; +%constant int JBC__ALLOCMEM = 295948; +%constant int JBC__COMREMJBC = 295956; +%constant int JBC__INVBLOCK = 295964; +%constant int JBC__INVMSG = 295970; +%constant int JBC__NEWQUEUE = 295979; +%constant int JBC__OPEJBCMBX = 295988; +%constant int JBC__PRCREAT = 295996; +%constant int JBC__QUEFORMAT = 296000; +%constant int JBC__REAJBCMBX = 296012; +%constant int JBC__REQUEST = 296019; +%constant int JBC__SETIMR = 296026; +%constant int JBC__SYMCREPRC = 296034; +%constant int JBC__SYMDEL = 296042; +%constant int JBC__WRIRSPMSG = 296050; +%constant int JBC__WRISMBMBX = 296058; +%constant int JBC__NFY_COMPLETE = 296067; +%constant int JBC__NFY_CURRENT = 296075; +%constant int JBC__NFY_HOLD = 296083; +%constant int JBC__NFY_PENDING = 296091; +%constant int JBC__NFY_TIMER = 296099; +%constant int JBC__STRUCT_LEVEL = 296107; +%constant int JBC__DIAGNOSTIC = 296112; +%constant int JBC__DIAG_TEXT = 296120; +%constant int JBC__DIAG_DATA = 296128; +%constant int JBC__RESTRICT = 296136; +%constant int JBC__NFY_FAILURE = 296147; +%constant int JBC__NFY_CPULIM = 296155; +%constant int JBC__NFY_WSVAL = 296163; +%constant int JBC__RESTARTCOM = 296171; +%constant int JBC__NFY_NOACCESS = 296179; +%constant int JBC__NFY_CHARAC = 296187; +%constant int JBC__NFY_NOLOWER = 296195; +%constant int JBC__NFY_SIZE_MIN = 296203; +%constant int JBC__NFY_SIZE_MAX = 296211; +%constant int JBC__NFY_FORM = 296219; +%constant int JBC__NFY_QUESTATE = 296227; +%constant int JBC__FAILCREPRC = 296234; +%constant int JBC__QMANCREPRC = 296242; +%constant int JBC__INITFAIL = 296252; +%constant int JBC__QMANDEL = 296258; +%constant int JBC__NOTIMZONRUL = 296264; +%constant int JBC__LMFPRCFAIL = 296272; +%constant int JBC__LMFLICERR = 296280; +%constant int JBC__LMFERROR = 296288; +%constant int JBC__ACCNOTENB = 298914; diff --git a/Modules/vms/jpidef/jpidef.i b/Modules/vms/jpidef/jpidef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvanBpZGVmL2pwaWRlZi5p --- /dev/null +++ b/Modules/vms/jpidef/jpidef.i @@ -0,0 +1,221 @@ +%module jpidef + +%constant int JPI_K_DEFAULT_POLICY = 0; +%constant int JPI_K_PSX_FIFO_POLICY = 1; +%constant int JPI_K_PSX_RR_POLICY = 2; +%constant int JPI_K_ALL_THREADS = -2147483648; +%constant int JPI_C_ADRTYPE = 1; +%constant int JPI_C_CTLTYPE = 2; +%constant int JPI_C_PCBTYPE = 3; +%constant int JPI_C_PHDTYPE = 4; +%constant int JPI_C_PCBFLDTYPE = 5; +%constant int JPI_C_PHDFLDTYPE = 6; +%constant int JPI_C_JIBTYPE = 7; +%constant int JPI_C_PSBTYPE = 8; +%constant int JPI_C_KTBTYPE = 9; +%constant int JPI_C_MAXSTRUC = 6; +%constant int JPI_C_LISTEND = 0; +%constant int JPI__CHAIN = -1; +%constant int JPI__GETJPI_CONTROL_FLAGS = -2; +%constant int JPI_M_NO_TARGET_INSWAP = 0x1L; +%constant int JPI_M_NO_TARGET_AST = 0x2L; +%constant int JPI_M_IGNORE_TARGET_STATUS = 0x4L; +%constant int JPI_M_THREAD = 0x8L; +%constant int JPI_M_NATURAL_PERSONA = 0x10L; +%constant int JPI_M_FILL1 = 0x7FE0L; +%constant int JPI_M_NEED_THREAD_CAP = 0x8000L; +%constant int JPI_S_JPICTLDEF = 4; +%constant int JPI_S_FILL1 = 10; +%constant int JPI_K_OTHER = 0; +%constant int JPI_K_NETWORK = 1; +%constant int JPI_K_BATCH = 2; +%constant int JPI_K_INTERACTIVE = 3; +%constant int JPI_K_DETACHED = 0; +%constant int JPI_K_LOCAL = 3; +%constant int JPI_K_DIALUP = 4; +%constant int JPI_K_REMOTE = 5; +%constant int JPI_M_NEW_MAIL_AT_LOGIN = 0x1L; +%constant int JPI_M_PASSWORD_CHANGED = 0x2L; +%constant int JPI_M_PASSWORD_EXPIRED = 0x4L; +%constant int JPI_M_PASSWORD_WARNING = 0x8L; +%constant int JPI_M_PASSWORD2_CHANGED = 0x10L; +%constant int JPI_M_PASSWORD2_EXPIRED = 0x20L; +%constant int JPI_M_PASSWORD2_WARNING = 0x40L; +%constant int JPI_S_JPILGIDEF = 4; +%constant int JPI_K_SEARCH_SYMLINK_NONE = 1; +%constant int JPI_K_SEARCH_SYMLINK_ALL = 2; +%constant int JPI_K_SEARCH_SYMLINK_NOELLIPS = 3; +%constant int JPI__ASTACT = 768; +%constant int JPI__ASTEN = 769; +%constant int JPI__PRI = 770; +%constant int JPI__OWNER = 771; +%constant int JPI__UIC = 772; +%constant int JPI__STS = 773; +%constant int JPI__STATE = 774; +%constant int JPI__MEM = 775; +%constant int JPI__GRP = 776; +%constant int JPI__PRIB = 777; +%constant int JPI__APTCNT = 778; +%constant int JPI__TMBU = 779; +%constant int JPI__GPGCNT = 780; +%constant int JPI__PPGCNT = 781; +%constant int JPI__ASTCNT = 782; +%constant int JPI__BIOCNT = 783; +%constant int JPI__BIOLM = 784; +%constant int JPI__BYTCNT = 785; +%constant int JPI__DIOCNT = 786; +%constant int JPI__DIOLM = 787; +%constant int JPI__FILCNT = 788; +%constant int JPI__TQCNT = 789; +%constant int JPI__EFWM = 790; +%constant int JPI__EFCS = 791; +%constant int JPI__EFCU = 792; +%constant int JPI__PID = 793; +%constant int JPI__BYTLM = 794; +%constant int JPI__PRCCNT = 795; +%constant int JPI__PRCNAM = 796; +%constant int JPI__TERMINAL = 797; +%constant int JPI__JOBPRCCNT = 798; +%constant int JPI__ENQCNT = 799; +%constant int JPI__ENQLM = 800; +%constant int JPI__SWPFILLOC = 801; +%constant int JPI__MODE = 802; +%constant int JPI__JOBTYPE = 803; +%constant int JPI__PROC_INDEX = 804; +%constant int JPI__MASTER_PID = 805; +%constant int JPI__RIGHTSLIST = 806; +%constant int JPI__CPU_ID = 807; +%constant int JPI__STS2 = 808; +%constant int JPI__NODENAME = 809; +%constant int JPI__NODE_CSID = 810; +%constant int JPI__NODE_VERSION = 811; +%constant int JPI__TT_PHYDEVNAM = 812; +%constant int JPI__TT_ACCPORNAM = 813; +%constant int JPI__PROCESS_RIGHTS = 814; +%constant int JPI__SYSTEM_RIGHTS = 815; +%constant int JPI__IMAGE_RIGHTS = 816; +%constant int JPI__RIGHTS_SIZE = 817; +%constant int JPI__CLASSIFICATION = 818; +%constant int JPI__SCHED_POLICY = 819; +%constant int JPI__RMS_FILEPROT = 820; +%constant int JPI__MULTITHREAD = 821; +%constant int JPI__KT_COUNT = 822; +%constant int JPI__INITIAL_THREAD_PID = 823; +%constant int JPI__THREAD_INDEX = 824; +%constant int JPI__CURRENT_USERCAP_MASK = 825; +%constant int JPI__PERMANENT_USERCAP_MASK = 826; +%constant int JPI__CURRENT_AFFINITY_MASK = 827; +%constant int JPI__PERMANENT_AFFINITY_MASK = 828; +%constant int JPI__PERSONA_ID = 829; +%constant int JPI__PERSONA_AUTHPRIV = 830; +%constant int JPI__PERSONA_PERMPRIV = 831; +%constant int JPI__PERSONA_WORKPRIV = 832; +%constant int JPI__IMAGE_WORKPRIV = 833; +%constant int JPI__PERSONA_RIGHTS_SIZE = 834; +%constant int JPI__PERSONA_RIGHTS = 835; +%constant int JPI__SUBSYSTEM_RIGHTS_SIZE = 836; +%constant int JPI__SUBSYSTEM_RIGHTS = 837; +%constant int JPI__INSTALL_RIGHTS_SIZE = 838; +%constant int JPI__INSTALL_RIGHTS = 839; +%constant int JPI__SYSTEM_RIGHTS_SIZE = 840; +%constant int JPI__CURRENT_CAP_MASK = 841; +%constant int JPI__PERMANENT_CAP_MASK = 842; +%constant int JPI__SCHED_CLASS_NAME = 843; +%constant int JPI__HOME_RAD = 844; +%constant int JPI__POSIX_SID = 845; +%constant int JPI__POSIX_PGID = 846; +%constant int JPI__CREATOR = 847; +%constant int JPI__KRNLTIM = 848; +%constant int JPI__EXECTIM = 849; +%constant int JPI__SUPRTIM = 850; +%constant int JPI__USERTIM = 851; +%constant int JPI__ORG_BYTLM = 852; +%constant int JPI__DEADLOCK_WAIT = 853; +%constant int JPI__KT_LIMIT = 854; +%constant int JPI__LASTPCB = 855; +%constant int JPI__CURPRIV = 1024; +%constant int JPI__WSAUTH = 1025; +%constant int JPI__WSQUOTA = 1026; +%constant int JPI__DFWSCNT = 1027; +%constant int JPI__FREP0VA = 1028; +%constant int JPI__FREP1VA = 1029; +%constant int JPI__DFPFC = 1030; +%constant int JPI__CPUTIM = 1031; +%constant int JPI__PRCLM = 1032; +%constant int JPI__ASTLM = 1033; +%constant int JPI__PAGEFLTS = 1034; +%constant int JPI__DIRIO = 1035; +%constant int JPI__BUFIO = 1036; +%constant int JPI__CPULIM = 1037; +%constant int JPI__PGFLQUOTA = 1038; +%constant int JPI__FILLM = 1039; +%constant int JPI__TQLM = 1040; +%constant int JPI__WSSIZE = 1041; +%constant int JPI__AUTHPRIV = 1042; +%constant int JPI__IMAGPRIV = 1043; +%constant int JPI__PAGFILCNT = 1044; +%constant int JPI__FREPTECNT = 1045; +%constant int JPI__WSEXTENT = 1046; +%constant int JPI__WSAUTHEXT = 1047; +%constant int JPI__AUTHPRI = 1048; +%constant int JPI__PAGFILLOC = 1049; +%constant int JPI__IMAGECOUNT = 1050; +%constant int JPI__PHDFLAGS = 1051; +%constant int JPI__VP_CPUTIM = 1052; +%constant int JPI__VP_CONSUMER = 1053; +%constant int JPI__P0_FIRST_FREE_VA_64 = 1054; +%constant int JPI__P1_FIRST_FREE_VA_64 = 1055; +%constant int JPI__P2_FIRST_FREE_VA_64 = 1056; +%constant int JPI__IMAGE_AUTHPRIV = 1057; +%constant int JPI__IMAGE_PERMPRIV = 1058; +%constant int JPI__LASTPHD = 1059; +%constant int JPI__VIRTPEAK = 512; +%constant int JPI__WSPEAK = 513; +%constant int JPI__USERNAME = 514; +%constant int JPI__ACCOUNT = 515; +%constant int JPI__PROCPRIV = 516; +%constant int JPI__VOLUMES = 517; +%constant int JPI__LOGINTIM = 518; +%constant int JPI__IMAGNAME = 519; +%constant int JPI__SITESPEC = 520; +%constant int JPI__MSGMASK = 521; +%constant int JPI__CLINAME = 522; +%constant int JPI__TABLENAME = 523; +%constant int JPI__CREPRC_FLAGS = 524; +%constant int JPI__UAF_FLAGS = 525; +%constant int JPI__MAXDETACH = 526; +%constant int JPI__MAXJOBS = 527; +%constant int JPI__SHRFILLM = 528; +%constant int JPI__FAST_VP_SWITCH = 529; +%constant int JPI__SLOW_VP_SWITCH = 530; +%constant int JPI__LAST_LOGIN_I = 531; +%constant int JPI__LAST_LOGIN_N = 532; +%constant int JPI__LOGIN_FAILURES = 533; +%constant int JPI__LOGIN_FLAGS = 534; +%constant int JPI__RMS_DFMBC = 535; +%constant int JPI__RMS_DFMBFSDK = 536; +%constant int JPI__RMS_DFMBFSMT = 537; +%constant int JPI__RMS_DFMBFSUR = 538; +%constant int JPI__RMS_DFMBFREL = 539; +%constant int JPI__RMS_DFMBFIDX = 540; +%constant int JPI__RMS_PROLOGUE = 541; +%constant int JPI__RMS_EXTEND_SIZE = 542; +%constant int JPI__RMS_DFNBC = 543; +%constant int JPI__RMS_DFLRL = 544; +%constant int JPI__RMS_HEURISTIC = 545; +%constant int JPI__PARSE_STYLE_PERM = 546; +%constant int JPI__PARSE_STYLE_IMAGE = 547; +%constant int JPI__RMSD6 = 548; +%constant int JPI__RMS_QUERY_LOCK = 549; +%constant int JPI__CASE_LOOKUP_PERM = 550; +%constant int JPI__CASE_LOOKUP_IMAGE = 551; +%constant int JPI__UNITS = 552; +%constant int JPI__TOKEN = 553; +%constant int JPI__SEARCH_SYMLINK_PERM = 554; +%constant int JPI__SEARCH_SYMLINK_TEMP = 555; +%constant int JPI__LASTCTL = 556; +%constant int JPI__EXCVEC = 256; +%constant int JPI__FINALEXC = 257; +%constant int JPI__LASTADR = 258; +%constant int JPI__LASTPCBFLD = 1280; +%constant int JPI__LASTPHDFLD = 1536; diff --git a/Modules/vms/kgbdef/kgbdef.i b/Modules/vms/kgbdef/kgbdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMva2diZGVmL2tnYmRlZi5p --- /dev/null +++ b/Modules/vms/kgbdef/kgbdef.i @@ -0,0 +1,44 @@ +%module kgbdef + +%constant int KGB_M_RESOURCE = 0x1L; +%constant int KGB_M_DYNAMIC = 0x2L; +%constant int KGB_M_NOACCESS = 0x4L; +%constant int KGB_M_SUBSYSTEM = 0x8L; +%constant int KGB_M_IMPERSONATE = 0x10L; +%constant int KGB_M_HOLDER_HIDDEN = 0x20L; +%constant int KGB_M_NAME_HIDDEN = 0x40L; +%constant int KGB_K_HOLD_RECORD = 16; +%constant int KGB_K_IDENT_RECORD = 48; +%constant int KGB_K_LEVEL1 = 257; +%constant int KGB_K_MAINT_RECORD = 64; +%constant int KGB_K_NUMBER_OF_ATTRIBUTES = 7; +%constant int KGB_S_KGBDEF = 64; +%constant int KGB_S_HOLDER = 8; +%constant int KGB_S_NAME = 32; +%constant int KGB_S_SYS_ID = 8; +%constant int KGB_K_BATCH_ID = -2147483647; +%constant int KGB_K_DIALUP_ID = -2147483646; +%constant int KGB_K_INTERACTIVE_ID = -2147483645; +%constant int KGB_K_LOCAL_ID = -2147483644; +%constant int KGB_K_NETWORK_ID = -2147483643; +%constant int KGB_K_REMOTE_ID = -2147483642; +%constant int KGB_K_DECWINDOWS_ID = -2147483641; +%constant int KGB_K_BOBUSER_ID = -2147483640; +%constant int KGB_K_MRES_USER_ID = -2147483639; +%constant int KGB_K_SAT_ACCESS_ID = -2147483638; +%constant int KGB_K_LAST_ENV_ID = -2147483637; +%constant int KGB_K_BASE_ENV_ID = -2147483647; +%constant int KGB_K_NUMBER_OF_ENV_IDS = 10; +%constant int KGB_K_RESTRICTED_RANGE = -2147418112; +%constant int KGB_K_SEC_LEVEL_BASE = -2147482648; +%constant int KGB_K_INT_LEVEL_BASE = -2147482392; +%constant int KGB_K_SEC_CATEGORY_BASE = -2147482136; +%constant int KGB_K_INT_CATEGORY_BASE = -2147482072; +%constant int KGB_K_SEC_ACCESS_CLASS_BASE = -2147482648; +%constant int KGB_K_SEC_ACCESS_CLASS_END = -2147482008; +%constant int KGB_K_PROCESS = 0; +%constant int KGB_K_SYSTEM = 1; +%constant int KGB_K_EXTENDED = 2; +%constant int KGB_K_IMAGE = 3; +%constant int KGB_K_MAX_SEG = 4; +%constant int KGB_K_SUBSYSTEM = 3; diff --git a/Modules/vms/lckdef/lckdef.i b/Modules/vms/lckdef/lckdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvbGNrZGVmL2xja2RlZi5p --- /dev/null +++ b/Modules/vms/lckdef/lckdef.i @@ -0,0 +1,32 @@ +%module lckdef + +%constant int LCK_M_VALBLK = 0x1L; +%constant int LCK_M_CONVERT = 0x2L; +%constant int LCK_M_NOQUEUE = 0x4L; +%constant int LCK_M_SYNCSTS = 0x8L; +%constant int LCK_M_SYSTEM = 0x10L; +%constant int LCK_M_NOQUOTA = 0x20L; +%constant int LCK_M_CVTSYS = 0x40L; +%constant int LCK_M_RECOVER = 0x80L; +%constant int LCK_M_PROTECT = 0x100L; +%constant int LCK_M_NODLCKWT = 0x200L; +%constant int LCK_M_NODLCKBLK = 0x400L; +%constant int LCK_M_EXPEDITE = 0x800L; +%constant int LCK_M_QUECVT = 0x1000L; +%constant int LCK_M_BYPASS = 0x2000L; +%constant int LCK_M_NOIOLOCK8 = 0x4000L; +%constant int LCK_M_NOFORK = 0x8000L; +%constant int LCK_M_XVALBLK = 0x10000L; +%constant int LCK_M_DEQALL = 0x1L; +%constant int LCK_M_CANCEL = 0x2L; +%constant int LCK_M_INVVALBLK = 0x4L; +%constant int LCK_M_RESV_NOIOLOCK8 = 0x4000L; +%constant int LCK_M_RESV_NOFORK = 0x8000L; +%constant int LCK_M_RESV_XVALBLK = 0x10000L; +%constant int LCK_K_NLMODE = 0; +%constant int LCK_K_CRMODE = 1; +%constant int LCK_K_CWMODE = 2; +%constant int LCK_K_PRMODE = 3; +%constant int LCK_K_PWMODE = 4; +%constant int LCK_K_EXMODE = 5; +%constant int LCK_S_LCKDEF = 3; diff --git a/Modules/vms/lib/lib.c b/Modules/vms/lib/lib.c new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvbGliL2xpYi5j --- /dev/null +++ b/Modules/vms/lib/lib.c @@ -0,0 +1,293 @@ +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <descrip.h> +#include <lib$routines.h> +#include <ssdef.h> +#include <assert.h> + +#include "lib.h" + +#ifndef OKAY +#define OKAY(STATUS) (((STATUS) & 1) != 0) +#endif + + +static const char *nil = ""; + +unsigned int _date_time(char **dt) +{ + char val[32]; + struct dsc$descriptor_s val_dsc; + unsigned int status; + + assert(dt); + + val_dsc.dsc$w_length = sizeof(val) - 1; + val_dsc.dsc$b_class = DSC$K_CLASS_S; + val_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + val_dsc.dsc$a_pointer = val; + + status = lib$date_time(&val_dsc); + + if (OKAY(status)) { + val[23] = '\0'; + *dt = strdup(val); + assert(*dt); + } else { + *dt = strdup(nil); + assert(*dt); + } + + return (status); +} + + +unsigned int _free_ef(unsigned int efn) +{ + return (lib$free_ef(&efn)); +} + + +unsigned int _get_ef(unsigned int *efn) +{ + assert(efn); + return (lib$get_ef(efn)); +} + + +unsigned int _get_hostname(char **hostname, unsigned int flags) +{ + char val[256]; + struct dsc$descriptor_s val_dsc; + unsigned int status; + unsigned short len; + + assert(hostname); + + val_dsc.dsc$w_length = sizeof(val) - 1; + val_dsc.dsc$b_class = DSC$K_CLASS_S; + val_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + val_dsc.dsc$a_pointer = val; + + status = lib$get_hostname(&val_dsc, &len, flags); + + if (OKAY(status)) { + val[len] = '\0'; + *hostname = strdup(val); + assert(*hostname); + } else { + *hostname = strdup(nil); + assert(*hostname); + } + + return (status); +} + + +unsigned int _getjpi(int item, unsigned int *pid, char *prn, char **ret) +{ + char val[256]; + struct dsc$descriptor_s prn_dsc; + struct dsc$descriptor_s val_dsc; + unsigned int status; + unsigned short len; + + assert(ret); + + if (prn) { + prn_dsc.dsc$w_length = strlen(prn); + prn_dsc.dsc$b_class = DSC$K_CLASS_S; + prn_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + prn_dsc.dsc$a_pointer = prn; + } + + val_dsc.dsc$w_length = sizeof(val) - 1; + val_dsc.dsc$b_class = DSC$K_CLASS_S; + val_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + val_dsc.dsc$a_pointer = val; + + status = + lib$getjpi(&item, pid, (prn ? &prn_dsc : NULL), 0, &val_dsc, &len); + + if (OKAY(status)) { + val[len] = '\0'; + *ret = strdup(val); + assert(*ret); + } else { + *ret = strdup(nil); + assert(*ret); + } + + return (status); +} + + + +unsigned int _getsyi(int item, char **ret, unsigned int *csid, char *node) +{ + char val[256]; + struct dsc$descriptor_s node_dsc, val_dsc; + unsigned int status; + unsigned short len; + + assert(ret); + // assert(csid); + + if (csid) { + *csid = 0; // output parameter must be initialized + } + + val_dsc.dsc$w_length = sizeof(val) - 1; + val_dsc.dsc$b_class = DSC$K_CLASS_S; + val_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + val_dsc.dsc$a_pointer = val; + + if (node) { + node_dsc.dsc$w_length = strlen(node); + node_dsc.dsc$b_class = DSC$K_CLASS_S; + node_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + node_dsc.dsc$a_pointer = node; + } + + status = + lib$getsyi(&item, NULL, &val_dsc, &len, csid, + (node ? &node_dsc : NULL)); + + if (OKAY(status)) { + val[len] = '\0'; + *ret = strdup(val); + assert(*ret); + } else { + *ret = strdup(nil); + assert(*ret); + } + + return (status); +} + + +unsigned int _spawn(char *cmd, char *in, char *out, unsigned int flags, + char *prn, unsigned int *pid) +{ + struct dsc$descriptor_s cmd_dsc, in_dsc, out_dsc, prn_dsc; + unsigned int status; + + if (cmd) { + cmd_dsc.dsc$w_length = strlen(cmd); + cmd_dsc.dsc$b_class = DSC$K_CLASS_S; + cmd_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + cmd_dsc.dsc$a_pointer = cmd; + } + + if (in) { + in_dsc.dsc$w_length = strlen(in); + in_dsc.dsc$b_class = DSC$K_CLASS_S; + in_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + in_dsc.dsc$a_pointer = in; + } + + if (out) { + out_dsc.dsc$w_length = strlen(out); + out_dsc.dsc$b_class = DSC$K_CLASS_S; + out_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + out_dsc.dsc$a_pointer = out; + } + + if (prn) { + prn_dsc.dsc$w_length = strlen(prn); + prn_dsc.dsc$b_class = DSC$K_CLASS_S; + prn_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + prn_dsc.dsc$a_pointer = prn; + } + + if (pid) { + *pid = 0; + } + + status = lib$spawn((cmd ? &cmd_dsc : NULL), + (in ? &in_dsc : NULL), + (out ? &out_dsc : NULL), + &flags, + (prn ? &prn_dsc : NULL), + pid, NULL, 0, NULL, NULL, NULL, NULL, NULL); + + return (status); +} + + +unsigned int _do_command(char *cmd) +{ + struct dsc$descriptor_s cmd_dsc; + assert(cmd); + + cmd_dsc.dsc$w_length = strlen(cmd); + cmd_dsc.dsc$b_class = DSC$K_CLASS_S; + cmd_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + cmd_dsc.dsc$a_pointer = cmd; + + return (lib$do_command(&cmd_dsc)); +} + + + +unsigned int _put_common(char *str) +{ + struct dsc$descriptor_s str_dsc; + + assert(str); + + str_dsc.dsc$w_length = strlen(str); + str_dsc.dsc$b_class = DSC$K_CLASS_S; + str_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + str_dsc.dsc$a_pointer = str; + + return (lib$put_common(&str_dsc)); +} + + +unsigned int _get_common(char **str) +{ + struct dsc$descriptor_s str_dsc; + unsigned int status; + char *tmp; + unsigned short len; + + assert(str); + + tmp = malloc(252); + assert(tmp); + + str_dsc.dsc$w_length = 252; + str_dsc.dsc$b_class = DSC$K_CLASS_S; + str_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + str_dsc.dsc$a_pointer = tmp; + + status = lib$get_common(&str_dsc, &len); + + if (OKAY(status)) { + tmp[len] = '\0'; + } else { + free(tmp); + tmp = NULL; + } + + *str = tmp; + return (status); +} + + + +unsigned int _create_dir(char *spec, unsigned int *uic, unsigned short pe, unsigned short pv) +{ + struct dsc$descriptor_s spec_dsc; + assert(spec); + + spec_dsc.dsc$w_length = strlen(spec); + spec_dsc.dsc$b_class = DSC$K_CLASS_S; + spec_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + spec_dsc.dsc$a_pointer = spec; + + return (lib$create_dir(&spec_dsc, uic, &pe, &pv, NULL, NULL, NULL)); +} + diff --git a/Modules/vms/lib/lib.h b/Modules/vms/lib/lib.h new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvbGliL2xpYi5o --- /dev/null +++ b/Modules/vms/lib/lib.h @@ -0,0 +1,23 @@ +#ifndef __RTL_H__ +#define __RTL_H__ + +# ifdef __cplusplus + extern "C" { +#endif + +extern unsigned int _date_time(char **); +extern unsigned int _free_ef(unsigned int); +extern unsigned int _get_ef(unsigned int *); +extern unsigned int _get_hostname(char **, unsigned int); +extern unsigned int _getjpi(int, unsigned int *, char *, char **); +extern unsigned int _getsyi(int, char **, unsigned int *, char *); +extern unsigned int _spawn(char *, char *, char *, unsigned int, char *, unsigned int *); +extern unsigned int _do_command(char *); +extern unsigned int _put_common(char *); +extern unsigned int _get_common(char **); +extern unsigned int _create_dir(char *, unsigned int *, unsigned short, unsigned short); + +#ifdef __cplusplus + } +#endif +#endif diff --git a/Modules/vms/lib/lib.i b/Modules/vms/lib/lib.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvbGliL2xpYi5p --- /dev/null +++ b/Modules/vms/lib/lib.i @@ -0,0 +1,49 @@ +%module lib + +%{ +#include "lib.h" +%} + +%include "typemaps.i" +%include <cstring.i> +%cstring_output_allocate(char **OUTPUT, free(*$1)); + +%typemap(in) unsigned int *owner_uic (unsigned int ouic) { + if (PyInt_Check($input)) { + ouic = PyInt_AsLong($input); + $1 = &ouic; + } else { + $1 = NULL; + } +} + +%exception { + Py_BEGIN_ALLOW_THREADS + $action + Py_END_ALLOW_THREADS +} + +%rename(date_time) _date_time; +%rename(free_ef) _free_ef; +%rename(get_ef) _get_ef; +%rename(get_hostname) _get_hostname; +%rename(getjpi) _getjpi; +%rename(getsyi) _getsyi; +%rename(spawn) _spawn; +%rename(do_command) _do_command; +%rename(put_common) _put_common; +%rename(get_common) _get_common; +%rename(create_dir) _create_dir; + +extern unsigned int _date_time(char **OUTPUT); +extern unsigned int _free_ef(unsigned int); +extern unsigned int _get_ef(unsigned int *OUTPUT); +extern unsigned int _get_hostname(char **OUTPUT, unsigned int); +extern unsigned int _getjpi(int, unsigned int *INPUT, char *, char **OUTPUT); +extern unsigned int _getsyi(int, char **OUTPUT, unsigned int *OUTPUT, char *); +extern unsigned int _spawn(char *, char *, char *, unsigned int, char *, unsigned int *OUTPUT); +extern unsigned int _do_command(char *); +extern unsigned int _put_common(char *); +extern unsigned int _get_common(char **OUTPUT); +extern unsigned int _create_dir(char *, unsigned int *owner_uic, unsigned short, unsigned short); + diff --git a/Modules/vms/libclidef/libclidef.i b/Modules/vms/libclidef/libclidef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvbGliY2xpZGVmL2xpYmNsaWRlZi5p --- /dev/null +++ b/Modules/vms/libclidef/libclidef.i @@ -0,0 +1,7 @@ +%module libclidef + +%constant int LIB_K_CLI_LOCAL_SYM = 1; +%constant int LIB_K_CLI_GLOBAL_SYM = 2; +%constant int LIB_M_CLI_CTRLT = 0x100000L; +%constant int LIB_M_CLI_CTRLY = 0x2000000L; +%constant int LIB_S_CLI_CTRL_FIELDS = 4; diff --git a/Modules/vms/libdtdef/libdtdef.i b/Modules/vms/libdtdef/libdtdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvbGliZHRkZWYvbGliZHRkZWYuaQ== --- /dev/null +++ b/Modules/vms/libdtdef/libdtdef.i @@ -0,0 +1,54 @@ +%module libdtdef + +%constant int LIB_K_MONTH_NAME = 0; +%constant int LIB_K_MONTH_NAME_ABB = 3; +%constant int LIB_K_WEEKDAY_NAME = 6; +%constant int LIB_K_WEEKDAY_NAME_ABB = 9; +%constant int LIB_K_MERIDIEM_INDICATOR = 12; +%constant int LIB_K_OUTPUT_FORMAT = 1; +%constant int LIB_K_INPUT_FORMAT = 2; +%constant int LIB_K_RELATIVE_DAY_NAME = 15; +%constant int LIB_K_FORMAT_MNEMONICS = 18; +%constant int LIB_K_LANGUAGE = 4; +%constant int LIB_K_MONTH_OF_YEAR = 1; +%constant int LIB_K_DAY_OF_YEAR = 2; +%constant int LIB_K_HOUR_OF_YEAR = 3; +%constant int LIB_K_MINUTE_OF_YEAR = 4; +%constant int LIB_K_SECOND_OF_YEAR = 5; +%constant int LIB_K_DAY_OF_MONTH = 6; +%constant int LIB_K_HOUR_OF_MONTH = 7; +%constant int LIB_K_MINUTE_OF_MONTH = 8; +%constant int LIB_K_SECOND_OF_MONTH = 9; +%constant int LIB_K_DAY_OF_WEEK = 10; +%constant int LIB_K_HOUR_OF_WEEK = 11; +%constant int LIB_K_MINUTE_OF_WEEK = 12; +%constant int LIB_K_SECOND_OF_WEEK = 13; +%constant int LIB_K_HOUR_OF_DAY = 14; +%constant int LIB_K_MINUTE_OF_DAY = 15; +%constant int LIB_K_SECOND_OF_DAY = 16; +%constant int LIB_K_MINUTE_OF_HOUR = 17; +%constant int LIB_K_SECOND_OF_HOUR = 18; +%constant int LIB_K_SECOND_OF_MINUTE = 19; +%constant int LIB_K_JULIAN_DATE = 20; +%constant int LIB_K_DELTA_WEEKS = 21; +%constant int LIB_K_DELTA_DAYS = 22; +%constant int LIB_K_DELTA_HOURS = 23; +%constant int LIB_K_DELTA_MINUTES = 24; +%constant int LIB_K_DELTA_SECONDS = 25; +%constant int LIB_K_DELTA_WEEKS_F = 26; +%constant int LIB_K_DELTA_DAYS_F = 27; +%constant int LIB_K_DELTA_HOURS_F = 28; +%constant int LIB_K_DELTA_MINUTES_F = 29; +%constant int LIB_K_DELTA_SECONDS_F = 30; +%constant int LIB_K_MAX_OPERATION = 31; +%constant int LIB_M_TIME_FIELDS = 0x1L; +%constant int LIB_M_DATE_FIELDS = 0x2L; +%constant int LIB_S_DT_PRINT_FIELDS = 1; +%constant int LIB_M_YEAR = 0x1L; +%constant int LIB_M_MONTH = 0x2L; +%constant int LIB_M_DAY = 0x4L; +%constant int LIB_M_HOUR = 0x8L; +%constant int LIB_M_MINUTE = 0x10L; +%constant int LIB_M_SECOND = 0x20L; +%constant int LIB_M_HUNDREDTHS = 0x40L; +%constant int LIB_S_DT_DEFAULT_FIELDS = 1; diff --git a/Modules/vms/libfisdef/libfisdef.i b/Modules/vms/libfisdef/libfisdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvbGliZmlzZGVmL2xpYmZpc2RlZi5p --- /dev/null +++ b/Modules/vms/libfisdef/libfisdef.i @@ -0,0 +1,7 @@ +%module libfisdef + +%constant int LIB_M_FIS_PARANOID = 0x1L; +%constant int LIB_M_FIS_NOTRANSLOG = 0x8L; +%constant int LIB_M_FIS_MIXEDCASE = 0x10L; +%constant int LIB_M_FIS_TV_AV = 0x20L; +%constant int LIB_S_LIB_FIS_FLAGS = 1; diff --git a/Modules/vms/lkidef/lkidef.i b/Modules/vms/lkidef/lkidef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvbGtpZGVmL2xraWRlZi5p --- /dev/null +++ b/Modules/vms/lkidef/lkidef.i @@ -0,0 +1,74 @@ +%module lkidef + +%constant int LKI_K_LENGTH = 24; +%constant int LKI_C_LENGTH = 24; +%constant int LKI_K_BR_LENGTH = 56; +%constant int LKI_C_BR_LENGTH = 56; +%constant int LKI_S_LKIDEF = 56; +%constant int LKI_S_RQSTART = 8; +%constant int LKI_S_RQLENGTH = 8; +%constant int LKI_S_GRSTART = 8; +%constant int LKI_S_GRLENGTH = 8; +%constant int LKI_M_SYSNAM = 0x80000000L; +%constant int LKI_S_NAMSPACE = 4; +%constant int LKI_S_STATEF = 3; +%constant int LKIUSR_K_LENGTH = 20; +%constant int LKIUSR_C_LENGTH = 20; +%constant int LKIUSR_K_BLOCKER_START = 20; +%constant int LKIUSR_S_LKIUSRDEF = 20; +%constant int LKIUSR_S_START = 8; +%constant int LKIUSR_S_LENGTH = 8; +%constant int LKI__RNG_S_RNGDEF = 32; +%constant int LKI__RNG_S_RQSTART = 8; +%constant int LKI__RNG_S_RQLENGTH = 8; +%constant int LKI__RNG_S_GRSTART = 8; +%constant int LKI__RNG_S_GRLENGTH = 8; +%constant int LKI_C_GRANTED = 1; +%constant int LKI_C_CONVERT = 0; +%constant int LKI_C_WAITING = -1; +%constant int LKI_C_RETRY = -2; +%constant int LKI_C_SCSWAIT = -3; +%constant int LKI_C_RSPNOTQED = -4; +%constant int LKI_C_RSPQUEUED = -5; +%constant int LKI_C_RSPGRANTD = -6; +%constant int LKI_C_RSPDOLOCL = -7; +%constant int LKI_C_RSPRESEND = -8; +%constant int LKI_C_LKBTYPE = 1; +%constant int LKI_C_RSBTYPE = 2; +%constant int LKI_C_LISTEND = 0; +%constant int LKI__PID = 256; +%constant int LKI__STATE = 257; +%constant int LKI__PARENT = 258; +%constant int LKI__LCKREFCNT = 259; +%constant int LKI__LOCKID = 260; +%constant int LKI__REMLKID = 261; +%constant int LKI__MSTLKID = 262; +%constant int LKI__LKID = 263; +%constant int LKI__CSID = 264; +%constant int LKI__BRL = 265; +%constant int LKI__RANGE = 266; +%constant int LKI__LASTLKB = 267; +%constant int LKI__NAMSPACE = 512; +%constant int LKI__RESNAM = 513; +%constant int LKI__RSBREFCNT = 514; +%constant int LKI__VALBLK = 515; +%constant int LKI__SYSTEM = 516; +%constant int LKI__LCKCOUNT = 517; +%constant int LKI__BLOCKEDBY = 518; +%constant int LKI__BLOCKING = 519; +%constant int LKI__LOCKS = 520; +%constant int LKI__CVTCOUNT = 521; +%constant int LKI__WAITCOUNT = 522; +%constant int LKI__GRANTCOUNT = 523; +%constant int LKI__MSTCSID = 524; +%constant int LKI__VALBLKST = 525; +%constant int LKI__BLOCKEDBY_BR = 526; +%constant int LKI__BLOCKING_BR = 527; +%constant int LKI__LOCKS_BR = 528; +%constant int LKI__BLOCKER_BR = 529; +%constant int LKI__XVALBLK = 530; +%constant int LKI__XVALNOTVALID = 531; +%constant int LKI__LASTRSB = 532; +%constant int LKISND_K_HDRLEN = 16; +%constant int LKISND_C_HDRLEN = 16; +%constant int LKISND_S_LKISNDDEF = 16; diff --git a/Modules/vms/lnmdef/lnmdef.i b/Modules/vms/lnmdef/lnmdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvbG5tZGVmL2xubWRlZi5p --- /dev/null +++ b/Modules/vms/lnmdef/lnmdef.i @@ -0,0 +1,31 @@ +%module lnmdef + +%constant int LNM_M_NO_ALIAS = 0x1L; +%constant int LNM_M_CONFINE = 0x2L; +%constant int LNM_M_CRELOG = 0x4L; +%constant int LNM_M_TABLE = 0x8L; +%constant int LNM_M_CONCEALED = 0x100L; +%constant int LNM_M_TERMINAL = 0x200L; +%constant int LNM_M_EXISTS = 0x400L; +%constant int LNM_M_SHAREABLE = 0x10000L; +%constant int LNM_M_CLUSTERWIDE = 0x20000L; +%constant int LNM_M_DCL_REQUEST = 0x40000L; +%constant int LNM_M_CREATE_IF = 0x1000000L; +%constant int LNM_M_CASE_BLIND = 0x2000000L; +%constant int LNM_M_INTERLOCKED = 0x4000000L; +%constant int LNM_M_LOCAL_ACTION = 0x8000000L; +%constant int LNM_S_LNMDEF = 4; +%constant int LNM_C_TABNAMLEN = 31; +%constant int LNM_C_NAMLENGTH = 255; +%constant int LNM_C_MAXDEPTH = 10; +%constant int LNM__INDEX = 1; +%constant int LNM__STRING = 2; +%constant int LNM__ATTRIBUTES = 3; +%constant int LNM__TABLE = 4; +%constant int LNM__LENGTH = 5; +%constant int LNM__ACMODE = 6; +%constant int LNM__MAX_INDEX = 7; +%constant int LNM__PARENT = 8; +%constant int LNM__LNMB_ADDR = 9; +%constant int LNM__AGENT_ACMODE = 10; +%constant int LNM__CHAIN = -1; diff --git a/Modules/vms/maildef/maildef.i b/Modules/vms/maildef/maildef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvbWFpbGRlZi9tYWlsZGVmLmk= --- /dev/null +++ b/Modules/vms/maildef/maildef.i @@ -0,0 +1,310 @@ +%module maildef + +%constant int mail__send_spare_0 = 1; +%constant int mail__send_foreign = 2; +%constant int mail__send_cc_line = 3; +%constant int mail__send_default_name = 4; +%constant int mail__send_default_transport = 5; +%constant int mail__send_error_entry = 6; +%constant int mail__send_filename = 7; +%constant int mail__send_from_line = 8; +%constant int mail__send_no_default_transport = 9; +%constant int mail__send_pers_name = 10; +%constant int mail__send_record = 11; +%constant int mail__send_resultspec = 12; +%constant int mail__send_server = 13; +%constant int mail__send_subject = 14; +%constant int mail__send_success_entry = 15; +%constant int mail__send_to_line = 16; +%constant int mail__send_uflags = 17; +%constant int mail__send_user_data = 18; +%constant int mail__send_username = 19; +%constant int mail__send_username_type = 20; +%constant int mail__send_fid = 21; +%constant int mail__send_no_pers_name = 22; +%constant int mail__send_sigfile = 23; +%constant int mail__send_no_sigfile = 24; +%constant int mail__send_parse_quotes = 25; +%constant int mail__send_copy_reply = 26; +%constant int mail__send_copy_send = 27; +%constant int mail__send_user = 28; +%constant int mail__send_copy_forward = 29; +%constant int mail__send_recip_folder = 30; +%constant int mail__send_out_spare3 = 31; +%constant int mail__send_out_spare4 = 32; +%constant int mail__send_out_spare5 = 33; +%constant int mail_k_send_min_item = 1; +%constant int mail_k_send_max_item = 33; +%constant int mail_k_send_items = 33; +%constant int mail__mailfile_spare_0 = 1025; +%constant int mail__mailfile_default_name = 1026; +%constant int mail__mailfile_folder_routine = 1027; +%constant int mail__mailfile_full_close = 1028; +%constant int mail__mailfile_name = 1029; +%constant int mail__mailfile_reclaim = 1030; +%constant int mail__mailfile_user_data = 1031; +%constant int mail__mailfile_wastebasket_name = 1032; +%constant int mail__mailfile_collate_seq = 1033; +%constant int mail__mailfile_in_spare2 = 1034; +%constant int mail__mailfile_in_spare3 = 1035; +%constant int mail__mailfile_in_spare4 = 1036; +%constant int mail__mailfile_in_spare5 = 1037; +%constant int mail__mailfile_in_spare6 = 1038; +%constant int mail__mailfile_in_spare7 = 1039; +%constant int mail__mailfile_in_spare8 = 1040; +%constant int mail__mailfile_in_spare9 = 1041; +%constant int mail__mailfile_in_spare10 = 1042; +%constant int mail__mailfile_in_spare11 = 1043; +%constant int mail__mailfile_in_spare12 = 1044; +%constant int mail__mailfile_in_spare13 = 1045; +%constant int mail__mailfile_in_spare14 = 1046; +%constant int mail__mailfile_in_spare15 = 1047; +%constant int mail__mailfile_in_spare16 = 1048; +%constant int mail__mailfile_in_spare17 = 1049; +%constant int mail__mailfile_in_spare18 = 1050; +%constant int mail__mailfile_in_spare19 = 1051; +%constant int mail__mailfile_in_spare20 = 1052; +%constant int mail__mailfile_data_reclaim = 1053; +%constant int mail__mailfile_data_scan = 1054; +%constant int mail__mailfile_deleted_bytes = 1055; +%constant int mail__mailfile_index_reclaim = 1056; +%constant int mail__mailfile_mail_directory = 1057; +%constant int mail__mailfile_messages_deleted = 1058; +%constant int mail__mailfile_resultspec = 1059; +%constant int mail__mailfile_total_reclaim = 1060; +%constant int mail__mailfile_wastebasket = 1061; +%constant int mail__mailfile_indexed = 1062; +%constant int mail__mailfile_out_spare2 = 1063; +%constant int mail__mailfile_out_spare3 = 1064; +%constant int mail__mailfile_out_spare4 = 1065; +%constant int mail__mailfile_out_spare5 = 1066; +%constant int mail__mailfile_out_spare6 = 1067; +%constant int mail__mailfile_out_spare7 = 1068; +%constant int mail__mailfile_out_spare8 = 1069; +%constant int mail__mailfile_out_spare9 = 1070; +%constant int mail__mailfile_out_spare10 = 1071; +%constant int mail__mailfile_out_spare11 = 1072; +%constant int mail__mailfile_out_spare12 = 1073; +%constant int mail__mailfile_out_spare13 = 1074; +%constant int mail__mailfile_out_spare14 = 1075; +%constant int mail__mailfile_out_spare15 = 1076; +%constant int mail__mailfile_out_spare16 = 1077; +%constant int mail__mailfile_out_spare17 = 1078; +%constant int mail__mailfile_out_spare18 = 1079; +%constant int mail__mailfile_out_spare19 = 1080; +%constant int mail__mailfile_out_spare20 = 1081; +%constant int mail_k_mailfile_min_item = 1025; +%constant int mail_k_mailfile_max_item = 1081; +%constant int mail_k_mailfile_items = 57; +%constant int mail__message_spare_0 = 2048; +%constant int mail__message_back = 2049; +%constant int mail__message_before = 2050; +%constant int mail__message_cc_substring = 2051; +%constant int mail__message_continue = 2052; +%constant int mail__message_file_action = 2053; +%constant int mail__message_folder_action = 2054; +%constant int mail__message_default_name = 2055; +%constant int mail__message_delete = 2056; +%constant int mail__message_erase = 2057; +%constant int mail__message_file_ctx = 2058; +%constant int mail__message_filename = 2059; +%constant int mail__message_flags = 2060; +%constant int mail__message_folder = 2061; +%constant int mail__message_from_substring = 2062; +%constant int mail__message_id = 2063; +%constant int mail__message_next = 2064; +%constant int mail__message_since = 2065; +%constant int mail__message_subj_substring = 2066; +%constant int mail__message_to_substring = 2067; +%constant int mail__message_uflags = 2068; +%constant int mail__message_auto_newmail = 2069; +%constant int mail__message_user_data = 2070; +%constant int mail__message_flags_mbz = 2071; +%constant int mail__message_min_class = 2072; +%constant int mail__message_max_class = 2073; +%constant int mail__message_in_spare1 = 2074; +%constant int mail__message_in_spare2 = 2075; +%constant int mail__message_in_spare3 = 2076; +%constant int mail__message_in_spare4 = 2077; +%constant int mail__message_in_spare5 = 2078; +%constant int mail__message_in_spare6 = 2079; +%constant int mail__message_in_spare7 = 2080; +%constant int mail__message_in_spare8 = 2081; +%constant int mail__message_in_spare9 = 2082; +%constant int mail__message_in_spare10 = 2083; +%constant int mail__message_in_spare11 = 2084; +%constant int mail__message_in_spare12 = 2085; +%constant int mail__message_in_spare13 = 2086; +%constant int mail__message_in_spare14 = 2087; +%constant int mail__message_in_spare15 = 2088; +%constant int mail__message_in_spare16 = 2089; +%constant int mail__message_in_spare17 = 2090; +%constant int mail__message_in_spare18 = 2091; +%constant int mail__message_in_spare19 = 2092; +%constant int mail__message_in_spare20 = 2093; +%constant int mail__message_cc = 2094; +%constant int mail__message_current_id = 2095; +%constant int mail__message_date = 2096; +%constant int mail__message_extid = 2097; +%constant int mail__message_file_created = 2098; +%constant int mail__message_folder_created = 2099; +%constant int mail__message_from = 2100; +%constant int mail__message_record = 2101; +%constant int mail__message_record_type = 2102; +%constant int mail__message_reply_path = 2103; +%constant int mail__message_resultspec = 2104; +%constant int mail__message_return_flags = 2105; +%constant int mail__message_return_uflags = 2106; +%constant int mail__message_selected = 2107; +%constant int mail__message_sender = 2108; +%constant int mail__message_size = 2109; +%constant int mail__message_subject = 2110; +%constant int mail__message_to = 2111; +%constant int mail__message_buffer = 2112; +%constant int mail__message_return_class = 2113; +%constant int mail__message_binary_date = 2114; +%constant int mail__message_spare4 = 2115; +%constant int mail__message_parse_quotes = 2116; +%constant int mail__message_spare6 = 2117; +%constant int mail__message_spare7 = 2118; +%constant int mail__message_spare8 = 2119; +%constant int mail__message_spare9 = 2120; +%constant int mail__message_spare10 = 2121; +%constant int mail__message_spare11 = 2122; +%constant int mail__message_spare12 = 2123; +%constant int mail__message_spare13 = 2124; +%constant int mail__message_spare14 = 2125; +%constant int mail__message_spare15 = 2126; +%constant int mail__message_spare16 = 2127; +%constant int mail__message_spare17 = 2128; +%constant int mail__message_spare18 = 2129; +%constant int mail__message_spare19 = 2130; +%constant int mail__message_null = 2131; +%constant int mail__message_header = 2132; +%constant int mail__message_text = 2133; +%constant int mail__message_spare20 = 2134; +%constant int mail_k_message_min_item = 2048; +%constant int mail_k_message_max_item = 2134; +%constant int mail_k_message_items = 87; +%constant int mail__user_spare_0 = 3072; +%constant int mail__user_first = 3073; +%constant int mail__user_next = 3074; +%constant int mail__user_username = 3075; +%constant int mail__user_set_auto_purge = 3076; +%constant int mail__user_set_no_auto_purge = 3077; +%constant int mail__user_set_sub_directory = 3078; +%constant int mail__user_set_no_sub_directory = 3079; +%constant int mail__user_set_forwarding = 3080; +%constant int mail__user_set_no_forwarding = 3081; +%constant int mail__user_set_personal_name = 3082; +%constant int mail__user_set_no_personal_name = 3083; +%constant int mail__user_set_copy_send = 3084; +%constant int mail__user_set_no_copy_send = 3085; +%constant int mail__user_set_copy_reply = 3086; +%constant int mail__user_set_no_copy_reply = 3087; +%constant int mail__user_set_new_messages = 3088; +%constant int mail__user_create_if = 3089; +%constant int mail__user_set_mailplus = 3090; +%constant int mail__user_set_no_mailplus = 3091; +%constant int mail__user_set_transport = 3092; +%constant int mail__user_set_no_transport = 3093; +%constant int mail__user_set_editor = 3094; +%constant int mail__user_set_no_editor = 3095; +%constant int mail__user_set_queue = 3096; +%constant int mail__user_set_no_queue = 3097; +%constant int mail__user_set_user1 = 3098; +%constant int mail__user_set_no_user1 = 3099; +%constant int mail__user_set_user2 = 3100; +%constant int mail__user_set_no_user2 = 3101; +%constant int mail__user_set_user3 = 3102; +%constant int mail__user_set_no_user3 = 3103; +%constant int mail__user_set_form = 3104; +%constant int mail__user_set_no_form = 3105; +%constant int mail__user_set_copy_forward = 3106; +%constant int mail__user_set_no_copy_forward = 3107; +%constant int mail__user_set_cc_prompt = 3108; +%constant int mail__user_set_no_cc_prompt = 3109; +%constant int mail__user_set_sigfile = 3110; +%constant int mail__user_set_no_sigfile = 3111; +%constant int mail__user_in_spare1 = 3112; +%constant int mail__user_in_spare2 = 3113; +%constant int mail__user_in_spare3 = 3114; +%constant int mail__user_in_spare4 = 3115; +%constant int mail__user_in_spare5 = 3116; +%constant int mail__user_in_spare6 = 3117; +%constant int mail__user_in_spare7 = 3118; +%constant int mail__user_in_spare8 = 3119; +%constant int mail__user_in_spare9 = 3120; +%constant int mail__user_in_spare10 = 3121; +%constant int mail__user_in_spare11 = 3122; +%constant int mail__user_in_spare12 = 3123; +%constant int mail__user_in_spare13 = 3124; +%constant int mail__user_in_spare14 = 3125; +%constant int mail__user_in_spare15 = 3126; +%constant int mail__user_in_spare16 = 3127; +%constant int mail__user_in_spare17 = 3128; +%constant int mail__user_in_spare18 = 3129; +%constant int mail__user_in_spare19 = 3130; +%constant int mail__user_in_spare20 = 3131; +%constant int mail__user_mailplus = 3132; +%constant int mail__user_transport = 3133; +%constant int mail__user_editor = 3134; +%constant int mail__user_queue = 3135; +%constant int mail__user_user1 = 3136; +%constant int mail__user_user2 = 3137; +%constant int mail__user_user3 = 3138; +%constant int mail__user_form = 3139; +%constant int mail__user_copy_forward = 3140; +%constant int mail__user_sigfile = 3141; +%constant int mail__user_return_username = 3142; +%constant int mail__user_auto_purge = 3143; +%constant int mail__user_sub_directory = 3144; +%constant int mail__user_full_directory = 3145; +%constant int mail__user_new_messages = 3146; +%constant int mail__user_forwarding = 3147; +%constant int mail__user_personal_name = 3148; +%constant int mail__user_copy_send = 3149; +%constant int mail__user_copy_reply = 3150; +%constant int mail__user_captive = 3151; +%constant int mail__user_cc_prompt = 3152; +%constant int mail__user_out_spare2 = 3153; +%constant int mail__user_out_spare3 = 3154; +%constant int mail__user_out_spare4 = 3155; +%constant int mail__user_out_spare5 = 3156; +%constant int mail__user_out_spare6 = 3157; +%constant int mail__user_out_spare7 = 3158; +%constant int mail__user_out_spare8 = 3159; +%constant int mail__user_out_spare9 = 3160; +%constant int mail__user_out_spare10 = 3161; +%constant int mail__user_out_spare11 = 3162; +%constant int mail__user_out_spare12 = 3163; +%constant int mail__user_out_spare13 = 3164; +%constant int mail__user_out_spare14 = 3165; +%constant int mail__user_out_spare15 = 3166; +%constant int mail__user_out_spare16 = 3167; +%constant int mail__user_out_spare17 = 3168; +%constant int mail__user_out_spare18 = 3169; +%constant int mail__user_out_spare19 = 3170; +%constant int mail__user_out_spare20 = 3171; +%constant int mail_k_user_min_item = 3072; +%constant int mail_k_user_max_item = 3171; +%constant int mail_k_user_items = 100; +%constant int mail__noop = 4097; +%constant int mail__nosignal = 4098; +%constant int mail__noprobe = 4099; +%constant int mail__tld_input = 4100; +%constant int mail__tld_output = 4101; +%constant int mail__to = 1; +%constant int mail__cc = 2; +%constant int mail__spare1 = 3; +%constant int mail__spare2 = 4; +%constant int MAIL_m_newmsg = 0x1L; +%constant int MAIL_m_replied = 0x2L; +%constant int MAIL_m_dwmail = 0x4L; +%constant int MAIL_m_extmsg = 0x8L; +%constant int MAIL_m_extfnf = 0x10L; +%constant int MAIL_m_notrans = 0x20L; +%constant int MAIL_m_extnstd = 0x40L; +%constant int MAIL_m_marked = 0x80L; +%constant int MAIL_m_recmode = 0x100L; +%constant int MAIL_S_flagsdef = 2; diff --git a/Modules/vms/mntdef/mntdef.i b/Modules/vms/mntdef/mntdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvbW50ZGVmL21udGRlZi5p --- /dev/null +++ b/Modules/vms/mntdef/mntdef.i @@ -0,0 +1,115 @@ +%module mntdef + +%constant int MNT_M_FOREIGN = 0x1L; +%constant int MNT_M_GROUP = 0x2L; +%constant int MNT_M_NOASSIST = 0x4L; +%constant int MNT_M_NODISKQ = 0x8L; +%constant int MNT_M_NOHDR3 = 0x10L; +%constant int MNT_M_NOLABEL = 0x20L; +%constant int MNT_M_NOWRITE = 0x40L; +%constant int MNT_M_OVR_ACCESS = 0x80L; +%constant int MNT_M_OVR_EXP = 0x100L; +%constant int MNT_M_OVR_IDENT = 0x200L; +%constant int MNT_M_OVR_SETID = 0x400L; +%constant int MNT_M_READCHECK = 0x800L; +%constant int MNT_M_SHARE = 0x1000L; +%constant int MNT_M_MESSAGE = 0x2000L; +%constant int MNT_M_SYSTEM = 0x4000L; +%constant int MNT_M_WRITECHECK = 0x8000L; +%constant int MNT_M_WRITETHRU = 0x10000L; +%constant int MNT_M_NOCACHE = 0x20000L; +%constant int MNT_M_OVR_LOCK = 0x40000L; +%constant int MNT_M_NOMNTVER = 0x80000L; +%constant int MNT_M_NOUNLOAD = 0x100000L; +%constant int MNT_M_TAPE_DATA_WRITE = 0x200000L; +%constant int MNT_M_NOCOPY = 0x400000L; +%constant int MNT_M_NOAUTO = 0x800000L; +%constant int MNT_M_INIT_ALL = 0x1000000L; +%constant int MNT_M_INIT_CONT = 0x2000000L; +%constant int MNT_M_OVR_VOLO = 0x4000000L; +%constant int MNT_M_INTERCHG = 0x8000000L; +%constant int MNT_M_CLUSTER = 0x10000000L; +%constant int MNT_M_NOREBUILD = 0x20000000L; +%constant int MNT_M_OVR_SHAMEM = 0x40000000L; +%constant int MNT_M_MULTI_VOL = 0x80000000L; +%constant int MNT2_M_DISKQ = 0x1L; +%constant int MNT2_M_COMPACTION = 0x2L; +%constant int MNT2_M_INCLUDE = 0x4L; +%constant int MNT2_M_PASS2 = 0x8L; +%constant int MNT2_M_OVR_NOFE = 0x10L; +%constant int MNT2_M_SCRATCH = 0x20L; +%constant int MNT2_M_CDROM = 0x40L; +%constant int MNT2_M_XAR = 0x80L; +%constant int MNT2_M_DSI = 0x100L; +%constant int MNT2_M_SUBSYSTEM = 0x200L; +%constant int MNT2_M_NOCOMPACTION = 0x400L; +%constant int MNT2_M_OVR_SECURITY = 0x800L; +%constant int MNT2_M_OVR_LIMITED_SEARCH = 0x1000L; +%constant int MNT2_M_POOL = 0x2000L; +%constant int MNT2_M_WLG_ENABLE = 0x4000L; +%constant int MNT2_M_WLG_DISABLE = 0x8000L; +%constant int MNT2_M_REQUIRE_MEMBERS = 0x10000L; +%constant int MNT2_M_VERIFY_LABEL = 0x20000L; +%constant int MNT2_M_FULL_MERGE = 0x40000L; +%constant int MNT2_M_WRITE_FIRST = 0x80000L; +%constant int MNT2_M_DCD = 0x100000L; +%constant int MNT2_M_NODCD = 0x200000L; +%constant int MNT2_M_LOCAL_HOST = 0x400000L; +%constant int MNT2_M_FACTOR = 0x800000L; +%constant int MNT2_M_PRIORITY = 0x1000000L; +%constant int MNT__DEVNAM = 1; +%constant int MNT__VOLNAM = 2; +%constant int MNT__LOGNAM = 3; +%constant int MNT__FLAGS = 4; +%constant int MNT__ACCESSED = 5; +%constant int MNT__PROCESSOR = 6; +%constant int MNT__VOLSET = 7; +%constant int MNT__BLOCKSIZE = 8; +%constant int MNT__DENSITY = 9; +%constant int MNT__EXTENT = 10; +%constant int MNT__FILEID = 11; +%constant int MNT__LIMIT = 12; +%constant int MNT__OWNER = 13; +%constant int MNT__VPROT = 14; +%constant int MNT__QUOTA = 15; +%constant int MNT__RECORDSIZ = 16; +%constant int MNT__WINDOW = 17; +%constant int MNT__EXTENSION = 18; +%constant int MNT__VISUAL_ID = 19; +%constant int MNT__COMMENT = 20; +%constant int MNT__CLASS = 21; +%constant int MNT__UNUSED2 = 22; +%constant int MNT__ACCPTNAM = 23; +%constant int MNT__SHACOPY_BUF = 24; +%constant int MNT__SHANAM = 25; +%constant int MNT__SHAMEM = 26; +%constant int MNT__SHAMEM_MGCOPY = 27; +%constant int MNT__SHAMEM_COPY = 28; +%constant int MNT__PRFD_PATH = 29; +%constant int MNT__ASSIGNMENT_UNIT = 30; +%constant int MNT__CART_MEDIA_NAME = 31; +%constant int MNT__CARTRIDGE_NAME = 32; +%constant int MNT__CARTRIDGE_SIDE = 33; +%constant int MNT__COLLECTION = 34; +%constant int MNT__DEVICE_TYPE = 35; +%constant int MNT__DISPOSITION = 36; +%constant int MNT__LOCATION = 37; +%constant int MNT__MEDIA_NAME = 38; +%constant int MNT__UNUSED4 = 39; +%constant int MNT__UNDEFINED_FAT = 40; +%constant int MNT__UCS = 41; +%constant int MNT__TAPE_EXPIRATION = 42; +%constant int MNT__PRIORITY = 43; +%constant int MNT__FACTOR = 44; +%constant int MNT__WBM_SIZE = 45; +%constant int MNT__DATA = 46; +%constant int MNT__NODATA = 47; +%constant int MNT__LAST_ITEM_CODE = 48; +%constant int MNT_C_BASE_CARTRIDGE = 1; +%constant int MNT_C_COMPOUND_CARTRIDGE = 2; +%constant int MNT_C_PREASSIGNED_SIDE = 3; +%constant int MNT_C_SIDE = 4; +%constant int MNT_C_KEEP = 1; +%constant int MNT_C_RELEASE = 2; +%constant int MNT_S_MNTDEF = 8; +%constant int UNFAT_S_UNDEFINED_FAT = 4; diff --git a/Modules/vms/nsadef/nsadef.i b/Modules/vms/nsadef/nsadef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvbnNhZGVmL25zYWRlZi5p --- /dev/null +++ b/Modules/vms/nsadef/nsadef.i @@ -0,0 +1,1047 @@ +%module nsadef + +%constant int NSA_C_MSG_SERVER = 1; +%constant int NSA_C_MSG_AUDIT = 2; +%constant int NSA_C_MSG_BREAKIN = 3; +%constant int NSA_C_MSG_INSTALL = 4; +%constant int NSA_C_MSG_LOGFAIL = 5; +%constant int NSA_C_MSG_LOGIN = 6; +%constant int NSA_C_MSG_LOGOUT = 7; +%constant int NSA_C_MSG_MOUNT = 8; +%constant int NSA_C_MSG_NETPROXY = 9; +%constant int NSA_C_MSG_ACCESS = 10; +%constant int NSA_C_MSG_SYSUAF = 11; +%constant int NSA_C_MSG_RIGHTSDB = 12; +%constant int NSA_C_MSG_CUSTOMER = 13; +%constant int NSA_C_MSG_CSS = 14; +%constant int NSA_C_MSG_LP = 15; +%constant int NSA_C_MSG_PRVAUD = 16; +%constant int NSA_C_MSG_RESERVED_1 = 17; +%constant int NSA_C_MSG_RESERVED_2 = 18; +%constant int NSA_C_MSG_RESERVED_3 = 19; +%constant int NSA_C_MSG_RESERVED_4 = 20; +%constant int NSA_C_MSG_SYSTIME = 21; +%constant int NSA_C_MSG_SYSGEN = 22; +%constant int NSA_C_MSG_OBJ_CREATE = 23; +%constant int NSA_C_MSG_OBJ_DELETE = 24; +%constant int NSA_C_MSG_OBJ_DEACCESS = 25; +%constant int NSA_C_MSG_OBJ_ACCESS = 26; +%constant int NSA_C_MSG_CONNECTION = 27; +%constant int NSA_C_MSG_RESERVED_5 = 28; +%constant int NSA_C_MSG_NCP = 29; +%constant int NSA_C_MSG_PROCESS = 30; +%constant int NSA_C_MSG_OBJECT_SERVICE = 31; +%constant int NSA_C_MSG_AUTHENTICATE = 32; +%constant int NSA_C_MSG_PERSONA = 33; +%constant int NSA_C_MSG_MAX_CODE = 34; +%constant int NSA_M_MANDATORY = 0x1L; +%constant int NSA_M_ACL = 0x2L; +%constant int NSA_M_INTERNAL = 0x4L; +%constant int NSA_M_ALARM = 0x8L; +%constant int NSA_M_AUDIT = 0x10L; +%constant int NSA_M_FOREIGN = 0x20L; +%constant int NSA_M_FLUSH = 0x40L; +%constant int NSA_M_SERVER = 0x80L; +%constant int NSA_M_DEACCESS = 0x100L; +%constant int NSA_M_SYNCH = 0x200L; +%constant int NSA_M_IDENTIFIER = 0x400L; +%constant int NSA_M_PROCPRIV = 0x800L; +%constant int NSA_M_AUTHPRIV = 0x1000L; +%constant int NSA_M_NOEVTCHECK = 0x2000L; +%constant int NSA_M_NOFAILAUD = 0x4000L; +%constant int NSA_M_NOSUCCAUD = 0x8000L; +%constant int NSA_C_VERSION_1 = 1; +%constant int NSA_C_VERSION_2 = 2; +%constant int NSA_C_VERSION_3 = 3; +%constant int NSA_C_V1_MSG_HDR_LENGTH = 12; +%constant int NSA_K_V1_MSG_HDR_LENGTH = 12; +%constant int NSA_C_MSG_HDR_LENGTH = 20; +%constant int NSA_K_MSG_HDR_LENGTH = 20; +%constant int NSA_S_NSAMSGDEF = 21; +%constant int NSA_S_SPARE_4 = 6; +%constant int NSA_C_SRV_ADD_JOURNAL = 1; +%constant int NSA_C_SRV_REM_JOURNAL = 2; +%constant int NSA_C_SRV_FLUSH_JOURNAL = 3; +%constant int NSA_C_SRV_FLUSH_ALL_JOURNALS = 4; +%constant int NSA_C_SRV_FLUSH_INTERVAL = 5; +%constant int NSA_C_SRV_ARCHIVE_DEVICE = 6; +%constant int NSA_C_SRV_ARCHIVE_ENABLE = 7; +%constant int NSA_C_SRV_ARCHIVE_DISABLE = 8; +%constant int NSA_C_SRV_ARCHIVE_INTERVAL = 9; +%constant int NSA_C_SRV_BADJNL_INTERVAL = 10; +%constant int NSA_C_SRV_BADJNL_LIMIT = 11; +%constant int NSA_C_SRV_EXIT = 12; +%constant int NSA_C_SRV_CREATE_SYSTEM_LOG = 13; +%constant int NSA_C_SRV_AUDIT_CHANGE = 14; +%constant int NSA_C_SRV_REDIRECT_SYSTEM_LOG = 15; +%constant int NSA_C_SRV_REM_ENABLE = 16; +%constant int NSA_C_SRV_REM_DISABLE = 17; +%constant int NSA_C_SRV_REM_MONITOR_INTERVAL = 18; +%constant int NSA_C_SRV_REM_RESUME_INTERVAL = 19; +%constant int NSA_C_SRV_REM_MONITOR_MODE = 20; +%constant int NSA_C_SRV_REM_FINAL_ACTION = 21; +%constant int NSA_C_SRV_REM_WARN_THRESHOLD = 22; +%constant int NSA_C_SRV_REM_ACTION_THRESHOLD = 23; +%constant int NSA_C_SRV_REM_RESUME_THRESHOLD = 24; +%constant int NSA_C_SRV_REM_RESUME = 25; +%constant int NSA_C_SRV_REM_ADD_EXCLUDE = 26; +%constant int NSA_C_SRV_REM_DEL_EXCLUDE = 27; +%constant int NSA_C_SRV_LISTENER_ENABLE = 28; +%constant int NSA_C_SRV_LISTENER_DISABLE = 29; +%constant int NSA_C_SRV_NEW_LOG = 30; +%constant int NSA_C_SRV_RESTART = 31; +%constant int NSA_C_SRV_LOCK_SERVER = 32; +%constant int NSA_C_SRV_RESERVED_1 = 33; +%constant int NSA_C_SRV_RESERVED_2 = 34; +%constant int NSA_C_SRV_RESERVED_3 = 35; +%constant int NSA_C_SRV_RESERVED_4 = 36; +%constant int NSA_C_SRV_FAILURE_MODE = 37; +%constant int NSA_C_SRV_SNAPSHOT = 38; +%constant int NSA_C_SRV_BACKLOG_TOTAL = 39; +%constant int NSA_C_SRV_BACKLOG_PROCESS = 40; +%constant int NSA_C_SRV_INITIATE = 41; +%constant int NSA_C_SRV_RESTART_ALL = 42; +%constant int NSA_C_SRV_RESTART_OBJECT = 43; +%constant int NSA_C_SRV_MAX_CODE = 44; +%constant int NSA_C_REM_SPACE = 1; +%constant int NSA_C_REM_PERCENTAGE = 2; +%constant int NSA_C_REM_COUNT = 3; +%constant int NSA_C_REM_TIME = 4; +%constant int NSA_C_REM_MAX_MODE = 5; +%constant int NSA_C_REM_PURGE_OLD = 1; +%constant int NSA_C_REM_IGNORE_NEW = 2; +%constant int NSA_C_REM_RESTART = 3; +%constant int NSA_C_REM_CRASH = 4; +%constant int NSA_C_REM_MAX_FINAL = 5; +%constant int NSA_C_AUDIT_DISABLED = 1; +%constant int NSA_C_AUDIT_ENABLED = 2; +%constant int NSA_C_AUDIT_TERMINATE = 3; +%constant int NSA_C_AUDIT_INITIATE = 4; +%constant int NSA_C_SNAPSHOT_SAVE = 5; +%constant int NSA_C_SNAPSHOT_ABORT = 6; +%constant int NSA_C_SNAPSHOT_STARTUP = 7; +%constant int NSA_C_SNAPSHOT_ACCESS = 8; +%constant int NSA_C_AUDIT_STATE = 9; +%constant int NSA_C_ALARM_STATE = 10; +%constant int NSA_C_AUDIT_LOG_FINAL = 11; +%constant int NSA_C_AUDIT_LOG_FIRST = 12; +%constant int NSA_C_AUDIT_BAD_TCB_AUDIT = 13; +%constant int NSA_C_AUDIT_MAX_CODE = 14; +%constant int NSA_C_FAIL_WAIT = 1; +%constant int NSA_C_FAIL_CRASH = 2; +%constant int NSA_C_FAIL_IGNORE = 3; +%constant int NSA_C_FAIL_MAX_MODE = 4; +%constant int NSA_C_BATCH = 1; +%constant int NSA_C_DETACHED = 2; +%constant int NSA_C_DIALUP = 3; +%constant int NSA_C_LOCAL = 4; +%constant int NSA_C_NETWORK = 5; +%constant int NSA_C_REMOTE = 6; +%constant int NSA_C_SUBPROCESS = 7; +%constant int NSA_C_SERVER = 8; +%constant int NSA_C_JOBTYPE_MAX_CODE = 9; +%constant int NSA_C_INSTALL_ADD = 1; +%constant int NSA_C_INSTALL_REMOVE = 2; +%constant int NSA_C_INSTALL_MAX_CODE = 3; +%constant int NSA_M_INS_SPARE_0 = 0x1L; +%constant int NSA_M_INS_OPEN = 0x2L; +%constant int NSA_M_INS_HEADER_RESIDENT = 0x4L; +%constant int NSA_M_INS_SHARED = 0x8L; +%constant int NSA_M_INS_EXECUTE_ONLY = 0x10L; +%constant int NSA_M_INS_WRITEABLE = 0x20L; +%constant int NSA_M_INS_PRIVILEGED = 0x40L; +%constant int NSA_M_INS_PROTECTED = 0x80L; +%constant int NSA_M_INS_NOPURGE = 0x100L; +%constant int NSA_M_INS_ACCOUNTING = 0x200L; +%constant int NSA_M_INS_AUTHORIZED = 0x400L; +%constant int NSA_M_INS_SIGNAL = 0x800L; +%constant int NSA_S_FILL_223_ = 4; +%constant int NSA_C_INS_SPARE_0 = 1; +%constant int NSA_C_INS_OPEN = 2; +%constant int NSA_C_INS_HEADER_RESIDENT = 3; +%constant int NSA_C_INS_SHARED = 4; +%constant int NSA_C_INS_EXECUTE_ONLY = 5; +%constant int NSA_C_INS_WRITEABLE = 6; +%constant int NSA_C_INS_PRIVILEGED = 7; +%constant int NSA_C_INS_PROTECTED = 8; +%constant int NSA_C_INS_NOPURGE = 9; +%constant int NSA_C_INS_ACCOUNTING = 10; +%constant int NSA_C_INS_AUTHORIZED = 11; +%constant int NSA_C_INS_SIGNAL = 12; +%constant int NSA_C_INS_MAX_CODE = 13; +%constant int NSA_C_VOL_DISMOUNT = 1; +%constant int NSA_C_VOL_MOUNT = 2; +%constant int NSA_C_VOL_MAX_CODE = 3; +%constant int NSA_M_MNT_FOREIGN = 0x1L; +%constant int NSA_M_MNT_GROUP = 0x2L; +%constant int NSA_M_MNT_NOASSIST = 0x4L; +%constant int NSA_M_MNT_NODISKQ = 0x8L; +%constant int NSA_M_MNT_NOHDR3 = 0x10L; +%constant int NSA_M_MNT_NOLABEL = 0x20L; +%constant int NSA_M_MNT_NOWRITE = 0x40L; +%constant int NSA_M_MNT_OVR_ACCESS = 0x80L; +%constant int NSA_M_MNT_OVR_EXP = 0x100L; +%constant int NSA_M_MNT_OVR_IDENT = 0x200L; +%constant int NSA_M_MNT_OVR_SETID = 0x400L; +%constant int NSA_M_MNT_READCHECK = 0x800L; +%constant int NSA_M_MNT_SHARE = 0x1000L; +%constant int NSA_M_MNT_MESSAGE = 0x2000L; +%constant int NSA_M_MNT_SYSTEM = 0x4000L; +%constant int NSA_M_MNT_WRITECHECK = 0x8000L; +%constant int NSA_M_MNT_WRITETHRU = 0x10000L; +%constant int NSA_M_MNT_NOCACHE = 0x20000L; +%constant int NSA_M_MNT_OVR_LOCK = 0x40000L; +%constant int NSA_M_MNT_NOMNTVER = 0x80000L; +%constant int NSA_M_MNT_NOUNLOAD = 0x100000L; +%constant int NSA_M_MNT_TAPE_DATA_WRITE = 0x200000L; +%constant int NSA_M_MNT_NOCOPY = 0x400000L; +%constant int NSA_M_MNT_NOAUTO = 0x800000L; +%constant int NSA_M_MNT_INIT_ALL = 0x1000000L; +%constant int NSA_M_MNT_INIT_CONT = 0x2000000L; +%constant int NSA_M_MNT_OVR_VOLO = 0x4000000L; +%constant int NSA_M_MNT_INTERCHG = 0x8000000L; +%constant int NSA_M_MNT_CLUSTER = 0x10000000L; +%constant int NSA_M_MNT_NOREBUILD = 0x20000000L; +%constant int NSA_M_MNT_OVR_SHAMEM = 0x40000000L; +%constant int NSA_M_MNT_MULTI_VOL = 0x80000000L; +%constant int NSA_S_FILL_226_ = 8; +%constant int NSA_C_MNT_MAX_CODE = 47; +%constant int NSA_C_DMT_MAX_CODE = 5; +%constant int NSA_M_DMT_NOUNLOAD = 0x1L; +%constant int NSA_M_DMT_UNIT = 0x2L; +%constant int NSA_M_DMT_ABORT = 0x4L; +%constant int NSA_M_DMT_CLUSTER = 0x8L; +%constant int NSA_S_FILL_229_ = 4; +%constant int NSA_C_NETPROXY_ADD = 1; +%constant int NSA_C_NETPROXY_DELETE = 2; +%constant int NSA_C_NETPROXY_MODIFY = 3; +%constant int NSA_C_NETPROXY_NCP = 4; +%constant int NSA_C_NETPROXY_SHUTDOWN = 5; +%constant int NSA_C_NETPROXY_STARTUP = 6; +%constant int NSA_C_NETPROXY_CREATE = 7; +%constant int NSA_C_NETPROXY_MAX_CODE = 8; +%constant int NSA_C_PERSONA_CREATE = 1; +%constant int NSA_C_PERSONA_DELETE = 2; +%constant int NSA_C_PERSONA_MODIFY = 3; +%constant int NSA_C_PERSONA_MAX_CODE = 4; +%constant int NSA_C_FILE_ACCESS = 1; +%constant int NSA_C_DEVICE_ACCESS = 2; +%constant int NSA_C_QUEUE_ACCESS = 3; +%constant int NSA_C_CEF_ACCESS = 4; +%constant int NSA_C_LNM_ACCESS = 5; +%constant int NSA_C_PROCESS_ACCESS = 6; +%constant int NSA_C_GRPGBL_ACCESS = 7; +%constant int NSA_C_SYSGBL_ACCESS = 8; +%constant int NSA_C_CAPABILITY_ACCESS = 9; +%constant int NSA_C_EVENT_ACCESS = 10; +%constant int NSA_C_LOCK_ACCESS = 11; +%constant int NSA_C_VOLUME_ACCESS = 12; +%constant int NSA_C_OBJECT_MAX_CODE = 13; +%constant int NSA_C_SYSUAF_ADD = 1; +%constant int NSA_C_SYSUAF_COPY = 2; +%constant int NSA_C_SYSUAF_DELETE = 3; +%constant int NSA_C_SYSUAF_MODIFY = 4; +%constant int NSA_C_SYSUAF_RENAME = 5; +%constant int NSA_C_SYSUAF_MAX_CODE = 6; +%constant int NSA_C_RDB_ADD_ID = 1; +%constant int NSA_C_RDB_CREATE = 2; +%constant int NSA_C_RDB_GRANT_ID = 3; +%constant int NSA_C_RDB_MOD_HOLDER = 4; +%constant int NSA_C_RDB_MOD_ID = 5; +%constant int NSA_C_RDB_REM_ID = 6; +%constant int NSA_C_RDB_REVOKE_ID = 7; +%constant int NSA_C_RDB_MAX_CODE = 8; +%constant int NSA_C_PRVAUD_SUCCESS = 1; +%constant int NSA_C_PRVAUD_FAILURE = 2; +%constant int NSA_C_PRVAUD_MAX_CODE = 3; +%constant int NSA_C_SYSTIM_SET = 1; +%constant int NSA_C_SYSTIM_CAL = 2; +%constant int NSA_C_SYSTIM_MAX_CODE = 3; +%constant int NSA_C_SYSGEN_SET = 1; +%constant int NSA_C_SYSGEN_MAX_CODE = 2; +%constant int NSA_C_OBJ_CREATE = 1; +%constant int NSA_C_CREATE_MAX_CODE = 2; +%constant int NSA_C_OBJ_DELETE = 1; +%constant int NSA_C_DELETE_MAX_CODE = 2; +%constant int NSA_C_OBJ_ACCESS = 1; +%constant int NSA_C_ACCESS_MAX_CODE = 2; +%constant int NSA_C_OBJ_DEACCESS = 1; +%constant int NSA_C_DEACCESS_MAX_CODE = 2; +%constant int NSA_C_CNX_REQUEST = 1; +%constant int NSA_C_CNX_ACCEPT = 2; +%constant int NSA_C_CNX_REJECT = 3; +%constant int NSA_C_CNX_DISCONNECT = 4; +%constant int NSA_C_CNX_ABORT = 5; +%constant int NSA_C_CNX_DECNET_CREATE = 6; +%constant int NSA_C_CNX_DECNET_DELETE = 7; +%constant int NSA_C_CNX_IPC_OPEN = 8; +%constant int NSA_C_CNX_IPC_CLOSE = 9; +%constant int NSA_C_CNX_INC_REQUEST = 10; +%constant int NSA_C_CNX_INC_ACCEPT = 11; +%constant int NSA_C_CNX_INC_REJECT = 12; +%constant int NSA_C_CNX_INC_DISCONNECT = 13; +%constant int NSA_C_CNX_INC_ABORT = 14; +%constant int NSA_C_CNX_MAX_CODE = 15; +%constant int NSA_C_NCP_COMMAND = 1; +%constant int NSA_C_NCP_MAX_CODE = 2; +%constant int NSA_C_PRC_CREPRC = 1; +%constant int NSA_C_PRC_DELPRC = 2; +%constant int NSA_C_PRC_SCHDWK = 3; +%constant int NSA_C_PRC_CANWAK = 4; +%constant int NSA_C_PRC_WAKE = 5; +%constant int NSA_C_PRC_SUSPND = 6; +%constant int NSA_C_PRC_RESUME = 7; +%constant int NSA_C_PRC_GRANTID = 8; +%constant int NSA_C_PRC_REVOKID = 9; +%constant int NSA_C_PRC_GETJPI = 10; +%constant int NSA_C_PRC_FORCEX = 11; +%constant int NSA_C_PRC_SIGPRC = 12; +%constant int NSA_C_PRC_SETPRI = 13; +%constant int NSA_C_PRC_PRCTERM = 14; +%constant int NSA_C_PRC_CPU_CAPABILITIES = 15; +%constant int NSA_C_PRC_PROCESS_CAPABILITIES = 16; +%constant int NSA_C_PRC_PROCESS_AFFINITY = 17; +%constant int NSA_C_PRC_SET_IMPLICIT_AFFINITY = 18; +%constant int NSA_C_PRC_MAX_CODE = 19; +%constant int NSA_C_INSTANTIATE_ORB = 1; +%constant int NSA_C_DISTRIBUTE_ORB = 2; +%constant int NSA_C_OBJECT_AUDIT_CHANGE = 3; +%constant int NSA_C_DISTRIBUTE_NOTICE = 4; +%constant int NSA_C_OBJSRV_MAX_CODE = 5; +%constant int NSA_C_AUTH_NETWORK_LOGIN = 2; +%constant int NSA_C_AUTH_RENEW_LOGIN = 3; +%constant int NSA_C_AUTH_INIT_SEC_CTX = 4; +%constant int NSA_C_AUTH_ACC_SEC_CTX = 5; +%constant int NSA_C_AUTH_INSTALL_DEF_CRED = 6; +%constant int NSA_C_AUTH_ACQUIRE_CRED = 7; +%constant int NSA_C_AUTH_GRANT_CRED = 8; +%constant int NSA_C_AUTH_RELEASE_CRED = 9; +%constant int NSA_C_AUTH_DEL_SEC_CTX = 10; +%constant int NSA_C_AUTH_PROC_CTX_TOKEN = 11; +%constant int NSA_C_AUTH_VERIFY = 12; +%constant int NSA_C_AUTH_SIGN = 13; +%constant int NSA_C_AUTH_SEAL = 14; +%constant int NSA_C_AUTH_UNSEAL = 15; +%constant int NSA_C_CA_STARTUP = 16; +%constant int NSA_C_CA_EXIT = 17; +%constant int NSA_C_CA_ADD_DIRECTORY = 18; +%constant int NSA_C_CA_ADD_PRINCIPAL = 19; +%constant int NSA_C_CA_LINK_DIRECTORY = 20; +%constant int NSA_C_CA_CHANGE_LINK = 21; +%constant int NSA_C_CA_CHANGE_PRINCIPAL = 22; +%constant int NSA_C_CA_REMOVE_DIRECTORY = 23; +%constant int NSA_C_CA_REMOVE_PRINCIPAL = 24; +%constant int NSA_C_CA_CERTIFICATE_DELETED = 25; +%constant int NSA_C_CA_REVOKED_CERT_FOUND = 26; +%constant int NSA_C_CA_PASSWORD_CHANGE = 27; +%constant int NSA_C_CSS_OBJECT_CREATED = 28; +%constant int NSA_C_CSS_OBJECT_DELETED = 29; +%constant int NSA_C_CSS_CERTIFICATE_DELETED = 30; +%constant int NSA_C_CSS_CREDENTIAL_READ = 31; +%constant int NSA_C_CSS_CERTIFICATE_ADDED = 32; +%constant int NSA_C_CSS_CREDENTIAL_WRITTEN = 33; +%constant int NSA_C_CSS_USER_CHANGED_PASSWORD = 34; +%constant int NSA_C_CSS_UPDATED_SECONDARY = 35; +%constant int NSA_C_CSS_DATABASE_UPDATED = 36; +%constant int NSA_C_CSS_STARTED = 37; +%constant int NSA_C_CSS_WINDOW_OPEN = 38; +%constant int NSA_C_CSS_WINDOW_CLOSED = 39; +%constant int NSA_C_CSS_LOCTABLE_UPDATED = 40; +%constant int NSA_C_AUTH_MAX_CODE = 41; +%constant int NSA_C_PKT_ACCESS_DESIRED = 1; +%constant int NSA_C_PKT_ACCOUNT = 2; +%constant int NSA_C_PKT_ALARM_NAME = 3; +%constant int NSA_C_PKT_APPL_DATA = 4; +%constant int NSA_C_PKT_AUDIT_FLAGS = 5; +%constant int NSA_C_PKT_AUDIT_NAME = 6; +%constant int NSA_C_PKT_SYSTEM_NAME = 7; +%constant int NSA_C_PKT_SYSTEM_ID = 8; +%constant int NSA_C_PKT_DEVICE_NAME = 9; +%constant int NSA_C_PKT_DISMOUNT_FLAGS = 10; +%constant int NSA_C_PKT_HOLDER_NAME = 11; +%constant int NSA_C_PKT_HOLDER_OWNER = 12; +%constant int NSA_C_PKT_ID_ATTRIBUTES = 13; +%constant int NSA_C_PKT_ID_NAME = 14; +%constant int NSA_C_PKT_ID_NEW_NAME = 15; +%constant int NSA_C_PKT_ID_VALUE = 16; +%constant int NSA_C_PKT_ID_NEW_VALUE = 17; +%constant int NSA_C_PKT_IDENTIFIERS_USED = 18; +%constant int NSA_C_PKT_IMAGE_NAME = 19; +%constant int NSA_C_PKT_INSTALL_FILE = 20; +%constant int NSA_C_PKT_INSTALL_FLAGS = 21; +%constant int NSA_C_PKT_INSTALL_PRIVS = 22; +%constant int NSA_C_PKT_LOGICAL_NAME = 23; +%constant int NSA_C_PKT_MOUNT_FLAGS = 24; +%constant int NSA_C_PKT_NEW_DATA = 25; +%constant int NSA_C_PKT_FILE_ID = 26; +%constant int NSA_C_PKT_OBJECT_MIN_CLASS = 27; +%constant int NSA_C_PKT_OBJECT_MAX_CLASS = 28; +%constant int NSA_C_PKT_OBJECT_NAME = 29; +%constant int NSA_C_PKT_OBJECT_NAME_2 = 30; +%constant int NSA_C_PKT_OBJECT_OWNER = 31; +%constant int NSA_C_PKT_OBJECT_PROTECTION = 32; +%constant int NSA_C_PKT_OBJECT_TYPE = 33; +%constant int NSA_C_PKT_ORIGINAL_DATA = 34; +%constant int NSA_C_PKT_PARENT_ID = 35; +%constant int NSA_C_PKT_PARENT_NAME = 36; +%constant int NSA_C_PKT_PARENT_OWNER = 37; +%constant int NSA_C_PKT_PARENT_USERNAME = 38; +%constant int NSA_C_PKT_PASSWORD = 39; +%constant int NSA_C_PKT_PRIVS_USED = 40; +%constant int NSA_C_PKT_PROCESS_ID = 41; +%constant int NSA_C_PKT_PROCESS_NAME = 42; +%constant int NSA_C_PKT_REMOTE_NODE_ID = 43; +%constant int NSA_C_PKT_REMOTE_NODENAME = 44; +%constant int NSA_C_PKT_REMOTE_USERNAME = 45; +%constant int NSA_C_PKT_SUBJECT_CLASS = 46; +%constant int NSA_C_PKT_SUBJECT_OWNER = 47; +%constant int NSA_C_PKT_FINAL_STATUS = 48; +%constant int NSA_C_PKT_TERMINAL = 49; +%constant int NSA_C_PKT_TIME_STAMP = 50; +%constant int NSA_C_PKT_UAF_ADD = 51; +%constant int NSA_C_PKT_UAF_DELETE = 52; +%constant int NSA_C_PKT_UAF_MODIFY = 53; +%constant int NSA_C_PKT_UAF_COPY = 54; +%constant int NSA_C_PKT_UAF_FIELDS = 55; +%constant int NSA_C_PKT_USERNAME = 56; +%constant int NSA_C_PKT_UAF_SOURCE = 57; +%constant int NSA_C_PKT_UAF_RENAME = 58; +%constant int NSA_C_PKT_VOLUME_NAME = 59; +%constant int NSA_C_PKT_VOLUME_SET_NAME = 60; +%constant int NSA_C_PKT_SERVER_ACCOUNT = 61; +%constant int NSA_C_PKT_SERVER_SYSTEM_ID = 62; +%constant int NSA_C_PKT_SERVER_SYSTEM_NAME = 63; +%constant int NSA_C_PKT_SERVER_FINAL_STATUS = 64; +%constant int NSA_C_PKT_SERVER_IMAGE_NAME = 65; +%constant int NSA_C_PKT_SERVER_PARENT_ID = 66; +%constant int NSA_C_PKT_SERVER_PARENT_OWNER = 67; +%constant int NSA_C_PKT_SERVER_PARENT_NAME = 68; +%constant int NSA_C_PKT_SERVER_PROCESS_ID = 69; +%constant int NSA_C_PKT_SERVER_PROCESS_NAME = 70; +%constant int NSA_C_PKT_SERVER_SUBJECT_CLASS = 71; +%constant int NSA_C_PKT_SERVER_SUBJECT_OWNER = 72; +%constant int NSA_C_PKT_SERVER_TERMINAL = 73; +%constant int NSA_C_PKT_SERVER_TIME_STAMP = 74; +%constant int NSA_C_PKT_SERVER_USERNAME = 75; +%constant int NSA_C_PKT_AUDIT_DISABLE = 76; +%constant int NSA_C_PKT_AUDIT_ENABLE = 77; +%constant int NSA_C_PKT_ALARM_DISABLE = 78; +%constant int NSA_C_PKT_ALARM_ENABLE = 79; +%constant int NSA_C_PKT_NOP = 80; +%constant int NSA_C_PKT_REPLY_MAILBOX = 81; +%constant int NSA_C_PKT_DEFAULT_USERNAME = 82; +%constant int NSA_C_PKT_LOCAL_USERNAME = 83; +%constant int NSA_C_PKT_FIELD_NAME = 84; +%constant int NSA_C_PKT_LISTENER_DEVICE = 85; +%constant int NSA_C_PKT_FIELD_TITLE_STR = 86; +%constant int NSA_C_PKT_FIELD_DATA_STR = 87; +%constant int NSA_C_PKT_MESSAGE_TYPE_STR = 88; +%constant int NSA_C_PKT_EVENT_TYPE = 89; +%constant int NSA_C_PKT_EVENT_SUBTYPE = 90; +%constant int NSA_C_PKT_EVENT_FACILITY = 91; +%constant int NSA_C_PKT_DIRECTORY_ENTRY = 92; +%constant int NSA_C_PKT_DIRECTORY_ID = 93; +%constant int NSA_C_PKT_CUSTOMER_1 = 94; +%constant int NSA_C_PKT_CUSTOMER_2 = 95; +%constant int NSA_C_PKT_CUSTOMER_3 = 96; +%constant int NSA_C_PKT_CUSTOMER_4 = 97; +%constant int NSA_C_PKT_CUSTOMER_5 = 98; +%constant int NSA_C_PKT_CUSTOMER_6 = 99; +%constant int NSA_C_PKT_CUSTOMER_7 = 100; +%constant int NSA_C_PKT_CUSTOMER_8 = 101; +%constant int NSA_C_PKT_CSS_1 = 102; +%constant int NSA_C_PKT_CSS_2 = 103; +%constant int NSA_C_PKT_CSS_3 = 104; +%constant int NSA_C_PKT_CSS_4 = 105; +%constant int NSA_C_PKT_CSS_5 = 106; +%constant int NSA_C_PKT_CSS_6 = 107; +%constant int NSA_C_PKT_CSS_7 = 108; +%constant int NSA_C_PKT_CSS_8 = 109; +%constant int NSA_C_PKT_LP_1 = 110; +%constant int NSA_C_PKT_LP_2 = 111; +%constant int NSA_C_PKT_LP_3 = 112; +%constant int NSA_C_PKT_LP_4 = 113; +%constant int NSA_C_PKT_LP_5 = 114; +%constant int NSA_C_PKT_LP_6 = 115; +%constant int NSA_C_PKT_LP_7 = 116; +%constant int NSA_C_PKT_LP_8 = 117; +%constant int NSA_C_PKT_ALARM_FAILURE = 118; +%constant int NSA_C_PKT_AUDIT_FAILURE = 119; +%constant int NSA_C_PKT_SEVMS_0 = 120; +%constant int NSA_C_PKT_SEVMS_1 = 121; +%constant int NSA_C_PKT_SEVMS_2 = 122; +%constant int NSA_C_PKT_SEVMS_3 = 123; +%constant int NSA_C_PKT_SEVMS_4 = 124; +%constant int NSA_C_PKT_SEVMS_5 = 125; +%constant int NSA_C_PKT_SEVMS_6 = 126; +%constant int NSA_C_PKT_SEVMS_7 = 127; +%constant int NSA_C_PKT_SEVMS_8 = 128; +%constant int NSA_C_PKT_SEVMS_9 = 129; +%constant int NSA_C_PKT_SEVMS_10 = 130; +%constant int NSA_C_PKT_SEVMS_11 = 131; +%constant int NSA_C_PKT_SEVMS_12 = 132; +%constant int NSA_C_PKT_SEVMS_13 = 133; +%constant int NSA_C_PKT_SEVMS_14 = 134; +%constant int NSA_C_PKT_SEVMS_15 = 135; +%constant int NSA_C_PKT_SEVMS_16 = 136; +%constant int NSA_C_PKT_SEVMS_17 = 137; +%constant int NSA_C_PKT_SEVMS_18 = 138; +%constant int NSA_C_PKT_SNAPSHOT_TIME = 139; +%constant int NSA_C_PKT_TRANSPORT_NAME = 140; +%constant int NSA_C_PKT_DECNET_LINK_ID = 141; +%constant int NSA_C_PKT_DECNET_OBJECT_NAME = 142; +%constant int NSA_C_PKT_DECNET_OBJECT_NUMBER = 143; +%constant int NSA_C_PKT_REMOTE_LINK_ID = 144; +%constant int NSA_C_PKT_COMMAND_LINE = 145; +%constant int NSA_C_PKT_ASSOCIATION_NAME = 146; +%constant int NSA_C_PKT_REM_ASSOCIATION_NAME = 147; +%constant int NSA_C_PKT_CONNECTION_ID = 148; +%constant int NSA_C_PKT_MESSAGE = 149; +%constant int NSA_C_PKT_MSGFILNAM = 150; +%constant int NSA_C_PKT_OBJECT_POINTER = 151; +%constant int NSA_C_PKT_ID_NEW_ATTRIBUTES = 152; +%constant int NSA_C_PKT_SYSTIM_NEW = 153; +%constant int NSA_C_PKT_SYSTIM_OLD = 154; +%constant int NSA_C_PKT_PARAMS_WRITE = 155; +%constant int NSA_C_PKT_PARAMS_INUSE = 156; +%constant int NSA_C_PKT_MATCHING_ACE = 157; +%constant int NSA_C_PKT_SNAPSHOT_SAVE_FILNAM = 158; +%constant int NSA_C_PKT_MAILBOX_UNIT = 159; +%constant int NSA_C_PKT_NEW_OWNER = 160; +%constant int NSA_C_PKT_NEW_PRIORITY = 161; +%constant int NSA_C_PKT_OLD_PRIORITY = 162; +%constant int NSA_C_PKT_DIAG_FUNC = 163; +%constant int NSA_C_PKT_RESOURCE_NAME = 164; +%constant int NSA_C_PKT_LNM_TABLE_NAME = 165; +%constant int NSA_C_PKT_LNM_PARENT_NAME = 166; +%constant int NSA_C_PKT_EFC_NAME = 167; +%constant int NSA_C_PKT_TARGET_PROCESS_CLASS = 168; +%constant int NSA_C_PKT_TARGET_PROCESS_ID = 169; +%constant int NSA_C_PKT_TARGET_PROCESS_NAME = 170; +%constant int NSA_C_PKT_TARGET_PROCESS_OWNER = 171; +%constant int NSA_C_PKT_TARGET_USERNAME = 172; +%constant int NSA_C_PKT_NEW_PRIVILEGES = 173; +%constant int NSA_C_PKT_OLD_PRIVILEGES = 174; +%constant int NSA_C_PKT_REMOTE_NODE_FULLNAME = 175; +%constant int NSA_C_PKT_UID = 176; +%constant int NSA_C_PKT_UNUSED_3 = 177; +%constant int NSA_C_PKT_UNUSED_4 = 178; +%constant int NSA_C_PKT_UNUSED_5 = 179; +%constant int NSA_C_PKT_UNUSED_6 = 180; +%constant int NSA_C_PKT_UNUSED_7 = 181; +%constant int NSA_C_PKT_UNUSED_8 = 182; +%constant int NSA_C_PKT_UNUSED_9 = 183; +%constant int NSA_C_PKT_UNUSED_10 = 184; +%constant int NSA_C_PKT_PRIVS_MISSING = 185; +%constant int NSA_C_PKT_TARGET_DEVICE_NAME = 186; +%constant int NSA_C_PKT_SECTION_NAME = 187; +%constant int NSA_C_PKT_ID_VALUE_ASCII = 188; +%constant int NSA_C_PKT_OBJECT_CLASS = 189; +%constant int NSA_C_PKT_SUPPRESS = 190; +%constant int NSA_C_PKT_SNAPSHOT_BOOTFILE = 191; +%constant int NSA_C_PKT_SOURCE_PROCESS_ID = 192; +%constant int NSA_C_PKT_REQUEST_NUMBER = 193; +%constant int NSA_C_PKT_ACCESS_MODE = 194; +%constant int NSA_C_PKT_SYSTEM_SERVICE_NAME = 195; +%constant int NSA_C_PKT_NEW_AUTH_PRIVILEGES = 196; +%constant int NSA_C_PKT_OLD_AUTH_PRIVILEGES = 197; +%constant int NSA_C_PKT_NEW_DEF_PRIVILEGES = 198; +%constant int NSA_C_PKT_OLD_DEF_PRIVILEGES = 199; +%constant int NSA_C_PKT_NEW_PROCESS_ID = 200; +%constant int NSA_C_PKT_NEW_PROCESS_OWNER = 201; +%constant int NSA_C_PKT_NEW_PROCESS_NAME = 202; +%constant int NSA_C_PKT_NEW_IMAGE_NAME = 203; +%constant int NSA_C_PKT_NEW_USERNAME = 204; +%constant int NSA_C_PKT_DEACCESS_KEY = 205; +%constant int NSA_C_PKT_OBJECT_RIGHTS_BLOCK = 206; +%constant int NSA_C_PKT_OBJSRV_COMPLETE = 207; +%constant int NSA_C_PKT_TLV_ORB = 208; +%constant int NSA_C_PKT_FILE_NAME = 209; +%constant int NSA_C_PKT_DIRECTORY_NAME = 210; +%constant int NSA_C_PKT_SEQUENCE_KEY = 211; +%constant int NSA_C_PKT_PRINCIPAL_FULLNAME = 212; +%constant int NSA_C_PKT_TARGET_FULLNAME = 213; +%constant int NSA_C_PKT_SOURCE_FULLNAME = 214; +%constant int NSA_C_PKT_DESIRED_FULLNAME = 215; +%constant int NSA_C_PKT_CLAIMED_USERNAME = 216; +%constant int NSA_C_PKT_CLAIMED_FULLNAME = 217; +%constant int NSA_C_PKT_CLAIMED_NODENAME = 218; +%constant int NSA_C_PKT_TIME_REQ = 219; +%constant int NSA_C_PKT_TIME_REC = 220; +%constant int NSA_C_PKT_REQ_FLAGS = 221; +%constant int NSA_C_PKT_RET_FLAGS = 222; +%constant int NSA_C_PKT_LIFETIME_REQ = 223; +%constant int NSA_C_PKT_LIFETIME_REC = 224; +%constant int NSA_C_PKT_CRED_USAGE = 225; +%constant int NSA_C_PKT_CONTEXT_HANDLE = 226; +%constant int NSA_C_PKT_QOP_STATE = 227; +%constant int NSA_C_PKT_CONF_STATE = 228; +%constant int NSA_C_PKT_DELEG_CRED_HANDLE = 229; +%constant int NSA_C_PKT_MAJOR_STATUS = 230; +%constant int NSA_C_PKT_DAS_1 = 231; +%constant int NSA_C_PKT_DAS_2 = 232; +%constant int NSA_C_PKT_DAS_3 = 233; +%constant int NSA_C_PKT_DAS_4 = 234; +%constant int NSA_C_PKT_DAS_5 = 235; +%constant int NSA_C_PKT_DAS_6 = 236; +%constant int NSA_C_PKT_DAS_7 = 237; +%constant int NSA_C_PKT_DAS_8 = 238; +%constant int NSA_C_PKT_DAS_9 = 239; +%constant int NSA_C_PKT_DAS_10 = 240; +%constant int NSA_C_PKT_STATE_FILE_NAME = 241; +%constant int NSA_C_PKT_DIRECTORY_FULLNAME = 242; +%constant int NSA_C_PKT_FROM_DIR_FULLNAME = 243; +%constant int NSA_C_PKT_TO_DIR_FULLNAME = 244; +%constant int NSA_C_PKT_ISSUER_FULLNAME = 245; +%constant int NSA_C_PKT_SUBJECT_FULLNAME = 246; +%constant int NSA_C_PKT_CERTIF_TYPE = 247; +%constant int NSA_C_PKT_CSS_SECONDARY_NAME = 248; +%constant int NSA_C_PKT_CSS_OBJECT_FULLNAME = 249; +%constant int NSA_C_PKT_CSS_REQUEST_FROM = 250; +%constant int NSA_C_PKT_CSS_PRIMARY_NAME = 251; +%constant int NSA_C_PKT_CERTIF_SERIAL_NUMBER = 252; +%constant int NSA_C_PKT_WINDOW_END_TIME = 253; +%constant int NSA_C_PKT_LOG_CLOSED = 254; +%constant int NSA_C_PKT_LOG_OPENED = 255; +%constant int NSA_C_PKT_IDENTIFIERS_MISSING = 256; +%constant int NSA_C_PKT_SENSITIVE_FIELD_NAME = 257; +%constant int NSA_C_PKT_SENSITIVE_ORIG_DATA = 258; +%constant int NSA_C_PKT_SENSITIVE_NEW_DATA = 259; +%constant int NSA_C_PKT_SENSITIVE_FIELD_TITLE = 260; +%constant int NSA_C_PKT_SENSITIVE_FIELD_DATA = 261; +%constant int NSA_C_PKT_INSTALL_AUTHPRIVS = 262; +%constant int NSA_C_PKT_PERSONA_FLAGS = 263; +%constant int NSA_C_PKT_PERSONA_UID = 264; +%constant int NSA_C_PKT_PERSONA_MODE = 265; +%constant int NSA_C_PKT_PERSONA_USERNAME = 266; +%constant int NSA_C_PKT_PERSONA_ACCOUNT = 267; +%constant int NSA_C_PKT_PERSONA_NOAUDIT = 268; +%constant int NSA_C_PKT_PERSONA_UIC = 269; +%constant int NSA_C_PKT_PERSONA_AUTHPRIV = 270; +%constant int NSA_C_PKT_PERSONA_PERMPRIV = 271; +%constant int NSA_C_PKT_PERSONA_WORKPRIV = 272; +%constant int NSA_C_PKT_PERSONA_ENABLED = 273; +%constant int NSA_C_PKT_PERSONA_RIGHTS = 274; +%constant int NSA_C_PKT_PERSONA_MINCLASS = 275; +%constant int NSA_C_PKT_PERSONA_MAXCLASS = 276; +%constant int NSA_C_PKT_PERSONA_WORKCLASS = 277; +%constant int NSA_C_PKT_PERSONA_ID = 278; +%constant int NSA_C_PKT_PERSONA_POSIX_UID = 279; +%constant int NSA_C_PKT_PERSONA_POSIX_GID = 280; +%constant int NSA_C_PKT_PARENT_POSIX_UID = 281; +%constant int NSA_C_PKT_PARENT_POSIX_GID = 282; +%constant int NSA_C_PKT_MAX_CODE = 283; +%constant int NSA_C_PKT_HDR_LENGTH = 4; +%constant int NSA_K_PKT_HDR_LENGTH = 4; +%constant int NSA__ACCESS_DESIRED = 1; +%constant int NSA__ACCOUNT = 2; +%constant int NSA__ALARM_NAME = 3; +%constant int NSA__APPL_DATA = 4; +%constant int NSA__AUDIT_FLAGS = 5; +%constant int NSA__AUDIT_NAME = 6; +%constant int NSA__SYSTEM_NAME = 7; +%constant int NSA__SYSTEM_ID = 8; +%constant int NSA__DEVICE_NAME = 9; +%constant int NSA__DISMOUNT_FLAGS = 10; +%constant int NSA__HOLDER_NAME = 11; +%constant int NSA__HOLDER_OWNER = 12; +%constant int NSA__ID_ATTRIBUTES = 13; +%constant int NSA__ID_NAME = 14; +%constant int NSA__ID_NEW_NAME = 15; +%constant int NSA__ID_VALUE = 16; +%constant int NSA__ID_NEW_VALUE = 17; +%constant int NSA__IDENTIFIERS_USED = 18; +%constant int NSA__IMAGE_NAME = 19; +%constant int NSA__INSTALL_FILE = 20; +%constant int NSA__INSTALL_FLAGS = 21; +%constant int NSA__INSTALL_PRIVS = 22; +%constant int NSA__LOGICAL_NAME = 23; +%constant int NSA__MOUNT_FLAGS = 24; +%constant int NSA__NEW_DATA = 25; +%constant int NSA__FILE_ID = 26; +%constant int NSA__OBJECT_MIN_CLASS = 27; +%constant int NSA__OBJECT_MAX_CLASS = 28; +%constant int NSA__OBJECT_NAME = 29; +%constant int NSA__OBJECT_NAME_2 = 30; +%constant int NSA__OBJECT_OWNER = 31; +%constant int NSA__OBJECT_PROTECTION = 32; +%constant int NSA__OBJECT_TYPE = 33; +%constant int NSA__ORIGINAL_DATA = 34; +%constant int NSA__PARENT_ID = 35; +%constant int NSA__PARENT_NAME = 36; +%constant int NSA__PARENT_OWNER = 37; +%constant int NSA__PARENT_USERNAME = 38; +%constant int NSA__PASSWORD = 39; +%constant int NSA__PRIVS_USED = 40; +%constant int NSA__PROCESS_ID = 41; +%constant int NSA__PROCESS_NAME = 42; +%constant int NSA__REMOTE_NODE_ID = 43; +%constant int NSA__REMOTE_NODENAME = 44; +%constant int NSA__REMOTE_USERNAME = 45; +%constant int NSA__SUBJECT_CLASS = 46; +%constant int NSA__SUBJECT_OWNER = 47; +%constant int NSA__FINAL_STATUS = 48; +%constant int NSA__TERMINAL = 49; +%constant int NSA__TIME_STAMP = 50; +%constant int NSA__UAF_ADD = 51; +%constant int NSA__UAF_DELETE = 52; +%constant int NSA__UAF_MODIFY = 53; +%constant int NSA__UAF_COPY = 54; +%constant int NSA__UAF_FIELDS = 55; +%constant int NSA__USERNAME = 56; +%constant int NSA__UAF_SOURCE = 57; +%constant int NSA__UAF_RENAME = 58; +%constant int NSA__VOLUME_NAME = 59; +%constant int NSA__VOLUME_SET_NAME = 60; +%constant int NSA__SERVER_ACCOUNT = 61; +%constant int NSA__SERVER_SYSTEM_ID = 62; +%constant int NSA__SERVER_SYSTEM_NAME = 63; +%constant int NSA__SERVER_FINAL_STATUS = 64; +%constant int NSA__SERVER_IMAGE_NAME = 65; +%constant int NSA__SERVER_PARENT_ID = 66; +%constant int NSA__SERVER_PARENT_OWNER = 67; +%constant int NSA__SERVER_PARENT_NAME = 68; +%constant int NSA__SERVER_PROCESS_ID = 69; +%constant int NSA__SERVER_PROCESS_NAME = 70; +%constant int NSA__SERVER_SUBJECT_CLASS = 71; +%constant int NSA__SERVER_SUBJECT_OWNER = 72; +%constant int NSA__SERVER_TERMINAL = 73; +%constant int NSA__SERVER_TIME_STAMP = 74; +%constant int NSA__SERVER_USERNAME = 75; +%constant int NSA__AUDIT_DISABLE = 76; +%constant int NSA__AUDIT_ENABLE = 77; +%constant int NSA__ALARM_DISABLE = 78; +%constant int NSA__ALARM_ENABLE = 79; +%constant int NSA__NOP = 80; +%constant int NSA__REPLY_MAILBOX = 81; +%constant int NSA__DEFAULT_USERNAME = 82; +%constant int NSA__LOCAL_USERNAME = 83; +%constant int NSA__FIELD_NAME = 84; +%constant int NSA__LISTENER_DEVICE = 85; +%constant int NSA__FIELD_TITLE_STR = 86; +%constant int NSA__FIELD_DATA_STR = 87; +%constant int NSA__MESSAGE_TYPE_STR = 88; +%constant int NSA__EVENT_TYPE = 89; +%constant int NSA__EVENT_SUBTYPE = 90; +%constant int NSA__EVENT_FACILITY = 91; +%constant int NSA__DIRECTORY_ENTRY = 92; +%constant int NSA__DIRECTORY_ID = 93; +%constant int NSA__CUSTOMER_1 = 94; +%constant int NSA__CUSTOMER_2 = 95; +%constant int NSA__CUSTOMER_3 = 96; +%constant int NSA__CUSTOMER_4 = 97; +%constant int NSA__CUSTOMER_5 = 98; +%constant int NSA__CUSTOMER_6 = 99; +%constant int NSA__CUSTOMER_7 = 100; +%constant int NSA__CUSTOMER_8 = 101; +%constant int NSA__CSS_1 = 102; +%constant int NSA__CSS_2 = 103; +%constant int NSA__CSS_3 = 104; +%constant int NSA__CSS_4 = 105; +%constant int NSA__CSS_5 = 106; +%constant int NSA__CSS_6 = 107; +%constant int NSA__CSS_7 = 108; +%constant int NSA__CSS_8 = 109; +%constant int NSA__LP_1 = 110; +%constant int NSA__LP_2 = 111; +%constant int NSA__LP_3 = 112; +%constant int NSA__LP_4 = 113; +%constant int NSA__LP_5 = 114; +%constant int NSA__LP_6 = 115; +%constant int NSA__LP_7 = 116; +%constant int NSA__LP_8 = 117; +%constant int NSA__ALARM_FAILURE = 118; +%constant int NSA__AUDIT_FAILURE = 119; +%constant int NSA__SEVMS_0 = 120; +%constant int NSA__SEVMS_1 = 121; +%constant int NSA__SEVMS_2 = 122; +%constant int NSA__SEVMS_3 = 123; +%constant int NSA__SEVMS_4 = 124; +%constant int NSA__SEVMS_5 = 125; +%constant int NSA__SEVMS_6 = 126; +%constant int NSA__SEVMS_7 = 127; +%constant int NSA__SEVMS_8 = 128; +%constant int NSA__SEVMS_9 = 129; +%constant int NSA__SEVMS_10 = 130; +%constant int NSA__SEVMS_11 = 131; +%constant int NSA__SEVMS_12 = 132; +%constant int NSA__SEVMS_13 = 133; +%constant int NSA__SEVMS_14 = 134; +%constant int NSA__SEVMS_15 = 135; +%constant int NSA__SEVMS_16 = 136; +%constant int NSA__SEVMS_17 = 137; +%constant int NSA__SEVMS_18 = 138; +%constant int NSA__SNAPSHOT_TIME = 139; +%constant int NSA__TRANSPORT_NAME = 140; +%constant int NSA__DECNET_LINK_ID = 141; +%constant int NSA__DECNET_OBJECT_NAME = 142; +%constant int NSA__DECNET_OBJECT_NUMBER = 143; +%constant int NSA__REMOTE_LINK_ID = 144; +%constant int NSA__COMMAND_LINE = 145; +%constant int NSA__ASSOCIATION_NAME = 146; +%constant int NSA__REM_ASSOCIATION_NAME = 147; +%constant int NSA__CONNECTION_ID = 148; +%constant int NSA__MESSAGE = 149; +%constant int NSA__MSGFILNAM = 150; +%constant int NSA__OBJECT_POINTER = 151; +%constant int NSA__ID_NEW_ATTRIBUTES = 152; +%constant int NSA__SYSTIM_NEW = 153; +%constant int NSA__SYSTIM_OLD = 154; +%constant int NSA__PARAMS_WRITE = 155; +%constant int NSA__PARAMS_INUSE = 156; +%constant int NSA__MATCHING_ACE = 157; +%constant int NSA__SNAPSHOT_SAVE_FILNAM = 158; +%constant int NSA__MAILBOX_UNIT = 159; +%constant int NSA__NEW_OWNER = 160; +%constant int NSA__NEW_PRIORITY = 161; +%constant int NSA__OLD_PRIORITY = 162; +%constant int NSA__DIAG_FUNC = 163; +%constant int NSA__RESOURCE_NAME = 164; +%constant int NSA__LNM_TABLE_NAME = 165; +%constant int NSA__LNM_PARENT_NAME = 166; +%constant int NSA__EFC_NAME = 167; +%constant int NSA__TARGET_PROCESS_CLASS = 168; +%constant int NSA__TARGET_PROCESS_ID = 169; +%constant int NSA__TARGET_PROCESS_NAME = 170; +%constant int NSA__TARGET_PROCESS_OWNER = 171; +%constant int NSA__TARGET_USERNAME = 172; +%constant int NSA__NEW_PRIVILEGES = 173; +%constant int NSA__OLD_PRIVILEGES = 174; +%constant int NSA__REMOTE_NODE_FULLNAME = 175; +%constant int NSA__UID = 176; +%constant int NSA__UNUSED_3 = 177; +%constant int NSA__UNUSED_4 = 178; +%constant int NSA__UNUSED_5 = 179; +%constant int NSA__UNUSED_6 = 180; +%constant int NSA__UNUSED_7 = 181; +%constant int NSA__UNUSED_8 = 182; +%constant int NSA__UNUSED_9 = 183; +%constant int NSA__UNUSED_10 = 184; +%constant int NSA__PRIVS_MISSING = 185; +%constant int NSA__TARGET_DEVICE_NAME = 186; +%constant int NSA__SECTION_NAME = 187; +%constant int NSA__ID_VALUE_ASCII = 188; +%constant int NSA__OBJECT_CLASS = 189; +%constant int NSA__SUPPRESS = 190; +%constant int NSA__SNAPSHOT_BOOTFILE = 191; +%constant int NSA__SOURCE_PROCESS_ID = 192; +%constant int NSA__REQUEST_NUMBER = 193; +%constant int NSA__ACCESS_MODE = 194; +%constant int NSA__SYSTEM_SERVICE_NAME = 195; +%constant int NSA__NEW_AUTH_PRIVILEGES = 196; +%constant int NSA__OLD_AUTH_PRIVILEGES = 197; +%constant int NSA__NEW_DEF_PRIVILEGES = 198; +%constant int NSA__OLD_DEF_PRIVILEGES = 199; +%constant int NSA__NEW_PROCESS_ID = 200; +%constant int NSA__NEW_PROCESS_OWNER = 201; +%constant int NSA__NEW_PROCESS_NAME = 202; +%constant int NSA__NEW_IMAGE_NAME = 203; +%constant int NSA__NEW_USERNAME = 204; +%constant int NSA__DEACCESS_KEY = 205; +%constant int NSA__OBJECT_RIGHTS_BLOCK = 206; +%constant int NSA__OBJSRV_COMPLETE = 207; +%constant int NSA__TLV_ORB = 208; +%constant int NSA__FILE_NAME = 209; +%constant int NSA__DIRECTORY_NAME = 210; +%constant int NSA__SEQUENCE_KEY = 211; +%constant int NSA__PRINCIPAL_FULLNAME = 212; +%constant int NSA__TARGET_FULLNAME = 213; +%constant int NSA__SOURCE_FULLNAME = 214; +%constant int NSA__DESIRED_FULLNAME = 215; +%constant int NSA__CLAIMED_USERNAME = 216; +%constant int NSA__CLAIMED_FULLNAME = 217; +%constant int NSA__CLAIMED_NODENAME = 218; +%constant int NSA__TIME_REQ = 219; +%constant int NSA__TIME_REC = 220; +%constant int NSA__REQ_FLAGS = 221; +%constant int NSA__RET_FLAGS = 222; +%constant int NSA__LIFETIME_REQ = 223; +%constant int NSA__LIFETIME_REC = 224; +%constant int NSA__CRED_USAGE = 225; +%constant int NSA__CONTEXT_HANDLE = 226; +%constant int NSA__QOP_STATE = 227; +%constant int NSA__CONF_STATE = 228; +%constant int NSA__DELEG_CRED_HANDLE = 229; +%constant int NSA__MAJOR_STATUS = 230; +%constant int NSA__DAS_1 = 231; +%constant int NSA__DAS_2 = 232; +%constant int NSA__DAS_3 = 233; +%constant int NSA__DAS_4 = 234; +%constant int NSA__DAS_5 = 235; +%constant int NSA__DAS_6 = 236; +%constant int NSA__DAS_7 = 237; +%constant int NSA__DAS_8 = 238; +%constant int NSA__DAS_9 = 239; +%constant int NSA__DAS_10 = 240; +%constant int NSA__STATE_FILE_NAME = 241; +%constant int NSA__DIRECTORY_FULLNAME = 242; +%constant int NSA__FROM_DIRECTORY_FULLNAME = 243; +%constant int NSA__TO_DIRECTORY_FULLNAME = 244; +%constant int NSA__ISSUER_FULLNAME = 245; +%constant int NSA__SUBJECT_FULLNAME = 246; +%constant int NSA__CERTIF_TYPE = 247; +%constant int NSA__CSS_SECONDARY_NAME = 248; +%constant int NSA__CSS_OBJECT_FULLNAME = 249; +%constant int NSA__CSS_REQUEST_FROM = 250; +%constant int NSA__CSS_PRIMARY_NAME = 251; +%constant int NSA__CERTIF_SERIAL_NUMBER = 252; +%constant int NSA__WINDOW_END_TIME = 253; +%constant int NSA__LOG_CLOSED = 254; +%constant int NSA__LOG_OPENED = 255; +%constant int NSA__IDENTIFIERS_MISSING = 256; +%constant int NSA__SENSITIVE_FIELD_NAME = 257; +%constant int NSA__SENSITIVE_ORIG_DATA = 258; +%constant int NSA__SENSITIVE_NEW_DATA = 259; +%constant int NSA__SENSITIVE_FIELD_TITLE = 260; +%constant int NSA__SENSITIVE_FIELD_DATA = 261; +%constant int NSA__INSTALL_AUTHPRIVS = 262; +%constant int NSA__PERSONA_FLAGS = 263; +%constant int NSA__PERSONA_UID = 264; +%constant int NSA__PERSONA_MODE = 265; +%constant int NSA__PERSONA_USERNAME = 266; +%constant int NSA__PERSONA_ACCOUNT = 267; +%constant int NSA__PERSONA_NOAUDIT = 268; +%constant int NSA__PERSONA_UIC = 269; +%constant int NSA__PERSONA_AUTHPRIV = 270; +%constant int NSA__PERSONA_PERMPRIV = 271; +%constant int NSA__PERSONA_WORKPRIV = 272; +%constant int NSA__PERSONA_ENABLED = 273; +%constant int NSA__PERSONA_RIGHTS = 274; +%constant int NSA__PERSONA_MINCLASS = 275; +%constant int NSA__PERSONA_MAXCLASS = 276; +%constant int NSA__PERSONA_WORKCLASS = 277; +%constant int NSA__PERSONA_ID = 278; +%constant int NSA__PERSONA_POSIX_UID = 279; +%constant int NSA__PERSONA_POSIX_GID = 280; +%constant int NSA__PARENT_POSIX_UID = 281; +%constant int NSA__PARENT_POSIX_GID = 282; +%constant int NSA__MAX_ITM_CODE = 283; +%constant int NSA__CHAIN = 65535; +%constant int NSA__CLIENT_ACCOUNT = 2; +%constant int NSA__CLIENT_SYSTEM_ID = 8; +%constant int NSA__CLIENT_SYSTEM_NAME = 7; +%constant int NSA__CLIENT_FINAL_STATUS = 48; +%constant int NSA__CLIENT_IMAGE_NAME = 19; +%constant int NSA__CLIENT_PARENT_ID = 35; +%constant int NSA__CLIENT_PARENT_OWNER = 37; +%constant int NSA__CLIENT_PARENT_NAME = 36; +%constant int NSA__CLIENT_PROCESS_ID = 41; +%constant int NSA__CLIENT_PROCESS_NAME = 42; +%constant int NSA__CLIENT_SUBJECT_CLASS = 46; +%constant int NSA__CLIENT_SUBJECT_OWNER = 47; +%constant int NSA__CLIENT_TERMINAL = 49; +%constant int NSA__CLIENT_TIME_STAMP = 50; +%constant int NSA__CLIENT_USERNAME = 56; +%constant int NSA_S_NSADATADEF = 5; +%constant int NSA_M_ACCOUNT_NAME = 0x1L; +%constant int NSA_M_SYSTEM_ID = 0x2L; +%constant int NSA_M_SYSTEM_NAME = 0x4L; +%constant int NSA_M_FINAL_STATUS = 0x8L; +%constant int NSA_M_IMAGE_NAME = 0x10L; +%constant int NSA_M_PARENT_ID = 0x20L; +%constant int NSA_M_PARENT_OWNER = 0x40L; +%constant int NSA_M_PARENT_NAME = 0x80L; +%constant int NSA_M_PROCESS_ID = 0x100L; +%constant int NSA_M_PROCESS_NAME = 0x200L; +%constant int NSA_M_SUBJECT_CLASS = 0x400L; +%constant int NSA_M_SUBJECT_OWNER = 0x800L; +%constant int NSA_M_TERMINAL = 0x1000L; +%constant int NSA_M_TIME_STAMP = 0x2000L; +%constant int NSA_M_USERNAME = 0x4000L; +%constant int NSA_M_PARENT_USERNAME = 0x8000L; +%constant int NSA_M_POSIX_UID = 0x10000L; +%constant int NSA_M_POSIX_GID = 0x20000L; +%constant int NSA_M_PARENT_POSIX_UID = 0x40000L; +%constant int NSA_M_PARENT_POSIX_GID = 0x80000L; +%constant int NSA_S_FILL_232_ = 4; +%constant int NSA_C_REPLY_LENGTH = 4; +%constant int NSA_K_REPLY_LENGTH = 4; +%constant int NSA_S_NSAREPLYDEF = 4; +%constant int NSA_C_FMTINF_NONE = 0; +%constant int NSA_C_FMTINF_LONG_VALUE = 1; +%constant int NSA_C_FMTINF_IDENTIFIER = 2; +%constant int NSA_C_FMTINF_DATE = 3; +%constant int NSA_C_FMTINF_STRING = 4; +%constant int NSA_C_FMTINF_CLASSIFICATION = 5; +%constant int NSA_C_FMTINF_UID = 6; +%constant int NSA_C_FMTINF_RIGHTS = 7; +%constant int NSA_C_FMTINF_SPECIAL = 8; +%constant int NSA_M_FMTINF_CHECK_PREVIOUS = 0x1L; +%constant int NSA_M_FMTINF_NTH_NEW_LINE = 0x2L; +%constant int NSA_M_FMTINF_NOFORMAT = 0x4L; +%constant int NSA_M_FMTINF_SENSITIVE = 0x8L; +%constant int NSA_K_FMTINF_LENGTH = 28; +%constant int NSA_C_FMTINF_LENGTH = 28; +%constant int NSA_C_FORMAT_STYLE_BRIEF = 1; +%constant int NSA_C_FORMAT_STYLE_FULL = 2; +%constant int NSA_C_FORMAT_STYLE_PACKET_TYPE = 3; +%constant int NSA_C_FMTINF_MAX_SINGLE_SEC_STR = 3895; +%constant int NSA_C_FMTINF_MAX_SINGLE_INT_STR = 1977; +%constant int NSA_C_FMTINF_MAX_RANGE_SEC_STR = 7801; +%constant int NSA_C_FMTINF_MAX_RANGE_INT_STR = 3963; +%constant int NSA_S_FMTTBLDEF = 28; +%constant int NSA_K_IMGXFR_LENGTH = 53; +%constant int NSA_C_IMGXFR_LENGTH = 53; +%constant int NSA_S_FMTCALLDEF = 53; +%constant int NSA_S_IMGXFR_IMAGE_NAME = 1; +%constant int NSA_M_FMTARG_SENSITIVE = 0x1L; +%constant int NSA_M_FMTARG_DISPLAY_TITLE = 0x2L; +%constant int NSA_M_FMTARG_CHECK_PREVIOUS = 0x1L; +%constant int NSA_M_FMTARG_NTH_NEW_LINE = 0x2L; +%constant int NSA_M_FMTARG_NOFORMAT = 0x4L; +%constant int NSA_K_FMTARG_LENGTH = 36; +%constant int NSA_C_FMTARG_LENGTH = 36; +%constant int NSA_S_FMTARGDEF = 36; +%constant int NSA_S_FMTARG_BUFFER = 8; +%constant int NSA_S_FMTARG_TERMINATOR = 8; +%constant int NSA_C_IMGXFR_MESSAGE_INFO = 0; +%constant int NSA_C_IMGXFR_VALIDATE_PACKET = 1; +%constant int NSA_C_IMGXFR_DISPLAY_INFO = 2; +%constant int NSA_C_IMGXFR_LINE_BREAK = 3; +%constant int NSA_C_IMGXFR_FORMAT_SPECIAL = 4; +%constant int NSA_C_IMGXFR_FORMAT_INFO = 5; +%constant int NSA_C_IMGXFR_FORMAT_BRIEF = 6; +%constant int NSA_C_IMGXFR_FORMAT_PACKET_TYPE = 7; +%constant int NSA_C_IMGXFR_FORMAT_EVENT_TYPE = 8; +%constant int NSA_S_FMTXFERDEF = 72; +%constant int NSA_S_IMGXFR_MESSAGE_INFO = 8; +%constant int NSA_S_IMGXFR_VALIDATE_PACKET = 8; +%constant int NSA_S_IMGXFR_DISPLAY_INFO = 8; +%constant int NSA_S_IMGXFR_LINE_BREAK = 8; +%constant int NSA_S_IMGXFR_FORMAT_SPECIAL = 8; +%constant int NSA_S_IMGXFR_FORMAT_INFO = 8; +%constant int NSA_S_IMGXFR_FORMAT_BRIEF = 8; +%constant int NSA_S_IMGXFR_FORMAT_PACKET_TYPE = 8; +%constant int NSA_S_IMGXFR_FORMAT_EVENT_TYPE = 8; +%constant int NSA_K_ACCNAM_LENGTH = 139; +%constant int NSA_C_ACCNAM_LENGTH = 139; +%constant int NSA_S_FMTACCNAMDEF = 139; +%constant int NSA_S_ACCNAM_CODES = 128; +%constant int NSA_S_ACCNAM_OBJECT_TYPE = 1; +%constant int NSA_K_MSGINF_LENGTH = 8; +%constant int NSA_C_MSGINF_LENGTH = 8; +%constant int NSA_S_MSGINFODEF = 8; +%constant int NSA_K_SUBTBL_LENGTH = 8; +%constant int NSA_C_SUBTBL_LENGTH = 8; +%constant int NSA_S_SUBFMTTBLDEF = 8; +%constant int NSA_C_MSG_NETUAF = 9; +%constant int NSA_C_MSG_PRIV_AUDIT = 16; +%constant int NSA_C_PRIV_AUDIT = 1; +%constant int NSA_C_JOBCTL_QUEUE_ACCESS = 3; +%constant int NSA_C_NETUAF_ADD = 1; +%constant int NSA_C_NETUAF_DELETE = 2; +%constant int NSA_C_NETUAF_MODIFY = 3; +%constant int NSA_C_NETUAF_NCP = 4; +%constant int NSA_C_NETUAF_MAX_CODE = 8; +%constant int NSA_C_PKT_OBJECT_ID = 26; +%constant int NSA__OBJECT_ID = 26; +%constant int NSA_C_PKT_PRIV_MASK = 22; +%constant int NSA__PRIV_MASK = 22; +%constant int NSA_C_PKT_PRIVILEGES = 22; +%constant int NSA__PRIVILEGES = 22; +%constant int NSA_C_PKT_SNAPSHOT_FILNAM = 158; +%constant int NSA__SNAPSHOT_FILNAM = 158; +%constant int NSA_C_PKT_PERFORMANCE_NOP = 80; +%constant int NSA__PERFORMANCE_NOP = 80; +%constant int NSA_C_PKT_SUPPLIED_FLAGS = 190; +%constant int NSA__SUPPLIED_FLAGS = 190; diff --git a/Modules/vms/ossdef/ossdef.i b/Modules/vms/ossdef/ossdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvb3NzZGVmL29zc2RlZi5p --- /dev/null +++ b/Modules/vms/ossdef/ossdef.i @@ -0,0 +1,54 @@ +%module ossdef + +%constant int OSS_M_WLOCK = 0x1L; +%constant int OSS_M_RELCTX = 0x2L; +%constant int OSS_M_LOCAL = 0x4L; +%constant int OSS_S_OSSDEF = 1; +%constant int OSS__ACCESS_NAMES = 1; +%constant int OSS__ACCESS_NAMES_LENGTH = 2; +%constant int OSS__ACL_ADD_ENTRY = 3; +%constant int OSS__ACL_DELETE_ENTRY = 4; +%constant int OSS__ACL_DELETE = 5; +%constant int OSS__ACL_DELETE_ALL = 6; +%constant int OSS__ACL_FIND_ENTRY = 7; +%constant int OSS__ACL_FIND_NEXT = 8; +%constant int OSS__ACL_FIND_TYPE = 9; +%constant int OSS__ACL_GRANT_ACE = 10; +%constant int OSS__ACL_LENGTH = 11; +%constant int OSS__ACL_MODIFY_ENTRY = 12; +%constant int OSS__ACL_POSITION = 13; +%constant int OSS__ACL_POSITION_TOP = 14; +%constant int OSS__ACL_POSITION_BOTTOM = 15; +%constant int OSS__ACL_READ_ENTRY = 16; +%constant int OSS__ACL_READ = 17; +%constant int OSS__MAX_CLASS = 18; +%constant int OSS__MIN_CLASS = 19; +%constant int OSS__NEXT_OBJECT = 20; +%constant int OSS__OWNER = 21; +%constant int OSS__PROTECTION = 22; +%constant int OSS__SYS_PROT = 23; +%constant int OSS__OWN_PROT = 24; +%constant int OSS__GRP_PROT = 25; +%constant int OSS__WOR_PROT = 26; +%constant int OSS__CLASS_NAME = 27; +%constant int OSS__FIRST_TEMPLATE = 28; +%constant int OSS__NEXT_TEMPLATE = 29; +%constant int OSS__OBJECT_NAME = 30; +%constant int OSS__ACCESS_CLASS_NAME = 31; +%constant int OSS__DAMAGED_ACL = 32; +%constant int OSS__IN_TRANSITION = 33; +%constant int OSS__TRANQUILITY_COUNT = 34; +%constant int OSS__POSIX_GID = 35; +%constant int OSS__POSIX_GRP_MODE = 36; +%constant int OSS__POSIX_MODE = 37; +%constant int OSS__POSIX_SGID = 38; +%constant int OSS__POSIX_SUID = 39; +%constant int OSS__ACCESS_BITNAMES = 1; +%constant int OSS__ACCESS_BITNAMES_LENGTH = 2; +%constant int OSS__ACL_ADDACE = 3; +%constant int OSS__ACL_DELACE = 4; +%constant int OSS__ACL_FNDACE = 7; +%constant int OSS__ACL_FNDNXT = 8; +%constant int OSS__ACL_FNDTYP = 9; +%constant int OSS__ACL_MODACE = 12; +%constant int OSS__ACL_READACE = 16; diff --git a/Modules/vms/pcbdef/pcbdef.i b/Modules/vms/pcbdef/pcbdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcGNiZGVmL3BjYmRlZi5p --- /dev/null +++ b/Modules/vms/pcbdef/pcbdef.i @@ -0,0 +1,222 @@ +%module pcbdef + +%constant int PCB_M_RES = 0x1L; +%constant int PCB_M_DELPEN = 0x2L; +%constant int PCB_M_FORCPEN = 0x4L; +%constant int PCB_M_INQUAN = 0x8L; +%constant int PCB_M_PSWAPM = 0x10L; +%constant int PCB_M_RESPEN = 0x20L; +%constant int PCB_M_SSFEXC = 0x40L; +%constant int PCB_M_SSFEXCE = 0x80L; +%constant int PCB_M_SSFEXCS = 0x100L; +%constant int PCB_M_SSFEXCU = 0x200L; +%constant int PCB_M_SSRWAIT = 0x400L; +%constant int PCB_M_SUSPEN = 0x800L; +%constant int PCB_M_WALL = 0x2000L; +%constant int PCB_M_BATCH = 0x4000L; +%constant int PCB_M_NOACNT = 0x8000L; +%constant int PCB_M_NOSUSPEND = 0x10000L; +%constant int PCB_M_ASTPEN = 0x20000L; +%constant int PCB_M_PHDRES = 0x40000L; +%constant int PCB_M_HIBER = 0x80000L; +%constant int PCB_M_LOGIN = 0x100000L; +%constant int PCB_M_NETWRK = 0x200000L; +%constant int PCB_M_PWRAST = 0x400000L; +%constant int PCB_M_NODELET = 0x800000L; +%constant int PCB_M_DISAWS = 0x1000000L; +%constant int PCB_M_INTER = 0x2000000L; +%constant int PCB_M_RECOVER = 0x4000000L; +%constant int PCB_M_HARDAFF = 0x10000000L; +%constant int PCB_M_ERDACT = 0x20000000L; +%constant int PCB_M_SOFTSUSP = 0x40000000L; +%constant int PCB_M_PREEMPTED = 0x80000000L; +%constant int PCB_M_QUANTUM_RESCHED = 0x1L; +%constant int PCB_M_DISABLE_PREEMPT_PKTA_LOCK = 0x2L; +%constant int PCB_M_FREDLOCK = 0x4L; +%constant int PCB_M_PHDLOCK = 0x8L; +%constant int PCB_M_TCB = 0x10L; +%constant int PCB_M_TBS_STATE_PENDING = 0x20L; +%constant int PCB_M_SS_LOGGING_ENABLE = 0x40L; +%constant int PCB_M_SS_LOGGING_PERM = 0x80L; +%constant int PCB_M_BRK_RUNDOWN_LOADED = 0x100L; +%constant int PCB_M_CLASS_SCHED_PERM = 0x8000L; +%constant int PCB_M_TERM_NOTIFY = 0x10000L; +%constant int PCB_M_BYTLM_LOAN = 0x20000L; +%constant int PCB_M_DISABLE_PREEMPT = 0x40000L; +%constant int PCB_M_NOUNSHELVE = 0x80000L; +%constant int PCB_M_SHELVING_RESERVED = 0x100000L; +%constant int PCB_M_CLASS_SCHEDULED = 0x200000L; +%constant int PCB_M_CLASS_SUPPLIED = 0x400000L; +%constant int PCB_M_IN_TBS_STATE = 0x800000L; +%constant int PCB_M_WINDFALL = 0x1000000L; +%constant int PCB_M_NOTIFY = 0x2000000L; +%constant int PCB_M_SINGLE_THREADED = 0x3C000000L; +%constant int PCB_M_RWAST = 0x40000000L; +%constant int PCB_M_SOFT_SINGLE_THREAD = 0x80000000L; +%constant int PCB_M_EPID_WILD = 0x80000000L; +%constant int PCB_M_FORK = 0x1L; +%constant int PCB_K_SCHED_OTHER = 0; +%constant int PCB_K_SCHED_FIFO = 1; +%constant int PCB_K_SCHED_RR = 2; +%constant int PCB_K_SCHED_POLICY_CNT = 3; +%constant int PCB_K_ALL_THREADS = -2147483648; +%constant int PCB_K_MAX_KT_COUNT = 256; +%constant int PCB_M_EVENT_NO_FLAG = 0x1L; +%constant int PCB_M_IN_DELPAG = 0x1L; +%constant int PCB_M_WAKEPEN = 0x1000L; +%constant int PCB_M_SECAUDIT = 0x8000000L; +%constant int PCB_M_UPCALL_AST_BLOCKED = 0x80000000L; +%constant int PCB_M_SUGID_IMAGE = 0x1L; +%constant int PCB_M_SUGID_PROCESS = 0x2L; +%constant int PCB_S_PCB = 2352; +%constant int PCB_S_PHYPCB = 8; +%constant int PCB_S_LEFC_SWAPPED = 8; +%constant int PCB_S_PRVASN = 64; +%constant int PCB_S_PRVASNSEQ = 8; +%constant int PCB_S_ONCPUCNT = 8; +%constant int PCB_S_SINGLE_THREADED = 4; +%constant int PCB_S_EPID_PROC = 21; +%constant int PCB_S_EPID_NODE_IDX = 8; +%constant int PCB_S_EPID_NODE_SEQ = 2; +%constant int PCB_S_PCBARB = 124; +%constant int PCB_S_PRIV = 8; +%constant int PCB_S_LNAME = 16; +%constant int PCB_S_CWPSSRV_QUEUE = 8; +%constant int PCB_S_BUFOBJ_LIST = 8; +%constant int PCB_S_XSCB_QUE = 8; +%constant int PCB_S_RMCB_QUE = 8; +%constant int PCB_S_CD_QUE = 8; +%constant int PCB_S_PSX_ACTPRM = 8; +%constant int PCB_S_RDPB_QUE = 8; +%constant int PCB_S_FILES_64 = 8; +%constant int PCB_S_KEEP_IN_WS = 8; +%constant int PCB_S_KEEP_IN_WS2 = 8; +%constant int PCB_S_POSTEF = 8; +%constant int PCB_S_ST_KT_ARRAY = 8; +%constant int PCB_S_LOCKQFL = 8; +%constant int PCB_S_LOCKQBL = 8; +%constant int PCB_S_TQE_FLAGS = 8; +%constant int PCB_S_CBB_PERM_CPU_AFFINITY = 48; +%constant int PCB_S_PERMANENT_CPU_AFFINITY = 8; +%constant int PCB_S_CBB_CURRENT_AFFINITY = 48; +%constant int PCB_S_CURRENT_AFFINITY = 8; +%constant int PCB_S_CBB_ACTIVE_CPUS = 48; +%constant int PCB_S_ACTIVE_CPUS = 8; +%constant int PCB_S_CBB_AFFINITIES = 48; +%constant int PCB_S_AFFINITIES = 8; +%constant int PCB_S_CBB_PERMANENT_AFFINITIES = 48; +%constant int PCB_S_PERMANENT_AFFINITIES = 8; +%constant int PCB_S_CBB_SAVED_AFFINITIES = 48; +%constant int PCB_S_SAVED_AFFINITIES = 8; +%constant int PCB_S_TERMINAL = 16; +%constant int PCB_S_KERNEL_COUNTER_FRAC = 8; +%constant int PCB_S_EXEC_COUNTER_FRAC = 8; +%constant int PCB_S_SUPER_COUNTER_FRAC = 8; +%constant int PCB_S_USER_COUNTER_FRAC = 8; +%constant int PCB_K_LENGTH = 2352; +%constant int PCB_C_LENGTH = 2352; +%constant int PCB_S_PCBDEF = 2352; +%constant int KTB_M_RES = 0x1L; +%constant int KTB_M_DELPEN = 0x2L; +%constant int KTB_M_FORCPEN = 0x4L; +%constant int KTB_M_INQUAN = 0x8L; +%constant int KTB_M_PSWAPM = 0x10L; +%constant int KTB_M_RESPEN = 0x20L; +%constant int KTB_M_SSFEXC = 0x40L; +%constant int KTB_M_SSFEXCE = 0x80L; +%constant int KTB_M_SSFEXCS = 0x100L; +%constant int KTB_M_SSFEXCU = 0x200L; +%constant int KTB_M_SSRWAIT = 0x400L; +%constant int KTB_M_SUSPEN = 0x800L; +%constant int KTB_M_WALL = 0x2000L; +%constant int KTB_M_BATCH = 0x4000L; +%constant int KTB_M_NOACNT = 0x8000L; +%constant int KTB_M_NOSUSPEND = 0x10000L; +%constant int KTB_M_ASTPEN = 0x20000L; +%constant int KTB_M_PHDRES = 0x40000L; +%constant int KTB_M_HIBER = 0x80000L; +%constant int KTB_M_LOGIN = 0x100000L; +%constant int KTB_M_NETWRK = 0x200000L; +%constant int KTB_M_PWRAST = 0x400000L; +%constant int KTB_M_NODELET = 0x800000L; +%constant int KTB_M_DISAWS = 0x1000000L; +%constant int KTB_M_INTER = 0x2000000L; +%constant int KTB_M_RECOVER = 0x4000000L; +%constant int KTB_M_HARDAFF = 0x10000000L; +%constant int KTB_M_ERDACT = 0x20000000L; +%constant int KTB_M_SOFTSUSP = 0x40000000L; +%constant int KTB_M_PREEMPTED = 0x80000000L; +%constant int KTB_M_QUANTUM_RESCHED = 0x1L; +%constant int KTB_M_PHDLOCK = 0x8L; +%constant int KTB_M_TCB = 0x10L; +%constant int KTB_M_TBS_STATE_PENDING = 0x20L; +%constant int KTB_M_CLASS_SCHED_PERM = 0x8000L; +%constant int KTB_M_TERM_NOTIFY = 0x10000L; +%constant int KTB_M_BYTLM_LOAN = 0x20000L; +%constant int KTB_M_NOUNSHELVE = 0x80000L; +%constant int KTB_M_SHELVING_RESERVED = 0x100000L; +%constant int KTB_M_CLASS_SCHEDULED = 0x200000L; +%constant int KTB_M_CLASS_SUPPLIED = 0x400000L; +%constant int KTB_M_IN_TBS_STATE = 0x800000L; +%constant int KTB_M_WINDFALL = 0x1000000L; +%constant int KTB_M_NOTIFY = 0x2000000L; +%constant int KTB_M_SINGLE_THREADED = 0x3C000000L; +%constant int KTB_M_EPID_WILD = 0x80000000L; +%constant int KTB_K_SCHED_OTHER = 0; +%constant int KTB_K_SCHED_FIFO = 1; +%constant int KTB_K_SCHED_RR = 2; +%constant int KTB_K_SCHED_POLICY_CNT = 3; +%constant int KTB_M_WAKEPEN = 0x1000L; +%constant int KTB_M_SECAUDIT = 0x8000000L; +%constant int KTB_M_UPCALL_AST_BLOCKED = 0x80000000L; +%constant int KTB_M_DELETE_PENDING = 0x1L; +%constant int KTB_M_SCHED_CONTEXT_SAVED = 0x2L; +%constant int KTB_M_SINGLE_THREAD_ACT = 0x3CL; +%constant int KTB_M_TOLERANT = 0x40L; +%constant int KTB_M_SOFT_RAD_AFFINITY = 0x80L; +%constant int KTB_S_KTB = 2352; +%constant int KTB_S_PHYPCB = 8; +%constant int KTB_S_SINGLE_THREADED = 4; +%constant int KTB_S_EPID_PROC = 21; +%constant int KTB_S_EPID_NODE_IDX = 8; +%constant int KTB_S_EPID_NODE_SEQ = 2; +%constant int KTB_S_SINGLE_THREAD_ACT = 4; +%constant int KTB_S_CAPABILITIES = 8; +%constant int KTB_S_PERMANENT_CAPABILITIES = 8; +%constant int KTB_S_SAVED_CAPABILITIES = 8; +%constant int KTB_S_VOL_WAITS = 8; +%constant int KTB_S_COMQ_WAIT = 8; +%constant int KTB_S_RUNTIME_START = 8; +%constant int KTB_S_INTTIME_START = 8; +%constant int KTB_S_ACC_RUN = 8; +%constant int KTB_S_ACC_WAIT = 8; +%constant int KTB_S_ACC_INTERRUPT = 8; +%constant int KTB_S_GLOCK = 8; +%constant int KTB_S_SCHED_COUNT = 8; +%constant int KTB_S_FRED = 8; +%constant int KTB_S_VIRPCB = 8; +%constant int KTB_S_TQE_FLAGS = 8; +%constant int KTB_S_CBB_PERM_CPU_AFFINITY = 48; +%constant int KTB_S_PERMANENT_CPU_AFFINITY = 8; +%constant int KTB_S_CBB_CURRENT_AFFINITY = 48; +%constant int KTB_S_CURRENT_AFFINITY = 8; +%constant int KTB_S_CBB_ACTIVE_CPUS = 48; +%constant int KTB_S_ACTIVE_CPUS = 8; +%constant int KTB_S_CBB_AFFINITIES = 48; +%constant int KTB_S_AFFINITIES = 8; +%constant int KTB_S_CBB_PERMANENT_AFFINITIES = 48; +%constant int KTB_S_PERMANENT_AFFINITIES = 8; +%constant int KTB_S_CBB_SAVED_AFFINITIES = 48; +%constant int KTB_S_SAVED_AFFINITIES = 8; +%constant int KTB_S_FP_DISABLED_ACTION = 8; +%constant int KTB_S_KT_KERNEL_COUNTER_FRAC = 8; +%constant int KTB_S_KT_EXEC_COUNTER_FRAC = 8; +%constant int KTB_S_KT_SUPER_COUNTER_FRAC = 8; +%constant int KTB_S_KT_USER_COUNTER_FRAC = 8; +%constant int KTB_S_FP_LOW_SEQUENCE_NUMBER = 8; +%constant int KTB_S_FP_HIGH_SEQUENCE_NUMBER = 8; +%constant int KTB_S_POWER_ACCOUNTING = 8; +%constant int KTB_S_DEF_SCHED_FKB = 48; +%constant int KTB_K_LENGTH = 2352; +%constant int KTB_C_LENGTH = 2352; +%constant int KTB_S_KTBDEF = 2352; diff --git a/Modules/vms/ppropdef/ppropdef.i b/Modules/vms/ppropdef/ppropdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcHByb3BkZWYvcHByb3BkZWYuaQ== --- /dev/null +++ b/Modules/vms/ppropdef/ppropdef.i @@ -0,0 +1,27 @@ +%module ppropdef + +%constant int PPROP_C_PARSE_STYLE_TEMP = 0; +%constant int PPROP_C_PARSE_STYLE_PERM = 1; +%constant int PPROP_C_HOME_RAD = 2; +%constant int PPROP_C_CASE_LOOKUP_TEMP = 3; +%constant int PPROP_C_CASE_LOOKUP_PERM = 4; +%constant int PPROP_C_MEDDLE_ENABLE = 5; +%constant int PPROP_C_MEDDLE = 6; +%constant int PPROP_C_UNITS = 7; +%constant int PPROP_C_SS_LOG_ENABLE = 8; +%constant int PPROP_C_SS_LOG_DISABLE = 9; +%constant int PPROP_C_SS_LOG_UNLOAD = 10; +%constant int PPROP_C_TOKEN = 11; +%constant int PPROP_C_DEADLOCK_WAIT = 12; +%constant int PPROP_C_SEARCH_SYMLINK_TEMP = 13; +%constant int PPROP_C_SEARCH_SYMLINK_PERM = 14; +%constant int PPROP_C_KERNEL_THREAD_LIMIT = 15; +%constant int PARSE_STYLE_C_ODS2 = 0; +%constant int PARSE_STYLE_C_ODS5 = 1; +%constant int PARSE_STYLE_C_TRADITIONAL = 0; +%constant int PARSE_STYLE_C_EXTENDED = 1; +%constant int PPROP_K_CASE_BLIND = 0; +%constant int PPROP_K_CASE_SENSITIVE = 1; +%constant int PPROP_K_SEARCH_SYMLINK_NONE = 1; +%constant int PPROP_K_SEARCH_SYMLINK_ALL = 2; +%constant int PPROP_K_SEARCH_SYMLINK_NOELLIPS = 3; diff --git a/Modules/vms/pqldef/pqldef.i b/Modules/vms/pqldef/pqldef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcHFsZGVmL3BxbGRlZi5p --- /dev/null +++ b/Modules/vms/pqldef/pqldef.i @@ -0,0 +1,18 @@ +%module pqldef + +%constant int PQL__LISTEND = 0; +%constant int PQL__ASTLM = 1; +%constant int PQL__BIOLM = 2; +%constant int PQL__BYTLM = 3; +%constant int PQL__CPULM = 4; +%constant int PQL__DIOLM = 5; +%constant int PQL__FILLM = 6; +%constant int PQL__PGFLQUOTA = 7; +%constant int PQL__PRCLM = 8; +%constant int PQL__TQELM = 9; +%constant int PQL__WSQUOTA = 10; +%constant int PQL__WSDEFAULT = 11; +%constant int PQL__ENQLM = 12; +%constant int PQL__WSEXTENT = 13; +%constant int PQL__JTQUOTA = 14; +%constant int PQL__LENGTH = 15; diff --git a/Modules/vms/prcdef/prcdef.i b/Modules/vms/prcdef/prcdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcHJjZGVmL3ByY2RlZi5p --- /dev/null +++ b/Modules/vms/prcdef/prcdef.i @@ -0,0 +1,42 @@ +%module prcdef + +%constant int PRC_M_SSRWAIT = 0x1L; +%constant int PRC_M_SSFEXCU = 0x2L; +%constant int PRC_M_PSWAPM = 0x4L; +%constant int PRC_M_NOACNT = 0x8L; +%constant int PRC_M_BATCH = 0x10L; +%constant int PRC_M_HIBER = 0x20L; +%constant int PRC_M_NOUAF = 0x40L; +%constant int PRC_M_NETWRK = 0x80L; +%constant int PRC_M_DISAWS = 0x100L; +%constant int PRC_M_DETACH = 0x200L; +%constant int PRC_M_INTER = 0x400L; +%constant int PRC_M_IMGDMP = 0x800L; +%constant int PRC_M_CLISPEC = 0x1000L; +%constant int PRC_M_NOPASSWORD = 0x2000L; +%constant int PRC_M_DEBUG = 0x4000L; +%constant int PRC_M_DBGTRU = 0x8000L; +%constant int PRC_M_SUBSYSTEM = 0x10000L; +%constant int PRC_M_TCB = 0x20000L; +%constant int PRC_M_NO_IMAGE_PRIVS = 0x40000L; +%constant int PRC_M_PERM_SUBSYSTEM = 0x80000L; +%constant int PRC_M_PARSE_EXTENDED = 0x100000L; +%constant int PRC_M_INHERIT_PERSONA = 0x200000L; +%constant int PRC_M_HOME_RAD = 0x400000L; +%constant int PRC_M_CASE_SENSITIVE = 0x800000L; +%constant int PRC_M_SPAWN_DETACHED = 0x1000000L; +%constant int PRC_M_SSLOG_ENABLE = 0x2000000L; +%constant int PRC_M_KT_LIMIT = 0x4000000L; +%constant int PRC_M_LOGIN = 0x40L; +%constant int PRC_S_PRCDEF = 4; +%constant int PRC_M_IMPERSONATE = 512; +%constant int PRC__LISTEND = 0; +%constant int PRC__PGFLCHAR = 1; +%constant int PRC__PGFLINDEX = 2; +%constant int PRC__INPUT_ATT = 3; +%constant int PRC__OUTPUT_ATT = 4; +%constant int PRC__ERROR_ATT = 5; +%constant int PRC__CLASS = 6; +%constant int PRC__SSLOG_FLAGS = 7; +%constant int PRC__SSLOG_BUFSIZE = 8; +%constant int PRC__SSLOG_BUFCNT = 9; diff --git a/Modules/vms/prdef/prdef.i b/Modules/vms/prdef/prdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcHJkZWYvcHJkZWYuaQ== --- /dev/null +++ b/Modules/vms/prdef/prdef.i @@ -0,0 +1,221 @@ +%module prdef + +%constant int PR__ESP = 1; +%constant int PR__SSP = 2; +%constant int PR__USP = 3; +%constant int PR__ASN = 6; +%constant int PR__ASTEN = 48; +%constant int PR__ASTSR = 49; +%constant int PR__DATFX = 23; +%constant int PR__IPIR = 22; +%constant int PR__IPL = 18; +%constant int PR__MCES = 38; +%constant int PR__PCBB = 16; +%constant int PR__PME = 61; +%constant int PR__PRBR = 15; +%constant int PR__SCBB = 17; +%constant int PR__SIRR = 20; +%constant int PR__SISR = 21; +%constant int PR__TBIA = 57; +%constant int PR__TBIAP = 50; +%constant int PR__TBIS = 58; +%constant int PR__TBIS_64 = 60; +%constant int PR__TBISD = 59; +%constant int PR__TBISI = 47; +%constant int PR__VPTB = 12; +%constant int PR__SID_TYP780 = 1; +%constant int PR__SID_TYP750 = 2; +%constant int PR__SID_TYP730 = 3; +%constant int PR__SID_TYP790 = 4; +%constant int PR__SID_TYP8SS = 5; +%constant int PR__SID_TYP8NN = 6; +%constant int PR__SID_TYPUV1 = 7; +%constant int PR__SID_TYPUV2 = 8; +%constant int PR__SID_TYP410 = 8; +%constant int PR__SID_TYP009 = 9; +%constant int PR__SID_TYP420 = 10; +%constant int PR__SID_TYP520 = 10; +%constant int PR__SID_TYP650 = 10; +%constant int PR__SID_TYP9CC = 10; +%constant int PR__SID_TYP9CI = 10; +%constant int PR__SID_TYP60 = 10; +%constant int PR__SID_TYP670 = 11; +%constant int PR__SID_TYP9RR = 11; +%constant int PR__SID_TYP43 = 11; +%constant int PR__SID_TYP9AQ = 14; +%constant int PR__SID_TYP8PS = 17; +%constant int PR__SID_TYP1202 = 18; +%constant int PR__SID_TYP46 = 18; +%constant int PR__SID_TYP600 = 19; +%constant int PR__SID_TYP690 = 19; +%constant int PR__SID_TYP700 = 19; +%constant int PR__SID_TYP1302 = 19; +%constant int PR__SID_TYP49 = 19; +%constant int PR__SID_TYP1303 = 19; +%constant int PR__SID_TYP660 = 20; +%constant int PR__SID_TYP440 = 20; +%constant int PR__SID_TYP4A = 20; +%constant int PR__SID_TYP550 = 20; +%constant int PR__SID_TYP1701 = 23; +%constant int PR__SID_TYPMAX = 23; +%constant int PR__SID_TYP_NOTAVAX = 128; +%constant int PR__SID_TYPUV = 8; +%constant int PR__XSID_UV_UV = 0; +%constant int PR__XSID_UV_UV2 = 1; +%constant int PR__XSID_UV_410 = 4; +%constant int PR__SID_TYPCV = 10; +%constant int PR__XSID_CV_CV = 0; +%constant int PR__XSID_CV_650 = 1; +%constant int PR__XSID_CV_9CC = 2; +%constant int PR__XSID_CV_60 = 3; +%constant int PR__XSID_CV_420 = 4; +%constant int PR__XSID_CV_9CI = 5; +%constant int PR__XSID_CV_520 = 7; +%constant int PR__SID_TYPRV = 11; +%constant int PR__XSID_RV_RV = 0; +%constant int PR__XSID_RV_670 = 1; +%constant int PR__XSID_RV_9RR = 2; +%constant int PR__XSID_RV_43 = 4; +%constant int PR__SID_TYPV12 = 18; +%constant int PR__XSID_V12_V12 = 0; +%constant int PR__XSID_V12_1202 = 2; +%constant int PR__XSID_V12_46 = 4; +%constant int PR__SID_TYPV13 = 19; +%constant int PR__XSID_V13_V13 = 0; +%constant int PR__XSID_V13_690 = 1; +%constant int PR__XSID_V13_1302 = 2; +%constant int PR__XSID_V13_1303 = 3; +%constant int PR__XSID_V13_49 = 4; +%constant int PR__XSID_V13_700 = 5; +%constant int PR__XSID_V13_600 = 6; +%constant int PR__SID_TYPV14 = 20; +%constant int PR__XSID_V14_V14 = 0; +%constant int PR__XSID_V14_660 = 1; +%constant int PR__XSID_V14_440 = 4; +%constant int PR__XSID_V14_4A = 5; +%constant int PR__XSID_V14_550 = 7; +%constant int PR__SID_TYPV17 = 23; +%constant int PR__XSID_V17_V17 = 0; +%constant int PR__XSID_V17_1701 = 1; +%constant int PR__XSID_N8800 = 0; +%constant int PR__XSID_N8700 = 1; +%constant int PR__XSID_N2 = 2; +%constant int PR__XSID_N3 = 3; +%constant int PR__XSID_N4 = 4; +%constant int PR__XSID_N5 = 5; +%constant int PR__XSID_N8550 = 6; +%constant int PR__XSID_N8500 = 7; +%constant int PR__XSID_N8NNN = -1; +%constant int PR_M_ASTEN = 0xFL; +%constant int PR_M_ASTEN_KEN = 0x1L; +%constant int PR_M_ASTEN_EEN = 0x2L; +%constant int PR_M_ASTEN_SEN = 0x4L; +%constant int PR_M_ASTEN_UEN = 0x8L; +%constant int PR_M_ASTEN_DSBL_ALL = 0; +%constant int PR_M_ASTEN_ENBL_ALL = 255; +%constant int PR_M_ASTEN_ENBL_K = 17; +%constant int PR_M_ASTEN_ENBL_E = 34; +%constant int PR_M_ASTEN_ENBL_S = 68; +%constant int PR_M_ASTEN_ENBL_U = 136; +%constant int PR_M_ASTEN_PRSRV_ALL = 15; +%constant int PR_M_ASTEN_PRSRV_K = 1; +%constant int PR_M_ASTEN_PRSRV_E = 2; +%constant int PR_M_ASTEN_PRSRV_S = 4; +%constant int PR_M_ASTEN_PRSRV_U = 8; +%constant int PR_M_ASTSR = 0xFL; +%constant int PR_M_ASTSR_KPD = 0x1L; +%constant int PR_M_ASTSR_EPD = 0x2L; +%constant int PR_M_ASTSR_SPD = 0x4L; +%constant int PR_M_ASTSR_UPD = 0x8L; +%constant int PR_M_ASTSR_CLR_ALL = 0; +%constant int PR_M_ASTSR_SET_ALL = 255; +%constant int PR_M_ASTSR_SET_K = 17; +%constant int PR_M_ASTSR_SET_E = 34; +%constant int PR_M_ASTSR_SET_S = 68; +%constant int PR_M_ASTSR_SET_U = 136; +%constant int PR_M_ASTSR_PRSRV_ALL = 15; +%constant int PR_M_ASTSR_PRSRV_K = 1; +%constant int PR_M_ASTSR_PRSRV_E = 2; +%constant int PR_M_ASTSR_PRSRV_S = 4; +%constant int PR_M_ASTSR_PRSRV_U = 8; +%constant int PR_M_FEN_FEN = 0x1L; +%constant int PR_M_DATFX_DATFX = 0x1L; +%constant int PR_M_IPL_IPL = 0x1FL; +%constant int PR_M_MCES_MCK = 0x1L; +%constant int PR_M_MCES_SCE = 0x2L; +%constant int PR_M_MCES_PCE = 0x4L; +%constant int PR_M_MCES_DPC = 0x8L; +%constant int PR_M_MCES_DSC = 0x10L; +%constant int PR_V_PCBB_PA = 0; +%constant int PR_S_PCBB_PA = 48; +%constant int PR_M_PS_SW = 0x3L; +%constant int PR_M_PS_PRVMOD = 0x3L; +%constant int PR_M_PS_SYSSTATE = 0x4L; +%constant int PR_M_PS_CURMOD = 0x18L; +%constant int PR_M_PS_VMM = 0x80L; +%constant int PR_M_PS_IPL = 0x1F00L; +%constant int PR_M_PS_SP_ALIGN = 0x3F00000000000000L; +%constant int PR_M_PS_MBZ_62 = 0x4000000000000000L; +%constant int PR_M_PS_MBZ_63 = 0x8000000000000000L; +%constant int PR_V_PS_MAX_PS_REG_BIT = 13; +%constant int PR_C_PS_KERNEL = 0; +%constant int PR_C_PS_EXEC = 1; +%constant int PR_C_PS_SUPER = 2; +%constant int PR_C_PS_USER = 3; +%constant int PR_M_PTBR_PFN = 0xFFFFFFFFL; +%constant int PR_M_SCBB_PFN = 0xFFFFFFFFL; +%constant int PR_M_SIRR_LVL = 0xFL; +%constant int PR_M_SISR_SUMMARY = 0xFFFFL; +%constant int PR_M_SISR_RAZ = 0x1L; +%constant int PR_M_SISR_IR1 = 0x2L; +%constant int PR_M_SISR_IR2 = 0x4L; +%constant int PR_M_SISR_IR3 = 0x8L; +%constant int PR_M_SISR_IR4 = 0x10L; +%constant int PR_M_SISR_IR5 = 0x20L; +%constant int PR_M_SISR_IR6 = 0x40L; +%constant int PR_M_SISR_IR7 = 0x80L; +%constant int PR_M_SISR_IR8 = 0x100L; +%constant int PR_M_SISR_IR9 = 0x200L; +%constant int PR_M_SISR_IR10 = 0x400L; +%constant int PR_M_SISR_IR11 = 0x800L; +%constant int PR_M_SISR_IR12 = 0x1000L; +%constant int PR_M_SISR_IR13 = 0x2000L; +%constant int PR_M_SISR_IR14 = 0x4000L; +%constant int PR_M_SISR_IR15 = 0x8000L; +%constant int PR_M_TBCHK_VA_PRESENT = 0x1L; +%constant int PR_M_IEEE_DNOD = 0x800000000000L; +%constant int PR_M_IEEE_DNZ = 0x1000000000000L; +%constant int PR_M_IEEE_INVD = 0x2000000000000L; +%constant int PR_M_IEEE_DZED = 0x4000000000000L; +%constant int PR_M_IEEE_OVFD = 0x8000000000000L; +%constant int PR_M_IEEE_INV = 0x10000000000000L; +%constant int PR_M_IEEE_DZE = 0x20000000000000L; +%constant int PR_M_IEEE_OVF = 0x40000000000000L; +%constant int PR_M_IEEE_UNF = 0x80000000000000L; +%constant int PR_M_IEEE_INE = 0x100000000000000L; +%constant int PR_M_IEEE_IOV = 0x200000000000000L; +%constant int PR_M_IEEE_UNDZ = 0x1000000000000000L; +%constant int PR_M_IEEE_UNFD = 0x2000000000000000L; +%constant int PR_M_IEEE_INED = 0x4000000000000000L; +%constant int PR_M_IEEE_SUMMARY = 0x8000000000000000L; +%constant int PR_S_PRDEF = 8; +%constant int PR_S_QUAD_ACCESS = 8; +%constant int PR_S_LONG_ACCESS = 8; +%constant int PR_S_SID_SN = 12; +%constant int PR_S_SID_PL = 3; +%constant int PR_S_SID_ECO = 9; +%constant int PR_S_SID_TYPE = 8; +%constant int PR_S_XSID_TYPE = 8; +%constant int PR_S_ASTEN = 4; +%constant int PR_S_ASTSR = 4; +%constant int PR_S_IPL_IPL = 5; +%constant int PR_S_PS_SW = 2; +%constant int PR_S_PS_PRVMOD = 2; +%constant int PR_S_PS_CURMOD = 2; +%constant int PR_S_PS_IPL = 5; +%constant int PR_S_PS_SP_ALIGN = 6; +%constant int PR_S_PTBR_PFN = 32; +%constant int PR_S_SCBB_PFN = 32; +%constant int PR_S_SIRR_LVL = 4; +%constant int PR_S_SISR_SUMMARY = 16; +%constant int PR_S_IEEE_DYN_RND = 2; diff --git a/Modules/vms/prvdef/prvdef.i b/Modules/vms/prvdef/prvdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcHJ2ZGVmL3BydmRlZi5p --- /dev/null +++ b/Modules/vms/prvdef/prvdef.i @@ -0,0 +1,53 @@ +%module prvdef + +%constant int PRV_M_CMKRNL = 0x1L; +%constant int PRV_M_CMEXEC = 0x2L; +%constant int PRV_M_SYSNAM = 0x4L; +%constant int PRV_M_GRPNAM = 0x8L; +%constant int PRV_M_ALLSPOOL = 0x10L; +%constant int PRV_M_IMPERSONATE = 0x20L; +%constant int PRV_M_DIAGNOSE = 0x40L; +%constant int PRV_M_LOG_IO = 0x80L; +%constant int PRV_M_GROUP = 0x100L; +%constant int PRV_M_NOACNT = 0x200L; +%constant int PRV_M_PRMCEB = 0x400L; +%constant int PRV_M_PRMMBX = 0x800L; +%constant int PRV_M_PSWAPM = 0x1000L; +%constant int PRV_M_SETPRI = 0x2000L; +%constant int PRV_M_SETPRV = 0x4000L; +%constant int PRV_M_TMPMBX = 0x8000L; +%constant int PRV_M_WORLD = 0x10000L; +%constant int PRV_M_MOUNT = 0x20000L; +%constant int PRV_M_OPER = 0x40000L; +%constant int PRV_M_EXQUOTA = 0x80000L; +%constant int PRV_M_NETMBX = 0x100000L; +%constant int PRV_M_VOLPRO = 0x200000L; +%constant int PRV_M_PHY_IO = 0x400000L; +%constant int PRV_M_BUGCHK = 0x800000L; +%constant int PRV_M_PRMGBL = 0x1000000L; +%constant int PRV_M_SYSGBL = 0x2000000L; +%constant int PRV_M_PFNMAP = 0x4000000L; +%constant int PRV_M_SHMEM = 0x8000000L; +%constant int PRV_M_SYSPRV = 0x10000000L; +%constant int PRV_M_BYPASS = 0x20000000L; +%constant int PRV_M_SYSLCK = 0x40000000L; +%constant int PRV_M_SHARE = 0x80000000L; +%constant int PRV_M_UPGRADE = 0x100000000L; +%constant int PRV_M_DOWNGRADE = 0x200000000L; +%constant int PRV_M_GRPPRV = 0x400000000L; +%constant int PRV_M_READALL = 0x800000000L; +%constant int PRV_M_IMPORT = 0x1000000000L; +%constant int PRV_M_AUDIT = 0x2000000000L; +%constant int PRV_M_SECURITY = 0x4000000000L; +%constant int PRV_K_NUMBER_OF_PRIVS = 39; +%constant int PRV_M_ACNT = 0x200L; +%constant int PRV_M_ALTPRI = 0x2000L; +%constant int PRV_M_DETACH = 0x20L; +%constant int PRV_S_PRVDEF = 8; +%constant int PRV_M_SORTED = 0x1L; +%constant int PRV_M_BRIEF = 0x2L; +%constant int PRV_M_FILLED = 0x4L; +%constant int PRV_S_PRVDSP_BITS = 1; +%constant int PRV_K_PRVMASK_WORKING = 0; +%constant int PRV_K_PRVMASK_PERMANENT = 1; +%constant int PRV_K_PRVMASK_IMAGE = 2; diff --git a/Modules/vms/prxdef/prxdef.i b/Modules/vms/prxdef/prxdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcHJ4ZGVmL3ByeGRlZi5p --- /dev/null +++ b/Modules/vms/prxdef/prxdef.i @@ -0,0 +1,42 @@ +%module prxdef + +%constant int PRX_K_ADD = 1; +%constant int PRX_K_DELETE = 2; +%constant int PRX_K_SHOW = 3; +%constant int PRX_K_VERIFY = 4; +%constant int PRX_K_PERFORMANCE = 5; +%constant int PRX_K_ZERO_PERFORMANCE = 6; +%constant int PRX_K_CREATE = 7; +%constant int PRX_K_STOP = 8; +%constant int PRX_K_START = 9; +%constant int PRX_K_MAX_PROXY_CODE = 10; +%constant int PRX_K_PERFORMANCE_LENGTH = 48; +%constant int PRX_S_PERFORMANCE = 48; +%constant int PRX_M_IGNORE_RETURN = 0x1L; +%constant int PRX_M_BYPASS_EXPAND = 0x2L; +%constant int PRX_M_RESERVE_1 = 0xFCL; +%constant int PRX_M_DEFAULT = 0x100L; +%constant int PRX_M_EXACT = 0x200L; +%constant int PRX_M_DELETE_ALLOWED = 0x400L; +%constant int PRX_M_FILL_1 = 0xFFFFF800L; +%constant int PRX_K_HEADER_LENGTH = 8; +%constant int PRX_S_HEADER = 8; +%constant int PRX_S_FILL_1 = 21; +%constant int PRX_S_PRX_GENERIC_DESC1 = 5; +%constant int PRX_K_USER_NAME_LENGTH = 32; +%constant int PRX_K_REMOTE_NODE_NAME_LENGTH = 1024; +%constant int PRX_K_MAX_LOCAL_USERS = 16; +%constant int PRX_K_LOCAL_USER_ENTRY = 36; +%constant int PRX_S_DATA = 1100; +%constant int PRX_S_LOCAL_USER_NAME = 32; +%constant int PRX_S_REMOTE_USER_NAME = 32; +%constant int PRX_S_REMOTE_NODE_NAME = 1024; +%constant int PRX_K_DATA_LENGTH = 1100; +%constant int PRX_S_BUFSIZ_SUMMARY = 8; +%constant int PRX_K_MAX_REPLY = 1692; +%constant int PRX_S_REPLY_UNION = 88; +%constant int PRX_S_VALID_USER = 32; +%constant int PRX_S_SHOW_DEF_USER = 32; +%constant int PRX_S_SHOW_REM_USER = 32; +%constant int PRX_S_SHOW_LOCAL_DATA = 4; +%constant int PRX_K_MAX_LENGTH = 1108; diff --git a/Modules/vms/pscandef/pscandef.i b/Modules/vms/pscandef/pscandef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcHNjYW5kZWYvcHNjYW5kZWYuaQ== --- /dev/null +++ b/Modules/vms/pscandef/pscandef.i @@ -0,0 +1,48 @@ +%module pscandef + +%constant int pscan__BEGIN = 0; +%constant int pscan__ACCOUNT = 1; +%constant int pscan__AUTHPRI = 2; +%constant int pscan__CURPRIV = 3; +%constant int pscan__GRP = 4; +%constant int pscan__HW_MODEL = 5; +%constant int pscan__HW_NAME = 6; +%constant int pscan__JOBPRCCNT = 7; +%constant int pscan__JOBTYPE = 8; +%constant int pscan__MASTER_PID = 9; +%constant int pscan__MEM = 10; +%constant int pscan__MODE = 11; +%constant int pscan__NODE_CSID = 12; +%constant int pscan__NODENAME = 13; +%constant int pscan__OWNER = 14; +%constant int pscan__PRCCNT = 15; +%constant int pscan__PRCNAM = 16; +%constant int pscan__PRI = 17; +%constant int pscan__PRIB = 18; +%constant int pscan__STATE = 19; +%constant int pscan__STS = 20; +%constant int pscan__TERMINAL = 21; +%constant int pscan__UIC = 22; +%constant int pscan__USERNAME = 23; +%constant int pscan__GETJPI_BUFFER_SIZE = 24; +%constant int pscan__PSCAN_CONTROL_FLAGS = 25; +%constant int pscan__KT_COUNT = 26; +%constant int pscan__MULTITHREAD = 27; +%constant int pscan__SCHED_CLASS_NAME = 28; +%constant int pscan__END = 29; +%constant int pscan_k_type = 129; +%constant int PSCAN_M_THREAD = 0x1L; +%constant int PSCAN_S_PSCANCTLDEF = 4; +%constant int pscan_M_OR = 0x1L; +%constant int pscan_M_BIT_ALL = 0x2L; +%constant int pscan_M_BIT_ANY = 0x4L; +%constant int pscan_M_GEQ = 0x8L; +%constant int pscan_M_GTR = 0x10L; +%constant int pscan_M_LEQ = 0x20L; +%constant int pscan_M_LSS = 0x40L; +%constant int pscan_M_PREFIX_MATCH = 0x80L; +%constant int pscan_M_WILDCARD = 0x100L; +%constant int pscan_M_CASE_BLIND = 0x200L; +%constant int pscan_M_EQL = 0x400L; +%constant int pscan_M_NEQ = 0x800L; +%constant int pscan_S_item_specific_flags = 2; diff --git a/Modules/vms/psldef/psldef.i b/Modules/vms/psldef/psldef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcHNsZGVmL3BzbGRlZi5p --- /dev/null +++ b/Modules/vms/psldef/psldef.i @@ -0,0 +1,14 @@ +%module psldef + +%constant int PSL_M_PRVMOD = 0x3L; +%constant int PSL_M_CURMOD = 0x18L; +%constant int PSL_M_IPL = 0x1F00L; +%constant int PSL_V_MAX_PS_REG_BIT = 13; +%constant int PSL_C_KERNEL = 0; +%constant int PSL_C_EXEC = 1; +%constant int PSL_C_SUPER = 2; +%constant int PSL_C_USER = 3; +%constant int PSL_S_PSLDEF = 2; +%constant int PSL_S_PRVMOD = 2; +%constant int PSL_S_CURMOD = 2; +%constant int PSL_S_IPL = 5; diff --git a/Modules/vms/pxbdef/pxbdef.i b/Modules/vms/pxbdef/pxbdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcHhiZGVmL3B4YmRlZi5p --- /dev/null +++ b/Modules/vms/pxbdef/pxbdef.i @@ -0,0 +1,48 @@ +%module pxbdef + +%constant int PXB_S_PXB = 12; +%constant int PXB_K_LENGTH = 12; +%constant int PXB_ARRAY_ELEMENTS = 16; +%constant int PXB_ARRAY_K_PXB_ARRAY_HEADER = 12; +%constant int PXB_ARRAY_S_PXB_ARRAY = 76; +%constant int PXB_ARRAY_S_ELEMENTS = 64; +%constant int DELBK_S_DELBK = 40; +%constant int DELBK_C_DELEGATE_BLOCK_SIZE = 40; +%constant int PXRB_S_PXRB = 88; +%constant int PXRB_S_NAME_DESC = 8; +%constant int PXRB_S_NAME = 32; +%constant int PXRB_K_LENGTH = 88; +%constant int PXDV_K_version = 1; +%constant int PXDV_K_min_version = 1; +%constant int PXDV_K_max_version = 1; +%constant int PXDV_S_PXDV = 40; +%constant int PXBNT_K_VERSION_1 = 1; +%constant int PXBNT_K_CURRENT_VERSION = 1; +%constant int PXBNT_M_CLONE = 0x1L; +%constant int PXBNT_M_DELEGATE = 0x2L; +%constant int PXBNT_M_FILL_3 = 0x4L; +%constant int PXBNT_M_FILL_4 = 0x8L; +%constant int PXBNT_M_FILL_5 = 0x10L; +%constant int PXBNT_M_FILL_6 = 0x20L; +%constant int PXBNT_M_FILL_7 = 0x40L; +%constant int PXBNT_M_DEBIT = 0x80L; +%constant int PXBNT_K_LENGTH = 88; +%constant int PXBNT_S_PXBNT = 88; +%constant int PXBNT_S_DOI = 8; +%constant int PXBNT_S_NT_OWF_PASSWORD = 16; +%constant int PXBNT_S_LM_OWF_PASSWORD = 16; +%constant int PXB_M_FILL_1 = 0x1L; +%constant int PXB_M_FILL_2 = 0x2L; +%constant int PXB_M_FILL_3 = 0x4L; +%constant int PXB_M_FILL_4 = 0x8L; +%constant int PXB_M_FILL_5 = 0x10L; +%constant int PXB_M_FILL_6 = 0x20L; +%constant int PXB_M_FILL_7 = 0x40L; +%constant int PXB_M_DEBIT = 0x80L; +%constant int PXB_S_PXB_FLAGS = 4; +%constant int PXB_M_PRIMARY_EXTENSION = 0x1L; +%constant int PXB_S_CREATE_FLAGS = 4; +%constant int TOKEN_K_USERSESSIONKEY_OFFSET = 120; +%constant int TOKEN_K_USERSESSIONKEY_SIZE = 16; +%constant int TOKEN_K_LMSESSIONKEY_OFFSET = 136; +%constant int TOKEN_K_LMSESSIONKEY_SIZE = 8; diff --git a/Modules/vms/quidef/quidef.i b/Modules/vms/quidef/quidef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcXVpZGVmL3F1aWRlZi5p --- /dev/null +++ b/Modules/vms/quidef/quidef.i @@ -0,0 +1,346 @@ +%module quidef + +%constant int QUI__CANCEL_OPERATION = 1; +%constant int QUI__DISPLAY_CHARACTERISTIC = 2; +%constant int QUI__DISPLAY_FILE = 3; +%constant int QUI__DISPLAY_FORM = 4; +%constant int QUI__DISPLAY_JOB = 5; +%constant int QUI__DISPLAY_QUEUE = 6; +%constant int QUI__TRANSLATE_QUEUE = 7; +%constant int QUI__DISPLAY_ENTRY = 8; +%constant int QUI__DISPLAY_QMAN = 9; +%constant int QUI__DISPLAY_MANAGER = 10; +%constant int QUI_K_MIN_FUNC = 1; +%constant int QUI_K_MAX_FUNC = 10; +%constant int QUI__ACCOUNT_NAME = 1; +%constant int QUI__AFTER_TIME = 2; +%constant int QUI__ASSIGNED_QUEUE_NAME = 3; +%constant int QUI__BASE_PRIORITY = 4; +%constant int QUI__CHARACTERISTIC_NAME = 5; +%constant int QUI__CHARACTERISTIC_NUMBER = 6; +%constant int QUI__CHARACTERISTICS = 7; +%constant int QUI__CHECKPOINT_DATA = 8; +%constant int QUI__CLI = 9; +%constant int QUI__COMPLETED_BLOCKS = 10; +%constant int QUI__CONDITION_VECTOR = 11; +%constant int QUI__CPU_DEFAULT = 12; +%constant int QUI__CPU_LIMIT = 13; +%constant int QUI__DEVICE_NAME = 14; +%constant int QUI__ENTRY_NUMBER = 15; +%constant int QUI__FILE_COPIES = 16; +%constant int QUI__FILE_COPIES_CHKPT = 17; +%constant int QUI__FILE_COPIES_DONE = 18; +%constant int QUI__FILE_FLAGS = 19; +%constant int QUI__FILE_SETUP_MODULES = 20; +%constant int QUI__FILE_SPECIFICATION = 21; +%constant int QUI__FILE_STATUS = 22; +%constant int QUI__FIRST_PAGE = 23; +%constant int QUI__FORM_DESCRIPTION = 24; +%constant int QUI__FORM_FLAGS = 25; +%constant int QUI__FORM_LENGTH = 26; +%constant int QUI__FORM_MARGIN_BOTTOM = 27; +%constant int QUI__FORM_MARGIN_LEFT = 28; +%constant int QUI__FORM_MARGIN_RIGHT = 29; +%constant int QUI__FORM_MARGIN_TOP = 30; +%constant int QUI__FORM_NAME = 31; +%constant int QUI__FORM_NUMBER = 32; +%constant int QUI__FORM_SETUP_MODULES = 33; +%constant int QUI__FORM_STOCK = 34; +%constant int QUI__FORM_WIDTH = 35; +%constant int QUI__GENERIC_TARGET = 36; +%constant int QUI__INTERVENING_BLOCKS = 37; +%constant int QUI__INTERVENING_JOBS = 38; +%constant int QUI__JOB_COPIES = 39; +%constant int QUI__JOB_COPIES_CHKPT = 40; +%constant int QUI__JOB_COPIES_DONE = 41; +%constant int QUI__JOB_FLAGS = 42; +%constant int QUI__JOB_LIMIT = 43; +%constant int QUI__JOB_NAME = 44; +%constant int QUI__JOB_RESET_MODULES = 45; +%constant int QUI__JOB_SIZE = 46; +%constant int QUI__JOB_SIZE_MAXIMUM = 47; +%constant int QUI__JOB_SIZE_MINIMUM = 48; +%constant int QUI__JOB_STATUS = 49; +%constant int QUI__LAST_PAGE = 50; +%constant int QUI__LIBRARY_SPECIFICATION = 51; +%constant int QUI__LOG_QUEUE = 52; +%constant int QUI__LOG_SPECIFICATION = 53; +%constant int QUI__NOTE = 54; +%constant int QUI__OPERATOR_REQUEST = 55; +%constant int QUI__OWNER_UIC = 56; +%constant int QUI__PAGE_SETUP_MODULES = 57; +%constant int QUI__PARAMETER_1 = 58; +%constant int QUI__PARAMETER_2 = 59; +%constant int QUI__PARAMETER_3 = 60; +%constant int QUI__PARAMETER_4 = 61; +%constant int QUI__PARAMETER_5 = 62; +%constant int QUI__PARAMETER_6 = 63; +%constant int QUI__PARAMETER_7 = 64; +%constant int QUI__PARAMETER_8 = 65; +%constant int QUI__PRIORITY = 66; +%constant int QUI__PROCESSOR = 67; +%constant int QUI__PROTECTION = 68; +%constant int QUI__QUEUE_FLAGS = 69; +%constant int QUI__QUEUE_NAME = 70; +%constant int QUI__QUEUE_STATUS = 71; +%constant int QUI__REFUSAL_REASON = 72; +%constant int QUI__REQUEUE_PRIORITY = 73; +%constant int QUI__REQUEUE_QUEUE_NAME = 74; +%constant int QUI__SCSNODE_NAME = 75; +%constant int QUI__SEARCH_FLAGS = 76; +%constant int QUI__SEARCH_NAME = 77; +%constant int QUI__SEARCH_NUMBER = 78; +%constant int QUI__SUBMISSION_TIME = 79; +%constant int QUI__UIC = 80; +%constant int QUI__USERNAME = 81; +%constant int QUI__WSDEFAULT = 82; +%constant int QUI__WSEXTENT = 83; +%constant int QUI__WSQUOTA = 84; +%constant int QUI__RAD = 85; +%constant int QUI__RESERVED_OUTPUT_86 = 86; +%constant int QUI__JOB_CONTROL_GQC = 87; +%constant int QUI__SEARCH_USERNAME = 88; +%constant int QUI__DEFAULT_FORM_NAME = 89; +%constant int QUI__DEFAULT_FORM_NUMBER = 90; +%constant int QUI__DEFAULT_FORM_STOCK = 91; +%constant int QUI__JOB_PID = 92; +%constant int QUI__FILE_IDENTIFICATION = 93; +%constant int QUI__PENDING_JOB_BLOCK_COUNT = 94; +%constant int QUI__JOB_RETENTION_TIME = 95; +%constant int QUI__JOB_COMPLETION_TIME = 96; +%constant int QUI__JOB_COMPLETION_QUEUE = 97; +%constant int QUI__RESERVED_OUTPUT_98 = 98; +%constant int QUI__RESERVED_OUTPUT_99 = 99; +%constant int QUI__RESERVED_OUTPUT_100 = 100; +%constant int QUI__RESERVED_OUTPUT_101 = 101; +%constant int QUI__RESERVED_OUTPUT_102 = 102; +%constant int QUI__SEARCH_BATCH_EPID = 103; +%constant int QUI__SEARCH_JOB_NAME = 104; +%constant int QUI__RESERVED_INPUT_105 = 105; +%constant int QUI__RESERVED_INPUT_106 = 106; +%constant int QUI__EXECUTING_JOB_COUNT = 107; +%constant int QUI__HOLDING_JOB_COUNT = 108; +%constant int QUI__TIMED_RELEASE_JOB_COUNT = 109; +%constant int QUI__PENDING_JOB_REASON = 110; +%constant int QUI__ORB = 111; +%constant int QUI__QUEUE_DESCRIPTION = 112; +%constant int QUI__SYMBIONT_FLAGS = 113; +%constant int QUI__JOB_ACCESS_CLASS = 114; +%constant int QUI__ORB_LOCK_KEY = 115; +%constant int QUI__CHECKPOINT_FREQUENCY = 116; +%constant int QUI__PENDING_JOB_COUNT = 117; +%constant int QUI__RETAINED_JOB_COUNT = 118; +%constant int QUI__RESTART_QUEUE_NAME = 119; +%constant int QUI__FILE_COUNT = 120; +%constant int QUI__ATTRIBUTES = 121; +%constant int QUI__ATTRIBUTES_SIZE = 122; +%constant int QUI__QUEUE_SUPPORT = 123; +%constant int QUI__QUEUE_ATTRIBUTES = 124; +%constant int QUI__QUEUE_ATTRIBUTES_SIZE = 125; +%constant int QUI__JOB_ATTRIBUTES = 126; +%constant int QUI__JOB_ATTRIBUTES_SIZE = 127; +%constant int QUI__FILE_ATTRIBUTES = 128; +%constant int QUI__FILE_ATTRIBUTES_SIZE = 129; +%constant int QUI__AUTOSTART_ON = 130; +%constant int QUI__AGENT_PROFILE = 131; +%constant int QUI__MANAGER_NAME = 132; +%constant int QUI__MANAGER_STATUS = 133; +%constant int QUI__RESERVED_OUTPUT_134 = 134; +%constant int QUI__MANAGER_NODES = 135; +%constant int QUI__MANAGER_AUTOSTART = 136; +%constant int QUI__QUEUE_DIRECTORY = 137; +%constant int QUI__RESERVED_OUTPUT_138 = 138; +%constant int QUI__RESERVED_OUTPUT_139 = 139; +%constant int QUI__RESERVED_OUTPUT_140 = 140; +%constant int QUI__RESERVED_OUTPUT_141 = 141; +%constant int QUI__RESERVED_OUTPUT_142 = 142; +%constant int QUI__RESERVED_OUTPUT_143 = 143; +%constant int QUI__RESERVED_OUTPUT_144 = 144; +%constant int QUI__RESERVED_OUTPUT_145 = 145; +%constant int QUI__RESERVED_OUTPUT_146 = 146; +%constant int QUI__RESERVED_OUTPUT_147 = 147; +%constant int QUI__RESERVED_OUTPUT_148 = 148; +%constant int QUI__RESERVED_OUTPUT_149 = 149; +%constant int QUI__RESERVED_OUTPUT_150 = 150; +%constant int QUI__RESERVED_OUTPUT_151 = 151; +%constant int QUI__RESERVED_OUTPUT_152 = 152; +%constant int QUI__RESERVED_OUTPUT_153 = 153; +%constant int QUI__RESERVED_OUTPUT_154 = 154; +%constant int QUI__RESERVED_OUTPUT_155 = 155; +%constant int QUI__RESERVED_OUTPUT_156 = 156; +%constant int QUI__RESERVED_OUTPUT_157 = 157; +%constant int QUI__RESERVED_OUTPUT_158 = 158; +%constant int QUI__RESERVED_OUTPUT_159 = 159; +%constant int QUI__RESERVED_INPUT_160 = 160; +%constant int QUI__RESERVED_INPUT_161 = 161; +%constant int QUI__RESERVED_INPUT_162 = 162; +%constant int QUI__RESERVED_INPUT_163 = 163; +%constant int QUI__RESERVED_INPUT_164 = 164; +%constant int QUI__RESERVED_INPUT_165 = 165; +%constant int QUI_K_MIN_ITEM = 1; +%constant int QUI_K_MAX_ITEM = 165; +%constant int QUI__CHARGE_CODE = 1; +%constant int QUI_M_FILE_BURST = 0x1L; +%constant int QUI_M_FILE_BURST_EXP = 0x2L; +%constant int QUI_M_FILE_DELETE = 0x4L; +%constant int QUI_M_FILE_DOUBLE_SPACE = 0x8L; +%constant int QUI_M_FILE_FLAG = 0x10L; +%constant int QUI_M_FILE_FLAG_EXP = 0x20L; +%constant int QUI_M_FILE_TRAILER = 0x40L; +%constant int QUI_M_FILE_TRAILER_EXP = 0x80L; +%constant int QUI_M_FILE_PAGE_HEADER = 0x100L; +%constant int QUI_M_FILE_PAGINATE = 0x200L; +%constant int QUI_M_FILE_PASSALL = 0x400L; +%constant int QUI_M_FILE_PAGINATE_EXP = 0x800L; +%constant int QUI_M_FILE_DELETE_ALWAYS = 0x1000L; +%constant int QUI_S_FILE_FLAGS = 4; +%constant int QUI_M_FILE_CHECKPOINTED = 0x1L; +%constant int QUI_M_FILE_EXECUTING = 0x2L; +%constant int QUI_S_FILE_STATUS = 4; +%constant int QUI_M_FORM_SHEET_FEED = 0x1L; +%constant int QUI_M_FORM_TRUNCATE = 0x2L; +%constant int QUI_M_FORM_WRAP = 0x4L; +%constant int QUI_S_FORM_FLAGS = 4; +%constant int QUI_M_JOB_CPU_LIMIT = 0x1L; +%constant int QUI_M_JOB_FILE_BURST = 0x2L; +%constant int QUI_M_JOB_FILE_BURST_ONE = 0x4L; +%constant int QUI_M_JOB_FILE_BURST_EXP = 0x8L; +%constant int QUI_M_JOB_FILE_FLAG = 0x10L; +%constant int QUI_M_JOB_FILE_FLAG_ONE = 0x20L; +%constant int QUI_M_JOB_FILE_FLAG_EXP = 0x40L; +%constant int QUI_M_JOB_FILE_TRAILER = 0x80L; +%constant int QUI_M_JOB_FILE_TRAILER_ONE = 0x100L; +%constant int QUI_M_JOB_FILE_TRAILER_EXP = 0x200L; +%constant int QUI_M_JOB_LOG_DELETE = 0x400L; +%constant int QUI_M_JOB_LOG_NULL = 0x800L; +%constant int QUI_M_JOB_LOG_SPOOL = 0x1000L; +%constant int QUI_M_JOB_LOWERCASE = 0x2000L; +%constant int QUI_M_JOB_NOTIFY = 0x4000L; +%constant int QUI_M_JOB_RESTART = 0x8000L; +%constant int QUI_M_JOB_WSDEFAULT = 0x10000L; +%constant int QUI_M_JOB_WSEXTENT = 0x20000L; +%constant int QUI_M_JOB_WSQUOTA = 0x40000L; +%constant int QUI_M_JOB_FILE_PAGINATE = 0x80000L; +%constant int QUI_M_JOB_FILE_PAGINATE_EXP = 0x100000L; +%constant int QUI_M_JOB_RETENTION = 0x200000L; +%constant int QUI_M_JOB_ERROR_RETENTION = 0x400000L; +%constant int QUI_M_JOB_RAD = 0x800000L; +%constant int QUI_S_JOB_FLAGS = 4; +%constant int QUI_M_JOB_ABORTING = 0x1L; +%constant int QUI_M_JOB_EXECUTING = 0x2L; +%constant int QUI_M_JOB_HOLDING = 0x4L; +%constant int QUI_M_JOB_INACCESSIBLE = 0x8L; +%constant int QUI_M_JOB_REFUSED = 0x10L; +%constant int QUI_M_JOB_REQUEUE = 0x20L; +%constant int QUI_M_JOB_RESTARTING = 0x40L; +%constant int QUI_M_JOB_RETAINED = 0x80L; +%constant int QUI_M_JOB_STARTING = 0x100L; +%constant int QUI_M_JOB_TIMED_RELEASE = 0x200L; +%constant int QUI_M_JOB_SUSPENDED = 0x400L; +%constant int QUI_M_JOB_PENDING = 0x800L; +%constant int QUI_M_JOB_UNDEFINED = 0x1000L; +%constant int QUI_M_JOB_STALLED = 0x2000L; +%constant int QUI_M_JOB_INCOMPLETE = 0x4000L; +%constant int QUI_M_JOB_COMPLETING = 0x8000L; +%constant int QUI_S_JOB_STATUS = 4; +%constant int QUI_V_JOB_TIMED = 9; +%constant int QUI_M_JOB_TIMED = 512; +%constant int QUI_M_PEND_CHAR_MISMATCH = 0x1L; +%constant int QUI_M_PEND_JOB_SIZE_MAX = 0x2L; +%constant int QUI_M_PEND_JOB_SIZE_MIN = 0x4L; +%constant int QUI_M_PEND_LOWERCASE_MISMATCH = 0x8L; +%constant int QUI_M_PEND_NO_ACCESS = 0x10L; +%constant int QUI_M_PEND_QUEUE_BUSY = 0x20L; +%constant int QUI_M_PEND_QUEUE_STATE = 0x40L; +%constant int QUI_M_PEND_STOCK_MISMATCH = 0x80L; +%constant int QUI_S_PENDING_JOB_REASON = 4; +%constant int QUI_M_QUEUE_BATCH = 0x1L; +%constant int QUI_M_QUEUE_CPU_DEFAULT = 0x2L; +%constant int QUI_M_QUEUE_CPU_LIMIT = 0x4L; +%constant int QUI_M_QUEUE_FILE_BURST = 0x8L; +%constant int QUI_M_QUEUE_FILE_BURST_ONE = 0x10L; +%constant int QUI_M_QUEUE_FILE_FLAG = 0x20L; +%constant int QUI_M_QUEUE_FILE_FLAG_ONE = 0x40L; +%constant int QUI_M_QUEUE_FILE_TRAILER = 0x80L; +%constant int QUI_M_QUEUE_FILE_TRAILER_ONE = 0x100L; +%constant int QUI_M_QUEUE_GENERIC = 0x200L; +%constant int QUI_M_QUEUE_GENERIC_SELECTION = 0x400L; +%constant int QUI_M_QUEUE_JOB_BURST = 0x800L; +%constant int QUI_M_QUEUE_JOB_FLAG = 0x1000L; +%constant int QUI_M_QUEUE_JOB_SIZE_SCHED = 0x2000L; +%constant int QUI_M_QUEUE_JOB_TRAILER = 0x4000L; +%constant int QUI_M_QUEUE_RETAIN_ALL = 0x8000L; +%constant int QUI_M_QUEUE_RETAIN_ERROR = 0x10000L; +%constant int QUI_M_QUEUE_SWAP = 0x20000L; +%constant int QUI_M_QUEUE_TERMINAL = 0x40000L; +%constant int QUI_M_QUEUE_WSDEFAULT = 0x80000L; +%constant int QUI_M_QUEUE_WSEXTENT = 0x100000L; +%constant int QUI_M_QUEUE_WSQUOTA = 0x200000L; +%constant int QUI_M_QUEUE_FILE_PAGINATE = 0x400000L; +%constant int QUI_M_QUEUE_RECORD_BLOCKING = 0x800000L; +%constant int QUI_M_QUEUE_PRINTER = 0x1000000L; +%constant int QUI_M_QUEUE_ACL_SPECIFIED = 0x2000000L; +%constant int QUI_M_QUEUE_NOTIFY_ON_INTERRUPT = 0x4000000L; +%constant int QUI_M_QUEUE_CHECKPOINT_FREQ = 0x8000000L; +%constant int QUI_M_QUEUE_AUTOSTART = 0x10000000L; +%constant int QUI_M_SECURITY_INACCESSIBLE = 0x20000000L; +%constant int QUI_M_QUEUE_NO_INITIAL_FF = 0x40000000L; +%constant int QUI_M_QUEUE_RAD = 0x80000000L; +%constant int QUI_S_QUEUE_FLAGS = 4; +%constant int QUI_M_QUEUE_ALIGNING = 0x1L; +%constant int QUI_M_QUEUE_IDLE = 0x2L; +%constant int QUI_M_QUEUE_LOWERCASE = 0x4L; +%constant int QUI_M_QUEUE_OPERATOR_REQUEST = 0x8L; +%constant int QUI_M_QUEUE_PAUSED = 0x10L; +%constant int QUI_M_QUEUE_PAUSING = 0x20L; +%constant int QUI_M_QUEUE_REMOTE = 0x40L; +%constant int QUI_M_QUEUE_RESETTING = 0x80L; +%constant int QUI_M_QUEUE_RESUMING = 0x100L; +%constant int QUI_M_QUEUE_SERVER = 0x200L; +%constant int QUI_M_QUEUE_STALLED = 0x400L; +%constant int QUI_M_QUEUE_STARTING = 0x800L; +%constant int QUI_M_QUEUE_STOPPED = 0x1000L; +%constant int QUI_M_QUEUE_STOPPING = 0x2000L; +%constant int QUI_M_QUEUE_UNAVAILABLE = 0x4000L; +%constant int QUI_M_QUEUE_CLOSED = 0x8000L; +%constant int QUI_M_QUEUE_BUSY = 0x10000L; +%constant int QUI_M_QUEUE_UNDEFINED = 0x20000L; +%constant int QUI_M_QUEUE_AVAILABLE = 0x40000L; +%constant int QUI_M_QUEUE_DISABLED = 0x80000L; +%constant int QUI_M_QUEUE_AUTOSTART_INACTIVE = 0x100000L; +%constant int QUI_M_QUEUE_STOP_PENDING = 0x200000L; +%constant int QUI_S_QUEUE_STATUS = 4; +%constant int QUI_M_SEARCH_ALL_JOBS = 0x1L; +%constant int QUI_M_SEARCH_WILDCARD = 0x2L; +%constant int QUI_M_SEARCH_BATCH = 0x4L; +%constant int QUI_M_SEARCH_SYMBIONT = 0x8L; +%constant int QUI_M_SEARCH_THIS_JOB = 0x10L; +%constant int QUI_M_SEARCH_PRINTER = 0x20L; +%constant int QUI_M_SEARCH_SERVER = 0x40L; +%constant int QUI_M_SEARCH_TERMINAL = 0x80L; +%constant int QUI_M_SEARCH_GENERIC = 0x100L; +%constant int QUI_M_SEARCH_GENERIC_TARGET = 0x200L; +%constant int QUI_M_SEARCH_PENDING_JOBS = 0x400L; +%constant int QUI_M_SEARCH_EXECUTING_JOBS = 0x800L; +%constant int QUI_M_SEARCH_TIMED_RELEASE_JOBS = 0x1000L; +%constant int QUI_M_SEARCH_HOLDING_JOBS = 0x2000L; +%constant int QUI_M_SEARCH_RETAINED_JOBS = 0x4000L; +%constant int QUI_M_SEARCH_FREEZE_CONTEXT = 0x8000L; +%constant int QUI_M_SEARCH_OPEN_JOBS = 0x10000L; +%constant int QUI_M_SEARCH_RESERVED_BIT1 = 0x20000L; +%constant int QUI_M_SEARCH_RESERVED_BIT2 = 0x40000L; +%constant int QUI_S_SEARCH_FLAGS = 4; +%constant int QUI_M_SYM_NOTIFIES = 0x1L; +%constant int QUI_M_SYM_REQUESTS_OPER = 0x2L; +%constant int QUI_M_SYM_COPIES_FILE = 0x4L; +%constant int QUI_M_SYM_COPIES_JOB = 0x8L; +%constant int QUI_M_SYM_ACCEPTS_ALL_FORMS = 0x10L; +%constant int QUI_M_SYM_NO_JOB_CHECKPOINT = 0x20L; +%constant int QUI_S_SYMBIONT_FLAGS = 4; +%constant int QUI_M_MANAGER_START_PENDING = 0x1L; +%constant int QUI_M_MANAGER_STARTING = 0x2L; +%constant int QUI_M_MANAGER_RUNNING = 0x4L; +%constant int QUI_M_MANAGER_FAILOVER = 0x8L; +%constant int QUI_M_MANAGER_STOPPING = 0x10L; +%constant int QUI_M_MANAGER_STOPPED = 0x20L; +%constant int QUI_S_MANAGER_STATUS = 4; diff --git a/Modules/vms/rabdef/rabdef.i b/Modules/vms/rabdef/rabdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcmFiZGVmL3JhYmRlZi5p --- /dev/null +++ b/Modules/vms/rabdef/rabdef.i @@ -0,0 +1,128 @@ +%module rabdef + +%constant int RAB_C_BID = 1; +%constant int RAB_M_PPF_RAT = 0x3FC0L; +%constant int RAB_M_PPF_IND = 0x4000L; +%constant int RAB_M_PPISI = 0x8000L; +%constant int RAB_M_ASY = 0x1L; +%constant int RAB_M_TPT = 0x2L; +%constant int RAB_M_REA = 0x4L; +%constant int RAB_M_RRL = 0x8L; +%constant int RAB_M_UIF = 0x10L; +%constant int RAB_M_MAS = 0x20L; +%constant int RAB_M_FDL = 0x40L; +%constant int RAB_M_REV = 0x80L; +%constant int RAB_M_EOF = 0x100L; +%constant int RAB_M_RAH = 0x200L; +%constant int RAB_M_WBH = 0x400L; +%constant int RAB_M_BIO = 0x800L; +%constant int RAB_M_CDK = 0x1000L; +%constant int RAB_M_LOA = 0x2000L; +%constant int RAB_M_LIM = 0x4000L; +%constant int RAB_M_SYNCSTS = 0x8000L; +%constant int RAB_M_LOC = 0x10000L; +%constant int RAB_M_WAT = 0x20000L; +%constant int RAB_M_ULK = 0x40000L; +%constant int RAB_M_RLK = 0x80000L; +%constant int RAB_M_NLK = 0x100000L; +%constant int RAB_M_KGE = 0x200000L; +%constant int RAB_M_KGT = 0x400000L; +%constant int RAB_M_NXR = 0x800000L; +%constant int RAB_M_RNE = 0x1000000L; +%constant int RAB_M_TMO = 0x2000000L; +%constant int RAB_M_CVT = 0x4000000L; +%constant int RAB_M_RNF = 0x8000000L; +%constant int RAB_M_ETO = 0x10000000L; +%constant int RAB_M_PTA = 0x20000000L; +%constant int RAB_M_PMT = 0x40000000L; +%constant int RAB_M_CCO = 0x80000000L; +%constant int RAB_M_EQNXT = 0x200000L; +%constant int RAB_M_NXT = 0x400000L; +%constant int RAB_M_NQL = 0x1L; +%constant int RAB_M_NODLCKWT = 0x2L; +%constant int RAB_M_NODLCKBLK = 0x4L; +%constant int RAB_C_SEQ = 0; +%constant int RAB_C_KEY = 1; +%constant int RAB_C_RFA = 2; +%constant int RAB_C_STM = 3; +%constant int RAB_C_MAXRAC = 2; +%constant int RAB_S_RABDEF = 68; +%constant int RAB_S_PPF_RAT = 8; +%constant int RAB_S_RFA = 6; +%constant int RAB_K_BLN = 68; +%constant int RAB_C_BLN = 68; +%constant int RAB64_C_BID = 1; +%constant int RAB64_M_PPF_RAT = 0x3FC0L; +%constant int RAB64_M_PPF_IND = 0x4000L; +%constant int RAB64_M_PPISI = 0x8000L; +%constant int RAB64_M_ASY = 0x1L; +%constant int RAB64_M_TPT = 0x2L; +%constant int RAB64_M_REA = 0x4L; +%constant int RAB64_M_RRL = 0x8L; +%constant int RAB64_M_UIF = 0x10L; +%constant int RAB64_M_MAS = 0x20L; +%constant int RAB64_M_FDL = 0x40L; +%constant int RAB64_M_REV = 0x80L; +%constant int RAB64_M_EOF = 0x100L; +%constant int RAB64_M_RAH = 0x200L; +%constant int RAB64_M_WBH = 0x400L; +%constant int RAB64_M_BIO = 0x800L; +%constant int RAB64_M_CDK = 0x1000L; +%constant int RAB64_M_LOA = 0x2000L; +%constant int RAB64_M_LIM = 0x4000L; +%constant int RAB64_M_SYNCSTS = 0x8000L; +%constant int RAB64_M_LOC = 0x10000L; +%constant int RAB64_M_WAT = 0x20000L; +%constant int RAB64_M_ULK = 0x40000L; +%constant int RAB64_M_RLK = 0x80000L; +%constant int RAB64_M_NLK = 0x100000L; +%constant int RAB64_M_KGE = 0x200000L; +%constant int RAB64_M_KGT = 0x400000L; +%constant int RAB64_M_NXR = 0x800000L; +%constant int RAB64_M_RNE = 0x1000000L; +%constant int RAB64_M_TMO = 0x2000000L; +%constant int RAB64_M_CVT = 0x4000000L; +%constant int RAB64_M_RNF = 0x8000000L; +%constant int RAB64_M_ETO = 0x10000000L; +%constant int RAB64_M_PTA = 0x20000000L; +%constant int RAB64_M_PMT = 0x40000000L; +%constant int RAB64_M_CCO = 0x80000000L; +%constant int RAB64_M_EQNXT = 0x200000L; +%constant int RAB64_M_NXT = 0x400000L; +%constant int RAB64_M_NQL = 0x1L; +%constant int RAB64_M_NODLCKWT = 0x2L; +%constant int RAB64_M_NODLCKBLK = 0x4L; +%constant int RAB64_C_SEQ = 0; +%constant int RAB64_C_KEY = 1; +%constant int RAB64_C_RFA = 2; +%constant int RAB64_C_STM = 3; +%constant int RAB64_C_MAXRAC = 2; +%constant int RAB64_M_RESERVED29 = 0x20000000L; +%constant int RAB64_M_RESERVED30 = 0x40000000L; +%constant int RAB64_M_RESERVED31 = 0x80000000L; +%constant int RAB_M_RESERVED29 = 536870912; +%constant int RAB_M_RESERVED30 = 1073741824; +%constant int RAB_M_RESERVED31 = -2147483648; +%constant int RAB64_S_RAB64DEF = 144; +%constant int RAB64_S_PPF_RAT = 8; +%constant int RAB64_S_RFA = 6; +%constant int RAB64_S_UBF = 8; +%constant int RAB_S_UBF = 8; +%constant int RAB64_S_USZ = 8; +%constant int RAB_S_USZ = 8; +%constant int RAB64_S_RBF = 8; +%constant int RAB_S_RBF = 8; +%constant int RAB64_S_RSZ = 8; +%constant int RAB_S_RSZ = 8; +%constant int RAB64_S_KBF = 8; +%constant int RAB_S_KBF = 8; +%constant int RAB64_S_RHB = 8; +%constant int RAB_S_RHB = 8; +%constant int RAB64_S_CTX = 8; +%constant int RAB_S_CTX = 8; +%constant int RAB64_K_BLN64 = 144; +%constant int RAB64_C_BLN64 = 144; +%constant int RAB_K_BLN64 = 144; +%constant int RAB_C_BLN64 = 144; +%constant int RAB_K_MAXBLN = 144; +%constant int RAB_C_MAXBLN = 144; diff --git a/Modules/vms/regdef/regdef.i b/Modules/vms/regdef/regdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcmVnZGVmL3JlZ2RlZi5p --- /dev/null +++ b/Modules/vms/regdef/regdef.i @@ -0,0 +1,193 @@ +%module regdef + +%constant int REG_FC_CLOSE_KEY = 1; +%constant int REG_FC_CREATE_KEY = 2; +%constant int REG_FC_DELETE_KEY = 3; +%constant int REG_FC_DELETE_VALUE = 4; +%constant int REG_FC_ENUM_KEY = 5; +%constant int REG_FC_ENUM_VALUE = 6; +%constant int REG_FC_FLUSH_KEY = 7; +%constant int REG_FC_LOAD_KEY = 8; +%constant int REG_FC_MODIFY_KEY = 9; +%constant int REG_FC_MODIFY_TREE_KEY = 10; +%constant int REG_FC_NOTIFY_CHANGE_KEY_VALUE = 11; +%constant int REG_FC_OPEN_KEY = 12; +%constant int REG_FC_QUERY_KEY = 13; +%constant int REG_FC_QUERY_VALUE = 14; +%constant int REG_FC_REPLACE_KEY = 15; +%constant int REG_FC_RESTORE_KEY = 16; +%constant int REG_FC_SAVE_KEY = 17; +%constant int REG_FC_SEARCH_TREE_DATA = 18; +%constant int REG_FC_SEARCH_TREE_KEY = 19; +%constant int REG_FC_SEARCH_TREE_VALUE = 20; +%constant int REG_FC_SET_VALUE = 21; +%constant int REG_FC_UNLOAD_KEY = 22; +%constant int REG_FC_GET_KEY_SECURITY = 23; +%constant int REG_FC_SET_KEY_SECURITY = 24; +%constant int REG_FC_GET_PERFORMANCE = 25; +%constant int REG_FC_GET_FILE_INFO = 26; +%constant int REG_FC_GET_FILE_UPDATE = 27; +%constant int REG_FC_CREATE_DATABASE = 28; +%constant int REG_FC_MAKE_SNAPSHOT = 29; +%constant int REG_FC_ARCHIVE = 30; +%constant int REG_FC_LAST = 31; +%constant int REG_M_UNICODE_STRING = 8192; +%constant int REG__TERMINATOR = 0; +%constant int REG__SEPARATOR = 1; +%constant int REG__SECPROFILE = 514; +%constant int REG__REQUEST = 515; +%constant int REG__ACMODE = 1284; +%constant int REG__ACTIONCODE = 1285; +%constant int REG__CACHEACTION = 1286; +%constant int REG__CANCELNOTIFICATION = 519; +%constant int REG__CLASSNAME = 264; +%constant int REG__CLASSNAMEMAX = 1289; +%constant int REG__CLASSNAMESIZE = 1290; +%constant int REG__DATAFLAGS = 1547; +%constant int REG__DATATYPE = 1292; +%constant int REG__DISPOSITION = 1293; +%constant int REG__FILEINFODATA = 526; +%constant int REG__FILELOAD = 1807; +%constant int REG__FILESAVE = 1808; +%constant int REG__FILEUPDATEDATA = 529; +%constant int REG__FLAGOPCODE = 1298; +%constant int REG__FLAGSUBKEY = 1299; +%constant int REG__KEYID = 1300; +%constant int REG__KEYID_INTERNAL = 533; +%constant int REG__KEYFLAGS = 1302; +%constant int REG__KEYPATH = 279; +%constant int REG__KEYRESULT = 1304; +%constant int REG__KEYRESULT_INTERNAL = 537; +%constant int REG__LASTWRITE = 1562; +%constant int REG__LINKCOUNT = 1307; +%constant int REG__LINKPATH = 284; +%constant int REG__LINKPATHSIZE = 1309; +%constant int REG__LINKTYPE = 1310; +%constant int REG__LOCK = 1311; +%constant int REG__NEWNAME = 288; +%constant int REG__NOTIFYFILTER = 1313; +%constant int REG__PATHBUFFER = 546; +%constant int REG__PERFORMANCEDATA = 547; +%constant int REG__REQLENGTH = 1316; +%constant int REG__RETURNSTATUS = 1317; +%constant int REG__SECACCESS = 1318; +%constant int REG__SECONDSTATUS = 1319; +%constant int REG__SECURITYPOLICY = 1320; +%constant int REG__SEGMENTNUMBER = 1321; +%constant int REG__SNAPSHOTDESTINATION = 1834; +%constant int REG__SNAPSHOTVERSIONS = 1323; +%constant int REG__SUBKEYINDEX = 1324; +%constant int REG__SUBKEYNAME = 301; +%constant int REG__SUBKEYNAMEMAX = 1326; +%constant int REG__SUBKEYNAMESIZE = 1327; +%constant int REG__SUBKEYSNUMBER = 1328; +%constant int REG__SECURITYINFORMATION = 1329; +%constant int REG__SECURITYDESCRIPTOR = 562; +%constant int REG__VALUEINDEX = 1331; +%constant int REG__VALUEDATA = 564; +%constant int REG__VALUEDATAMAX = 1333; +%constant int REG__VALUEDATASIZE = 1334; +%constant int REG__VALUENAME = 311; +%constant int REG__VALUENAMEMAX = 1336; +%constant int REG__VALUENAMESIZE = 1337; +%constant int REG__VALUENUMBER = 1338; +%constant int REG__VOLATILE = 1339; +%constant int REG__WILDASTERISK = 316; +%constant int REG__WILDPERCENT = 317; +%constant int REG__WILDPERIODS = 318; +%constant int REG__INSTRUMENTFILE = 575; +%constant int REG__INSTRUMENTKEY = 576; +%constant int REG__INSTRUMENTDATA = 577; +%constant int REG__FILENAME = 1858; +%constant int REG__COUNTER = 1347; +%constant int REG__SECDESCRIPTORLEN = 1348; +%constant int REG__SECDESCLEN_INTERNAL = 1349; +%constant int REG__VALUEDATASIZE_INTERNAL = 1350; +%constant int REG__SAMDESIRED = 1351; +%constant int REG__DATABASE_VERSION = 1352; +%constant int REG__LAST = 73; +%constant int REG_K_NONE = 0; +%constant int REG_K_CLUSTER = 1; +%constant int REG_K_SYSTEM = 2; +%constant int REG_K_PROCESS = 3; +%constant int REG_K_IMAGE = 4; +%constant int REG_K_WRITEBEHIND = 5; +%constant int REG_K_WRITETHRU = 6; +%constant int REG_K_CREATENEWKEY = 7; +%constant int REG_K_OPENEXISTINGKEY = 8; +%constant int REG_K_POLICY_OPENVMS = 9; +%constant int REG_K_POLICY_NT_40 = 10; +%constant int REG_K_INTERNAL = 11; +%constant int REG_K_HARDLINK = 12; +%constant int REG_K_SYMBOLICLINK = 13; +%constant int REG_K_BINARY = 14; +%constant int REG_K_DWORD = 15; +%constant int REG_K_DWLITTLEENDIAN = 16; +%constant int REG_K_DWBIGENDIAN = 17; +%constant int REG_K_EXPAND_SZ = 18; +%constant int REG_K_LINK = 19; +%constant int REG_K_MULTI_SZ = 20; +%constant int REG_K_QWORD = 21; +%constant int REG_K_RESOURCELIST = 22; +%constant int REG_K_SZ = 23; +%constant int REG_K_START_FILE = 24; +%constant int REG_K_START_PERF = 25; +%constant int REG_K_STOP_FILE = 26; +%constant int REG_K_STOP_PERF = 27; +%constant int REG_K_ZERO_FILE = 28; +%constant int REG_K_ZERO_PERF = 29; +%constant int REG_K_SHOW_CTR_FILE = 30; +%constant int REG_K_SHOW_CTR_PERF = 31; +%constant int REG_K_SHOW_FILE = 32; +%constant int REG_K_NORMAL = 33; +%constant int REG_K_LARGE = 34; +%constant int REG_K_EXACTMATCH = 35; +%constant int REG_K_INCLUDE = 36; +%constant int REG_K_EXCLUDE = 37; +%constant int REG_K_ANY = 38; +%constant int REG_K_NOTANY = 39; +%constant int REG_M_FC = 0x3FFL; +%constant int REG_M_CASE_SENSITIVE = 0x400L; +%constant int REG_M_DISABLE_WILDCARDS = 0x800L; +%constant int REG_M_IGNORE_LINKS = 0x1000L; +%constant int REG_M_NOW = 0x2000L; +%constant int REG_M_NOWAIT = 0x4000L; +%constant int REG_M_UNICODE_VALUES = 0x8000L; +%constant int REG_M_BYPASS = 0x10000L; +%constant int REG_M_INTERNAL = 0x20000L; +%constant int REG_S_REGDEF = 3; +%constant int REG_S_FC = 10; +%constant int REG_M_CHANGENAME = 0x1L; +%constant int REG_M_CHANGEATTRIBUTES = 0x2L; +%constant int REG_M_CHANGELASTSET = 0x4L; +%constant int REG_M_CHANGESECURITY = 0x8L; +%constant int REG_S_KEYCHANGEDEF = 1; +%constant int REG_M_ALLACCESS = 0x1L; +%constant int REG_M_CREATELINK = 0x2L; +%constant int REG_M_CREATESUBKEY = 0x4L; +%constant int REG_M_ENUMSUBKEYS = 0x8L; +%constant int REG_M_EXECUTE = 0x10L; +%constant int REG_M_NOTIFY = 0x20L; +%constant int REG_M_QUERYVALUE = 0x40L; +%constant int REG_M_READ = 0x80L; +%constant int REG_M_SETVALUE = 0x100L; +%constant int REG_M_WRITE = 0x200L; +%constant int REG_M_DELETEACCESS = 0x400L; +%constant int REG_M_READCONTROL = 0x800L; +%constant int REG_M_WRITEDAC = 0x1000L; +%constant int REG_M_WRITEOWNER = 0x2000L; +%constant int REG_M_SYNCHRONIZE = 0x4000L; +%constant int REG_M_ACCESSSYSTEMSECURITY = 0x8000L; +%constant int REG_M_MAXIMUMALLOWED = 0x10000L; +%constant int REG_M_GENERICALL = 0x20000L; +%constant int REG_M_GENERICEXECUTE = 0x40000L; +%constant int REG_M_GENERICWRITE = 0x80000L; +%constant int REG_M_GENERICREAD = 0x100000L; +%constant int REG_S_SECACCESSDEF = 3; +%constant int REG__HKEY_NONE = 0; +%constant int REG__HKEY_CLASSES_ROOT = -2147483648; +%constant int REG__HKEY_CURRENT_USER = -2147483647; +%constant int REG__HKEY_LOCAL_MACHINE = -2147483646; +%constant int REG__HKEY_USERS = -2147483645; +%constant int REG__HKEY_PERFORMANCE_DATA = -2147483644; +%constant int REG__HKEY_LAST_ROOT_KEY = 5; diff --git a/Modules/vms/rmidef/rmidef.i b/Modules/vms/rmidef/rmidef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcm1pZGVmL3JtaWRlZi5p --- /dev/null +++ b/Modules/vms/rmidef/rmidef.i @@ -0,0 +1,1190 @@ +%module rmidef + +%constant int RMI_C_EXETYPE = 1; +%constant int RMI_C_EWSTYPE = 2; +%constant int RMI_C_MONTYPE = 3; +%constant int RMI_C_RMSTYPE = 4; +%constant int RMI_C_EX2TYPE = 5; +%constant int RMI_C_LISTEND = 0; +%constant int RMI__initial = -1; +%constant int RMI__data_collection = -2; +%constant int RMI__sysinfo = -3; +%constant int RMI__version_number = -4; +%constant int RMI__rms_file = -5; +%constant int RMI__rms_gs = -6; +%constant int RMI__last_type = -7; +%constant int RMI__server_version = 5; +%constant int RMI_S_rmi_pms_flags = 4; +%constant int RMI_s_flags = 4; +%constant int RMI_s_filler1 = 7; +%constant int RMI_s_filler2 = 23; +%constant int RMI_k_max_packet = 500; +%constant int RMI_k_pool_ovf = -2147483647; +%constant int RMI__MODES = 4096; +%constant int RMI__INTERRUPT = 4097; +%constant int RMI__KERNEL = 4098; +%constant int RMI__EXEC = 4099; +%constant int RMI__SUPER = 4100; +%constant int RMI__USER = 4101; +%constant int RMI__COMPAT = 4102; +%constant int RMI__INTERRUPT_BUSY = 4103; +%constant int RMI__KERNEL_BUSY = 4104; +%constant int RMI__IDLE = 4105; +%constant int RMI__CPUBUSY = 4106; +%constant int RMI__COLPG = 4107; +%constant int RMI__MWAIT = 4108; +%constant int RMI__CEF = 4109; +%constant int RMI__PFW = 4110; +%constant int RMI__LEF = 4111; +%constant int RMI__LEFO = 4112; +%constant int RMI__HIB = 4113; +%constant int RMI__HIBO = 4114; +%constant int RMI__SUSP = 4115; +%constant int RMI__SUSPO = 4116; +%constant int RMI__FPG = 4117; +%constant int RMI__COM = 4118; +%constant int RMI__COMO = 4119; +%constant int RMI__CUR = 4120; +%constant int RMI__OTHSTAT = 4121; +%constant int RMI__PROCS = 4122; +%constant int RMI__PROC = 4123; +%constant int RMI__FRLIST = 4124; +%constant int RMI__MODLIST = 4125; +%constant int RMI__FAULTS = 4126; +%constant int RMI__PREADS = 4127; +%constant int RMI__PWRITES = 4128; +%constant int RMI__PWRITIO = 4129; +%constant int RMI__PREADIO = 4130; +%constant int RMI__GVALFLTS = 4131; +%constant int RMI__WRTINPROG = 4132; +%constant int RMI__FREFLTS = 4133; +%constant int RMI__MFYFLTS = 4134; +%constant int RMI__DZROFLTS = 4135; +%constant int RMI__SYSFAULTS = 4136; +%constant int RMI__LRPCNT = 4137; +%constant int RMI__LRPINUSE = 4138; +%constant int RMI__IRPCNT = 4139; +%constant int RMI__IRPINUSE = 4140; +%constant int RMI__SRPCNT = 4141; +%constant int RMI__SRPINUSE = 4142; +%constant int RMI__HOLECNT = 4143; +%constant int RMI__BIGHOLE = 4144; +%constant int RMI__SMALLHOLE = 4145; +%constant int RMI__HOLESUM = 4146; +%constant int RMI__DYNINUSE = 4147; +%constant int RMI__SMALLCNT = 4148; +%constant int RMI__ISWPCNT = 4149; +%constant int RMI__DIRIO = 4150; +%constant int RMI__BUFIO = 4151; +%constant int RMI__MBREADS = 4152; +%constant int RMI__MBWRITES = 4153; +%constant int RMI__LOGNAM = 4154; +%constant int RMI__FCPCALLS = 4155; +%constant int RMI__FCPREAD = 4156; +%constant int RMI__FCPWRITE = 4157; +%constant int RMI__FCPCACHE = 4158; +%constant int RMI__FCPCPU = 4159; +%constant int RMI__FCPHIT = 4160; +%constant int RMI__FCPSPLIT = 4161; +%constant int RMI__FCPFAULT = 4162; +%constant int RMI__ENQNEW = 4163; +%constant int RMI__ENQCVT = 4164; +%constant int RMI__DEQ = 4165; +%constant int RMI__BLKAST = 4166; +%constant int RMI__ENQWAIT = 4167; +%constant int RMI__ENQNOTQD = 4168; +%constant int RMI__DLCKSRCH = 4169; +%constant int RMI__DLCKFND = 4170; +%constant int RMI__NUMLOCKS = 4171; +%constant int RMI__NUMRES = 4172; +%constant int RMI__ARRLOCPK = 4173; +%constant int RMI__DEPLOCPK = 4174; +%constant int RMI__ARRTRAPK = 4175; +%constant int RMI__TRCNGLOS = 4176; +%constant int RMI__RCVBUFFL = 4177; +%constant int RMI__RESERVED1 = 4178; +%constant int RMI__RESERVED2 = 4179; +%constant int RMI__RESERVED3 = 4180; +%constant int RMI__RESERVED4 = 4181; +%constant int RMI__RESERVED5 = 4182; +%constant int RMI__RESERVED6 = 4183; +%constant int RMI__RESERVED7 = 4184; +%constant int RMI__RESERVED8 = 4185; +%constant int RMI__RESERVED9 = 4186; +%constant int RMI__RESERVED10 = 4187; +%constant int RMI__RESERVED11 = 4188; +%constant int RMI__RESERVED12 = 4189; +%constant int RMI__RESERVED13 = 4190; +%constant int RMI__RESERVED14 = 4191; +%constant int RMI__RESERVED15 = 4192; +%constant int RMI__RESERVED16 = 4193; +%constant int RMI__RESERVED17 = 4194; +%constant int RMI__RESERVED18 = 4195; +%constant int RMI__FID_TRIES = 4196; +%constant int RMI__FILHDR_TRIES = 4197; +%constant int RMI__DIRFCB_TRIES = 4198; +%constant int RMI__DIRDATA_TRIES = 4199; +%constant int RMI__EXT_TRIES = 4200; +%constant int RMI__QUO_TRIES = 4201; +%constant int RMI__STORAGMAP_TRIES = 4202; +%constant int RMI__DISKS = 4203; +%constant int RMI__TOTAL_LOCKS = 4204; +%constant int RMI__ENQNEWLOC = 4205; +%constant int RMI__ENQNEWIN = 4206; +%constant int RMI__ENQNEWOUT = 4207; +%constant int RMI__ENQCVTLOC = 4208; +%constant int RMI__ENQCVTIN = 4209; +%constant int RMI__ENQCVTOUT = 4210; +%constant int RMI__DEQLOC = 4211; +%constant int RMI__DEQIN = 4212; +%constant int RMI__DEQOUT = 4213; +%constant int RMI__BLKLOC = 4214; +%constant int RMI__BLKIN = 4215; +%constant int RMI__BLKOUT = 4216; +%constant int RMI__DIRIN = 4217; +%constant int RMI__DIROUT = 4218; +%constant int RMI__DLCKMSGS = 4219; +%constant int RMI__SCS = 4220; +%constant int RMI__SYSTIME = 4221; +%constant int RMI__MSCP_REQUEST = 4222; +%constant int RMI__MSCP_READ = 4223; +%constant int RMI__MSCP_WRITE = 4224; +%constant int RMI__MSCP_FRAGMENT = 4225; +%constant int RMI__MSCP_SPLIT = 4226; +%constant int RMI__MSCP_BUFWAIT = 4227; +%constant int RMI__MSCP_SIZE1 = 4228; +%constant int RMI__MSCP_SIZE2 = 4229; +%constant int RMI__MSCP_SIZE3 = 4230; +%constant int RMI__MSCP_SIZE4 = 4231; +%constant int RMI__MSCP_SIZE5 = 4232; +%constant int RMI__MSCP_SIZE6 = 4233; +%constant int RMI__MSCP_SIZE7 = 4234; +%constant int RMI__MSCP_ALL = 4235; +%constant int RMI__DDTM_STARTS = 4236; +%constant int RMI__DDTM_PREPARES = 4237; +%constant int RMI__DDTM_ONE_PHASE = 4238; +%constant int RMI__DDTM_COMMITS = 4239; +%constant int RMI__DDTM_ABORTS = 4240; +%constant int RMI__DDTM_ENDS = 4241; +%constant int RMI__DDTM_BRANCHS = 4242; +%constant int RMI__DDTM_ADDS = 4243; +%constant int RMI__DDTM_BUCKETS1 = 4244; +%constant int RMI__DDTM_BUCKETS2 = 4245; +%constant int RMI__DDTM_BUCKETS3 = 4246; +%constant int RMI__DDTM_BUCKETS4 = 4247; +%constant int RMI__DDTM_BUCKETS5 = 4248; +%constant int RMI__DDTM_BUCKETS6 = 4249; +%constant int RMI__DDTM_ALL = 4250; +%constant int RMI__VECTORP = 4251; +%constant int RMI__VBYTE_READ = 4252; +%constant int RMI__VBYTE_WRITE = 4253; +%constant int RMI__VVBS_TRAN = 4254; +%constant int RMI__VRBS_TRAN = 4255; +%constant int RMI__VDIO_SEL = 4256; +%constant int RMI__VDIOMAP_ALLOC = 4257; +%constant int RMI__VRBS_AVAIL = 4258; +%constant int RMI__VSEL_FAIL = 4259; +%constant int RMI__VVBSM_HIT = 4260; +%constant int RMI__VVBSM_CACHE = 4261; +%constant int RMI__VFLUIDBAL = 4262; +%constant int RMI__VRECOPY = 4263; +%constant int RMI__VCPUTICKS = 4264; +%constant int RMI__MSCP_EVERYTHING = 4265; +%constant int RMI__TMSCP_EVERYTHING = 4266; +%constant int RMI__DDTM_TWOPHASE_ACKRCV = 4267; +%constant int RMI__DDTM_TWOPHASE_ACKSNT = 4268; +%constant int RMI__DDTM_TWOPHASE_CANRCV = 4269; +%constant int RMI__DDTM_TWOPHASE_CANSNT = 4270; +%constant int RMI__DDTM_TWOPHASE_RDYRCV = 4271; +%constant int RMI__DDTM_TWOPHASE_RDYSNT = 4272; +%constant int RMI__DDTM_TWOPHASE_REQRCV = 4273; +%constant int RMI__DDTM_TWOPHASE_REQSNT = 4274; +%constant int RMI__DDTM_TWOPHASE_COMMITS = 4275; +%constant int RMI__DDTM_DECLARES = 4276; +%constant int RMI__DDTM_JOINS = 4277; +%constant int RMI__DDTM_FORGETS = 4278; +%constant int RMI__DDTM_SEQNO = 4279; +%constant int RMI__DDTM_LOG_COMMITS = 4280; +%constant int RMI__DDTM_LOG_PREPARES = 4281; +%constant int RMI__DDTM_LOG_FORGETS = 4282; +%constant int RMI__DDTM_WRITES_STARTED = 4283; +%constant int RMI__DDTM_WRITES_FORKED = 4284; +%constant int RMI__DDTM_BAD_TYPECODE = 4285; +%constant int RMI__DDTM_BAD_LINKS = 4286; +%constant int RMI__DDTM_FOR_UNLINKS = 4287; +%constant int RMI__DDTM_VOL_UNLINKS = 4288; +%constant int RMI__DDTM_DISC_COMP = 4289; +%constant int RMI__DDTM_BAD_PARTS = 4290; +%constant int RMI__LCKMGR_CPU = 4291; +%constant int RMI__LCKMGR_PID = 4292; +%constant int RMI__LCKMGR_REQCNT = 4293; +%constant int RMI__LCKMGR_REQTIME = 4294; +%constant int RMI__LCKMGR_SPINCNT = 4295; +%constant int RMI__LCKMGR_SPINTIME = 4296; +%constant int RMI__LOCK_MAX = 4297; +%constant int RMI__LPZ_PAKSIZ = 4298; +%constant int RMI__LPZ_PAGCNT = 4299; +%constant int RMI__LPZ_MAXPAG = 4300; +%constant int RMI__LPZ_FREEPGCNT = 4301; +%constant int RMI__LPZ_HITS = 4302; +%constant int RMI__LPZ_MISSES = 4303; +%constant int RMI__LPZ_EXPCNT = 4304; +%constant int RMI__LPZ_ALLOCF = 4305; +%constant int RMI__LPZ_ALLOC2 = 4306; +%constant int RMI__LPZ_EMPTY = 4307; +%constant int RMI__RML_ACQUIRE = 4308; +%constant int RMI__RML_BETTER = 4309; +%constant int RMI__RML_MORE_ACT = 4310; +%constant int RMI__RML_MSGRCV = 4311; +%constant int RMI__RML_MSGSENT = 4312; +%constant int RMI__RML_NOQUOTA = 4313; +%constant int RMI__RML_NOTAKER = 4314; +%constant int RMI__RML_OPCNT = 4315; +%constant int RMI__RML_RBLDMSGRCV = 4316; +%constant int RMI__RML_RBLDMSGSENT = 4317; +%constant int RMI__RML_SINGLE = 4318; +%constant int RMI__RML_UNLOAD = 4319; +%constant int RMI__RESERVEDEXE1 = 4320; +%constant int RMI__RESERVEDEXE2 = 4321; +%constant int RMI__RESERVEDEXE3 = 4322; +%constant int RMI__RESERVEDEXE4 = 4323; +%constant int RMI__RESERVEDEXE5 = 4324; +%constant int RMI__RESERVEDEXE6 = 4325; +%constant int RMI__RESERVEDEXE7 = 4326; +%constant int RMI__RESERVEDEXE8 = 4327; +%constant int RMI__RESERVEDEXE9 = 4328; +%constant int RMI__RESERVEDEXE10 = 4329; +%constant int RMI__RESERVEDEXE11 = 4330; +%constant int RMI__RESERVEDEXE12 = 4331; +%constant int RMI__RESERVEDEXE13 = 4332; +%constant int RMI__RESERVEDEXE14 = 4333; +%constant int RMI__RESERVEDEXE15 = 4334; +%constant int RMI__RESERVEDEXE16 = 4335; +%constant int RMI__LASTEXE = 4336; +%constant int RMI__ACCESS = 8432; +%constant int RMI__ALLOC = 8433; +%constant int RMI__FCPCREATE = 8434; +%constant int RMI__VOLWAIT = 8435; +%constant int RMI__FCPTURN = 8436; +%constant int RMI__FCPERASE = 8437; +%constant int RMI__OPENS = 8438; +%constant int RMI__FIDHIT = 8439; +%constant int RMI__FIDMISS = 8440; +%constant int RMI__FILHDR_HIT = 8441; +%constant int RMI__DIRFCB_HIT = 8442; +%constant int RMI__DIRFCB_MISS = 8443; +%constant int RMI__DIRDATA_HIT = 8444; +%constant int RMI__EXTHIT = 8445; +%constant int RMI__EXTMISS = 8446; +%constant int RMI__QUOHIT = 8447; +%constant int RMI__QUOMISS = 8448; +%constant int RMI__STORAGMAP_HIT = 8449; +%constant int RMI__VOLLCK = 8450; +%constant int RMI__SYNCHLCK = 8451; +%constant int RMI__SYNCHWAIT = 8452; +%constant int RMI__ACCLCK = 8453; +%constant int RMI__XQPCACHEWAIT = 8454; +%constant int RMI__DIRDATA_MISS = 8455; +%constant int RMI__FILHDR_MISS = 8456; +%constant int RMI__STORAGMAP_MISS = 8457; +%constant int RMI__RESERVEDEWS1 = 8458; +%constant int RMI__RESERVEDEWS2 = 8459; +%constant int RMI__RESERVEDEWS3 = 8460; +%constant int RMI__RESERVEDEWS4 = 8461; +%constant int RMI__RESERVEDEWS5 = 8462; +%constant int RMI__RESERVEDEWS6 = 8463; +%constant int RMI__RESERVEDEWS7 = 8464; +%constant int RMI__RESERVEDEWS8 = 8465; +%constant int RMI__RESERVEDEWS9 = 8466; +%constant int RMI__RESERVEDEWS10 = 8467; +%constant int RMI__RESERVEDEWS11 = 8468; +%constant int RMI__RESERVEDEWS12 = 8469; +%constant int RMI__RESERVEDEWS13 = 8470; +%constant int RMI__RESERVEDEWS14 = 8471; +%constant int RMI__RESERVEDEWS15 = 8472; +%constant int RMI__RESERVEDEWS16 = 8473; +%constant int RMI__RESERVEDEWS17 = 8474; +%constant int RMI__RESERVEDEWS18 = 8475; +%constant int RMI__RESERVEDEWS19 = 8476; +%constant int RMI__RESERVEDEWS20 = 8477; +%constant int RMI__RESERVEDEWS21 = 8478; +%constant int RMI__RESERVEDEWS22 = 8479; +%constant int RMI__RESERVEDEWS23 = 8480; +%constant int RMI__RESERVEDEWS24 = 8481; +%constant int RMI__RESERVEDEWS25 = 8482; +%constant int RMI__RESERVEDEWS26 = 8483; +%constant int RMI__RESERVEDEWS27 = 8484; +%constant int RMI__RESERVEDEWS28 = 8485; +%constant int RMI__RESERVEDEWS29 = 8486; +%constant int RMI__RESERVEDEWS30 = 8487; +%constant int RMI__RESERVEDEWS31 = 8488; +%constant int RMI__RESERVEDEWS32 = 8489; +%constant int RMI__RESERVEDEWS33 = 8490; +%constant int RMI__RESERVEDEWS34 = 8491; +%constant int RMI__RESERVEDEWS35 = 8492; +%constant int RMI__RESERVEDEWS36 = 8493; +%constant int RMI__RESERVEDEWS37 = 8494; +%constant int RMI__RESERVEDEWS38 = 8495; +%constant int RMI__RESERVEDEWS39 = 8496; +%constant int RMI__RESERVEDEWS40 = 8497; +%constant int RMI__RESERVEDEWS41 = 8498; +%constant int RMI__RESERVEDEWS42 = 8499; +%constant int RMI__RESERVEDEWS43 = 8500; +%constant int RMI__RESERVEDEWS44 = 8501; +%constant int RMI__RESERVEDEWS45 = 8502; +%constant int RMI__RESERVEDEWS46 = 8503; +%constant int RMI__RESERVEDEWS47 = 8504; +%constant int RMI__RESERVEDEWS48 = 8505; +%constant int RMI__RESERVEDEWS49 = 8506; +%constant int RMI__RESERVEDEWS50 = 8507; +%constant int RMI__RESERVEDEWS51 = 8508; +%constant int RMI__RESERVEDEWS52 = 8509; +%constant int RMI__RESERVEDEWS53 = 8510; +%constant int RMI__RESERVEDEWS54 = 8511; +%constant int RMI__RESERVEDEWS55 = 8512; +%constant int RMI__RESERVEDEWS56 = 8513; +%constant int RMI__RESERVEDEWS57 = 8514; +%constant int RMI__RESERVEDEWS58 = 8515; +%constant int RMI__RESERVEDEWS59 = 8516; +%constant int RMI__RESERVEDEWS60 = 8517; +%constant int RMI__RESERVEDEWS61 = 8518; +%constant int RMI__RESERVEDEWS62 = 8519; +%constant int RMI__RESERVEDEWS63 = 8520; +%constant int RMI__RESERVEDEWS64 = 8521; +%constant int RMI__RESERVEDEWS65 = 8522; +%constant int RMI__RESERVEDEWS66 = 8523; +%constant int RMI__RESERVEDEWS67 = 8524; +%constant int RMI__RESERVEDEWS68 = 8525; +%constant int RMI__RESERVEDEWS69 = 8526; +%constant int RMI__RESERVEDEWS70 = 8527; +%constant int RMI__RESERVEDEWS71 = 8528; +%constant int RMI__RESERVEDEWS72 = 8529; +%constant int RMI__RESERVEDEWS73 = 8530; +%constant int RMI__RESERVEDEWS74 = 8531; +%constant int RMI__RESERVEDEWS75 = 8532; +%constant int RMI__RESERVEDEWS76 = 8533; +%constant int RMI__RESERVEDEWS77 = 8534; +%constant int RMI__RESERVEDEWS78 = 8535; +%constant int RMI__RESERVEDEWS79 = 8536; +%constant int RMI__RESERVEDEWS80 = 8537; +%constant int RMI__RESERVEDEWS81 = 8538; +%constant int RMI__RESERVEDEWS82 = 8539; +%constant int RMI__RESERVEDEWS83 = 8540; +%constant int RMI__RESERVEDEWS84 = 8541; +%constant int RMI__RESERVEDEWS85 = 8542; +%constant int RMI__RESERVEDEWS86 = 8543; +%constant int RMI__RESERVEDEWS87 = 8544; +%constant int RMI__RESERVEDEWS88 = 8545; +%constant int RMI__RESERVEDEWS89 = 8546; +%constant int RMI__RESERVEDEWS90 = 8547; +%constant int RMI__RESERVEDEWS91 = 8548; +%constant int RMI__RESERVEDEWS92 = 8549; +%constant int RMI__RESERVEDEWS93 = 8550; +%constant int RMI__RESERVEDEWS94 = 8551; +%constant int RMI__RESERVEDEWS95 = 8552; +%constant int RMI__RESERVEDEWS96 = 8553; +%constant int RMI__RESERVEDEWS97 = 8554; +%constant int RMI__LASTEWS = 8555; +%constant int RMI__FIDHITPCNT = 12651; +%constant int RMI__FILHDR_HITPCNT = 12652; +%constant int RMI__DIRFCB_HITPCNT = 12653; +%constant int RMI__DIRDATA_HITPCNT = 12654; +%constant int RMI__EXTHITPCNT = 12655; +%constant int RMI__QUOHITPCNT = 12656; +%constant int RMI__STORAGMAP_HITPCNT = 12657; +%constant int RMI__OPCNT = 12658; +%constant int RMI__IOQUELEN = 12659; +%constant int RMI__IOAQUELEN = 12660; +%constant int RMI__DISKRESPTIM = 12661; +%constant int RMI__JNLIOCNT = 12662; +%constant int RMI__JDNQLEN = 12663; +%constant int RMI__JDWQLEN = 12664; +%constant int RMI__JDFQLEN = 12665; +%constant int RMI__JDEXCNT = 12666; +%constant int RMI__JNLWRTSS = 12667; +%constant int RMI__JNLBUFWR = 12668; +%constant int RMI__DGSENT = 12669; +%constant int RMI__DGRCVD = 12670; +%constant int RMI__DGDISCARD = 12671; +%constant int RMI__MSGSENT = 12672; +%constant int RMI__MSGRCVD = 12673; +%constant int RMI__SNDATS = 12674; +%constant int RMI__KBYTSENT = 12675; +%constant int RMI__REQDATS = 12676; +%constant int RMI__KBYTREQD = 12677; +%constant int RMI__KBYTMAPD = 12678; +%constant int RMI__QCR_CNT = 12679; +%constant int RMI__QBDT_CNT = 12680; +%constant int RMI__DIRLOOK = 12681; +%constant int RMI__DIRINS = 12682; +%constant int RMI__DIRDEL = 12683; +%constant int RMI__PACKETS = 12684; +%constant int RMI__KBYTES = 12685; +%constant int RMI__PACKETSIZE = 12686; +%constant int RMI__MPACKETS = 12687; +%constant int RMI__MKBYTES = 12688; +%constant int RMI__MPACKETSIZE = 12689; +%constant int RMI__SINGLECOLL = 12690; +%constant int RMI__MULTICOLL = 12691; +%constant int RMI__INITDEFER = 12692; +%constant int RMI__INTERNALBUFERR = 12693; +%constant int RMI__LOCBUFERR = 12694; +%constant int RMI__BUFFUNAVAIL = 12695; +%constant int RMI__FILLER = 12696; +%constant int RMI__RESERVEDMON1 = 12697; +%constant int RMI__RESERVEDMON2 = 12698; +%constant int RMI__RESERVEDMON3 = 12699; +%constant int RMI__RESERVEDMON4 = 12700; +%constant int RMI__RESERVEDMON5 = 12701; +%constant int RMI__RESERVEDMON6 = 12702; +%constant int RMI__RESERVEDMON7 = 12703; +%constant int RMI__RESERVEDMON8 = 12704; +%constant int RMI__RESERVEDMON9 = 12705; +%constant int RMI__RESERVEDMON10 = 12706; +%constant int RMI__RESERVEDMON11 = 12707; +%constant int RMI__RESERVEDMON12 = 12708; +%constant int RMI__RESERVEDMON13 = 12709; +%constant int RMI__RESERVEDMON14 = 12710; +%constant int RMI__RESERVEDMON15 = 12711; +%constant int RMI__RESERVEDMON16 = 12712; +%constant int RMI__RESERVEDMON17 = 12713; +%constant int RMI__RESERVEDMON18 = 12714; +%constant int RMI__RESERVEDMON19 = 12715; +%constant int RMI__RESERVEDMON20 = 12716; +%constant int RMI__RESERVEDMON21 = 12717; +%constant int RMI__RESERVEDMON22 = 12718; +%constant int RMI__RESERVEDMON23 = 12719; +%constant int RMI__RESERVEDMON24 = 12720; +%constant int RMI__RESERVEDMON25 = 12721; +%constant int RMI__RESERVEDMON26 = 12722; +%constant int RMI__RESERVEDMON27 = 12723; +%constant int RMI__RESERVEDMON28 = 12724; +%constant int RMI__RESERVEDMON29 = 12725; +%constant int RMI__RESERVEDMON30 = 12726; +%constant int RMI__RESERVEDMON31 = 12727; +%constant int RMI__RESERVEDMON32 = 12728; +%constant int RMI__RESERVEDMON33 = 12729; +%constant int RMI__RESERVEDMON34 = 12730; +%constant int RMI__RESERVEDMON35 = 12731; +%constant int RMI__RESERVEDMON36 = 12732; +%constant int RMI__RESERVEDMON37 = 12733; +%constant int RMI__RESERVEDMON38 = 12734; +%constant int RMI__RESERVEDMON39 = 12735; +%constant int RMI__RESERVEDMON40 = 12736; +%constant int RMI__RESERVEDMON41 = 12737; +%constant int RMI__RESERVEDMON42 = 12738; +%constant int RMI__RESERVEDMON43 = 12739; +%constant int RMI__RESERVEDMON44 = 12740; +%constant int RMI__RESERVEDMON45 = 12741; +%constant int RMI__RESERVEDMON46 = 12742; +%constant int RMI__RESERVEDMON47 = 12743; +%constant int RMI__RESERVEDMON48 = 12744; +%constant int RMI__RESERVEDMON49 = 12745; +%constant int RMI__RESERVEDMON50 = 12746; +%constant int RMI__RESERVEDMON51 = 12747; +%constant int RMI__RESERVEDMON52 = 12748; +%constant int RMI__RESERVEDMON53 = 12749; +%constant int RMI__RESERVEDMON54 = 12750; +%constant int RMI__RESERVEDMON55 = 12751; +%constant int RMI__RESERVEDMON56 = 12752; +%constant int RMI__RESERVEDMON57 = 12753; +%constant int RMI__RESERVEDMON58 = 12754; +%constant int RMI__RESERVEDMON59 = 12755; +%constant int RMI__RESERVEDMON60 = 12756; +%constant int RMI__RESERVEDMON61 = 12757; +%constant int RMI__RESERVEDMON62 = 12758; +%constant int RMI__RESERVEDMON63 = 12759; +%constant int RMI__RESERVEDMON64 = 12760; +%constant int RMI__RESERVEDMON65 = 12761; +%constant int RMI__RESERVEDMON66 = 12762; +%constant int RMI__RESERVEDMON67 = 12763; +%constant int RMI__RESERVEDMON68 = 12764; +%constant int RMI__RESERVEDMON69 = 12765; +%constant int RMI__RESERVEDMON70 = 12766; +%constant int RMI__RESERVEDMON71 = 12767; +%constant int RMI__RESERVEDMON72 = 12768; +%constant int RMI__RESERVEDMON73 = 12769; +%constant int RMI__RESERVEDMON74 = 12770; +%constant int RMI__RESERVEDMON75 = 12771; +%constant int RMI__RESERVEDMON76 = 12772; +%constant int RMI__RESERVEDMON77 = 12773; +%constant int RMI__RESERVEDMON78 = 12774; +%constant int RMI__RESERVEDMON79 = 12775; +%constant int RMI__RESERVEDMON80 = 12776; +%constant int RMI__RESERVEDMON81 = 12777; +%constant int RMI__RESERVEDMON82 = 12778; +%constant int RMI__RESERVEDMON83 = 12779; +%constant int RMI__RESERVEDMON84 = 12780; +%constant int RMI__RESERVEDMON85 = 12781; +%constant int RMI__RESERVEDMON86 = 12782; +%constant int RMI__RESERVEDMON87 = 12783; +%constant int RMI__RESERVEDMON88 = 12784; +%constant int RMI__RESERVEDMON89 = 12785; +%constant int RMI__RESERVEDMON90 = 12786; +%constant int RMI__RESERVEDMON91 = 12787; +%constant int RMI__RESERVEDMON92 = 12788; +%constant int RMI__RESERVEDMON93 = 12789; +%constant int RMI__RESERVEDMON94 = 12790; +%constant int RMI__RESERVEDMON95 = 12791; +%constant int RMI__RESERVEDMON96 = 12792; +%constant int RMI__RESERVEDMON97 = 12793; +%constant int RMI__RESERVEDMON98 = 12794; +%constant int RMI__RESERVEDMON99 = 12795; +%constant int RMI__RESERVEDMON100 = 12796; +%constant int RMI__LASTMON = 12797; +%constant int RMI__RMS_STATS = 16893; +%constant int RMI__SEQGETS = 16894; +%constant int RMI__KEYGETS = 16895; +%constant int RMI__RFAGETS = 16896; +%constant int RMI__GETBYTES = 16897; +%constant int RMI__SEQPUTS = 16898; +%constant int RMI__KEYPUTS = 16899; +%constant int RMI__PUTBYTES = 16900; +%constant int RMI__UPDATES = 16901; +%constant int RMI__UPDATEBYTES = 16902; +%constant int RMI__DELETES = 16903; +%constant int RMI__TRUNCATES = 16904; +%constant int RMI__TRUNCBLKS = 16905; +%constant int RMI__SEQFINDS = 16906; +%constant int RMI__KEYFINDS = 16907; +%constant int RMI__RFAFINDS = 16908; +%constant int RMI__READS = 16909; +%constant int RMI__READBYTES = 16910; +%constant int RMI__CONNECTS = 16911; +%constant int RMI__DISCONNECTS = 16912; +%constant int RMI__EXTENDS = 16913; +%constant int RMI__EXTBLOCKS = 16914; +%constant int RMI__FLUSHES = 16915; +%constant int RMI__REWINDS = 16916; +%constant int RMI__WRITES = 16917; +%constant int RMI__WRITEBYTES = 16918; +%constant int RMI__FLCKENQS = 16919; +%constant int RMI__FLCKDEQS = 16920; +%constant int RMI__FLCKCNVS = 16921; +%constant int RMI__LBLCKENQS = 16922; +%constant int RMI__LBLCKDEQS = 16923; +%constant int RMI__LBLCKCNVS = 16924; +%constant int RMI__GBLCKENQS = 16925; +%constant int RMI__GBLCKDEQS = 16926; +%constant int RMI__GBLCKCNVS = 16927; +%constant int RMI__GSLCKENQS = 16928; +%constant int RMI__GSLCKDEQS = 16929; +%constant int RMI__GSLCKCNVS = 16930; +%constant int RMI__RLCKENQS = 16931; +%constant int RMI__RLCKDEQS = 16932; +%constant int RMI__RLCKCNVS = 16933; +%constant int RMI__APPLCKENQS = 16934; +%constant int RMI__APPLCKDEQS = 16935; +%constant int RMI__APPLCKCNVS = 16936; +%constant int RMI__FLBLKASTS = 16937; +%constant int RMI__LBLBLKASTS = 16938; +%constant int RMI__GBLBLKASTS = 16939; +%constant int RMI__APPBLKASTS = 16940; +%constant int RMI__LCACHEHITS = 16941; +%constant int RMI__LCACHETRIES = 16942; +%constant int RMI__GCACHEHITS = 16943; +%constant int RMI__GCACHETRIES = 16944; +%constant int RMI__GBRDIRIOS = 16945; +%constant int RMI__GBWDIRIOS = 16946; +%constant int RMI__LBRDIRIOS = 16947; +%constant int RMI__LBWDIRIOS = 16948; +%constant int RMI__BKTSPLT = 16949; +%constant int RMI__MBKTSPLT = 16950; +%constant int RMI__RMSOPENS = 16951; +%constant int RMI__CLOSES = 16952; +%constant int RMI__GSBLKASTS = 16953; +%constant int RMI__FLWAITS = 16954; +%constant int RMI__LBWAITS = 16955; +%constant int RMI__GBWAITS = 16956; +%constant int RMI__GSWAITS = 16957; +%constant int RMI__RLWAITS = 16958; +%constant int RMI__APWAITS = 16959; +%constant int RMI__TOTWAITS = 16960; +%constant int RMI__OUTBUFQUO = 16961; +%constant int RMI__RMSDEV1 = 16962; +%constant int RMI__RMSDEV2 = 16963; +%constant int RMI__RMSDEV3 = 16964; +%constant int RMI__RMSDEV4 = 16965; +%constant int RMI__RMSDEV5 = 16966; +%constant int RMI__RMSDEV6 = 16967; +%constant int RMI__RMSDEV7 = 16968; +%constant int RMI__RMSDEV8 = 16969; +%constant int RMI__RMSDEV9 = 16970; +%constant int RMI__RMSDEV10 = 16971; +%constant int RMI__RMSDEV11 = 16972; +%constant int RMI__RMSDEV12 = 16973; +%constant int RMI__RMSDEV13 = 16974; +%constant int RMI__RMSDEV14 = 16975; +%constant int RMI__RMSDEV15 = 16976; +%constant int RMI__XQPQIOS = 16977; +%constant int RMI__LCACHEHITPCNT = 16978; +%constant int RMI__GCACHEHITPCNT = 16979; +%constant int RMI__TOTALGET = 16980; +%constant int RMI__TOTALPUT = 16981; +%constant int RMI__TOTALFIND = 16982; +%constant int RMI__BYTESGET = 16983; +%constant int RMI__BYTESPUT = 16984; +%constant int RMI__BYTESUPDATE = 16985; +%constant int RMI__BYTESREAD = 16986; +%constant int RMI__BYTESWRITE = 16987; +%constant int RMI__BLOCKSTRUNCATE = 16988; +%constant int RMI__BLOCKSEXTEND = 16989; +%constant int RMI__ACTIVE_STREAMS = 16990; +%constant int RMI__TOTAL_ENQS = 16991; +%constant int RMI__TOTAL_DEQS = 16992; +%constant int RMI__TOTAL_CNVS = 16993; +%constant int RMI__TOTAL_BLKAST = 16994; +%constant int RMI__RMS_ORG = 16995; +%constant int RMI__INTCOL_GBHSH = 16996; +%constant int RMI__INTCOL_GBH = 16997; +%constant int RMI__INTRNDWN_GBHSH = 16998; +%constant int RMI__INTRNDWN_GBH = 16999; +%constant int RMI__RESERVEDRMS5 = 17000; +%constant int RMI__RESERVEDRMS6 = 17001; +%constant int RMI__RESERVEDRMS7 = 17002; +%constant int RMI__RESERVEDRMS8 = 17003; +%constant int RMI__RESERVEDRMS9 = 17004; +%constant int RMI__RESERVEDRMS10 = 17005; +%constant int RMI__RESERVEDRMS11 = 17006; +%constant int RMI__RESERVEDRMS12 = 17007; +%constant int RMI__RESERVEDRMS13 = 17008; +%constant int RMI__RESERVEDRMS14 = 17009; +%constant int RMI__RESERVEDRMS15 = 17010; +%constant int RMI__RESERVEDRMS16 = 17011; +%constant int RMI__RESERVEDRMS17 = 17012; +%constant int RMI__RESERVEDRMS18 = 17013; +%constant int RMI__RESERVEDRMS19 = 17014; +%constant int RMI__RESERVEDRMS20 = 17015; +%constant int RMI__RESERVEDRMS21 = 17016; +%constant int RMI__RESERVEDRMS22 = 17017; +%constant int RMI__RESERVEDRMS23 = 17018; +%constant int RMI__RESERVEDRMS24 = 17019; +%constant int RMI__RESERVEDRMS25 = 17020; +%constant int RMI__RESERVEDRMS26 = 17021; +%constant int RMI__RESERVEDRMS27 = 17022; +%constant int RMI__RESERVEDRMS28 = 17023; +%constant int RMI__RESERVEDRMS29 = 17024; +%constant int RMI__RESERVEDRMS30 = 17025; +%constant int RMI__RESERVEDRMS31 = 17026; +%constant int RMI__RESERVEDRMS32 = 17027; +%constant int RMI__RESERVEDRMS33 = 17028; +%constant int RMI__RESERVEDRMS34 = 17029; +%constant int RMI__RESERVEDRMS35 = 17030; +%constant int RMI__RESERVEDRMS36 = 17031; +%constant int RMI__RESERVEDRMS37 = 17032; +%constant int RMI__RESERVEDRMS38 = 17033; +%constant int RMI__RESERVEDRMS39 = 17034; +%constant int RMI__RESERVEDRMS40 = 17035; +%constant int RMI__RESERVEDRMS41 = 17036; +%constant int RMI__RESERVEDRMS42 = 17037; +%constant int RMI__RESERVEDRMS43 = 17038; +%constant int RMI__RESERVEDRMS44 = 17039; +%constant int RMI__RESERVEDRMS45 = 17040; +%constant int RMI__RESERVEDRMS46 = 17041; +%constant int RMI__RESERVEDRMS47 = 17042; +%constant int RMI__RESERVEDRMS48 = 17043; +%constant int RMI__RESERVEDRMS49 = 17044; +%constant int RMI__RESERVEDRMS50 = 17045; +%constant int RMI__RESERVEDRMS51 = 17046; +%constant int RMI__RESERVEDRMS52 = 17047; +%constant int RMI__RESERVEDRMS53 = 17048; +%constant int RMI__RESERVEDRMS54 = 17049; +%constant int RMI__RESERVEDRMS55 = 17050; +%constant int RMI__RESERVEDRMS56 = 17051; +%constant int RMI__RESERVEDRMS57 = 17052; +%constant int RMI__RESERVEDRMS58 = 17053; +%constant int RMI__RESERVEDRMS59 = 17054; +%constant int RMI__RESERVEDRMS60 = 17055; +%constant int RMI__RESERVEDRMS61 = 17056; +%constant int RMI__RESERVEDRMS62 = 17057; +%constant int RMI__RESERVEDRMS63 = 17058; +%constant int RMI__RESERVEDRMS64 = 17059; +%constant int RMI__RESERVEDRMS65 = 17060; +%constant int RMI__RESERVEDRMS66 = 17061; +%constant int RMI__RESERVEDRMS67 = 17062; +%constant int RMI__RESERVEDRMS68 = 17063; +%constant int RMI__RESERVEDRMS69 = 17064; +%constant int RMI__RESERVEDRMS70 = 17065; +%constant int RMI__RESERVEDRMS71 = 17066; +%constant int RMI__RESERVEDRMS72 = 17067; +%constant int RMI__RESERVEDRMS73 = 17068; +%constant int RMI__RESERVEDRMS74 = 17069; +%constant int RMI__RESERVEDRMS75 = 17070; +%constant int RMI__RESERVEDRMS76 = 17071; +%constant int RMI__RESERVEDRMS77 = 17072; +%constant int RMI__RESERVEDRMS78 = 17073; +%constant int RMI__RESERVEDRMS79 = 17074; +%constant int RMI__RESERVEDRMS80 = 17075; +%constant int RMI__RESERVEDRMS81 = 17076; +%constant int RMI__RESERVEDRMS82 = 17077; +%constant int RMI__RESERVEDRMS83 = 17078; +%constant int RMI__RESERVEDRMS84 = 17079; +%constant int RMI__RESERVEDRMS85 = 17080; +%constant int RMI__RESERVEDRMS86 = 17081; +%constant int RMI__RESERVEDRMS87 = 17082; +%constant int RMI__RESERVEDRMS88 = 17083; +%constant int RMI__RESERVEDRMS89 = 17084; +%constant int RMI__RESERVEDRMS90 = 17085; +%constant int RMI__RESERVEDRMS91 = 17086; +%constant int RMI__RESERVEDRMS92 = 17087; +%constant int RMI__RESERVEDRMS93 = 17088; +%constant int RMI__RESERVEDRMS94 = 17089; +%constant int RMI__RESERVEDRMS95 = 17090; +%constant int RMI__RESERVEDRMS96 = 17091; +%constant int RMI__RESERVEDRMS97 = 17092; +%constant int RMI__RESERVEDRMS98 = 17093; +%constant int RMI__RESERVEDRMS99 = 17094; +%constant int RMI__RESERVEDRMS100 = 17095; +%constant int RMI__LASTRMS = 17096; +%constant int RMI__CPUID = 21192; +%constant int RMI__CPUCOMPAT = 21193; +%constant int RMI__CPUINTSTK = 21194; +%constant int RMI__CPUMPSYNCH = 21195; +%constant int RMI__CPUKERNEL = 21196; +%constant int RMI__CPUEXEC = 21197; +%constant int RMI__CPUSUPER = 21198; +%constant int RMI__CPUUSER = 21199; +%constant int RMI__CPUIDLE = 21200; +%constant int RMI__PROCCNTMAX = 21201; +%constant int RMI__PROCBATCNT = 21202; +%constant int RMI__PROCINTCNT = 21203; +%constant int RMI__PROCNETCNT = 21204; +%constant int RMI__PROCSWITCHCNT = 21205; +%constant int RMI__PROCBALSETCNT = 21206; +%constant int RMI__PROCLOADCNT = 21207; +%constant int RMI__BADFLTS = 21208; +%constant int RMI__EXEFAULTS = 21209; +%constant int RMI__HDRINSWAPS = 21210; +%constant int RMI__HDROUTSWAPS = 21211; +%constant int RMI__IOPAGCNT = 21212; +%constant int RMI__ISWPCNTPG = 21213; +%constant int RMI__OSWPCNT = 21214; +%constant int RMI__OSWPCNTPG = 21215; +%constant int RMI__RDFAULTS = 21216; +%constant int RMI__TRANSFLTS = 21217; +%constant int RMI__WRTFAULTS = 21218; +%constant int RMI__USERPAGES = 21219; +%constant int RMI__VMSPAGES = 21220; +%constant int RMI__LOGNAMCRE = 21221; +%constant int RMI__LOGNAMDEL = 21222; +%constant int RMI__LOGNAMFAIL = 21223; +%constant int RMI__LOGNAMTBLCRE = 21224; +%constant int RMI__TTREADCNT = 21225; +%constant int RMI__TTREADS = 21226; +%constant int RMI__TTWRITECNT = 21227; +%constant int RMI__TTWRITES = 21228; +%constant int RMI__BUFOBJPAG = 21229; +%constant int RMI__BUFOBJPAGPEAK = 21230; +%constant int RMI__BUFOBJPAGS01 = 21231; +%constant int RMI__BUFOBJPAGS2 = 21232; +%constant int RMI__BUFOBJPAGMAXS01 = 21233; +%constant int RMI__BUFOBJPAGMAXS2 = 21234; +%constant int RMI__BUFOBJPAGPEAKS01 = 21235; +%constant int RMI__BUFOBJPAGPEAKS2 = 21236; +%constant int RMI__BUFOBJPGLTMAXS01 = 21237; +%constant int RMI__BUFOBJPGLTMAXS2 = 21238; +%constant int RMI__DLCK_INCMPLT = 21239; +%constant int RMI__DLCKMSGS_IN = 21240; +%constant int RMI__DLCKMSGS_OUT = 21241; +%constant int RMI__TQETOTAL = 21242; +%constant int RMI__TQESYSUB = 21243; +%constant int RMI__TQEUSRTIMR = 21244; +%constant int RMI__TQEUSRWAKE = 21245; +%constant int RMI__CWPSBYTESIN = 21246; +%constant int RMI__CWPSBYTESOUT = 21247; +%constant int RMI__CWPSJPISIN = 21248; +%constant int RMI__CWPSJPISOUT = 21249; +%constant int RMI__CWPSMSGSIN = 21250; +%constant int RMI__CWPSMSGSOUT = 21251; +%constant int RMI__CWPSPCNTRLIN = 21252; +%constant int RMI__CWPSPCNTRLOUT = 21253; +%constant int RMI__CWPSRSRCIN = 21254; +%constant int RMI__CWPSRSRCOUT = 21255; +%constant int RMI__CHME = 21256; +%constant int RMI__CHMK = 21257; +%constant int RMI__MCHKERRS = 21258; +%constant int RMI__MEMERRS = 21259; +%constant int RMI__RESMASK = 21260; +%constant int RMI__CACHE_STATE = 21261; +%constant int RMI__CACHE_MEMORY = 21262; +%constant int RMI__CACHE_FREE = 21263; +%constant int RMI__CACHE_READ_HITS = 21264; +%constant int RMI__CACHE_VIRT_READS = 21265; +%constant int RMI__CACHE_VIRT_WRITES = 21266; +%constant int RMI__CACHE_R_ARND_MOD = 21267; +%constant int RMI__CACHE_R_ARND_SIZ = 21268; +%constant int RMI__CACHE_W_ARND_MOD = 21269; +%constant int RMI__CACHE_W_ARND_SIZ = 21270; +%constant int RMI__CACHE_LIMBO_LEN = 21271; +%constant int RMI__CACHE_MIN_SIZE = 21272; +%constant int RMI__CACHE_MAX_SIZE = 21273; +%constant int RMI__CACHE_MAX_LIMIT = 21274; +%constant int RMI__CACHE_MAX_IO_SIZE = 21275; +%constant int RMI__CACHE_MAX_LOCKS = 21276; +%constant int RMI__CACHE_READAHEAD = 21277; +%constant int RMI__CACHE_WRITEBEHIND = 21278; +%constant int RMI__CACHE_WRITEDELAY = 21279; +%constant int RMI__CACHE_VOLS_FXFC_MODE = 21280; +%constant int RMI__CACHE_VOLS_RXFC_MODE = 21281; +%constant int RMI__CACHE_VOLS_NC_MODE = 21282; +%constant int RMI__CACHE_VOLS_PNC_MODE = 21283; +%constant int RMI__CACHE_OPEN_FILES = 21284; +%constant int RMI__CACHE_UNSYNCHED_IOS = 21285; +%constant int RMI__CACHE_DELAYED_WRITES = 21286; +%constant int RMI__CACHE_LOST_WRITES = 21287; +%constant int RMI__CACHE_FULL_BARRIERS = 21288; +%constant int RMI__CACHE_PARTIAL_BARRIERS = 21289; +%constant int RMI__CACHE_READS_AROUND = 21290; +%constant int RMI__CACHE_WRITES_AROUND = 21291; +%constant int RMI__CACHE_CURRENT_LOCKS = 21292; +%constant int RMI__CACHE_BARRIER_COUNT = 21293; +%constant int RMI__CACHE_SUPER_WRITES = 21294; +%constant int RMI__CACHE_NON_PAGED_POOL = 21295; +%constant int RMI__CACHE_EVERYTHING = 21296; +%constant int RMI__GBP_CURMAP = 21297; +%constant int RMI__GBP_CURMAP_GRP = 21298; +%constant int RMI__GBP_CURMAP_GRPWRT = 21299; +%constant int RMI__GBP_CURMAP_SYS = 21300; +%constant int RMI__GBP_CURMAP_SYSWRT = 21301; +%constant int RMI__GBP_MAXMAP = 21302; +%constant int RMI__GBS_CURMAP = 21303; +%constant int RMI__GBS_CURMAP_GRP = 21304; +%constant int RMI__GBS_CURMAP_GRPWRT = 21305; +%constant int RMI__GBS_CURMAP_SYS = 21306; +%constant int RMI__GBS_CURMAP_SYSWRT = 21307; +%constant int RMI__GBS_MAXMAP = 21308; +%constant int RMI__GBS_NOREF = 21309; +%constant int RMI__NP_POOL_ALLOC = 21310; +%constant int RMI__NP_POOL_ALLOCF = 21311; +%constant int RMI__NP_POOL_EXP = 21312; +%constant int RMI__NP_POOL_EXPF = 21313; +%constant int RMI__PG_POOL_ALLOC = 21314; +%constant int RMI__PG_POOL_ALLOCF = 21315; +%constant int RMI__PG_POOL_EXPF = 21316; +%constant int RMI__SMP_CURMAP = 21317; +%constant int RMI__SMP_CURMAP_GRP = 21318; +%constant int RMI__SMP_CURMAP_GRPWRT = 21319; +%constant int RMI__SMP_CURMAP_SYS = 21320; +%constant int RMI__SMP_CURMAP_SYSWRT = 21321; +%constant int RMI__SMS_CURMAP = 21322; +%constant int RMI__SMS_CURMAP_GRP = 21323; +%constant int RMI__SMS_CURMAP_GRPWRT = 21324; +%constant int RMI__SMS_CURMAP_SYS = 21325; +%constant int RMI__SMS_CURMAP_SYSWRT = 21326; +%constant int RMI__SMS_NOREF = 21327; +%constant int RMI__RESERVEDEXT1 = 21328; +%constant int RMI__RESERVEDEXT2 = 21329; +%constant int RMI__RESERVEDEXT3 = 21330; +%constant int RMI__RESERVEDEXT4 = 21331; +%constant int RMI__RESERVEDEXT5 = 21332; +%constant int RMI__RESERVEDEXT6 = 21333; +%constant int RMI__RESERVEDEXT7 = 21334; +%constant int RMI__RESERVEDEXT8 = 21335; +%constant int RMI__RESERVEDEXT9 = 21336; +%constant int RMI__RESERVEDEXT10 = 21337; +%constant int RMI__RESERVEDEXT11 = 21338; +%constant int RMI__RESERVEDEXT12 = 21339; +%constant int RMI__RESERVEDEXT13 = 21340; +%constant int RMI__RESERVEDEXT14 = 21341; +%constant int RMI__RESERVEDEXT15 = 21342; +%constant int RMI__RESERVEDEXT16 = 21343; +%constant int RMI__RESERVEDEXT17 = 21344; +%constant int RMI__RESERVEDEXT18 = 21345; +%constant int RMI__RESERVEDEXT19 = 21346; +%constant int RMI__RESERVEDEXT20 = 21347; +%constant int RMI__RESERVEDEXT21 = 21348; +%constant int RMI__RESERVEDEXT22 = 21349; +%constant int RMI__RESERVEDEXT23 = 21350; +%constant int RMI__RESERVEDEXT24 = 21351; +%constant int RMI__RESERVEDEXT25 = 21352; +%constant int RMI__RESERVEDEXT26 = 21353; +%constant int RMI__RESERVEDEXT27 = 21354; +%constant int RMI__RESERVEDEXT28 = 21355; +%constant int RMI__RESERVEDEXT29 = 21356; +%constant int RMI__RESERVEDEXT30 = 21357; +%constant int RMI__RESERVEDEXT31 = 21358; +%constant int RMI__RESERVEDEXT32 = 21359; +%constant int RMI__RESERVEDEXT33 = 21360; +%constant int RMI__RESERVEDEXT34 = 21361; +%constant int RMI__RESERVEDEXT35 = 21362; +%constant int RMI__RESERVEDEXT36 = 21363; +%constant int RMI__RESERVEDEXT37 = 21364; +%constant int RMI__RESERVEDEXT38 = 21365; +%constant int RMI__RESERVEDEXT39 = 21366; +%constant int RMI__RESERVEDEXT40 = 21367; +%constant int RMI__RESERVEDEXT41 = 21368; +%constant int RMI__RESERVEDEXT42 = 21369; +%constant int RMI__RESERVEDEXT43 = 21370; +%constant int RMI__RESERVEDEXT44 = 21371; +%constant int RMI__RESERVEDEXT45 = 21372; +%constant int RMI__RESERVEDEXT46 = 21373; +%constant int RMI__RESERVEDEXT47 = 21374; +%constant int RMI__RESERVEDEXT48 = 21375; +%constant int RMI__RESERVEDEXT49 = 21376; +%constant int RMI__RESERVEDEXT50 = 21377; +%constant int RMI__RESERVEDEXT51 = 21378; +%constant int RMI__RESERVEDEXT52 = 21379; +%constant int RMI__RESERVEDEXT53 = 21380; +%constant int RMI__RESERVEDEXT54 = 21381; +%constant int RMI__RESERVEDEXT55 = 21382; +%constant int RMI__RESERVEDEXT56 = 21383; +%constant int RMI__RESERVEDEXT57 = 21384; +%constant int RMI__RESERVEDEXT58 = 21385; +%constant int RMI__RESERVEDEXT59 = 21386; +%constant int RMI__RESERVEDEXT60 = 21387; +%constant int RMI__RESERVEDEXT61 = 21388; +%constant int RMI__RESERVEDEXT62 = 21389; +%constant int RMI__RESERVEDEXT63 = 21390; +%constant int RMI__RESERVEDEXT64 = 21391; +%constant int RMI__RESERVEDEXT65 = 21392; +%constant int RMI__RESERVEDEXT66 = 21393; +%constant int RMI__RESERVEDEXT67 = 21394; +%constant int RMI__RESERVEDEXT68 = 21395; +%constant int RMI__RESERVEDEXT69 = 21396; +%constant int RMI__RESERVEDEXT70 = 21397; +%constant int RMI__RESERVEDEXT71 = 21398; +%constant int RMI__RESERVEDEXT72 = 21399; +%constant int RMI__RESERVEDEXT73 = 21400; +%constant int RMI__RESERVEDEXT74 = 21401; +%constant int RMI__RESERVEDEXT75 = 21402; +%constant int RMI__RESERVEDEXT76 = 21403; +%constant int RMI__RESERVEDEXT77 = 21404; +%constant int RMI__RESERVEDEXT78 = 21405; +%constant int RMI__RESERVEDEXT79 = 21406; +%constant int RMI__RESERVEDEXT80 = 21407; +%constant int RMI__RESERVEDEXT81 = 21408; +%constant int RMI__RESERVEDEXT82 = 21409; +%constant int RMI__RESERVEDEXT83 = 21410; +%constant int RMI__RESERVEDEXT84 = 21411; +%constant int RMI__RESERVEDEXT85 = 21412; +%constant int RMI__RESERVEDEXT86 = 21413; +%constant int RMI__RESERVEDEXT87 = 21414; +%constant int RMI__RESERVEDEXT88 = 21415; +%constant int RMI__RESERVEDEXT89 = 21416; +%constant int RMI__RESERVEDEXT90 = 21417; +%constant int RMI__RESERVEDEXT91 = 21418; +%constant int RMI__RESERVEDEXT92 = 21419; +%constant int RMI__RESERVEDEXT93 = 21420; +%constant int RMI__RESERVEDEXT94 = 21421; +%constant int RMI__RESERVEDEXT95 = 21422; +%constant int RMI__RESERVEDEXT96 = 21423; +%constant int RMI__RESERVEDEXT97 = 21424; +%constant int RMI__RESERVEDEXT98 = 21425; +%constant int RMI__RESERVEDEXT99 = 21426; +%constant int RMI__RESERVEDEXT100 = 21427; +%constant int RMI__RESERVEDEXT101 = 21428; +%constant int RMI__RESERVEDEXT102 = 21429; +%constant int RMI__RESERVEDEXT103 = 21430; +%constant int RMI__RESERVEDEXT104 = 21431; +%constant int RMI__RESERVEDEXT105 = 21432; +%constant int RMI__RESERVEDEXT106 = 21433; +%constant int RMI__RESERVEDEXT107 = 21434; +%constant int RMI__RESERVEDEXT108 = 21435; +%constant int RMI__RESERVEDEXT109 = 21436; +%constant int RMI__RESERVEDEXT110 = 21437; +%constant int RMI__RESERVEDEXT111 = 21438; +%constant int RMI__RESERVEDEXT112 = 21439; +%constant int RMI__RESERVEDEXT113 = 21440; +%constant int RMI__RESERVEDEXT114 = 21441; +%constant int RMI__RESERVEDEXT115 = 21442; +%constant int RMI__RESERVEDEXT116 = 21443; +%constant int RMI__RESERVEDEXT117 = 21444; +%constant int RMI__RESERVEDEXT118 = 21445; +%constant int RMI__RESERVEDEXT119 = 21446; +%constant int RMI__RESERVEDEXT120 = 21447; +%constant int RMI__RESERVEDEXT121 = 21448; +%constant int RMI__RESERVEDEXT122 = 21449; +%constant int RMI__RESERVEDEXT123 = 21450; +%constant int RMI__RESERVEDEXT124 = 21451; +%constant int RMI__RESERVEDEXT125 = 21452; +%constant int RMI__RESERVEDEXT126 = 21453; +%constant int RMI__RESERVEDEXT127 = 21454; +%constant int RMI__RESERVEDEXT128 = 21455; +%constant int RMI__RESERVEDEXT129 = 21456; +%constant int RMI__RESERVEDEXT130 = 21457; +%constant int RMI__RESERVEDEXT131 = 21458; +%constant int RMI__RESERVEDEXT132 = 21459; +%constant int RMI__RESERVEDEXT133 = 21460; +%constant int RMI__RESERVEDEXT134 = 21461; +%constant int RMI__RESERVEDEXT135 = 21462; +%constant int RMI__RESERVEDEXT136 = 21463; +%constant int RMI__RESERVEDEXT137 = 21464; +%constant int RMI__RESERVEDEXT138 = 21465; +%constant int RMI__RESERVEDEXT139 = 21466; +%constant int RMI__RESERVEDEXT140 = 21467; +%constant int RMI__RESERVEDEXT141 = 21468; +%constant int RMI__RESERVEDEXT142 = 21469; +%constant int RMI__RESERVEDEXT143 = 21470; +%constant int RMI__RESERVEDEXT144 = 21471; +%constant int RMI__RESERVEDEXT145 = 21472; +%constant int RMI__RESERVEDEXT146 = 21473; +%constant int RMI__RESERVEDEXT147 = 21474; +%constant int RMI__RESERVEDEXT148 = 21475; +%constant int RMI__RESERVEDEXT149 = 21476; +%constant int RMI__RESERVEDEXT150 = 21477; +%constant int RMI__RESERVEDEXT151 = 21478; +%constant int RMI__RESERVEDEXT152 = 21479; +%constant int RMI__RESERVEDEXT153 = 21480; +%constant int RMI__RESERVEDEXT154 = 21481; +%constant int RMI__RESERVEDEXT155 = 21482; +%constant int RMI__RESERVEDEXT156 = 21483; +%constant int RMI__RESERVEDEXT157 = 21484; +%constant int RMI__RESERVEDEXT158 = 21485; +%constant int RMI__RESERVEDEXT159 = 21486; +%constant int RMI__RESERVEDEXT160 = 21487; +%constant int RMI__RESERVEDEXT161 = 21488; +%constant int RMI__RESERVEDEXT162 = 21489; +%constant int RMI__RESERVEDEXT163 = 21490; +%constant int RMI__RESERVEDEXT164 = 21491; +%constant int RMI__RESERVEDEXT165 = 21492; +%constant int RMI__RESERVEDEXT166 = 21493; +%constant int RMI__RESERVEDEXT167 = 21494; +%constant int RMI__RESERVEDEXT168 = 21495; +%constant int RMI__RESERVEDEXT169 = 21496; +%constant int RMI__RESERVEDEXT170 = 21497; +%constant int RMI__RESERVEDEXT171 = 21498; +%constant int RMI__RESERVEDEXT172 = 21499; +%constant int RMI__RESERVEDEXT173 = 21500; +%constant int RMI__RESERVEDEXT174 = 21501; +%constant int RMI__RESERVEDEXT175 = 21502; +%constant int RMI__RESERVEDEXT176 = 21503; +%constant int RMI__RESERVEDEXT177 = 21504; +%constant int RMI__RESERVEDEXT178 = 21505; +%constant int RMI__RESERVEDEXT179 = 21506; +%constant int RMI__RESERVEDEXT180 = 21507; +%constant int RMI__RESERVEDEXT181 = 21508; +%constant int RMI__RESERVEDEXT182 = 21509; +%constant int RMI__RESERVEDEXT183 = 21510; +%constant int RMI__RESERVEDEXT184 = 21511; +%constant int RMI__RESERVEDEXT185 = 21512; +%constant int RMI__RESERVEDEXT186 = 21513; +%constant int RMI__RESERVEDEXT187 = 21514; +%constant int RMI__RESERVEDEXT188 = 21515; +%constant int RMI__RESERVEDEXT189 = 21516; +%constant int RMI__RESERVEDEXT190 = 21517; +%constant int RMI__RESERVEDEXT191 = 21518; +%constant int RMI__RESERVEDEXT192 = 21519; +%constant int RMI__RESERVEDEXT193 = 21520; +%constant int RMI__RESERVEDEXT194 = 21521; +%constant int RMI__RESERVEDEXT195 = 21522; +%constant int RMI__RESERVEDEXT196 = 21523; +%constant int RMI__RESERVEDEXT197 = 21524; +%constant int RMI__RESERVEDEXT198 = 21525; +%constant int RMI__RESERVEDEXT199 = 21526; +%constant int RMI__RESERVEDEXT200 = 21527; +%constant int RMI__RESERVEDEXT201 = 21528; +%constant int RMI__RESERVEDEXT202 = 21529; +%constant int RMI__RESERVEDEXT203 = 21530; +%constant int RMI__RESERVEDEXT204 = 21531; +%constant int RMI__RESERVEDEXT205 = 21532; +%constant int RMI__RESERVEDEXT206 = 21533; +%constant int RMI__RESERVEDEXT207 = 21534; +%constant int RMI__RESERVEDEXT208 = 21535; +%constant int RMI__RESERVEDEXT209 = 21536; +%constant int RMI__RESERVEDEXT210 = 21537; +%constant int RMI__RESERVEDEXT211 = 21538; +%constant int RMI__RESERVEDEXT212 = 21539; +%constant int RMI__RESERVEDEXT213 = 21540; +%constant int RMI__RESERVEDEXT214 = 21541; +%constant int RMI__RESERVEDEXT215 = 21542; +%constant int RMI__RESERVEDEXT216 = 21543; +%constant int RMI__RESERVEDEXT217 = 21544; +%constant int RMI__RESERVEDEXT218 = 21545; +%constant int RMI__RESERVEDEXT219 = 21546; +%constant int RMI__RESERVEDEXT220 = 21547; +%constant int RMI__RESERVEDEXT221 = 21548; +%constant int RMI__RESERVEDEXT222 = 21549; +%constant int RMI__RESERVEDEXT223 = 21550; +%constant int RMI__RESERVEDEXT224 = 21551; +%constant int RMI__RESERVEDEXT225 = 21552; +%constant int RMI__RESERVEDEXT226 = 21553; +%constant int RMI__RESERVEDEXT227 = 21554; +%constant int RMI__RESERVEDEXT228 = 21555; +%constant int RMI__RESERVEDEXT229 = 21556; +%constant int RMI__RESERVEDEXT230 = 21557; +%constant int RMI__RESERVEDEXT231 = 21558; +%constant int RMI__RESERVEDEXT232 = 21559; +%constant int RMI__RESERVEDEXT233 = 21560; +%constant int RMI__RESERVEDEXT234 = 21561; +%constant int RMI__RESERVEDEXT235 = 21562; +%constant int RMI__RESERVEDEXT236 = 21563; +%constant int RMI__RESERVEDEXT237 = 21564; +%constant int RMI__RESERVEDEXT238 = 21565; +%constant int RMI__RESERVEDEXT239 = 21566; +%constant int RMI__RESERVEDEXT240 = 21567; +%constant int RMI__RESERVEDEXT241 = 21568; +%constant int RMI__RESERVEDEXT242 = 21569; +%constant int RMI__RESERVEDEXT243 = 21570; +%constant int RMI__RESERVEDEXT244 = 21571; +%constant int RMI__RESERVEDEXT245 = 21572; +%constant int RMI__RESERVEDEXT246 = 21573; +%constant int RMI__RESERVEDEXT247 = 21574; +%constant int RMI__RESERVEDEXT248 = 21575; +%constant int RMI__RESERVEDEXT249 = 21576; +%constant int RMI__RESERVEDEXT250 = 21577; +%constant int RMI__RESERVEDEXT251 = 21578; +%constant int RMI__RESERVEDEXT252 = 21579; +%constant int RMI__RESERVEDEXT253 = 21580; +%constant int RMI__RESERVEDEXT254 = 21581; +%constant int RMI__RESERVEDEXT255 = 21582; +%constant int RMI__RESERVEDEXT256 = 21583; +%constant int RMI__RESERVEDEXT257 = 21584; +%constant int RMI__RESERVEDEXT258 = 21585; +%constant int RMI__RESERVEDEXT259 = 21586; +%constant int RMI__RESERVEDEXT260 = 21587; +%constant int RMI__RESERVEDEXT261 = 21588; +%constant int RMI__RESERVEDEXT262 = 21589; +%constant int RMI__RESERVEDEXT263 = 21590; +%constant int RMI__RESERVEDEXT264 = 21591; +%constant int RMI__RESERVEDEXT265 = 21592; +%constant int RMI__RESERVEDEXT266 = 21593; +%constant int RMI__RESERVEDEXT267 = 21594; +%constant int RMI__RESERVEDEXT268 = 21595; +%constant int RMI__RESERVEDEXT269 = 21596; +%constant int RMI__RESERVEDEXT270 = 21597; +%constant int RMI__RESERVEDEXT271 = 21598; +%constant int RMI__RESERVEDEXT272 = 21599; +%constant int RMI__RESERVEDEXT273 = 21600; +%constant int RMI__RESERVEDEXT274 = 21601; +%constant int RMI__RESERVEDEXT275 = 21602; +%constant int RMI__RESERVEDEXT276 = 21603; +%constant int RMI__RESERVEDEXT277 = 21604; +%constant int RMI__RESERVEDEXT278 = 21605; +%constant int RMI__RESERVEDEXT279 = 21606; +%constant int RMI__RESERVEDEXT280 = 21607; +%constant int RMI__RESERVEDEXT281 = 21608; +%constant int RMI__RESERVEDEXT282 = 21609; +%constant int RMI__RESERVEDEXT283 = 21610; +%constant int RMI__RESERVEDEXT284 = 21611; +%constant int RMI__RESERVEDEXT285 = 21612; +%constant int RMI__RESERVEDEXT286 = 21613; +%constant int RMI__RESERVEDEXT287 = 21614; +%constant int RMI__RESERVEDEXT288 = 21615; +%constant int RMI__RESERVEDEXT289 = 21616; +%constant int RMI__RESERVEDEXT290 = 21617; +%constant int RMI__RESERVEDEXT291 = 21618; +%constant int RMI__RESERVEDEXT292 = 21619; +%constant int RMI__RESERVEDEXT293 = 21620; +%constant int RMI__RESERVEDEXT294 = 21621; +%constant int RMI__RESERVEDEXT295 = 21622; +%constant int RMI__RESERVEDEXT296 = 21623; +%constant int RMI__RESERVEDEXT297 = 21624; +%constant int RMI__RESERVEDEXT298 = 21625; +%constant int RMI__RESERVEDEXT299 = 21626; +%constant int RMI__RESERVEDEXT300 = 21627; +%constant int RMI__LASTEX2 = 21628; +%constant int RMI__tablesize = 1148; +%constant int RMI_S_rmi_scs_offsets = 56; +%constant int RMI_s_scs_nodename = 8; +%constant int RMI_c_scs_minsize = 56; +%constant int RMI_S_rmi_disk_offsets = 37; +%constant int RMI_s_disk_nodename = 8; +%constant int RMI_s_disk_volnamel = 8; +%constant int RMI_c_disk_minsize = 37; +%constant int RMI_S_rmi_disk_offsets_rev4 = 36; +%constant int RMI_s_disk_nodename_rev4 = 8; +%constant int RMI_s_disk_volnamel_rev4 = 8; +%constant int RMI_c_disk_minsize_rev4 = 36; +%constant int RMI_S_rmi_proc_class = 67; +%constant int RMI_s_proc_lname = 16; +%constant int RMI_c_proc_minsize = 67; diff --git a/Modules/vms/rms/build.com b/Modules/vms/rms/build.com new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcm1zL2J1aWxkLmNvbQ== --- /dev/null +++ b/Modules/vms/rms/build.com @@ -0,0 +1,22 @@ +$ set verify +$ hell: +$ ! RMS interface +$ define cc$include python$root:[include] +$ ccopt = "/nolist/noopt/names=(as_is,shortened)/define=(_OSF_SOURCE,_USE_STD_STAT)/include=cc$include/warn=disable=(QUESTCOMPARE,QUESTCOMPARE1)" +$ +$!! cc'ccopt' [.modules.vms.rms]rms.c +$ cc'ccopt' rms.c +$ link/share=[---.lib]_rms.exe rms.obj,sys$input/opt +sys$library:pthread$rtl.exe/share +python$shr/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__rms=PROCEDURE) +$ purge/log [...] +$ delete/log/noconf rms.obj;* +$ +$ +$!!! copy _rms.exe PYTHON$ROOT:[000000.lib.python3^.5.lib-dynload] +$!!! purge/log PYTHON$ROOT:[000000.lib.python3^.5.lib-dynload] +$ exit + diff --git a/Modules/vms/rms/indexedfile.py b/Modules/vms/rms/indexedfile.py new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcm1zL2luZGV4ZWRmaWxlLnB5 --- /dev/null +++ b/Modules/vms/rms/indexedfile.py @@ -0,0 +1,329 @@ +import _rms +import vms.fabdef +import vms.rmsdef +import struct +from decimal import Decimal + +class BCD: + def __init__(self, ipart, dpart): + self._ipart = ipart + self._dpart = dpart + def decode(self, val): + return Decimal(_rms.BCD2Tuple(val, self._dpart)) + def pack(self, val): + return _rms.Tuple2BCD(val.as_tuple(), self._ipart, + self._dpart) + +class IndexedFile: + def __init__(self, filename, item_class, auto_open_close=True): + self.filename = filename + self._status = None + self._item_class = item_class + self._auto_init = self._auto = auto_open_close + self._file = None + self._iterkeynum = self.primary_keynum() + + def __del__(self): + if self._file: + self.close() + + def primary_keynum(self): + raise NotImplementedError('IndexedFile.primary_keynum') + + def iterator_keynum(self, keynum = None): + prev = self._iterkeynum + if keynum is not None: + self._iterkeynum = keynum + return prev + + def __iter__(self): + if self._auto and not self._file: + self.open() + self._file.usekey(self._iterkeynum) + self._file.rewind() + self._open_by_iterator = True + else: + self._open_by_iterator = False + return self + + def __next__(self): + try: + rec = self._file.__next__() + except StopIteration: + if self._open_by_iterator: + self.close() + raise + return self._item_class.unpack(rec, self._item_class) + + def next(self): + return self.__next__() + + def usekey(self, keynum): + self._file.usekey(keynum) + + def rewind(self): + self._file.rewind() + + def find(self, keynum, keypack): + if not self._auto: + f = self._file + else: + acc = vms.fabdef.FAB_M_GET + shr = vms.fabdef.FAB_M_SHRPUT + vms.fabdef.FAB_M_SHRGET + vms.fabdef.FAB_M_SHRDEL + vms.fabdef.FAB_M_SHRUPD + f = _rms.file(self.filename, fac=acc, shr=shr) + if keynum is not None: + f.usekey(keynum) + try: + f.find(keypack) + except _rms.error as e: + if self._auto: + f.close() + if e.errno == vms.rmsdef.RMS__RNF: + return False + else: + raise + return True + + def open(self, + acc = vms.fabdef.FAB_M_PUT + vms.fabdef.FAB_M_GET + vms.fabdef.FAB_M_DEL + vms.fabdef.FAB_M_UPD, + shr = vms.fabdef.FAB_M_SHRPUT + vms.fabdef.FAB_M_SHRGET + vms.fabdef.FAB_M_SHRDEL + vms.fabdef.FAB_M_SHRUPD, + fop = 0): + self._auto = False + self._status = None + self._file = _rms.file(self.filename, fac=acc, shr=shr, fop=fop) + + def close(self): + self._file.close() + self._file = None + self._auto = self._auto_init + self._iterkeynum = self.primary_keynum() + + def status(self): + return self._status + + def put(self, rec): + if not self._auto: + f = self._file + else: + # add record to the file + acc = vms.fabdef.FAB_M_PUT + vms.fabdef.FAB_M_GET + vms.fabdef.FAB_M_DEL + vms.fabdef.FAB_M_UPD + shr = vms.fabdef.FAB_M_SHRPUT + vms.fabdef.FAB_M_SHRGET + vms.fabdef.FAB_M_SHRDEL + vms.fabdef.FAB_M_SHRUPD + fop = 0 + f = _rms.file(self.filename, fac=acc, shr=shr, fop=fop) + self._status = None + rec = rec.pack() + try: + self._status = f.put(rec) + except _rms.error: + if self._auto: + f.close() + raise + else: + if self._auto: + f.close() + + def delete(self, keynum, keyval): + if not self._auto: + f = self._file + else: + acc = vms.fabdef.FAB_M_GET + vms.fabdef.FAB_M_DEL + shr = vms.fabdef.FAB_M_SHRPUT + vms.fabdef.FAB_M_SHRGET + vms.fabdef.FAB_M_SHRDEL + vms.fabdef.FAB_M_SHRUPD + f = _rms.file(self.filename, fac=acc, shr=shr) + self._status = None + f.usekey(keynum) + key = self._item_class.pack_key(keynum, keyval) + try: + self._status = f.find(key) + self._status = f.delete() + except _rms.error: + if self._auto: + f.close() + raise + else: + if self._auto: + f.close() + + def delete_current(self): + if not self._file: + raise "File is not open" + self._status = None + try: + self._status = self._file.delete() + except _rms.error: + raise + + def fetch(self, keynum, keyval, item_class = None): + if item_class is None: + item_class = self._item_class + if not self._auto: + f = self._file + else: + acc = vms.fabdef.FAB_M_GET + shr = vms.fabdef.FAB_M_SHRPUT + vms.fabdef.FAB_M_SHRGET + vms.fabdef.FAB_M_SHRDEL + vms.fabdef.FAB_M_SHRUPD + f = _rms.file(self.filename, fac=acc, shr=shr) + f.usekey(keynum) + self._status = None + key = self._item_class.pack_key(keynum, keyval) + try: + self._status, r = f.fetch(key) + except _rms.error: + if self._auto: + f.close() + raise + else: + if self._auto: + f.close() + if self._status == vms.rmsdef.RMS__RNF: + return None + return item_class.unpack(r, item_class) + + def update(self, rec): + if not self._auto: + f = self._file + else: + acc = vms.fabdef.FAB_M_GET + vms.fabdef.FAB_M_UPD + shr = vms.fabdef.FAB_M_SHRPUT + vms.fabdef.FAB_M_SHRGET + vms.fabdef.FAB_M_SHRDEL + vms.fabdef.FAB_M_SHRUPD + f = _rms.file(self.filename, fac=acc, shr=shr) + self._status = None + f.usekey(self.primary_keynum()) + key = self._item_class.pack_key(self.primary_keynum(), + rec.keyval(self.primary_keynum())) + try: + self._status, r = f.fetch(key) + rec = rec.pack() + self._status = f.update(rec) + except _rms.error: + if self._auto: + f.close() + raise + else: + if self._auto: + f.close() + + def update_current(self, rec): + if not self._file: + raise "File is not open" + self._status = None + try: + rec = rec.pack() + self._status = self._file.update(rec) + except _rms.error: + raise + + def reset(self): + if not self._auto: + f = self._file + else: + acc = vms.fabdef.FAB_M_PUT + vms.fabdef.FAB_M_GET + vms.fabdef.FAB_M_DEL + vms.fabdef.FAB_M_UPD + shr = vms.fabdef.FAB_M_SHRPUT + vms.fabdef.FAB_M_SHRGET + vms.fabdef.FAB_M_SHRDEL + vms.fabdef.FAB_M_SHRUPD + f = _rms.file(self.filename, fac=acc, shr=shr) + self._status = None + f.rewind() + s = f.find() + while(s != vms.rmsdef.RMS__EOF): + f.delete() + s = f.find() + if self._auto: + f.close() + + def fetchall(self, keynum, keypack = None, stop = None, limit = None): + if not self._auto: + f = self._file + else: + acc = vms.fabdef.FAB_M_GET + shr = vms.fabdef.FAB_M_SHRPUT + vms.fabdef.FAB_M_SHRGET + vms.fabdef.FAB_M_SHRDEL + vms.fabdef.FAB_M_SHRUPD + f = _rms.file(self.filename, fac=acc, shr=shr) + self._status = None + f.usekey(keynum) + f.rewind() + if keypack: + try: + f.find(keypack) + except _rms.error as e: + if self._auto: + f.close() + if e.errno == vms.rmsdef.RMS__RNF: + return [] + else: + raise + res = [] + n = 0 + for r in f: + rec = self._item_class.unpack(r, self._item_class) + if stop and stop(rec): + break + res.append(rec) + n += 1 + if limit is not None and n >= limit: + break + if self._auto: + f.close() + return res + +class Record: + autoDecodeRecord = True + _field = [] + _fixsize = 0 + _fmt = '' + _varsize = 0 + def __init__(self, data, conv = True, rec = None, opt = None): + for i in range(len(self._field)): + setattr(self, self._field[i][0], data[i]) + self._varrec = [] +# self._rec = rec + self._conv = conv + if self._varsize > 0: + vartbl = data[-1] + for i in range(len(vartbl) / self._varsize): + self._varrec.append( + self._varclass.unpack(vartbl[i * self._varsize : (i + 1) * self._varsize], + self._varclass)) + if self.autoDecodeRecord: + self.decode() + + def pack_key(keynum, keyval): + raise NotImplementedError('Record.pack_key') + pack_key = staticmethod(pack_key) + + def keyval(self, keynum): + raise NotImplementedError('Record.keyval') + + def decode(self): + if not self._conv: + for i in range(len(self._field)): + if len(self._field[i]) > 2: + v = getattr(self, self._field[i][0]) + v = self._field[i][2].decode(v) + setattr(self, self._field[i][0], v) + self._conv = True + + def pack(self): + val = [] + for i in range(len(self._field)): + v = getattr(self, self._field[i][0]) + if len(self._field[i]) > 2: + if self._conv: + v = self._field[i][2].pack(v) + if isinstance(v, str): + val.append(v.encode()) + else: + val.append(v) + # print(*val) + lst = [struct.pack(self._fmt, *val)] + for v in self._varrec: + lst.append(v.pack()) + r = b''.join(lst) +# if (r != self._rec): +# print 'OOps!' +# print repr(r) +# print repr(self.rec) + + return r + + def unpack(rec, classe, opt = None): + varfmt = '' + if len(rec) > classe._fixsize: + varfmt = '%ds' % (len(rec) - classe._fixsize) + lst = list(struct.unpack(classe._fmt + varfmt, rec)) + return classe(lst, False, rec, opt) + unpack = staticmethod(unpack) diff --git a/Modules/vms/rms/pyrms.c b/Modules/vms/rms/pyrms.c new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcm1zL3B5cm1zLmM= --- /dev/null +++ b/Modules/vms/rms/pyrms.c @@ -0,0 +1,1524 @@ +#define __NEW_STARLET +#include <rms.h> +#include <ssdef.h> +#include <stsdef.h> +#include <descrip.h> +#include <starlet.h> +#include <fdl$routines.h> +#include <ctype.h> +#include <string.h> + +#include "Python.h" +#include "structmember.h" + +#include "pyrms.h" + + +#define RMSATTR_K_ORG 0 +#define RMSATTR_K_RFM 1 +#define RMSATTR_K_RAT 2 +#define RMSATTR_K_MRS 3 +#define RMSATTR_K_LRL 4 + +/* update next if items are added */ +#define RMSATTR_K_LAST RMSATTR_K_LRL + +#define PARSE_K_NODE 0 +#define PARSE_K_DEV 1 +#define PARSE_K_DIR 2 +#define PARSE_K_NAME 3 +#define PARSE_K_TYPE 4 +#define PARSE_K_VER 5 + +static PyObject *RMSError; +PyDoc_STRVAR(RMSError__doc__, "OpenVMS RMS call failed"); + +PyTypeObject RmsFile_Type; + +static void insint(PyObject * d, char *name, int value) +{ + PyObject *v = PyLong_FromLong((long) value); + if (!v || PyDict_SetItemString(d, name, v)) + Py_FatalError("can't initialize sane module"); + + Py_DECREF(v); +} + +static void getmsg(int cond, char *buf, int buflen) +{ + int s; + struct dsc$descriptor_s bufD; + char *tmp; + unsigned short int msglen; + + tmp = malloc(buflen); + assert(tmp); + + bufD.dsc$w_length = buflen - 1; + bufD.dsc$b_dtype = DSC$K_DTYPE_T; + bufD.dsc$b_class = DSC$K_CLASS_S; + bufD.dsc$a_pointer = tmp; + + s = sys$getmsg(cond, &msglen, &bufD, 15, 0); + + if (!$VMS_STATUS_SUCCESS(s)) { + strncpy(buf, "sys$getmsg failure", buflen); + buf[buflen - 1] = '\0'; + } else { + strcpy(buf, tmp); + } + + free(tmp); + buf[msglen] = '\0'; +} + +static long long_converter(PyObject * o) +{ + long res; + + if (PyLong_Check(o)) + res = PyLong_AsLong(o); + else if (PyLong_Check(o)) + res = PyLong_AsUnsignedLong(o); + else { + res = 0; + PyErr_SetString(PyExc_TypeError, "an integer is required"); + } + + return res; +} + +static unsigned long ulong_converter(PyObject * o) +{ + unsigned long res; + + if (PyLong_Check(o)) + res = PyLong_AsLong(o); + else if (PyLong_Check(o)) + res = PyLong_AsUnsignedLong(o); + else { + res = 0; + PyErr_SetString(PyExc_TypeError, "an integer is required"); + } + + return res; +} + +static void +fill_fields(RmsFileObject * self, char *fn, int access, int share, + unsigned int fop) +{ + self->fab = cc$rms_fab; + self->rab = cc$rms_rab; + self->sum = cc$rms_xabsum; + self->naml = cc$rms_naml; + self->area = 0; + self->key = 0; + self->flags = 0; + self->fab.fab$b_fac = access; + self->fab.fab$b_shr = share; + self->fab.fab$l_fna = (char *) -1; + self->fab.fab$b_fns = 0; + self->fab.fab$l_fop = fop; + self->fab.fab$l_xab = (void *) & self->sum; + + self->fab.fab$l_naml = (void *) & self->naml; + + strncpy(self->primarySpec, fn, sizeof(self->primarySpec) - 1); + self->primarySpec[sizeof(self->primarySpec) - 1] = '\0'; + + self->naml.naml$l_long_filename = (void *) self->primarySpec; + self->naml.naml$l_long_filename_size = strlen(self->primarySpec); + + self->naml.naml$l_esa = (void *) self->Naml_Shrt_Esa; + self->naml.naml$b_ess = sizeof(self->Naml_Shrt_Esa) - 1; + self->naml.naml$l_rsa = (void *) self->Naml_Shrt_Rsa; + self->naml.naml$b_rss = sizeof(self->Naml_Shrt_Rsa) - 1; + + self->naml.naml$l_long_expand = (void *) self->Naml_Long_Esa; + self->naml.naml$l_long_expand_alloc = sizeof(self->Naml_Long_Esa) - 1; + self->naml.naml$l_long_result = (void *) self->Naml_Long_Rsa; + self->naml.naml$l_long_result_alloc = sizeof(self->Naml_Long_Rsa) - 1; + + self->naml.naml$v_synchk = 0; // Have $PARSE do directory existence check + + self->naml.naml$v_no_short_upcase = 1; // Don't upcase short expanded spec. +} + +static int open_file(RmsFileObject * self) +{ + int stat; + int i; + XABKEYDEF *key; + XABALLDEF *area; + void **xab_chain; + + stat = sys$open((void *) & self->fab); + + if (!$VMS_STATUS_SUCCESS(stat)) { + return stat; + } + + if (self->fab.fab$b_org != FAB$C_IDX) { + return RMS$_ORG; + } + + xab_chain = (void *) & self->fab.fab$l_xab; + + i = self->sum.xab$b_nok; + + self->key = key = calloc(i, sizeof(XABKEYDEF)); + assert(self->key); + while (--i >= 0) { + *key = cc$rms_xabkey; + key->xab$b_ref = i; + key->xab$l_nxt = *xab_chain; + *xab_chain = key; + key++; + } + + i = self->sum.xab$b_noa; + self->area = area = calloc(i, sizeof(XABALLDEF)); + assert(self->area); + while (--i >= 0) { + *area = cc$rms_xaball; + area->xab$b_aid = i; + area->xab$l_nxt = *xab_chain; + *xab_chain = area; + area++; + } + + stat = sys$display((void *) & self->fab); + + if (!$VMS_STATUS_SUCCESS(stat)) { + return stat; + } + + self->naml.naml$l_esa[self->naml.naml$b_esl] = '\0'; + self->naml.naml$l_rsa[self->naml.naml$b_rsl] = '\0'; + self->naml.naml$l_long_expand[self->naml.naml$l_long_expand_size] = + '\0'; + self->naml.naml$l_long_result[self->naml.naml$l_long_result_size] = + '\0'; + + self->flags |= PYRMS_M_OPEN; + + self->rab.rab$l_fab = (void *) & self->fab; + + /* default to primary index */ + self->rab.rab$b_krf = 0; + self->rab.rab$l_ubf = NULL; + self->rab.rab$w_usz = self->fab.fab$w_mrs; + + stat = sys$connect((void *) & self->rab); + + if (!$VMS_STATUS_SUCCESS(stat)) { + return stat; + } + + return stat; +} + +static int close_file(RmsFileObject * self) +{ + int stat; + + stat = sys$disconnect((void *) & self->rab); + + if (!$VMS_STATUS_SUCCESS(stat)) { + return stat; + } + + stat = sys$close((void *) & self->fab); + + if (!$VMS_STATUS_SUCCESS(stat)) { + return stat; + } + + return stat; +} + + +static int flush_file(RmsFileObject * self) +{ + int stat; + + stat = sys$flush((void *) & self->rab); + + if (!$VMS_STATUS_SUCCESS(stat)) { + return stat; + } + + return stat; +} + + +static int free_file(RmsFileObject * self) +{ + int stat; + + stat = sys$free((void *) & self->rab); + if (!$VMS_STATUS_SUCCESS(stat)) { + return stat; + } + + return stat; +} + + +static int release_file(RmsFileObject * self) +{ + int stat; + + stat = sys$release((void *) & self->rab); + + if (!$VMS_STATUS_SUCCESS(stat)) { + return stat; + } + + return stat; +} + + +static int usekey(RmsFileObject * self, int keynum) +{ + if (keynum >= self->sum.xab$b_nok) { + return SS$_INVARG; + } + + self->rab.rab$b_krf = keynum; + return RMS$_NORMAL; +} + + +static int put(RmsFileObject * self, char *buf, int len) +{ + char *tmp; + int stat; + + tmp = malloc(len); + assert(tmp); + memcpy(tmp, buf, len); + self->rab.rab$b_rac = RAB$C_KEY; + self->rab.rab$l_rbf = tmp; + self->rab.rab$w_rsz = len; + + stat = sys$put((void *) & self->rab); + free(tmp); + + if (!$VMS_STATUS_SUCCESS(stat)) { + return stat; + } + + return stat; +} + + +static int update(RmsFileObject * self, char *buf, int len) +{ + char *tmp; + int stat; + + tmp = malloc(len); + assert(tmp); + memcpy(tmp, buf, len); + self->rab.rab$l_rbf = tmp; + self->rab.rab$w_rsz = len; + + stat = sys$update((void *) & self->rab); + free(tmp); + + if (!$VMS_STATUS_SUCCESS(stat)) { + return stat; + } + + return stat; +} + +static int +fetch(RmsFileObject * self, char *keyval, int len, char *buf, int *retlen) +{ + char *key = NULL; + int stat; + + if (keyval) { + key = malloc(len); + assert(key); + memcpy(key, keyval, len); + self->rab.rab$l_kbf = key; + self->rab.rab$b_ksz = len; + self->rab.rab$b_rac = RAB$C_KEY; + } else { + self->rab.rab$b_rac = RAB$C_SEQ; + } + + self->rab.rab$l_ubf = (void *) buf; + + stat = sys$get((void *) & self->rab); + + if (key) { + free(key); + } + + if (!$VMS_STATUS_SUCCESS(stat)) { + return stat; + } + + *retlen = self->rab.rab$w_rsz; + return stat; +} + + +static int find(RmsFileObject * self, char *keyval, int len) +{ + char *tmp = NULL; + int stat; + + if (keyval) { + tmp = malloc(len); + assert(tmp); + memcpy(tmp, keyval, len); + self->rab.rab$l_kbf = tmp; + self->rab.rab$b_ksz = len; + self->rab.rab$b_rac = RAB$C_KEY; + } else { + self->rab.rab$b_rac = RAB$C_SEQ; + } + + stat = sys$find((void *) & self->rab); + + if (tmp) { + free(tmp); + } + + if (!$VMS_STATUS_SUCCESS(stat)) { + return stat; + } + + return stat; +} + + +static int delrec(RmsFileObject * self, char *keyval, int len) +{ + char *tmp = NULL; + int stat; + + if (keyval) { + tmp = malloc(len); + assert(tmp); + memcpy(tmp, keyval, len); + self->rab.rab$l_kbf = tmp; + self->rab.rab$b_ksz = len; + self->rab.rab$b_rac = RAB$C_KEY; + + stat = sys$find((void *) & self->rab); + + if (!$VMS_STATUS_SUCCESS(stat)) { + free(tmp); + return stat; + } + } else { + self->rab.rab$b_rac = RAB$C_SEQ; + } + + stat = sys$delete((void *) & self->rab); + + if (tmp) { + free(tmp); + } + + if (!$VMS_STATUS_SUCCESS(stat)) { + return stat; + } + + return stat; +} + +// BRC +#define PyFileObject PyObject + +static PyObject *file_getiter(PyFileObject * f) +{ + Py_INCREF(f); + return (PyObject *) f; +} + +static PyObject *file_iternext(PyFileObject * self) +{ + int stat; + int retlen = 0; + PyObject *res; + char buf[((RmsFileObject *) self)->fab.fab$w_mrs]; + + stat = fetch((RmsFileObject *) self, NULL, 0, buf, &retlen); + + if (stat == RMS$_EOF) { + return NULL; + } + + if (!$VMS_STATUS_SUCCESS(stat)) { + char msg[256]; + PyObject *v; + getmsg(stat, msg, sizeof(msg)); + v = Py_BuildValue("(is)", stat, msg); + if (v != NULL) { + PyErr_SetObject(RMSError, v); + Py_DECREF(v); + } + return NULL; + } + + if (stat == RMS$_EOF) { + Py_INCREF(Py_None); + res = Py_None; + } else { + res = PyBytes_FromStringAndSize(buf, retlen); + } + + return res; +} + + +static RmsFileObject *newRmsFileObject(char *fn, int access, int share, + unsigned int fop) +{ + RmsFileObject *self; + self = PyObject_New(RmsFileObject, &RmsFile_Type); + if (self == NULL) + return NULL; + + fill_fields(self, fn, access, share, fop); + return (self); +} + +static void RmsFile_dealloc(RmsFileObject * self) +{ + if (self->flags & PYRMS_M_OPEN) { + int stat; + stat = close_file(self); + if (!$VMS_STATUS_SUCCESS(stat)) { + char msg[256]; + PyObject *v; + getmsg(stat, msg, sizeof(msg)); + v = Py_BuildValue("(is)", stat, msg); + if (v != NULL) { + PyErr_SetObject(RMSError, v); + Py_DECREF(v); + } + } + self->flags ^= PYRMS_M_OPEN; + } + + if (self->area) { + free(self->area); + self->area = NULL; + } + + if (self->key) { + free(self->key); + self->key = NULL; + } + + PyObject_Del(self); +} + + +static PyObject *rmsFile_close(RmsFileObject * self, PyObject * args) +{ + int stat; + + if (!PyArg_ParseTuple(args, ":close")) { + return NULL; + } + + stat = close_file(self); + + if (!$VMS_STATUS_SUCCESS(stat)) { + char msg[256]; + PyObject *v; + getmsg(stat, msg, sizeof(msg)); + v = Py_BuildValue("(is)", stat, msg); + if (v != NULL) { + PyErr_SetObject(RMSError, v); + Py_DECREF(v); + } + return NULL; + } + + self->flags ^= PYRMS_M_OPEN; + return (PyLong_FromLong(stat)); +} + + +static PyObject *rmsFile_flush(RmsFileObject * self, PyObject * args) +{ + int stat; + + if (!PyArg_ParseTuple(args, ":flush")) { + return NULL; + } + + stat = flush_file(self); + + if (!$VMS_STATUS_SUCCESS(stat)) { + char msg[256]; + PyObject *v; + getmsg(stat, msg, sizeof(msg)); + v = Py_BuildValue("(is)", stat, msg); + if (v != NULL) { + PyErr_SetObject(RMSError, v); + Py_DECREF(v); + } + return NULL; + } + + return (PyLong_FromLong(stat)); +} + + +static PyObject *rmsFile_free(RmsFileObject * self, PyObject * args) +{ + int stat; + + if (!PyArg_ParseTuple(args, ":free")) { + return NULL; + } + + stat = free_file(self); + + if (!$VMS_STATUS_SUCCESS(stat)) { + char msg[256]; + PyObject *v; + getmsg(stat, msg, sizeof(msg)); + v = Py_BuildValue("(is)", stat, msg); + if (v != NULL) { + PyErr_SetObject(RMSError, v); + Py_DECREF(v); + } + return NULL; + } + + return (PyLong_FromLong(stat)); +} + + + +static PyObject *rmsFile_release(RmsFileObject * self, PyObject * args) +{ + int stat; + + if (!PyArg_ParseTuple(args, ":release")) { + return NULL; + } + + stat = release_file(self); + + if (!$VMS_STATUS_SUCCESS(stat)) { + char msg[256]; + PyObject *v; + getmsg(stat, msg, sizeof(msg)); + v = Py_BuildValue("(is)", stat, msg); + if (v != NULL) { + PyErr_SetObject(RMSError, v); + Py_DECREF(v); + } + return NULL; + } + + return (PyLong_FromLong(stat)); +} + + +static PyObject *rmsFile_rewind(RmsFileObject * self, PyObject * args, + PyObject * kwargs) +{ + int stat; + int keynum = -1; + char *kwnames[] = { + "keynum", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "|i:rewind", + kwnames, &keynum)) + return NULL; + + + if (keynum >= 0) { + stat = usekey((RmsFileObject *) self, keynum); + if (!$VMS_STATUS_SUCCESS(stat)) { + char msg[256]; + PyObject *v; + getmsg(stat, msg, sizeof(msg)); + v = Py_BuildValue("(is)", stat, msg); + if (v != NULL) { + PyErr_SetObject(RMSError, v); + Py_DECREF(v); + } + return NULL; + } + } + stat = sys$rewind((void *) & self->rab, 0, 0); + if (!$VMS_STATUS_SUCCESS(stat)) { + char msg[256]; + PyObject *v; + getmsg(stat, msg, sizeof(msg)); + v = Py_BuildValue("(is)", stat, msg); + if (v != NULL) { + PyErr_SetObject(RMSError, v); + Py_DECREF(v); + } + return NULL; + } + + return PyLong_FromLong(stat); +} + +static PyObject *rmsFile_usekey(RmsFileObject * self, PyObject * args, + PyObject * kwargs) +{ + int stat; + int keynum = 0; + PyObject *res; + char *kwnames[] = { + "keynum", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "|i:usekey", + kwnames, &keynum)) + return NULL; + + stat = usekey((RmsFileObject *) self, keynum); + if (!$VMS_STATUS_SUCCESS(stat)) { + char msg[256]; + PyObject *v; + getmsg(stat, msg, sizeof(msg)); + v = Py_BuildValue("(is)", stat, msg); + if (v != NULL) { + PyErr_SetObject(RMSError, v); + Py_DECREF(v); + } + return NULL; + } + + return PyLong_FromLong(stat); +} + +static PyObject *rmsFile_put(RmsFileObject * self, PyObject * args, + PyObject * kwargs) +{ + int stat; + char *buf = NULL; + int len = 0; + PyObject *res; + char *kwnames[] = { + "record", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "s#:put", + kwnames, &buf, &len)) + return NULL; + + stat = put((RmsFileObject *) self, buf, len); + if (!$VMS_STATUS_SUCCESS(stat)) { + char msg[256]; + PyObject *v; + getmsg(stat, msg, sizeof(msg)); + v = Py_BuildValue("(is)", stat, msg); + if (v != NULL) { + PyErr_SetObject(RMSError, v); + Py_DECREF(v); + } + return NULL; + } + + return PyLong_FromLong(stat); +} + +static PyObject *rmsFile_update(RmsFileObject * self, PyObject * args, + PyObject * kwargs) +{ + int stat; + char *buf = NULL; + int len = 0; + PyObject *res; + char *kwnames[] = { + "record", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "s#:update", + kwnames, &buf, &len)) + return NULL; + + stat = update((RmsFileObject *) self, buf, len); + if (!$VMS_STATUS_SUCCESS(stat)) { + char msg[256]; + PyObject *v; + getmsg(stat, msg, sizeof(msg)); + v = Py_BuildValue("(is)", stat, msg); + if (v != NULL) { + PyErr_SetObject(RMSError, v); + Py_DECREF(v); + } + return NULL; + } + + return PyLong_FromLong(stat); +} + +static PyObject *rmsFile_fetch(RmsFileObject * self, PyObject * args, + PyObject * kwargs) +{ + int stat; + char *keyval = NULL; + int len = 0; + PyObject *res; + char *kwnames[] = { + "key", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "|s#:fetch", + kwnames, &keyval, &len)) + return NULL; + + char buf[((RmsFileObject *) self)->fab.fab$w_mrs]; + int retlen = 0; + + stat = fetch((RmsFileObject *) self, keyval, len, buf, &retlen); + if (stat != RMS$_EOF && stat != RMS$_RNF && !$VMS_STATUS_SUCCESS(stat)) { + char msg[256]; + PyObject *v; + getmsg(stat, msg, sizeof(msg)); + v = Py_BuildValue("(is)", stat, msg); + if (v != NULL) { + PyErr_SetObject(RMSError, v); + Py_DECREF(v); + } + return NULL; + } + + { + PyObject *o1 = PyLong_FromLong(stat); + PyObject *o2; + if (stat == RMS$_EOF || stat == RMS$_RNF) { + Py_INCREF(Py_None); + o2 = Py_None; + } else { + o2 = PyBytes_FromStringAndSize(buf, retlen); + } + res = PyTuple_New(2); + PyTuple_SetItem(res, 0, o1); + PyTuple_SetItem(res, 1, o2); + } + return res; +} + +static PyObject *rmsFile_find(RmsFileObject * self, PyObject * args, + PyObject * kwargs) +{ + int stat; + char *keyval = NULL; + int len = 0; + char *kwnames[] = { + "key", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "|s#:find", + kwnames, &keyval, &len)) + return NULL; + + stat = find((RmsFileObject *) self, keyval, len); + if (stat != RMS$_EOF && !$VMS_STATUS_SUCCESS(stat)) { + char msg[256]; + PyObject *v; + getmsg(stat, msg, sizeof(msg)); + v = Py_BuildValue("(is)", stat, msg); + if (v != NULL) { + PyErr_SetObject(RMSError, v); + Py_DECREF(v); + } + return NULL; + } + + return PyLong_FromLong(stat); +} + +static PyObject *rmsFile_delete(RmsFileObject * self, PyObject * args, + PyObject * kwargs) +{ + int stat; + char *keyval = NULL; + int len = 0; + char *kwnames[] = { + "key", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "|s#:delete", + kwnames, &keyval, &len)) + return NULL; + + stat = delrec((RmsFileObject *) self, keyval, len); + if (stat != RMS$_EOF && !$VMS_STATUS_SUCCESS(stat)) { + char msg[256]; + PyObject *v; + getmsg(stat, msg, sizeof(msg)); + v = Py_BuildValue("(is)", stat, msg); + if (v != NULL) { + PyErr_SetObject(RMSError, v); + Py_DECREF(v); + } + return NULL; + } + + return PyLong_FromLong(stat); +} + +static PyMethodDef RmsFile_methods[] = { + {"close", (PyCFunction) rmsFile_close, METH_VARARGS, + PyDoc_STR("close() -> status")}, + {"delete", (PyCFunction) rmsFile_delete, METH_VARARGS | METH_KEYWORDS, + PyDoc_STR("delete([key]) -> status")}, + {"fetch", (PyCFunction) rmsFile_fetch, METH_VARARGS | METH_KEYWORDS, + PyDoc_STR("get([key]) -> status, record")}, + {"find", (PyCFunction) rmsFile_find, METH_VARARGS | METH_KEYWORDS, + PyDoc_STR("find([key]) -> status")}, + {"flush", (PyCFunction) rmsFile_flush, METH_VARARGS, + PyDoc_STR("flush() -> status")}, + {"free", (PyCFunction) rmsFile_free, METH_VARARGS, + PyDoc_STR("free() -> status")}, + {"put", (PyCFunction) rmsFile_put, METH_VARARGS | METH_KEYWORDS, + PyDoc_STR("put(record) -> status")}, + {"release", (PyCFunction) rmsFile_release, METH_VARARGS, + PyDoc_STR("release() -> status")}, + {"rewind", (PyCFunction) rmsFile_rewind, METH_VARARGS | METH_KEYWORDS, + PyDoc_STR("rewind([keynum]) -> status")}, + {"update", (PyCFunction) rmsFile_update, METH_VARARGS | METH_KEYWORDS, + PyDoc_STR("update(record) -> status")}, + {"usekey", (PyCFunction) rmsFile_usekey, METH_VARARGS | METH_KEYWORDS, + PyDoc_STR("use_key([keynum]) -> status")}, + {NULL, NULL} /* sentinel */ + +}; + +#define OFF(x) offsetof(RmsFileObject, x) + +static PyMemberDef RmsFile_memberlist[] = { + {"longname", T_STRING_INPLACE, OFF(Naml_Long_Rsa), READONLY, + "long filename"}, + {"nok", T_UBYTE, OFF(sum.xab$b_nok), READONLY, + "number of keys"}, + {"org", T_UBYTE, OFF(fab.fab$b_org), READONLY, + "file organization"}, + {NULL} /* Sentinel */ + +}; + +PyTypeObject RmsFile_Type = { + PyObject_HEAD_INIT(NULL) + "rmsFile", /*tp_name */ + sizeof(RmsFileObject), /*tp_basicsize */ + 0, /*tp_itemsize */ + /* methods */ + (destructor) RmsFile_dealloc, /*tp_dealloc */ + 0, /*tp_print */ + 0, /*tp_getattr */ + 0, /*tp_setattr */ + NULL, /*formerly known as tp_compare or tp_reserved */ + 0, /*tp_repr */ + 0, /*tp_as_number */ + 0, /*tp_as_sequence */ + 0, /*tp_as_mapping */ + 0, /*tp_hash */ + 0, /*tp_call */ + 0, /*tp_str */ + PyObject_GenericGetAttr, /*tp_getattro */ + 0, /*tp_setattro */ + 0, /*tp_as_buffer */ + Py_TPFLAGS_DEFAULT, /*tp_flags */ + 0, /*tp_doc */ + 0, /*tp_traverse */ + 0, /*tp_clear */ + 0, /*tp_richcompare */ + 0, /*tp_weaklistoffset */ + (getiterfunc) file_getiter, /*tp_iter */ + (iternextfunc) file_iternext, /*tp_iternext */ + RmsFile_methods, /*tp_methods */ + RmsFile_memberlist, /* tp_members */ + 0, /*tp_getset */ + 0, /*tp_base */ + 0, /*tp_dict */ + 0, /*tp_descr_get */ + 0, /*tp_descr_set */ + 0, /*tp_dictoffset */ + 0, /*tp_init */ + 0, /*tp_alloc */ + 0, /*tp_new */ + 0, /*tp_free */ + 0, /*tp_is_gc */ + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + 0, + NULL +}; + +static PyObject *rmsFile_new(PyObject * self, PyObject * args, + PyObject * kwargs) +{ + char *name; + unsigned int alq = 0; + unsigned short bls = 0; + unsigned short deq = 0; + unsigned int fop = cc$rms_fab.fab$l_fop; + unsigned short gbc = 0; + unsigned char mbc = 0; + char mbf = 0; + unsigned char rat = 0; + unsigned char rfm = 0; + unsigned int rop = 0; + char rtv = 0; + int fac = FAB$M_GET; + int shr = FAB$M_SHRPUT | FAB$M_SHRGET | FAB$M_SHRDEL | FAB$M_SHRUPD; + PyObject *res; +#if 0 + char *kwnames[] = { + "name", "alq", "bls", "deq", "fac", "fop", "gbc", + "mbc", "mbf", "rat", "rfm", "rop", "rtv", "shr", NULL + }; +#else + char *kwnames[] = { + "name", "fac", "shr", "fop", NULL + }; +#endif + + if (!PyArg_ParseTupleAndKeywords + (args, kwargs, (char *) "s|iiI:open_file", kwnames, &name, &fac, + &shr, &fop)) + return NULL; + + res = (PyObject *) newRmsFileObject(name, fac, shr, fop); + + if (res) { + int stat; + stat = open_file((RmsFileObject *) res); + if (!$VMS_STATUS_SUCCESS(stat)) { + char msg[256]; + PyObject *v; + getmsg(stat, msg, sizeof(msg)); + v = Py_BuildValue("(is)", stat, msg); + if (v != NULL) { + PyErr_SetObject(RMSError, v); + Py_DECREF(v); + } + Py_DECREF(res); + return NULL; + } + } + + return res; +} + +static PyObject *rms_bcd2string(PyObject * dummy, PyObject * args) +{ + PyObject *result = NULL; + char *temp; + char *str; + int len; + int prec; + int i, j, k; + char c; + + if (!PyArg_ParseTuple(args, "s#i", &temp, &len, &prec)) { + return NULL; + } + str = PyMem_Malloc(2 * len + 2); + c = (temp[len - 1] & 0x0F); + if ((c != 0x0C) && (c != 0x0D)) { + PyMem_Free(str); + PyErr_SetString(PyExc_TypeError, "Invalid sign"); + return NULL; + } + if ((temp[len - 1] & 0x0F) == 0x0C) + str[0] = '+'; + else + str[0] = '-'; + for (j = 0, i = 1; i < (2 * len - prec); ++i) { + if (i & 1) { + str[i] = '0' + ((temp[j] & 0xF0) >> 4); + } else { + str[i] = '0' + (temp[j] & 0x0F); + ++j; + } + } + i = 2 * len - prec; + str[i++] = '.'; + for (; i < 2 * len + 1 + 1; ++i) { + if (i & 1) { + str[i] = '0' + (temp[j] & 0x0F); + ++j; + } else { + str[i] = '0' + ((temp[j] & 0xF0) >> 4); + } + } + + result = PyBytes_FromStringAndSize(str, 2 * len + 1); + PyMem_Free(str); + return result; +} + +static PyObject *rms_string2bcd(PyObject * dummy, PyObject * args) +{ + PyObject *result = NULL; + char *temp; + int len; + int prec; + int n; + char *p = NULL; + int i; + + if (!PyArg_ParseTuple(args, "sii", &temp, &n, &prec)) { + return NULL; + } + + if ((n + prec + 1) & 1) + ++n; + len = strlen(temp); + if ((n + prec > 31) || (len > 33)) { + PyErr_SetString(PyExc_TypeError, "Invalid len"); + return NULL; + } + if (strchr("+-0123456789", *temp) == NULL) { + PyErr_SetString(PyExc_TypeError, "Invalid first character"); + return NULL; + } + + for (i = 1; i < len; ++i) { + if ((temp[i] == '.') && (p == NULL)) + p = &(temp[i]) + 1; + else if (!isdigit(temp[i])) { + PyErr_SetString(PyExc_TypeError, "Invalid numeric"); + return NULL; + } + } + + { + long long in; + long long id = 0; + char astr[34]; + char rstr[16]; + char fmt[20]; + char sign = 0x0C; + int alen; + + sscanf(temp, "%lld", &in); + if (p) + sscanf(p, "%lld", &id); + if (in < 0) { + in = -in; + sign = 0x0D; + } + sprintf(fmt, "%%0%dlld%%lld", n); + sprintf(astr, fmt, in, id); + alen = strlen(astr); + if (alen > n + prec) + astr[n + prec] = '\0'; + else if (alen < n + prec) { + for (i = n + prec - 1; i >= alen; --i) + astr[i] = '0'; + astr[n + prec] = '\0'; + } + for (i = 0; i < (n + prec - 1) / 2; ++i) { + rstr[i] = (astr[2 * i] - '0') * 16 + (astr[2 * i + 1] - '0'); + } + rstr[(n + prec - 1) / 2] = (astr[n + prec - 1] - '0') * 16 + sign; + result = PyBytes_FromStringAndSize(rstr, (n + prec + 1) / 2); + return result; + } +} + +static PyObject *rms_bcd2tuple(PyObject * dummy, PyObject * args) +{ + PyObject *result = NULL; + char *temp; + int len; + int prec; + int i, j, k; + char c; + int sign; + PyObject *pdigit = NULL; + + if (!PyArg_ParseTuple(args, "s#i", &temp, &len, &prec)) { + return NULL; + } + c = (temp[len - 1] & 0x0F); + if ((c != 0x0C) && (c != 0x0D)) { + PyErr_SetString(PyExc_TypeError, "Invalid sign"); + return NULL; + } + result = PyTuple_New(3); + pdigit = PyTuple_New(2 * len - 1); + if ((temp[len - 1] & 0x0F) == 0x0C) + sign = 0; + else + sign = 1; + PyTuple_SetItem(result, 0, (PyObject *) PyLong_FromLong(sign)); + PyTuple_SetItem(result, 1, pdigit); + PyTuple_SetItem(result, 2, (PyObject *) PyLong_FromLong(-prec)); + for (j = 0, i = 0; i < (2 * len - 1); ++i) { + int v; + if (i & 1) { + v = (temp[j] & 0x0F); + ++j; + } else { + v = ((temp[j] & 0xF0) >> 4); + } + PyTuple_SetItem(pdigit, i, (PyObject *) PyLong_FromLong(v)); + } + return result; +} + +static PyObject *rms_tuple2bcd(PyObject * dummy, PyObject * args) +{ + PyObject *result = NULL; + PyObject *lst; + char *temp; + int sign; + int len; + int dprec; + int prec; + int n; + + if (!PyArg_ParseTuple(args, "(iO!i)ii", &sign, &PyTuple_Type, &lst, + &dprec, &n, &prec)) { + return NULL; + } + len = PyTuple_Size(lst); + if (len > 31) { + PyErr_SetString(PyExc_TypeError, "Invalid digits tuple length"); + return NULL; + } + + if (((n + prec) & 1) == 0) + ++n; + if (n + prec > 31) { + PyErr_SetString(PyExc_TypeError, "Invalid BCD length"); + return NULL; + } + + dprec = -dprec; + if (len - dprec > n) { + PyErr_SetString(PyExc_TypeError, "BCD integer part too short"); + return NULL; + } + + { + char rstr[16]; + char digit[n + prec + 1]; + int i, j, k; + for (i = 0; i < n - len + dprec; ++i) + digit[i] = 0; + for (j = 0; j < len - dprec; ++j, ++i) + digit[i] = PyLong_AsLong(PyTuple_GetItem(lst, j)); + if (dprec > prec) + dprec = prec; + for (; i < n + dprec; ++i, ++j) + digit[i] = PyLong_AsLong(PyTuple_GetItem(lst, j)); + for (; i < n + prec; ++i) + digit[i] = 0; + digit[n + prec] = 0; + + for (i = 0; i < (n + prec - 1) / 2; ++i) { + rstr[i] = (digit[2 * i]) * 16 + (digit[2 * i + 1]); + } + if (sign == 0) + sign = 0x0C; + else + sign = 0x0D; + rstr[(n + prec - 1) / 2] = (digit[n + prec - 1]) * 16 + sign; + result = PyBytes_FromStringAndSize(rstr, (n + prec + 1) / 2); + return result; + } + + Py_INCREF(Py_None); + return Py_None; +} + +static int getrmsattr(char *name, int attr, int *result) +{ + int stat; + unsigned int fop = 0; + int fac = 0; + int shr = FAB$M_SHRGET; + RmsFileObject *fo; + XABFHCDEF *fhc; + + fo = malloc(sizeof(RmsFileObject)); + assert(fo); + fill_fields(fo, name, fac, shr, fop); + + if (attr == RMSATTR_K_LRL) { + fhc = malloc(sizeof(XABFHCDEF)); + assert(fhc); + *fhc = cc$rms_xabfhc; + fo->fab.fab$l_xab = fhc; + } + + stat = sys$open((void *) & fo->fab); + if (!$VMS_STATUS_SUCCESS(stat)) { + if (attr == RMSATTR_K_LRL) { + free(fhc); + } + free(fo); + return stat; + } + + stat = sys$display((void *) & fo->fab); + if (!$VMS_STATUS_SUCCESS(stat)) { + free(fo); + return stat; + } + + *result = 0; + switch (attr) { + case RMSATTR_K_ORG: + *result = fo->fab.fab$b_org; + break; + case RMSATTR_K_RFM: + *result = fo->fab.fab$b_rfm; + break; + case RMSATTR_K_MRS: + *result = fo->fab.fab$w_mrs; + break; + case RMSATTR_K_RAT: + *result = fo->fab.fab$b_rat; + break; + case RMSATTR_K_LRL: + *result = fhc->xab$w_lrl; + break; + } + + stat = sys$close((void *) & fo->fab); + + if (attr == RMSATTR_K_LRL) { + free(fhc); + } + free(fo); + return stat; +} + +static PyObject *rms_getrmsattr(PyObject * dummy, PyObject * args) +{ + char *name; + int attr; + int result; + + if (!PyArg_ParseTuple(args, "si:getrmsattr", &name, &attr)) + return NULL; + + if (attr < 0 || attr > RMSATTR_K_LAST) { + PyErr_Format(RMSError, "invalid attr value: %d", attr); + return NULL; + } + + int stat; + stat = getrmsattr(name, attr, &result); + if (!$VMS_STATUS_SUCCESS(stat)) { + char msg[256]; + PyObject *v; + getmsg(stat, msg, sizeof(msg)); + v = Py_BuildValue("(is)", stat, msg); + if (v != NULL) { + PyErr_SetObject(RMSError, v); + Py_DECREF(v); + } + return NULL; + } + + return PyLong_FromLong((long) result); +} + +static int +parse(char *path, char *node, char *dev, char *dir, char *name, char *type, + char *ver) +{ + int stat; + unsigned int fop = NAM$M_SYNCHK; + int fac = 0; + int shr = 0; + RmsFileObject *fo; + + fo = PyMem_NEW(RmsFileObject, 1); + fill_fields(fo, path, fac, shr, fop); + + stat = sys$parse((void *) & fo->fab); + if (!$VMS_STATUS_SUCCESS(stat)) { + PyMem_FREE(fo); + return stat; + } + + fo->naml.naml$l_esa[fo->naml.naml$b_esl] = '\0'; + fo->naml.naml$l_long_expand[fo->naml.naml$l_long_expand_size] = '\0'; + + int p1, p2, p3, p4, p5, p6; + p1 = fo->naml.naml$b_node; + p2 = fo->naml.naml$b_dev; + p3 = fo->naml.naml$b_dir; + p4 = fo->naml.naml$b_name; + p5 = fo->naml.naml$b_type; + p6 = fo->naml.naml$b_ver; + + *node = *dev = *dir = *name = *type = *ver = '\0'; + if (p1) { + strncpy(node, fo->naml.naml$l_long_expand, p1); + node[p1] = '\0'; + } + if (p2) { + strncpy(dev, fo->naml.naml$l_long_expand + p1, p2); + dev[p2] = '\0'; + } + if (p3) { + strncpy(dir, fo->naml.naml$l_long_expand + p1 + p2, p3); + dir[p3] = '\0'; + } + if (p4) { + strncpy(name, fo->naml.naml$l_long_expand + p1 + p2 + p3, p4); + name[p4] = '\0'; + } + if (p5) { + strncpy(type, fo->naml.naml$l_long_expand + p1 + p2 + p3 + p4, p5); + type[p5] = '\0'; + } + if (p6) { + strncpy(ver, fo->naml.naml$l_long_expand + p1 + p2 + p3 + p4 + p5, + p6); + ver[p6] = '\0'; + } + + PyMem_FREE(fo); + return stat; +} + +static PyObject *rms_parse(PyObject * dummy, PyObject * args) +{ + char *path; + char node[NAML$C_MAXRSS + 1]; + char dev[NAML$C_MAXRSS + 1]; + char dir[NAML$C_MAXRSS + 1]; + char name[NAML$C_MAXRSS + 1]; + char type[NAML$C_MAXRSS + 1]; + char ver[NAML$C_MAXRSS + 1]; + PyObject *res; + + if (!PyArg_ParseTuple(args, "s:parse", &path)) + return NULL; + + int stat; + stat = parse(path, node, dev, dir, name, type, ver); + if (!$VMS_STATUS_SUCCESS(stat)) { + char msg[256]; + PyObject *v; + getmsg(stat, msg, sizeof(msg)); + v = Py_BuildValue("(is)", stat, msg); + if (v != NULL) { + PyErr_SetObject(RMSError, v); + Py_DECREF(v); + } + return NULL; + } + res = PyTuple_New(6); + PyTuple_SetItem(res, 0, PyBytes_FromString(node)); + PyTuple_SetItem(res, 1, PyBytes_FromString(dev)); + PyTuple_SetItem(res, 2, PyBytes_FromString(dir)); + PyTuple_SetItem(res, 3, PyBytes_FromString(name)); + PyTuple_SetItem(res, 4, PyBytes_FromString(type)); + PyTuple_SetItem(res, 5, PyBytes_FromString(ver)); + return res; +} + + +/* List of functions defined in the module */ + +static PyMethodDef _rmsFile_methods[] = { + {"file", (PyCFunction) rmsFile_new, METH_VARARGS | METH_KEYWORDS, + PyDoc_STR("file(name [,fac] [,shr], [fop]) -> new RMS file object")}, + {"BCD2String", (PyCFunction) rms_bcd2string, METH_VARARGS, + PyDoc_STR("BCD2String(s) -> string")}, + {"String2BCD", (PyCFunction) rms_string2bcd, METH_VARARGS, + PyDoc_STR("String2BCD(v) -> BCD string")}, + {"BCD2Tuple", (PyCFunction) rms_bcd2tuple, METH_VARARGS, + PyDoc_STR("BCD2Tuple(s) -> tuple")}, + {"Tuple2BCD", (PyCFunction) rms_tuple2bcd, METH_VARARGS, + PyDoc_STR("Tuple2BCD(v) -> BCD string")}, + {"getrmsattr", (PyCFunction) rms_getrmsattr, METH_VARARGS, + PyDoc_STR("getrmsattr(path, attr) -> value")}, + {"parse", (PyCFunction) rms_parse, METH_VARARGS, + PyDoc_STR("parse(path) -> (node, dev, dir, name, ext, ver)")}, + {NULL, NULL} /* sentinel */ + +}; + +static struct PyModuleDef moduledef = { + PyModuleDef_HEAD_INIT, + "_rms", /* m_name */ + + "The OpenVMS RMS module", /* m_doc */ + + -1, /* m_size */ + + _rmsFile_methods, /* m_methods */ + + NULL, /* m_reload */ + + NULL, /* m_traverse */ + + NULL, /* m_clear */ + + NULL, /* m_free */ + +}; + + +PyMODINIT_FUNC PyInit__rms(void) +{ + PyObject *m; + PyObject *d; + PyObject *dict = PyDict_New(); + PyObject *str = NULL; + +// BRC +// RmsFile_Type.ob_type = &PyType_Type; + + m = PyModule_Create(&moduledef); + d = PyModule_GetDict(m); + + insint(d, "RMSATTR_K_ORG", RMSATTR_K_ORG); + insint(d, "RMSATTR_K_RFM", RMSATTR_K_RFM); + insint(d, "RMSATTR_K_RAT", RMSATTR_K_RAT); + insint(d, "RMSATTR_K_MRS", RMSATTR_K_MRS); + insint(d, "RMSATTR_K_LRL", RMSATTR_K_LRL); + insint(d, "RMSATTR_K_LAST", RMSATTR_K_LAST); + insint(d, "PARSE_K_NODE", PARSE_K_NODE); + insint(d, "PARSE_K_DEV", PARSE_K_DEV); + insint(d, "PARSE_K_DIR", PARSE_K_DIR); + insint(d, "PARSE_K_NAME", PARSE_K_NAME); + insint(d, "PARSE_K_TYPE", PARSE_K_TYPE); + insint(d, "PARSE_K_VER", PARSE_K_VER); + str = PyBytes_FromString(RMSError__doc__); + PyDict_SetItemString(dict, "__doc__", str); + if (RMSError == NULL) { + if ((RMSError = + PyErr_NewException("vms.rms.error", PyExc_IOError, + dict)) == NULL) { + return (NULL); + } + } + Py_XDECREF(dict); + Py_XDECREF(str); + Py_INCREF(RMSError); + PyModule_AddObject(m, "error", RMSError); + + return (m); +} diff --git a/Modules/vms/rms/pyrms.h b/Modules/vms/rms/pyrms.h new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcm1zL3B5cm1zLmg= --- /dev/null +++ b/Modules/vms/rms/pyrms.h @@ -0,0 +1,31 @@ +#ifndef _PYRMSFILE_H +#define _PYRMSFILE_H + +#include <rms.h> + +#define PYRMS_M_OPEN 1 + +typedef struct rmsfilestruct { + PyObject_HEAD + FABDEF fab; + RABDEF rab; + NAMLDEF naml; + XABSUMDEF sum; + XABALLDEF* area; + XABKEYDEF* key; + char primarySpec[NAML$C_MAXRSS + 1]; + /* + * Create the string buffers for the resultant and expanded strings + */ + char Naml_Shrt_Esa[NAM$C_MAXRSS + 1], + Naml_Long_Esa[NAML$C_MAXRSS + 1], + Naml_Shrt_Rsa[NAM$C_MAXRSS + 1], + Naml_Long_Rsa[NAML$C_MAXRSS + 1]; + unsigned int flags; +} RmsFileObject; + +PyAPI_DATA(PyTypeObject) RmsFile_Type; + +#define RmsFileObject_Check(v) ((v)->ob_type == &RmsFile_Type) + +#endif diff --git a/Modules/vms/rms/rms.c b/Modules/vms/rms/rms.c new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcm1zL3Jtcy5j --- /dev/null +++ b/Modules/vms/rms/rms.c @@ -0,0 +1,1483 @@ +// Adapted from original code developed by Jean-Fran�ois Pieronne... +// + +#define PY_SSIZE_T_CLEAN + +#define __NEW_STARLET +#include <ssdef.h> +#include <stsdef.h> +#include <descrip.h> +#include <starlet.h> +#include <fdl$routines.h> +#include <ctype.h> +#include <string.h> +#include <rms.h> + +#include "Python.h" +#include "structmember.h" + +#define PYRMS_M_OPEN 1 + +typedef struct { + PyObject_HEAD FABDEF fab; + RABDEF rab; + NAMLDEF naml; + XABSUMDEF sum; + XABALLDEF *area; + XABKEYDEF *key; + char long_filename[NAML$C_MAXRSS + 1]; + char esa[NAM$C_MAXRSS + 1]; + char long_esa[NAML$C_MAXRSS + 1]; + char rsa[NAM$C_MAXRSS + 1]; + char long_rsa[NAML$C_MAXRSS + 1]; + unsigned int flags; +} rms_file_t; + + +#ifndef adc_Assert +#define adc_Assert(x) \ + do { \ + if ((!((x)))) { \ + fprintf (stderr, "Assertion failed: %s (%s: %d)\n", #x, __FILE__, __LINE__); \ + abort(); \ + } \ + } while (0) +#endif + +#ifndef OKAY +#define OKAY(STATUS) (((STATUS) & 1) != 0) +#endif + + +#define RMSATTR_K_ORG 0 +#define RMSATTR_K_RFM 1 +#define RMSATTR_K_RAT 2 +#define RMSATTR_K_MRS 3 +#define RMSATTR_K_LRL 4 +#define RMSATTR_K_LAST RMSATTR_K_LRL + + +#define PARSE_K_NODE 0 +#define PARSE_K_DEV 1 +#define PARSE_K_DIR 2 +#define PARSE_K_NAME 3 +#define PARSE_K_TYPE 4 +#define PARSE_K_VER 5 + +static PyObject *RMS_error; +PyDoc_STRVAR(RMS_error__doc__, "RMS error"); +static rms_file_t *_new(char *, int, int, unsigned int); + + + +static void addint(PyObject * d, char *name, int val) +{ + PyObject *obj = PyLong_FromLong((long) val); + + if (!obj || (PyDict_SetItemString(d, name, obj) == -1)) { + Py_FatalError("can't initialize sane module"); + } + + Py_DECREF(obj); +} + + +static void getmsg(unsigned int cond, char *buf, int buflen) +{ + unsigned int status; + struct dsc$descriptor_s bufD; + unsigned short int msglen; + + bufD.dsc$w_length = buflen - 1; + bufD.dsc$b_dtype = DSC$K_DTYPE_T; + bufD.dsc$b_class = DSC$K_CLASS_S; + bufD.dsc$a_pointer = buf; + + status = sys$getmsg(cond, &msglen, &bufD, 15, 0); + + if (!OKAY(status)) { + strncpy(buf, "sys$getmsg failure", buflen); + buf[buflen - 1] = '\0'; + } + + buf[msglen] = '\0'; +} + + +static void +fill(rms_file_t * self, char *fn, int access, int share, unsigned int fop) +{ + self->fab = cc$rms_fab; + self->rab = cc$rms_rab; + self->sum = cc$rms_xabsum; + self->naml = cc$rms_naml; + self->area = 0; + self->key = 0; + self->flags = 0; + self->fab.fab$b_fac = access; + self->fab.fab$b_shr = share; + self->fab.fab$l_fna = (char *) -1; + self->fab.fab$b_fns = 0; + self->fab.fab$l_fop = fop; + self->fab.fab$l_xab = (void *) &self->sum; + + self->fab.fab$l_naml = (void *) &self->naml; + + strncpy(self->long_filename, fn, sizeof(self->long_filename) - 1); + self->long_filename[sizeof(self->long_filename) - 1] = '\0'; + + self->naml.naml$l_long_filename = (void *) self->long_filename; + self->naml.naml$l_long_filename_size = strlen(self->long_filename); + + self->naml.naml$l_esa = (void *) self->esa; + self->naml.naml$b_ess = sizeof(self->esa) - 1; + self->naml.naml$l_rsa = (void *) self->rsa; + self->naml.naml$b_rss = sizeof(self->rsa) - 1; + + self->naml.naml$l_long_expand = (void *) self->long_esa; + self->naml.naml$l_long_expand_alloc = sizeof(self->long_esa) - 1; + self->naml.naml$l_long_result = (void *) self->long_rsa; + self->naml.naml$l_long_result_alloc = sizeof(self->long_rsa) - 1; + + self->naml.naml$v_synchk = 0; // Have $PARSE do directory existence check + self->naml.naml$v_no_short_upcase = 1; // Don't uppercase short expanded file specification + +} + + +static unsigned int _open(rms_file_t * self) +{ + unsigned int status; + int i; + XABKEYDEF *key; + XABALLDEF *area; + void **xab_chain; + + status = sys$open((void *) &self->fab); + + if (!OKAY(status)) { + return (status); + } + + if (self->fab.fab$b_org != FAB$C_IDX) { + return (RMS$_ORG); + } + + xab_chain = (void *) &self->fab.fab$l_xab; + + i = self->sum.xab$b_nok; + + adc_Assert((self->key = key = calloc(i, sizeof(XABKEYDEF)))); + while (--i >= 0) { + *key = cc$rms_xabkey; + key->xab$b_ref = i; + key->xab$l_nxt = *xab_chain; + *xab_chain = key; + key++; + } + + i = self->sum.xab$b_noa; + adc_Assert((self->area = area = calloc(i, sizeof(XABALLDEF)))); + while (--i >= 0) { + *area = cc$rms_xaball; + area->xab$b_aid = i; + area->xab$l_nxt = *xab_chain; + *xab_chain = area; + area++; + } + + status = sys$display((void *) &self->fab); + + if (!OKAY(status)) { + return (status); + } + + self->naml.naml$l_esa[self->naml.naml$b_esl] = '\0'; + self->naml.naml$l_rsa[self->naml.naml$b_rsl] = '\0'; + self->naml.naml$l_long_expand[self->naml.naml$l_long_expand_size] = + '\0'; + self->naml.naml$l_long_result[self->naml.naml$l_long_result_size] = + '\0'; + + self->flags |= PYRMS_M_OPEN; + + self->rab.rab$l_fab = (void *) &self->fab; + + /* default to primary index */ + + + self->rab.rab$b_krf = 0; + self->rab.rab$l_ubf = NULL; + self->rab.rab$w_usz = self->fab.fab$w_mrs; + + return (sys$connect((void *) &self->rab)); +} + + +static unsigned int _close(rms_file_t * self) +{ + unsigned int status; + + status = sys$disconnect((void *) &self->rab); + + if (!OKAY(status)) { + return (status); + } + + return (sys$close((void *) &self->fab)); +} + + +static unsigned int _flush(rms_file_t * self) +{ + return (sys$flush((void *) &self->rab)); +} + + +static unsigned int _free(rms_file_t * self) +{ + return (sys$free((void *) &self->rab)); +} + + +static unsigned int _release(rms_file_t * self) +{ + return (sys$release((void *) &self->rab)); +} + + +static unsigned int _usekey(rms_file_t * self, int keynum) +{ + if (keynum >= self->sum.xab$b_nok) { + return (SS$_INVARG); + } + + self->rab.rab$b_krf = keynum; + return (RMS$_NORMAL); +} + + +static int _put(rms_file_t * self, char *buf, int len) +{ + self->rab.rab$b_rac = RAB$C_KEY; + self->rab.rab$l_rbf = buf; + self->rab.rab$w_rsz = len; + return (sys$put((void *) &self->rab)); +} + + +static unsigned int _update(rms_file_t * self, char *buf, int len) +{ + self->rab.rab$l_rbf = buf; + self->rab.rab$w_rsz = len; + return (sys$update((void *) &self->rab)); +} + + +static unsigned int _fetch(rms_file_t * self, char *key, int len, + char *buf, int *retlen) +{ + unsigned int status; + + if (key) { + self->rab.rab$l_kbf = key; + self->rab.rab$b_ksz = len; + self->rab.rab$b_rac = RAB$C_KEY; + } else { + self->rab.rab$b_rac = RAB$C_SEQ; + } + + self->rab.rab$l_ubf = (void *) buf; + + status = sys$get((void *) &self->rab); + + if (!OKAY(status)) { + return (status); + } + + *retlen = self->rab.rab$w_rsz; + return (status); +} + + +static unsigned int _find(rms_file_t * self, char *key, int len) +{ + if (key) { + self->rab.rab$l_kbf = key; + self->rab.rab$b_ksz = len; + self->rab.rab$b_rac = RAB$C_KEY; + } else { + self->rab.rab$b_rac = RAB$C_SEQ; + } + + return (sys$find((void *) &self->rab)); +} + + +static unsigned int _delete(rms_file_t * self, char *key, int len) +{ + unsigned int status; + + if (key) { + self->rab.rab$l_kbf = key; + self->rab.rab$b_ksz = len; + self->rab.rab$b_rac = RAB$C_KEY; + + status = sys$find((void *) &self->rab); + + if (!OKAY(status)) { + return (status); + } + } else { + self->rab.rab$b_rac = RAB$C_SEQ; + } + + return (sys$delete((void *) &self->rab)); +} + + + +#define PyFileObject PyObject + +static PyObject *getiter(PyFileObject * obj) +{ + Py_INCREF(obj); + return (PyObject *) obj; +} + + +static PyObject *iternext(PyFileObject * self) +{ + unsigned int status; + int len = 0; + PyObject *obj; + char msg[256]; + char buf[((rms_file_t *) self)->fab.fab$w_mrs]; + + status = _fetch((rms_file_t *) self, NULL, 0, buf, &len); + + if (status == RMS$_EOF) { + return (NULL); + } + + if (!OKAY(status)) { + getmsg(status, msg, sizeof(msg)); + if ((obj = Py_BuildValue("(is)", status, msg)) != NULL) { + PyErr_SetObject(RMS_error, obj); + Py_DECREF(obj); + } + + return (NULL); + } + + if (status == RMS$_EOF) { + Py_INCREF(Py_None); + obj = Py_None; + } else { + obj = PyBytes_FromStringAndSize(buf, len); + } + + return (obj); +} + + + +static void dealloc(rms_file_t * self) +{ + unsigned int status; + PyObject *obj; + char msg[256]; + + if (self->flags & PYRMS_M_OPEN) { + status = _close(self); + + if (!OKAY(status)) { + getmsg(status, msg, sizeof(msg)); + if ((obj = Py_BuildValue("(is)", status, msg)) != NULL) { + PyErr_SetObject(RMS_error, obj); + Py_DECREF(obj); + } + } + + self->flags ^= PYRMS_M_OPEN; + } + + if (self->area) { + free(self->area); + self->area = NULL; + } + + if (self->key) { + free(self->key); + self->key = NULL; + } + + PyObject_Del(self); +} + + + +static PyObject *RMS_close(rms_file_t * self, PyObject * args) +{ + unsigned int status; + char msg[256]; + PyObject *obj; + + if (!PyArg_ParseTuple(args, ":close")) { + return (NULL); + } + + status = _close(self); + + if (!OKAY(status)) { + getmsg(status, msg, sizeof(msg)); + if ((obj = Py_BuildValue("(is)", status, msg)) != NULL) { + PyErr_SetObject(RMS_error, obj); + Py_DECREF(obj); + } + + return (NULL); + } + + self->flags ^= PYRMS_M_OPEN; + return (PyLong_FromLong(status)); +} + + +static PyObject *RMS_flush(rms_file_t * self, PyObject * args) +{ + unsigned int status; + char msg[256]; + PyObject *obj; + + if (!PyArg_ParseTuple(args, ":flush")) { + return (NULL); + } + + status = _flush(self); + + if (!OKAY(status)) { + getmsg(status, msg, sizeof(msg)); + if ((obj = Py_BuildValue("(is)", status, msg)) != NULL) { + PyErr_SetObject(RMS_error, obj); + Py_DECREF(obj); + } + + return (NULL); + } + + return (PyLong_FromLong(status)); +} + + +static PyObject *RMS_free(rms_file_t * self, PyObject * args) +{ + unsigned int status; + char msg[256]; + PyObject *obj; + + if (!PyArg_ParseTuple(args, ":free")) { + return (NULL); + } + + status = _free(self); + + if (!OKAY(status)) { + getmsg(status, msg, sizeof(msg)); + if ((obj = Py_BuildValue("(is)", status, msg)) != NULL) { + PyErr_SetObject(RMS_error, obj); + Py_DECREF(obj); + } + + return (NULL); + } + + return (PyLong_FromLong(status)); +} + + + +static PyObject *RMS_release(rms_file_t * self, PyObject * args) +{ + unsigned int status; + char msg[256]; + PyObject *obj; + + if (!PyArg_ParseTuple(args, ":release")) { + return (NULL); + } + + status = _release(self); + + if (!OKAY(status)) { + getmsg(status, msg, sizeof(msg)); + if ((obj = Py_BuildValue("(is)", status, msg)) != NULL) { + PyErr_SetObject(RMS_error, obj); + Py_DECREF(obj); + } + + return (NULL); + } + + return (PyLong_FromLong(status)); +} + + +static PyObject *RMS_rewind(rms_file_t * self, PyObject * args, + PyObject * kwargs) +{ + unsigned int status; + int keynum = -1; + char msg[256]; + PyObject *obj; + char *kwnames[] = { + "keynum", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "|i:rewind", + kwnames, &keynum)) { + return (NULL); + } + + if (keynum >= 0) { + status = _usekey((rms_file_t *) self, keynum); + + if (!OKAY(status)) { + getmsg(status, msg, sizeof(msg)); + if ((obj = Py_BuildValue("(is)", status, msg)) != NULL) { + PyErr_SetObject(RMS_error, obj); + Py_DECREF(obj); + } + + return (NULL); + } + } + + status = sys$rewind((void *) &self->rab, 0, 0); + + if (!OKAY(status)) { + getmsg(status, msg, sizeof(msg)); + if ((obj = Py_BuildValue("(is)", status, msg)) != NULL) { + PyErr_SetObject(RMS_error, obj); + Py_DECREF(obj); + } + + return (NULL); + } + + return (PyLong_FromLong(status)); +} + + +static PyObject *RMS_usekey(rms_file_t * self, PyObject * args, + PyObject * kwargs) +{ + unsigned int status; + int keynum = 0; + PyObject *res, *obj; + char msg[256]; + char *kwnames[] = { + "keynum", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "|i:usekey", + kwnames, &keynum)) { + return (NULL); + } + + status = _usekey((rms_file_t *) self, keynum); + if (!OKAY(status)) { + getmsg(status, msg, sizeof(msg)); + if ((obj = Py_BuildValue("(is)", status, msg)) != NULL) { + PyErr_SetObject(RMS_error, obj); + Py_DECREF(obj); + } + + return (NULL); + } + + return (PyLong_FromLong(status)); +} + + +static PyObject *RMS_put(rms_file_t * self, PyObject * args, + PyObject * kwargs) +{ + unsigned int status; + char *buf = NULL; + int len = 0; + PyObject *res, *obj; + char msg[256]; + char *kwnames[] = { + "record", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "s#:put", + kwnames, &buf, &len)) { + return (NULL); + } + + status = _put((rms_file_t *) self, buf, len); + + if (!OKAY(status)) { + getmsg(status, msg, sizeof(msg)); + if ((obj = Py_BuildValue("(is)", status, msg)) != NULL) { + PyErr_SetObject(RMS_error, obj); + Py_DECREF(obj); + } + + return (NULL); + } + + return (PyLong_FromLong(status)); +} + + +static PyObject *RMS_update(rms_file_t * self, PyObject * args, + PyObject * kwargs) +{ + unsigned int status; + char *buf = NULL; + int len = 0; + PyObject *res, *obj; + char msg[256]; + char *kwnames[] = { + "record", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "s#:update", + kwnames, &buf, &len)) { + return (NULL); + } + + status = _update((rms_file_t *) self, buf, len); + + if (!OKAY(status)) { + getmsg(status, msg, sizeof(msg)); + if ((obj = Py_BuildValue("(is)", status, msg)) != NULL) { + PyErr_SetObject(RMS_error, obj); + Py_DECREF(obj); + } + + return (NULL); + } + + return (PyLong_FromLong(status)); +} + + +static PyObject *RMS_fetch(rms_file_t * self, PyObject * args, + PyObject * kwargs) +{ + unsigned int status; + char *keyval = NULL; + int len = 0; + PyObject *res, *obj, *o1, *o2; + char msg[256]; + char *kwnames[] = { + "key", NULL + }; + + char buf[((rms_file_t *) self)->fab.fab$w_mrs]; + int retlen = 0; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "|s#:fetch", + kwnames, &keyval, &len)) { + return (NULL); + } + + status = _fetch((rms_file_t *) self, keyval, len, buf, &retlen); + + if (status != RMS$_EOF && status != RMS$_RNF && !OKAY(status)) { + getmsg(status, msg, sizeof(msg)); + if ((obj = Py_BuildValue("(is)", status, msg)) != NULL) { + PyErr_SetObject(RMS_error, obj); + Py_DECREF(obj); + } + + return (NULL); + } + + o1 = PyLong_FromLong(status); + + if (status == RMS$_EOF || status == RMS$_RNF) { + Py_INCREF(Py_None); + o2 = Py_None; + } else { + o2 = PyBytes_FromStringAndSize(buf, retlen); + } + + res = PyTuple_New(2); + PyTuple_SetItem(res, 0, o1); + PyTuple_SetItem(res, 1, o2); + + return (res); +} + + +static PyObject *RMS_find(rms_file_t * self, PyObject * args, + PyObject * kwargs) +{ + unsigned int status; + char *keyval = NULL; + int len = 0; + char msg[256]; + PyObject *obj; + char *kwnames[] = { + "key", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "|s#:find", + kwnames, &keyval, &len)) { + return (NULL); + } + + status = _find((rms_file_t *) self, keyval, len); + + if (status != RMS$_EOF && !OKAY(status)) { + getmsg(status, msg, sizeof(msg)); + if ((obj = Py_BuildValue("(is)", status, msg)) != NULL) { + PyErr_SetObject(RMS_error, obj); + Py_DECREF(obj); + } + + return (NULL); + } + + return (PyLong_FromLong(status)); +} + + +static PyObject *RMS_delete(rms_file_t * self, PyObject * args, + PyObject * kwargs) +{ + unsigned int status; + char *keyval = NULL; + int len = 0; + char msg[256]; + PyObject *obj; + char *kwnames[] = { + "key", NULL + }; + + if (!PyArg_ParseTupleAndKeywords(args, kwargs, (char *) "|s#:delete", + kwnames, &keyval, &len)) { + return (NULL); + } + + status = _delete((rms_file_t *) self, keyval, len); + + if (status != RMS$_EOF && !OKAY(status)) { + getmsg(status, msg, sizeof(msg)); + if ((obj = Py_BuildValue("(is)", status, msg)) != NULL) { + PyErr_SetObject(RMS_error, obj); + Py_DECREF(obj); + } + + return (NULL); + } + + return (PyLong_FromLong(status)); +} + + + +static PyMethodDef tp_methods[] = { + {"close", (PyCFunction) RMS_close, METH_VARARGS, + PyDoc_STR("close() -> status")}, + {"delete", (PyCFunction) RMS_delete, METH_VARARGS | METH_KEYWORDS, + PyDoc_STR("delete([key]) -> status")}, + {"fetch", (PyCFunction) RMS_fetch, METH_VARARGS | METH_KEYWORDS, + PyDoc_STR("get([key]) -> status, record")}, + {"find", (PyCFunction) RMS_find, METH_VARARGS | METH_KEYWORDS, + PyDoc_STR("find([key]) -> status")}, + {"flush", (PyCFunction) RMS_flush, METH_VARARGS, + PyDoc_STR("flush() -> status")}, + {"free", (PyCFunction) RMS_free, METH_VARARGS, + PyDoc_STR("free() -> status")}, + {"put", (PyCFunction) RMS_put, METH_VARARGS | METH_KEYWORDS, + PyDoc_STR("put(record) -> status")}, + {"release", (PyCFunction) RMS_release, METH_VARARGS, + PyDoc_STR("release() -> status")}, + {"rewind", (PyCFunction) RMS_rewind, METH_VARARGS | METH_KEYWORDS, + PyDoc_STR("rewind([keynum]) -> status")}, + {"update", (PyCFunction) RMS_update, METH_VARARGS | METH_KEYWORDS, + PyDoc_STR("update(record) -> status")}, + {"usekey", (PyCFunction) RMS_usekey, METH_VARARGS | METH_KEYWORDS, + PyDoc_STR("use_key([keynum]) -> status")}, + {NULL, NULL} +}; + + +#define OFF(x) offsetof(rms_file_t, x) + +static PyMemberDef tp_members[] = { + {"longname", T_STRING_INPLACE, OFF(long_rsa), READONLY, + "long filename"}, + {"nok", T_UBYTE, OFF(sum.xab$b_nok), READONLY, + "number of keys"}, + {"org", T_UBYTE, OFF(fab.fab$b_org), READONLY, + "file organization"}, + {NULL} +}; + + + +static PyObject *RMS_new(PyObject * self, PyObject * args, + PyObject * kwargs) +{ + unsigned int status; + char *name; + unsigned int alq = 0; + unsigned short bls = 0; + unsigned short deq = 0; + unsigned int fop = cc$rms_fab.fab$l_fop; + unsigned short gbc = 0; + unsigned char mbc = 0; + char mbf = 0; + unsigned char rat = 0; + unsigned char rfm = 0; + unsigned int rop = 0; + char rtv = 0; + int fac = FAB$M_GET; + int shr = FAB$M_SHRPUT | FAB$M_SHRGET | FAB$M_SHRDEL | FAB$M_SHRUPD; + rms_file_t *res; + char msg[256]; + PyObject *obj; + char *kwnames[] = { + "name", "fac", "shr", "fop", NULL + }; + + if (!PyArg_ParseTupleAndKeywords + (args, kwargs, (char *) "s|iiI:open_file", kwnames, &name, &fac, + &shr, &fop)) { + return (NULL); + } + + res = _new(name, fac, shr, fop); + + if (res) { + status = _open(res); + + if (!OKAY(status)) { + getmsg(status, msg, sizeof(msg)); + if ((obj = Py_BuildValue("(is)", status, msg)) != NULL) { + PyErr_SetObject(RMS_error, obj); + Py_DECREF(obj); + } + + Py_DECREF(res); + return (NULL); + } + } + + return ((PyObject *) res); +} + + +static PyObject *bcd2string(PyObject * dummy, PyObject * args) +{ + PyObject *res = NULL; + char c; + char *temp, *str; + int len, prec; + int i, j, k; + + if (!PyArg_ParseTuple(args, "s#i", &temp, &len, &prec)) { + return NULL; + } + + str = PyMem_Malloc(2 * len + 2); + c = (temp[len - 1] & 0x0F); + + if ((c != 0x0C) && (c != 0x0D)) { + PyMem_Free(str); + PyErr_SetString(PyExc_TypeError, "Invalid sign"); + return NULL; + } + + if ((temp[len - 1] & 0x0F) == 0x0C) { + str[0] = '+'; + } else { + str[0] = '-'; + } + + for (j = 0, i = 1; i < (2 * len - prec); ++i) { + if (i & 1) { + str[i] = '0' + ((temp[j] & 0xF0) >> 4); + } else { + str[i] = '0' + (temp[j] & 0x0F); + ++j; + } + } + + i = 2 * len - prec; + str[i++] = '.'; + + for (; i < 2 * len + 1 + 1; ++i) { + if (i & 1) { + str[i] = '0' + (temp[j] & 0x0F); + ++j; + } else { + str[i] = '0' + ((temp[j] & 0xF0) >> 4); + } + } + + res = PyBytes_FromStringAndSize(str, 2 * len + 1); + PyMem_Free(str); + + return (res); +} + + +static PyObject *string2bcd(PyObject * dummy, PyObject * args) +{ + PyObject *res = NULL; + char *temp; + int len, prec; + int n; + char *p = NULL; + int i; + + if (!PyArg_ParseTuple(args, "sii", &temp, &n, &prec)) { + return (NULL); + } + + if ((n + prec + 1) & 1) { + ++n; + } + + len = strlen(temp); + if ((n + prec > 31) || (len > 33)) { + PyErr_SetString(PyExc_TypeError, "Invalid len"); + return (NULL); + } + if (strchr("+-0123456789", *temp) == NULL) { + PyErr_SetString(PyExc_TypeError, "Invalid first character"); + return (NULL); + } + + for (i = 1; i < len; ++i) { + if ((temp[i] == '.') && (p == NULL)) { + p = &(temp[i]) + 1; + } else if (!isdigit(temp[i])) { + PyErr_SetString(PyExc_TypeError, "Invalid numeric"); + return (NULL); + } + } + + { + long long in; + long long id = 0; + char astr[34]; + char rstr[16]; + char fmt[20]; + char sign = 0x0C; + int alen; + + sscanf(temp, "%lld", &in); + if (p) { + sscanf(p, "%lld", &id); + } + if (in < 0) { + in = -in; + sign = 0x0D; + } + sprintf(fmt, "%%0%dlld%%lld", n); + sprintf(astr, fmt, in, id); + alen = strlen(astr); + if (alen > n + prec) { + astr[n + prec] = '\0'; + } else if (alen < n + prec) { + for (i = n + prec - 1; i >= alen; --i) { + astr[i] = '0'; + } + astr[n + prec] = '\0'; + } + for (i = 0; i < (n + prec - 1) / 2; ++i) { + rstr[i] = (astr[2 * i] - '0') * 16 + (astr[2 * i + 1] - '0'); + } + rstr[(n + prec - 1) / 2] = (astr[n + prec - 1] - '0') * 16 + sign; + res = PyBytes_FromStringAndSize(rstr, (n + prec + 1) / 2); + return (res); + } +} + + +static PyObject *bcd2tuple(PyObject * dummy, PyObject * args) +{ + PyObject *res = NULL, *pdigit = NULL; + char *temp; + int len, prec, sign; + int i, j, k, v; + char c; + + if (!PyArg_ParseTuple(args, "s#i", &temp, &len, &prec)) { + return (NULL); + } + + c = (temp[len - 1] & 0x0F); + + if ((c != 0x0C) && (c != 0x0D)) { + PyErr_SetString(PyExc_TypeError, "Invalid sign"); + return (NULL); + } + + res = PyTuple_New(3); + pdigit = PyTuple_New(2 * len - 1); + + if ((temp[len - 1] & 0x0F) == 0x0C) { + sign = 0; + } else { + sign = 1; + } + + PyTuple_SetItem(res, 0, (PyObject *) PyLong_FromLong(sign)); + PyTuple_SetItem(res, 1, pdigit); + PyTuple_SetItem(res, 2, (PyObject *) PyLong_FromLong(-prec)); + + for (j = 0, i = 0; i < (2 * len - 1); ++i) { + if (i & 1) { + v = (temp[j] & 0x0F); + ++j; + } else { + v = ((temp[j] & 0xF0) >> 4); + } + PyTuple_SetItem(pdigit, i, (PyObject *) PyLong_FromLong(v)); + } + + return (res); +} + + +static PyObject *tuple2bcd(PyObject * dummy, PyObject * args) +{ + PyObject *res = NULL; + PyObject *lst; + char *temp; + int len, dprec, prec, sign; + int n; + + if (!PyArg_ParseTuple(args, "(iO!i)ii", &sign, &PyTuple_Type, &lst, + &dprec, &n, &prec)) { + return (NULL); + } + + len = PyTuple_Size(lst); + + if (len > 31) { + PyErr_SetString(PyExc_TypeError, "Invalid digits tuple length"); + return (NULL); + } + + if (((n + prec) & 1) == 0) { + ++n; + } + if (n + prec > 31) { + PyErr_SetString(PyExc_TypeError, "Invalid BCD length"); + return (NULL); + } + + dprec = -dprec; + + if (len - dprec > n) { + PyErr_SetString(PyExc_TypeError, "BCD integer part too short"); + return (NULL); + } + + { + char rstr[16]; + char digit[n + prec + 1]; + int i, j, k; + + for (i = 0; i < n - len + dprec; ++i) { + digit[i] = 0; + } + + for (j = 0; j < len - dprec; ++j, ++i) { + digit[i] = PyLong_AsLong(PyTuple_GetItem(lst, j)); + } + + if (dprec > prec) { + dprec = prec; + } + + for (; i < n + dprec; ++i, ++j) { + digit[i] = PyLong_AsLong(PyTuple_GetItem(lst, j)); + } + + for (; i < n + prec; ++i) { + digit[i] = 0; + } + + digit[n + prec] = 0; + + for (i = 0; i < (n + prec - 1) / 2; ++i) { + rstr[i] = (digit[2 * i]) * 16 + (digit[2 * i + 1]); + } + + if (sign == 0) { + sign = 0x0C; + } else { + sign = 0x0D; + } + + rstr[(n + prec - 1) / 2] = (digit[n + prec - 1]) * 16 + sign; + res = PyBytes_FromStringAndSize(rstr, (n + prec + 1) / 2); + + return (res); + } + + Py_INCREF(Py_None); + return (Py_None); +} + + +static unsigned int _getrmsattr(char *name, int attr, int *res) +{ + int status; + unsigned int fop = 0; + int fac = 0; + int shr = FAB$M_SHRGET; + rms_file_t *fo; + XABFHCDEF *fhc; + + adc_Assert((fo = malloc(sizeof(rms_file_t)))); + fill(fo, name, fac, shr, fop); + + if (attr == RMSATTR_K_LRL) { + adc_Assert((fhc = malloc(sizeof(XABFHCDEF)))); + *fhc = cc$rms_xabfhc; + fo->fab.fab$l_xab = fhc; + } + + status = sys$open((void *) &fo->fab); + + if (!OKAY(status)) { + if (attr == RMSATTR_K_LRL) { + free(fhc); + } + free(fo); + return (status); + } + + status = sys$display((void *) &fo->fab); + + if (!OKAY(status)) { + free(fo); + return (status); + } + + *res = 0; + + switch (attr) { + case RMSATTR_K_ORG: + *res = fo->fab.fab$b_org; + break; + case RMSATTR_K_RFM: + *res = fo->fab.fab$b_rfm; + break; + case RMSATTR_K_MRS: + *res = fo->fab.fab$w_mrs; + break; + case RMSATTR_K_RAT: + *res = fo->fab.fab$b_rat; + break; + case RMSATTR_K_LRL: + *res = fhc->xab$w_lrl; + break; + default: + abort(); + break; + } + + status = sys$close((void *) &fo->fab); + + if (attr == RMSATTR_K_LRL) { + free(fhc); + } + + free(fo); + return (status); +} + + +static PyObject *RMS_getrmsattr(PyObject * dummy, PyObject * args) +{ + unsigned int status; + char *name; + int attr, res; + char msg[256]; + PyObject *obj; + + if (!PyArg_ParseTuple(args, "si:getrmsattr", &name, &attr)) { + return (NULL); + } + + if (attr < 0 || attr > RMSATTR_K_LAST) { + PyErr_Format(RMS_error, "invalid attribute value: %d", attr); + return (NULL); + } + + status = _getrmsattr(name, attr, &res); + + if (!OKAY(status)) { + getmsg(status, msg, sizeof(msg)); + if ((obj = Py_BuildValue("(is)", stat, msg)) != NULL) { + PyErr_SetObject(RMS_error, obj); + Py_DECREF(obj); + } + return (NULL); + } + + return PyLong_FromLong((long) res); +} + + +static unsigned int +_parse(char *path, char *node, char *dev, char *dir, char *name, + char *type, char *ver) +{ + unsigned int status; + unsigned int fop = NAM$M_SYNCHK; + int fac = 0; + int shr = 0; + rms_file_t *fo; + int p1, p2, p3, p4, p5, p6; + + fo = PyMem_NEW(rms_file_t, 1); + fill(fo, path, fac, shr, fop); + + status = sys$parse((void *) &fo->fab); + + if (!OKAY(status)) { + PyMem_FREE(fo); + return (status); + } + + fo->naml.naml$l_esa[fo->naml.naml$b_esl] = '\0'; + fo->naml.naml$l_long_expand[fo->naml.naml$l_long_expand_size] = '\0'; + + p1 = fo->naml.naml$b_node; + p2 = fo->naml.naml$b_dev; + p3 = fo->naml.naml$b_dir; + p4 = fo->naml.naml$b_name; + p5 = fo->naml.naml$b_type; + p6 = fo->naml.naml$b_ver; + + *node = *dev = *dir = *name = *type = *ver = '\0'; + + if (p1) { + strncpy(node, fo->naml.naml$l_long_expand, p1); + node[p1] = '\0'; + } + + if (p2) { + strncpy(dev, fo->naml.naml$l_long_expand + p1, p2); + dev[p2] = '\0'; + } + + if (p3) { + strncpy(dir, fo->naml.naml$l_long_expand + p1 + p2, p3); + dir[p3] = '\0'; + } + + if (p4) { + strncpy(name, fo->naml.naml$l_long_expand + p1 + p2 + p3, p4); + name[p4] = '\0'; + } + + if (p5) { + strncpy(type, fo->naml.naml$l_long_expand + p1 + p2 + p3 + p4, p5); + type[p5] = '\0'; + } + + if (p6) { + strncpy(ver, fo->naml.naml$l_long_expand + p1 + p2 + p3 + p4 + p5, + p6); + ver[p6] = '\0'; + } + + PyMem_FREE(fo); + return (status); +} + + +static PyObject *RMS_parse(PyObject * dummy, PyObject * args) +{ + unsigned int status; + char *path; + char node[NAML$C_MAXRSS + 1]; + char dev[NAML$C_MAXRSS + 1]; + char dir[NAML$C_MAXRSS + 1]; + char name[NAML$C_MAXRSS + 1]; + char type[NAML$C_MAXRSS + 1]; + char ver[NAML$C_MAXRSS + 1]; + PyObject *obj; + char msg[256]; + + if (!PyArg_ParseTuple(args, "s:parse", &path)) { + return (NULL); + } + + status = _parse(path, node, dev, dir, name, type, ver); + + if (!OKAY(status)) { + getmsg(status, msg, sizeof(msg)); + if ((obj = Py_BuildValue("(is)", stat, msg)) != NULL) { + PyErr_SetObject(RMS_error, obj); + Py_DECREF(obj); + } + + return (NULL); + } + + obj = PyTuple_New(6); + PyTuple_SetItem(obj, 0, PyBytes_FromString(node)); + PyTuple_SetItem(obj, 1, PyBytes_FromString(dev)); + PyTuple_SetItem(obj, 2, PyBytes_FromString(dir)); + PyTuple_SetItem(obj, 3, PyBytes_FromString(name)); + PyTuple_SetItem(obj, 4, PyBytes_FromString(type)); + PyTuple_SetItem(obj, 5, PyBytes_FromString(ver)); + + return (obj); +} + + +PyTypeObject RmsFile_Type = { + PyObject_HEAD_INIT(NULL) + "rmsFile", // tp_name + sizeof(rms_file_t), // tp_basicsize + 0, // tp_itemsize + (destructor) dealloc, // tp_dealloc + 0, // tp_print + 0, // tp_getattr + 0, // tp_setattr + NULL, // formerly known as tp_compare or tp_reserved + 0, // tp_repr + 0, // tp_as_number + 0, // tp_as_sequence + 0, // tp_as_mapping + 0, // tp_hash + 0, // tp_call + 0, // tp_str + PyObject_GenericGetAttr, // tp_getattro + 0, // tp_setattro + 0, // tp_as_buffer + Py_TPFLAGS_DEFAULT, // tp_flags + 0, // tp_doc + 0, // tp_traverse + 0, // tp_clear + 0, // tp_richcompare + 0, // tp_weaklistoffset + (getiterfunc) getiter, // tp_iter + (iternextfunc) iternext, // tp_iternext + tp_methods, // tp_methods + tp_members, // tp_members + 0, // tp_getset + 0, // tp_base + 0, // tp_dict + 0, // tp_descr_get + 0, // tp_descr_set + 0, // tp_dictoffset + 0, // tp_init + 0, // tp_alloc + 0, // tp_new + 0, // tp_free + 0, // tp_is_gc + NULL, + NULL, + NULL, + NULL, + NULL, + NULL, + 0, + NULL +}; + + +static rms_file_t *_new(char *fn, int access, int share, unsigned int fop) +{ + rms_file_t *self = PyObject_New(rms_file_t, &RmsFile_Type); + + if (self) { + fill(self, fn, access, share, fop); + } + + return (self); +} + + + +static PyMethodDef m_methods[] = { + {"file", (PyCFunction) RMS_new, METH_VARARGS | METH_KEYWORDS, + PyDoc_STR("file(name [,fac] [,shr], [fop]) -> new RMS file object")}, + {"BCD2String", (PyCFunction) bcd2string, METH_VARARGS, + PyDoc_STR("BCD2String(s) -> string")}, + {"String2BCD", (PyCFunction) string2bcd, METH_VARARGS, + PyDoc_STR("String2BCD(obj) -> BCD string")}, + {"BCD2Tuple", (PyCFunction) bcd2tuple, METH_VARARGS, + PyDoc_STR("BCD2Tuple(s) -> tuple")}, + {"Tuple2BCD", (PyCFunction) tuple2bcd, METH_VARARGS, + PyDoc_STR("Tuple2BCD(obj) -> BCD string")}, + {"getrmsattr", (PyCFunction) RMS_getrmsattr, METH_VARARGS, + PyDoc_STR("getrmsattr(path, attr) -> value")}, + {"parse", (PyCFunction) RMS_parse, METH_VARARGS, + PyDoc_STR("parse(path) -> (node, dev, dir, name, ext, ver)")}, + {NULL, NULL} +}; + + +static struct PyModuleDef moddef = { + PyModuleDef_HEAD_INIT, + "_rms", /* m_name */ + "OpenVMS RMS module", /* m_doc */ + -1, /* m_size */ + m_methods, /* m_methods */ + NULL, /* m_reload */ + NULL, /* m_traverse */ + NULL, /* m_clear */ + NULL, /* m_free */ +}; + + +PyMODINIT_FUNC PyInit__rms(void) +{ + PyObject *m, *d; + PyObject *dict = PyDict_New(); + PyObject *str = NULL; + + m = PyModule_Create(&moddef); + d = PyModule_GetDict(m); + + addint(d, "RMSATTR_K_ORG", RMSATTR_K_ORG); + addint(d, "RMSATTR_K_RFM", RMSATTR_K_RFM); + addint(d, "RMSATTR_K_RAT", RMSATTR_K_RAT); + addint(d, "RMSATTR_K_MRS", RMSATTR_K_MRS); + addint(d, "RMSATTR_K_LRL", RMSATTR_K_LRL); + addint(d, "RMSATTR_K_LAST", RMSATTR_K_LAST); + addint(d, "PARSE_K_NODE", PARSE_K_NODE); + addint(d, "PARSE_K_DEV", PARSE_K_DEV); + addint(d, "PARSE_K_DIR", PARSE_K_DIR); + addint(d, "PARSE_K_NAME", PARSE_K_NAME); + addint(d, "PARSE_K_TYPE", PARSE_K_TYPE); + addint(d, "PARSE_K_VER", PARSE_K_VER); + + str = PyBytes_FromString(RMS_error__doc__); + PyDict_SetItemString(dict, "__doc__", str); + + if (RMS_error == NULL) { + if ((RMS_error = + PyErr_NewException("vms.rms.error", PyExc_IOError, + dict)) == NULL) { + return (NULL); + } + } + + Py_XDECREF(dict); + Py_XDECREF(str); + Py_INCREF(RMS_error); + PyModule_AddObject(m, "error", RMS_error); + + return (m); +} diff --git a/Modules/vms/rms/rms.com b/Modules/vms/rms/rms.com new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcm1zL3Jtcy5jb20= --- /dev/null +++ b/Modules/vms/rms/rms.com @@ -0,0 +1,22 @@ +$ set verify +$ hell: +$ ! RMS interface +$ define cc$include python$root:[include] +$ ccopt = "/nolist/noopt/names=(as_is,shortened)/define=(_OSF_SOURCE,_USE_STD_STAT)/include=cc$include/warn=disable=(QUESTCOMPARE,QUESTCOMPARE1)" +$ +$!! cc'ccopt' [.modules.vms.rms]rms.c +$ cc'ccopt' rms.c +$ link/share=_rms.exe rms.obj,sys$input/opt +sys$library:pthread$rtl.exe/share +python$shr/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__rms=PROCEDURE) +$ purge/log [...] +$ delete/log/noconf rms.obj;* +$ +$ +$ copy _rms.exe PYTHON$ROOT:[000000.lib.python3^.5.lib-dynload] +$ purge/log PYTHON$ROOT:[000000.lib.python3^.5.lib-dynload] +$ exit + diff --git a/Modules/vms/rms/rms_demo.com b/Modules/vms/rms/rms_demo.com new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcm1zL3Jtc19kZW1vLmNvbQ== --- /dev/null +++ b/Modules/vms/rms/rms_demo.com @@ -0,0 +1,28 @@ +$ set verify +$ python :== $python$root:[bin]python.exe +$ +$ delete/log/noconfirm test.dat;* +$ create/fdl=rms_demo_1.fdl test.dat +$ +$ write sys$output ">>> Running rms_demo_1.py..." +$ python rms_demo_1.py +$ write sys$output "<<< done." +$ +$!!! TBD - this next test currently fails due to an issue with indexedfile.py +$ write sys$output ">>> Running rms_demo_2.py..." +$ python rms_demo_2.py +$ write sys$output "<<< done." +$ +$ write sys$output ">>> Running rms_demo_3.py..." +$ python rms_demo_3.py +$ write sys$output "<<< done." +$ +$ write sys$output ">>> Running rms_demo_4.py..." +$ python rms_demo_4.py +$ write sys$output "<<< done." +$ +$ write sys$output ">>> Running rms_demo_5.py..." +$ python rms_demo_5.py +$ write sys$output "<<< done." +$ +$ exit diff --git a/Modules/vms/rms/rms_demo_1.fdl b/Modules/vms/rms/rms_demo_1.fdl new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcm1zL3Jtc19kZW1vXzEuZmRs --- /dev/null +++ b/Modules/vms/rms/rms_demo_1.fdl @@ -0,0 +1,63 @@ +IDENT "12-NOV-2002 09:59:33 OpenVMS FDL Editor" + +SYSTEM + SOURCE "OpenVMS" + +FILE + NAME "Test file" + ORGANIZATION indexed + +RECORD + CARRIAGE_CONTROL none + FORMAT fixed + SIZE 20 + +AREA 0 + ALLOCATION 30 + BEST_TRY_CONTIGUOUS yes + BUCKET_SIZE 1 + EXTENSION 6 + +AREA 1 + ALLOCATION 3 + BEST_TRY_CONTIGUOUS yes + BUCKET_SIZE 1 + EXTENSION 3 + +AREA 2 + ALLOCATION 9 + BEST_TRY_CONTIGUOUS yes + BUCKET_SIZE 1 + EXTENSION 6 + +KEY 0 + CHANGES no + DATA_AREA 0 + DATA_FILL 100 + DATA_KEY_COMPRESSION yes + DATA_RECORD_COMPRESSION yes + DUPLICATES no + INDEX_AREA 1 + INDEX_COMPRESSION no + INDEX_FILL 100 + LEVEL1_INDEX_AREA 1 + NAME "KEY_0" + PROLOG 3 + SEG0_LENGTH 5 + SEG0_POSITION 0 + TYPE string + +KEY 1 + CHANGES yes + DATA_AREA 2 + DATA_FILL 100 + DATA_KEY_COMPRESSION no + DUPLICATES yes + INDEX_AREA 2 + INDEX_COMPRESSION no + INDEX_FILL 100 + LEVEL1_INDEX_AREA 2 + NAME "KEY_1" + SEG0_LENGTH 4 + SEG0_POSITION 5 + TYPE int4 diff --git a/Modules/vms/rms/rms_demo_1.py b/Modules/vms/rms/rms_demo_1.py new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcm1zL3Jtc19kZW1vXzEucHk= --- /dev/null +++ b/Modules/vms/rms/rms_demo_1.py @@ -0,0 +1,100 @@ +import pprint +import struct +import _rms +from vms.fabdef import * +import vms.rmsdef + +acc = FAB_M_PUT + FAB_M_GET + FAB_M_DEL + FAB_M_UPD +shr = FAB_M_SHRPUT + FAB_M_SHRGET + FAB_M_SHRDEL + FAB_M_SHRUPD +f = _rms.file('test.dat',fac=acc, shr=shr) + +print +print('Empty file') +f.rewind() +s = f.find() +while(s != vms.rmsdef.RMS__EOF): + f.delete() + s = f.find() + + +print +print('Insert a few records') +rec = struct.pack(b"=5si11s", b'AA5AA', 5, b'1234567890A') +f.put(rec) +rec = struct.pack(b"=5si11s", b'BB2BB', 2, b'1234567890B') +f.put(rec) +rec = struct.pack(b"=5si11s", b'CC4CC', 4, b'1234567890C') +f.put(rec) +rec = struct.pack(b"=5si11s", b'DD1DD', 1, b'1234567890D') +f.put(rec) +rec = struct.pack(b"=5si11s", b'EE1EE', 2, b'1234567890E') +f.put(rec) +rec = struct.pack(b"=5si11s", b'FF3FF', 3, b'1234567890F') +f.put(rec) + + +print +print('Initial records') +f.rewind() +while(1): + s, r = f.fetch() + if r == None: break + print(struct.unpack("=5si11s", r)) + + +print +print('Update all records') +f.rewind() +while(1): + s, r = f.fetch() + if r == None: break + k,n,v = struct.unpack("=5si11s", r) + rec = struct.pack(b"=5si11s", k, n+10, b'X' + v[1:]) + s = f.update(rec) + + +print +print('use secondary key and an iterator') +s = f.usekey(1) +s = f.rewind() +for r in f: + print(struct.unpack("=5si11s", r)) + + +print +print('build a list of all records') +f.usekey(0) +f.rewind() +pprint.pprint([struct.unpack("=5si11s", r) for r in f]) + + +f.usekey(1) + +print +print('delete a record using delete(14)') +key = struct.pack("=i", 14) +s = f.delete(key) + +print +print('delete all record key 12 using find(12) + delete()') +key = struct.pack("=i", 12) +s = f.find(key) +while (1): + s, r = f.fetch() + if r: + k,n,v = struct.unpack("=5si11s", r) + if n == 12: + s = f.delete() + else: + break + else: + break + +print +print('build a list of all records after delete') +f.rewind() +pprint.pprint([struct.unpack("=5si11s", r) for r in f]) + + +print('Close the file') +f.close() diff --git a/Modules/vms/rms/rms_demo_2.py b/Modules/vms/rms/rms_demo_2.py new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcm1zL3Jtc19kZW1vXzIucHk= --- /dev/null +++ b/Modules/vms/rms/rms_demo_2.py @@ -0,0 +1,117 @@ +import struct +from vms.rmsdef import RMS__SUC, RMS__RNF, RMS__OK_DUP +from vms.fabdef import FAB_M_PUT, FAB_M_GET, FAB_M_DEL, FAB_M_UPD, \ + FAB_M_SHRPUT, FAB_M_SHRGET, FAB_M_SHRDEL, FAB_M_SHRUPD +# from _rms.IndexedFile import IndexedFile, Record +from vms.indexedfile import IndexedFile, Record + +class TestRec(Record): + _field = [ + ('f1', '5s'), + ('f2', 'i'), + ('f3', '11s'), + ] + _fmt = '=' + ''.join([x[1] for x in _field]) + _fixsize = struct.calcsize(_fmt) + + def keyval(self, keynum): + if keynum == 0: + return self.f1 + elif keynum == 1: + return self.f2 + else: + raise "Invalid keynum parameter" + + +class TestFile(IndexedFile): + Name = 'test.dat' + def __init__(self): + IndexedFile.__init__(self, TestFile.Name, TestRec) + + def primary_keynum(self): + return 0 + + def pack_key(self, keynum, keyval): + if keynum == 0: + return struct.pack("=5s", keyval) + elif keynum == 1: + return struct.pack("=i", keyval) + else: + raise KeyError + +if __name__=='__main__': + f = TestFile() + print + print ('Reset file') + f.reset() + + print + print ('Insert a few records') + rec = TestRec(('AA5AA', 5, '1234567890A')) + f.put(rec) + rec = TestRec(('BB2BB', 2, '1234567890B')) + f.put(rec) + rec = TestRec(('CC4CC', 4, '1234567890C')) + f.put(rec) + rec = TestRec(('DD1DD', 1, '1234567890D')) + f.put(rec) + rec = TestRec(('EE1EE', 2, '1234567890E')) + f.put(rec) + rec = TestRec(('FF3FF', 3, '1234567890F')) + f.put(rec) + + print + print ('Initial records using an iterator, primary key order') + for rec in f: + print( rec.f1, rec.f2, rec.f3) + + print + print ('Initial records using an iterator, secondary key order') + f.iterator_keynum(1) + for rec in f: + print( rec.f1, rec.f2, rec.f3) + + print + print ('Update all records using an iterator') + # iterator key is automatically reset to primary key + for rec in f: + rec.f2 = rec.f2 + 10 + f.update_current(rec) + + print + print ('Updated records using an iterator') + for rec in f: + print( rec.f1, rec.f2, rec.f3) + + print + print ('build a list of all records') + lst = f.fetchall(0) + print (len(lst)) + +### Not implemented +### print +### print ('delete a record using secondary key value 14') +### f.delete(1, 14) + + print + print ('Records using an iterator, secondary key order') + f.iterator_keynum(1) + for rec in f: + print (rec.f1, rec.f2, rec.f3) + + print ('delete all records using secondary key value 12') + f.open(acc = FAB_M_GET + FAB_M_DEL) + f.usekey(1) + f.rewind() + f.find(None, f.pack_key(1, 12)) + for rec in f: + if rec.f2 == 12: + f.delete_current() + else: + break + f.close() + + print + print ('Records using an iterator, primary key order') + for rec in f: + print( rec.f1, rec.f2, rec.f3) diff --git a/Modules/vms/rms/rms_demo_3.py b/Modules/vms/rms/rms_demo_3.py new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcm1zL3Jtc19kZW1vXzMucHk= --- /dev/null +++ b/Modules/vms/rms/rms_demo_3.py @@ -0,0 +1,40 @@ +import struct +import _rms +from vms.fabdef import * +import vms.rmsdef +acc = FAB_M_GET +shr = FAB_M_SHRPUT + FAB_M_SHRGET + FAB_M_SHRDEL + FAB_M_SHRUPD +f = _rms.file('sysuaf',fac=acc, shr=shr) + + +print('Alphabetic order') + +for i in range(10): + s,r = f.fetch() + lst = struct.unpack("=i32shhiQ32s32p", r[:116]) + print('%s [%o,%o]' % (lst[1], lst[3], lst[2])) + +print +print('UIC order') + +f.usekey(1) +f.rewind() +i = 0 +for r in f: + i += 1 + if (i > 10): break + lst = struct.unpack("=i32shhiQ32s32p", r[:116]) + print('%s [%o,%o]' % (lst[1], lst[3], lst[2])) + + +print +print('Alphabetic order') + +f.usekey(0) +f.rewind() +for r in f: + lst = struct.unpack("=i32shhiQ32s32p", r[:116]) + print('%s [%o,%o]' % (lst[1], lst[3], lst[2])) + + +f.close() diff --git a/Modules/vms/rms/rms_demo_4.py b/Modules/vms/rms/rms_demo_4.py new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcm1zL3Jtc19kZW1vXzQucHk= --- /dev/null +++ b/Modules/vms/rms/rms_demo_4.py @@ -0,0 +1,43 @@ +import struct +import _rms +from vms.fabdef import * +import vms.sys + +acc = FAB_M_GET +shr = FAB_M_SHRPUT + FAB_M_SHRGET + FAB_M_SHRDEL + FAB_M_SHRUPD +f = _rms.file('sysuaf',fac=acc, shr=shr) + +print(f.longname) +print('Number of keys:', f.nok) +print + +print('Alphabetic order') +print('%-32s %-20s %s' %('Username', 'UIC', 'Last Interactive Login')) +print('-'*78) + +for i in range(4): + s,r = f.fetch() + lst = struct.unpack("=i32sHHIQ32s32p32p64p64p32p32pQQHHBBBBQQQQQQQQ", + r[:428]) + uic = '[%o,%o]' % (lst[3], lst[2]) + sts, dt = vms.sys.asctim(lst[25], 0) + print('%s %-16s %28s' % (lst[1], uic, dt)) + +print +print('UIC order') +print('%-32s %-20s %s' %('Username', 'UIC', 'Last Interactive Login')) +print('-'*78) + +f.usekey(1) +f.rewind() +i = 0 +for r in f: + i += 1 + if (i > 4): break + lst = struct.unpack("=i32sHHIQ32s32p32p64p64p32p32pQQHHBBBBQQQQQQQQ", + r[:428]) + uic = '[%o,%o]' % (lst[3], lst[2]) + sts, dt = vms.sys.asctim(lst[25], 0) + print('%s %-16s %28s' % (lst[1], uic, dt)) + +f.close() diff --git a/Modules/vms/rms/rms_demo_5.py b/Modules/vms/rms/rms_demo_5.py new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcm1zL3Jtc19kZW1vXzUucHk= --- /dev/null +++ b/Modules/vms/rms/rms_demo_5.py @@ -0,0 +1,105 @@ +import struct +import _rms +import vms.fabdef +import vms.rmsdef + +__version__ = '1.0' +__doc__ = 'get user information from sysuaf' + +class user: + def __init__(self, username, uic_member, uic_group, sub_id, parent_id, + account, owner, defdev, defdir, lgicmd, defcli, clitables, + pwd, pwd2, logfails, salt, encrypt, encrypt2, pwd_length, + expiration, pwd_lifetime, pwd_date, pwd2_date, lastlogin_i, + lastlogin_n, priv, def_priv, min_class, max_class, flags, + hourly_access, primedays, pri, quepri, maxjobs, maxacctjobs, + maxdetach, prccnt, biolm, diolm, tqcnt, astlm, enqlm, fillm, + shrfillm, wsquota, dfwscnt, wsextent, pgflquota, cputim, + bytlm, pbytlm, jtquota, proxy_lim, proxies, account_lim, + accounts, def_class): + self.username = username + self.uic_member = uic_member + self.uic_group = uic_group + self.sub_id = sub_id + self.parent_id = parent_id + self.account = account + self.owner = owner + self.defdev = defdev + self.defdir = defdir + self.lgicmd = lgicmd + self.defcli = defcli + self.clitables = clitables + self.pwd = pwd + self.pwd2 = pwd2 + self.logfails = logfails + self.salt = salt + self.encrypt = encrypt + self.encrypt2 = encrypt2 + self.pwd_length = pwd_length + self.expiration = expiration + self.pwd_lifetime = pwd_lifetime + # pre-expired pwd + if pwd_date == 18446744073709551615: + self.pwd_date = None + else: + self.pwd_date = pwd_date + # pre-expired pwd + if pwd2_date == 18446744073709551615: + self.pwd2_date = None + else: + self.pwd2_date = pwd2_date + self.lastlogin_i = lastlogin_i + self.lastlogin_n = lastlogin_n + self.priv = priv + self.def_priv = def_priv + self.min_class = min_class + self.max_class = max_class + self.flags = flags + self.hourly_access = hourly_access + self.primedays = primedays + self.pri = pri + self.quepri = quepri + self.maxjobs = maxjobs + self.maxacctjobs = maxacctjobs + self.maxdetach = maxdetach + self.prccnt = prccnt + self.biolm = biolm + self.diolm = diolm + self.tqcnt = tqcnt + self.astlm = astlm + self.enqlm = enqlm + self.fillm = fillm + self.shrfillm = shrfillm + self.wsquota = wsquota + self.dfwscnt = dfwscnt + self.wsextent = wsextent + self.pgflquota = pgflquota + self.cputim = cputim + self.bytlm = bytlm + self.pbytlm = pbytlm + self.jtquota = jtquota + self.proxy_lim = proxy_lim + self.proxies = proxies + self.account_lim = account_lim + self.accounts = accounts + self.def_class = def_class + +def all_users(): + acc = vms.fabdef.FAB_M_PUT + vms.fabdef.FAB_M_GET + vms.fabdef.FAB_M_DEL +\ + vms.fabdef.FAB_M_UPD + shr = vms.fabdef.FAB_M_SHRPUT + vms.fabdef.FAB_M_SHRGET +\ + vms.fabdef.FAB_M_SHRDEL + vms.fabdef.FAB_M_SHRUPD + f = _rms.file('sysuaf',fac=acc, shr=shr) + res = {} + format = "=4x32sHHIQ32s32p32p64p64p32p32pQQHHBBBB8xQQQQQQQ20s20sI30s12xBx" + format += "BBHHHHHHHHHHHLLLLLLLLHHHH20s" + for r in f: + lst = struct.unpack(format, r[:600]) + usr = user(*lst) + res[usr.username] = usr + f.close() + return res + + +l = all_users() +print(*l, sep = "\n") diff --git a/Modules/vms/rmsdef/rmsdef.i b/Modules/vms/rmsdef/rmsdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcm1zZGVmL3Jtc2RlZi5p --- /dev/null +++ b/Modules/vms/rmsdef/rmsdef.i @@ -0,0 +1,284 @@ +%module rmsdef + +%constant int RMS__FACILITY = 1; +%constant int RMS_V_STVSTATUS = 14; +%constant int RMS__SUC = 65537; +%constant int RMS__NORMAL = 65537; +%constant int RMS__STALL = 98305; +%constant int RMS__PENDING = 98313; +%constant int RMS__OK_DUP = 98321; +%constant int RMS__OK_IDX = 98329; +%constant int RMS__OK_RLK = 98337; +%constant int RMS__OK_RRL = 98345; +%constant int RMS__KFF = 98353; +%constant int RMS__OK_ALK = 98361; +%constant int RMS__OK_DEL = 98369; +%constant int RMS__OK_RNF = 98377; +%constant int RMS__OK_LIM = 98385; +%constant int RMS__OK_NOP = 98393; +%constant int RMS__OK_WAT = 98401; +%constant int RMS__CRE_STM = 98409; +%constant int RMS__OK_RULK = 98417; +%constant int RMS__SYNCH = 98425; +%constant int RMS__OK_ACT = 98433; +%constant int RMS__OK_NOCURTID = 98441; +%constant int RMS__CONTROLC = 67153; +%constant int RMS__CONTROLO = 67081; +%constant int RMS__CONTROLY = 67089; +%constant int RMS__CREATED = 67097; +%constant int RMS__SUPERSEDE = 67121; +%constant int RMS__OVRDSKQUOTA = 67177; +%constant int RMS__FILEPURGED = 67193; +%constant int RMS__BOF = 98712; +%constant int RMS__RNL = 98720; +%constant int RMS__RTB = 98728; +%constant int RMS__TMO = 98736; +%constant int RMS__TNS = 98744; +%constant int RMS__BES = 98752; +%constant int RMS__PES = 98760; +%constant int RMS__ACT = 98906; +%constant int RMS__DEL = 98914; +%constant int RMS__INCOMPSHR = 98922; +%constant int RMS__DNR = 98930; +%constant int RMS__EOF = 98938; +%constant int RMS__FEX = 98946; +%constant int RMS__FLK = 98954; +%constant int RMS__FNF = 98962; +%constant int RMS__PRV = 98970; +%constant int RMS__REX = 98978; +%constant int RMS__RLK = 98986; +%constant int RMS__RNF = 98994; +%constant int RMS__WLK = 99002; +%constant int RMS__EXP = 99010; +%constant int RMS__NMF = 99018; +%constant int RMS__SUP = 99026; +%constant int RMS__RSA = 99034; +%constant int RMS__CRC = 99042; +%constant int RMS__WCC = 99050; +%constant int RMS__IDR = 99058; +%constant int RMS__LWC = 99066; +%constant int RMS__UNUSED1 = 99074; +%constant int RMS__NOVALPRS = 99082; +%constant int RMS__KEY_MISMATCH = 99090; +%constant int RMS__RUH = 99098; +%constant int RMS__JND = 99106; +%constant int RMS__BADPHASE = 99114; +%constant int RMS__TOWDR = 99122; +%constant int RMS__NEXDR = 99130; +%constant int RMS__INVDRMSG = 99138; +%constant int RMS__RU_ACTIVE = 99146; +%constant int RMS__UNKRUFAC = 99154; +%constant int RMS__LIMBO = 99162; +%constant int RMS__IVATRACE = 99170; +%constant int RMS__OPNOTSUP = 99178; +%constant int RMS__EXTNOTFOU = 99186; +%constant int RMS__EXT_ERR = 99194; +%constant int RMS__SEMANTICS = 99202; +%constant int RMS__LSCAN = 99210; +%constant int RMS__ROOTSRCH = 99218; +%constant int RMS__IDXSEARCH = 99226; +%constant int RMS__NETBTS = 99234; +%constant int RMS__NXR = 99242; +%constant int RMS__EOFASY_SYNCH = 99250; +%constant int RMS__ELOOP = 99258; +%constant int RMS__ACC = 114690; +%constant int RMS__CRE = 114698; +%constant int RMS__DAC = 114706; +%constant int RMS__ENT = 114714; +%constant int RMS__EXT = 114722; +%constant int RMS__FND = 114730; +%constant int RMS__MKD = 114738; +%constant int RMS__DPE = 114746; +%constant int RMS__SPL = 114754; +%constant int RMS__DNF = 114762; +%constant int RMS__RUF = 114770; +%constant int RMS__WRTJNL_AIJ = 114778; +%constant int RMS__WRTJNL_BIJ = 114786; +%constant int RMS__WRTJNL_ATJ = 114794; +%constant int RMS__WRTJNL_RUJ = 114802; +%constant int RMS__RRF = 114810; +%constant int RMS__DDTM_ERR = 114818; +%constant int RMS__DTFCDDREC = 99308; +%constant int RMS__AID = 99316; +%constant int RMS__ALN = 99324; +%constant int RMS__ALQ = 99332; +%constant int RMS__ANI = 99340; +%constant int RMS__AOP = 99348; +%constant int RMS__BKS = 99356; +%constant int RMS__BKZ = 99364; +%constant int RMS__BLN = 99372; +%constant int RMS__BUG = 99380; +%constant int RMS__BUG_DDI = 99388; +%constant int RMS__BUG_DAP = 99396; +%constant int RMS__BUG_RU_ACTIVE = 99404; +%constant int RMS__BUG_RURECERR = 99412; +%constant int RMS__BUG_FLUSH_JNL_FAILED = 99420; +%constant int RMS__BUG_RU_ABORT_FAIL = 99428; +%constant int RMS__BUG_RU_COMMIT_FAIL = 99436; +%constant int RMS__BUG_XX6 = 99444; +%constant int RMS__BUG_XX7 = 99452; +%constant int RMS__BUG_XX8 = 99460; +%constant int RMS__BUSY = 99468; +%constant int RMS__CCR = 99476; +%constant int RMS__CHG = 99484; +%constant int RMS__CHK = 99492; +%constant int RMS__COD = 99500; +%constant int RMS__CUR = 99508; +%constant int RMS__DAN = 99516; +%constant int RMS__DEV = 99524; +%constant int RMS__DIR = 99532; +%constant int RMS__DME = 99540; +%constant int RMS__DNA = 99548; +%constant int RMS__DTP = 99556; +%constant int RMS__DUP = 99564; +%constant int RMS__DVI = 99572; +%constant int RMS__ESA = 99580; +%constant int RMS__ESS = 99588; +%constant int RMS__FAB = 99596; +%constant int RMS__FAC = 99604; +%constant int RMS__FLG = 99612; +%constant int RMS__FNA = 99620; +%constant int RMS__FNM = 99628; +%constant int RMS__FSZ = 99636; +%constant int RMS__FOP = 99644; +%constant int RMS__FUL = 99652; +%constant int RMS__IAL = 99660; +%constant int RMS__IAN = 99668; +%constant int RMS__IDX = 99676; +%constant int RMS__IFI = 99684; +%constant int RMS__IMX = 99692; +%constant int RMS__IOP = 99700; +%constant int RMS__IRC = 99708; +%constant int RMS__ISI = 99716; +%constant int RMS__KBF = 99724; +%constant int RMS__KEY = 99732; +%constant int RMS__KRF = 99740; +%constant int RMS__KSZ = 99748; +%constant int RMS__LAN = 99756; +%constant int RMS__RUNDOWN = 99764; +%constant int RMS__LNE = 99772; +%constant int RMS__DTFCVT = 99780; +%constant int RMS__MRN = 99788; +%constant int RMS__MRS = 99796; +%constant int RMS__NAM = 99804; +%constant int RMS__NEF = 99812; +%constant int RMS__DTFQUASYN = 99820; +%constant int RMS__NOD = 99828; +%constant int RMS__NPK = 99836; +%constant int RMS__ORD = 99844; +%constant int RMS__ORG = 99852; +%constant int RMS__PBF = 99860; +%constant int RMS__PLG = 99868; +%constant int RMS__POS = 99876; +%constant int RMS__DTFQUAVAL = 99884; +%constant int RMS__QUO = 99892; +%constant int RMS__RAB = 99900; +%constant int RMS__RAC = 99908; +%constant int RMS__RAT = 99916; +%constant int RMS__RBF = 99924; +%constant int RMS__RFA = 99932; +%constant int RMS__RFM = 99940; +%constant int RMS__RHB = 99948; +%constant int RMS__RLF = 99956; +%constant int RMS__ROP = 99964; +%constant int RMS__RRV = 99972; +%constant int RMS__RVU = 99980; +%constant int RMS__RSS = 99988; +%constant int RMS__RST = 99996; +%constant int RMS__RSZ = 100004; +%constant int RMS__SEQ = 100012; +%constant int RMS__SHR = 100020; +%constant int RMS__SIZ = 100028; +%constant int RMS__SQO = 100036; +%constant int RMS__DTFSESEST = 100044; +%constant int RMS__SYN = 100052; +%constant int RMS__TRE = 100060; +%constant int RMS__TYP = 100068; +%constant int RMS__UBF = 100076; +%constant int RMS__USZ = 100084; +%constant int RMS__VER = 100092; +%constant int RMS__XNF = 100100; +%constant int RMS__XAB = 100108; +%constant int RMS__ESL = 100116; +%constant int RMS__DTFSESTER = 100124; +%constant int RMS__ENV = 100132; +%constant int RMS__PLV = 100140; +%constant int RMS__MBC = 100148; +%constant int RMS__RSL = 100156; +%constant int RMS__WLD = 100164; +%constant int RMS__NET = 100172; +%constant int RMS__IBF = 100180; +%constant int RMS__REF = 100188; +%constant int RMS__IFL = 100196; +%constant int RMS__DFL = 100204; +%constant int RMS__KNM = 100212; +%constant int RMS__IBK = 100220; +%constant int RMS__KSI = 100228; +%constant int RMS__LEX = 100236; +%constant int RMS__SEG = 100244; +%constant int RMS__SNE = 100252; +%constant int RMS__SPE = 100260; +%constant int RMS__UPI = 100268; +%constant int RMS__ACS = 100276; +%constant int RMS__STR = 100284; +%constant int RMS__FTM = 100292; +%constant int RMS__GBC = 100300; +%constant int RMS__DEADLOCK = 100308; +%constant int RMS__EXENQLM = 100316; +%constant int RMS__JOP = 100324; +%constant int RMS__RUM = 100332; +%constant int RMS__JNS = 100340; +%constant int RMS__NRU = 100348; +%constant int RMS__IFF = 100356; +%constant int RMS__DTFTRATBL = 100364; +%constant int RMS__DTFUNSTYP = 100372; +%constant int RMS__DTFVERMIS = 100380; +%constant int RMS__DTFACC = 100386; +%constant int RMS__BOGUSCOL = 100396; +%constant int RMS__ERRREADCOL = 100404; +%constant int RMS__ERRWRITECOL = 100412; +%constant int RMS__SNS = 100420; +%constant int RMS__NOEXTEND = 100428; +%constant int RMS__DTFCRE = 100434; +%constant int RMS__DELJNS = 100444; +%constant int RMS__NOTSAMEJNL = 100452; +%constant int RMS__SNPPF = 100460; +%constant int RMS__NAML = 100468; +%constant int RMS__NAMLESS = 100476; +%constant int RMS__NAMLRSS = 100484; +%constant int RMS__NAMLFSSIZ = 100492; +%constant int RMS__NAMLFSINV = 100500; +%constant int RMS__BADGBH = 100508; +%constant int RMS__BADGBD = 100516; +%constant int RMS__FOPEXTMBZ = 100524; +%constant int RMS__INVOP_SSIO = 100532; +%constant int RMS__IVSF = 100540; +%constant int RMS__ATR = 114892; +%constant int RMS__ATW = 114900; +%constant int RMS__CCF = 114908; +%constant int RMS__CDA = 114916; +%constant int RMS__CHN = 114924; +%constant int RMS__RER = 114932; +%constant int RMS__RMV = 114940; +%constant int RMS__RPL = 114948; +%constant int RMS__SYS = 114956; +%constant int RMS__WER = 114964; +%constant int RMS__WPL = 114972; +%constant int RMS__IFA = 114980; +%constant int RMS__WBE = 114988; +%constant int RMS__ENQ = 114996; +%constant int RMS__NETFAIL = 115004; +%constant int RMS__SUPPORT = 115012; +%constant int RMS__CRMP = 115020; +%constant int RMS__DTFCFGFIL = 115028; +%constant int RMS__REENT = 115036; +%constant int RMS__ACC_RUJ = 115044; +%constant int RMS__TMR = 115052; +%constant int RMS__ACC_AIJ = 115060; +%constant int RMS__ACC_BIJ = 115068; +%constant int RMS__ACC_ATJ = 115076; +%constant int RMS__DTFDEFFIL = 115084; +%constant int RMS__DTFREGFIL = 115092; +%constant int RMS__JNLNOTAUTH = 115100; +%constant int RMS__CRBUFOBJ = 115108; +%constant int RMS__RSESTK_ALLOC = 115116; diff --git a/Modules/vms/rsdmdef/rsdmdef.i b/Modules/vms/rsdmdef/rsdmdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvcnNkbWRlZi9yc2RtZGVmLmk= --- /dev/null +++ b/Modules/vms/rsdmdef/rsdmdef.i @@ -0,0 +1,12 @@ +%module rsdmdef + +%constant int RSDM__JOIN_SYSTEM = 1; +%constant int RSDM__JOIN_DEFAULT = 2; +%constant int RSDM__JOIN_DOMAIN = 3; +%constant int RSDM__LEAVE = 4; +%constant int RSDM_K_SYSTEM_RSDM_ID = 1; +%constant int RSDM_K_PROCESS_RSDM_ID = 2; +%constant int RSDM_M_READ = 0x1L; +%constant int RSDM_M_WRITE = 0x2L; +%constant int RSDM_M_LOCK = 0x4L; +%constant int RSDM_S_RSDMBITS = 4; diff --git a/Modules/vms/sdvdef/sdvdef.i b/Modules/vms/sdvdef/sdvdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvc2R2ZGVmL3NkdmRlZi5p --- /dev/null +++ b/Modules/vms/sdvdef/sdvdef.i @@ -0,0 +1,5 @@ +%module sdvdef + +%constant int SDV__MP_SWITCH_PATH = 1; +%constant int SDV__MP_ENABLE_PATH = 2; +%constant int SDV__MP_DISABLE_PATH = 3; diff --git a/Modules/vms/sjcdef/sjcdef.i b/Modules/vms/sjcdef/sjcdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvc2pjZGVmL3NqY2RlZi5p --- /dev/null +++ b/Modules/vms/sjcdef/sjcdef.i @@ -0,0 +1,343 @@ +%module sjcdef + +%constant int SJC__ABORT_JOB = 1; +%constant int SJC__ADD_FILE = 2; +%constant int SJC__ALTER_JOB = 3; +%constant int SJC__ALTER_QUEUE = 4; +%constant int SJC__ASSIGN_QUEUE = 5; +%constant int SJC__BATCH_CHECKPOINT = 6; +%constant int SJC__BATCH_SERVICE = 7; +%constant int SJC__CLOSE_DELETE = 8; +%constant int SJC__CLOSE_JOB = 9; +%constant int SJC__CREATE_JOB = 10; +%constant int SJC__CREATE_QUEUE = 11; +%constant int SJC__DEASSIGN_QUEUE = 12; +%constant int SJC__DEFINE_CHARACTERISTIC = 13; +%constant int SJC__DEFINE_FORM = 14; +%constant int SJC__DELETE_CHARACTERISTIC = 15; +%constant int SJC__DELETE_FORM = 16; +%constant int SJC__DELETE_JOB = 17; +%constant int SJC__DELETE_QUEUE = 18; +%constant int SJC__ENTER_FILE = 19; +%constant int SJC__MERGE_QUEUE = 20; +%constant int SJC__PAUSE_QUEUE = 21; +%constant int SJC__RESET_QUEUE = 22; +%constant int SJC__START_ACCOUNTING = 23; +%constant int SJC__START_QUEUE = 24; +%constant int SJC__START_QUEUE_MANAGER = 25; +%constant int SJC__STOP_ACCOUNTING = 26; +%constant int SJC__STOP_QUEUE = 27; +%constant int SJC__STOP_QUEUE_MANAGER = 28; +%constant int SJC__SYNCHRONIZE_JOB = 29; +%constant int SJC__WRITE_ACCOUNTING = 30; +%constant int SJC__CONTROL_DIAGNOSTICS = 31; +%constant int SJC__DELETE_QUEUE_MANAGER = 32; +%constant int SJC__ALTER_FILE = 33; +%constant int SJC__STOP_ALL_QUEUES_ON_NODE = 34; +%constant int SJC__DISABLE_QUEUE = 35; +%constant int SJC__ENABLE_QUEUE = 36; +%constant int SJC__SYMBIONT_SERVICE = 37; +%constant int SJC__JOBCTL_SERVICE = 38; +%constant int SJC__ENABLE_AUTOSTART = 39; +%constant int SJC__DISABLE_AUTOSTART = 40; +%constant int SJC__SHUTDOWN_NODE = 41; +%constant int SJC__RESERVED_FUNC_42 = 42; +%constant int SJC__RESERVED_FUNC_43 = 43; +%constant int SJC__RESERVED_FUNC_44 = 44; +%constant int SJC__RESERVED_FUNC_45 = 45; +%constant int SJC__RESERVED_FUNC_46 = 46; +%constant int SJC__RESERVED_FUNC_47 = 47; +%constant int SJC__RESERVED_FUNC_48 = 48; +%constant int SJC__RESERVED_FUNC_49 = 49; +%constant int SJC__RESERVED_FUNC_50 = 50; +%constant int SJC_K_MIN_FUNC = 1; +%constant int SJC_K_MAX_FUNC = 50; +%constant int SJC__ACCOUNTING_MESSAGE = 1; +%constant int SJC__ACCOUNTING_TYPES = 2; +%constant int SJC__AFTER_TIME = 3; +%constant int SJC__NO_AFTER_TIME = 4; +%constant int SJC__ALIGNMENT_MASK = 5; +%constant int SJC__ALIGNMENT_PAGES = 6; +%constant int SJC__BASE_PRIORITY = 7; +%constant int SJC__BATCH = 8; +%constant int SJC__NO_BATCH = 9; +%constant int SJC__BATCH_INPUT = 10; +%constant int SJC__BATCH_OUTPUT = 11; +%constant int SJC__CHARACTERISTIC_NAME = 12; +%constant int SJC__CHARACTERISTIC_NUMBER = 13; +%constant int SJC__NO_CHARACTERISTICS = 14; +%constant int SJC__CHECKPOINT_DATA = 15; +%constant int SJC__NO_CHECKPOINT_DATA = 16; +%constant int SJC__CLI = 17; +%constant int SJC__NO_CLI = 18; +%constant int SJC__CPU_DEFAULT = 19; +%constant int SJC__NO_CPU_DEFAULT = 20; +%constant int SJC__CPU_LIMIT = 21; +%constant int SJC__NO_CPU_LIMIT = 22; +%constant int SJC__CREATE_START = 23; +%constant int SJC__DELETE_FILE = 24; +%constant int SJC__NO_DELETE_FILE = 25; +%constant int SJC__DESTINATION_QUEUE = 26; +%constant int SJC__DEVICE_NAME = 27; +%constant int SJC__DOUBLE_SPACE = 28; +%constant int SJC__NO_DOUBLE_SPACE = 29; +%constant int SJC__ENTRY_NUMBER = 30; +%constant int SJC__ENTRY_NUMBER_OUTPUT = 31; +%constant int SJC__FILE_BURST = 32; +%constant int SJC__FILE_BURST_ONE = 33; +%constant int SJC__NO_FILE_BURST = 34; +%constant int SJC__FILE_COPIES = 35; +%constant int SJC__FILE_FLAG = 36; +%constant int SJC__FILE_FLAG_ONE = 37; +%constant int SJC__NO_FILE_FLAG = 38; +%constant int SJC__FILE_IDENTIFICATION = 39; +%constant int SJC__FILE_SETUP_MODULES = 40; +%constant int SJC__NO_FILE_SETUP_MODULES = 41; +%constant int SJC__FILE_SPECIFICATION = 42; +%constant int SJC__FILE_TRAILER = 43; +%constant int SJC__FILE_TRAILER_ONE = 44; +%constant int SJC__NO_FILE_TRAILER = 45; +%constant int SJC__FIRST_PAGE = 46; +%constant int SJC__NO_FIRST_PAGE = 47; +%constant int SJC__FORM_DESCRIPTION = 48; +%constant int SJC__FORM_LENGTH = 49; +%constant int SJC__FORM_MARGIN_BOTTOM = 50; +%constant int SJC__FORM_MARGIN_LEFT = 51; +%constant int SJC__FORM_MARGIN_RIGHT = 52; +%constant int SJC__FORM_MARGIN_TOP = 53; +%constant int SJC__FORM_NAME = 54; +%constant int SJC__FORM_NUMBER = 55; +%constant int SJC__FORM_SETUP_MODULES = 56; +%constant int SJC__NO_FORM_SETUP_MODULES = 57; +%constant int SJC__FORM_SHEET_FEED = 58; +%constant int SJC__NO_FORM_SHEET_FEED = 59; +%constant int SJC__FORM_STOCK = 60; +%constant int SJC__FORM_TRUNCATE = 61; +%constant int SJC__NO_FORM_TRUNCATE = 62; +%constant int SJC__FORM_WIDTH = 63; +%constant int SJC__FORM_WRAP = 64; +%constant int SJC__NO_FORM_WRAP = 65; +%constant int SJC__GENERIC_QUEUE = 66; +%constant int SJC__NO_GENERIC_QUEUE = 67; +%constant int SJC__GENERIC_SELECTION = 68; +%constant int SJC__NO_GENERIC_SELECTION = 69; +%constant int SJC__GENERIC_TARGET = 70; +%constant int SJC__HOLD = 71; +%constant int SJC__NO_HOLD = 72; +%constant int SJC__JOB_BURST = 73; +%constant int SJC__NO_JOB_BURST = 74; +%constant int SJC__JOB_COPIES = 75; +%constant int SJC__JOB_FLAG = 76; +%constant int SJC__NO_JOB_FLAG = 77; +%constant int SJC__JOB_LIMIT = 78; +%constant int SJC__JOB_NAME = 79; +%constant int SJC__JOB_RESET_MODULES = 80; +%constant int SJC__NO_JOB_RESET_MODULES = 81; +%constant int SJC__JOB_SIZE_MAXIMUM = 82; +%constant int SJC__NO_JOB_SIZE_MAXIMUM = 83; +%constant int SJC__JOB_SIZE_MINIMUM = 84; +%constant int SJC__NO_JOB_SIZE_MINIMUM = 85; +%constant int SJC__JOB_SIZE_SCHEDULING = 86; +%constant int SJC__NO_JOB_SIZE_SCHEDULING = 87; +%constant int SJC__JOB_STATUS_OUTPUT = 88; +%constant int SJC__JOB_TRAILER = 89; +%constant int SJC__NO_JOB_TRAILER = 90; +%constant int SJC__LAST_PAGE = 91; +%constant int SJC__NO_LAST_PAGE = 92; +%constant int SJC__LIBRARY_SPECIFICATION = 93; +%constant int SJC__NO_LIBRARY_SPECIFICATION = 94; +%constant int SJC__LOG_DELETE = 95; +%constant int SJC__NO_LOG_DELETE = 96; +%constant int SJC__LOG_QUEUE = 97; +%constant int SJC__LOG_SPECIFICATION = 98; +%constant int SJC__NO_LOG_SPECIFICATION = 99; +%constant int SJC__LOG_SPOOL = 100; +%constant int SJC__NO_LOG_SPOOL = 101; +%constant int SJC__LOWERCASE = 102; +%constant int SJC__NO_LOWERCASE = 103; +%constant int SJC__NEW_VERSION = 104; +%constant int SJC__NEXT_JOB = 105; +%constant int SJC__NOTE = 106; +%constant int SJC__NO_NOTE = 107; +%constant int SJC__NOTIFY = 108; +%constant int SJC__NO_NOTIFY = 109; +%constant int SJC__OPERATOR_REQUEST = 110; +%constant int SJC__NO_OPERATOR_REQUEST = 111; +%constant int SJC__OWNER_UIC = 112; +%constant int SJC__PAGE_HEADER = 113; +%constant int SJC__NO_PAGE_HEADER = 114; +%constant int SJC__PAGE_SETUP_MODULES = 115; +%constant int SJC__NO_PAGE_SETUP_MODULES = 116; +%constant int SJC__PAGINATE = 117; +%constant int SJC__NO_PAGINATE = 118; +%constant int SJC__PARAMETER_1 = 119; +%constant int SJC__PARAMETER_2 = 120; +%constant int SJC__PARAMETER_3 = 121; +%constant int SJC__PARAMETER_4 = 122; +%constant int SJC__PARAMETER_5 = 123; +%constant int SJC__PARAMETER_6 = 124; +%constant int SJC__PARAMETER_7 = 125; +%constant int SJC__PARAMETER_8 = 126; +%constant int SJC__NO_PARAMETERS = 127; +%constant int SJC__PASSALL = 128; +%constant int SJC__NO_PASSALL = 129; +%constant int SJC__PRIORITY = 130; +%constant int SJC__PROCESSOR = 131; +%constant int SJC__NO_PROCESSOR = 132; +%constant int SJC__PROTECTION = 133; +%constant int SJC__QUEUE = 134; +%constant int SJC__QUEUE_FILE_SPECIFICATION = 135; +%constant int SJC__RELATIVE_PAGE = 136; +%constant int SJC__REQUEUE = 137; +%constant int SJC__RESTART = 138; +%constant int SJC__NO_RESTART = 139; +%constant int SJC__RETAIN_ALL_JOBS = 140; +%constant int SJC__RETAIN_ERROR_JOBS = 141; +%constant int SJC__NO_RETAIN_JOBS = 142; +%constant int SJC__SCSNODE_NAME = 143; +%constant int SJC__SEARCH_STRING = 144; +%constant int SJC__SWAP = 145; +%constant int SJC__NO_SWAP = 146; +%constant int SJC__TERMINAL = 147; +%constant int SJC__NO_TERMINAL = 148; +%constant int SJC__TOP_OF_FILE = 149; +%constant int SJC__USER_IDENTIFICATION = 150; +%constant int SJC__WSDEFAULT = 151; +%constant int SJC__NO_WSDEFAULT = 152; +%constant int SJC__WSEXTENT = 153; +%constant int SJC__NO_WSEXTENT = 154; +%constant int SJC__WSQUOTA = 155; +%constant int SJC__NO_WSQUOTA = 156; +%constant int SJC__ACCOUNT_NAME = 157; +%constant int SJC__UIC = 158; +%constant int SJC__USERNAME = 159; +%constant int SJC__BUFFER_COUNT = 160; +%constant int SJC__EXTEND_QUANTITY = 161; +%constant int SJC__RECORD_BLOCKING = 162; +%constant int SJC__NO_RECORD_BLOCKING = 163; +%constant int SJC__QUEMAN_RESTART = 164; +%constant int SJC__NO_QUEMAN_RESTART = 165; +%constant int SJC__DEFAULT_FORM_NAME = 166; +%constant int SJC__DEFAULT_FORM_NUMBER = 167; +%constant int SJC__SECURITY_CLASSIFICATION = 168; +%constant int SJC__QUEUE_SUPPORT = 169; +%constant int SJC__JOB_COMPLETION_STATUS = 170; +%constant int SJC__DIAGNOSTIC_BUFFER_OUTPUT = 171; +%constant int SJC__OPEN_QUEUE = 172; +%constant int SJC__CLOSE_QUEUE = 173; +%constant int SJC__SERVER = 174; +%constant int SJC__PRINTER = 175; +%constant int SJC__UPDATE_ORB = 176; +%constant int SJC__NO_QUEUE_DESCRIPTION = 177; +%constant int SJC__JOB_RETAIN = 178; +%constant int SJC__JOB_ERROR_RETAIN = 179; +%constant int SJC__JOB_DEFAULT_RETAIN = 180; +%constant int SJC__NOTIFY_ON_INTERRUPT = 181; +%constant int SJC__NO_RAD = 182; +%constant int SJC__ACCEPT_ALL_ATTRIBUTES = 183; +%constant int SJC__DIAGNOSTIC_FLAGS = 184; +%constant int SJC__QUEUE_DESCRIPTION = 185; +%constant int SJC__CHECKPOINT_FREQUENCY = 186; +%constant int SJC__DISPLAY_USERNAME = 187; +%constant int SJC__FILE_NUMBER = 188; +%constant int SJC__FILE_ATTRIBUTE = 189; +%constant int SJC__JOB_ATTRIBUTE = 190; +%constant int SJC__QUEUE_ATTRIBUTE = 191; +%constant int SJC__REMOVE_ATTRIBUTE = 192; +%constant int SJC__QUEUE_MANAGER_NAME = 193; +%constant int SJC__QUEUE_MANAGER_NODES = 194; +%constant int SJC__AUTOSTART_ON = 195; +%constant int SJC__RESERVED_OUTPUT_196 = 196; +%constant int SJC__RESERVED_OUTPUT_197 = 197; +%constant int SJC__RESERVED_OUTPUT_198 = 198; +%constant int SJC__RESERVED_OUTPUT_199 = 199; +%constant int SJC__SET_CONDITION_VECTOR = 200; +%constant int SJC__NOTIFY_MESSAGE = 201; +%constant int SJC__DEFINE_FILE_ATTRIBUTES = 202; +%constant int SJC__DEFINE_JOB_ATTRIBUTES = 203; +%constant int SJC__DEFINE_QUEUE_ATTRIBUTES = 204; +%constant int SJC__AGENT_PROFILE = 205; +%constant int SJC__ADD_QUEUE_MANAGER = 206; +%constant int SJC__OUTSTANDING_JOBS = 207; +%constant int SJC__NO_INITIAL_FF = 208; +%constant int SJC__NO_NO_INITIAL_FF = 209; +%constant int SJC__DELETE_FILE_ALWAYS = 210; +%constant int SJC__NO_DELETE_FILE_ALWAYS = 211; +%constant int SJC__RESERVED_BOOLEAN_212 = 212; +%constant int SJC__RESERVED_BOOLEAN_213 = 213; +%constant int SJC__RESERVED_BOOLEAN_214 = 214; +%constant int SJC__RESERVED_BOOLEAN_215 = 215; +%constant int SJC__RESERVED_BOOLEAN_216 = 216; +%constant int SJC__RESERVED_BOOLEAN_217 = 217; +%constant int SJC__RESERVED_BOOLEAN_218 = 218; +%constant int SJC__RESERVED_BOOLEAN_219 = 219; +%constant int SJC__RESERVED_BOOLEAN_220 = 220; +%constant int SJC__RESERVED_BOOLEAN_221 = 221; +%constant int SJC__RESERVED_BOOLEAN_222 = 222; +%constant int SJC__RESERVED_BOOLEAN_223 = 223; +%constant int SJC__RESERVED_BOOLEAN_224 = 224; +%constant int SJC__RESERVED_BOOLEAN_225 = 225; +%constant int SJC__RESERVED_BOOLEAN_226 = 226; +%constant int SJC__RESERVED_BOOLEAN_227 = 227; +%constant int SJC__RESERVED_BOOLEAN_228 = 228; +%constant int SJC__RESERVED_BOOLEAN_229 = 229; +%constant int SJC__RESERVED_BOOLEAN_230 = 230; +%constant int SJC__RESERVED_BOOLEAN_231 = 231; +%constant int SJC__RESERVED_BOOLEAN_232 = 232; +%constant int SJC__RESERVED_BOOLEAN_233 = 233; +%constant int SJC__RESERVED_BOOLEAN_234 = 234; +%constant int SJC__JOB_RETAIN_TIME = 235; +%constant int SJC__MANAGER_ATTRIBUTE = 236; +%constant int SJC__RAD = 237; +%constant int SJC__RESERVED_INPUT_238 = 238; +%constant int SJC__RESERVED_INPUT_239 = 239; +%constant int SJC__RESERVED_INPUT_240 = 240; +%constant int SJC__RESERVED_INPUT_241 = 241; +%constant int SJC__RESERVED_INPUT_242 = 242; +%constant int SJC__RESERVED_INPUT_243 = 243; +%constant int SJC__RESERVED_INPUT_244 = 244; +%constant int SJC__RESERVED_INPUT_245 = 245; +%constant int SJC__RESERVED_INPUT_246 = 246; +%constant int SJC__RESERVED_INPUT_247 = 247; +%constant int SJC__RESERVED_INPUT_248 = 248; +%constant int SJC__RESERVED_INPUT_249 = 249; +%constant int SJC__RESERVED_INPUT_250 = 250; +%constant int SJC__RESERVED_OUTPUT_251 = 251; +%constant int SJC__RESERVED_OUTPUT_252 = 252; +%constant int SJC__RESERVED_OUTPUT_253 = 253; +%constant int SJC__RESERVED_OUTPUT_254 = 254; +%constant int SJC__RESERVED_OUTPUT_255 = 255; +%constant int SJC_K_MIN_ITEM = 1; +%constant int SJC_K_MAX_ITEM = 255; +%constant int SJC__CHARGE_CODE = 157; +%constant int SJC__RESERVED_INPUT_187 = 187; +%constant int SJC__QUEUE_DIRECTORY = 135; +%constant int SJC__SERVICE_INPUT = 10; +%constant int SJC__SERVICE_OUTPUT = 11; +%constant int SJC_M_ACCT_PROCESS = 0x1L; +%constant int SJC_M_ACCT_IMAGE = 0x2L; +%constant int SJC_M_ACCT_INTERACTIVE = 0x4L; +%constant int SJC_M_ACCT_LOGIN_FAILURE = 0x8L; +%constant int SJC_M_ACCT_SUBPROCESS = 0x10L; +%constant int SJC_M_ACCT_DETACHED = 0x20L; +%constant int SJC_M_ACCT_BATCH = 0x40L; +%constant int SJC_M_ACCT_NETWORK = 0x80L; +%constant int SJC_M_ACCT_PRINT = 0x100L; +%constant int SJC_M_ACCT_MESSAGE = 0x200L; +%constant int SJC_M_ACCT_ACM_FUNC = 0x400L; +%constant int SJC_M_ACCT_ACM_SYS = 0x800L; +%constant int SJC_M_ACCT_CCAENAB = 0x1000L; +%constant int SJC_M_ACCT_CCVENAB = 0x2000L; +%constant int SJC_S_ACCOUNTING_TYPES = 4; +%constant int SJC_S_ACCT_UNUSED = 18; +%constant int SJC_M_DIAG_COPY_QF = 0x1L; +%constant int SJC_M_DIAG_CREATE_MF = 0x2L; +%constant int SJC_M_DIAG_CLOSE_MF = 0x4L; +%constant int SJC_M_DIAG_OPEN_MF = 0x8L; +%constant int SJC_M_DIAG_CLEAR_FLAGS = 0x10L; +%constant int SJC_M_DIAG_LOG_ALL_TRANS = 0x20L; +%constant int SJC_M_DIAG_JOURNAL_PUTS = 0x40L; +%constant int SJC_M_DIAG_DUMP_DIAG_BUFFER = 0x80L; +%constant int SJC_M_DIAG_INIT_DIAG_BUFFER = 0x100L; +%constant int SJC_S_DIAGNOSTIC_FLAGS = 4; +%constant int SJC_S_DIAG_UNUSED = 23; diff --git a/Modules/vms/ssdef/ssdef.i b/Modules/vms/ssdef/ssdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvc3NkZWYvc3NkZWYuaQ== --- /dev/null +++ b/Modules/vms/ssdef/ssdef.i @@ -0,0 +1,919 @@ +%module ssdef + +%constant int SYSTEM__FACILITY = 0; +%constant int SS__NORMAL = 1; +%constant int SS__CONTINUE = 1; +%constant int SS__WASCLR = 1; +%constant int SS__WASSET = 9; +%constant int SS__REMEMBER = 1; +%constant int SS__ACCVIO = 12; +%constant int SS__BADPARAM = 20; +%constant int SS__EXQUOTA = 28; +%constant int SS__NOPRIV = 36; +%constant int SS__ABORT = 44; +%constant int SS__BADATTRIB = 52; +%constant int SS__BADESCAPE = 60; +%constant int SS__BADIMGHDR = 68; +%constant int SS__CHANINTLK = 76; +%constant int SS__CTRLERR = 84; +%constant int SS__DATACHECK = 92; +%constant int SS__DEVFOREIGN = 100; +%constant int SS__DEVMOUNT = 108; +%constant int SS__DEVNOTMBX = 116; +%constant int SS__DEVNOTMOUNT = 124; +%constant int SS__DEVOFFLINE = 132; +%constant int SS__DRVERR = 140; +%constant int SS__DUPLNAM = 148; +%constant int SS__FILACCERR = 156; +%constant int SS__FILALRACC = 164; +%constant int SS__FILNOTACC = 172; +%constant int SS__FILNOTEXP = 180; +%constant int SS__FORMAT = 188; +%constant int SS__GPTFULL = 196; +%constant int SS__GSDFULL = 204; +%constant int SS__LCKPAGFUL = 212; +%constant int SS__ILLBLKNUM = 220; +%constant int SS__ILLCNTRFUNC = 228; +%constant int SS__ILLEFC = 236; +%constant int SS__ILLIOFUNC = 244; +%constant int SS__ILLPAGCNT = 252; +%constant int SS__ILLSER = 260; +%constant int SS__INCVOLLABEL = 268; +%constant int SS__INSFARG = 276; +%constant int SS__INSFWSL = 284; +%constant int SS__INSFMEM = 292; +%constant int SS__INSFRAME = 300; +%constant int SS__IVADDR = 308; +%constant int SS__IVCHAN = 316; +%constant int SS__IVDEVNAM = 324; +%constant int SS__IVGSDNAM = 332; +%constant int SS__IVLOGNAM = 340; +%constant int SS__IVLOGTAB = 348; +%constant int SS__IVQUOTAL = 356; +%constant int SS__IVSECFLG = 364; +%constant int SS__IVSSRQ = 372; +%constant int SS__IVSTSFLG = 380; +%constant int SS__IVTIME = 388; +%constant int SS__LENVIO = 396; +%constant int SS__LKWSETFUL = 404; +%constant int SS__MBTOOSML = 412; +%constant int SS__MEDOFL = 420; +%constant int SS__NODATA = 428; +%constant int SS__NOIOCHAN = 436; +%constant int SS__NOLOGNAM = 444; +%constant int SS__NONEXDRV = 452; +%constant int SS__NOTFILEDEV = 460; +%constant int SS__NOTINTBLSZ = 468; +%constant int SS__NOTLABELMT = 476; +%constant int SS__NOTSQDEV = 484; +%constant int SS__PAGOWNVIO = 492; +%constant int SS__PARITY = 500; +%constant int SS__PARTESCAPE = 508; +%constant int SS__PFMBSY = 516; +%constant int SS__PSTFULL = 524; +%constant int SS__RESULTOVF = 532; +%constant int SS__SECTBLFUL = 540; +%constant int SS__TAPEPOSLOST = 548; +%constant int SS__TIMEOUT = 556; +%constant int SS__UNASEFC = 564; +%constant int SS__UNSAFE = 572; +%constant int SS__VASFULL = 580; +%constant int SS__VECINUSE = 588; +%constant int SS__VOLINV = 596; +%constant int SS__WRITLCK = 604; +%constant int SS__NOTAPEOP = 612; +%constant int SS__IVCHNLSEC = 620; +%constant int SS__NOMBX = 628; +%constant int SS__NOLINKS = 636; +%constant int SS__NOSOLICIT = 644; +%constant int SS__NOSUCHNODE = 652; +%constant int SS__REJECT = 660; +%constant int SS__TOOMUCHDATA = 668; +%constant int SS__BUGCHECK = 676; +%constant int SS__FILNOTCNTG = 684; +%constant int SS__BADSTACK = 692; +%constant int SS__MCHECK = 700; +%constant int SS__DEVACTIVE = 708; +%constant int SS__HANGUP = 716; +%constant int SS__OPINCOMPL = 724; +%constant int SS__ILLSEQOP = 732; +%constant int SS__IVSECIDCTL = 740; +%constant int SS__NOTNETDEV = 748; +%constant int SS__IVPROTECT = 756; +%constant int SS__ACPVAFUL = 764; +%constant int SS__MTLBLLONG = 772; +%constant int SS__BUFBYTALI = 780; +%constant int SS__NOAQB = 788; +%constant int SS__WRONGACP = 796; +%constant int SS__BUFNOTALIGN = 804; +%constant int SS__DEVCMDERR = 812; +%constant int SS__DEVREQERR = 820; +%constant int SS__INSFBUFDP = 828; +%constant int SS__INSFMAPREG = 836; +%constant int SS__IVBUFLEN = 844; +%constant int SS__IVMODE = 852; +%constant int SS__MCNOTVALID = 860; +%constant int SS__POWERFAIL = 868; +%constant int SS__SHMGSNOTMAP = 876; +%constant int SS__TOOMANYLNAM = 884; +%constant int SS__SHMNOTCNCT = 892; +%constant int SS__NOTCREATOR = 900; +%constant int SS__INTERLOCK = 908; +%constant int SS__BADQUEUEHDR = 916; +%constant int SS__NOSLOT = 924; +%constant int SS__SUSPENDED = 932; +%constant int SS__EXPORTQUOTA = 940; +%constant int SS__NOSHMBLOCK = 948; +%constant int SS__BADQFILE = 956; +%constant int SS__NOQFILE = 964; +%constant int SS__QFACTIVE = 972; +%constant int SS__QFNOTACT = 980; +%constant int SS__DUPDSKQUOTA = 988; +%constant int SS__NODISKQUOTA = 996; +%constant int SS__EXDISKQUOTA = 1004; +%constant int SS__IDMISMATCH = 1012; +%constant int SS__NOWRT = 1020; +%constant int SS__BADISD = 8196; +%constant int SS__RELINK = 8204; +%constant int SS__NOTINSTALL = 8212; +%constant int SS__SHARTOOBIG = 8220; +%constant int SS__NOP1VA = 8228; +%constant int SS__MULTRMS = 8236; +%constant int SS__VECFULL = 8244; +%constant int SS__IVLVEC = 8252; +%constant int SS__INSFSPTS = 8260; +%constant int SS__DISCONNECT = 8268; +%constant int SS__PRIVINSTALL = 8276; +%constant int SS__PROTINSTALL = 8284; +%constant int SS__BADVEC = 8292; +%constant int SS__REMRSRC = 8300; +%constant int SS__PROTOCOL = 8308; +%constant int SS__THIRDPARTY = 8316; +%constant int SS__NOSUCHUSER = 8324; +%constant int SS__SHUT = 8332; +%constant int SS__UNREACHABLE = 8340; +%constant int SS__INVLOGIN = 8348; +%constant int SS__NOSUCHOBJ = 8356; +%constant int SS__EXCPUTIM = 8364; +%constant int SS__OPRABORT = 8372; +%constant int SS__SHRIDMISMAT = 8380; +%constant int SS__COMMHARD = 8388; +%constant int SS__IVCHAR = 8396; +%constant int SS__DEVINACT = 8404; +%constant int SS__CONNECFAIL = 8412; +%constant int SS__LINKABORT = 8420; +%constant int SS__LINKDISCON = 8428; +%constant int SS__LINKEXIT = 8436; +%constant int SS__PATHLOST = 8444; +%constant int SS__CLEARED = 8452; +%constant int SS__RESET = 8460; +%constant int SS__UNSOLICIT = 8468; +%constant int SS__TOOMANYREDS = 8476; +%constant int SS__IVLOCKID = 8484; +%constant int SS__SUBLOCKS = 8492; +%constant int SS__PARNOTGRANT = 8500; +%constant int SS__CVTUNGRANT = 8508; +%constant int SS__FORCEDERROR = 8516; +%constant int SS__ILLSELF = 8524; +%constant int SS__ILLCDTST = 8532; +%constant int SS__NOLISTENER = 8540; +%constant int SS__EXGBLPAGFIL = 8548; +%constant int SS__BADRCT = 8556; +%constant int SS__DIRNOTEMPTY = 8564; +%constant int SS__FORCEDEXIT = 8572; +%constant int SS__NOTPRINTED = 8580; +%constant int SS__JBCERROR = 8588; +%constant int SS__NOLICENSE = 8596; +%constant int SS__VCBROKEN = 8604; +%constant int SS__VCCLOSED = 8612; +%constant int SS__INSFCDT = 8620; +%constant int SS__DEVNOTDISM = 8628; +%constant int SS__NOSHRIMG = 8636; +%constant int SS__DUPUNIT = 8644; +%constant int SS__BADACLCTX = 8652; +%constant int SS__SERIOUSEXCP = 8660; +%constant int SS__TEMPLATEDEV = 8668; +%constant int SS__IVACL = 8676; +%constant int SS__NOSUCHID = 8684; +%constant int SS__NOLCLMEDA = 8692; +%constant int SS__NOREGAVIL = 8700; +%constant int SS__NOREGSUIT = 8708; +%constant int SS__NOSUCHPGM = 8716; +%constant int SS__PGMLDFAIL = 8724; +%constant int SS__PGMSTDALN = 8732; +%constant int SS__IVIDENT = 8740; +%constant int SS__DUPIDENT = 8748; +%constant int SS__INCSEGTRA = 8756; +%constant int SS__NODELEAVE = 8764; +%constant int SS__KERNELINV = 8772; +%constant int SS__EXLNMQUOTA = 8780; +%constant int SS__PARENT_DEL = 8788; +%constant int SS__PARNOTSYS = 8796; +%constant int SS__INSSWAPSPACE = 8804; +%constant int SS__VOLOERR = 8812; +%constant int SS__DATALATE = 8820; +%constant int SS__OVRMAXARG = 8828; +%constant int SS__SHACHASTA = 8836; +%constant int SS__TERMNETDEV = 8844; +%constant int SS__NOLOGTAB = 8852; +%constant int SS__WRONGNAME = 8860; +%constant int SS__NOVOLACC = 8868; +%constant int SS__NOFILACC = 8876; +%constant int SS__INVEXHLIST = 8884; +%constant int SS__NOACLSUPPORT = 8892; +%constant int SS__INVSECLASS = 8900; +%constant int SS__INCSHAMEM = 8908; +%constant int SS__DEVNOTSHR = 8916; +%constant int SS__RUCONFLICT = 8924; +%constant int SS__DATALOST = 8932; +%constant int SS__REMOTE_PROC = 8940; +%constant int SS__CPUNOTACT = 8948; +%constant int SS__SRVMMAT = 8956; +%constant int SS__EXLICENSE = 8964; +%constant int SS__INVLICENSE = 8972; +%constant int SS__LICENSE_LEVEL = 8980; +%constant int SS__INV_HW_ID = 8988; +%constant int SS__BADCONTEXT = 8996; +%constant int SS__TOOMUCHCTX = 9004; +%constant int SS__VA_IN_USE = 9012; +%constant int SS__NODELETE = 9020; +%constant int SS__NOSUCHCPU = 9028; +%constant int SS__IMGVEXC = 9036; +%constant int SS__NOSAVPEXC = 9044; +%constant int SS__NOSUCHTID = 9052; +%constant int SS__NOSUCHRM = 9060; +%constant int SS__NOCURTID = 9068; +%constant int SS__WRONGSTATE = 9076; +%constant int SS__VETO = 9084; +%constant int SS__PWDSYNTAX = 9092; +%constant int SS__PWDNOTDIF = 9100; +%constant int SS__INVPWDLEN = 9108; +%constant int SS__SYSVERDIF = 9116; +%constant int SS__HWM_STALL = 9124; +%constant int SS__NOSUSPEND = 9132; +%constant int SS__NOSUCHPART = 9140; +%constant int SS__RMALRDCL = 9148; +%constant int SS__ALRCURTID = 9156; +%constant int SS__INVLOG = 9164; +%constant int SS__BADLOGVER = 9172; +%constant int SS__OPINPROG = 9180; +%constant int SS__WRONGACMODE = 9188; +%constant int SS__SUBTRACED = 9196; +%constant int SS__ARCHIVING = 9204; +%constant int SS__ARCHIVED = 9212; +%constant int SS__SITEPWDFAIL = 9220; +%constant int SS__NOSUCHCPB = 9228; +%constant int SS__CPUCAP = 9236; +%constant int SS__LOADER = 9244; +%constant int SS__HSTBUFACC = 9252; +%constant int SS__INCONOLCK = 9260; +%constant int SS__INVEVENT = 9268; +%constant int SS__NOSUCHFAC = 9276; +%constant int SS__NOCALLPRIV = 9284; +%constant int SS__INSFLPGS = 9292; +%constant int SS__INSFRPGS = 9300; +%constant int SS__BADREASON = 9308; +%constant int SS__NOSUCHBID = 9316; +%constant int SS__NOTORIGIN = 9324; +%constant int SS__NOLOG = 9332; +%constant int SS__TPDISABLED = 9340; +%constant int SS__BRANCHENDED = 9348; +%constant int SS__BRANCHSTARTED = 9356; +%constant int SS__NOSUCHREPORT = 9364; +%constant int SS__BADTIME = 9372; +%constant int SS__PARTJOINED = 9380; +%constant int SS__NOPRESUME = 9388; +%constant int SS__RECOVERCANCEL = 9396; +%constant int SS__CURTIDCHANGE = 9404; +%constant int SS__NOREADER = 9412; +%constant int SS__NOWRITER = 9420; +%constant int SS__DEVNOTWS = 9428; +%constant int SS__NOCLASS = 9436; +%constant int SS__CONTEXTSKEW = 9444; +%constant int SS__BADFORGEDB = 9452; +%constant int SS__NODOMAIN = 9460; +%constant int SS__OVRMAXAUD = 9468; +%constant int SS__BADCHAIN = 9476; +%constant int SS__BADBUFLEN = 9484; +%constant int SS__BADITMCOD = 9492; +%constant int SS__BADBUFADR = 9500; +%constant int SS__BADRETLEN = 9508; +%constant int SS__SSINOTHELD = 9516; +%constant int SS__SSAMISSING = 9524; +%constant int SS__SSANOTAUTH = 9532; +%constant int SS__BADOWNER = 9540; +%constant int SS__NAMESERVCOMMERR = 9548; +%constant int SS__IVNODNAM = 9556; +%constant int SS__CONFIG_SYNTAX = 9564; +%constant int SS__SHELVED = 9572; +%constant int SS__DRVNOTVALID = 9580; +%constant int SS__SLICING_DISABLED = 9588; +%constant int SS__NOCALLTRANS = 9596; +%constant int SS__TRANSCALLER = 9604; +%constant int SS__ILLPRIPOL = 9612; +%constant int SS__ILLPOLICY = 9620; +%constant int SS__INSFRSPID = 9628; +%constant int SS__INSFCREDITL = 9636; +%constant int SS__INSFCREDITH = 9644; +%constant int SS__INSFMAP = 9652; +%constant int SS__SIG_INVARGTYPE = 9660; +%constant int SS__SIG_INVFLTARG = 9668; +%constant int SS__SIG_INVARGLIST = 9676; +%constant int SS__SIG_INVFUNCTYPE = 9684; +%constant int SS__SIG_ARGMISMATCH = 9692; +%constant int SS__NOTRANQUIL = 9700; +%constant int SS__NOCALLTRANS_SUP = 9708; +%constant int SS__DEVLISTFULL = 9716; +%constant int SS__INSFP1POOL = 9724; +%constant int SS__SIGNAL64 = 9732; +%constant int SS__ZEROALLOCLS = 9740; +%constant int SS__QUEUE_FULL = 9748; +%constant int SS__DEVICE_RESET = 9756; +%constant int SS__ACA_ACTIVE = 9764; +%constant int SS__BUS_PHASE_ERROR = 9772; +%constant int SS__NOMULTITHREAD = 9780; +%constant int SS__MTHREADACTIVE = 9788; +%constant int SS__MAXKTHREADS = 9796; +%constant int SS__NOSUCHTHREAD = 9804; +%constant int SS__NOTHREADMAN = 9812; +%constant int SS__NOSUCHUPCALL = 9820; +%constant int SS__BADFANDLE = 9828; +%constant int SS__FANDLEBUSY = 9836; +%constant int SS__UNALIGNED = 9844; +%constant int SS__BADIOSADR = 9852; +%constant int SS__ILLBUFOBJ = 9860; +%constant int SS__ILLMODIFIER = 9868; +%constant int SS__NOCCBBUFFOBJ = 9876; +%constant int SS__NORDACC = 9884; +%constant int SS__NOWRTACC = 9892; +%constant int SS__NOTNOCNVRT = 9900; +%constant int SS__UNSUPVOLSET = 9908; +%constant int SS__ARG_GTR_32_BITS = 9916; +%constant int SS__NOT64DEVFUNC = 9924; +%constant int SS__CHANVIO = 9932; +%constant int SS__GBLSEC_MISMATCH = 9940; +%constant int SS__ILLRELPAG = 9948; +%constant int SS__IVACMODE = 9956; +%constant int SS__IVREGFLG = 9964; +%constant int SS__IVREGID = 9972; +%constant int SS__IVREGPROT = 9980; +%constant int SS__IVVAFLG = 9988; +%constant int SS__LEN_NOTBLKMULT = 9996; +%constant int SS__LEN_NOTPAGMULT = 10004; +%constant int SS__NOT_PROCESS_VA = 10012; +%constant int SS__OFF_NOTBLKALGN = 10020; +%constant int SS__OFF_NOTPAGALGN = 10028; +%constant int SS__OFFSET_TOO_BIG = 10036; +%constant int SS__REGOWNVIO = 10044; +%constant int SS__PROTVIO = 10052; +%constant int SS__TOO_MANY_ARGS = 10060; +%constant int SS__VA_NOTPAGALGN = 10068; +%constant int SS__NOEXTAUTH = 10076; +%constant int SS__AUTHFAIL = 10084; +%constant int SS__INVUSER = 10092; +%constant int SS__ERRMAPAUTH = 10100; +%constant int SS__NORAD50 = 10108; +%constant int SS__BADMEDIA = 10116; +%constant int SS__UNRECOVRDER = 10124; +%constant int SS__IVFORMAT = 10132; +%constant int SS__IVUNITFLAG = 10140; +%constant int SS__IVPARAM = 10148; +%constant int SS__NOSUCHENTRY = 10156; +%constant int SS__ALLOCFAILED = 10164; +%constant int SS__SHMEM_INCON = 10172; +%constant int SS__IVLOCKOP = 10180; +%constant int SS__IVLOCKTBL = 10188; +%constant int SS__LOCKINUSE = 10196; +%constant int SS__LOCK_TIMEOUT = 10204; +%constant int SS__BADLCKTBL = 10212; +%constant int SS__NOBREAK = 10220; +%constant int SS__IVPROTOCOL = 10228; +%constant int SS__NOWAIT = 10236; +%constant int SS__PLHLDR = 1028; +%constant int SS__ASTFLT = 1036; +%constant int SS__BREAK = 1044; +%constant int SS__CMODSUPR = 1052; +%constant int SS__CMODUSER = 1060; +%constant int SS__COMPAT = 1068; +%constant int SS__OPCCUS = 1076; +%constant int SS__OPCDEC = 1084; +%constant int SS__PAGRDERR = 1092; +%constant int SS__RADRMOD = 1100; +%constant int SS__ROPRAND = 1108; +%constant int SS__SSFAIL = 1116; +%constant int SS__TBIT = 1124; +%constant int SS__DEBUG = 1132; +%constant int SS__ARTRES = 1140; +%constant int SS__INTOVF = 1148; +%constant int SS__INTDIV = 1156; +%constant int SS__FLTOVF = 1164; +%constant int SS__FLTDIV = 1172; +%constant int SS__FLTUND = 1180; +%constant int SS__DECOVF = 1188; +%constant int SS__SUBRNG = 1196; +%constant int SS__FLTOVF_F = 1204; +%constant int SS__FLTDIV_F = 1212; +%constant int SS__FLTUND_F = 1220; +%constant int SS__INHCHMK = 1228; +%constant int SS__INHCHME = 1236; +%constant int SS__VECDIS = 1244; +%constant int SS__VARITH = 1252; +%constant int SS__ILLVECOP = 1260; +%constant int SS__VECALIGN = 1268; +%constant int SS__IMGDMP = 1276; +%constant int SS__HPARITH = 1284; +%constant int SS__ALIGN = 1292; +%constant int SS__UNALIGN_SP_LOAD = 1300; +%constant int SS__GENTRAP = 1308; +%constant int SS__FLTINV = 1316; +%constant int SS__FLTINE = 1324; +%constant int SS__DECDIV = 1332; +%constant int SS__DECINV = 1340; +%constant int SS__ASSERTERR = 1348; +%constant int SS__NULPTRERR = 1356; +%constant int SS__STKOVF = 1364; +%constant int SS__STRLENERR = 1372; +%constant int SS__SUBSTRERR = 1380; +%constant int SS__RANGEERR = 1388; +%constant int SS__SUBRNG1 = 1396; +%constant int SS__SUBRNG2 = 1404; +%constant int SS__SUBRNG3 = 1412; +%constant int SS__SUBRNG4 = 1420; +%constant int SS__SUBRNG5 = 1428; +%constant int SS__SUBRNG6 = 1436; +%constant int SS__SUBRNG7 = 1444; +%constant int SS__PAGRDERRXM = 1452; +%constant int SS__ILLEGAL_SHADOW = 1460; +%constant int SS__FLTINV_F = 1468; +%constant int SS__FLTINE_F = 1476; +%constant int SS__INTOVF_F = 1484; +%constant int SS__NATFAULT = 1492; +%constant int SS__FLTDENORMAL = 1500; +%constant int SS__BREAK_SYS = 1508; +%constant int SS__BREAK_ARCH = 1516; +%constant int SS__BUFFEROVF = 1537; +%constant int SS__CONTROLO = 1545; +%constant int SS__CONTROLY = 1553; +%constant int SS__CREATED = 1561; +%constant int SS__MSGNOTFND = 1569; +%constant int SS__NOTRAN = 1577; +%constant int SS__SUPERSEDE = 1585; +%constant int SS__WASECC = 1593; +%constant int SS__DEVALRALLOC = 1601; +%constant int SS__REMOTE = 1609; +%constant int SS__CONTROLC = 1617; +%constant int SS__NOTMODIFIED = 1625; +%constant int SS__RDDELDATA = 1633; +%constant int SS__OVRDSKQUOTA = 1641; +%constant int SS__OBSOLETE_1 = 1649; +%constant int SS__FILEPURGED = 1657; +%constant int SS__NOTALLPRIV = 1665; +%constant int SS__SYNCH = 1673; +%constant int SS__CONCEALED = 1681; +%constant int SS__INCOMPAT = 1689; +%constant int SS__DBGOPCREQ = 1697; +%constant int SS__ALRDYCLOSED = 1705; +%constant int SS__LNMCREATED = 1713; +%constant int SS__ACEIDMATCH = 1721; +%constant int SS__DBGEVENT = 1729; +%constant int SS__REMOVED = 1737; +%constant int SS__QUEUED = 1745; +%constant int SS__SUBDISABLED = 1753; +%constant int SS__FORGET = 1761; +%constant int SS__PREPARED = 1769; +%constant int SS__NOMOREITEMS = 1777; +%constant int SS__VOLATILE = 1785; +%constant int SS__CLASSUPER = 1793; +%constant int SS__CONTINUE_64 = 1801; +%constant int SS__THREAD_UPCALL = 1809; +%constant int SS__CREATED_SHPT = 1817; +%constant int SS__PERSONADELPEND = 1825; +%constant int SS__DEVAVAIL = 1833; +%constant int SS__LONGGAP = 1841; +%constant int SS__BROKEN = 1849; +%constant int SS__QPOOL_DEL_INIT = 1857; +%constant int SS__UNUSED_1 = 1865; +%constant int SS__LOWPREC = 1873; +%constant int SS__ACCONFLICT = 2048; +%constant int SS__BADCHKSUM = 2056; +%constant int SS__BADFILEHDR = 2064; +%constant int SS__BADFILENAME = 2072; +%constant int SS__BADFILEVER = 2080; +%constant int SS__BADIRECTORY = 2088; +%constant int SS__CANCEL = 2096; +%constant int SS__DATAOVERUN = 2104; +%constant int SS__DEVALLOC = 2112; +%constant int SS__DEVASSIGN = 2120; +%constant int SS__DEVICEFULL = 2128; +%constant int SS__DEVNOTALLOC = 2136; +%constant int SS__DIRFULL = 2144; +%constant int SS__DUPFILENAME = 2152; +%constant int SS__ENDOFFILE = 2160; +%constant int SS__ENDOFTAPE = 2168; +%constant int SS__TMACTIVE = 2176; +%constant int SS__FCPREADERR = 2184; +%constant int SS__FCPREWNDERR = 2192; +%constant int SS__FCPSPACERR = 2200; +%constant int SS__FCPWRITERR = 2208; +%constant int SS__FILELOCKED = 2216; +%constant int SS__FILENUMCHK = 2224; +%constant int SS__FILESEQCHK = 2232; +%constant int SS__FILESTRUCT = 2240; +%constant int SS__HEADERFULL = 2248; +%constant int SS__IDXFILEFULL = 2256; +%constant int SS__MBFULL = 2264; +%constant int SS__NOHOMEBLK = 2272; +%constant int SS__NONEXPR = 2280; +%constant int SS__NONLOCAL = 2288; +%constant int SS__NOHANDLER = 2296; +%constant int SS__NOSIGNAL = 2304; +%constant int SS__NOSUCHDEV = 2312; +%constant int SS__NOSUCHFILE = 2320; +%constant int SS__RESIGNAL = 2328; +%constant int SS__UNWIND = 2336; +%constant int SS__UNWINDING = 2344; +%constant int SS__NOMOREFILES = 2352; +%constant int SS__BEGOFFILE = 2360; +%constant int SS__BLOCKCNTERR = 2368; +%constant int SS__MUSTCLOSEFL = 2376; +%constant int SS__WAITUSRLBL = 2384; +%constant int SS__ILLUSRLBLRD = 2392; +%constant int SS__ILLUSRLBLWT = 2400; +%constant int SS__ILLLBLAST = 2408; +%constant int SS__ENDOFUSRLBL = 2416; +%constant int SS__NOSUCHSEC = 2424; +%constant int SS__CLIFRCEXT = 2432; +%constant int SS__FCPREPSTN = 2440; +%constant int SS__TOOMANYVER = 2448; +%constant int SS__NOTVOLSET = 2456; +%constant int SS__ENDOFVOLUME = 2464; +%constant int SS__NOMOREPROC = 2472; +%constant int SS__NODEVAVL = 2480; +%constant int SS__NOTQUEUED = 2488; +%constant int SS__DGQINCOMP = 2496; +%constant int SS__DIRALLOC = 2504; +%constant int SS__ACLEMPTY = 2512; +%constant int SS__NOENTRY = 2520; +%constant int SS__NOMOREACE = 2528; +%constant int SS__RIGHTSFULL = 2536; +%constant int SS__VALNOTVALID = 2544; +%constant int SS__ACLFULL = 2552; +%constant int SS__NOMORENODE = 2560; +%constant int SS__NOMORELOCK = 2568; +%constant int SS__BEGOFTAPE = 2576; +%constant int SS__OBJLOCKHELD = 2584; +%constant int SS__CPUSTARTIP = 2592; +%constant int SS__ALLSTARTED = 2600; +%constant int SS__ALRDYSTRT = 2608; +%constant int SS__ALRDYSTPPD = 2616; +%constant int SS__NSTPPD = 2624; +%constant int SS__UNKRESULT = 2632; +%constant int SS__ITEMNOTFOUND = 2640; +%constant int SS__NOMOREDEV = 2648; +%constant int SS__EFNOTSET = 2656; +%constant int SS__PRIMNOSTP = 2664; +%constant int SS__BOOTREJECT = 2672; +%constant int SS__RMTPATH = 2680; +%constant int SS__OBJECT_EXISTS = 2688; +%constant int SS__NOSUCHOBJECT = 2696; +%constant int SS__NOVOLDESC = 2704; +%constant int SS__NOPTBLDIR = 2712; +%constant int SS__DRVEXISTS = 2720; +%constant int SS__DEVEXISTS = 2728; +%constant int SS__GOTO_UNWIND = 2736; +%constant int SS__EXIT_UNWIND = 2744; +%constant int SS__SMALLHEADER = 2752; +%constant int SS__FDT_COMPL = 2760; +%constant int SS__TARGET_UNWIND = 2768; +%constant int SS__TARGET_GOTO_UNWIND = 2776; +%constant int SS__RESIGNAL_64 = 2784; +%constant int SS__NOMOREREG = 2792; +%constant int SS__PAGNOTINREG = 2800; +%constant int SS__REGISFULL = 2808; +%constant int SS__PAGTYPVIO = 2816; +%constant int SS__NOSUCHPAG = 2824; +%constant int SS__PAGNOTWRITE = 2832; +%constant int SS__NOMORETHREAD = 2840; +%constant int SS__NOTF11ODS5 = 2848; +%constant int SS__NOCONVJNL = 2856; +%constant int SS__MPDEVBUSY = 2864; +%constant int SS__MPDEVUSERDISABLE = 2872; +%constant int SS__NOCPUMATCH = 2880; +%constant int SS__NOMORECLIENTS = 2888; +%constant int SS__NOMOREDEVICES = 2896; +%constant int SS__NOMOREFILTERS = 2904; +%constant int SS__NOMOREPATHS = 2912; +%constant int SS__NOMORESERVERS = 2920; +%constant int SS__FISH = 2928; +%constant int SS__FILENOTCACHED = 2936; +%constant int SS__INSF_SHM_REG = 2944; +%constant int SS__HBMMNOTENABLED = 2952; +%constant int SS__HBMMALREADYON = 2960; +%constant int SS__NODEVPOL = 2968; +%constant int SS__NONAMPOL = 2976; +%constant int SS__XVALNOTVALID = 2984; +%constant int SS__FILEFULL = 2992; +%constant int SS__REMINDER = 3000; +%constant int SS__EOTIN = 3075; +%constant int SS__CHAINW = 3083; +%constant int SS__NOTINSEC = 3091; +%constant int SS__NONXPAG = 3099; +%constant int SS__LOGNAME = 3107; +%constant int SS__CPUSTARTD = 3115; +%constant int SS__CPUSTOPPING = 3123; +%constant int SS__NOTALLCANCELED = 3131; +%constant int SS__NOTHINGDONE = 3139; +%constant int SS__EVTNOTENAB = 3147; +%constant int SS__NOPATHTBL = 3155; +%constant int SS__RESELECTION = 3163; +%constant int SS__EMULATED = 3171; +%constant int SS__REMDONE = 3179; +%constant int SS__REMINPROG = 3187; +%constant int SS__DEVCON = 3195; +%constant int SS__DEVNOTCON = 3203; +%constant int SS__CPUSELECTED = 3211; +%constant int SS__QPOOL_DEL_INPRG = 3219; +%constant int SS__PRESTO = 3227; +%constant int SS__TAKEN_BRANCH = 3235; +%constant int SS__IA32_TRAP = 3243; +%constant int SS__DEBUG_FAULT = 3251; +%constant int SS__BREAK_APPL = 3259; +%constant int SS__TIE_GET_FRAMES = 3267; +%constant int SS__TIE_PRE_UNWIND = 3275; +%constant int SS__TIE_UNWIND = 3283; +%constant int SS__TIE_GOTO_UNWIND = 3291; +%constant int SS__HBMMCREPOSTMRG = 3299; +%constant int SS__FPMODECTL = 3307; +%constant int SS__FPMODEPC = 3315; +%constant int SS__FPMODERC = 3323; +%constant int SS__ARGTYP1 = 3331; +%constant int SS__ARGTYP2 = 3339; +%constant int SS__ARGTYP3 = 3347; +%constant int SS__ARGTYP4 = 3355; +%constant int SS__ARGTYP5 = 3363; +%constant int SS__ARGTYP6 = 3371; +%constant int SS__ARGTYP7 = 3379; +%constant int SS__ARGTYP8 = 3387; +%constant int SS__DEFER_ASTS = 3395; +%constant int SS__COWBOYUP = 3403; +%constant int SS__LINEABRT = 3586; +%constant int SS__DEADLOCK = 3594; +%constant int SS__NOLOCKID = 3602; +%constant int SS__EXDEPTH = 3610; +%constant int SS__PARTMAPPED = 3618; +%constant int SS__CANCELGRANT = 3626; +%constant int SS__RETRY = 3634; +%constant int SS__BADACL = 3642; +%constant int SS__ACEEXISTS = 3650; +%constant int SS__UNSUPPORTED = 3658; +%constant int SS__NORIGHTSDB = 3666; +%constant int SS__LOGSTALL = 3674; +%constant int SS__LOGFULL = 3682; +%constant int SS__PWDINDIC = 3690; +%constant int SS__PWDINHIS = 3698; +%constant int SS__PWDWEAK = 3706; +%constant int SS__USEGENPWD = 3714; +%constant int SS__INVBUSNAM = 3722; +%constant int SS__INVCOMPTYPE = 3730; +%constant int SS__INVCOMPID = 3738; +%constant int SS__INVCOMPLIST = 3746; +%constant int SS__NOCOMPLSTS = 3754; +%constant int SS__INVSECDOMAIN = 3762; +%constant int SS__BADCHECKSUM = 3770; +%constant int SS__ARBTOOBIG = 3778; +%constant int SS__ORBTOOBIG = 3786; +%constant int SS__INVAJLNAM = 3794; +%constant int SS__TOOMANYAJL = 3802; +%constant int SS__RSDMINUSE = 3810; +%constant int SS__RSDMNOTFOU = 3818; +%constant int SS__INVUICGRP = 3826; +%constant int SS__RSDM_ACTIVE = 3834; +%constant int SS__OBJLOCKED = 3842; +%constant int SS__NOTMPNAM = 3850; +%constant int SS__INVCLSITM = 3858; +%constant int SS__NOTSHRTBL = 3866; +%constant int SS__MMATORB = 3874; +%constant int SS__NOSUCHVOL = 3882; +%constant int SS__OBJNOTLOCKED = 3890; +%constant int SS__ILLRSDM = 3898; +%constant int SS__NOCLASSSUPPORT = 3906; +%constant int SS__INVSECOPER = 3914; +%constant int SS__NODELJNLACT = 3922; +%constant int SS__INVFILFOROP = 3930; +%constant int SS__NOOBJSRV = 3938; +%constant int SS__NOFILEACCESS = 3946; +%constant int SS__BADFILESIZE = 3954; +%constant int SS__NOTFULLYMAPPED = 3962; +%constant int SS__BADWINCNT = 3970; +%constant int SS__BADWINLBN = 3978; +%constant int SS__BADWINRVN = 3986; +%constant int SS__EXTRAWINDOW = 3994; +%constant int SS__REVISED = 4002; +%constant int SS__TIMENOTSET = 4010; +%constant int SS__WAIT_CALLERS_MODE = 4018; +%constant int SS__NOT_LOADED = 4026; +%constant int SS__DRV_NOUNLOAD = 4034; +%constant int SS__INVARG = 4042; +%constant int SS__QIO_CROCK = 4050; +%constant int SS__ALTER = 4058; +%constant int SS__AFR_ENABLED = 4066; +%constant int SS__AFR_NOT_ENABLED = 4074; +%constant int SS__SHELFERROR = 4082; +%constant int SS__PERSONANONGRATA = 4090; +%constant int SS__NOPRIVSTRT = 10240; +%constant int SS__NODETACH = 10284; +%constant int SS__NOCMKRNL = 10244; +%constant int SS__NOCMEXEC = 10252; +%constant int SS__NOSYSNAM = 10260; +%constant int SS__NOGRPNAM = 10268; +%constant int SS__NOALLSPOOL = 10276; +%constant int SS__NOIMPERSONATE = 10284; +%constant int SS__NODIAGNOSE = 10292; +%constant int SS__NOLOG_IO = 10300; +%constant int SS__NOGROUP = 10308; +%constant int SS__NOACNT = 10316; +%constant int SS__NOPRMCEB = 10324; +%constant int SS__NOPRMMBX = 10332; +%constant int SS__NOPSWAPM = 10340; +%constant int SS__NOALTPRI = 10348; +%constant int SS__NOSETPRV = 10356; +%constant int SS__NOTMPMBX = 10364; +%constant int SS__NOWORLD = 10372; +%constant int SS__NOMOUNT = 10380; +%constant int SS__NOOPER = 10388; +%constant int SS__NOEXQUOTA = 10396; +%constant int SS__NONETMBX = 10404; +%constant int SS__NOVOLPRO = 10412; +%constant int SS__NOPHY_IO = 10420; +%constant int SS__NOBUGCHK = 10428; +%constant int SS__NOPRMGBL = 10436; +%constant int SS__NOSYSGBL = 10444; +%constant int SS__NOPFNMAP = 10452; +%constant int SS__NOSHMEM = 10460; +%constant int SS__NOSYSPRV = 10468; +%constant int SS__NOBYPASS = 10476; +%constant int SS__NOSYSLCK = 10484; +%constant int SS__NOSHARE = 10492; +%constant int SS__NOUPGRADE = 10500; +%constant int SS__NODOWNGRADE = 10508; +%constant int SS__NOGRPPRV = 10516; +%constant int SS__NOREADALL = 10524; +%constant int SS__NOIMPORT = 10532; +%constant int SS__NOAUDIT = 10540; +%constant int SS__NOSECURITY = 10548; +%constant int SS__NOPRIVEND = 10751; +%constant int SS__EXQUOTASTRT = 10752; +%constant int SS__EXASTLM = 10756; +%constant int SS__EXBIOLM = 10764; +%constant int SS__EXBYTLM = 10772; +%constant int SS__EXDIOLM = 10780; +%constant int SS__EXFILLM = 10788; +%constant int SS__EXPGFLQUOTA = 10796; +%constant int SS__EXPRCLM = 10804; +%constant int SS__EXTQELM = 10812; +%constant int SS__EXENQLM = 10820; +%constant int SS__EXBUFOBJLM = 11004; +%constant int SS__EXQUOTAEND = 11007; +%constant int SS__MMSFAILED = 11012; +%constant int SS__QPOOL_DEL_BUSY = 11020; +%constant int SS__TOOFEWDEV = 11032; +%constant int SS__AVRWAIT = 11040; +%constant int SS__NO_MMS = 11075; +%constant int SS__MMSREADY = 11083; +%constant int SS__MMSNOTREADY = 11091; +%constant int SS__SKIP_CHECKS = 11099; +%constant int SS__NO_NOTIFY = 11107; +%constant int SS__SKIP_EXPIRATION = 11115; +%constant int SS__NOTATBOT = 11123; +%constant int SS__PREVDENS = 11131; +%constant int SS__RDBERR = 11140; +%constant int SS__MDMSERR = 11148; +%constant int SS__IVMEDTYP = 11156; +%constant int SS__IVDENS = 11164; +%constant int SS__IVPOOL = 11172; +%constant int SS__IVEXPDAT = 11180; +%constant int SS__NOCONFMEDIA = 11188; +%constant int SS__PTE_NOT_EMPTY = 11196; +%constant int SS__CPUNOTAVAIL = 11204; +%constant int SS__NOFASTPATH = 11212; +%constant int SS__EXITFORCED = 11220; +%constant int SS__FORCEX = 11228; +%constant int SS__NOTASSUMING = 11266; +%constant int SS__ALREADYASSUMING = 11274; +%constant int SS__INUSE = 11282; +%constant int SS__USERDISABLED = 11290; +%constant int SS__NOCHJIB = 11298; +%constant int SS__NOTSUPFS = 11306; +%constant int SS__INSFTHREADS = 11314; +%constant int SS__NOBUFOBJID = 11322; +%constant int SS__NODELPERMANENT = 11330; +%constant int SS__NOMEMRESID = 11338; +%constant int SS__MRES_PFNSMALL = 11346; +%constant int SS__MRES_INCON = 11354; +%constant int SS__NORESERVEDMEM = 11362; +%constant int SS__RESERVEDMEMUSED = 11370; +%constant int SS__RES_MEM_INCON = 11378; +%constant int SS__NOSHPTS = 11386; +%constant int SS__FLUSHFAIL = 11394; +%constant int SS__NOTINSTALLED = 11402; +%constant int SS__POOLDEVEXISTS = 11410; +%constant int SS__NOUNITS = 11418; +%constant int SS__NOTAPOOL = 11426; +%constant int SS__MISSINGUNITS = 11434; +%constant int SS__DISKDEVEXISTS = 11442; +%constant int SS__TOOMANYUNITS = 11450; +%constant int SS__NOTINPOOL = 11458; +%constant int SS__WRONGPOOL = 11466; +%constant int SS__ALRBOUND = 11474; +%constant int SS__NOTPOOLMOUNTED = 11482; +%constant int SS__POOLINUSE = 11490; +%constant int SS__DISKINUSE = 11498; +%constant int SS__SDDISABLED = 11506; +%constant int SS__UNITINPOOL = 11514; +%constant int SS__FAMILYTOOBIG = 11522; +%constant int SS__NODISKNAME = 11530; +%constant int SS__DISKNAMEEXISTS = 11538; +%constant int SS__INSUFFREESEGS = 11546; +%constant int SS__NOTBOUND = 11554; +%constant int SS__TOOMANYFRAGS = 11562; +%constant int SS__TOOMANYFAMILIES = 11570; +%constant int SS__DISKISBOUND = 11578; +%constant int SS__SNAPINFAM = 11586; +%constant int SS__CHKSNAPVER = 11594; +%constant int SS__BADSNAPVER = 11602; +%constant int SS__SD_RESERVED4 = 11610; +%constant int SS__SD_RESERVED5 = 11618; +%constant int SS__SECREFOVF = 11626; +%constant int SS__DATAERR = 11634; +%constant int SS__INVPFN = 11642; +%constant int SS__INV_SHMEM = 11650; +%constant int SS__INV_SHM_CPP = 11658; +%constant int SS__INV_SHM_REG = 11666; +%constant int SS__ONEMAPPER = 11674; +%constant int SS__NOSUCHEXT = 11682; +%constant int SS__CBKEXISTS = 11690; +%constant int SS__NOSUCHCBK = 11698; +%constant int SS__NOTAMEMBER = 11706; +%constant int SS__GLXSPIUNAVAIL = 11714; +%constant int SS__MPDEVILLCURPATH = 11722; +%constant int SS__MPDEVINCOMPAT = 11730; +%constant int SS__MPDEVNOT = 11738; +%constant int SS__MPDEVNOTCONF = 11746; +%constant int SS__PERSONARESERVED = 11754; +%constant int SS__WRONGDRV = 11762; +%constant int SS__BADRAD = 11770; +%constant int SS__INVQSRFNC = 11778; +%constant int SS__NOQIOSERVER = 11786; +%constant int SS__INCLASS = 11794; +%constant int SS__INVBOOTDEV = 11802; +%constant int SS__CLIENT_UNAVAILABLE = 11810; +%constant int SS__CONFIGFILE_ERROR = 11818; +%constant int SS__INVDEVALLOC = 11826; +%constant int SS__DEVICE_UNAVAILABLE = 11834; +%constant int SS__INVDEVMOUNT = 11842; +%constant int SS__LOGGING_DISABLED = 11850; +%constant int SS__NOSUCHCLIENT = 11858; +%constant int SS__NOSUCHDEVICE = 11866; +%constant int SS__NOSUCHFILTER = 11874; +%constant int SS__NOSUCHPATH = 11882; +%constant int SS__NOSUCHSERVER = 11890; +%constant int SS__RQSTIMOUT = 11898; +%constant int SS__SERVER_UNAVAILABLE = 11906; +%constant int SS__QSRVINTERR = 11914; +%constant int SS__NOADD = 11922; +%constant int SS__SYSTEMUIC = 11930; +%constant int SS__NOSUCHQPOOLID = 11938; +%constant int SS__PATHAMBIG = 11946; +%constant int SS__INVMVIP = 11954; +%constant int SS__NOPATHAVAIL = 11962; +%constant int SS__NOENACURINV = 11970; +%constant int SS__TRUSTCONF = 11978; +%constant int SS__QIO_FAULT = 11986; +%constant int SS__HBVS_REDO_IO = 11994; +%constant int SS__TOOMANYPERSONA = 12002; +%constant int SS__INVKTLIM = 12010; +%constant int SS__MAXNAMPOL = 13316; +%constant int SS__HBMMENABLED = 13324; +%constant int SS__NOMODNONEPOL = 13332; +%constant int SS__SHADFEATNOMNT = 13340; +%constant int SS__NOTSUPALLNODES = 13348; +%constant int SS__WLGCANTHBMM = 13356; +%constant int SS__CALLUNDEFSYM = 13364; +%constant int SS__NOADDMCPYMBR = 13372; +%constant int SS__CANTDODDS = 13380; +%constant int SS__TOOMANYMBRS = 13388; +%constant int SS__SCBREADFAIL = 13396; +%constant int SS__SCBWRITEFAIL = 13404; +%constant int SS__NOMEMFORWBM = 13412; +%constant int SS__MUSTDMTVU = 13420; +%constant int SS__ONLYSRCMUSTSTAY = 13428; +%constant int SS__NOWBMDURINGCOPY = 13436; +%constant int SS__WBMERR = 13444; +%constant int SS__BADPOLCHAR = 13452; +%constant int SS__HBMMVERSIONBAD = 13460; +%constant int SS__ANADSKSHDBBLK = 13468; +%constant int SS__HBMMBADPOLSPEC = 13476; +%constant int SS__NOSHADOWSERVER = 13484; +%constant int SS__GAMEOVER = 13492; +%constant int SS__SYSAPMIN = 32256; +%constant int SS__SYSAPMAX = 32767; diff --git a/Modules/vms/statedef/statedef.i b/Modules/vms/statedef/statedef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvc3RhdGVkZWYvc3RhdGVkZWYuaQ== --- /dev/null +++ b/Modules/vms/statedef/statedef.i @@ -0,0 +1,16 @@ +%module statedef + +%constant int SCH_C_COLPG = 1; +%constant int SCH_C_MWAIT = 2; +%constant int SCH_C_CEF = 3; +%constant int SCH_C_PFW = 4; +%constant int SCH_C_LEF = 5; +%constant int SCH_C_LEFO = 6; +%constant int SCH_C_HIB = 7; +%constant int SCH_C_HIBO = 8; +%constant int SCH_C_SUSP = 9; +%constant int SCH_C_SUSPO = 10; +%constant int SCH_C_FPG = 11; +%constant int SCH_C_COM = 12; +%constant int SCH_C_COMO = 13; +%constant int SCH_C_CUR = 14; diff --git a/Modules/vms/stenvdef/stenvdef.i b/Modules/vms/stenvdef/stenvdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvc3RlbnZkZWYvc3RlbnZkZWYuaQ== --- /dev/null +++ b/Modules/vms/stenvdef/stenvdef.i @@ -0,0 +1,25 @@ +%module stenvdef + +%constant int STENV_K_AUTO_ACTION = 1; +%constant int STENV_K_BOOT_DEV = 2; +%constant int STENV_K_BOOTDEF_DEV = 3; +%constant int STENV_K_BOOTED_DEV = 4; +%constant int STENV_K_BOOT_FILE = 5; +%constant int STENV_K_BOOTED_FILE = 6; +%constant int STENV_K_BOOT_OSFLAGS = 7; +%constant int STENV_K_BOOTED_OSFLAGS = 8; +%constant int STENV_K_BOOT_RESET = 9; +%constant int STENV_K_DUMP_DEV = 10; +%constant int STENV_K_ENABLE_AUDIT = 11; +%constant int STENV_K_LICENSE = 12; +%constant int STENV_K_CHAR_SET = 13; +%constant int STENV_K_LANGUAGE = 14; +%constant int STENV_K_TTY_DEV = 15; +%constant int STENV_K_SYSROOT = 16; +%constant int STENV_K_BTFLAGS = 17; +%constant int STENV_K_FRU_EEROM = 18; +%constant int STENVDEF_S_ItemType = 24; +%constant int STENVDEF_S_BUF_ADDR = 8; +%constant int STENVDEF_S_RET_ADDR = 8; +%constant int STENVDEF__K_FREE_FORM = 0; +%constant int STENVDEF__K_SDD_LOG = 25; diff --git a/Modules/vms/stsdef/stsdef.i b/Modules/vms/stsdef/stsdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvc3RzZGVmL3N0c2RlZi5p --- /dev/null +++ b/Modules/vms/stsdef/stsdef.i @@ -0,0 +1,24 @@ +%module stsdef + +%constant int STS_M_SEVERITY = 0x7L; +%constant int STS_M_COND_ID = 0xFFFFFF8L; +%constant int STS_M_CONTROL = 0xF0000000L; +%constant int STS_M_SUCCESS = 0x1L; +%constant int STS_M_MSG_NO = 0xFFF8L; +%constant int STS_M_CODE = 0x7FF8L; +%constant int STS_M_FAC_SP = 0x8000L; +%constant int STS_M_CUST_DEF = 0x8000000L; +%constant int STS_M_INHIB_MSG = 0x10000000L; +%constant int STS_M_FAC_NO = 0xFFF0000L; +%constant int STS_K_WARNING = 0; +%constant int STS_K_SUCCESS = 1; +%constant int STS_K_ERROR = 2; +%constant int STS_K_INFO = 3; +%constant int STS_K_SEVERE = 4; +%constant int STS_S_STSDEF = 4; +%constant int STS_S_SEVERITY = 3; +%constant int STS_S_COND_ID = 25; +%constant int STS_S_CONTROL = 4; +%constant int STS_S_MSG_NO = 13; +%constant int STS_S_CODE = 12; +%constant int STS_S_FAC_NO = 12; diff --git a/Modules/vms/syidef/syidef.i b/Modules/vms/syidef/syidef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvc3lpZGVmL3N5aWRlZi5p --- /dev/null +++ b/Modules/vms/syidef/syidef.i @@ -0,0 +1,726 @@ +%module syidef + +%constant int SYI_C_EXETYPE = 1; +%constant int SYI_C_FLDTYPE = 2; +%constant int SYI_C_RSDTYPE = 3; +%constant int SYI__VERSION = 4096; +%constant int SYI__SID = 4097; +%constant int SYI__PFCDEFAULT = 4098; +%constant int SYI__PAGTBLPFC = 4099; +%constant int SYI__SYSPFC = 4100; +%constant int SYI__KFILSTCNT = 4101; +%constant int SYI__GBLSECTIONS = 4102; +%constant int SYI__GBLPAGES = 4103; +%constant int SYI__GBLPAGFIL = 4104; +%constant int SYI__MAXPROCESSCNT = 4105; +%constant int SYI__PIXSCAN = 4106; +%constant int SYI__PROCSECTCNT = 4107; +%constant int SYI__MINWSCNT = 4108; +%constant int SYI__PAGFILCNT = 4109; +%constant int SYI__SWPFILCNT = 4110; +%constant int SYI__SYSMWCNT = 4111; +%constant int SYI__INTSTKPAGES = 4112; +%constant int SYI__DLCKEXTRASTK = 4113; +%constant int SYI__BALSETCNT = 4114; +%constant int SYI__IRPCOUNT = 4115; +%constant int SYI__IRPCOUNTV = 4116; +%constant int SYI__WSMAX = 4117; +%constant int SYI__NPAGEDYN = 4118; +%constant int SYI__NPAGEVIR = 4119; +%constant int SYI__PAGEDYN = 4120; +%constant int SYI__VIRTUALPAGECNT = 4121; +%constant int SYI__SPTREQ = 4122; +%constant int SYI__EXUSRSTK = 4123; +%constant int SYI__LRPCOUNT = 4124; +%constant int SYI__LRPCOUNTV = 4125; +%constant int SYI__LRPSIZE = 4126; +%constant int SYI__LRPMIN = 4127; +%constant int SYI__SRPCOUNT = 4128; +%constant int SYI__SRPCOUNTV = 4129; +%constant int SYI__SRPSIZE = 4130; +%constant int SYI__SRPMIN = 4131; +%constant int SYI__CHANNELCNT = 4132; +%constant int SYI__PIOPAGES = 4133; +%constant int SYI__CTLPAGES = 4134; +%constant int SYI__CTLIMGLIM = 4135; +%constant int SYI__IMGIOCNT = 4136; +%constant int SYI__QUANTUM = 4137; +%constant int SYI__MPW_WRTCLUSTER = 4138; +%constant int SYI__MPW_HILIMIT = 4139; +%constant int SYI__MPW_LOLIMIT = 4140; +%constant int SYI__MPW_PRIO = 4141; +%constant int SYI__SWP_PRIO = 4142; +%constant int SYI__MPW_THRESH = 4143; +%constant int SYI__MPW_WAITLIMIT = 4144; +%constant int SYI__TBSKIPWSL = 4145; +%constant int SYI__PHYSICALPAGES = 4146; +%constant int SYI__PFRATL = 4147; +%constant int SYI__PFRATH = 4148; +%constant int SYI__PFRATL_SYS = 4149; +%constant int SYI__WSINC = 4150; +%constant int SYI__WSDEC = 4151; +%constant int SYI__AWSMIN = 4152; +%constant int SYI__AWSTIME = 4153; +%constant int SYI__SWPRATE = 4154; +%constant int SYI__SWPOUTPGCNT = 4155; +%constant int SYI__SWPALLOCINC = 4156; +%constant int SYI__IOTA = 4157; +%constant int SYI__LONGWAIT = 4158; +%constant int SYI__SWPFAIL = 4159; +%constant int SYI__VMSD1 = 4160; +%constant int SYI__VMSD2 = 4161; +%constant int SYI__VMSD3 = 4162; +%constant int SYI__VMSD4 = 4163; +%constant int SYI__VMS5 = 4164; +%constant int SYI__VMS6 = 4165; +%constant int SYI__VMS7 = 4166; +%constant int SYI__VMS8 = 4167; +%constant int SYI__USERD1 = 4168; +%constant int SYI__USERD2 = 4169; +%constant int SYI__USER3 = 4170; +%constant int SYI__USER4 = 4171; +%constant int SYI__EXTRACPU = 4172; +%constant int SYI__MAXSYSGROUP = 4173; +%constant int SYI__MVTIMEOUT = 4174; +%constant int SYI__MAXBUF = 4175; +%constant int SYI__DEFMBXBUFQUO = 4176; +%constant int SYI__DEFMBXMXMSG = 4177; +%constant int SYI__DEFMBXNUMMSG = 4178; +%constant int SYI__FREELIM = 4179; +%constant int SYI__FREEGOAL = 4180; +%constant int SYI__GROWLIM = 4181; +%constant int SYI__BORROWLIM = 4182; +%constant int SYI__LOCKRETRY = 4183; +%constant int SYI__XFMAXRATE = 4184; +%constant int SYI__LAMAPREGS = 4185; +%constant int SYI__REALTIME_SPTS = 4186; +%constant int SYI__CLISYMTBL = 4187; +%constant int SYI__LOCKIDTBL = 4188; +%constant int SYI__RESHASHTBL = 4189; +%constant int SYI__DEADLOCK_WAIT = 4190; +%constant int SYI__SCSBUFFCNT = 4191; +%constant int SYI__SCSCONNCNT = 4192; +%constant int SYI__SCSRESPCNT = 4193; +%constant int SYI__SCSMAXDG = 4194; +%constant int SYI__SCSMAXMSG = 4195; +%constant int SYI__SCSFLOWCUSH = 4196; +%constant int SYI__SCSSYSTEMID = 4197; +%constant int SYI__SCSSYSTEMIDH = 4198; +%constant int SYI__SCSNODE = 4199; +%constant int SYI__PRCPOLINTERVAL = 4201; +%constant int SYI__PASTIMOUT = 4202; +%constant int SYI__PASTDGBUF = 4203; +%constant int SYI__PANUMPOLL = 4204; +%constant int SYI__PAPOLLINTERVAL = 4205; +%constant int SYI__PAPOOLINTERVAL = 4206; +%constant int SYI__TIMEPROMPTWAIT = 4207; +%constant int SYI__UDABURSTRATE = 4208; +%constant int SYI__LNMSHASHTBL = 4209; +%constant int SYI__LNMPHASHTBL = 4210; +%constant int SYI__TTY_SCANDELTA = 4211; +%constant int SYI__TTY_DIALTYPE = 4212; +%constant int SYI__TTY_SPEED = 4213; +%constant int SYI__TTY_RSPEED = 4214; +%constant int SYI__TTY_PARITY = 4215; +%constant int SYI__TTY_BUF = 4216; +%constant int SYI__TTY_DEFCHAR = 4217; +%constant int SYI__TTY_DEFCHAR2 = 4218; +%constant int SYI__TTY_TYPAHDSZ = 4219; +%constant int SYI__TTY_ALTYPAHD = 4220; +%constant int SYI__TTY_ALTALARM = 4221; +%constant int SYI__TTY_DMASIZE = 4222; +%constant int SYI__TTY_PROT = 4223; +%constant int SYI__TTY_OWNER = 4224; +%constant int SYI__TTY_CLASSNAME = 4225; +%constant int SYI__TTY_SILOTIME = 4226; +%constant int SYI__TTY_DEFPORT = 4227; +%constant int SYI__RMS_DFMBC = 4228; +%constant int SYI__RMS_DFMBFSDK = 4229; +%constant int SYI__RMS_DFMBFSMT = 4230; +%constant int SYI__RMS_DFMBFSUR = 4231; +%constant int SYI__RMS_DFMBFREL = 4232; +%constant int SYI__RMS_DFMBFIDX = 4233; +%constant int SYI__RMS_CONPOLICY = 4234; +%constant int SYI__RMS_PROLOGUE = 4235; +%constant int SYI__RMS_EXTEND_SIZE = 4236; +%constant int SYI__RMS_FILEPROT = 4237; +%constant int SYI__PQL_DASTLM = 4238; +%constant int SYI__PQL_MASTLM = 4239; +%constant int SYI__PQL_DBIOLM = 4240; +%constant int SYI__PQL_MBIOLM = 4241; +%constant int SYI__PQL_DBYTLM = 4242; +%constant int SYI__PQL_MBYTLM = 4243; +%constant int SYI__PQL_DCPULM = 4244; +%constant int SYI__PQL_MCPULM = 4245; +%constant int SYI__PQL_DDIOLM = 4246; +%constant int SYI__PQL_MDIOLM = 4247; +%constant int SYI__PQL_DFILLM = 4248; +%constant int SYI__PQL_MFILLM = 4249; +%constant int SYI__PQL_DPGFLQUOTA = 4250; +%constant int SYI__PQL_MPGFLQUOTA = 4251; +%constant int SYI__PQL_DPRCLM = 4252; +%constant int SYI__PQL_MPRCLM = 4253; +%constant int SYI__PQL_DTQELM = 4254; +%constant int SYI__PQL_MTQELM = 4255; +%constant int SYI__PQL_DWSDEFAULT = 4256; +%constant int SYI__PQL_MWSDEFAULT = 4257; +%constant int SYI__PQL_DWSQUOTA = 4258; +%constant int SYI__PQL_MWSQUOTA = 4259; +%constant int SYI__PQL_DWSEXTENT = 4260; +%constant int SYI__PQL_MWSEXTENT = 4261; +%constant int SYI__PQL_DENQLM = 4262; +%constant int SYI__PQL_MENQLM = 4263; +%constant int SYI__ACP_MAPCACHE = 4264; +%constant int SYI__ACP_HDRCACHE = 4265; +%constant int SYI__ACP_DIRCACHE = 4266; +%constant int SYI__ACP_WORKSET = 4267; +%constant int SYI__ACP_FIDCACHE = 4268; +%constant int SYI__ACP_EXTCACHE = 4269; +%constant int SYI__ACP_EXTLIMIT = 4270; +%constant int SYI__ACP_QUOCACHE = 4271; +%constant int SYI__ACP_SYSACC = 4272; +%constant int SYI__ACP_MAXREAD = 4273; +%constant int SYI__ACP_WINDOW = 4274; +%constant int SYI__ACP_WRITEBACK = 4275; +%constant int SYI__ACP_DATACHECK = 4276; +%constant int SYI__ACP_BASEPRIO = 4277; +%constant int SYI__ACP_SWAPFLGS = 4278; +%constant int SYI__DEFPRI = 4279; +%constant int SYI__IJOBLIM = 4280; +%constant int SYI__BJOBLIM = 4281; +%constant int SYI__NJOBLIM = 4282; +%constant int SYI__RJOBLIM = 4283; +%constant int SYI__QUORUM = 4284; +%constant int SYI__VOTES = 4285; +%constant int SYI__RECNXINTERVAL = 4286; +%constant int SYI__BOOTTIME = 4287; +%constant int SYI__LOCKIDTBL_MAX = 4288; +%constant int SYI__TAILORED = 4289; +%constant int SYI__STARTUP_P1 = 4290; +%constant int SYI__STARTUP_P2 = 4291; +%constant int SYI__STARTUP_P3 = 4292; +%constant int SYI__STARTUP_P4 = 4293; +%constant int SYI__STARTUP_P5 = 4294; +%constant int SYI__STARTUP_P6 = 4295; +%constant int SYI__STARTUP_P7 = 4296; +%constant int SYI__STARTUP_P8 = 4297; +%constant int SYI__CLUSTER_NODES = 4298; +%constant int SYI__CLUSTER_VOTES = 4299; +%constant int SYI__CLUSTER_QUORUM = 4300; +%constant int SYI__CLUSTER_FSYSID = 4301; +%constant int SYI__CLUSTER_FTIME = 4302; +%constant int SYI__CLUSTER_MEMBER = 4303; +%constant int SYI__NODE_CSID = 4304; +%constant int SYI__NODE_VOTES = 4305; +%constant int SYI__NODE_QUORUM = 4306; +%constant int SYI__NODE_SYSTEMID = 4307; +%constant int SYI__NODE_SWINCARN = 4308; +%constant int SYI__NODE_SWTYPE = 4309; +%constant int SYI__NODE_SWVERS = 4310; +%constant int SYI__NODE_HWTYPE = 4311; +%constant int SYI__NODE_HWVERS = 4312; +%constant int SYI__NODENAME = 4313; +%constant int SYI__ARCHFLAG = 4314; +%constant int SYI__SCS_EXISTS = 4315; +%constant int SYI__DISK_QUORUM = 4316; +%constant int SYI__XSID = 4317; +%constant int SYI__PAMAXPORT = 4320; +%constant int SYI__PASANITY = 4321; +%constant int SYI__DEFQUEPRI = 4322; +%constant int SYI__MAXQUEPRI = 4323; +%constant int SYI__QDSKINTERVAL = 4324; +%constant int SYI__ALLOCLASS = 4325; +%constant int SYI__LGI_RETRY_LIM = 4326; +%constant int SYI__LGI_RETRY_TMO = 4327; +%constant int SYI__LGI_BRK_LIM = 4328; +%constant int SYI__LGI_BRK_TMO = 4329; +%constant int SYI__LGI_HID_TIM = 4330; +%constant int SYI__LGI_PWD_TMO = 4331; +%constant int SYI__PQL_DJTQUOTA = 4332; +%constant int SYI__PQL_MJTQUOTA = 4333; +%constant int SYI__VAXCLUSTER = 4334; +%constant int SYI__LOCKDIRWT = 4335; +%constant int SYI__QDSKVOTES = 4336; +%constant int SYI__DORMANTWAIT = 4337; +%constant int SYI__PAGEFILE_PAGE = 4338; +%constant int SYI__SWAPFILE_PAGE = 4339; +%constant int SYI__PAGEFILE_FREE = 4340; +%constant int SYI__SWAPFILE_FREE = 4341; +%constant int SYI__TTY_TIMEOUT = 4342; +%constant int SYI__TTY_AUTOCHAR = 4343; +%constant int SYI__PANOPOLL = 4344; +%constant int SYI__PE1 = 4345; +%constant int SYI__PE2 = 4346; +%constant int SYI__PE3 = 4347; +%constant int SYI__PE4 = 4348; +%constant int SYI__PE5 = 4349; +%constant int SYI__PE6 = 4350; +%constant int SYI__RMS_GBLBUFQUO = 4351; +%constant int SYI__RMS_DFNBC = 4352; +%constant int SYI__ACP_DINDXCACHE = 4353; +%constant int SYI__MAXATTACHPRI = 4354; +%constant int SYI__SMP_CPUS = 4355; +%constant int SYI__SMP_CPUSH = 4356; +%constant int SYI__FALLBACK_MODE = 4357; +%constant int SYI__MPW_LOWAITLIMIT = 4358; +%constant int SYI__MPW_IOLIMIT = 4359; +%constant int SYI__S0_PAGING = 4360; +%constant int SYI__HW_MODEL = 4361; +%constant int SYI__HW_NAME = 4362; +%constant int SYI__SCH_CTLFLAGS = 4363; +%constant int SYI__NODE_EVOTES = 4364; +%constant int SYI__CLUSTER_EVOTES = 4365; +%constant int SYI__MULTIPROCESSING = 4366; +%constant int SYI__FREE_GBLPAGES = 4367; +%constant int SYI__CONTIG_GBLPAGES = 4368; +%constant int SYI__FREE_GBLSECTS = 4369; +%constant int SYI__EXPECTED_VOTES = 4370; +%constant int SYI__PU_OPTIONS = 4371; +%constant int SYI__WPTTE_SIZE = 4372; +%constant int SYI__WPRE_SIZE = 4373; +%constant int SYI__SMP_SANITY_CNT = 4374; +%constant int SYI__SMP_TICK_CNT = 4375; +%constant int SYI__QBUS_MULT_INTR = 4376; +%constant int SYI__SYSTEM_RIGHTS = 4377; +%constant int SYI__SMP_SPINWAIT = 4378; +%constant int SYI__SMP_LNGSPINWAIT = 4379; +%constant int SYI__TIME_CONTROL = 4380; +%constant int SYI__AVAILCPU_CNT = 4381; +%constant int SYI__ACTIVECPU_CNT = 4382; +%constant int SYI__MSCP_LOAD = 4386; +%constant int SYI__MSCP_SERVE_ALL = 4387; +%constant int SYI__POOLCHECK = 4388; +%constant int SYI__TAPE_MVTIMEOUT = 4389; +%constant int SYI__PSEUDOLOA = 4390; +%constant int SYI__MINCLASSPRI = 4391; +%constant int SYI__MAXCLASSPRI = 4392; +%constant int SYI__MINPRPRI = 4393; +%constant int SYI__AUTOCONFIG_ALGO = 4394; +%constant int SYI__ERRORLOGBUFFERS = 4395; +%constant int SYI__JOBCTLD = 4396; +%constant int SYI__WINDOW_SYSTEM = 4397; +%constant int SYI__MSCP_BUFFER = 4398; +%constant int SYI__MSCP_CREDITS = 4399; +%constant int SYI__BREAKPOINTS = 4400; +%constant int SYI__CLOCK_INTERVAL = 4401; +%constant int SYI__DUMPSTYLE = 4402; +%constant int SYI__NISCS_PORT_SERV = 4403; +%constant int SYI__RSRVPAGCNT = 4404; +%constant int SYI__VECTOR_PROC = 4405; +%constant int SYI__VECTOR_MARGIN = 4406; +%constant int SYI__AFFINITY_SKIP = 4407; +%constant int SYI__AFFINITY_TIME = 4408; +%constant int SYI__VECTOR_EMULATOR = 4409; +%constant int SYI__VP_MASK = 4410; +%constant int SYI__VP_NUMBER = 4411; +%constant int SYI__USED_GBLPAGCNT = 4412; +%constant int SYI__USED_GBLPAGMAX = 4413; +%constant int SYI__USED_GBLSECTCNT = 4414; +%constant int SYI__USED_GBLSECTMAX = 4415; +%constant int SYI__ERLBUFFERPAGES = 4416; +%constant int SYI__TAPE_ALLOCLASS = 4417; +%constant int SYI__PFRATH_SYS = 4418; +%constant int SYI__WSINC_SYS = 4419; +%constant int SYI__WSDEC_SYS = 4420; +%constant int SYI__AWSMIN_SYS = 4421; +%constant int SYI__AWSTIME_SYS = 4422; +%constant int SYI__BOOT_STYLE = 4423; +%constant int SYI__FT_FLAGS = 4424; +%constant int SYI__SHADOWING = 4425; +%constant int SYI__SHADOW_SYS_DISK = 4426; +%constant int SYI__SHADOW_SYS_UNIT = 4427; +%constant int SYI__SHADOW_MAX_COPY = 4428; +%constant int SYI__TIMVCFAIL = 4429; +%constant int SYI__PRIORITY_OFFSET = 4431; +%constant int SYI__VCC_FLAGS = 4432; +%constant int SYI__VCC_MAXSIZE = 4437; +%constant int SYI__MMG_CTLFLAGS = 4441; +%constant int SYI__NISCS_MAX_PKTSZ = 4443; +%constant int SYI__NISCS_LAN_OVRHD = 4444; +%constant int SYI__DECNET_VERSION = 4445; +%constant int SYI__TMSCP_LOAD = 4446; +%constant int SYI__LGI_CALLOUTS = 4447; +%constant int SYI__NET_CALLOUTS = 4448; +%constant int SYI__IEEE_ADDRESS = 4449; +%constant int SYI__IEEE_ADDRESSH = 4450; +%constant int SYI__SHADOW_MBR_TMO = 4451; +%constant int SYI__PAGE_SIZE = 4452; +%constant int SYI__ARCH_TYPE = 4453; +%constant int SYI__ARCH_NAME = 4454; +%constant int SYI__CRD_CONTROL = 4455; +%constant int SYI__SECURITY_POLICY = 4456; +%constant int SYI__DNVOSI1 = 4457; +%constant int SYI__MEMSIZE = 4459; +%constant int SYI__KSTACKPAGES = 4460; +%constant int SYI__PHYSICAL_MEMORY = 4461; +%constant int SYI__XQP_ALLOC_BLKS = 4462; +%constant int SYI__ZERO_LIST_HI = 4463; +%constant int SYI__CPUTYPE = 4464; +%constant int SYI__SYSTYPE = 4465; +%constant int SYI__ITB_ENTRIES = 4466; +%constant int SYI__GH_RSRVPGCNT = 4467; +%constant int SYI__DEF_PRIO_MIN = 4468; +%constant int SYI__DEF_PRIO_MAX = 4469; +%constant int SYI__PSXFIFO_PRIO_MIN = 4470; +%constant int SYI__PSXFIFO_PRIO_MAX = 4471; +%constant int SYI__PSXRR_PRIO_MIN = 4472; +%constant int SYI__PSXRR_PRIO_MAX = 4473; +%constant int SYI__XQPCTLD1 = 4474; +%constant int SYI__XQPCTL2 = 4475; +%constant int SYI__CPUCONF = 4477; +%constant int SYI__DECNET_FULLNAME = 4478; +%constant int SYI__XQPCTLD3 = 4479; +%constant int SYI__XQPCTL4 = 4480; +%constant int SYI__XQPCTLD5 = 4481; +%constant int SYI__XQPCTL6 = 4482; +%constant int SYI__XQPCTLD7 = 4483; +%constant int SYI__XQPCTL8 = 4484; +%constant int SYI__DBGTK_SCRATCH = 4485; +%constant int SYI__PALCODE_VERSION = 4486; +%constant int SYI__CONSOLE_VERSION = 4487; +%constant int SYI__GH_EXEC_CODE = 4488; +%constant int SYI__GH_EXEC_DATA = 4489; +%constant int SYI__GH_RES_CODE = 4490; +%constant int SYI__GH_RES_DATA = 4491; +%constant int SYI__IMGREG_PAGES = 4492; +%constant int SYI__SHADOW_SYS_TMO = 4493; +%constant int SYI__SHADOW_SYS_WAIT = 4494; +%constant int SYI__SHADOW_ENABLE = 4495; +%constant int SYI__SHADOW_SITE_O = 4496; +%constant int SYI__SYSTEM_CHECK = 4497; +%constant int SYI__PFN_COLOR_COUNT = 4498; +%constant int SYI__REAL_CPUTYPE = 4499; +%constant int SYI__SCSICLUSTER_P1 = 4500; +%constant int SYI__SCSICLUSTER_P2 = 4501; +%constant int SYI__SCSICLUSTER_P3 = 4502; +%constant int SYI__SCSICLUSTER_P4 = 4503; +%constant int SYI__FILE_CACHE = 4504; +%constant int SYI__TMSCP_SERVE_ALL = 4505; +%constant int SYI__DR_UNIT_BASE = 4506; +%constant int SYI__MC_SERVICES_P0 = 4507; +%constant int SYI__MC_SERVICES_P1 = 4508; +%constant int SYI__MC_SERVICES_P2 = 4509; +%constant int SYI__MC_SERVICES_P3 = 4510; +%constant int SYI__MC_SERVICES_P4 = 4511; +%constant int SYI__MC_SERVICES_P5 = 4512; +%constant int SYI__MC_SERVICES_P6 = 4513; +%constant int SYI__MC_SERVICES_P7 = 4514; +%constant int SYI__MC_SERVICES_P8 = 4515; +%constant int SYI__MC_SERVICES_P9 = 4516; +%constant int SYI__S2_SIZE = 4517; +%constant int SYI__PROCESS_SPACE_LIMIT = 4518; +%constant int SYI__PT_BASE = 4519; +%constant int SYI__SHARED_VA_PTES = 4520; +%constant int SYI__MULTITHREAD = 4521; +%constant int SYI__CWCREPRC_ENABLE = 4522; +%constant int SYI__MAXBOBMEM = 4523; +%constant int SYI__FAST_PATH = 4524; +%constant int SYI__IO_PREFER_CPUS = 4525; +%constant int SYI__ACTIVE_CPU_MASK = 4526; +%constant int SYI__AVAIL_CPU_MASK = 4527; +%constant int SYI__PRIMARY_CPUID = 4528; +%constant int SYI__MAX_CPUS = 4529; +%constant int SYI__CPUCAP_MASK = 4530; +%constant int SYI__FILE_CACHE_MIN = 4531; +%constant int SYI__FILE_CACHE_MAX = 4532; +%constant int SYI__F64CTL1 = 4533; +%constant int SYI__F64CTL2 = 4534; +%constant int SYI__F64CTLD3 = 4535; +%constant int SYI__F64CTLD4 = 4536; +%constant int SYI__DISABLE_UPCALLS = 4537; +%constant int SYI__DEVICE_NAMING = 4538; +%constant int SYI__AVAIL_PAGES = 4539; +%constant int SYI__PROC_SLOTS = 4540; +%constant int SYI__BAL_SLOTS = 4541; +%constant int SYI__NPAGED_POOL = 4542; +%constant int SYI__PAGED_POOL = 4543; +%constant int SYI__MAIN_MEMORY = 4544; +%constant int SYI__ARB_SUPPORT = 4545; +%constant int SYI__MAX_PFN = 4546; +%constant int SYI__PFN_MEMORY_MAP = 4547; +%constant int SYI__PMD_COUNT = 4548; +%constant int SYI__MSCP_CMD_TMO = 4549; +%constant int SYI__LAN_FLAGS = 4550; +%constant int SYI__RMS_DFLRL = 4551; +%constant int SYI__RMS_HEURISTIC = 4552; +%constant int SYI__NPAG_INTERVAL = 4553; +%constant int SYI__NPAG_GENTLE = 4554; +%constant int SYI__NPAG_AGGRESSIVE = 4555; +%constant int SYI__NPAG_BAP_MIN = 4556; +%constant int SYI__NPAG_BAP_MAX = 4557; +%constant int SYI__NPAG_BAP_MAX_PA = 4558; +%constant int SYI__NPAG_RING_SIZE = 4559; +%constant int SYI__CLUSTER_CREDITS = 4560; +%constant int SYI__PTES_PER_PAGE = 4561; +%constant int SYI__TEMPERATURE_VECTOR = 4562; +%constant int SYI__POWER_VECTOR = 4563; +%constant int SYI__FAN_VECTOR = 4564; +%constant int SYI__THERMAL_VECTOR = 4565; +%constant int SYI__MAXBOBS0S1 = 4566; +%constant int SYI__MAXBOBS2 = 4567; +%constant int SYI__VCC_MAX_CACHE = 4568; +%constant int SYI__VCC_MAX_IO_SIZE = 4569; +%constant int SYI__VCC_MAX_LOCKS = 4570; +%constant int SYI__VCC_READAHEAD = 4571; +%constant int SYI__VCC_WRITEBEHIND = 4572; +%constant int SYI__VCC_WRITE_DELAY = 4573; +%constant int SYI__SD_ALLOCLASS = 4574; +%constant int SYI__GALAXY = 4575; +%constant int SYI__NPAG_BAP_MIN_PA = 4576; +%constant int SYI__BAP_MIN_REQ_SZ = 4577; +%constant int SYI__BAP_MAX_REQ_SZ = 4578; +%constant int SYI__BAP_MIN_PA_REG = 4579; +%constant int SYI__BAP_MAX_PA_REG = 4580; +%constant int SYI__GALAXY_ID = 4581; +%constant int SYI__RMSD6 = 4582; +%constant int SYI__MPDEV_ENABLE_O = 4583; +%constant int SYI__MPDEV_REMOTE_O = 4584; +%constant int SYI__RMSD1 = 4585; +%constant int SYI__GALAXY_MEMBER = 4586; +%constant int SYI__GALAXY_PLATFORM = 4587; +%constant int SYI__PARTITION_ID = 4588; +%constant int SYI__COMMUNITY_ID = 4589; +%constant int SYI__GLX_INST_TMO = 4590; +%constant int SYI__SMCI_FLAGS = 4591; +%constant int SYI__SMCI_PORTS = 4592; +%constant int SYI__SERVED_IO = 4593; +%constant int SYI__GLX_SW_VERSION = 4594; +%constant int SYI__GLX_MAX_MEMBERS = 4595; +%constant int SYI__GLX_INCARNATION = 4596; +%constant int SYI__GLX_FORMATION = 4597; +%constant int SYI__GLX_TERMINATION = 4598; +%constant int SYI__GLX_MBR_NAME = 4599; +%constant int SYI__GLX_MBR_MEMBER = 4600; +%constant int SYI__GLX_MBR_INCARNATION = 4601; +%constant int SYI__GLX_MBR_JOINED = 4602; +%constant int SYI__MPDEV_LCRETRIES = 4603; +%constant int SYI__MPDEV_D1 = 4604; +%constant int SYI__CLUSTER_NTIME = 4605; +%constant int SYI__CLUSTER_NTIME_REF = 4606; +%constant int SYI__MPDEV_POLLER_O = 4607; +%constant int SYI__CPU_FAILOVER = 4608; +%constant int SYI__POTENTIAL_CPU_MASK = 4609; +%constant int SYI__POTENTIALCPU_CNT = 4610; +%constant int SYI__CPU_AUTOSTART = 4611; +%constant int SYI__FAST_PATH_PORTS = 4614; +%constant int SYI__GLX_SHM_REG = 4615; +%constant int SYI__RAD_SUPPORT = 4616; +%constant int SYI__NPAGECALC = 4617; +%constant int SYI__WBM_MSG_INT = 4618; +%constant int SYI__WBM_MSG_UPPER = 4619; +%constant int SYI__WBM_MSG_LOWER = 4620; +%constant int SYI__HP_ACTIVE_CPU_CNT = 4621; +%constant int SYI__HP_ACTIVE_SP_CNT = 4622; +%constant int SYI__HP_CONFIG_SP_CNT = 4623; +%constant int SYI__HP_CONFIG_SBB_CNT = 4624; +%constant int SYI__SHADOW_MAX_UNIT = 4625; +%constant int SYI__WBM_OPCOM_LVL = 4626; +%constant int SYI__AUTO_DLIGHT_SAV = 4627; +%constant int SYI__RAD_MAX_RADS = 4628; +%constant int SYI__RAD_CPUS = 4629; +%constant int SYI__RAD_MEMSIZE = 4630; +%constant int SYI__RAD_SHMEMSIZE = 4631; +%constant int SYI__GALAXY_SHMEMSIZE = 4632; +%constant int SYI__NPAGERAD = 4633; +%constant int SYI__SERIAL_NUMBER = 4634; +%constant int SYI__MPDEV_D2 = 4636; +%constant int SYI__MPDEV_D3 = 4637; +%constant int SYI__MPDEV_D4 = 4638; +%constant int SYI__MPDEV_AFB_INTVL = 4639; +%constant int SYI__MPW_STACKPAGES = 4640; +%constant int SYI__PRESENT_CPU_MASK = 4641; +%constant int SYI__PRESENTCPU_CNT = 4642; +%constant int SYI__POWERED_CPU_MASK = 4643; +%constant int SYI__POWEREDCPU_CNT = 4644; +%constant int SYI__RMSD7 = 4645; +%constant int SYI__RMS_SEQFILE_WBH = 4646; +%constant int SYI__DCL_CTLFLAGS = 4647; +%constant int SYI__DELPRC_EXIT = 4648; +%constant int SYI__PHYMEM_CONFIG = 4649; +%constant int SYI__KTK_D1 = 4650; +%constant int SYI__KTK_D2 = 4651; +%constant int SYI__KTK_D3 = 4652; +%constant int SYI__KTK_D4 = 4653; +%constant int SYI__KTK_D5 = 4654; +%constant int SYI__KTK_D6 = 4655; +%constant int SYI__KTK_D7 = 4656; +%constant int SYI__KTK_D8 = 4657; +%constant int SYI__KTK_D9 = 4658; +%constant int SYI__KTK_D10 = 4659; +%constant int SYI__KTK_D11 = 4660; +%constant int SYI__KTK_D12 = 4661; +%constant int SYI__MIN_CPU_FEATURE_MASK = 4662; +%constant int SYI__FIBRE_SCSI_RSV1 = 4663; +%constant int SYI__DEFUID = 4664; +%constant int SYI__DEFGID = 4665; +%constant int SYI__MVSUPMSG_INTVL = 4666; +%constant int SYI__MVSUPMSG_NUM = 4667; +%constant int SYI__SHADOW_SITE_ID = 4668; +%constant int SYI__RMSD2 = 4669; +%constant int SYI__RMSD3 = 4670; +%constant int SYI__RMSD4 = 4671; +%constant int SYI__RMSD5 = 4672; +%constant int SYI__TESTING123 = 4673; +%constant int SYI__VCC_PAGESIZE = 4674; +%constant int SYI__VCC_RSVD = 4675; +%constant int SYI__RSVD_IO_1 = 4676; +%constant int SYI__RSVD_IO_2 = 4677; +%constant int SYI__RSVD_CLU_1 = 4678; +%constant int SYI__RSVD_CLU_2 = 4679; +%constant int SYI__RSVD_EXEC_1 = 4680; +%constant int SYI__RSVD_EXEC_2 = 4681; +%constant int SYI__RSVD_SECUR_1 = 4682; +%constant int SYI__RSVD_SECUR_2 = 4683; +%constant int SYI__RSVD_LAN_1 = 4684; +%constant int SYI__RSVD_LAN_2 = 4685; +%constant int SYI__SHADOW_REC_DLY = 4686; +%constant int SYI__SHADOW_D1 = 4687; +%constant int SYI__SHADOW_D2 = 4688; +%constant int SYI__SHADOW_D3 = 4689; +%constant int SYI__SHADOW_D4 = 4690; +%constant int SYI__SHADOW_D5 = 4691; +%constant int SYI__WBM_D1 = 4692; +%constant int SYI__TTY_DEFCHAR3 = 4693; +%constant int SYI__VHPT_SIZE = 4694; +%constant int SYI__SHADOW_HBMM_RTC = 4696; +%constant int SYI__FCLAN_FRAME = 4697; +%constant int SYI__MAX_PFN_64 = 4698; +%constant int SYI__PFN_MEMORY_MAP_64 = 4699; +%constant int SYI__CPU_SOCKETS = 4700; +%constant int SYI__ERLBUFFERPAG_S2 = 4701; +%constant int SYI__ERRORLOGBUFF_S2 = 4702; +%constant int SYI__SHADOW_PSM_RDLY = 4703; +%constant int SYI__SYSTEM_UUID = 4704; +%constant int SYI__PLATF_SPT_D1 = 4705; +%constant int SYI__PLATF_SPT_D2 = 4706; +%constant int SYI__PLATF_SPT_D3 = 4707; +%constant int SYI__PLATF_SPT_D4 = 4708; +%constant int SYI__PLATF_SPT_1 = 4709; +%constant int SYI__PLATF_SPT_2 = 4710; +%constant int SYI__PLATF_SPT_3 = 4711; +%constant int SYI__PLATF_SPT_4 = 4712; +%constant int SYI__SWIS_LOG = 4713; +%constant int SYI__EXECSTACKPAGES = 4714; +%constant int SYI__GB_CACHEALLMAX = 4715; +%constant int SYI__GB_DEFPERCENT = 4716; +%constant int SYI__CPU_THREADING = 4717; +%constant int SYI__CPU_POWER_MGMT = 4718; +%constant int SYI__CPU_POWER_THRSH = 4719; +%constant int SYI__SMP_CPU_BITMAP = 4720; +%constant int SYI__IO_PRCPU_BITMAP = 4721; +%constant int SYI__LOCKRMWT = 4722; +%constant int SYI__SAS_NAMING = 4723; +%constant int SYI__ACTIVE_CPU_BITMAP = 4724; +%constant int SYI__AVAIL_CPU_BITMAP = 4725; +%constant int SYI__POTENTIAL_CPU_BITMAP = 4726; +%constant int SYI__POWERED_CPU_BITMAP = 4727; +%constant int SYI__PRESENT_CPU_BITMAP = 4728; +%constant int SYI__COMPLEX_ID = 4729; +%constant int SYI__COMPLEX_NAME = 4730; +%constant int SYI__HP_ID = 4731; +%constant int SYI__HP_NAME = 4732; +%constant int SYI__CELLULAR_PLATFORM = 4733; +%constant int SYI__BOOT_DEVICE = 4734; +%constant int SYI__HP_CORE_CNT = 4735; +%constant int SYI__ACTIVE_CORE_CNT = 4736; +%constant int SYI__SSIO_SYNC_INTVL = 4737; +%constant int SYI__SCH_SOFT_OFFLD = 4738; +%constant int SYI__SCH_HARD_OFFLD = 4739; +%constant int SYI__SCHED_FLAGS = 4740; +%constant int SYI__GH_RES_CODE_S2 = 4741; +%constant int SYI__GRAPHICS_CONSOLE = 4742; +%constant int SYI__TCPIP_LOAD = 4743; +%constant int SYI__NISCS_UDP_PORT = 4744; +%constant int SYI__PHYS_SERIAL_NUMBER = 4745; +%constant int SYI__PHYS_SYSTEM_UUID = 4746; +%constant int SYI__PAGED_LAL_SIZE = 4747; +%constant int SYI__RMS_PATH_TMO = 4748; +%constant int SYI__NISCS_UDP_PKTSZ = 4749; +%constant int SYI__LASTEXE = 4750; +%constant int SYI__CPU = 8192; +%constant int SYI__BUGREBOOT = 8193; +%constant int SYI__CRDENABLE = 8194; +%constant int SYI__DUMPBUG = 8195; +%constant int SYI__BUGCHECKFATAL = 8196; +%constant int SYI__ACP_MULTIPLE = 8197; +%constant int SYI__NOAUTOCONFIG = 8198; +%constant int SYI__NOCLOCK = 8199; +%constant int SYI__NOCLUSTER = 8200; +%constant int SYI__POOLPAGING = 8201; +%constant int SYI__SBIERRENABLE = 8202; +%constant int SYI__SETTIME = 8203; +%constant int SYI__ACP_SHARE = 8204; +%constant int SYI__SYSPAGING = 8205; +%constant int SYI__UAFALTERNATE = 8206; +%constant int SYI__WRITABLESYS = 8207; +%constant int SYI__RESALLOC = 8208; +%constant int SYI__SSINHIBIT = 8209; +%constant int SYI__CONCEAL_DEVICES = 8210; +%constant int SYI__SAVEDUMP = 8211; +%constant int SYI__MOUNTMSG = 8212; +%constant int SYI__DISMOUMSG = 8213; +%constant int SYI__LOADERAPT = 8214; +%constant int SYI__LOADCHKPRT = 8215; +%constant int SYI__XCPU = 8216; +%constant int SYI__CJFLOAD = 8217; +%constant int SYI__CJFSYSRUJ = 8218; +%constant int SYI__NODE_AREA = 8219; +%constant int SYI__NODE_NUMBER = 8220; +%constant int SYI__CLASS_PROT = 8221; +%constant int SYI__CHARACTER_EMULATED = 8222; +%constant int SYI__DECIMAL_EMULATED = 8223; +%constant int SYI__D_FLOAT_EMULATED = 8224; +%constant int SYI__F_FLOAT_EMULATED = 8225; +%constant int SYI__G_FLOAT_EMULATED = 8226; +%constant int SYI__H_FLOAT_EMULATED = 8227; +%constant int SYI__LOADMTACCESS = 8228; +%constant int SYI__ACP_XQP_RES = 8229; +%constant int SYI__WRITESYSPARAMS = 8230; +%constant int SYI__LGI_BRK_TERM = 8231; +%constant int SYI__LGI_BRK_DISUSER = 8232; +%constant int SYI__ACP_REBLDSYSD = 8233; +%constant int SYI__WS_OPA0 = 8234; +%constant int SYI__NOPGFLSWP = 8235; +%constant int SYI__LOAD_SYS_IMAGES = 8237; +%constant int SYI__NISCS_CONV_BOOT = 8238; +%constant int SYI__NISCS_LOAD_PEA0 = 8239; +%constant int SYI__SA_APP = 8240; +%constant int SYI__LOAD_PWD_POLICY = 8241; +%constant int SYI__FT_ACTIVE = 8242; +%constant int SYI__WLKSYSDSK = 8244; +%constant int SYI__DBGTK_LOADED = 8245; +%constant int SYI__DAY_OVERRIDE = 8246; +%constant int SYI__DAY_SECONDARY = 8247; +%constant int SYI__CWLOGICALS = 8248; +%constant int SYI__POWEROFF = 8249; +%constant int SYI__MPDEV_ENABLE = 8250; +%constant int SYI__MPDEV_REMOTE = 8251; +%constant int SYI__MPDEV_POLLER = 8252; +%constant int SYI__LCKMGR_MODE = 8253; +%constant int SYI__LCKMGR_RSVD = 8254; +%constant int SYI__LCKMGR_CPUID = 8255; +%constant int SYI__PERSISTENT_RES = 8256; +%constant int SYI__SYSSER_LOGGING = 8257; +%constant int SYI__SCSI_ERROR_POLL = 8258; +%constant int SYI__SSI_ENABLE = 8259; +%constant int SYI__VIRTUAL_MACHINE = 8260; +%constant int SYI__NISCS_USE_LAN = 8261; +%constant int SYI__NISCS_USE_UDP = 8262; +%constant int SYI__LASTFLD = 8263; +%constant int SYI_C_SFWTYPE = 1; +%constant int SYI_C_HDWTYPE = 2; +%constant int SYI_C_LISTEND = 0; +%constant int SYI__OLDVERSION = 256; +%constant int SYI__LASTSFW = 257; +%constant int SYI__OLDCPU = 512; +%constant int SYI__OLDSID = 513; +%constant int SYI__LASTHDW = 514; +%constant int SYI_K_ENV_VECTOR_LENGTH = 16; +%constant int SYI_K_ENV_STATUS_FAILED = 0; +%constant int SYI_K_ENV_STATUS_OK = 1; +%constant int SYI_K_ENV_STATUS_NOT_PRESENT = 255; +%constant int SYI_K_ENV_STATUS_UNKNOWN = 254; +%constant int SYI_K_ARCH_OTHER = 0; +%constant int SYI_K_ARCH_VAX = 1; +%constant int SYI_K_ARCH_ALPHA = 2; +%constant int SYI_K_ARCH_IA64 = 3; diff --git a/Modules/vms/sys/sys.c b/Modules/vms/sys/sys.c new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvc3lzL3N5cy5j --- /dev/null +++ b/Modules/vms/sys/sys.c @@ -0,0 +1,809 @@ +#define __NEW_STARLET 1 +#include <starlet.h> +#include <stdio.h> +#include <string.h> +#include <stdlib.h> +#include <descrip.h> +#include <lib$routines.h> +#include <iosbdef.h> +#include <efndef.h> +#include <ssdef.h> +#include <gen64def.h> +#include <assert.h> +#include <iodef.h> + +#include "sys.h" +#include "lcl.h" + +#ifndef OKAY +#define OKAY(STATUS) (((STATUS) & 1) != 0) +#endif + +#ifndef DEF_TABNAM +#define DEF_TABNAM "LNM$FILE_DEV" +#endif + + +static const char *nil = ""; + +unsigned int _asctim(long long timaddr, char **timbuf, char cvtflg) +{ + char val[64]; + struct dsc$descriptor_s val_dsc; + unsigned int status; + unsigned short len; + + assert(timbuf); + + val_dsc.dsc$w_length = sizeof(val) - 1; + val_dsc.dsc$b_class = DSC$K_CLASS_S; + val_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + val_dsc.dsc$a_pointer = val; + + status = + sys$asctim(&len, &val_dsc, (struct _generic_64 *) &timaddr, + cvtflg); + if (OKAY(status)) { + val[len] = '\0'; + *timbuf = strdup(val); + assert(*timbuf); + } else { + *timbuf = strdup(nil); + assert(*timbuf); + } + + return (status); +} + + +unsigned int _bintim(char *timbuf, long long *timadr) +{ + struct dsc$descriptor_s tim_dsc; + + assert(timbuf); + assert(timadr); + + tim_dsc.dsc$w_length = strlen(timbuf); + tim_dsc.dsc$b_class = DSC$K_CLASS_S; + tim_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + tim_dsc.dsc$a_pointer = timbuf; + + return (sys$bintim(&tim_dsc, (struct _generic_64 *) timadr)); +} + + + +unsigned int _hiber() +{ + return (sys$hiber()); +} + +unsigned int _schdwk(unsigned int *pidadr, char *prcnam, long long daytim, long long reptim) { + unsigned int status = 0; + struct dsc$descriptor_s prcnam_dsc; + + if (prcnam) { + prcnam_dsc.dsc$w_length = strlen(prcnam); + prcnam_dsc.dsc$b_class = DSC$K_CLASS_S; + prcnam_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + prcnam_dsc.dsc$a_pointer = prcnam; + } + + status = sys$schdwk(pidadr, prcnam ? &prcnam_dsc : NULL, (struct _generic_64 *)&daytim, (struct _generic_64 *)&reptim); + + return status; +} + + +unsigned int _assign(char *devnam, unsigned short int *chan, + unsigned int acmode, char *mbxnam, unsigned int flags) +{ + struct dsc$descriptor_s dev_dsc; + struct dsc$descriptor_s mbx_dsc; + unsigned int status; + + assert(devnam); + assert(chan); + + dev_dsc.dsc$w_length = strlen(devnam); + dev_dsc.dsc$b_class = DSC$K_CLASS_S; + dev_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + dev_dsc.dsc$a_pointer = devnam; + + if (mbxnam != NULL) { + mbx_dsc.dsc$w_length = strlen(mbxnam); + mbx_dsc.dsc$b_class = DSC$K_CLASS_S; + mbx_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + mbx_dsc.dsc$a_pointer = mbxnam; + } + + status = + sys$assign(&dev_dsc, chan, acmode, mbxnam ? &mbx_dsc : NULL, + flags); + + return (status); +} + + +unsigned int _dassgn(unsigned short int chan) +{ + return (sys$dassgn(chan)); +} + + +unsigned int _cancel(unsigned short int chan) +{ + return (sys$cancel(chan)); +} + + + +unsigned int _finish_rdb(unsigned int *context) +{ + assert(context); + return (sys$finish_rdb(context)); +} + + +unsigned int _find_held(unsigned int holder, unsigned int *id, + unsigned int *attrib, unsigned int *context) +{ + unsigned int qw[2]; + assert(id); + assert(attrib); + assert(context); + + qw[0] = holder; + qw[1] = 0; + + return (sys$find_held + ((struct _generic_64 *) &qw[0], id, attrib, context)); +} + + + +unsigned int _asctoid(char *name, unsigned int *id, unsigned int *attrib) +{ + struct dsc$descriptor_s name_dsc; + + assert(name); + assert(id); + assert(attrib); + + name_dsc.dsc$w_length = strlen(name); + name_dsc.dsc$b_class = DSC$K_CLASS_S; + name_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + name_dsc.dsc$a_pointer = name; + + return (sys$asctoid(&name_dsc, id, attrib)); +} + + + +unsigned int _getmsg(unsigned int msgid, char **msg, unsigned int flags, + unsigned int *outadr) +{ + char val[128]; + struct dsc$descriptor_s val_dsc; + unsigned int status; + unsigned short len; + + assert(msg); + assert(outadr); + + val_dsc.dsc$w_length = sizeof(val) - 1; + val_dsc.dsc$b_class = DSC$K_CLASS_S; + val_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + val_dsc.dsc$a_pointer = val; + + status = + sys$getmsg(msgid, &len, &val_dsc, flags, (unsigned char *) outadr); + + if (OKAY(status)) { + val[len] = '\0'; + *msg = strdup(val); + assert(*msg); + } else { + *msg = strdup(nil); + assert(*msg); + } + + return (status); +} + + + +unsigned int _idtoasc(unsigned int id, char **nambuf, unsigned int *resid, + unsigned int *attrib, unsigned int *ctxt) +{ + char val[128]; + struct dsc$descriptor_s val_dsc; + unsigned int status; + unsigned short len; + + assert(nambuf); + assert(resid); + assert(attrib); + assert(ctxt); + + val_dsc.dsc$w_length = sizeof(val) - 1; + val_dsc.dsc$b_class = DSC$K_CLASS_S; + val_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + val_dsc.dsc$a_pointer = val; + + status = sys$idtoasc(id, &len, &val_dsc, resid, attrib, ctxt); + + if (OKAY(status)) { + val[len] = '\0'; + *nambuf = strdup(val); + assert(*nambuf); + } else { + *nambuf = strdup(nil); + assert(*nambuf); + } + + return (status); +} + + + +unsigned int _crembx(char prmflg, unsigned short int *chan, + unsigned int maxmsg, unsigned int bufquo, + unsigned int promsk, unsigned int acmode, + char *lognam, unsigned int flags) +{ + struct dsc$descriptor_s lnm_dsc; + unsigned int status; + + assert(chan); + + if (lognam != NULL) { + lnm_dsc.dsc$w_length = strlen(lognam); + lnm_dsc.dsc$b_class = DSC$K_CLASS_S; + lnm_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + lnm_dsc.dsc$a_pointer = lognam; + } + + status = sys$crembx(prmflg, + chan, + maxmsg, + bufquo, + promsk, acmode, lognam ? &lnm_dsc : NULL, flags, + 0); + + return (status); +} + + +unsigned int _delmbx(unsigned short int chan) +{ + return (sys$delmbx(chan)); +} + + +unsigned int _getrmi(void *addr) +{ + LCL_ile3 *obj = (LCL_ile3 *) addr; + unsigned long status; + IOSB iosb; + unsigned int efn; + + assert(obj); + + if (!(status = lib$get_ef(&efn))) { + return (status); + } + + if (!OKAY(status = sys$getrmi(efn, 0, 0, obj->list, &iosb, 0, 0))) { + goto hell; + } + + if (!OKAY(status = sys$synch(efn, &iosb))) { + goto hell; + } + + if (!OKAY(iosb.iosb$l_getxxi_status)) { + status = iosb.iosb$l_getxxi_status; + goto hell; + } + + hell: + lib$free_ef(&efn); + return (status); +} + + + +unsigned int _getuai(char *user, void *addr) +{ + LCL_ile3 *obj = (LCL_ile3 *) addr; + struct dsc$descriptor_s user_dsc; + + assert(obj); + assert(user); + + user_dsc.dsc$w_length = strlen(user); + user_dsc.dsc$b_class = DSC$K_CLASS_S; + user_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + user_dsc.dsc$a_pointer = user; + + return (sys$getuai(0, NULL, &user_dsc, obj->list, NULL, NULL, 0)); +} + + +unsigned int _setuai(char *user, void *addr) +{ + LCL_ile3 *obj = (LCL_ile3 *) addr; + struct dsc$descriptor_s user_dsc; + + assert(obj); + assert(user); + + user_dsc.dsc$w_length = strlen(user); + user_dsc.dsc$b_class = DSC$K_CLASS_S; + user_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + user_dsc.dsc$a_pointer = user; + + return (sys$setuai(0, NULL, &user_dsc, obj->list, NULL, NULL, 0)); +} + + + +unsigned int _getqui(unsigned short func, int *context, void *addr) +{ + LCL_ile3 *obj = (LCL_ile3 *) addr; + IOSB iosb; + unsigned long status; + + // assert(obj); + assert(context); + + status = sys$getquiw(EFN$C_ENF, func, (unsigned int *) context, obj ? obj->list : NULL, &iosb, NULL, 0); + + if (!OKAY(status)) { + return (status); + } + + if (!OKAY(iosb.iosb$l_getxxi_status)) { + status = iosb.iosb$l_getxxi_status; + } + + return (status); +} + + +unsigned int _getsyi(int *csidadr, char *node, void *addr) +{ + LCL_ile3 *obj = (LCL_ile3 *) addr; + struct dsc$descriptor_s node_dsc; + IOSB iosb; + unsigned long status; + + assert(obj); + + if (node) { + node_dsc.dsc$w_length = strlen(node); + node_dsc.dsc$b_class = DSC$K_CLASS_S; + node_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + node_dsc.dsc$a_pointer = node; + } + + status = + sys$getsyiw(EFN$C_ENF, node ? NULL : (unsigned int *) csidadr, + node ? &node_dsc : NULL, obj->list, &iosb, NULL, 0); + + if (!OKAY(status)) { + return (status); + } + + if (!OKAY(iosb.iosb$l_getxxi_status)) { + status = iosb.iosb$l_getxxi_status; + } + + return (status); +} + + + +unsigned int _getjpi(int *pidadr, char *prcnam, void *addr) +{ + LCL_ile3 *obj = (LCL_ile3 *) addr; + struct dsc$descriptor_s prcnam_dsc; + IOSB iosb; + unsigned long status; + + assert(obj); + + if (prcnam) { + prcnam_dsc.dsc$w_length = strlen(prcnam); + prcnam_dsc.dsc$b_class = DSC$K_CLASS_S; + prcnam_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + prcnam_dsc.dsc$a_pointer = prcnam; + } + + status = + sys$getjpiw(EFN$C_ENF, (unsigned int *) pidadr, + prcnam ? &prcnam_dsc : NULL, obj->list, &iosb, NULL, + 0); + + if (!OKAY(status)) { + return (status); + } + + if (!OKAY(iosb.iosb$l_getxxi_status)) { + status = iosb.iosb$l_getxxi_status; + } + + return (status); +} + + +unsigned int _getdvi(char *dev, void *addr) +{ + LCL_ile3 *obj = (LCL_ile3 *) addr; + struct dsc$descriptor_s dev_dsc; + IOSB iosb; + unsigned long status; + + assert(obj); + assert(dev); + + dev_dsc.dsc$w_length = strlen(dev); + dev_dsc.dsc$b_class = DSC$K_CLASS_S; + dev_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + dev_dsc.dsc$a_pointer = dev; + + status = sys$getdviw(EFN$C_ENF, 0, &dev_dsc, obj->list, &iosb, NULL, 0, NULL); + + if (!OKAY(status)) { + return (status); + } + + if (!OKAY(iosb.iosb$l_getxxi_status)) { + status = iosb.iosb$l_getxxi_status; + } + + return (status); +} + + +unsigned int _device_scan(char **name, char *patt, void *addr, + unsigned long long *ctxt) +{ + LCL_ile3 *obj = (LCL_ile3 *) addr; + char val[128]; + struct dsc$descriptor_s dev_dsc; + struct dsc$descriptor_s ret_dsc; + unsigned short len; + unsigned long status; + + assert(name); + assert(ctxt); + assert(addr); + + if (patt) { + dev_dsc.dsc$w_length = strlen(patt); + dev_dsc.dsc$b_class = DSC$K_CLASS_S; + dev_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + dev_dsc.dsc$a_pointer = patt; + } + + ret_dsc.dsc$w_length = sizeof(val) - 1; + ret_dsc.dsc$b_class = DSC$K_CLASS_S; + ret_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + ret_dsc.dsc$a_pointer = val; + + status = + sys$device_scan(&ret_dsc, &len, patt ? &dev_dsc : NULL, obj->list, + (struct _generic_64 *) ctxt); + + if (OKAY(status)) { + val[len] = '\0'; + *name = strdup(val); + assert(*name); + } else { + *name = strdup(nil); + assert(*name); + } + + return (status); +} + +unsigned int _dellnm(char *tabnam, char *lognam, unsigned char acmode) { + struct dsc$descriptor_s tabnam_dsc; + struct dsc$descriptor_s lognam_dsc; + assert(lognam); + + if (tabnam == NULL) { + tabnam_dsc.dsc$w_length = strlen(DEF_TABNAM); + tabnam_dsc.dsc$b_class = DSC$K_CLASS_S; + tabnam_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + tabnam_dsc.dsc$a_pointer = DEF_TABNAM; + } else { + tabnam_dsc.dsc$w_length = strlen(tabnam); + tabnam_dsc.dsc$b_class = DSC$K_CLASS_S; + tabnam_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + tabnam_dsc.dsc$a_pointer = tabnam; + } + + lognam_dsc.dsc$w_length = strlen(lognam); + lognam_dsc.dsc$b_class = DSC$K_CLASS_S; + lognam_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + lognam_dsc.dsc$a_pointer = lognam; + + return sys$dellnm(&tabnam_dsc, &lognam_dsc, &acmode); + +} + + +unsigned int _trnlnm(unsigned int attr, char *tabnam, char *lognam, + unsigned char acmode, void *addr) +{ + LCL_ile3 *obj = (LCL_ile3 *) addr; + struct dsc$descriptor_s tabnam_dsc; + struct dsc$descriptor_s lognam_dsc; + + assert(lognam); + assert(addr); + + if (tabnam == NULL) { + tabnam_dsc.dsc$w_length = strlen(DEF_TABNAM); + tabnam_dsc.dsc$b_class = DSC$K_CLASS_S; + tabnam_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + tabnam_dsc.dsc$a_pointer = DEF_TABNAM; + } else { + tabnam_dsc.dsc$w_length = strlen(tabnam); + tabnam_dsc.dsc$b_class = DSC$K_CLASS_S; + tabnam_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + tabnam_dsc.dsc$a_pointer = tabnam; + } + + lognam_dsc.dsc$w_length = strlen(lognam); + lognam_dsc.dsc$b_class = DSC$K_CLASS_S; + lognam_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + lognam_dsc.dsc$a_pointer = lognam; + + return sys$trnlnm(&attr, &tabnam_dsc, &lognam_dsc, &acmode, obj->list); +} + + + +unsigned int _forcex(int pid, char *prcnam, unsigned int code) +{ + struct dsc$descriptor_s prcnam_dsc; + + if (prcnam) { + prcnam_dsc.dsc$w_length = strlen(prcnam); + prcnam_dsc.dsc$b_class = DSC$K_CLASS_S; + prcnam_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + prcnam_dsc.dsc$a_pointer = prcnam; + } + + return (sys$forcex + (pid <= 0 ? NULL : (unsigned int *) &pid, + prcnam ? &prcnam_dsc : NULL, code)); +} + + + +unsigned int _rem_ident(unsigned int id) +{ + return (sys$rem_ident(id)); +} + + +unsigned int _add_ident(char *name, unsigned int id, unsigned int attrib, + unsigned int *resid) +{ + struct dsc$descriptor_s name_dsc; + assert(name); + + name_dsc.dsc$w_length = strlen(name); + name_dsc.dsc$b_class = DSC$K_CLASS_S; + name_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + name_dsc.dsc$a_pointer = name; + + return (sys$add_ident(&name_dsc, id, attrib, resid)); +} + + +unsigned int _rem_holder(unsigned int id, unsigned long long holder) +{ + return (sys$rem_holder(id, (struct _generic_64 *) &holder)); +} + + +unsigned int _add_holder(unsigned int id, unsigned long long holder, + unsigned int attrib) +{ + return (sys$add_holder(id, (struct _generic_64 *) &holder, attrib)); +} + + + +unsigned int _getlki(unsigned int *lkidadr, void *addr) +{ + LCL_ile3 *obj = (LCL_ile3 *) addr; + IOSB iosb; + unsigned long status; + + assert(lkidadr); + assert(obj); + + status = + sys$getlkiw(EFN$C_ENF, lkidadr, obj->list, &iosb, + NULL, 0, 0); + + if (!OKAY(status)) { + return (status); + } + + if (!OKAY(iosb.iosb$l_getxxi_status)) { + status = iosb.iosb$l_getxxi_status; + } + + return (status); +} + + +unsigned int _uicstr(long int val, char **res, int flag) +{ + char str[32], fmt[16]; + struct dsc$descriptor_s str_dsc, fmt_dsc; + unsigned short len; + unsigned long status; + char *tmp; + + assert(res); + + if (flag) { + strcpy(fmt, "!%U"); + } else { + strcpy(fmt, "!%I"); + } + + fmt_dsc.dsc$w_length = sizeof(fmt) - 1; + fmt_dsc.dsc$b_class = DSC$K_CLASS_S; + fmt_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + fmt_dsc.dsc$a_pointer = fmt; + + str_dsc.dsc$w_length = sizeof(str) - 1; + str_dsc.dsc$b_class = DSC$K_CLASS_S; + str_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + str_dsc.dsc$a_pointer = str; + + if (OKAY((status = sys$fao(&fmt_dsc, &len, &str_dsc, val)))) { + str[len] = '\0'; + *res = strdup(str); + assert(*res); + } else { + *res = strdup(nil); + assert(*res); + } + + return (status); +} + + +unsigned int _gettim(long long *timadr) +{ + assert(timadr); + return (sys$gettim((struct _generic_64 *) timadr)); +} + + +unsigned int _crelnm(unsigned int attr, char *tabnam, char *lognam, + unsigned char acmode, void *addr) +{ + LCL_ile3 *obj = (LCL_ile3 *) addr; + struct dsc$descriptor_s tabnam_dsc; + struct dsc$descriptor_s lognam_dsc; + + assert(lognam); + assert(addr); + + if (tabnam == NULL) { + tabnam_dsc.dsc$w_length = strlen(DEF_TABNAM); + tabnam_dsc.dsc$b_class = DSC$K_CLASS_S; + tabnam_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + tabnam_dsc.dsc$a_pointer = DEF_TABNAM; + } else { + tabnam_dsc.dsc$w_length = strlen(tabnam); + tabnam_dsc.dsc$b_class = DSC$K_CLASS_S; + tabnam_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + tabnam_dsc.dsc$a_pointer = tabnam; + } + + lognam_dsc.dsc$w_length = strlen(lognam); + lognam_dsc.dsc$b_class = DSC$K_CLASS_S; + lognam_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + lognam_dsc.dsc$a_pointer = lognam; + + return (sys$crelnm + (&attr, &tabnam_dsc, &lognam_dsc, &acmode, obj->list)); +} + + + + +unsigned int _show_intrusion(char *criteria, char **intruder, + unsigned long long *expires, + unsigned int *type, unsigned int *count, + unsigned int flags, unsigned int *context) +{ + unsigned int status; + struct dsc$descriptor_s criteria_dsc, intruder_dsc; + char tmp[1059]; + unsigned short len; + struct { + unsigned int type; + unsigned int count; + unsigned long long expires; + } blk; + + assert(criteria); + assert(intruder); + assert(expires); + assert(type); + assert(count); + assert(context); + + criteria_dsc.dsc$w_length = strlen(criteria); + criteria_dsc.dsc$b_class = DSC$K_CLASS_S; + criteria_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + criteria_dsc.dsc$a_pointer = criteria; + + intruder_dsc.dsc$w_length = sizeof(tmp) - 1; + intruder_dsc.dsc$b_class = DSC$K_CLASS_S; + intruder_dsc.dsc$b_dtype = DSC$K_DTYPE_T; + intruder_dsc.dsc$a_pointer = tmp; + + status = sys$show_intrusion(&criteria_dsc, &intruder_dsc, &len, &blk, flags, context); + + if (status == SS$_NORMAL) { + *expires = blk.expires; + *type = blk.type; + *count = blk.count; + tmp[len] = '\0'; + *intruder = strdup(tmp); + assert(*intruder); + } + + return (status); +} + +unsigned int _readvblk(unsigned short int chan, void *rbuffer, long long *rlen, unsigned short *iostatus, long long p3, unsigned int func_mod) { + struct _iosb iosb; + int status = SYS$QIOW( + 0, /* efn - event flag */ + chan, /* chan - channel number */ + IO$_READVBLK | func_mod, /* func - function modifier */ + &iosb, /* iosb - I/O status block */ + 0, /* astadr - AST routine */ + 0, /* astprm - AST parameter */ + rbuffer, /* p1 - input buffer */ + *rlen, /* p2 - size of buffer */ + p3, /* starting vblock */ + 0,0,0); /* p4-p6*/ + *rlen = iosb.iosb$w_bcnt; + *iostatus = iosb.iosb$w_status; + return status; +} + +unsigned int _writevblk(unsigned short int chan, void *wbuffer, long long *wlen, unsigned short *iostatus, long long p3, unsigned int func_mod) { + struct _iosb iosb; + int status = SYS$QIOW( + 0, /* efn - event flag */ + chan, /* chan - channel number */ + IO$_WRITEVBLK | func_mod, /* func - function modifier */ + &iosb, /* iosb - I/O status block */ + 0, /* astadr - AST routine */ + 0, /* astprm - AST parameter */ + wbuffer, /* p1 - input buffer */ + *wlen, /* p2 - size of buffer */ + p3, /* starting vblock */ + 0,0,0); /* p4-p6*/ + *wlen = iosb.iosb$w_bcnt; + *iostatus = iosb.iosb$w_status; + return status; +} diff --git a/Modules/vms/sys/sys.h b/Modules/vms/sys/sys.h new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvc3lzL3N5cy5o --- /dev/null +++ b/Modules/vms/sys/sys.h @@ -0,0 +1,48 @@ +#ifndef __SYS_H__ +#define __SYS_H__ + +#ifdef __cplusplus + extern "C" { +#endif + +extern unsigned int _add_holder(unsigned int, unsigned long long, unsigned int); +extern unsigned int _add_ident(char *, unsigned int, unsigned int, unsigned int *); +extern unsigned int _asctim(long long, char **, char); +extern unsigned int _asctoid(char *, unsigned int *, unsigned int *); +extern unsigned int _assign(char *, unsigned short int *OUTPUT, unsigned int, char *, unsigned int); +extern unsigned int _bintim(char *, long long *); +extern unsigned int _cancel(unsigned short int); +extern unsigned int _crelnm(unsigned int, char *, char *, unsigned char, void *); +extern unsigned int _crembx(char, unsigned short int *, unsigned int, unsigned int, unsigned int, unsigned int, char *, unsigned int); +extern unsigned int _dassgn(unsigned short int); +extern unsigned int _dellnm(char *tabnam, char *lognam, unsigned char acmode); +extern unsigned int _delmbx(unsigned short int); +extern unsigned int _device_scan(char **, char *, void *, unsigned long long *); +extern unsigned int _find_held(unsigned int, unsigned int *, unsigned int *, unsigned int *); +extern unsigned int _finish_rdb(unsigned int *); +extern unsigned int _forcex(int, char *, unsigned int); +extern unsigned int _getdvi(char *, void *); +extern unsigned int _getjpi(int *, char *, void *); +extern unsigned int _getlki(unsigned int *, void *); +extern unsigned int _getmsg(unsigned int, char **, unsigned int, unsigned int *); +extern unsigned int _getqui(unsigned short, int *, void *); +extern unsigned int _getrmi(void *); +extern unsigned int _getsyi(int *, char *, void *); +extern unsigned int _gettim(long long *); +extern unsigned int _getuai(char *, void *); +extern unsigned int _hiber(); +extern unsigned int _idtoasc(unsigned int, char **, unsigned int *, unsigned int *, unsigned int *); +extern unsigned int _readvblk(unsigned short int chan, void *rbuffer, long long *rlen, unsigned short *iostatus, long long p3, unsigned int func_mod); +extern unsigned int _rem_holder(unsigned int, unsigned long long); +extern unsigned int _rem_ident(unsigned int); +extern unsigned int _schdwk(unsigned int *INOUT, char *, long long daytim, long long reptim); +extern unsigned int _setuai(char *, void *); +extern unsigned int _show_intrusion(char *, char **, unsigned long long *, unsigned int *, unsigned int *, unsigned int, unsigned int *); +extern unsigned int _trnlnm(unsigned int, char *, char *, unsigned char, void *); +extern unsigned int _uicstr(long int, char **, int); +extern unsigned int _writevblk(unsigned short int chan, void *wbuffer, long long *wlen, unsigned short *iostatus, long long p3, unsigned int func_mod); + +#ifdef __cplusplus + } +#endif +#endif diff --git a/Modules/vms/sys/sys.i b/Modules/vms/sys/sys.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvc3lzL3N5cy5p --- /dev/null +++ b/Modules/vms/sys/sys.i @@ -0,0 +1,149 @@ +%module sys + +%{ +#include "sys.h" +%} + +%include "typemaps.i" +%include <cstring.i> +%cstring_output_allocate(char **OUTPUT, free(*$1)); + +%begin %{ +#define PY_SSIZE_T_CLEAN +%} + +%exception { + Py_BEGIN_ALLOW_THREADS + $action + Py_END_ALLOW_THREADS +} + +%typemap(default) unsigned int func_mod { + $1 = 0; +} + +%typemap(default) long long reptim { + $1 = 0; +} + +// typemap for an outgoing buffer +%typemap(in) (void *wbuffer, long long *wlen) (long long w_len){ + if (!PyBytes_Check($input)) { + PyErr_SetString(PyExc_ValueError, "Expecting a bytes"); + return NULL; + } + w_len = PyBytes_Size($input); + $1 = (void *) PyBytes_AsString($input); + $2 = &w_len; +} + +%typemap(argout) (void *wbuffer, long long *wlen) { + $result = SWIG_Python_AppendOutput($result, Py_BuildValue("l", *$2)); +} + +// typemap for an incoming buffer +%typemap(in) (void *rbuffer, long long *rlen) (long long r_len){ + if (!PyInt_Check($input)) { + PyErr_SetString(PyExc_ValueError, "Expecting an integer"); + return NULL; + } + r_len = PyInt_AsLong($input); + if (r_len < 0) { + PyErr_SetString(PyExc_ValueError, "Positive integer expected"); + return NULL; + } + $1 = (void *) malloc(r_len); + $2 = &r_len; +} + +%typemap(freearg) (void *rbuffer, long long *rlen) { + free($1); +} + +%typemap(argout) (void *rbuffer, long long *rlen) { + $result = SWIG_Python_AppendOutput($result, Py_BuildValue("y#", $1, (Py_ssize_t)*$2)); +} + +%typemap(in, numinputs=0) unsigned short *iostatus (unsigned short io_status){ + io_status = 0; + $1 = &io_status; +} + +%typemap(argout) (unsigned short *iostatus) { + $result = SWIG_Python_AppendOutput($result, Py_BuildValue("H", *$1)); +} + +%rename(add_holder) _add_holder; +%rename(add_ident) _add_ident; +%rename(asctim) _asctim; +%rename(asctoid) _asctoid; +%rename(assign) _assign; +%rename(bintim) _bintim; +%rename(cancel) _cancel; +%rename(crelnm) _crelnm; +%rename(crembx) _crembx; +%rename(dassgn) _dassgn; +%rename(dellnm) _dellnm; +%rename(delmbx) _delmbx; +%rename(device_scan) _device_scan; +%rename(find_held) _find_held; +%rename(finish_rdb) _finish_rdb; +%rename(forcex) _forcex; +%rename(getdvi) _getdvi; +%rename(getjpi) _getjpi; +%rename(getlki) _getlki; +%rename(getmsg) _getmsg; +%rename(getqui) _getqui; +%rename(getrmi) _getrmi; +%rename(getsyi) _getsyi; +%rename(gettim) _gettim; +%rename(getuai) _getuai; +%rename(hiber) _hiber; +%rename(idtoasc) _idtoasc; +%rename(readvblk) _readvblk; +%rename(rem_holder) _rem_holder; +%rename(rem_ident) _rem_ident; +%rename(schdwk) _schdwk; +%rename(setuai) _setuai; +%rename(show_intrusion) _show_intrusion; +%rename(trnlnm) _trnlnm; +%rename(uicstr) _uicstr; +%rename(writevblk) _writevblk; + +extern unsigned int _add_holder(unsigned int, unsigned long long, unsigned int); +extern unsigned int _add_ident(char *, unsigned int, unsigned int, unsigned int *OUTPUT); +extern unsigned int _asctim(long long, char **OUTPUT, char); +extern unsigned int _asctoid(char *, unsigned int *OUTPUT, unsigned int *OUTPUT); +extern unsigned int _assign(char *, unsigned short int *OUTPUT, unsigned int, char *, unsigned int); +extern unsigned int _bintim(char *, long long *OUTPUT); +extern unsigned int _cancel(unsigned short int); +extern unsigned int _crelnm(unsigned int, char *, char *, unsigned char, void *); +extern unsigned int _crembx(char, unsigned short int *OUTPUT, unsigned int, unsigned int, unsigned int, unsigned int, char *, unsigned int); +extern unsigned int _dassgn(unsigned short int); +extern unsigned int _dellnm(char *tabnam, char *lognam, unsigned char acmode); +extern unsigned int _delmbx(unsigned short int); +extern unsigned int _device_scan(char **OUTPUT, char *, void *, unsigned long long *INOUT); +extern unsigned int _find_held(unsigned int, unsigned int *OUTPUT, unsigned int *OUTPUT, unsigned int *INOUT); +extern unsigned int _finish_rdb(unsigned int *INPUT); +extern unsigned int _forcex(int, char *, unsigned int); +extern unsigned int _getdvi(char *, void *); +extern unsigned int _getjpi(int *INOUT, char *, void *); +extern unsigned int _getlki(unsigned int *INOUT, void *); +extern unsigned int _getmsg(unsigned int, char **OUTPUT, unsigned int, unsigned int *OUTPUT); +extern unsigned int _getqui(unsigned short, int *INOUT, void *); +extern unsigned int _getrmi(void *); +extern unsigned int _getsyi(int *INOUT, char *, void *); +extern unsigned int _gettim(long long *OUTPUT); +extern unsigned int _getuai(char *, void *); +extern unsigned int _hiber(); +extern unsigned int _idtoasc(unsigned int, char **OUTPUT, unsigned int *OUTPUT, unsigned int *OUTPUT, unsigned int *INOUT); +extern unsigned int _readvblk(unsigned short int chan, void *rbuffer, long long *rlen, unsigned short *iostatus, long long p3, unsigned int func_mod); +extern unsigned int _rem_holder(unsigned int, unsigned long long); +extern unsigned int _rem_ident(unsigned int); +extern unsigned int _schdwk(unsigned int *INOUT, char *, long long daytim, long long reptim); +extern unsigned int _setuai(char *, void *); +extern unsigned int _show_intrusion(char *, char **OUTPUT, unsigned long long *OUTPUT, unsigned int *OUTPUT, unsigned int *OUTPUT, unsigned int, unsigned int *INOUT); +extern unsigned int _trnlnm(unsigned int, char *, char *, unsigned char, void *); +extern unsigned int _uicstr(long int, char **OUTPUT, int); +extern unsigned int _writevblk(unsigned short int chan, void *wbuffer, long long *wlen, unsigned short *iostatus, long long p3, unsigned int func_mod); + diff --git a/Modules/vms/uafdef/uafdef.i b/Modules/vms/uafdef/uafdef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvdWFmZGVmL3VhZmRlZi5p --- /dev/null +++ b/Modules/vms/uafdef/uafdef.i @@ -0,0 +1,57 @@ +%module uafdef + +%constant int UAF_C_USER_ID = 1; +%constant int UAF_C_VERSION1 = 1; +%constant int UAF_C_KEYED_PART = 52; +%constant int UAF_C_MAX_PWD_LENGTH = 32; +%constant int UAF_K_MAX_PWD_LENGTH = 32; +%constant int UAF_C_AD_II = 0; +%constant int UAF_C_PURDY = 1; +%constant int UAF_C_PURDY_V = 2; +%constant int UAF_C_PURDY_S = 3; +%constant int UAF_K_CURRENT_ALGORITHM = 3; +%constant int UAF_C_CURRENT_ALGORITHM = 3; +%constant int UAF_C_PREFERED_ALGORITHM = 127; +%constant int UAF_K_PREFERED_ALGORITHM = 127; +%constant int UAF_C_PREFERRED_ALGORITHM = 127; +%constant int UAF_K_PREFERRED_ALGORITHM = 127; +%constant int UAF_C_CUST_ALGORITHM = 128; +%constant int UAF_K_CUST_ALGORITHM = 128; +%constant int UAF_K_FIXED = 644; +%constant int UAF_C_FIXED = 644; +%constant int UAF_K_LENGTH = 1412; +%constant int UAF_C_LENGTH = 1412; +%constant int UAF_S_UAFDEF = 1412; +%constant int UAF_S_UAF = 1412; +%constant int UAF_S_USERNAME = 32; +%constant int UAF_S_PARENT_ID = 8; +%constant int UAF_S_ACCOUNT = 32; +%constant int UAF_S_OWNER = 32; +%constant int UAF_S_DEFDEV = 32; +%constant int UAF_S_DEFDIR = 64; +%constant int UAF_S_LGICMD = 64; +%constant int UAF_S_DEFCLI = 32; +%constant int UAF_S_CLITABLES = 32; +%constant int UAF_S_PWD = 8; +%constant int UAF_S_PWD2 = 8; +%constant int UAF_S_EXPIRATION = 8; +%constant int UAF_S_PWD_LIFETIME = 8; +%constant int UAF_S_PWD_DATE = 8; +%constant int UAF_S_PWD2_DATE = 8; +%constant int UAF_S_LASTLOGIN_I = 8; +%constant int UAF_S_LASTLOGIN_N = 8; +%constant int UAF_S_PRIV = 8; +%constant int UAF_S_DEF_PRIV = 8; +%constant int UAF_S_MIN_CLASS = 20; +%constant int UAF_S_MAX_CLASS = 20; +%constant int UAF_S_NETWORK_ACCESS_P = 3; +%constant int UAF_S_NETWORK_ACCESS_S = 3; +%constant int UAF_S_BATCH_ACCESS_P = 3; +%constant int UAF_S_BATCH_ACCESS_S = 3; +%constant int UAF_S_LOCAL_ACCESS_P = 3; +%constant int UAF_S_LOCAL_ACCESS_S = 3; +%constant int UAF_S_DIALUP_ACCESS_P = 3; +%constant int UAF_S_DIALUP_ACCESS_S = 3; +%constant int UAF_S_REMOTE_ACCESS_P = 3; +%constant int UAF_S_REMOTE_ACCESS_S = 3; +%constant int UAF_S_DEF_CLASS = 20; diff --git a/Modules/vms/uaidef/uaidef.i b/Modules/vms/uaidef/uaidef.i new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_TW9kdWxlcy92bXMvdWFpZGVmL3VhaWRlZi5p --- /dev/null +++ b/Modules/vms/uaidef/uaidef.i @@ -0,0 +1,116 @@ +%module uaidef + +%constant int UAI__RTYPE = 1; +%constant int UAI__VERSION = 2; +%constant int UAI__USRDATOFF = 3; +%constant int UAI__USERNAME = 4; +%constant int UAI__USERNAME_TAG = 5; +%constant int UAI__UIC = 6; +%constant int UAI__MEM = 7; +%constant int UAI__GRP = 8; +%constant int UAI__SUB_ID = 9; +%constant int UAI__PARENT_ID = 10; +%constant int UAI__ACCOUNT = 11; +%constant int UAI__OWNER = 12; +%constant int UAI__DEFDEV = 13; +%constant int UAI__DEFDIR = 14; +%constant int UAI__LGICMD = 15; +%constant int UAI__DEFCLI = 16; +%constant int UAI__CLITABLES = 17; +%constant int UAI__PWD = 18; +%constant int UAI__PWD2 = 19; +%constant int UAI__LOGFAILS = 20; +%constant int UAI__SALT = 21; +%constant int UAI__ENCRYPT = 22; +%constant int UAI__ENCRYPT2 = 23; +%constant int UAI__PWD_LENGTH = 24; +%constant int UAI__EXPIRATION = 25; +%constant int UAI__PWD_LIFETIME = 26; +%constant int UAI__PWD_DATE = 27; +%constant int UAI__PWD2_DATE = 28; +%constant int UAI__LASTLOGIN_I = 29; +%constant int UAI__LASTLOGIN_N = 30; +%constant int UAI__PRIV = 31; +%constant int UAI__DEF_PRIV = 32; +%constant int UAI__MIN_CLASS = 33; +%constant int UAI__MAX_CLASS = 34; +%constant int UAI__FLAGS = 35; +%constant int UAI__NETWORK_ACCESS_P = 36; +%constant int UAI__NETWORK_ACCESS_S = 37; +%constant int UAI__BATCH_ACCESS_P = 38; +%constant int UAI__BATCH_ACCESS_S = 39; +%constant int UAI__LOCAL_ACCESS_P = 40; +%constant int UAI__LOCAL_ACCESS_S = 41; +%constant int UAI__DIALUP_ACCESS_P = 42; +%constant int UAI__DIALUP_ACCESS_S = 43; +%constant int UAI__REMOTE_ACCESS_P = 44; +%constant int UAI__REMOTE_ACCESS_S = 45; +%constant int UAI__PRIMEDAYS = 46; +%constant int UAI__PRI = 47; +%constant int UAI__QUEPRI = 48; +%constant int UAI__MAXJOBS = 49; +%constant int UAI__MAXACCTJOBS = 50; +%constant int UAI__MAXDETACH = 51; +%constant int UAI__PRCCNT = 52; +%constant int UAI__BIOLM = 53; +%constant int UAI__DIOLM = 54; +%constant int UAI__TQCNT = 55; +%constant int UAI__ASTLM = 56; +%constant int UAI__ENQLM = 57; +%constant int UAI__FILLM = 58; +%constant int UAI__SHRFILLM = 59; +%constant int UAI__WSQUOTA = 60; +%constant int UAI__DFWSCNT = 61; +%constant int UAI__WSEXTENT = 62; +%constant int UAI__PGFLQUOTA = 63; +%constant int UAI__CPUTIM = 64; +%constant int UAI__BYTLM = 65; +%constant int UAI__PBYTLM = 66; +%constant int UAI__JTQUOTA = 67; +%constant int UAI__PROXY_LIM = 68; +%constant int UAI__PROXIES = 69; +%constant int UAI__ACCOUNT_LIM = 70; +%constant int UAI__ACCOUNTS = 71; +%constant int UAI__USER_DATA = 72; +%constant int UAI__PASSWORD = 73; +%constant int UAI__PASSWORD2 = 74; +%constant int UAI__DEF_CLASS = 75; +%constant int UAI__AUDIT_FLAGS = 76; +%constant int UAI__MAX_ITEM_CODE = 77; +%constant int UAI__DEFCHARGE_CODE = 11; +%constant int UAI_C_AD_II = 0; +%constant int UAI_C_PURDY = 1; +%constant int UAI_C_PURDY_V = 2; +%constant int UAI_C_PURDY_S = 3; +%constant int UAI_C_PREFERED_ALGORITHM = 127; +%constant int UAI_C_PREFERRED_ALGORITHM = 127; +%constant int UAI_C_CUST_ALGORITHM = 128; +%constant int UAI_C_MAX_PWD_LENGTH = 32; +%constant int UAI_M_DISCTLY = 0x1L; +%constant int UAI_M_DEFCLI = 0x2L; +%constant int UAI_M_LOCKPWD = 0x4L; +%constant int UAI_M_RESTRICTED = 0x8L; +%constant int UAI_M_DISACNT = 0x10L; +%constant int UAI_M_DISWELCOM = 0x20L; +%constant int UAI_M_DISMAIL = 0x40L; +%constant int UAI_M_NOMAIL = 0x80L; +%constant int UAI_M_GENPWD = 0x100L; +%constant int UAI_M_PWD_EXPIRED = 0x200L; +%constant int UAI_M_PWD2_EXPIRED = 0x400L; +%constant int UAI_M_AUDIT = 0x800L; +%constant int UAI_M_DISREPORT = 0x1000L; +%constant int UAI_M_DISRECONNECT = 0x2000L; +%constant int UAI_M_AUTOLOGIN = 0x4000L; +%constant int UAI_M_DISFORCE_PWD_CHANGE = 0x8000L; +%constant int UAI_M_CAPTIVE = 0x10000L; +%constant int UAI_M_DISIMAGE = 0x20000L; +%constant int UAI_M_DISPWDDIC = 0x40000L; +%constant int UAI_M_DISPWDHIS = 0x80000L; +%constant int UAI_M_DEFCLSVAL = 0x100000L; +%constant int UAI_M_EXTAUTH = 0x200000L; +%constant int UAI_M_MIGRATEPWD = 0x400000L; +%constant int UAI_M_VMSAUTH = 0x800000L; +%constant int UAI_M_DISPWDSYNCH = 0x1000000L; +%constant int UAI_M_PWDMIX = 0x2000000L; +%constant int UAI_S_FLAGS = 4; +%constant int UAI_S_PRIMEDAYS = 1; diff --git a/Python3.com b/Python3.com new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_UHl0aG9uMy5jb20= --- /dev/null +++ b/Python3.com @@ -0,0 +1,45 @@ +$ if "''P1'" .eqs. "" +$ then +$ CONFIG := DEBUG +$ else +$ CONFIG := 'P1' +$ endif +$ write sys$output "Prepare for ''CONFIG'" +$ +$ com_nam = f$environment("procedure") +$ com_dir = f$parse(com_nam,,,"directory") +$ com_dev = f$parse(com_nam,,,"device") +$ com_pat = com_dev + com_dir +$ bld_pat = com_dev + com_dir - "]" + ".out.''CONFIG']" +$ inc_pat = com_dev + com_dir - "]" + ".include]" +$ cpy_pat = com_dev + com_dir - "]" + ".include.cpython]" +$ lib_pat = com_dev + com_dir - "]" + ".lib...]" +$ vms_py_pat = com_dev + com_dir - "]" + ".modules.vms...]" +$ rdb_py_pat = com_dev + com_dir - "]" + ".modules.rdb...]" +$ vms_pat = com_dev + com_dir - "]" + ".vms]" +$ dyn_pat = com_dev + com_dir - "]" + ".out.'CONFIG'.lib-dynload...]" +$ cnf_pat = com_dev + com_dir - "]" + ".build]" +$ @'com_pat'Python3_names.com +$ +$ pipe delete/tree python$root:[000000...]*.*;* | copy SYS$INPUT nl: +$ +$ backup 'bld_pat'python3.exe python$root:[bin] +$ +$ backup 'inc_pat'*.h python$root:[include] +$ backup 'cpy_pat'*.h python$root:[include.cpython] +$ backup 'com_pat'pyconfig.h python$root:[include] +$ backup 'com_pat'py_vms.h python$root:[include] +$ +$ backup 'lib_pat'*.* python$root:[lib.python3^.8...] +$ backup 'vms_py_pat'*.py python$root:[lib.python3^.8.vms] +$ backup 'rdb_py_pat'*.py python$root:[lib.python3^.8] +$ backup 'bld_pat'python$shr.exe python$root:[lib] +$ +$ backup 'vms_pat'python$define_root.com python$root:[000000] +$ backup 'vms_pat'python$pcsi_preconfigure.com python$root:[000000] +$ backup 'vms_pat'python$startup.com python$root:[000000] +$ backup 'vms_pat'python$shutdown.com python$root:[000000] +$ +$ backup 'dyn_pat'*.* python$root:[lib.python3^.8.lib-dynload...]*.* +$ ! next file must be present +$ backup 'cnf_pat'_sysconfigdata__OpenVMS_cpython-38-ia64-openvms.py python$root:[lib.python3^.8] diff --git a/Python3.mms b/Python3.mms new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_UHl0aG9uMy5tbXM= --- /dev/null +++ b/Python3.mms @@ -0,0 +1,2321 @@ +! MMS/EXT/DESCR=Python3.mms/MACRO=("OUTDIR=OUT","CONFIG=DEBUG") + +! define output folder +.IF OUTDIR +! defined - ok +.ELSE +! not defined - define as OUT +OUTDIR = OUT +.ENDIF + +! check DEBUG or RELEASE +.IF CONFIG +! defined - ok +.ELSE +! not defined - define as DEBUG +CONFIG = DEBUG +.ENDIF + +.IF $(CONFIG) .EQ DEBUG +! debug +OPT_Q = /DEBUG/NOOPTIMIZE/LIST=$(MMS$TARGET_NAME) +OPT_DEF = _DEBUG +OUT_DIR = $(OUTDIR).$(CONFIG) +OBJ_DIR = $(OUT_DIR).OBJ +LINKFLAGS = /DEBUG/MAP=[.$(OUT_DIR)]$(NOTDIR $(MMS$TARGET_NAME)) +PYTHON$SHR_OPT = PYTHON$SHR_DBG +.ELSE +! release +OPT_Q = /NODEBUG/OPTIMIZE/NOLIST +OPT_DEF = _NDEBUG +OUT_DIR = $(OUTDIR).$(CONFIG) +OBJ_DIR = $(OUT_DIR).OBJ +LINKFLAGS = /NODEBUG/NOMAP/NOTRACEBACK +PYTHON$SHR_OPT = PYTHON$SHR +.ENDIF + +DYNLOAD_DIR = lib-dynload + +DYNLOADFILE = dynload_shlib +PLATFORM = OpenVMS +SOABI = cpython-38-ia64-openvms + +!PY_CFLAGS_Q = $(OPT_Q)/NAMES=(AS_IS,SHORTENED)/WARNINGS=DISABLE=(NONSTANDCAST,NOTINCRTL,MIXFUNCVOID,QUESTCOMPARE,QUESTCOMPARE1) +PY_CFLAGS_Q = $(OPT_Q)/NAMES=(AS_IS,SHORTENED)/WARNINGS=WARNINGS=ALL +!PY_CXXFLAGS_Q = $(OPT_Q)/NAMES=(AS_IS,SHORTENED)/WARNINGS=DISABLE=(TRAILCOMMA,REFSTAT,NOCTOBUTCONREFM,CONPTRLOSBIT) + +PY_CFLAGS_DEF = $(OPT_DEF),_USE_STD_STAT,__STDC_FORMAT_MACROS +PY_CFLAGS_INC = [],[.Include],[.Include.internal],oss$root:[include],[.vms] +PY_CFLAGS = $(PY_CFLAGS_Q)/DEFINE=($(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=($(PY_CFLAGS_INC)) + +PY_CFLAGS_OSF = $(PY_CFLAGS_Q)/DEFINE=(_OSF_SOURCE,$(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=($(PY_CFLAGS_INC)) +PY_CFLAGS_OSF_ILE = $(PY_CFLAGS_Q)/DEFINE=(_OSF_SOURCE,$(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=([.modules.vms.ile3],$(PY_CFLAGS_INC)) + +PY_CFLAGS_SQL = $(PY_CFLAGS)/FIRST=[.vms]vms_sqlite3_first.h + +PY_CFLAGS_USE_ZLIB = $(PY_CFLAGS_Q)/DEFINE=(USE_ZLIB_CRC32,$(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=($(PY_CFLAGS_INC)) + +PY_CFLAGS_EXPAT = $(PY_CFLAGS_Q)/DEFINE=(HAVE_EXPAT_CONFIG_H,XML_POOR_ENTROPY,$(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=([.Modules.expat],$(PY_CFLAGS_INC)) +PY_CFLAGS_EXPAT_ELEM = $(PY_CFLAGS_Q)/DEFINE=(HAVE_EXPAT_CONFIG_H,USE_PYEXPAT_CAPI,XML_POOR_ENTROPY,$(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=([.Modules.expat],$(PY_CFLAGS_INC)) + +PY_CFLAGS_DECIMAL = $(PY_CFLAGS_Q)/DEFINE=(CONFIG_32,ANSI,$(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=([.Modules._decimal.libmpdec],$(PY_CFLAGS_INC)) + +PY_CFLAGS_MULT = $(PY_CFLAGS_Q)/DEFINE=($(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=([.Modules._multiprocessing],$(PY_CFLAGS_INC)) + +PY_CORE_MODULE_CFLAGS = $(PY_CFLAGS_Q)/DEFINE=("Py_BUILD_CORE_MODULE",$(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=($(PY_CFLAGS_INC)) + +PY_CORE_BUILTIN_CFLAGS = $(PY_CFLAGS_Q)/DEFINE=("Py_BUILD_CORE_BUILTIN",$(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=($(PY_CFLAGS_INC)) +PY_CORE_CFLAGS = $(PY_CFLAGS_Q)/DEFINE=("Py_BUILD_CORE",$(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=($(PY_CFLAGS_INC)) + +GETPATH_DEF = PYTHONPATH="""""",PREFIX="""/usr/local""",EXEC_PREFIX="""/usr/local""",VERSION="""3.8""",VPATH="""""" +PY_CORE_CFLAGS_GETPATH = $(PY_CFLAGS_Q)/DEFINE=("Py_BUILD_CORE",$(GETPATH_DEF),$(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=($(PY_CFLAGS_INC)) + +SOABI_DEF = SOABI="""$(SOABI)""" +PY_CORE_CFLAGS_SHLIB = $(PY_CFLAGS_Q)/DEFINE=("Py_BUILD_CORE",$(SOABI_DEF),$(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=($(PY_CFLAGS_INC)) + +HPUX_DEF = SHLIB_EXT=""".EXE""" +PY_CORE_CFLAGS_HPUX = $(PY_CFLAGS_Q)/DEFINE=("Py_BUILD_CORE",$(HPUX_DEF),$(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=($(PY_CFLAGS_INC)) + +SYSMODULE_DEF = ABIFLAGS="""""",MULTIARCH="""$(SOABI)""" +PY_CORE_CFLAGS_SYSMODULE = $(PY_CFLAGS_Q)/DEFINE=("Py_BUILD_CORE",$(SYSMODULE_DEF),$(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=($(PY_CFLAGS_INC)) + +GETPLATFORM_DEF = PLATFORM="""$(PLATFORM)""" +PY_CORE_CFLAGS_GETPLATFORM = $(PY_CFLAGS_Q)/DEFINE=("Py_BUILD_CORE",$(GETPLATFORM_DEF),$(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=($(PY_CFLAGS_INC)) + +IO_INC = [.Modules._io] +PY_CORE_BUILTIN_CFLAGS_IO = $(PY_CFLAGS_Q)/DEFINE=("Py_BUILD_CORE_BUILTIN",$(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=($(PY_CFLAGS_INC),$(IO_INC)) + +PY_OSF_CFLAGS = $(PY_CFLAGS_Q)/DEFINE=(_OSF_SOURCE,$(PY_CFLAGS_DEF))/INCLUDE_DIRECTORY=($(PY_CFLAGS_INC)) + +PY_CFLAGS_DTR = $(PY_CFLAGS_Q)/DEFINE=($(PY_CFLAGS_DEF),__PYTHON)/INCLUDE_DIRECTORY=($(PY_CFLAGS_INC),dtr$library) + +.FIRST + ! defines for nested includes, like: + ! #include "clinic/transmogrify.h.h" + define clinic [.Objects.clinic],[.Python.clinic],[.Modules.clinic],[.Modules._io.clinic],[.Modules.cjkcodecs.clinic],[.Objects.stringlib.clinic],[.Modules._blake2.clinic],[.Modules._sha3.clinic],[.Modules._multiprocessing.clinic] + define stringlib [.Objects.stringlib] + define modules [.Modules] + define readline oss$root:[include.readline] + define lzma oss$root:[include.lzma] + define cpython [.Include.cpython] + define internal [.Include.internal] + define _ssl [.Modules._ssl] + define impl [.Modules._blake2.impl] + define kcp [.Modules._sha3.kcp] + define ctypes [.Modules._ctypes] + ! SWIG + swig :== $swig$root:[bin]swig.exe + ! OPENSSL 111 + define openssl ssl111$include: + ! names + BUILD_OUT_DIR = F$ENVIRONMENT("DEFAULT")-"]"+".$(OUT_DIR).]" + BUILD_OBJ_DIR = F$ENVIRONMENT("DEFAULT")-"]"+".$(OBJ_DIR).]" + define /trans=concealed python$build_out 'BUILD_OUT_DIR' + define /trans=concealed python$build_obj 'BUILD_OBJ_DIR' + ! SQL + sqlmod :== mcr sql$mod + +.SUFFIXES +.SUFFIXES .EXE .OLB .OBJ .OBM .OBD .OBS .C + +.C.OBJ + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +.OBJ.OLB + @ IF F$SEARCH("$(MMS$TARGET)") .EQS. "" - + THEN $(LIBR)/CREATE $(MMS$TARGET) + $(LIBR) $(MMS$TARGET) $(MMS$SOURCE) + +! modules hack +.C.OBM + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +.OBM.EXE + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +.C.OBD + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CFLAGS_DECIMAL) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +.OBD.EXE + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +.C.OBS + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CFLAGS_OSF) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +.OBS.EXE + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +LIBDYNLOAD_VMS = - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_accdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_acldef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_acrdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_armdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_brkdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_capdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_chpdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_ciadef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_clidef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_cmbdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_cvtfnmdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_dcdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_decc.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_dmtdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_dpsdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_dscdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_dvidef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_dvsdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_efndef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_eradef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_fabdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_fdldef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_fpdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_fscndef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_iccdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_ile3.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_iledef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_impdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_initdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_iodef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_issdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_jbcmsgdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_jpidef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_kgbdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_lckdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_lib.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_libclidef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_libdtdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_libfisdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_lkidef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_lnmdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_maildef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_mntdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_nsadef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_ossdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_pcbdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_ppropdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_pqldef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_prcdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_prdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_prvdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_prxdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_pscandef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_psldef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_pxbdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_quidef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_rabdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_regdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_rmidef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_rms.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_rmsdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_rsdmdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_sdvdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_sjcdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_ssdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_statedef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_stenvdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_stsdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_syidef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_sys.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_uafdef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_uaidef.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_rdb.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_rec.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_dtr.exe + +LIBDYNLOAD = - +$(LIBDYNLOAD_VMS) - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_asyncio.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_bisect.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_blake2.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_bz2.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_codecs_cn.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_codecs_hk.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_codecs_iso2022.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_codecs_jp.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_codecs_kr.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_codecs_tw.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_contextvars.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_crypt.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_csv.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_ctypes.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_ctypes_test.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_datetime.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_decimal.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_elementtree.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_gdbm.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_hashlib.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_heapq.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_json.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_lsprof.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_lzma.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_md5.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_multibytecodec.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_multiprocessing.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_opcode.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_pickle.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_posixshmem.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_posixsubprocess.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_queue.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_random.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_sha1.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_sha256.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_sha3.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_sha512.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_socket.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_sqlite3.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_ssl.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_statistics.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_struct.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_testbuffer.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_testcapi.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_testimportmultiple.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_testinternalcapi.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_testmultiphase.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_xxsubinterpreters.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]_xxtestfuzz.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]array.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]audioop.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]binascii.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]cmath.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]fcntl.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]grp.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]math.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]mmap.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]parser.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]pyexpat.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]readline.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]select.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]syslog.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]unicodedata.exe - +[.$(OUT_DIR).$(DYNLOAD_DIR)]zlib.exe +! [.$(OUT_DIR).$(DYNLOAD_DIR)]_uuid.exe + +TARGET : [.$(OUT_DIR)]python3.exe [.$(OUT_DIR)]_testembed.exe $(LIBDYNLOAD) + ! TARGET BUILT + +CLEAN : + del/tree [.$(OUT_DIR)...]*.*;* + +pyconfig.h : [.vms]pyconfig.h + copy [.vms]pyconfig.h [] + +py_vms.h : [.vms]py_vms.h + copy [.vms]py_vms.h [] + +IO_HEADERS = - +[.Modules._io]_iomodule.h + +BYTESTR_HEADERS = - +[.Objects.stringlib]count.h - +[.Objects.stringlib]ctype.h - +[.Objects.stringlib]fastsearch.h - +[.Objects.stringlib]find.h - +[.Objects.stringlib]join.h - +[.Objects.stringlib]partition.h - +[.Objects.stringlib]split.h - +[.Objects.stringlib]stringdefs.h - +[.Objects.stringlib]transmogrify.h + +UNICODE_HEADERS = - +[.Objects.stringlib]asciilib.h - +[.Objects.stringlib]codecs.h - +[.Objects.stringlib]count.h - +[.Objects.stringlib]fastsearch.h - +[.Objects.stringlib]find.h - +[.Objects.stringlib]find_max_char.h - +[.Objects.stringlib]localeutil.h - +[.Objects.stringlib]partition.h - +[.Objects.stringlib]replace.h - +[.Objects.stringlib]split.h - +[.Objects.stringlib]ucs1lib.h - +[.Objects.stringlib]ucs2lib.h - +[.Objects.stringlib]ucs4lib.h - +[.Objects.stringlib]undef.h - +[.Objects.stringlib]unicode_format.h - +[.Objects.stringlib]unicodedefs.h + +PARSER_HEADERS = - +[.Include]grammar.h - +[.Include]parsetok.h - +[.Parser]parser.h - +[.Parser]tokenizer.h + +PYTHON_HEADERS = - +[.Include]Python.h - +[.Include]abstract.h - +[.Include]asdl.h - +[.Include]ast.h - +[.Include]bitset.h - +[.Include]bltinmodule.h - +[.Include]boolobject.h - +[.Include]bytearrayobject.h - +[.Include]bytes_methods.h - +[.Include]bytesobject.h - +[.Include]cellobject.h - +[.Include]ceval.h - +[.Include]classobject.h - +[.Include]code.h - +[.Include]codecs.h - +[.Include]compile.h - +[.Include]complexobject.h - +[.Include]context.h - +[.Include]descrobject.h - +[.Include]dictobject.h - +[.Include]dtoa.h - +[.Include]dynamic_annotations.h - +[.Include]enumobject.h - +[.Include]errcode.h - +[.Include]eval.h - +[.Include]fileobject.h - +[.Include]fileutils.h - +[.Include]floatobject.h - +[.Include]frameobject.h - +[.Include]funcobject.h - +[.Include]genobject.h - +[.Include]import.h - +[.Include]interpreteridobject.h - +[.Include]intrcheck.h - +[.Include]iterobject.h - +[.Include]listobject.h - +[.Include]longintrepr.h - +[.Include]longobject.h - +[.Include]marshal.h - +[.Include]memoryobject.h - +[.Include]methodobject.h - +[.Include]modsupport.h - +[.Include]moduleobject.h - +[.Include]namespaceobject.h - +[.Include]node.h - +[.Include]object.h - +[.Include]objimpl.h - +[.Include]odictobject.h - +[.Include]opcode.h - +[.Include]osdefs.h - +[.Include]osmodule.h - +[.Include]patchlevel.h - +[.Include]picklebufobject.h - +[.Include]pyarena.h - +[.Include]pycapsule.h - +[.Include]pyctype.h - +[.Include]pydebug.h - +[.Include]pydtrace.h - +[.Include]pyerrors.h - +[.Include]pyfpe.h - +[.Include]pyhash.h - +[.Include]pylifecycle.h - +[.Include]pymacconfig.h - +[.Include]pymacro.h - +[.Include]pymath.h - +[.Include]pymem.h - +[.Include]pyport.h - +[.Include]pystate.h - +[.Include]pystrcmp.h - +[.Include]pystrhex.h - +[.Include]pystrtod.h - +[.Include]pythonrun.h - +[.Include]pythread.h - +[.Include]pytime.h - +[.Include]rangeobject.h - +[.Include]setobject.h - +[.Include]sliceobject.h - +[.Include]structmember.h - +[.Include]structseq.h - +[.Include]symtable.h - +[.Include]sysmodule.h - +[.Include]token.h - +[.Include]traceback.h - +[.Include]tracemalloc.h - +[.Include]tupleobject.h - +[.Include]ucnhash.h - +[.Include]unicodeobject.h - +[.Include]warnings.h - +[.Include]weakrefobject.h - +pyconfig.h - +py_vms.h - +$(PARSER_HEADERS) - +[.Include]Python-ast.h - +[.Include.cpython]abstract.h - +[.Include.cpython]dictobject.h - +[.Include.cpython]fileobject.h - +[.Include.cpython]initconfig.h - +[.Include.cpython]interpreteridobject.h - +[.Include.cpython]object.h - +[.Include.cpython]objimpl.h - +[.Include.cpython]pyerrors.h - +[.Include.cpython]pylifecycle.h - +[.Include.cpython]pymem.h - +[.Include.cpython]pystate.h - +[.Include.cpython]sysmodule.h - +[.Include.cpython]traceback.h - +[.Include.cpython]tupleobject.h - +[.Include.cpython]unicodeobject.h - +[.Include.internal]pycore_accu.h - +[.Include.internal]pycore_atomic.h - +[.Include.internal]pycore_ceval.h - +[.Include.internal]pycore_code.h - +[.Include.internal]pycore_condvar.h - +[.Include.internal]pycore_context.h - +[.Include.internal]pycore_fileutils.h - +[.Include.internal]pycore_getopt.h - +[.Include.internal]pycore_gil.h - +[.Include.internal]pycore_hamt.h - +[.Include.internal]pycore_initconfig.h - +[.Include.internal]pycore_object.h - +[.Include.internal]pycore_pathconfig.h - +[.Include.internal]pycore_pyerrors.h - +[.Include.internal]pycore_pyhash.h - +[.Include.internal]pycore_pylifecycle.h - +[.Include.internal]pycore_pymem.h - +[.Include.internal]pycore_pystate.h - +[.Include.internal]pycore_traceback.h - +[.Include.internal]pycore_tupleobject.h - +[.Include.internal]pycore_warnings.h + +MODULE_OBJS = - +[.$(OBJ_DIR).Modules]config.obj - +[.$(OBJ_DIR).Modules]getpath.obj - +[.$(OBJ_DIR).Modules]main.obj - +[.$(OBJ_DIR).Modules]gcmodule.obj + +IO_OBJS = - +[.$(OBJ_DIR).Modules._io]_iomodule.obj - +[.$(OBJ_DIR).Modules._io]iobase.obj - +[.$(OBJ_DIR).Modules._io]fileio.obj - +[.$(OBJ_DIR).Modules._io]bufferedio.obj - +[.$(OBJ_DIR).Modules._io]textio.obj - +[.$(OBJ_DIR).Modules._io]bytesio.obj - +[.$(OBJ_DIR).Modules._io]stringio.obj + +POBJS = - +[.$(OBJ_DIR).Parser]acceler.obj - +[.$(OBJ_DIR).Parser]grammar1.obj - +[.$(OBJ_DIR).Parser]listnode.obj - +[.$(OBJ_DIR).Parser]node.obj - +[.$(OBJ_DIR).Parser]parser.obj - +[.$(OBJ_DIR).Parser]token.obj + +PARSER_OBJS = $(POBJS) - +[.$(OBJ_DIR).Parser]myreadline.obj - +[.$(OBJ_DIR).vms]stdioreadline.obj - +[.$(OBJ_DIR).Parser]parsetok.obj - +[.$(OBJ_DIR).Parser]tokenizer.obj + +PYTHON_OBJS = - +[.$(OBJ_DIR).Python]_warnings.obj - +[.$(OBJ_DIR).Python]Python-ast.obj - +[.$(OBJ_DIR).Python]asdl.obj - +[.$(OBJ_DIR).Python]ast.obj - +[.$(OBJ_DIR).Python]ast_opt.obj - +[.$(OBJ_DIR).Python]ast_unparse.obj - +[.$(OBJ_DIR).Python]bltinmodule.obj - +[.$(OBJ_DIR).Python]ceval.obj - +[.$(OBJ_DIR).Python]codecs.obj - +[.$(OBJ_DIR).Python]compile.obj - +[.$(OBJ_DIR).Python]context.obj - +[.$(OBJ_DIR).Python]dynamic_annotations.obj - +[.$(OBJ_DIR).Python]errors.obj - +[.$(OBJ_DIR).Python]frozenmain.obj - +[.$(OBJ_DIR).Python]future.obj - +[.$(OBJ_DIR).Python]getargs.obj - +[.$(OBJ_DIR).Python]getcompiler.obj - +[.$(OBJ_DIR).Python]getcopyright.obj - +[.$(OBJ_DIR).Python]getplatform.obj - +[.$(OBJ_DIR).Python]getversion.obj - +[.$(OBJ_DIR).Python]graminit.obj - +[.$(OBJ_DIR).Python]hamt.obj - +[.$(OBJ_DIR).Python]import.obj - +[.$(OBJ_DIR).Python]importdl.obj - +[.$(OBJ_DIR).Python]initconfig.obj - +[.$(OBJ_DIR).Python]marshal.obj - +[.$(OBJ_DIR).Python]modsupport.obj - +[.$(OBJ_DIR).Python]mysnprintf.obj - +[.$(OBJ_DIR).Python]mystrtoul.obj - +[.$(OBJ_DIR).Python]pathconfig.obj - +[.$(OBJ_DIR).Python]peephole.obj - +[.$(OBJ_DIR).Python]preconfig.obj - +[.$(OBJ_DIR).Python]pyarena.obj - +[.$(OBJ_DIR).Python]pyctype.obj - +[.$(OBJ_DIR).Python]pyfpe.obj - +[.$(OBJ_DIR).Python]pyhash.obj - +[.$(OBJ_DIR).Python]pylifecycle.obj - +[.$(OBJ_DIR).Python]pymath.obj - +[.$(OBJ_DIR).Python]pystate.obj - +[.$(OBJ_DIR).Python]pythonrun.obj - +[.$(OBJ_DIR).Python]pytime.obj - +[.$(OBJ_DIR).Python]bootstrap_hash.obj - +[.$(OBJ_DIR).Python]structmember.obj - +[.$(OBJ_DIR).Python]symtable.obj - +[.$(OBJ_DIR).Python]sysmodule.obj - +[.$(OBJ_DIR).Python]thread.obj - +[.$(OBJ_DIR).Python]traceback.obj - +[.$(OBJ_DIR).Python]getopt.obj - +[.$(OBJ_DIR).Python]pystrcmp.obj - +[.$(OBJ_DIR).Python]pystrtod.obj - +[.$(OBJ_DIR).Python]pystrhex.obj - +[.$(OBJ_DIR).Python]dtoa.obj - +[.$(OBJ_DIR).Python]formatter_unicode.obj - +[.$(OBJ_DIR).Python]fileutils.obj - +[.$(OBJ_DIR).Python]$(DYNLOADFILE).obj + +OBJECT_OBJS = - +[.$(OBJ_DIR).Objects]abstract.obj - +[.$(OBJ_DIR).Objects]accu.obj - +[.$(OBJ_DIR).Objects]boolobject.obj - +[.$(OBJ_DIR).Objects]bytes_methods.obj - +[.$(OBJ_DIR).Objects]bytearrayobject.obj - +[.$(OBJ_DIR).Objects]bytesobject.obj - +[.$(OBJ_DIR).Objects]call.obj - +[.$(OBJ_DIR).Objects]capsule.obj - +[.$(OBJ_DIR).Objects]cellobject.obj - +[.$(OBJ_DIR).Objects]classobject.obj - +[.$(OBJ_DIR).Objects]codeobject.obj - +[.$(OBJ_DIR).Objects]complexobject.obj - +[.$(OBJ_DIR).Objects]descrobject.obj - +[.$(OBJ_DIR).Objects]enumobject.obj - +[.$(OBJ_DIR).Objects]exceptions.obj - +[.$(OBJ_DIR).Objects]genobject.obj - +[.$(OBJ_DIR).Objects]fileobject.obj - +[.$(OBJ_DIR).Objects]floatobject.obj - +[.$(OBJ_DIR).Objects]frameobject.obj - +[.$(OBJ_DIR).Objects]funcobject.obj - +[.$(OBJ_DIR).Objects]interpreteridobject.obj - +[.$(OBJ_DIR).Objects]iterobject.obj - +[.$(OBJ_DIR).Objects]listobject.obj - +[.$(OBJ_DIR).Objects]longobject.obj - +[.$(OBJ_DIR).Objects]dictobject.obj - +[.$(OBJ_DIR).Objects]odictobject.obj - +[.$(OBJ_DIR).Objects]memoryobject.obj - +[.$(OBJ_DIR).Objects]methodobject.obj - +[.$(OBJ_DIR).Objects]moduleobject.obj - +[.$(OBJ_DIR).Objects]namespaceobject.obj - +[.$(OBJ_DIR).Objects]object.obj - +[.$(OBJ_DIR).Objects]obmalloc.obj - +[.$(OBJ_DIR).Objects]picklebufobject.obj - +[.$(OBJ_DIR).Objects]rangeobject.obj - +[.$(OBJ_DIR).Objects]setobject.obj - +[.$(OBJ_DIR).Objects]sliceobject.obj - +[.$(OBJ_DIR).Objects]structseq.obj - +[.$(OBJ_DIR).Objects]tupleobject.obj - +[.$(OBJ_DIR).Objects]typeobject.obj - +[.$(OBJ_DIR).Objects]unicodeobject.obj - +[.$(OBJ_DIR).Objects]unicodectype.obj - +[.$(OBJ_DIR).Objects]weakrefobject.obj + +MODOBJS = - +[.$(OBJ_DIR).Modules]posixmodule.obj - +[.$(OBJ_DIR).Modules]errnomodule.obj - +[.$(OBJ_DIR).Modules]pwdmodule.obj - +[.$(OBJ_DIR).Modules]_sre.obj - +[.$(OBJ_DIR).Modules]_codecsmodule.obj - +[.$(OBJ_DIR).Modules]_weakref.obj - +[.$(OBJ_DIR).Modules]_functoolsmodule.obj - +[.$(OBJ_DIR).Modules]_operator.obj - +[.$(OBJ_DIR).Modules]_collectionsmodule.obj - +[.$(OBJ_DIR).Modules]_abc.obj - +[.$(OBJ_DIR).Modules]itertoolsmodule.obj - +[.$(OBJ_DIR).Modules]atexitmodule.obj - +[.$(OBJ_DIR).Modules]signalmodule.obj - +[.$(OBJ_DIR).Modules]_stat.obj - +[.$(OBJ_DIR).Modules]timemodule.obj - +[.$(OBJ_DIR).Modules]_threadmodule.obj - +[.$(OBJ_DIR).Modules]_localemodule.obj - +[.$(OBJ_DIR).Modules._io]_iomodule.obj - +[.$(OBJ_DIR).Modules._io]iobase.obj - +[.$(OBJ_DIR).Modules._io]fileio.obj - +[.$(OBJ_DIR).Modules._io]bytesio.obj - +[.$(OBJ_DIR).Modules._io]bufferedio.obj - +[.$(OBJ_DIR).Modules._io]textio.obj - +[.$(OBJ_DIR).Modules._io]stringio.obj - +[.$(OBJ_DIR).Modules]faulthandler.obj - +[.$(OBJ_DIR).Modules]_tracemalloc.obj - +[.$(OBJ_DIR).Modules]hashtable.obj - +[.$(OBJ_DIR).Modules]symtablemodule.obj - +[.$(OBJ_DIR).Modules]xxsubtype.obj + +LIBRARY_OBJS_OMIT_FROZEN = - +[.$(OBJ_DIR).Modules]getbuildinfo.obj - +[.$(OBJ_DIR).vms]vms_poll_select_hack.obj - +$(PARSER_OBJS) - +$(OBJECT_OBJS) - +$(PYTHON_OBJS) - +$(MODULE_OBJS) - +$(MODOBJS) + +LIBRARY_OBJS = - +$(LIBRARY_OBJS_OMIT_FROZEN) - +[.$(OBJ_DIR).Python]frozen.obj + +DTRACE_DEPS = - +[.$(OBJ_DIR).Python]ceval.obj - +[.$(OBJ_DIR).Python]import.obj - +[.$(OBJ_DIR).Python]sysmodule.obj - +[.$(OBJ_DIR).Modules]gcmodule.obj + +[.$(OBJ_DIR).Modules]_math.obj : [.Modules]_math.c [.Modules]_math.h $(PYTHON_HEADERS) +[.$(OBJ_DIR).Modules]config.obj : [.Modules]config.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Modules]gcmodule.obj : [.Modules]gcmodule.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Modules]grpmodule.obj : [.Modules]grpmodule.c [.Modules]posixmodule.h $(PYTHON_HEADERS) +[.$(OBJ_DIR).Modules]main.obj : [.Modules]main.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]abstract.obj : [.Objects]abstract.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]accu.obj : [.Objects]accu.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]boolobject.obj : [.Objects]boolobject.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]bytearrayobject.obj : [.Objects]bytearrayobject.c $(BYTESTR_HEADERS) $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]bytes_methods.obj : [.Objects]bytes_methods.c $(BYTESTR_HEADERS) $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]bytesobject.obj : [.Objects]bytesobject.c $(BYTESTR_HEADERS) $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]call.obj : [.Objects]call.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]capsule.obj : [.Objects]capsule.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]cellobject.obj : [.Objects]cellobject.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]classobject.obj : [.Objects]classobject.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]codeobject.obj : [.Objects]codeobject.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]complexobject.obj : [.Objects]complexobject.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]descrobject.obj : [.Objects]descrobject.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]dictobject.obj : [.Objects]dictobject.c [.Objects.stringlib]eq.h [.Objects]dict-common.h $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]enumobject.obj : [.Objects]enumobject.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]exceptions.obj : [.Objects]exceptions.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]fileobject.obj : [.Objects]fileobject.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]floatobject.obj : [.Objects]floatobject.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]frameobject.obj : [.Objects]frameobject.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]funcobject.obj : [.Objects]funcobject.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]genobject.obj : [.Objects]genobject.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]iterobject.obj : [.Objects]iterobject.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]listobject.obj : [.Objects]listobject.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]longobject.obj : [.Objects]longobject.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]memoryobject.obj : [.Objects]memoryobject.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]methodobject.obj : [.Objects]methodobject.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]moduleobject.obj : [.Objects]moduleobject.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]namespaceobject.obj : [.Objects]namespaceobject.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]object.obj : [.Objects]object.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]obmalloc.obj : [.Objects]obmalloc.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]odictobject.obj : [.Objects]odictobject.c [.Objects]dict-common.h $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]picklebufobject.obj : [.Objects]picklebufobject.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]rangeobject.obj : [.Objects]rangeobject.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]setobject.obj : [.Objects]setobject.c [.Objects.stringlib]eq.h $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]sliceobject.obj : [.Objects]sliceobject.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]structseq.obj : [.Objects]structseq.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]tupleobject.obj : [.Objects]tupleobject.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]typeobject.obj : [.Objects]typeobject.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]unicodectype.obj : [.Objects]unicodectype.c [.Objects]unicodetype_db.h $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]unicodeobject.obj : [.Objects]unicodeobject.c $(UNICODE_HEADERS) $(PYTHON_HEADERS) +[.$(OBJ_DIR).Objects]weakrefobject.obj : [.Objects]weakrefobject.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Parser]acceler.obj : [.Parser]acceler.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Parser]grammar1.obj : [.Parser]grammar1.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Parser]listnode.obj : [.Parser]listnode.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Parser]myreadline.obj : [.Parser]myreadline.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Parser]node.obj : [.Parser]node.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Parser]parser.obj : [.Parser]parser.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Parser]parsetok.obj : [.Parser]parsetok.c [.Include]graminit.h [.Include]Python-ast.h $(PYTHON_HEADERS) +[.$(OBJ_DIR).Parser]token.obj : [.Parser]token.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Parser]tokenizer.obj : [.Parser]tokenizer.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Programs]_freeze_importlib.obj : [.Programs]_freeze_importlib.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Programs]python.obj : [.Programs]python.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]Python-ast.obj : [.Python]Python-ast.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]_warnings.obj : [.Python]_warnings.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]asdl.obj : [.Python]asdl.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]ast.obj : [.Python]ast.c [.Include]graminit.h [.Include]Python-ast.h $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]ast_opt.obj : [.Python]ast_opt.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]ast_unparse.obj : [.Python]ast_unparse.c [.Include]graminit.h [.Include]Python-ast.h $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]bltinmodule.obj : [.Python]bltinmodule.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]bootstrap_hash.obj : [.Python]bootstrap_hash.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]ceval.obj : [.Python]ceval.c [.Python]opcode_targets.h [.Python]ceval_gil.h [.Python]condvar.h $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]codecs.obj : [.Python]codecs.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]compile.obj : [.Python]compile.c [.Include]graminit.h [.Include]Python-ast.h $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]context.obj : [.Python]context.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]dtoa.obj : [.Python]dtoa.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]dynamic_annotations.obj : [.Python]dynamic_annotations.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]errors.obj : [.Python]errors.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]fileutils.obj : [.Python]fileutils.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]formatter_unicode.obj : [.Python]formatter_unicode.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]frozen.obj : [.Python]frozen.c [.Python]importlib.h [.Python]importlib_external.h [.Python]importlib_zipimport.h $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]frozenmain.obj : [.Python]frozenmain.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]future.obj : [.Python]future.c [.Include]graminit.h [.Include]Python-ast.h $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]getargs.obj : [.Python]getargs.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]getcompiler.obj : [.Python]getcompiler.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]getcopyright.obj : [.Python]getcopyright.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]getopt.obj : [.Python]getopt.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]getversion.obj : [.Python]getversion.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]graminit.obj : [.Python]graminit.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]hamt.obj : [.Python]hamt.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]import.obj : [.Python]import.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]importdl.obj : [.Python]importdl.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]initconfig.obj : [.Python]initconfig.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]marshal.obj : [.Python]marshal.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]modsupport.obj : [.Python]modsupport.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]mysnprintf.obj : [.Python]mysnprintf.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]mystrtoul.obj : [.Python]mystrtoul.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]pathconfig.obj : [.Python]pathconfig.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]peephole.obj : [.Python]peephole.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]preconfig.obj : [.Python]preconfig.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]pyarena.obj : [.Python]pyarena.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]pyctype.obj : [.Python]pyctype.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]pyfpe.obj : [.Python]pyfpe.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]pyhash.obj : [.Python]pyhash.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]pylifecycle.obj : [.Python]pylifecycle.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]pymath.obj : [.Python]pymath.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]pystate.obj : [.Python]pystate.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]pystrcmp.obj : [.Python]pystrcmp.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]pystrhex.obj : [.Python]pystrhex.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]pystrtod.obj : [.Python]pystrtod.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]pythonrun.obj : [.Python]pythonrun.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]pytime.obj : [.Python]pytime.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]structmember.obj : [.Python]structmember.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]symtable.obj : [.Python]symtable.c [.Include]graminit.h [.Include]Python-ast.h $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]thread.obj : [.Python]thread.c [.Python]thread_nt.h [.Python]thread_pthread.h [.Python]condvar.h $(PYTHON_HEADERS) +[.$(OBJ_DIR).Python]traceback.obj : [.Python]traceback.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).vms]vms_crtl_init.obj : [.vms]vms_crtl_init.c +[.$(OBJ_DIR).vms]stdioreadline.obj : [.vms]stdioreadline.c +[.$(OBJ_DIR).vms]vms_poll_select_hack.obj : [.vms]vms_poll_select_hack.c + +[.$(OBJ_DIR).Objects]interpreteridobject.obj : [.Objects]interpreteridobject.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Programs]_testembed.obj : [.Programs]_testembed.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +! no git info, just dependency +[.$(OBJ_DIR).Modules]getbuildinfo.obj : [.Modules]getbuildinfo.c $(PYTHON_HEADERS) - + $(PARSER_OBJS) - + $(OBJECT_OBJS) - + $(PYTHON_OBJS) - + $(MODULE_OBJS) - + $(MODOBJS) + +[.$(OBJ_DIR).Modules]getpath.obj : [.Modules]getpath.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_CFLAGS_GETPATH) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Python]dynload_shlib.obj : [.Python]dynload_shlib.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_CFLAGS_SHLIB) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Python]dynload_hpux.obj : [.Python]dynload_hpux.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_CFLAGS_HPUX) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Python]sysmodule.obj : [.Python]sysmodule.c [.Include]pydtrace.h $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_CFLAGS_SYSMODULE) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Python]getplatform.obj : [.Python]getplatform.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_CFLAGS_GETPLATFORM) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +! PY_CORE_BUILTIN_CFLAGS + +[.$(OBJ_DIR).Modules]posixmodule.obj : [.Modules]posixmodule.c [.Modules]posixmodule.h $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules]errnomodule.obj : [.Modules]errnomodule.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules]pwdmodule.obj : [.Modules]pwdmodule.c [.Modules]posixmodule.h $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules]_sre.obj : [.Modules]_sre.c [.Modules]sre.h [.Modules]sre_constants.h [.Modules]sre_lib.h $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules]_codecsmodule.obj : [.Modules]_codecsmodule.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules]_weakref.obj : [.Modules]_weakref.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules]_functoolsmodule.obj : [.Modules]_functoolsmodule.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules]_operator.obj : [.Modules]_operator.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules]_collectionsmodule.obj : [.Modules]_collectionsmodule.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules]_abc.obj : [.Modules]_abc.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules]itertoolsmodule.obj : [.Modules]itertoolsmodule.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules]atexitmodule.obj : [.Modules]atexitmodule.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules]signalmodule.obj : [.Modules]signalmodule.c [.Modules]posixmodule.h $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules]_stat.obj : [.Modules]_stat.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules]timemodule.obj : [.Modules]timemodule.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules]_threadmodule.obj : [.Modules]_threadmodule.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules]_localemodule.obj : [.Modules]_localemodule.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +! _io + +[.$(OBJ_DIR).Modules._io]_iomodule.obj : [.Modules._io]_iomodule.c $(IO_HEADERS) $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_BUILTIN_CFLAGS_IO) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules._io]iobase.obj : [.Modules._io]iobase.c $(IO_HEADERS) $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_BUILTIN_CFLAGS_IO) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules._io]fileio.obj : [.Modules._io]fileio.c $(IO_HEADERS) $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_BUILTIN_CFLAGS_IO) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules._io]bytesio.obj : [.Modules._io]bytesio.c $(IO_HEADERS) $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_BUILTIN_CFLAGS_IO) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules._io]bufferedio.obj : [.Modules._io]bufferedio.c $(IO_HEADERS) $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_BUILTIN_CFLAGS_IO) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules._io]textio.obj : [.Modules._io]textio.c $(IO_HEADERS) $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_BUILTIN_CFLAGS_IO) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules._io]stringio.obj : [.Modules._io]stringio.c $(IO_HEADERS) $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_BUILTIN_CFLAGS_IO) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules]faulthandler.obj : [.Modules]faulthandler.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules]_tracemalloc.obj : [.Modules]_tracemalloc.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules]hashtable.obj : [.Modules]hashtable.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules]symtablemodule.obj : [.Modules]symtablemodule.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules]xxsubtype.obj : [.Modules]xxsubtype.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_BUILTIN_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +! python$shr.exe +[.$(OUT_DIR)]python$shr.exe : [.$(OUT_DIR)]libpython3^.8.olb + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[000000]$(NOTDIR $(MMS$TARGET_NAME)).EXE [.opt]$(PYTHON$SHR_OPT).opt/OPT + +! python3.exe +[.$(OUT_DIR)]python3.exe : [.$(OBJ_DIR).Programs]python.obj,[.$(OBJ_DIR).vms]vms_crtl_init.obj,[.$(OUT_DIR)]python$shr.exe + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/THREADS/EXECUTABLE=python$build_out:[000000]$(NOTDIR $(MMS$TARGET_NAME)).EXE [.$(OBJ_DIR).vms]vms_crtl_init.obj,[.$(OBJ_DIR).Programs]python.obj,[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + ! [.$(OUT_DIR)]python3.exe is built => python$build_out:[000000]$(NOTDIR $(MMS$TARGET_NAME)).EXE + +! _testembed.exe +[.$(OUT_DIR)]_testembed.exe : [.$(OBJ_DIR).Programs]_testembed.obj,[.$(OUT_DIR)]python$shr.exe + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/EXECUTABLE=python$build_out:[000000]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! libpython3^.8.olb +[.$(OUT_DIR)]libpython3^.8.olb : [.$(OUT_DIR)]libpython3^.8.olb($(LIBRARY_OBJS)) + continue + +! _freeze_importlib +[.$(OUT_DIR).Programs]_freeze_importlib.exe : [.$(OBJ_DIR).Programs]_freeze_importlib.obj $(LIBRARY_OBJS_OMIT_FROZEN) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)/NODEBUG/NOMAP/EXECUTABLE=python$build_out:[Programs]$(NOTDIR $(MMS$TARGET_NAME)).EXE [.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.Python]importlib_external.h : [.Lib.importlib]_bootstrap_external.py [.$(OUT_DIR).Programs]_freeze_importlib.exe + mcr [.$(OUT_DIR).Programs]_freeze_importlib.exe importlib._bootstrap_external Lib/importlib/_bootstrap_external.py Python/importlib_external.h + +[.Python]importlib.h : [.Lib.importlib]_bootstrap.py [.$(OUT_DIR).Programs]_freeze_importlib.exe + mcr [.$(OUT_DIR).Programs]_freeze_importlib.exe importlib._bootstrap Lib/importlib/_bootstrap.py Python/importlib.h + +[.Python]importlib_zipimport.h : [.Lib]zipimport.py [.$(OUT_DIR).Programs]_freeze_importlib.exe + mcr [.$(OUT_DIR).Programs]_freeze_importlib.exe zipimport Lib/zipimport.py Python/importlib_zipimport.h + +! _struct +[.$(OBJ_DIR).Modules]_struct.obm : [.Modules]_struct.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_struct.exe : [.$(OBJ_DIR).Modules]_struct.obm + +! array +[.$(OBJ_DIR).Modules]arraymodule.obm : [.Modules]arraymodule.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]array.exe : [.$(OBJ_DIR).Modules]arraymodule.obm + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! _contextvars +[.$(OBJ_DIR).Modules]_contextvarsmodule.obm : [.Modules]_contextvarsmodule.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_contextvars.exe : [.$(OBJ_DIR).Modules]_contextvarsmodule.obm + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! math mathmodule +[.$(OBJ_DIR).Modules]mathmodule.obm : [.Modules]mathmodule.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]math.exe : [.$(OBJ_DIR).Modules]mathmodule.obm, [.$(OBJ_DIR).Modules]_math.obj + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! cmath cmathmodule +[.$(OBJ_DIR).Modules]cmathmodule.obm : [.Modules]cmathmodule.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]cmath.exe : [.$(OBJ_DIR).Modules]cmathmodule.obm, [.$(OBJ_DIR).Modules]_math.obj + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! _datetime _datetimemodule +[.$(OBJ_DIR).Modules]_datetimemodule.obm : [.Modules]_datetimemodule.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_datetime.exe : [.$(OBJ_DIR).Modules]_datetimemodule.obm + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! _random _randommodule +[.$(OBJ_DIR).Modules]_randommodule.obm : [.Modules]_randommodule.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_random.exe : [.$(OBJ_DIR).Modules]_randommodule.obm + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! _bisect _bisectmodule +[.$(OBJ_DIR).Modules]_bisectmodule.obm : [.Modules]_bisectmodule.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_bisect.exe : [.$(OBJ_DIR).Modules]_bisectmodule.obm + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! _heapq _heapqmodule +[.$(OBJ_DIR).Modules]_heapqmodule.obm : [.Modules]_heapqmodule.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_heapq.exe : [.$(OBJ_DIR).Modules]_heapqmodule.obm + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! _pickle _pickle +[.$(OBJ_DIR).Modules]_pickle.obm : [.Modules]_pickle.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_MODULE_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_pickle.exe : [.$(OBJ_DIR).Modules]_pickle.obm + +! _json _json +[.$(OBJ_DIR).Modules]_json.obm : [.Modules]_json.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_MODULE_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_json.exe : [.$(OBJ_DIR).Modules]_json.obm + +! _lsprof _lsprof rotatingtree +[.$(OBJ_DIR).Modules]_lsprof.obm : [.Modules]_lsprof.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Modules]rotatingtree.obm : [.Modules]rotatingtree.c +[.$(OUT_DIR).$(DYNLOAD_DIR)]_lsprof.exe : [.$(OBJ_DIR).Modules]_lsprof.obm,[.$(OBJ_DIR).Modules]rotatingtree.obm + +! unicodedata unicodedata +[.$(OBJ_DIR).Modules]unicodedata.obm : [.Modules]unicodedata.c,[.Modules]unicodedata_db.h,[.Modules]unicodename_db.h,$(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]unicodedata.exe : [.$(OBJ_DIR).Modules]unicodedata.obm + +! _opcode _opcode +[.$(OBJ_DIR).Modules]_opcode.obm : [.Modules]_opcode.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_opcode.exe : [.$(OBJ_DIR).Modules]_opcode.obm + +! _asyncio _asynciomodule +[.$(OBJ_DIR).Modules]_asynciomodule.obm : [.Modules]_asynciomodule.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_asyncio.exe : [.$(OBJ_DIR).Modules]_asynciomodule.obm + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! _queue _queuemodule +[.$(OBJ_DIR).Modules]_queuemodule.obm : [.Modules]_queuemodule.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_queue.exe : [.$(OBJ_DIR).Modules]_queuemodule.obm + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! _statistics _statisticsmodule +[.$(OBJ_DIR).Modules]_statisticsmodule.obm : [.Modules]_statisticsmodule.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_statistics.exe : [.$(OBJ_DIR).Modules]_statisticsmodule.obm + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! fcntl fcntlmodule +[.$(OBJ_DIR).Modules]fcntlmodule.obm : [.Modules]fcntlmodule.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]fcntl.exe : [.$(OBJ_DIR).Modules]fcntlmodule.obm + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! grp grpmodule +[.$(OBJ_DIR).Modules]grpmodule.obm : [.Modules]grpmodule.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]grp.exe : [.$(OBJ_DIR).Modules]grpmodule.obm + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! select selectmodule +[.$(OBJ_DIR).Modules]selectmodule.obm : [.Modules]selectmodule.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]select.exe : [.$(OBJ_DIR).Modules]selectmodule.obm + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! parser parsermodule +[.$(OBJ_DIR).Modules]parsermodule.obm : [.Modules]parsermodule.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]parser.exe : [.$(OBJ_DIR).Modules]parsermodule.obm + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! mmap mmapmodule +[.$(OBJ_DIR).Modules]mmapmodule.obm : [.Modules]mmapmodule.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]mmap.exe : [.$(OBJ_DIR).Modules]mmapmodule.obm + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! syslog syslogmodule [vms]syslog +[.$(OBJ_DIR).vms]syslog.obm : [.vms]syslog.c [.vms]syslog.h +[.$(OBJ_DIR).Modules]syslogmodule.obm : [.Modules]syslogmodule.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]syslog.exe : [.$(OBJ_DIR).vms]syslog.obm,[.$(OBJ_DIR).Modules]syslogmodule.obm + +! _xxsubinterpreters _xxsubinterpretersmodule +[.$(OBJ_DIR).Modules]_xxsubinterpretersmodule.obm : [.Modules]_xxsubinterpretersmodule.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_xxsubinterpreters.exe : [.$(OBJ_DIR).Modules]_xxsubinterpretersmodule.obm + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! audioop audioop +[.$(OBJ_DIR).Modules]audioop.obm : [.Modules]audioop.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]audioop.exe : [.$(OBJ_DIR).Modules]audioop.obm + +! _csv _csv +[.$(OBJ_DIR).Modules]_csv.obm : [.Modules]_csv.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_csv.exe : [.$(OBJ_DIR).Modules]_csv.obm + +! _posixsubprocess _posixsubprocess +[.$(OBJ_DIR).Modules]_posixsubprocess.obm : [.Modules]_posixsubprocess.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_posixsubprocess.exe : [.$(OBJ_DIR).Modules]_posixsubprocess.obm + +! _testcapi _testcapimodule +[.$(OBJ_DIR).Modules]_testcapimodule.obm : [.Modules]_testcapimodule.c [.Modules]testcapi_long.h $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_testcapi.exe : [.$(OBJ_DIR).Modules]_testcapimodule.obm + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! _testinternalcapi _testinternalcapi +[.$(OBJ_DIR).Modules]_testinternalcapi.obm : [.Modules]_testinternalcapi.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CORE_MODULE_CFLAGS) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_testinternalcapi.exe : [.$(OBJ_DIR).Modules]_testinternalcapi.obm + +! _testbuffer _testbuffer +[.$(OBJ_DIR).Modules]_testbuffer.obm : [.Modules]_testbuffer.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_testbuffer.exe : [.$(OBJ_DIR).Modules]_testbuffer.obm + +! _testimportmultiple _testimportmultiple +[.$(OBJ_DIR).Modules]_testimportmultiple.obm : [.Modules]_testimportmultiple.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_testimportmultiple.exe : [.$(OBJ_DIR).Modules]_testimportmultiple.obm + +! _testmultiphase _testmultiphase +[.$(OBJ_DIR).Modules]_testmultiphase.obm : [.Modules]_testmultiphase.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_testmultiphase.exe : [.$(OBJ_DIR).Modules]_testmultiphase.obm + +! _xxtestfuzz [_xxtestfuzz]_xxtestfuzz [_xxtestfuzz]fuzzer +[.$(OBJ_DIR).Modules._xxtestfuzz]_xxtestfuzz.obm : [.Modules._xxtestfuzz]_xxtestfuzz.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Modules._xxtestfuzz]fuzzer.obm : [.Modules._xxtestfuzz]fuzzer.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_xxtestfuzz.exe : [.$(OBJ_DIR).Modules._xxtestfuzz]_xxtestfuzz.obm,[.$(OBJ_DIR).Modules._xxtestfuzz]fuzzer.obm + +! readline readline +[.$(OBJ_DIR).Modules]readline.obm : [.Modules]readline.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]readline.exe : [.$(OBJ_DIR).Modules]readline.obm + +! _crypt _cryptmodule +[.$(OBJ_DIR).Modules]_cryptmodule.obm : [.Modules]_cryptmodule.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_crypt.exe : [.$(OBJ_DIR).Modules]_cryptmodule.obm + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! _socket socketmodule +[.$(OBJ_DIR).Modules]socketmodule.obm : [.Modules]socketmodule.c [.Modules]socketmodule.h $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_socket.exe : [.$(OBJ_DIR).Modules]socketmodule.obm + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! _gdbm _gdbmmodule +[.$(OBJ_DIR).Modules]_gdbmmodule.obm : [.Modules]_gdbmmodule.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_gdbm.exe : [.$(OBJ_DIR).Modules]_gdbmmodule.obm + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! _sqlite3 +SQL_OBJ_LIST = - +[.$(OBJ_DIR).Modules._sqlite]cache.obm - +[.$(OBJ_DIR).Modules._sqlite]connection.obm - +[.$(OBJ_DIR).Modules._sqlite]cursor.obm - +[.$(OBJ_DIR).Modules._sqlite]microprotocols.obm - +[.$(OBJ_DIR).Modules._sqlite]module.obm - +[.$(OBJ_DIR).Modules._sqlite]prepare_protocol.obm - +[.$(OBJ_DIR).Modules._sqlite]row.obm - +[.$(OBJ_DIR).Modules._sqlite]statement.obm - +[.$(OBJ_DIR).Modules._sqlite]util.obm + +[.$(OBJ_DIR).Modules._sqlite]cache.obm : [.Modules._sqlite]cache.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CFLAGS_SQL) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules._sqlite]connection.obm : [.Modules._sqlite]connection.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CFLAGS_SQL) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules._sqlite]cursor.obm : [.Modules._sqlite]cursor.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CFLAGS_SQL) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules._sqlite]microprotocols.obm : [.Modules._sqlite]microprotocols.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CFLAGS_SQL) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules._sqlite]module.obm : [.Modules._sqlite]module.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CFLAGS_SQL) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules._sqlite]prepare_protocol.obm : [.Modules._sqlite]prepare_protocol.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CFLAGS_SQL) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules._sqlite]row.obm : [.Modules._sqlite]row.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CFLAGS_SQL) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules._sqlite]statement.obm : [.Modules._sqlite]statement.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CFLAGS_SQL) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules._sqlite]util.obm : [.Modules._sqlite]util.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CFLAGS_SQL) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_sqlite3.exe : $(SQL_OBJ_LIST) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! zlib zlibmodule +[.$(OBJ_DIR).Modules]zlibmodule.obm : [.Modules]zlibmodule.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]zlib.exe : [.$(OBJ_DIR).Modules]zlibmodule.obm + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! binascii binascii +[.$(OBJ_DIR).Modules]binascii.obm : [.Modules]binascii.c $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CFLAGS_USE_ZLIB) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OUT_DIR).$(DYNLOAD_DIR)]binascii.exe : [.$(OBJ_DIR).Modules]binascii.obm + +! _bz2 _bz2module +[.$(OBJ_DIR).Modules]_bz2module.obm : [.Modules]_bz2module.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_bz2.exe : [.$(OBJ_DIR).Modules]_bz2module.obm + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! _lzma _lzmamodule +[.$(OBJ_DIR).Modules]_lzmamodule.obm : [.Modules]_lzmamodule.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_lzma.exe : [.$(OBJ_DIR).Modules]_lzmamodule.obm + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! pyexpat +EXPAT_OBJ_LIST = - +[.$(OBJ_DIR).Modules.expat]xmlparse.obm - +[.$(OBJ_DIR).Modules.expat]xmlrole.obm - +[.$(OBJ_DIR).Modules.expat]xmltok.obm + +EXPAT_HEADERS = - +[.Modules.expat]ascii.h - +[.Modules.expat]asciitab.h - +[.Modules.expat]expat.h - +[.Modules.expat]expat_config.h - +[.Modules.expat]expat_external.h - +[.Modules.expat]internal.h - +[.Modules.expat]latin1tab.h - +[.Modules.expat]utf8tab.h - +[.Modules.expat]xmlrole.h - +[.Modules.expat]xmltok.h - +[.Modules.expat]xmltok_impl.h + +[.$(OBJ_DIR).Modules]pyexpat.obm : [.Modules]pyexpat.c $(EXPAT_HEADERS) $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CFLAGS_EXPAT) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules.expat]xmlparse.obm : [.Modules.expat]xmlparse.c $(EXPAT_HEADERS) $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CFLAGS_EXPAT) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules.expat]xmlrole.obm : [.Modules.expat]xmlrole.c $(EXPAT_HEADERS) $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CFLAGS_EXPAT) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules.expat]xmltok.obm : [.Modules.expat]xmltok.c $(EXPAT_HEADERS) $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CFLAGS_EXPAT) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OUT_DIR).$(DYNLOAD_DIR)]pyexpat.exe : [.$(OBJ_DIR).Modules]pyexpat.obm,$(EXPAT_OBJ_LIST) + +! _elementtree _elementtree +[.$(OBJ_DIR).Modules]_elementtree.obm : [.Modules]_elementtree.c $(EXPAT_HEADERS) $(PYTHON_HEADERS) [.$(OUT_DIR).$(DYNLOAD_DIR)]pyexpat.exe + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CFLAGS_EXPAT_ELEM) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_elementtree.exe : [.$(OBJ_DIR).Modules]_elementtree.obm + +! _multibytecodec cjkcodecs/multibytecodec.c +[.$(OBJ_DIR).Modules.cjkcodecs]multibytecodec.obm : [.Modules.cjkcodecs]multibytecodec.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_multibytecodec.exe : [.$(OBJ_DIR).Modules.cjkcodecs]multibytecodec.obm + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! _codecs_kr cjkcodecs/_codecs_kr.c +[.$(OBJ_DIR).Modules.cjkcodecs]_codecs_kr.obm : [.Modules.cjkcodecs]_codecs_kr.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_codecs_kr.exe : [.$(OBJ_DIR).Modules.cjkcodecs]_codecs_kr.obm + +! _codecs_jp cjkcodecs/_codecs_jp.c +[.$(OBJ_DIR).Modules.cjkcodecs]_codecs_jp.obm : [.Modules.cjkcodecs]_codecs_jp.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_codecs_jp.exe : [.$(OBJ_DIR).Modules.cjkcodecs]_codecs_jp.obm + +! _codecs_cn cjkcodecs/_codecs_cn.c +[.$(OBJ_DIR).Modules.cjkcodecs]_codecs_cn.obm : [.Modules.cjkcodecs]_codecs_cn.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_codecs_cn.exe : [.$(OBJ_DIR).Modules.cjkcodecs]_codecs_cn.obm + +! _codecs_tw cjkcodecs/_codecs_tw.c +[.$(OBJ_DIR).Modules.cjkcodecs]_codecs_tw.obm : [.Modules.cjkcodecs]_codecs_tw.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_codecs_tw.exe : [.$(OBJ_DIR).Modules.cjkcodecs]_codecs_tw.obm + +! _codecs_hk cjkcodecs/_codecs_hk.c +[.$(OBJ_DIR).Modules.cjkcodecs]_codecs_hk.obm : [.Modules.cjkcodecs]_codecs_hk.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_codecs_hk.exe : [.$(OBJ_DIR).Modules.cjkcodecs]_codecs_hk.obm + +! _codecs_iso2022 cjkcodecs/_codecs_iso2022.c +[.$(OBJ_DIR).Modules.cjkcodecs]_codecs_iso2022.obm : [.Modules.cjkcodecs]_codecs_iso2022.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_codecs_iso2022.exe : [.$(OBJ_DIR).Modules.cjkcodecs]_codecs_iso2022.obm + +! _multiprocessing +[.$(OBJ_DIR).Modules._multiprocessing]multiprocessing.obm : [.Modules._multiprocessing]multiprocessing.c [.Modules._multiprocessing]multiprocessing.h $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CFLAGS_MULT) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).Modules._multiprocessing]semaphore.obm : [.Modules._multiprocessing]semaphore.c [.Modules._multiprocessing]multiprocessing.h $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CFLAGS_MULT) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_multiprocessing.exe : [.$(OBJ_DIR).Modules._multiprocessing]multiprocessing.obm,[.$(OBJ_DIR).Modules._multiprocessing]semaphore.obm + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! _posixshmem +[.$(OBJ_DIR).Modules._multiprocessing]posixshmem.obm : [.Modules._multiprocessing]posixshmem.c [.Modules._multiprocessing]multiprocessing.h $(PYTHON_HEADERS) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC) $(PY_CFLAGS_MULT) /OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_posixshmem.exe : [.$(OBJ_DIR).Modules._multiprocessing]posixshmem.obm + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! ! _uuid _uuidmodule +! [.$(OBJ_DIR).Modules]_uuidmodule.obm : [.Modules]_uuidmodule.c $(PYTHON_HEADERS) +! [.$(OUT_DIR).$(DYNLOAD_DIR)]_uuid.exe : [.$(OBJ_DIR).Modules]_uuidmodule.obm +! @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: +! $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! _ctypes +CTYPES_OBJ_LIST = - +[.$(OBJ_DIR).Modules._ctypes]callbacks.obm - +[.$(OBJ_DIR).Modules._ctypes]callproc.obm - +[.$(OBJ_DIR).Modules._ctypes]stgdict.obm - +[.$(OBJ_DIR).Modules._ctypes]cfield.obm + +CTYPES_HEADERS = - +[.Modules._ctypes]ctypes.h + +[.$(OBJ_DIR).Modules._ctypes]_ctypes.obm : [.Modules._ctypes]_ctypes.c $(CTYPES_HEADERS) $(PYTHON_HEADERS) +[.$(OBJ_DIR).Modules._ctypes]callbacks.obm : [.Modules._ctypes]callbacks.c $(CTYPES_HEADERS) $(PYTHON_HEADERS) +[.$(OBJ_DIR).Modules._ctypes]stgdict.obm : [.Modules._ctypes]stgdict.c $(CTYPES_HEADERS) $(PYTHON_HEADERS) +[.$(OBJ_DIR).Modules._ctypes]callproc.obm : [.Modules._ctypes]callproc.c $(CTYPES_HEADERS) $(PYTHON_HEADERS) +[.$(OBJ_DIR).Modules._ctypes]cfield.obm : [.Modules._ctypes]cfield.c $(CTYPES_HEADERS) $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_ctypes.exe : [.$(OBJ_DIR).Modules._ctypes]_ctypes.obm,$(CTYPES_OBJ_LIST) + +! _ctypes_test _ctypes_test +[.$(OBJ_DIR).Modules._ctypes]_ctypes_test.obm : [.Modules._ctypes]_ctypes_test.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_ctypes_test.exe : [.$(OBJ_DIR).Modules._ctypes]_ctypes_test.obm + +! _decimal +DECIMAL_OBJ_LIST = - +[.$(OBJ_DIR).Modules._decimal.libmpdec]basearith.obd - +[.$(OBJ_DIR).Modules._decimal.libmpdec]constants.obd - +[.$(OBJ_DIR).Modules._decimal.libmpdec]context.obd - +[.$(OBJ_DIR).Modules._decimal.libmpdec]convolute.obd - +[.$(OBJ_DIR).Modules._decimal.libmpdec]crt.obd - +[.$(OBJ_DIR).Modules._decimal.libmpdec]difradix2.obd - +[.$(OBJ_DIR).Modules._decimal.libmpdec]fnt.obd - +[.$(OBJ_DIR).Modules._decimal.libmpdec]fourstep.obd - +[.$(OBJ_DIR).Modules._decimal.libmpdec]io.obd - +[.$(OBJ_DIR).Modules._decimal.libmpdec]memory.obd - +[.$(OBJ_DIR).Modules._decimal.libmpdec]mpdecimal.obd - +[.$(OBJ_DIR).Modules._decimal.libmpdec]numbertheory.obd - +[.$(OBJ_DIR).Modules._decimal.libmpdec]sixstep.obd - +[.$(OBJ_DIR).Modules._decimal.libmpdec]transpose.obd + +DECIMAL_HEADERS = - +[.Modules._decimal]docstrings.h - +[.Modules._decimal.libmpdec]basearith.h - +[.Modules._decimal.libmpdec]bits.h - +[.Modules._decimal.libmpdec]constants.h - +[.Modules._decimal.libmpdec]convolute.h - +[.Modules._decimal.libmpdec]crt.h - +[.Modules._decimal.libmpdec]difradix2.h - +[.Modules._decimal.libmpdec]fnt.h - +[.Modules._decimal.libmpdec]fourstep.h - +[.Modules._decimal.libmpdec]io.h - +[.Modules._decimal.libmpdec]mpalloc.h - +[.Modules._decimal.libmpdec]mpdecimal.h - +[.Modules._decimal.libmpdec]numbertheory.h - +[.Modules._decimal.libmpdec]sixstep.h - +[.Modules._decimal.libmpdec]transpose.h - +[.Modules._decimal.libmpdec]typearith.h - +[.Modules._decimal.libmpdec]umodarith.h + +[.$(OBJ_DIR).Modules._decimal]_decimal.obd : [.Modules._decimal]_decimal.c $(DECIMAL_HEADERS) $(PYTHON_HEADERS) +[.$(OBJ_DIR).Modules._decimal.libmpdec]basearith.obd : [.Modules._decimal.libmpdec]basearith.c $(DECIMAL_HEADERS) $(PYTHON_HEADERS) +[.$(OBJ_DIR).Modules._decimal.libmpdec]constants.obd : [.Modules._decimal.libmpdec]constants.c $(DECIMAL_HEADERS) $(PYTHON_HEADERS) +[.$(OBJ_DIR).Modules._decimal.libmpdec]context.obd : [.Modules._decimal.libmpdec]context.c $(DECIMAL_HEADERS) $(PYTHON_HEADERS) +[.$(OBJ_DIR).Modules._decimal.libmpdec]convolute.obd : [.Modules._decimal.libmpdec]convolute.c $(DECIMAL_HEADERS) $(PYTHON_HEADERS) +[.$(OBJ_DIR).Modules._decimal.libmpdec]crt.obd : [.Modules._decimal.libmpdec]crt.c $(DECIMAL_HEADERS) $(PYTHON_HEADERS) +[.$(OBJ_DIR).Modules._decimal.libmpdec]difradix2.obd : [.Modules._decimal.libmpdec]difradix2.c $(DECIMAL_HEADERS) $(PYTHON_HEADERS) +[.$(OBJ_DIR).Modules._decimal.libmpdec]fnt.obd : [.Modules._decimal.libmpdec]fnt.c $(DECIMAL_HEADERS) $(PYTHON_HEADERS) +[.$(OBJ_DIR).Modules._decimal.libmpdec]fourstep.obd : [.Modules._decimal.libmpdec]fourstep.c $(DECIMAL_HEADERS) $(PYTHON_HEADERS) +[.$(OBJ_DIR).Modules._decimal.libmpdec]io.obd : [.Modules._decimal.libmpdec]io.c $(DECIMAL_HEADERS) $(PYTHON_HEADERS) +[.$(OBJ_DIR).Modules._decimal.libmpdec]memory.obd : [.Modules._decimal.libmpdec]memory.c $(DECIMAL_HEADERS) $(PYTHON_HEADERS) +[.$(OBJ_DIR).Modules._decimal.libmpdec]mpdecimal.obd : [.Modules._decimal.libmpdec]mpdecimal.c $(DECIMAL_HEADERS) $(PYTHON_HEADERS) +[.$(OBJ_DIR).Modules._decimal.libmpdec]numbertheory.obd : [.Modules._decimal.libmpdec]numbertheory.c $(DECIMAL_HEADERS) $(PYTHON_HEADERS) +[.$(OBJ_DIR).Modules._decimal.libmpdec]sixstep.obd : [.Modules._decimal.libmpdec]sixstep.c $(DECIMAL_HEADERS) $(PYTHON_HEADERS) +[.$(OBJ_DIR).Modules._decimal.libmpdec]transpose.obd : [.Modules._decimal.libmpdec]transpose.c $(DECIMAL_HEADERS) $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_decimal.exe : [.$(OBJ_DIR).Modules._decimal]_decimal.obd,$(DECIMAL_OBJ_LIST) + +! _ssl +[.$(OBJ_DIR).Modules]_ssl.obm : [.Modules]_ssl.c [.Modules]socketmodule.h $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_ssl.exe : [.$(OBJ_DIR).Modules]_ssl.obm + +! _hashlib _hashopenssl +[.$(OBJ_DIR).Modules]_hashopenssl.obm : [.Modules]_hashopenssl.c [.Modules]hashlib.h $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_hashlib.exe : [.$(OBJ_DIR).Modules]_hashopenssl.obm + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! _sha256 sha256module +[.$(OBJ_DIR).Modules]sha256module.obm : [.Modules]sha256module.c [.Modules]hashlib.h $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_sha256.exe : [.$(OBJ_DIR).Modules]sha256module.obm + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! _sha512 sha512module +[.$(OBJ_DIR).Modules]sha512module.obm : [.Modules]sha512module.c [.Modules]hashlib.h $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_sha512.exe : [.$(OBJ_DIR).Modules]sha512module.obm + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! _md5 md5module +[.$(OBJ_DIR).Modules]md5module.obm : [.Modules]md5module.c [.Modules]hashlib.h $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_md5.exe : [.$(OBJ_DIR).Modules]md5module.obm + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! _sha1 sha1module +[.$(OBJ_DIR).Modules]sha1module.obm : [.Modules]sha1module.c [.Modules]hashlib.h $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_sha1.exe : [.$(OBJ_DIR).Modules]sha1module.obm + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! _blake2 modulesource +BLAKE2_OBJ_LIST = - +[.$(OBJ_DIR).Modules._blake2]blake2module.obm - +[.$(OBJ_DIR).Modules._blake2]blake2b_impl.obm - +[.$(OBJ_DIR).Modules._blake2]blake2s_impl.obm + +BLAKE2_HEADERS = - +[.Modules._blake2.impl]blake2-config.h - +[.Modules._blake2.impl]blake2-dispatch.c - +[.Modules._blake2.impl]blake2-impl.h - +[.Modules._blake2.impl]blake2-kat.h - +[.Modules._blake2.impl]blake2.h - +[.Modules._blake2.impl]blake2b-load-sse2.h - +[.Modules._blake2.impl]blake2b-load-sse41.h - +[.Modules._blake2.impl]blake2b-ref.c - +[.Modules._blake2.impl]blake2b-round.h - +[.Modules._blake2.impl]blake2b-test.c - +[.Modules._blake2.impl]blake2b.c - +[.Modules._blake2.impl]blake2bp-test.c - +[.Modules._blake2.impl]blake2bp.c - +[.Modules._blake2.impl]blake2s-load-sse2.h - +[.Modules._blake2.impl]blake2s-load-sse41.h - +[.Modules._blake2.impl]blake2s-load-xop.h - +[.Modules._blake2.impl]blake2s-ref.c - +[.Modules._blake2.impl]blake2s-round.h - +[.Modules._blake2.impl]blake2s-test.c - +[.Modules._blake2.impl]blake2s.c - +[.Modules._blake2.impl]blake2sp-test.c - +[.Modules._blake2.impl]blake2sp.c - +[.Modules]hashlib.h + +[.$(OBJ_DIR).Modules._blake2]blake2module.obm : [.Modules._blake2]blake2module.c $(BLAKE2_HEADERS) $(PYTHON_HEADERS) +[.$(OBJ_DIR).Modules._blake2]blake2b_impl.obm : [.Modules._blake2]blake2b_impl.c $(BLAKE2_HEADERS) $(PYTHON_HEADERS) +[.$(OBJ_DIR).Modules._blake2]blake2s_impl.obm : [.Modules._blake2]blake2s_impl.c $(BLAKE2_HEADERS) $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_blake2.exe : $(BLAKE2_OBJ_LIST) + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! _sha3 +SHA3_HEADERS = - +[.Modules._sha3.kcp]align.h - +[.Modules._sha3.kcp]KeccakHash.c - +[.Modules._sha3.kcp]KeccakHash.h - +[.Modules._sha3.kcp]KeccakP-1600-64.macros - +[.Modules._sha3.kcp]KeccakP-1600-inplace32BI.c - +[.Modules._sha3.kcp]KeccakP-1600-opt64-config.h - +[.Modules._sha3.kcp]KeccakP-1600-opt64.c - +[.Modules._sha3.kcp]KeccakP-1600-SnP-opt32.h - +[.Modules._sha3.kcp]KeccakP-1600-SnP-opt64.h - +[.Modules._sha3.kcp]KeccakP-1600-SnP.h - +[.Modules._sha3.kcp]KeccakP-1600-unrolling.macros - +[.Modules._sha3.kcp]KeccakSponge.c - +[.Modules._sha3.kcp]KeccakSponge.h - +[.Modules._sha3.kcp]KeccakSponge.inc - +[.Modules._sha3.kcp]PlSnP-Fallback.inc - +[.Modules._sha3.kcp]SnP-Relaned.h - +[.Modules]hashlib.h + +[.$(OBJ_DIR).Modules._sha3]sha3module.obm : [.Modules._sha3]sha3module.c $(SHA3_HEADERS) $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_sha3.exe : [.$(OBJ_DIR).Modules._sha3]sha3module.obm + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +!! modulename modulesource +! [.$(OBJ_DIR).Modules]modulesource.obm : [.Modules]modulesource.c $(PYTHON_HEADERS) +! [.$(OUT_DIR).$(DYNLOAD_DIR)]modulename.exe : [.$(OBJ_DIR).Modules]modulesource.obm +! @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: +! $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +!SWIG ============================================================ + +[.Modules.vms.decc]decc_wrap.c : [.Modules.vms.decc]decc.i + SWIG -python modules/vms/decc/decc.i + purge [.modules.vms.decc]decc_wrap.c + +[.$(OBJ_DIR).Modules.vms.decc]decc_wrap.obm : [.Modules.vms.decc]decc_wrap.c $(PYTHON_HEADERS) +[.$(OBJ_DIR).Modules.vms.decc]decc.obm : [.Modules.vms.decc]decc.c $(PYTHON_HEADERS) +[.$(OUT_DIR).$(DYNLOAD_DIR)]_decc.exe : [.$(OBJ_DIR).Modules.vms.decc]decc_wrap.obm,[.$(OBJ_DIR).Modules.vms.decc]decc.obm + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.jpidef]jpidef_wrap.c : [.modules.vms.jpidef]jpidef.i + SWIG -python modules/vms/jpidef/jpidef.i + purge [.modules.vms.jpidef]jpidef_wrap.c + +[.$(OBJ_DIR).modules.vms.jpidef]jpidef_wrap.obs : [.modules.vms.jpidef]jpidef_wrap.c +[.$(OUT_DIR).$(DYNLOAD_DIR)]_jpidef.exe : [.$(OBJ_DIR).modules.vms.jpidef]jpidef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.syidef]syidef_wrap.c : [.modules.vms.syidef]syidef.i + SWIG -python modules/vms/syidef/syidef.i + purge [.modules.vms.syidef]syidef_wrap.c + +[.$(OBJ_DIR).modules.vms.syidef]syidef_wrap.obs : [.modules.vms.syidef]syidef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_syidef.exe : [.$(OBJ_DIR).modules.vms.syidef]syidef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.clidef]clidef_wrap.c : [.modules.vms.clidef]clidef.i + SWIG -python modules/vms/clidef/clidef.i + purge [.modules.vms.clidef]clidef_wrap.c + +[.$(OBJ_DIR).modules.vms.clidef]clidef_wrap.obs : [.modules.vms.clidef]clidef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_clidef.exe : [.$(OBJ_DIR).modules.vms.clidef]clidef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.dvidef]dvidef_wrap.c : [.modules.vms.dvidef]dvidef.i + SWIG -python modules/vms/dvidef/dvidef.i + purge [.modules.vms.dvidef]dvidef_wrap.c + +[.$(OBJ_DIR).modules.vms.dvidef]dvidef_wrap.obs : [.modules.vms.dvidef]dvidef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_dvidef.exe : [.$(OBJ_DIR).modules.vms.dvidef]dvidef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.quidef]quidef_wrap.c : [.modules.vms.quidef]quidef.i + SWIG -python modules/vms/quidef/quidef.i + purge [.modules.vms.quidef]quidef_wrap.c + +[.$(OBJ_DIR).modules.vms.quidef]quidef_wrap.obs : [.modules.vms.quidef]quidef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_quidef.exe : [.$(OBJ_DIR).modules.vms.quidef]quidef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.psldef]psldef_wrap.c : [.modules.vms.psldef]psldef.i + SWIG -python modules/vms/psldef/psldef.i + purge [.modules.vms.psldef]psldef_wrap.c + +[.$(OBJ_DIR).modules.vms.psldef]psldef_wrap.obs : [.modules.vms.psldef]psldef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_psldef.exe : [.$(OBJ_DIR).modules.vms.psldef]psldef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.fabdef]fabdef_wrap.c : [.modules.vms.fabdef]fabdef.i + SWIG -python modules/vms/fabdef/fabdef.i + purge [.modules.vms.fabdef]fabdef_wrap.c + +[.$(OBJ_DIR).modules.vms.fabdef]fabdef_wrap.obs : [.modules.vms.fabdef]fabdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_fabdef.exe : [.$(OBJ_DIR).modules.vms.fabdef]fabdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.rmsdef]rmsdef_wrap.c : [.modules.vms.rmsdef]rmsdef.i + SWIG -python modules/vms/rmsdef/rmsdef.i + purge [.modules.vms.rmsdef]rmsdef_wrap.c + +[.$(OBJ_DIR).modules.vms.rmsdef]rmsdef_wrap.obs : [.modules.vms.rmsdef]rmsdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_rmsdef.exe : [.$(OBJ_DIR).modules.vms.rmsdef]rmsdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.pscandef]pscandef_wrap.c : [.modules.vms.pscandef]pscandef.i + SWIG -python modules/vms/pscandef/pscandef.i + purge [.modules.vms.pscandef]pscandef_wrap.c + +[.$(OBJ_DIR).modules.vms.pscandef]pscandef_wrap.obs : [.modules.vms.pscandef]pscandef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_pscandef.exe : [.$(OBJ_DIR).modules.vms.pscandef]pscandef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.prdef]prdef_wrap.c : [.modules.vms.prdef]prdef.i + SWIG -python modules/vms/prdef/prdef.i + purge [.modules.vms.prdef]prdef_wrap.c + +[.$(OBJ_DIR).modules.vms.prdef]prdef_wrap.obs : [.modules.vms.prdef]prdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_prdef.exe : [.$(OBJ_DIR).modules.vms.prdef]prdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.rsdmdef]rsdmdef_wrap.c : [.modules.vms.rsdmdef]rsdmdef.i + SWIG -python modules/vms/rsdmdef/rsdmdef.i + purge [.modules.vms.rsdmdef]rsdmdef_wrap.c + +[.$(OBJ_DIR).modules.vms.rsdmdef]rsdmdef_wrap.obs : [.modules.vms.rsdmdef]rsdmdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_rsdmdef.exe : [.$(OBJ_DIR).modules.vms.rsdmdef]rsdmdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.ppropdef]ppropdef_wrap.c : [.modules.vms.ppropdef]ppropdef.i + SWIG -python modules/vms/ppropdef/ppropdef.i + purge [.modules.vms.ppropdef]ppropdef_wrap.c + +[.$(OBJ_DIR).modules.vms.ppropdef]ppropdef_wrap.obs : [.modules.vms.ppropdef]ppropdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_ppropdef.exe : [.$(OBJ_DIR).modules.vms.ppropdef]ppropdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.maildef]maildef_wrap.c : [.modules.vms.maildef]maildef.i + SWIG -python modules/vms/maildef/maildef.i + purge [.modules.vms.maildef]maildef_wrap.c + +[.$(OBJ_DIR).modules.vms.maildef]maildef_wrap.obs : [.modules.vms.maildef]maildef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_maildef.exe : [.$(OBJ_DIR).modules.vms.maildef]maildef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.jbcmsgdef]jbcmsgdef_wrap.c : [.modules.vms.jbcmsgdef]jbcmsgdef.i + SWIG -python modules/vms/jbcmsgdef/jbcmsgdef.i + purge [.modules.vms.jbcmsgdef]jbcmsgdef_wrap.c + +[.$(OBJ_DIR).modules.vms.jbcmsgdef]jbcmsgdef_wrap.obs : [.modules.vms.jbcmsgdef]jbcmsgdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_jbcmsgdef.exe : [.$(OBJ_DIR).modules.vms.jbcmsgdef]jbcmsgdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.libclidef]libclidef_wrap.c : [.modules.vms.libclidef]libclidef.i + SWIG -python modules/vms/libclidef/libclidef.i + purge [.modules.vms.libclidef]libclidef_wrap.c + +[.$(OBJ_DIR).modules.vms.libclidef]libclidef_wrap.obs : [.modules.vms.libclidef]libclidef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_libclidef.exe : [.$(OBJ_DIR).modules.vms.libclidef]libclidef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.libdtdef]libdtdef_wrap.c : [.modules.vms.libdtdef]libdtdef.i + SWIG -python modules/vms/libdtdef/libdtdef.i + purge [.modules.vms.libdtdef]libdtdef_wrap.c + +[.$(OBJ_DIR).modules.vms.libdtdef]libdtdef_wrap.obs : [.modules.vms.libdtdef]libdtdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_libdtdef.exe : [.$(OBJ_DIR).modules.vms.libdtdef]libdtdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.libfisdef]libfisdef_wrap.c : [.modules.vms.libfisdef]libfisdef.i + SWIG -python modules/vms/libfisdef/libfisdef.i + purge [.modules.vms.libfisdef]libfisdef_wrap.c + +[.$(OBJ_DIR).modules.vms.libfisdef]libfisdef_wrap.obs : [.modules.vms.libfisdef]libfisdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_libfisdef.exe : [.$(OBJ_DIR).modules.vms.libfisdef]libfisdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.dcdef]dcdef_wrap.c : [.modules.vms.dcdef]dcdef.i + SWIG -python modules/vms/dcdef/dcdef.i + purge [.modules.vms.dcdef]dcdef_wrap.c + +[.$(OBJ_DIR).modules.vms.dcdef]dcdef_wrap.obs : [.modules.vms.dcdef]dcdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_dcdef.exe : [.$(OBJ_DIR).modules.vms.dcdef]dcdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.cvtfnmdef]cvtfnmdef_wrap.c : [.modules.vms.cvtfnmdef]cvtfnmdef.i + SWIG -python modules/vms/cvtfnmdef/cvtfnmdef.i + purge [.modules.vms.cvtfnmdef]cvtfnmdef_wrap.c + +[.$(OBJ_DIR).modules.vms.cvtfnmdef]cvtfnmdef_wrap.obs : [.modules.vms.cvtfnmdef]cvtfnmdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_cvtfnmdef.exe : [.$(OBJ_DIR).modules.vms.cvtfnmdef]cvtfnmdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.fscndef]fscndef_wrap.c : [.modules.vms.fscndef]fscndef.i + SWIG -python modules/vms/fscndef/fscndef.i + purge [.modules.vms.fscndef]fscndef_wrap.c + +[.$(OBJ_DIR).modules.vms.fscndef]fscndef_wrap.obs : [.modules.vms.fscndef]fscndef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_fscndef.exe : [.$(OBJ_DIR).modules.vms.fscndef]fscndef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.fpdef]fpdef_wrap.c : [.modules.vms.fpdef]fpdef.i + SWIG -python modules/vms/fpdef/fpdef.i + purge [.modules.vms.fpdef]fpdef_wrap.c + +[.$(OBJ_DIR).modules.vms.fpdef]fpdef_wrap.obs : [.modules.vms.fpdef]fpdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_fpdef.exe : [.$(OBJ_DIR).modules.vms.fpdef]fpdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.fdldef]fdldef_wrap.c : [.modules.vms.fdldef]fdldef.i + SWIG -python modules/vms/fdldef/fdldef.i + purge [.modules.vms.fdldef]fdldef_wrap.c + +[.$(OBJ_DIR).modules.vms.fdldef]fdldef_wrap.obs : [.modules.vms.fdldef]fdldef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_fdldef.exe : [.$(OBJ_DIR).modules.vms.fdldef]fdldef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.dpsdef]dpsdef_wrap.c : [.modules.vms.dpsdef]dpsdef.i + SWIG -python modules/vms/dpsdef/dpsdef.i + purge [.modules.vms.dpsdef]dpsdef_wrap.c + +[.$(OBJ_DIR).modules.vms.dpsdef]dpsdef_wrap.obs : [.modules.vms.dpsdef]dpsdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_dpsdef.exe : [.$(OBJ_DIR).modules.vms.dpsdef]dpsdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.efndef]efndef_wrap.c : [.modules.vms.efndef]efndef.i + SWIG -python modules/vms/efndef/efndef.i + purge [.modules.vms.efndef]efndef_wrap.c + +[.$(OBJ_DIR).modules.vms.efndef]efndef_wrap.obs : [.modules.vms.efndef]efndef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_efndef.exe : [.$(OBJ_DIR).modules.vms.efndef]efndef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.dvsdef]dvsdef_wrap.c : [.modules.vms.dvsdef]dvsdef.i + SWIG -python modules/vms/dvsdef/dvsdef.i + purge [.modules.vms.dvsdef]dvsdef_wrap.c + +[.$(OBJ_DIR).modules.vms.dvsdef]dvsdef_wrap.obs : [.modules.vms.dvsdef]dvsdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_dvsdef.exe : [.$(OBJ_DIR).modules.vms.dvsdef]dvsdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.eradef]eradef_wrap.c : [.modules.vms.eradef]eradef.i + SWIG -python modules/vms/eradef/eradef.i + purge [.modules.vms.eradef]eradef_wrap.c + +[.$(OBJ_DIR).modules.vms.eradef]eradef_wrap.obs : [.modules.vms.eradef]eradef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_eradef.exe : [.$(OBJ_DIR).modules.vms.eradef]eradef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.iodef]iodef_wrap.c : [.modules.vms.iodef]iodef.i + SWIG -python modules/vms/iodef/iodef.i + purge [.modules.vms.iodef]iodef_wrap.c + +[.$(OBJ_DIR).modules.vms.iodef]iodef_wrap.obs : [.modules.vms.iodef]iodef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_iodef.exe : [.$(OBJ_DIR).modules.vms.iodef]iodef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.initdef]initdef_wrap.c : [.modules.vms.initdef]initdef.i + SWIG -python modules/vms/initdef/initdef.i + purge [.modules.vms.initdef]initdef_wrap.c + +[.$(OBJ_DIR).modules.vms.initdef]initdef_wrap.obs : [.modules.vms.initdef]initdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_initdef.exe : [.$(OBJ_DIR).modules.vms.initdef]initdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.issdef]issdef_wrap.c : [.modules.vms.issdef]issdef.i + SWIG -python modules/vms/issdef/issdef.i + purge [.modules.vms.issdef]issdef_wrap.c + +[.$(OBJ_DIR).modules.vms.issdef]issdef_wrap.obs : [.modules.vms.issdef]issdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_issdef.exe : [.$(OBJ_DIR).modules.vms.issdef]issdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.impdef]impdef_wrap.c : [.modules.vms.impdef]impdef.i + SWIG -python modules/vms/impdef/impdef.i + purge [.modules.vms.impdef]impdef_wrap.c + +[.$(OBJ_DIR).modules.vms.impdef]impdef_wrap.obs : [.modules.vms.impdef]impdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_impdef.exe : [.$(OBJ_DIR).modules.vms.impdef]impdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.mntdef]mntdef_wrap.c : [.modules.vms.mntdef]mntdef.i + SWIG -python modules/vms/mntdef/mntdef.i + purge [.modules.vms.mntdef]mntdef_wrap.c + +[.$(OBJ_DIR).modules.vms.mntdef]mntdef_wrap.obs : [.modules.vms.mntdef]mntdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_mntdef.exe : [.$(OBJ_DIR).modules.vms.mntdef]mntdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.nsadef]nsadef_wrap.c : [.modules.vms.nsadef]nsadef.i + SWIG -python modules/vms/nsadef/nsadef.i + purge [.modules.vms.nsadef]nsadef_wrap.c + +[.$(OBJ_DIR).modules.vms.nsadef]nsadef_wrap.obs : [.modules.vms.nsadef]nsadef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_nsadef.exe : [.$(OBJ_DIR).modules.vms.nsadef]nsadef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.ossdef]ossdef_wrap.c : [.modules.vms.ossdef]ossdef.i + SWIG -python modules/vms/ossdef/ossdef.i + purge [.modules.vms.ossdef]ossdef_wrap.c + +[.$(OBJ_DIR).modules.vms.ossdef]ossdef_wrap.obs : [.modules.vms.ossdef]ossdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_ossdef.exe : [.$(OBJ_DIR).modules.vms.ossdef]ossdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.pcbdef]pcbdef_wrap.c : [.modules.vms.pcbdef]pcbdef.i + SWIG -python modules/vms/pcbdef/pcbdef.i + purge [.modules.vms.pcbdef]pcbdef_wrap.c + +[.$(OBJ_DIR).modules.vms.pcbdef]pcbdef_wrap.obs : [.modules.vms.pcbdef]pcbdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_pcbdef.exe : [.$(OBJ_DIR).modules.vms.pcbdef]pcbdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.prxdef]prxdef_wrap.c : [.modules.vms.prxdef]prxdef.i + SWIG -python modules/vms/prxdef/prxdef.i + purge [.modules.vms.prxdef]prxdef_wrap.c + +[.$(OBJ_DIR).modules.vms.prxdef]prxdef_wrap.obs : [.modules.vms.prxdef]prxdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_prxdef.exe : [.$(OBJ_DIR).modules.vms.prxdef]prxdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.prvdef]prvdef_wrap.c : [.modules.vms.prvdef]prvdef.i + SWIG -python modules/vms/prvdef/prvdef.i + purge [.modules.vms.prvdef]prvdef_wrap.c + +[.$(OBJ_DIR).modules.vms.prvdef]prvdef_wrap.obs : [.modules.vms.prvdef]prvdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_prvdef.exe : [.$(OBJ_DIR).modules.vms.prvdef]prvdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.pqldef]pqldef_wrap.c : [.modules.vms.pqldef]pqldef.i + SWIG -python modules/vms/pqldef/pqldef.i + purge [.modules.vms.pqldef]pqldef_wrap.c + +[.$(OBJ_DIR).modules.vms.pqldef]pqldef_wrap.obs : [.modules.vms.pqldef]pqldef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_pqldef.exe : [.$(OBJ_DIR).modules.vms.pqldef]pqldef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.prcdef]prcdef_wrap.c : [.modules.vms.prcdef]prcdef.i + SWIG -python modules/vms/prcdef/prcdef.i + purge [.modules.vms.prcdef]prcdef_wrap.c + +[.$(OBJ_DIR).modules.vms.prcdef]prcdef_wrap.obs : [.modules.vms.prcdef]prcdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_prcdef.exe : [.$(OBJ_DIR).modules.vms.prcdef]prcdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.lckdef]lckdef_wrap.c : [.modules.vms.lckdef]lckdef.i + SWIG -python modules/vms/lckdef/lckdef.i + purge [.modules.vms.lckdef]lckdef_wrap.c + +[.$(OBJ_DIR).modules.vms.lckdef]lckdef_wrap.obs : [.modules.vms.lckdef]lckdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_lckdef.exe : [.$(OBJ_DIR).modules.vms.lckdef]lckdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.kgbdef]kgbdef_wrap.c : [.modules.vms.kgbdef]kgbdef.i + SWIG -python modules/vms/kgbdef/kgbdef.i + purge [.modules.vms.kgbdef]kgbdef_wrap.c + +[.$(OBJ_DIR).modules.vms.kgbdef]kgbdef_wrap.obs : [.modules.vms.kgbdef]kgbdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_kgbdef.exe : [.$(OBJ_DIR).modules.vms.kgbdef]kgbdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.pxbdef]pxbdef_wrap.c : [.modules.vms.pxbdef]pxbdef.i + SWIG -python modules/vms/pxbdef/pxbdef.i + purge [.modules.vms.pxbdef]pxbdef_wrap.c + +[.$(OBJ_DIR).modules.vms.pxbdef]pxbdef_wrap.obs : [.modules.vms.pxbdef]pxbdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_pxbdef.exe : [.$(OBJ_DIR).modules.vms.pxbdef]pxbdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.sdvdef]sdvdef_wrap.c : [.modules.vms.sdvdef]sdvdef.i + SWIG -python modules/vms/sdvdef/sdvdef.i + purge [.modules.vms.sdvdef]sdvdef_wrap.c + +[.$(OBJ_DIR).modules.vms.sdvdef]sdvdef_wrap.obs : [.modules.vms.sdvdef]sdvdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_sdvdef.exe : [.$(OBJ_DIR).modules.vms.sdvdef]sdvdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.stsdef]stsdef_wrap.c : [.modules.vms.stsdef]stsdef.i + SWIG -python modules/vms/stsdef/stsdef.i + purge [.modules.vms.stsdef]stsdef_wrap.c + +[.$(OBJ_DIR).modules.vms.stsdef]stsdef_wrap.obs : [.modules.vms.stsdef]stsdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_stsdef.exe : [.$(OBJ_DIR).modules.vms.stsdef]stsdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.lnmdef]lnmdef_wrap.c : [.modules.vms.lnmdef]lnmdef.i + SWIG -python modules/vms/lnmdef/lnmdef.i + purge [.modules.vms.lnmdef]lnmdef_wrap.c + +[.$(OBJ_DIR).modules.vms.lnmdef]lnmdef_wrap.obs : [.modules.vms.lnmdef]lnmdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_lnmdef.exe : [.$(OBJ_DIR).modules.vms.lnmdef]lnmdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.iccdef]iccdef_wrap.c : [.modules.vms.iccdef]iccdef.i + SWIG -python modules/vms/iccdef/iccdef.i + purge [.modules.vms.iccdef]iccdef_wrap.c + +[.$(OBJ_DIR).modules.vms.iccdef]iccdef_wrap.obs : [.modules.vms.iccdef]iccdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_iccdef.exe : [.$(OBJ_DIR).modules.vms.iccdef]iccdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.dscdef]dscdef_wrap.c : [.modules.vms.dscdef]dscdef.i + SWIG -python modules/vms/dscdef/dscdef.i + purge [.modules.vms.dscdef]dscdef_wrap.c + +[.$(OBJ_DIR).modules.vms.dscdef]dscdef_wrap.obs : [.modules.vms.dscdef]dscdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_dscdef.exe : [.$(OBJ_DIR).modules.vms.dscdef]dscdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.dmtdef]dmtdef_wrap.c : [.modules.vms.dmtdef]dmtdef.i + SWIG -python modules/vms/dmtdef/dmtdef.i + purge [.modules.vms.dmtdef]dmtdef_wrap.c + +[.$(OBJ_DIR).modules.vms.dmtdef]dmtdef_wrap.obs : [.modules.vms.dmtdef]dmtdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_dmtdef.exe : [.$(OBJ_DIR).modules.vms.dmtdef]dmtdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.cmbdef]cmbdef_wrap.c : [.modules.vms.cmbdef]cmbdef.i + SWIG -python modules/vms/cmbdef/cmbdef.i + purge [.modules.vms.cmbdef]cmbdef_wrap.c + +[.$(OBJ_DIR).modules.vms.cmbdef]cmbdef_wrap.obs : [.modules.vms.cmbdef]cmbdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_cmbdef.exe : [.$(OBJ_DIR).modules.vms.cmbdef]cmbdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.iledef]iledef_wrap.c : [.modules.vms.iledef]iledef.i + SWIG -python modules/vms/iledef/iledef.i + purge [.modules.vms.iledef]iledef_wrap.c + +[.$(OBJ_DIR).modules.vms.iledef]iledef_wrap.obs : [.modules.vms.iledef]iledef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_iledef.exe : [.$(OBJ_DIR).modules.vms.iledef]iledef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.lkidef]lkidef_wrap.c : [.modules.vms.lkidef]lkidef.i + SWIG -python modules/vms/lkidef/lkidef.i + purge [.modules.vms.lkidef]lkidef_wrap.c + +[.$(OBJ_DIR).modules.vms.lkidef]lkidef_wrap.obs : [.modules.vms.lkidef]lkidef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_lkidef.exe : [.$(OBJ_DIR).modules.vms.lkidef]lkidef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.sjcdef]sjcdef_wrap.c : [.modules.vms.sjcdef]sjcdef.i + SWIG -python modules/vms/sjcdef/sjcdef.i + purge [.modules.vms.sjcdef]sjcdef_wrap.c + +[.$(OBJ_DIR).modules.vms.sjcdef]sjcdef_wrap.obs : [.modules.vms.sjcdef]sjcdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_sjcdef.exe : [.$(OBJ_DIR).modules.vms.sjcdef]sjcdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.ssdef]ssdef_wrap.c : [.modules.vms.ssdef]ssdef.i + SWIG -python modules/vms/ssdef/ssdef.i + purge [.modules.vms.ssdef]ssdef_wrap.c + +[.$(OBJ_DIR).modules.vms.ssdef]ssdef_wrap.obs : [.modules.vms.ssdef]ssdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_ssdef.exe : [.$(OBJ_DIR).modules.vms.ssdef]ssdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.ciadef]ciadef_wrap.c : [.modules.vms.ciadef]ciadef.i + SWIG -python modules/vms/ciadef/ciadef.i + purge [.modules.vms.ciadef]ciadef_wrap.c + +[.$(OBJ_DIR).modules.vms.ciadef]ciadef_wrap.obs : [.modules.vms.ciadef]ciadef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_ciadef.exe : [.$(OBJ_DIR).modules.vms.ciadef]ciadef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.capdef]capdef_wrap.c : [.modules.vms.capdef]capdef.i + SWIG -python modules/vms/capdef/capdef.i + purge [.modules.vms.capdef]capdef_wrap.c + +[.$(OBJ_DIR).modules.vms.capdef]capdef_wrap.obs : [.modules.vms.capdef]capdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_capdef.exe : [.$(OBJ_DIR).modules.vms.capdef]capdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.chpdef]chpdef_wrap.c : [.modules.vms.chpdef]chpdef.i + SWIG -python modules/vms/chpdef/chpdef.i + purge [.modules.vms.chpdef]chpdef_wrap.c + +[.$(OBJ_DIR).modules.vms.chpdef]chpdef_wrap.obs : [.modules.vms.chpdef]chpdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_chpdef.exe : [.$(OBJ_DIR).modules.vms.chpdef]chpdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.uaidef]uaidef_wrap.c : [.modules.vms.uaidef]uaidef.i + SWIG -python modules/vms/uaidef/uaidef.i + purge [.modules.vms.uaidef]uaidef_wrap.c + +[.$(OBJ_DIR).modules.vms.uaidef]uaidef_wrap.obs : [.modules.vms.uaidef]uaidef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_uaidef.exe : [.$(OBJ_DIR).modules.vms.uaidef]uaidef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.uafdef]uafdef_wrap.c : [.modules.vms.uafdef]uafdef.i + SWIG -python modules/vms/uafdef/uafdef.i + purge [.modules.vms.uafdef]uafdef_wrap.c + +[.$(OBJ_DIR).modules.vms.uafdef]uafdef_wrap.obs : [.modules.vms.uafdef]uafdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_uafdef.exe : [.$(OBJ_DIR).modules.vms.uafdef]uafdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.rmidef]rmidef_wrap.c : [.modules.vms.rmidef]rmidef.i + SWIG -python modules/vms/rmidef/rmidef.i + purge [.modules.vms.rmidef]rmidef_wrap.c + +[.$(OBJ_DIR).modules.vms.rmidef]rmidef_wrap.obs : [.modules.vms.rmidef]rmidef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_rmidef.exe : [.$(OBJ_DIR).modules.vms.rmidef]rmidef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.regdef]regdef_wrap.c : [.modules.vms.regdef]regdef.i + SWIG -python modules/vms/regdef/regdef.i + purge [.modules.vms.regdef]regdef_wrap.c + +[.$(OBJ_DIR).modules.vms.regdef]regdef_wrap.obs : [.modules.vms.regdef]regdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_regdef.exe : [.$(OBJ_DIR).modules.vms.regdef]regdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.rabdef]rabdef_wrap.c : [.modules.vms.rabdef]rabdef.i + SWIG -python modules/vms/rabdef/rabdef.i + purge [.modules.vms.rabdef]rabdef_wrap.c + +[.$(OBJ_DIR).modules.vms.rabdef]rabdef_wrap.obs : [.modules.vms.rabdef]rabdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_rabdef.exe : [.$(OBJ_DIR).modules.vms.rabdef]rabdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +! [.modules.vms.accdef]accdef_wrap.c : [.modules.vms.accdef]accdef.i +! SWIG -python modules/vms/accdef/accdef.i +! purge [.modules.vms.accdef]accdef_wrap.c + +! [.$(OBJ_DIR).modules.vms.accdef]accdef_wrap.obs : [.modules.vms.accdef]accdef_wrap.c + +! [.$(OUT_DIR).$(DYNLOAD_DIR)]_accdef.exe : [.$(OBJ_DIR).modules.vms.accdef]accdef_wrap.obs +! @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: +! $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.$(OBJ_DIR).modules.vms.accdef]accdef.obs : [.modules.vms.accdef]accdef.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_accdef.exe : [.$(OBJ_DIR).modules.vms.accdef]accdef.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + + +[.modules.vms.acldef]acldef_wrap.c : [.modules.vms.acldef]acldef.i + SWIG -python modules/vms/acldef/acldef.i + purge [.modules.vms.acldef]acldef_wrap.c + +[.$(OBJ_DIR).modules.vms.acldef]acldef_wrap.obs : [.modules.vms.acldef]acldef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_acldef.exe : [.$(OBJ_DIR).modules.vms.acldef]acldef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.acrdef]acrdef_wrap.c : [.modules.vms.acrdef]acrdef.i + SWIG -python modules/vms/acrdef/acrdef.i + purge [.modules.vms.acrdef]acrdef_wrap.c + +[.$(OBJ_DIR).modules.vms.acrdef]acrdef_wrap.obs : [.modules.vms.acrdef]acrdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_acrdef.exe : [.$(OBJ_DIR).modules.vms.acrdef]acrdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.armdef]armdef_wrap.c : [.modules.vms.armdef]armdef.i + SWIG -python modules/vms/armdef/armdef.i + purge [.modules.vms.armdef]armdef_wrap.c + +[.$(OBJ_DIR).modules.vms.armdef]armdef_wrap.obs : [.modules.vms.armdef]armdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_armdef.exe : [.$(OBJ_DIR).modules.vms.armdef]armdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.stenvdef]stenvdef_wrap.c : [.modules.vms.stenvdef]stenvdef.i + SWIG -python modules/vms/stenvdef/stenvdef.i + purge [.modules.vms.stenvdef]stenvdef_wrap.c + +[.$(OBJ_DIR).modules.vms.stenvdef]stenvdef_wrap.obs : [.modules.vms.stenvdef]stenvdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_stenvdef.exe : [.$(OBJ_DIR).modules.vms.stenvdef]stenvdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.statedef]statedef_wrap.c : [.modules.vms.statedef]statedef.i + SWIG -python modules/vms/statedef/statedef.i + purge [.modules.vms.statedef]statedef_wrap.c + +[.$(OBJ_DIR).modules.vms.statedef]statedef_wrap.obs : [.modules.vms.statedef]statedef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_statedef.exe : [.$(OBJ_DIR).modules.vms.statedef]statedef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.brkdef]brkdef_wrap.c : [.modules.vms.brkdef]brkdef.i + SWIG -python modules/vms/brkdef/brkdef.i + purge [.modules.vms.brkdef]brkdef_wrap.c + +[.$(OBJ_DIR).modules.vms.brkdef]brkdef_wrap.obs : [.modules.vms.brkdef]brkdef_wrap.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_brkdef.exe : [.$(OBJ_DIR).modules.vms.brkdef]brkdef_wrap.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.sys]sys_wrap.c : [.modules.vms.sys]sys.i + SWIG -python modules/vms/sys/sys.i + purge [.modules.vms.sys]sys_wrap.c + +[.$(OBJ_DIR).modules.vms.sys]sys_wrap.obs : [.modules.vms.sys]sys_wrap.c + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC)$(PY_CFLAGS_OSF_ILE)/OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).modules.vms.sys]sys.obs : [.modules.vms.sys]sys.c + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC)$(PY_CFLAGS_OSF_ILE)/OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_sys.exe : [.$(OBJ_DIR).modules.vms.sys]sys_wrap.obs,- +[.$(OBJ_DIR).modules.vms.sys]sys.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +!! ************ DTR *********** +[.modules.vms.dtr]dtr_wrap.c : [.modules.vms.dtr]dtr.i + SWIG -python modules/vms/dtr/dtr.i + purge [.modules.vms.dtr]dtr_wrap.c + +[.$(OBJ_DIR).modules.vms.dtr]dtr_wrap.obs : [.modules.vms.dtr]dtr_wrap.c + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC)$(PY_CFLAGS_DTR)/OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).modules.vms.dtr]dtr.obs : [.modules.vms.dtr]dtr.c + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC)$(PY_CFLAGS_DTR)/OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).modules.vms.dtr]rec.obs : [.modules.vms.dtr]rec.c + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC)$(PY_CFLAGS_DTR)/OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OBJ_DIR).modules.vms.dtr]rsscanf.obs : [.modules.vms.dtr]rsscanf.c + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC)$(PY_CFLAGS_DTR)/OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_dtr.exe : [.$(OBJ_DIR).modules.vms.dtr]dtr_wrap.obs,- +[.$(OBJ_DIR).modules.vms.dtr]dtr.obs,- +[.$(OBJ_DIR).modules.vms.dtr]rec.obs,- +[.$(OBJ_DIR).modules.vms.dtr]rsscanf.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.dtr]rec_wrap.c : [.modules.vms.dtr]rec.i + SWIG -python modules/vms/dtr/rec.i + purge [.modules.vms.dtr]rec_wrap.c + +[.$(OBJ_DIR).modules.vms.dtr]rec_wrap.obs : [.modules.vms.dtr]rec_wrap.c + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(CC)$(PY_CFLAGS_DTR)/OBJECT=$(MMS$TARGET) $(MMS$SOURCE) + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_rec.exe : [.$(OBJ_DIR).modules.vms.dtr]rec_wrap.obs,- +[.$(OBJ_DIR).modules.vms.dtr]rec.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +!! ^^^^^^^^^^^ DTR ^^^^^^^^^^^ + +! RDB need sql$mod installed +[.modules.rdb]rdb_wrap.c : [.modules.rdb]rdb.i, [.modules.rdb]db.h + SWIG -python modules/rdb/rdb.i + purge [.modules.rdb]rdb_wrap.c + +[.$(OBJ_DIR).modules.rdb]rdb_wrap.obs : [.modules.rdb]rdb_wrap.c + +[.$(OBJ_DIR).modules.rdb]db.obs : [.modules.rdb]db.c, [.modules.rdb]db.h + +[.$(OBJ_DIR).modules.rdb]sql.obj : [.modules.rdb]sql.sqlmod + sqlmod [.modules.rdb]sql.sqlmod + rename sql.obj python$build_obj:[modules.rdb] + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_rdb.exe : [.$(OBJ_DIR).modules.rdb]rdb_wrap.obs,- +[.$(OBJ_DIR).modules.rdb]db.obs,- +[.$(OBJ_DIR).modules.rdb]sql.obj + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.ile3]ile3_wrap.c : [.modules.vms.ile3]ile3.i + SWIG -python modules/vms/ile3/ile3.i + purge [.modules.vms.ile3]ile3_wrap.c + +[.$(OBJ_DIR).modules.vms.ile3]ile3_wrap.obs : [.modules.vms.ile3]ile3_wrap.c + +[.$(OBJ_DIR).modules.vms.ile3]ile3.obs : [.modules.vms.ile3]ile3.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_ile3.exe : [.$(OBJ_DIR).modules.vms.ile3]ile3_wrap.obs,- +[.$(OBJ_DIR).modules.vms.ile3]ile3.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.modules.vms.lib]lib_wrap.c : [.modules.vms.lib]lib.i + SWIG -python modules/vms/lib/lib.i + purge [.modules.vms.lib]lib_wrap.c + +[.$(OBJ_DIR).modules.vms.lib]lib_wrap.obs : [.modules.vms.lib]lib_wrap.c + +[.$(OBJ_DIR).modules.vms.lib]lib.obs : [.modules.vms.lib]lib.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_lib.exe : [.$(OBJ_DIR).modules.vms.lib]lib_wrap.obs,- +[.$(OBJ_DIR).modules.vms.lib]lib.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + +[.$(OBJ_DIR).Modules.vms.rms]rms.obs : [.Modules.vms.rms]rms.c + +[.$(OUT_DIR).$(DYNLOAD_DIR)]_rms.exe : [.$(OBJ_DIR).Modules.vms.rms]rms.obs + @ pipe create/dir $(DIR $(MMS$TARGET)) | copy SYS$INPUT nl: + $(LINK)$(LINKFLAGS)/SHARE=python$build_out:[$(DYNLOAD_DIR)]$(NOTDIR $(MMS$TARGET_NAME)).EXE $(MMS$SOURCE_LIST),[.opt]$(NOTDIR $(MMS$TARGET_NAME)).opt/OPT + + diff --git a/Python3_names.com b/Python3_names.com new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_UHl0aG9uM19uYW1lcy5jb20= --- /dev/null +++ b/Python3_names.com @@ -0,0 +1,15 @@ +$ com_nam = f$environment("procedure") +$ com_dir = f$parse(com_nam,,,"directory") +$ com_dev = f$parse(com_nam,,,"device") +$ com_pat = com_dev + com_dir +$ INSTALL_DIR = com_pat - "]" + ".out.python.]" +$ pipe create/dir 'INSTALL_DIR' | copy SYS$INPUT nl: +$ define /trans=concealed python$root 'INSTALL_DIR' +$ define PYTHONHOME "/python$root" +$ +$ ! define PYTHONCASEOK "YES" +$ +$ ! define PYTHONMALLOC "malloc_debug" +$ +$ define python$shr python$root:[lib]python$shr.exe +$ python :== $python$root:[bin]python3.exe diff --git a/build/_sysconfigdata__OpenVMS_cpython-38-ia64-openvms.py b/build/_sysconfigdata__OpenVMS_cpython-38-ia64-openvms.py new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_YnVpbGQvX3N5c2NvbmZpZ2RhdGFfX09wZW5WTVNfY3B5dGhvbi0zOC1pYTY0LW9wZW52bXMucHk= --- /dev/null +++ b/build/_sysconfigdata__OpenVMS_cpython-38-ia64-openvms.py @@ -0,0 +1,697 @@ +# system configuration generated and used by the sysconfig module +build_time_vars = {'ABIFLAGS': '', + 'AC_APPLE_UNIVERSAL_BUILD': 0, + 'AIX_GENUINE_CPLUSPLUS': 0, + 'ALT_SOABI': 0, + 'ANDROID_API_LEVEL': 0, + 'AR': 'LIBRARY', + 'ARFLAGS': '/CREATE', + 'BASECFLAGS': '/NAMES=(AS_IS,SHORTENED)/WARNINGS=WARNINGS=ALL', + 'BASECPPFLAGS': '', + 'BASEMODLIBS': '', + 'BINDIR': '/usr/local/bin', + 'BINLIBDEST': '/usr/local/lib/python3.8', + 'BLDLIBRARY': 'python$shr.exe', + 'BLDSHARED': 'LINK /SHAREABLE=', + 'BUILDEXE': 'LINK /EXECUTABLE=', + 'BUILDPYTHON': 'python', + 'BUILD_GNU_TYPE': 'ia64-openvms', + 'BYTESTR_DEPS': '\\', + 'CC': 'CC', + 'CCSHARED': '', + 'CFLAGS': '/NODEBUG/OPTIMIZE/NOLIST/NAMES=(AS_IS,SHORTENED)/WARNINGS=WARNINGS=ALL/DEFINE=(_NDEBUG,_USE_STD_STAT,__STDC_FORMAT_MACROS))/INCLUDE_DIRECTORY=([],[.Include],[.Include.internal],oss$root:[include],[.vms])', + 'CFLAGSFORSHARED': '', + 'CFLAGS_ALIASING': '', + 'CONFIGFILES': '', + 'CONFIGURE_CFLAGS': '', + 'CONFIGURE_CFLAGS_NODIST': '/NODEBUG/OPTIMIZE/NOLIST/NAMES=(AS_IS,SHORTENED)/WARNINGS=WARNINGS=ALL/DEFINE=(_NDEBUG,_USE_STD_STAT,__STDC_FORMAT_MACROS))/INCLUDE_DIRECTORY=([],[.Include],[.Include.internal],oss$root:[include],[.vms])', + 'CONFIGURE_CPPFLAGS': '', + 'CONFIGURE_LDFLAGS': '', + 'CONFIGURE_LDFLAGS_NODIST': '', + 'CONFIG_ARGS': "'--enable-optimizations' '--with-ensurepip=install'", + 'CONFINCLUDEDIR': '/usr/local/include', + 'CONFINCLUDEPY': '/usr/local/include/python3.8', + 'COREPYTHONPATH': '', + 'COVERAGE_INFO': '/home/user/Python-3.8.2/coverage.info', + 'COVERAGE_REPORT': '/home/user/Python-3.8.2/lcov-report', + 'COVERAGE_REPORT_OPTIONS': '--no-branch-coverage --title "CPython lcov ' + 'report"', + 'CPPFLAGS': '/NODEBUG/OPTIMIZE/NOLIST/NAMES=(AS_IS,SHORTENED)/WARNINGS=WARNINGS=ALL/DEFINE=(_NDEBUG,_USE_STD_STAT,__STDC_FORMAT_MACROS))/INCLUDE_DIRECTORY=([],[.Include],[.Include.internal],oss$root:[include],[.vms])', + 'CXX': 'CXX', + 'DESTDIRS': '/usr/local /usr/local/lib /usr/local/lib/python3.8 ' + '/usr/local/lib/python3.8/lib-dynload', + 'DESTLIB': '/usr/local/lib/python3.8', + 'DESTPATH': '', + 'DESTSHARED': '/usr/local/lib/python3.8/lib-dynload', + 'DFLAGS': '', + 'DIRMODE': 755, + 'DIST': 'README.rst ChangeLog configure configure.ac acconfig.h pyconfig.h.in ' + 'Makefile.pre.in Include Lib Misc Ext-dummy', + 'DISTDIRS': 'Include Lib Misc Ext-dummy', + 'DISTFILES': 'README.rst ChangeLog configure configure.ac acconfig.h ' + 'pyconfig.h.in Makefile.pre.in', + 'DLINCLDIR': '.', + 'DLLLIBRARY': '', + 'DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754': 0, + 'DOUBLE_IS_BIG_ENDIAN_IEEE754': 0, + 'DOUBLE_IS_LITTLE_ENDIAN_IEEE754': 1, + 'DTRACE': '', + 'DTRACE_DEPS': '\\', + 'DTRACE_HEADERS': '', + 'DTRACE_OBJS': '', + 'DYNLOADFILE': 'dynload_shlib.o', + 'ENABLE_IPV6': 1, + 'ENSUREPIP': 'install', + 'EXE': '', + 'EXEMODE': 755, + 'EXTRATESTOPTS': '', + 'EXTRA_CFLAGS': '', + 'EXT_SUFFIX': '.exe', + 'FILEMODE': 644, + 'FLOAT_WORDS_BIGENDIAN': 0, + 'FLOCK_NEEDS_LIBBSD': 0, + 'GETPGRP_HAVE_ARG': 0, + 'GETTIMEOFDAY_NO_TZ': 0, + 'GITBRANCH': '', + 'GITTAG': '', + 'GITVERSION': '', + 'GNULD': 'no', + 'HAVE_ACCEPT4': 1, + 'HAVE_ACOSH': 1, + 'HAVE_ADDRINFO': 1, + 'HAVE_ALARM': 1, + 'HAVE_ALIGNED_REQUIRED': 0, + 'HAVE_ALLOCA_H': 0, + 'HAVE_ALTZONE': 0, + 'HAVE_ASINH': 1, + 'HAVE_ASM_TYPES_H': 1, + 'HAVE_ATANH': 1, + 'HAVE_BIND_TEXTDOMAIN_CODESET': 1, + 'HAVE_BLUETOOTH_BLUETOOTH_H': 0, + 'HAVE_BLUETOOTH_H': 0, + 'HAVE_BROKEN_MBSTOWCS': 0, + 'HAVE_BROKEN_NICE': 0, + 'HAVE_BROKEN_PIPE_BUF': 0, + 'HAVE_BROKEN_POLL': 0, + 'HAVE_BROKEN_POSIX_SEMAPHORES': 0, + 'HAVE_BROKEN_PTHREAD_SIGMASK': 0, + 'HAVE_BROKEN_SEM_GETVALUE': 0, + 'HAVE_BROKEN_UNSETENV': 1, + 'HAVE_BUILTIN_ATOMIC': 0, + 'HAVE_C99_BOOL': 1, + 'HAVE_CHFLAGS': 0, + 'HAVE_CHOWN': 1, + 'HAVE_CHROOT': 0, + 'HAVE_CLOCK': 1, + 'HAVE_CLOCK_GETRES': 1, + 'HAVE_CLOCK_GETTIME': 1, + 'HAVE_CLOCK_SETTIME': 0, + 'HAVE_COMPUTED_GOTOS': 0, + 'HAVE_CONFSTR': 1, + 'HAVE_CONIO_H': 0, + 'HAVE_COPYSIGN': 1, + 'HAVE_COPY_FILE_RANGE': 0, + 'HAVE_CRYPT_H': 0, + 'HAVE_CRYPT_R': 0, + 'HAVE_CTERMID': 1, + 'HAVE_CTERMID_R': 0, + 'HAVE_CURSES_FILTER': 0, + 'HAVE_CURSES_H': 0, + 'HAVE_CURSES_HAS_KEY': 0, + 'HAVE_CURSES_IMMEDOK': 0, + 'HAVE_CURSES_IS_PAD': 0, + 'HAVE_CURSES_IS_TERM_RESIZED': 0, + 'HAVE_CURSES_RESIZETERM': 0, + 'HAVE_CURSES_RESIZE_TERM': 0, + 'HAVE_CURSES_SYNCOK': 0, + 'HAVE_CURSES_TYPEAHEAD': 0, + 'HAVE_CURSES_USE_ENV': 0, + 'HAVE_CURSES_WCHGAT': 0, + 'HAVE_DECL_ISFINITE': 0, + 'HAVE_DECL_ISINF': 0, + 'HAVE_DECL_ISNAN': 1, + 'HAVE_DECL_RTLD_DEEPBIND': 0, + 'HAVE_DECL_RTLD_GLOBAL': 0, + 'HAVE_DECL_RTLD_LAZY': 0, + 'HAVE_DECL_RTLD_LOCAL': 0, + 'HAVE_DECL_RTLD_MEMBER': 0, + 'HAVE_DECL_RTLD_NODELETE': 0, + 'HAVE_DECL_RTLD_NOLOAD': 0, + 'HAVE_DECL_RTLD_NOW': 0, + 'HAVE_DECL_TZNAME': 0, + 'HAVE_DEVICE_MACROS': 0, + 'HAVE_DEV_PTC': 0, + 'HAVE_DEV_PTMX': 0, + 'HAVE_DIRECT_H': 0, + 'HAVE_DIRENT_D_TYPE': 0, + 'HAVE_DIRENT_H': 1, + 'HAVE_DIRFD': 0, + 'HAVE_DLFCN_H': 1, + 'HAVE_DLOPEN': 1, + 'HAVE_DUP2': 1, + 'HAVE_DUP3': 0, + 'HAVE_DYNAMIC_LOADING': 1, + 'HAVE_ENDIAN_H': 1, + 'HAVE_EPOLL': 0, + 'HAVE_EPOLL_CREATE1': 0, + 'HAVE_ERF': 1, + 'HAVE_ERFC': 1, + 'HAVE_ERRNO_H': 1, + 'HAVE_EXECV': 1, + 'HAVE_EXPLICIT_BZERO': 0, + 'HAVE_EXPLICIT_MEMSET': 0, + 'HAVE_EXPM1': 1, + 'HAVE_FACCESSAT': 0, + 'HAVE_FCHDIR': 0, + 'HAVE_FCHMOD': 1, + 'HAVE_FCHMODAT': 0, + 'HAVE_FCHOWN': 1, + 'HAVE_FCHOWNAT': 0, + 'HAVE_FCNTL_H': 1, + 'HAVE_FDATASYNC': 0, + 'HAVE_FDOPENDIR': 0, + 'HAVE_FDWALK': 0, + 'HAVE_FEXECVE': 0, + 'HAVE_FINITE': 0, + 'HAVE_FLOCK': 0, + 'HAVE_FORK': 0, + 'HAVE_FORKPTY': 0, + 'HAVE_FPATHCONF': 1, + 'HAVE_FSEEK64': 0, + 'HAVE_FSEEKO': 1, + 'HAVE_FSTATAT': 0, + 'HAVE_FSTATVFS': 1, + 'HAVE_FSYNC': 1, + 'HAVE_FTELL64': 0, + 'HAVE_FTELLO': 1, + 'HAVE_FTIME': 1, + 'HAVE_FTRUNCATE': 1, + 'HAVE_FUTIMENS': 0, + 'HAVE_FUTIMES': 0, + 'HAVE_FUTIMESAT': 0, + 'HAVE_GAI_STRERROR': 1, + 'HAVE_GAMMA': 1, + 'HAVE_GCC_ASM_FOR_MC68881': 0, + 'HAVE_GCC_ASM_FOR_X64': 0, + 'HAVE_GCC_ASM_FOR_X87': 0, + 'HAVE_GCC_UINT128_T': 0, + 'HAVE_GETADDRINFO': 1, + 'HAVE_GETC_UNLOCKED': 1, + 'HAVE_GETENTROPY': 1, + 'HAVE_GETGRGID_R': 0, + 'HAVE_GETGRNAM_R': 0, + 'HAVE_GETGROUPLIST': 0, + 'HAVE_GETGROUPS': 0, + 'HAVE_GETHOSTBYNAME': 0, + 'HAVE_GETHOSTBYNAME_R': 1, + 'HAVE_GETHOSTBYNAME_R_3_ARG': 0, + 'HAVE_GETHOSTBYNAME_R_5_ARG': 0, + 'HAVE_GETHOSTBYNAME_R_6_ARG': 1, + 'HAVE_GETITIMER': 1, + 'HAVE_GETLOADAVG': 0, + 'HAVE_GETLOGIN': 1, + 'HAVE_GETNAMEINFO': 1, + 'HAVE_GETPAGESIZE': 1, + 'HAVE_GETPEERNAME': 1, + 'HAVE_GETPGID': 1, + 'HAVE_GETPGRP': 1, + 'HAVE_GETPID': 1, + 'HAVE_GETPRIORITY': 0, + 'HAVE_GETPWENT': 1, + 'HAVE_GETPWNAM_R': 0, + 'HAVE_GETPWUID_R': 1, + 'HAVE_GETRANDOM': 0, + 'HAVE_GETRANDOM_SYSCALL': 0, + 'HAVE_GETRESGID': 0, + 'HAVE_GETRESUID': 0, + 'HAVE_GETSID': 1, + 'HAVE_GETSPENT': 0, + 'HAVE_GETSPNAM': 0, + 'HAVE_GETTIMEOFDAY': 1, + 'HAVE_GETWD': 1, + 'HAVE_GLIBC_MEMMOVE_BUG': 0, + 'HAVE_GRP_H': 1, + 'HAVE_HSTRERROR': 0, + 'HAVE_HTOLE64': 1, + 'HAVE_HYPOT': 1, + 'HAVE_IEEEFP_H': 0, + 'HAVE_IF_NAMEINDEX': 1, + 'HAVE_INET_ATON': 1, + 'HAVE_INET_PTON': 1, + 'HAVE_INITGROUPS': 0, + 'HAVE_INT32_T': 1, + 'HAVE_INT64_T': 1, + 'HAVE_INTTYPES_H': 1, + 'HAVE_IO_H': 0, + 'HAVE_IPA_PURE_CONST_BUG': 0, + 'HAVE_KILL': 1, + 'HAVE_KILLPG': 0, + 'HAVE_KQUEUE': 0, + 'HAVE_LANGINFO_H': 1, + 'HAVE_LARGEFILE_SUPPORT': 0, + 'HAVE_LCHFLAGS': 0, + 'HAVE_LCHMOD': 0, + 'HAVE_LCHOWN': 1, + 'HAVE_LGAMMA': 1, + 'HAVE_LIBDL': 1, + 'HAVE_LIBDLD': 0, + 'HAVE_LIBIEEE': 0, + 'HAVE_LIBINTL_H': 0, + 'HAVE_LIBREADLINE': 1, + 'HAVE_LIBRESOLV': 0, + 'HAVE_LIBSENDFILE': 0, + 'HAVE_LIBUTIL_H': 0, + 'HAVE_LINK': 1, + 'HAVE_LINKAT': 0, + 'HAVE_LINUX_CAN_BCM_H': 0, + 'HAVE_LINUX_CAN_H': 0, + 'HAVE_LINUX_CAN_RAW_FD_FRAMES': 0, + 'HAVE_LINUX_CAN_RAW_H': 0, + 'HAVE_LINUX_MEMFD_H': 0, + 'HAVE_LINUX_NETLINK_H': 0, + 'HAVE_LINUX_QRTR_H': 0, + 'HAVE_LINUX_RANDOM_H': 0, + 'HAVE_LINUX_TIPC_H': 0, + 'HAVE_LINUX_VM_SOCKETS_H': 0, + 'HAVE_LOCKF': 0, + 'HAVE_LOG1P': 1, + 'HAVE_LOG2': 1, + 'HAVE_LONG_DOUBLE': 1, + 'HAVE_LSTAT': 1, + 'HAVE_LUTIMES': 0, + 'HAVE_MADVISE': 0, + 'HAVE_MAKEDEV': 0, + 'HAVE_MBRTOWC': 0, + 'HAVE_MEMFD_CREATE': 0, + 'HAVE_MEMORY_H': 1, + 'HAVE_MEMRCHR': 0, + 'HAVE_MKDIRAT': 0, + 'HAVE_MKFIFO': 0, + 'HAVE_MKFIFOAT': 0, + 'HAVE_MKNOD': 0, + 'HAVE_MKNODAT': 0, + 'HAVE_MKTIME': 1, + 'HAVE_MMAP': 1, + 'HAVE_MREMAP': 0, + 'HAVE_NCURSES_H': 0, + 'HAVE_NDIR_H': 0, + 'HAVE_NETPACKET_PACKET_H': 0, + 'HAVE_NET_IF_H': 1, + 'HAVE_NICE': 1, + 'HAVE_OPENAT': 0, + 'HAVE_OPENPTY': 0, + 'HAVE_PATHCONF': 1, + 'HAVE_PAUSE': 1, + 'HAVE_PIPE2': 0, + 'HAVE_PLOCK': 0, + 'HAVE_POLL': 1, + 'HAVE_POLL_H': 1, + 'HAVE_POSIX_FADVISE': 0, + 'HAVE_POSIX_FALLOCATE': 0, + 'HAVE_POSIX_SPAWN': 0, + 'HAVE_POSIX_SPAWNP': 0, + 'HAVE_PREAD': 1, + 'HAVE_PREADV': 0, + 'HAVE_PREADV2': 0, + 'HAVE_PRLIMIT': 1, + 'HAVE_PROCESS_H': 0, + 'HAVE_PROTOTYPES': 1, + 'HAVE_PTHREAD_ATFORK': 0, + 'HAVE_PTHREAD_CONDATTR_SETCLOCK': 0, + 'HAVE_PTHREAD_DESTRUCTOR': 0, + 'HAVE_PTHREAD_GETCPUCLOCKID': 0, + 'HAVE_PTHREAD_H': 1, + 'HAVE_PTHREAD_INIT': 0, + 'HAVE_PTHREAD_KILL': 0, + 'HAVE_PTHREAD_SIGMASK': 0, + 'HAVE_PTY_H': 1, + 'HAVE_PUTENV': 1, + 'HAVE_PWRITE': 1, + 'HAVE_RAND_EGD': 1, + 'HAVE_PWRITEV': 0, + 'HAVE_PWRITEV2': 0, + 'HAVE_READLINK': 1, + 'HAVE_READLINKAT': 0, + 'HAVE_READV': 1, + 'HAVE_REALPATH': 1, + 'HAVE_RENAMEAT': 0, + 'HAVE_RL_APPEND_HISTORY': 1, + 'HAVE_RL_CATCH_SIGNAL': 1, + 'HAVE_RL_COMPLETION_APPEND_CHARACTER': 1, + 'HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK': 1, + 'HAVE_RL_COMPLETION_MATCHES': 1, + 'HAVE_RL_COMPLETION_SUPPRESS_APPEND': 1, + 'HAVE_RL_PRE_INPUT_HOOK': 1, + 'HAVE_RL_RESIZE_TERMINAL': 0, + 'HAVE_ROUND': 1, + 'HAVE_RTPSPAWN': 0, + 'HAVE_SCHED_GET_PRIORITY_MAX': 1, + 'HAVE_SCHED_H': 0, + 'HAVE_SCHED_RR_GET_INTERVAL': 1, + 'HAVE_SCHED_SETAFFINITY': 1, + 'HAVE_SCHED_SETPARAM': 0, + 'HAVE_SCHED_SETSCHEDULER': 0, + 'HAVE_SEM_GETVALUE': 1, + 'HAVE_SEM_OPEN': 1, + 'HAVE_SEM_TIMEDWAIT': 1, + 'HAVE_SEM_UNLINK': 1, + 'HAVE_SENDFILE': 0, + 'HAVE_SETEGID': 0, + 'HAVE_SETEUID': 1, + 'HAVE_SETGID': 1, + 'HAVE_SETGROUPS': 0, + 'HAVE_SETHOSTNAME': 0, + 'HAVE_SETITIMER': 1, + 'HAVE_SETLOCALE': 1, + 'HAVE_SETPGID': 1, + 'HAVE_SETPGRP': 1, + 'HAVE_SETPRIORITY': 0, + 'HAVE_SETREGID': 1, + 'HAVE_SETRESGID': 0, + 'HAVE_SETRESUID': 0, + 'HAVE_SETREUID': 1, + 'HAVE_SETSID': 1, + 'HAVE_SETUID': 1, + 'HAVE_SETVBUF': 1, + 'HAVE_SHADOW_H': 0, + 'HAVE_SHM_OPEN': 1, + 'HAVE_SHM_UNLINK': 1, + 'HAVE_SIGACTION': 1, + 'HAVE_SIGALTSTACK': 0, + 'HAVE_SIGFILLSET': 1, + 'HAVE_SIGINFO_T_SI_BAND': 1, + 'HAVE_SIGINTERRUPT': 0, + 'HAVE_SIGNAL_H': 1, + 'HAVE_SIGPENDING': 1, + 'HAVE_SIGRELSE': 1, + 'HAVE_SIGTIMEDWAIT': 1, + 'HAVE_SIGWAIT': 1, + 'HAVE_SIGWAITINFO': 1, + 'HAVE_SNPRINTF': 1, + 'HAVE_SOCKADDR_ALG': 0, + 'HAVE_SOCKADDR_SA_LEN': 1, + 'HAVE_SOCKADDR_STORAGE': 1, + 'HAVE_SOCKETPAIR': 1, + 'HAVE_SPAWN_H': 1, + 'HAVE_SSIZE_T': 1, + 'HAVE_STATVFS': 1, + 'HAVE_STAT_TV_NSEC': 0, + 'HAVE_STAT_TV_NSEC2': 0, + 'HAVE_STDARG_PROTOTYPES': 1, + 'HAVE_STDINT_H': 0, + 'HAVE_STDLIB_H': 1, + 'HAVE_STD_ATOMIC': 0, + 'HAVE_STRDUP': 1, + 'HAVE_STRFTIME': 1, + 'HAVE_STRINGS_H': 1, + 'HAVE_STRING_H': 1, + 'HAVE_STRLCPY': 0, + 'HAVE_STROPTS_H': 1, + 'HAVE_STRSIGNAL': 0, + 'HAVE_STRUCT_PASSWD_PW_GECOS': 0, + 'HAVE_STRUCT_PASSWD_PW_PASSWD': 0, + 'HAVE_STRUCT_STAT_ST_BIRTHTIME': 0, + 'HAVE_STRUCT_STAT_ST_BLKSIZE': 1, + 'HAVE_STRUCT_STAT_ST_BLOCKS': 1, + 'HAVE_STRUCT_STAT_ST_FLAGS': 0, + 'HAVE_STRUCT_STAT_ST_GEN': 0, + 'HAVE_STRUCT_STAT_ST_RDEV': 1, + 'HAVE_STRUCT_TM_TM_ZONE': 0, + 'HAVE_SYMLINK': 1, + 'HAVE_SYMLINKAT': 0, + 'HAVE_SYNC': 0, + 'HAVE_SYSCONF': 1, + 'HAVE_SYSEXITS_H': 0, + 'HAVE_SYS_AUDIOIO_H': 0, + 'HAVE_SYS_BSDTTY_H': 0, + 'HAVE_SYS_DEVPOLL_H': 0, + 'HAVE_SYS_DIR_H': 0, + 'HAVE_SYS_ENDIAN_H': 0, + 'HAVE_SYS_EPOLL_H': 0, + 'HAVE_SYS_EVENT_H': 0, + 'HAVE_SYS_FILE_H': 1, + 'HAVE_SYS_IOCTL_H': 1, + 'HAVE_SYS_KERN_CONTROL_H': 0, + 'HAVE_SYS_LOADAVG_H': 0, + 'HAVE_SYS_LOCK_H': 0, + 'HAVE_SYS_MEMFD_H': 0, + 'HAVE_SYS_MKDEV_H': 0, + 'HAVE_SYS_MMAN_H': 1, + 'HAVE_SYS_MODEM_H': 0, + 'HAVE_SYS_NDIR_H': 0, + 'HAVE_SYS_PARAM_H': 0, + 'HAVE_SYS_POLL_H': 1, + 'HAVE_SYS_RANDOM_H': 0, + 'HAVE_SYS_RESOURCE_H': 0, + 'HAVE_SYS_SELECT_H': 0, + 'HAVE_SYS_SENDFILE_H': 0, + 'HAVE_SYS_SOCKET_H': 1, + 'HAVE_SYS_STATVFS_H': 1, + 'HAVE_SYS_STAT_H': 1, + 'HAVE_SYS_SYSCALL_H': 0, + 'HAVE_SYS_SYSMACROS_H': 0, + 'HAVE_SYS_SYS_DOMAIN_H': 0, + 'HAVE_SYS_TERMIO_H': 0, + 'HAVE_SYS_TIMES_H': 1, + 'HAVE_SYS_TIME_H': 1, + 'HAVE_SYS_TYPES_H': 1, + 'HAVE_SYS_UIO_H': 1, + 'HAVE_SYS_UN_H': 1, + 'HAVE_SYS_UTSNAME_H': 1, + 'HAVE_SYS_WAIT_H': 1, + 'HAVE_SYS_XATTR_H': 1, + 'HAVE_TCGETPGRP': 0, + 'HAVE_TCSETPGRP': 0, + 'HAVE_TEMPNAM': 1, + 'HAVE_TERMIOS_H': 0, + 'HAVE_TERM_H': 0, + 'HAVE_TGAMMA': 1, + 'HAVE_TIMEGM': 0, + 'HAVE_TIMES': 1, + 'HAVE_TMPFILE': 1, + 'HAVE_TMPNAM': 1, + 'HAVE_TMPNAM_R': 1, + 'HAVE_TM_ZONE': 1, + 'HAVE_TRUNCATE': 1, + 'HAVE_TZNAME': 0, + 'HAVE_UCS4_TCL': 0, + 'HAVE_UINT32_T': 1, + 'HAVE_UINT64_T': 1, + 'HAVE_UINTPTR_T': 1, + 'HAVE_UNAME': 1, + 'HAVE_UNISTD_H': 1, + 'HAVE_UNLINKAT': 0, + 'HAVE_UNSETENV': 1, + 'HAVE_USABLE_WCHAR_T': 1, + 'HAVE_UTIL_H': 0, + 'HAVE_UTIMENSAT': 0, + 'HAVE_UTIMES': 1, + 'HAVE_UTIME_H': 1, + 'HAVE_UUID_CREATE': 0, + 'HAVE_UUID_ENC_BE': 0, + 'HAVE_UUID_GENERATE_TIME_SAFE': 0, + 'HAVE_UUID_H': 0, + 'HAVE_UUID_UUID_H': 0, + 'HAVE_WAIT3': 0, + 'HAVE_WAIT4': 0, + 'HAVE_WAITID': 0, + 'HAVE_WAITPID': 1, + 'HAVE_WCHAR_H': 1, + 'HAVE_WCSCOLL': 1, + 'HAVE_WCSFTIME': 0, + 'HAVE_WCSXFRM': 0, + 'HAVE_WMEMCMP': 0, + 'HAVE_WORKING_TZSET': 1, + 'HAVE_WRITEV': 0, + 'HAVE_X509_VERIFY_PARAM_SET1_HOST': 1, + 'HAVE_ZLIB_COPY': 1, + 'HAVE__GETPTY': 0, + 'HOST_GNU_TYPE': 'ia64-openvms', + 'INCLDIRSTOMAKE': '/usr/local/include /usr/local/include ' + '/usr/local/include/python3.8 /usr/local/include/python3.8', + 'INCLUDEDIR': '/usr/local/include', + 'INCLUDEPY': '/usr/local/include/python3.8', + 'INSTALL': '/usr/bin/install -c', + 'INSTALL_DATA': '/usr/bin/install -c -m 644', + 'INSTALL_PROGRAM': '/usr/bin/install -c', + 'INSTALL_SCRIPT': '/usr/bin/install -c', + 'INSTALL_SHARED': '/usr/bin/install -c -m 755', + 'INSTSONAME': 'python$shr.exe', + 'IO_H': 'Modules/_io/_iomodule.h', + 'IO_OBJS': '\\', + 'LDCXXSHARED': '', + 'LDFLAGS': '', + 'LDLIBRARY': 'python$shr.exe', + 'LDLIBRARYDIR': '', + 'LDSHARED': '', + 'LDVERSION': '3.8', + 'LIBC': '', + 'LIBDEST': '/usr/local/lib/python3.8', + 'LIBDIR': '/usr/local/lib', + 'LIBFFI_INCLUDEDIR': '', + 'LIBM': '', + 'LIBOBJDIR': 'Python/', + 'LIBOBJS': '', + 'LIBPC': '/usr/local/lib/pkgconfig', + 'LIBPL': '/usr/local/lib/python3.8/config-3.8-ia64-openvms', + 'LIBPYTHON': 'python$shr.exe', + 'LIBRARY': 'python$shr.exe', + 'LIBRARY_OBJS': '\\', + 'LIBRARY_OBJS_OMIT_FROZEN': '\\', + 'LIBS': '', + 'LIBSUBDIRS': 'tkinter tkinter/test tkinter/test/test_tkinter \\', + 'LINKCC': 'LINK/THREADS', + 'LINKFORSHARED': '', + 'LIPO_32BIT_FLAGS': '', + 'LLVM_PROF_ERR': 'no', + 'LLVM_PROF_FILE': '', + 'LLVM_PROF_MERGER': 'true', + 'LN': 'ln', + 'LOCALMODLIBS': '', + 'MACHDEP': 'openvms', + 'MACHDEP_OBJS': '', + 'MACHDESTLIB': '/usr/local/lib/python3.8', + 'MACOSX_DEPLOYMENT_TARGET': '', + 'MAINCC': 'CC/THREADS', + 'MAJOR_IN_MKDEV': 0, + 'MAJOR_IN_SYSMACROS': 1, + 'MAKESETUP': './Modules/makesetup', + 'MANDIR': '/usr/local/share/man', + 'MKDIR_P': '/usr/bin/mkdir -p', + 'MODBUILT_NAMES': 'posix errno pwd _sre _codecs _weakref _functools ' + '_operator _collections _abc itertools atexit _signal ' + '_stat time _thread _locale _io faulthandler ' + '_tracemalloc _symtable xxsubtype', + 'MODDISABLED_NAMES': '', + 'MODLIBS': '', + 'MODOBJS': '', + 'MODULE_OBJS': '\\', + 'MULTIARCH': 'ia64-openvms', + 'MULTIARCH_CPPFLAGS': '', + 'MVWDELCH_IS_EXPRESSION': 1, + 'NO_AS_NEEDED': '', + 'OBJECT_OBJS': '\\', + 'OPENSSL_INCLUDES': '', + 'OPENSSL_LDFLAGS': '', + 'OPENSSL_LIBS': '', + 'OPT': '', + 'OTHER_LIBTOOL_OPT': '', + 'PACKAGE_BUGREPORT': 0, + 'PACKAGE_NAME': 0, + 'PACKAGE_STRING': 0, + 'PACKAGE_TARNAME': 0, + 'PACKAGE_URL': 0, + 'PACKAGE_VERSION': 0, + 'PARSER_HEADERS': '\\', + 'PARSER_OBJS': '\\ Parser/myreadline.obj Parser/parsetok.obj Parser/tokenizer.obj vms/stdioreadline.obj', + 'PGO_PROF_GEN_FLAG': '', + 'PGO_PROF_USE_FLAG': '', + 'POBJS': '\\', + 'POSIX_SEMAPHORES_NOT_ENABLED': 0, + 'PROFILE_TASK': '-m test --pgo', + 'PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT': 0, + 'PTHREAD_SYSTEM_SCHED_SUPPORTED': 1, + 'PURIFY': '', + 'PY3LIBRARY': '', + 'PYLONG_BITS_IN_DIGIT': 0, + 'PYTHON': 'python', + 'PYTHONFRAMEWORK': '', + 'PYTHONFRAMEWORKDIR': 'no-framework', + 'PYTHONFRAMEWORKINSTALLDIR': '', + 'PYTHONFRAMEWORKPREFIX': '', + 'PYTHONPATH': '', + 'PYTHON_FOR_BUILD': './python -E', + 'PYTHON_FOR_REGEN': 'python3', + 'PYTHON_HEADERS': '\\', + 'PYTHON_OBJS': '\\', + 'PY_BUILTIN_MODULE_CFLAGS': '', + 'PY_CFLAGS': '', + 'PY_CFLAGS_NODIST': '', + 'PY_COERCE_C_LOCALE': 0, + 'PY_CORE_CFLAGS': '', + 'PY_CORE_LDFLAGS': '', + 'PY_CPPFLAGS': '', + 'PY_FORMAT_SIZE_T': '"l"', + 'PY_LDFLAGS': '', + 'PY_LDFLAGS_NODIST': '', + 'PY_SSL_DEFAULT_CIPHERS': 0, + 'PY_SSL_DEFAULT_CIPHER_STRING': 0, + 'PY_STDMODULE_CFLAGS': '', + 'Py_DEBUG': 0, + 'Py_ENABLE_SHARED': 0, + 'Py_HASH_ALGORITHM': 0, + 'Py_TRACE_REFS': 0, + 'QUICKTESTOPTS': '-x test_subprocess test_io test_lib2to3 \\', + 'READELF': 'readelf', + 'RESSRCDIR': 'Mac/Resources/framework', + 'RETSIGTYPE': 'void', + 'RUNSHARED': '', + 'SCRIPTDIR': '/usr/local/lib', + 'SETPGRP_HAVE_ARG': 0, + 'SGI_ABI': '@SGI_ABI@', + 'SHELL': '/bin/sh', + 'SHLIBS': '', + 'SHLIB_SUFFIX': '.exe', + 'SHM_NEEDS_LIBRT': 0, + 'SIGNED_RIGHT_SHIFT_ZERO_FILLS': 0, + 'SITEPATH': '', + 'SIZEOF_DOUBLE': 8, + 'SIZEOF_FLOAT': 4, + 'SIZEOF_FPOS_T': 8, + 'SIZEOF_INT': 4, + 'SIZEOF_LONG': 8, + 'SIZEOF_LONG_DOUBLE': 16, + 'SIZEOF_LONG_LONG': 8, + 'SIZEOF_OFF_T': 4, + 'SIZEOF_PID_T': 4, + 'SIZEOF_PTHREAD_KEY_T': 0, + 'SIZEOF_PTHREAD_T': 8, + 'SIZEOF_SHORT': 2, + 'SIZEOF_SIZE_T': 4, + 'SIZEOF_TIME_T': 4, + 'SIZEOF_UINTPTR_T': 8, + 'SIZEOF_VOID_P': 4, + 'SIZEOF_WCHAR_T': 4, + 'SIZEOF__BOOL': 1, + 'SOABI': 'cpython-38-ia64-openvms', + 'SRCDIRS': 'Parser Objects Python Modules Modules/_io Programs', + 'SRC_GDB_HOOKS': './Tools/gdb/libpython.py', + 'STDC_HEADERS': 1, + 'STRICT_SYSV_CURSES': "/* Don't use ncurses extensions */", + 'STRIPFLAG': '', + 'SUBDIRS': '', + 'SUBDIRSTOO': 'Include Lib Misc', + 'SYSLIBS': '', + 'SYS_SELECT_WITH_SYS_TIME': 1, + 'TCLTK_INCLUDES': '', + 'TCLTK_LIBS': '', + 'TESTOPTS': '', + 'TESTPATH': '', + 'TESTPYTHON': './python', + 'TESTPYTHONOPTS': '', + 'TESTRUNNER': './python ./Tools/scripts/run_tests.py', + 'TESTTIMEOUT': 1200, + 'TIMEMODULE_LIB': 0, + 'TIME_WITH_SYS_TIME': 1, + 'TM_IN_SYS_TIME': 0, + 'UNICODE_DEPS': '\\', + 'UNIVERSALSDK': '', + 'UPDATE_FILE': 'python3 ./Tools/scripts/update_file.py', + 'USE_COMPUTED_GOTOS': 0, + 'VERSION': '3.8', + 'WINDOW_HAS_FLAGS': 0, + 'WITH_DOC_STRINGS': 1, + 'WITH_DTRACE': 0, + 'WITH_DYLD': 0, + 'WITH_LIBINTL': 0, + 'WITH_NEXT_FRAMEWORK': 0, + 'WITH_PYMALLOC': 1, + 'WITH_VALGRIND': 0, + 'X87_DOUBLE_ROUNDING': 0, + 'XMLLIBSUBDIRS': 'xml xml/dom xml/etree xml/parsers xml/sax', + 'abs_builddir': '/home/user/Python-3.8.2', + 'abs_srcdir': '/home/user/Python-3.8.2', + 'datarootdir': '/usr/local/share', + 'exec_prefix': '/usr/local', + 'prefix': '/usr/local', + 'srcdir': '.'} diff --git a/make.txt b/make.txt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_bWFrZS50eHQ= --- /dev/null +++ b/make.txt @@ -0,0 +1,449 @@ +Rebuilding with profile guided optimizations: +rm -f profile-clean-stamp +make build_all CFLAGS_NODIST=" -fprofile-use -fprofile-correction" LDFLAGS_NODIST="" +make[1]: Entering directory '/home/vorfolomeev/Python-3.8.2' +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Programs/python.o ./Programs/python.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Parser/acceler.o Parser/acceler.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Parser/grammar1.o Parser/grammar1.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Parser/listnode.o Parser/listnode.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Parser/node.o Parser/node.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Parser/parser.o Parser/parser.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Parser/token.o Parser/token.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Parser/myreadline.o Parser/myreadline.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Parser/parsetok.o Parser/parsetok.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Parser/tokenizer.o Parser/tokenizer.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/abstract.o Objects/abstract.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/accu.o Objects/accu.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/boolobject.o Objects/boolobject.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/bytes_methods.o Objects/bytes_methods.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/bytearrayobject.o Objects/bytearrayobject.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/bytesobject.o Objects/bytesobject.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/call.o Objects/call.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/capsule.o Objects/capsule.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/cellobject.o Objects/cellobject.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/classobject.o Objects/classobject.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/codeobject.o Objects/codeobject.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/complexobject.o Objects/complexobject.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/descrobject.o Objects/descrobject.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/enumobject.o Objects/enumobject.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/exceptions.o Objects/exceptions.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/genobject.o Objects/genobject.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/fileobject.o Objects/fileobject.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/floatobject.o Objects/floatobject.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/frameobject.o Objects/frameobject.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/funcobject.o Objects/funcobject.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/interpreteridobject.o Objects/interpreteridobject.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/iterobject.o Objects/iterobject.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/listobject.o Objects/listobject.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/longobject.o Objects/longobject.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/dictobject.o Objects/dictobject.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/odictobject.o Objects/odictobject.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/memoryobject.o Objects/memoryobject.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/methodobject.o Objects/methodobject.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/moduleobject.o Objects/moduleobject.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/namespaceobject.o Objects/namespaceobject.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/object.o Objects/object.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/obmalloc.o Objects/obmalloc.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/picklebufobject.o Objects/picklebufobject.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/rangeobject.o Objects/rangeobject.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/setobject.o Objects/setobject.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/sliceobject.o Objects/sliceobject.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/structseq.o Objects/structseq.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/tupleobject.o Objects/tupleobject.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/typeobject.o Objects/typeobject.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/unicodeobject.o Objects/unicodeobject.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/unicodectype.o Objects/unicodectype.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Objects/weakrefobject.o Objects/weakrefobject.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/_warnings.o Python/_warnings.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/Python-ast.o Python/Python-ast.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/asdl.o Python/asdl.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/ast.o Python/ast.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/ast_opt.o Python/ast_opt.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/ast_unparse.o Python/ast_unparse.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/bltinmodule.o Python/bltinmodule.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/ceval.o Python/ceval.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/codecs.o Python/codecs.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/compile.o Python/compile.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/context.o Python/context.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/dynamic_annotations.o Python/dynamic_annotations.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/errors.o Python/errors.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/frozenmain.o Python/frozenmain.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/future.o Python/future.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/getargs.o Python/getargs.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/getcompiler.o Python/getcompiler.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/getcopyright.o Python/getcopyright.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -DPLATFORM='"linux"' -o Python/getplatform.o ./Python/getplatform.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/getversion.o Python/getversion.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/graminit.o Python/graminit.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/hamt.o Python/hamt.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/import.o Python/import.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -I. -o Python/importdl.o ./Python/importdl.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/initconfig.o Python/initconfig.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/marshal.o Python/marshal.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/modsupport.o Python/modsupport.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/mysnprintf.o Python/mysnprintf.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/mystrtoul.o Python/mystrtoul.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/pathconfig.o Python/pathconfig.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/peephole.o Python/peephole.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/preconfig.o Python/preconfig.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/pyarena.o Python/pyarena.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/pyctype.o Python/pyctype.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/pyfpe.o Python/pyfpe.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/pyhash.o Python/pyhash.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/pylifecycle.o Python/pylifecycle.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/pymath.o Python/pymath.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/pystate.o Python/pystate.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/pythonrun.o Python/pythonrun.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/pytime.o Python/pytime.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/bootstrap_hash.o Python/bootstrap_hash.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/structmember.o Python/structmember.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/symtable.o Python/symtable.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE \ + -DABIFLAGS='""' \ + -DMULTIARCH=\"x86_64-linux-gnu\" \ + -o Python/sysmodule.o ./Python/sysmodule.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/thread.o Python/thread.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/traceback.o Python/traceback.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/getopt.o Python/getopt.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/pystrcmp.o Python/pystrcmp.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/pystrtod.o Python/pystrtod.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/pystrhex.o Python/pystrhex.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/dtoa.o Python/dtoa.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/formatter_unicode.o Python/formatter_unicode.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/fileutils.o Python/fileutils.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE \ + -DSOABI='"cpython-38-x86_64-linux-gnu"' \ + -o Python/dynload_shlib.o ./Python/dynload_shlib.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Modules/config.o Modules/config.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -DPYTHONPATH='""' \ + -DPREFIX='"/usr/local"' \ + -DEXEC_PREFIX='"/usr/local"' \ + -DVERSION='"3.8"' \ + -DVPATH='""' \ + -o Modules/getpath.o ./Modules/getpath.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Modules/main.o Modules/main.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Modules/gcmodule.o Modules/gcmodule.c +gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE_BUILTIN -DPy_BUILD_CORE_BUILTIN -I./Include/internal -c ./Modules/posixmodule.c -o Modules/posixmodule.o +gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE_BUILTIN -c ./Modules/errnomodule.c -o Modules/errnomodule.o +gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE_BUILTIN -c ./Modules/pwdmodule.c -o Modules/pwdmodule.o +gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE_BUILTIN -c ./Modules/_sre.c -o Modules/_sre.o +gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE_BUILTIN -c ./Modules/_codecsmodule.c -o Modules/_codecsmodule.o +gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE_BUILTIN -c ./Modules/_weakref.c -o Modules/_weakref.o +gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE_BUILTIN -DPy_BUILD_CORE_BUILTIN -I./Include/internal -c ./Modules/_functoolsmodule.c -o Modules/_functoolsmodule.o +gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE_BUILTIN -c ./Modules/_operator.c -o Modules/_operator.o +gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE_BUILTIN -c ./Modules/_collectionsmodule.c -o Modules/_collectionsmodule.o +gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE_BUILTIN -c ./Modules/_abc.c -o Modules/_abc.o +gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE_BUILTIN -c ./Modules/itertoolsmodule.c -o Modules/itertoolsmodule.o +gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE_BUILTIN -c ./Modules/atexitmodule.c -o Modules/atexitmodule.o +gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE_BUILTIN -DPy_BUILD_CORE_BUILTIN -I./Include/internal -c ./Modules/signalmodule.c -o Modules/signalmodule.o +gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE_BUILTIN -c ./Modules/_stat.c -o Modules/_stat.o +gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE_BUILTIN -DPy_BUILD_CORE_BUILTIN -I./Include/internal -c ./Modules/timemodule.c -o Modules/timemodule.o +gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE_BUILTIN -DPy_BUILD_CORE_BUILTIN -I./Include/internal -c ./Modules/_threadmodule.c -o Modules/_threadmodule.o +gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE_BUILTIN -DPy_BUILD_CORE_BUILTIN -c ./Modules/_localemodule.c -o Modules/_localemodule.o +gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE_BUILTIN -DPy_BUILD_CORE_BUILTIN -I./Include/internal -I./Modules/_io -c ./Modules/_io/_iomodule.c -o Modules/_iomodule.o +gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE_BUILTIN -DPy_BUILD_CORE_BUILTIN -I./Include/internal -I./Modules/_io -c ./Modules/_io/iobase.c -o Modules/iobase.o +gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE_BUILTIN -DPy_BUILD_CORE_BUILTIN -I./Include/internal -I./Modules/_io -c ./Modules/_io/fileio.c -o Modules/fileio.o +gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE_BUILTIN -DPy_BUILD_CORE_BUILTIN -I./Include/internal -I./Modules/_io -c ./Modules/_io/bytesio.c -o Modules/bytesio.o +gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE_BUILTIN -DPy_BUILD_CORE_BUILTIN -I./Include/internal -I./Modules/_io -c ./Modules/_io/bufferedio.c -o Modules/bufferedio.o +gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE_BUILTIN -DPy_BUILD_CORE_BUILTIN -I./Include/internal -I./Modules/_io -c ./Modules/_io/textio.c -o Modules/textio.o +gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE_BUILTIN -DPy_BUILD_CORE_BUILTIN -I./Include/internal -I./Modules/_io -c ./Modules/_io/stringio.c -o Modules/stringio.o +gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE_BUILTIN -c ./Modules/faulthandler.c -o Modules/faulthandler.o +gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE_BUILTIN -c ./Modules/_tracemalloc.c -o Modules/_tracemalloc.o +gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE_BUILTIN -c ./Modules/hashtable.c -o Modules/hashtable.o +gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE_BUILTIN -c ./Modules/symtablemodule.c -o Modules/symtablemodule.o +gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE_BUILTIN -c ./Modules/xxsubtype.c -o Modules/xxsubtype.o +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE \ + -DGITVERSION="\"`LC_ALL=C `\"" \ + -DGITTAG="\"`LC_ALL=C `\"" \ + -DGITBRANCH="\"`LC_ALL=C `\"" \ + -o Modules/getbuildinfo.o ./Modules/getbuildinfo.c +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Python/frozen.o Python/frozen.c +rm -f libpython3.8.a +ar rcs libpython3.8.a Modules/getbuildinfo.o Parser/acceler.o Parser/grammar1.o Parser/listnode.o Parser/node.o Parser/parser.o Parser/token.o Parser/myreadline.o Parser/parsetok.o Parser/tokenizer.o Objects/abstract.o Objects/accu.o Objects/boolobject.o Objects/bytes_methods.o Objects/bytearrayobject.o Objects/bytesobject.o Objects/call.o Objects/capsule.o Objects/cellobject.o Objects/classobject.o Objects/codeobject.o Objects/complexobject.o Objects/descrobject.o Objects/enumobject.o Objects/exceptions.o Objects/genobject.o Objects/fileobject.o Objects/floatobject.o Objects/frameobject.o Objects/funcobject.o Objects/interpreteridobject.o Objects/iterobject.o Objects/listobject.o Objects/longobject.o Objects/dictobject.o Objects/odictobject.o Objects/memoryobject.o Objects/methodobject.o Objects/moduleobject.o Objects/namespaceobject.o Objects/object.o Objects/obmalloc.o Objects/picklebufobject.o Objects/rangeobject.o Objects/setobject.o Objects/sliceobject.o Objects/structseq.o Objects/tupleobject.o Objects/typeobject.o Objects/unicodeobject.o Objects/unicodectype.o Objects/weakrefobject.o Python/_warnings.o Python/Python-ast.o Python/asdl.o Python/ast.o Python/ast_opt.o Python/ast_unparse.o Python/bltinmodule.o Python/ceval.o Python/codecs.o Python/compile.o Python/context.o Python/dynamic_annotations.o Python/errors.o Python/frozenmain.o Python/future.o Python/getargs.o Python/getcompiler.o Python/getcopyright.o Python/getplatform.o Python/getversion.o Python/graminit.o Python/hamt.o Python/import.o Python/importdl.o Python/initconfig.o Python/marshal.o Python/modsupport.o Python/mysnprintf.o Python/mystrtoul.o Python/pathconfig.o Python/peephole.o Python/preconfig.o Python/pyarena.o Python/pyctype.o Python/pyfpe.o Python/pyhash.o Python/pylifecycle.o Python/pymath.o Python/pystate.o Python/pythonrun.o Python/pytime.o Python/bootstrap_hash.o Python/structmember.o Python/symtable.o Python/sysmodule.o Python/thread.o Python/traceback.o Python/getopt.o Python/pystrcmp.o Python/pystrtod.o Python/pystrhex.o Python/dtoa.o Python/formatter_unicode.o Python/fileutils.o Python/dynload_shlib.o Modules/config.o Modules/getpath.o Modules/main.o Modules/gcmodule.o Modules/posixmodule.o Modules/errnomodule.o Modules/pwdmodule.o Modules/_sre.o Modules/_codecsmodule.o Modules/_weakref.o Modules/_functoolsmodule.o Modules/_operator.o Modules/_collectionsmodule.o Modules/_abc.o Modules/itertoolsmodule.o Modules/atexitmodule.o Modules/signalmodule.o Modules/_stat.o Modules/timemodule.o Modules/_threadmodule.o Modules/_localemodule.o Modules/_iomodule.o Modules/iobase.o Modules/fileio.o Modules/bytesio.o Modules/bufferedio.o Modules/textio.o Modules/stringio.o Modules/faulthandler.o Modules/_tracemalloc.o Modules/hashtable.o Modules/symtablemodule.o Modules/xxsubtype.o Python/frozen.o +gcc -pthread -Xlinker -export-dynamic -o python Programs/python.o libpython3.8.a -lcrypt -lpthread -ldl -lutil -lm -lm +./python -E -S -m sysconfig --generate-posix-vars ;\ +if test $? -ne 0 ; then \ + echo "generate-posix-vars failed" ; \ + rm -f ./pybuilddir.txt ; \ + exit 1 ; \ +fi +gcc -pthread -c -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Modules/_math.o Modules/_math.c + CC='gcc -pthread' LDSHARED='gcc -pthread -shared ' OPT='-DNDEBUG -g -fwrapv -O3 -Wall' _TCLTK_INCLUDES='' _TCLTK_LIBS='' ./python -E ./setup.py build +running build +running build_ext +building '_struct' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_struct.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_struct.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_struct.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_struct.cpython-38-x86_64-linux-gnu.so +building 'array' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/arraymodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/arraymodule.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/arraymodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/array.cpython-38-x86_64-linux-gnu.so +building '_contextvars' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_contextvarsmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_contextvarsmodule.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_contextvarsmodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_contextvars.cpython-38-x86_64-linux-gnu.so +building 'math' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/mathmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/mathmodule.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/mathmodule.o Modules/_math.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lm -o build/lib.linux-x86_64-3.8/math.cpython-38-x86_64-linux-gnu.so +building 'cmath' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/cmathmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/cmathmodule.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/cmathmodule.o Modules/_math.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lm -o build/lib.linux-x86_64-3.8/cmath.cpython-38-x86_64-linux-gnu.so +building '_datetime' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_datetimemodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_datetimemodule.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_datetimemodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lm -o build/lib.linux-x86_64-3.8/_datetime.cpython-38-x86_64-linux-gnu.so +building '_random' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_randommodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_randommodule.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_randommodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_random.cpython-38-x86_64-linux-gnu.so +building '_bisect' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_bisectmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_bisectmodule.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_bisectmodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_bisect.cpython-38-x86_64-linux-gnu.so +building '_heapq' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_heapqmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_heapqmodule.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_heapqmodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_heapq.cpython-38-x86_64-linux-gnu.so +building '_pickle' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_pickle.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_pickle.o -DPy_BUILD_CORE_MODULE +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_pickle.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_pickle.cpython-38-x86_64-linux-gnu.so +building '_json' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_json.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_json.o -DPy_BUILD_CORE_MODULE +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_json.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_json.cpython-38-x86_64-linux-gnu.so +building '_lsprof' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_lsprof.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_lsprof.o +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/rotatingtree.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/rotatingtree.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_lsprof.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/rotatingtree.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_lsprof.cpython-38-x86_64-linux-gnu.so +building 'unicodedata' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/unicodedata.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/unicodedata.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/unicodedata.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/unicodedata.cpython-38-x86_64-linux-gnu.so +building '_opcode' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_opcode.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_opcode.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_opcode.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_opcode.cpython-38-x86_64-linux-gnu.so +building '_asyncio' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_asynciomodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_asynciomodule.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_asynciomodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_asyncio.cpython-38-x86_64-linux-gnu.so +building '_queue' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_queuemodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_queuemodule.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_queuemodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_queue.cpython-38-x86_64-linux-gnu.so +building '_statistics' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_statisticsmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_statisticsmodule.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_statisticsmodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_statistics.cpython-38-x86_64-linux-gnu.so +building 'fcntl' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/fcntlmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/fcntlmodule.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/fcntlmodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/fcntl.cpython-38-x86_64-linux-gnu.so +building 'grp' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/grpmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/grpmodule.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/grpmodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/grp.cpython-38-x86_64-linux-gnu.so +building 'spwd' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/spwdmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/spwdmodule.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/spwdmodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/spwd.cpython-38-x86_64-linux-gnu.so +building 'select' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/selectmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/selectmodule.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/selectmodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/select.cpython-38-x86_64-linux-gnu.so +building 'parser' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/parsermodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/parsermodule.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/parsermodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/parser.cpython-38-x86_64-linux-gnu.so +building 'mmap' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/mmapmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/mmapmodule.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/mmapmodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/mmap.cpython-38-x86_64-linux-gnu.so +building 'syslog' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/syslogmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/syslogmodule.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/syslogmodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/syslog.cpython-38-x86_64-linux-gnu.so +building '_xxsubinterpreters' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_xxsubinterpretersmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_xxsubinterpretersmodule.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_xxsubinterpretersmodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_xxsubinterpreters.cpython-38-x86_64-linux-gnu.so +building 'audioop' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/audioop.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/audioop.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/audioop.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lm -o build/lib.linux-x86_64-3.8/audioop.cpython-38-x86_64-linux-gnu.so +building '_csv' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_csv.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_csv.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_csv.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_csv.cpython-38-x86_64-linux-gnu.so +building '_posixsubprocess' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_posixsubprocess.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_posixsubprocess.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_posixsubprocess.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_posixsubprocess.cpython-38-x86_64-linux-gnu.so +building '_testcapi' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_testcapimodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_testcapimodule.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_testcapimodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_testcapi.cpython-38-x86_64-linux-gnu.so +building '_testinternalcapi' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_testinternalcapi.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_testinternalcapi.o -DPy_BUILD_CORE_MODULE +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_testinternalcapi.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_testinternalcapi.cpython-38-x86_64-linux-gnu.so +building '_testbuffer' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_testbuffer.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_testbuffer.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_testbuffer.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_testbuffer.cpython-38-x86_64-linux-gnu.so +building '_testimportmultiple' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_testimportmultiple.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_testimportmultiple.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_testimportmultiple.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_testimportmultiple.cpython-38-x86_64-linux-gnu.so +building '_testmultiphase' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_testmultiphase.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_testmultiphase.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_testmultiphase.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_testmultiphase.cpython-38-x86_64-linux-gnu.so +building '_xxtestfuzz' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_xxtestfuzz/_xxtestfuzz.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_xxtestfuzz/_xxtestfuzz.o +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_xxtestfuzz/fuzzer.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_xxtestfuzz/fuzzer.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_xxtestfuzz/_xxtestfuzz.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_xxtestfuzz/fuzzer.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_xxtestfuzz.cpython-38-x86_64-linux-gnu.so +building 'readline' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/readline.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/readline.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/readline.o -L/usr/lib/termcap -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lreadline -o build/lib.linux-x86_64-3.8/readline.cpython-38-x86_64-linux-gnu.so +building '_curses' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DHAVE_NCURSESW=1 -I/usr/include/ncursesw -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_cursesmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_cursesmodule.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_cursesmodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lncursesw -o build/lib.linux-x86_64-3.8/_curses.cpython-38-x86_64-linux-gnu.so +building '_curses_panel' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DHAVE_NCURSESW=1 -I/usr/include/ncursesw -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_curses_panel.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_curses_panel.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_curses_panel.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lpanelw -lncursesw -o build/lib.linux-x86_64-3.8/_curses_panel.cpython-38-x86_64-linux-gnu.so +building '_crypt' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_cryptmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_cryptmodule.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_cryptmodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lcrypt -o build/lib.linux-x86_64-3.8/_crypt.cpython-38-x86_64-linux-gnu.so +building '_socket' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/socketmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/socketmodule.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/socketmodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_socket.cpython-38-x86_64-linux-gnu.so +building '_ssl' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_ssl.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_ssl.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_ssl.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lssl -lcrypto -o build/lib.linux-x86_64-3.8/_ssl.cpython-38-x86_64-linux-gnu.so +building '_hashlib' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_hashopenssl.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_hashopenssl.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_hashopenssl.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lssl -lcrypto -o build/lib.linux-x86_64-3.8/_hashlib.cpython-38-x86_64-linux-gnu.so +building '_sha256' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/sha256module.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/sha256module.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/sha256module.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_sha256.cpython-38-x86_64-linux-gnu.so +building '_sha512' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/sha512module.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/sha512module.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/sha512module.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_sha512.cpython-38-x86_64-linux-gnu.so +building '_md5' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/md5module.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/md5module.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/md5module.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_md5.cpython-38-x86_64-linux-gnu.so +building '_sha1' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/sha1module.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/sha1module.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/sha1module.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_sha1.cpython-38-x86_64-linux-gnu.so +building '_blake2' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_blake2/blake2module.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_blake2/blake2module.o +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_blake2/blake2b_impl.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_blake2/blake2b_impl.o +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_blake2/blake2s_impl.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_blake2/blake2s_impl.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_blake2/blake2module.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_blake2/blake2b_impl.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_blake2/blake2s_impl.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_blake2.cpython-38-x86_64-linux-gnu.so +building '_sha3' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_sha3/sha3module.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sha3/sha3module.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sha3/sha3module.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_sha3.cpython-38-x86_64-linux-gnu.so +building '_sqlite3' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DMODULE_NAME="sqlite3" -DSQLITE_OMIT_LOAD_EXTENSION=1 -IModules/_sqlite -I/usr/include -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_sqlite/cache.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/cache.o +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DMODULE_NAME="sqlite3" -DSQLITE_OMIT_LOAD_EXTENSION=1 -IModules/_sqlite -I/usr/include -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_sqlite/connection.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/connection.o +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DMODULE_NAME="sqlite3" -DSQLITE_OMIT_LOAD_EXTENSION=1 -IModules/_sqlite -I/usr/include -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_sqlite/cursor.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/cursor.o +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DMODULE_NAME="sqlite3" -DSQLITE_OMIT_LOAD_EXTENSION=1 -IModules/_sqlite -I/usr/include -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_sqlite/microprotocols.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/microprotocols.o +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DMODULE_NAME="sqlite3" -DSQLITE_OMIT_LOAD_EXTENSION=1 -IModules/_sqlite -I/usr/include -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_sqlite/module.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/module.o +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DMODULE_NAME="sqlite3" -DSQLITE_OMIT_LOAD_EXTENSION=1 -IModules/_sqlite -I/usr/include -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_sqlite/prepare_protocol.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/prepare_protocol.o +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DMODULE_NAME="sqlite3" -DSQLITE_OMIT_LOAD_EXTENSION=1 -IModules/_sqlite -I/usr/include -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_sqlite/row.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/row.o +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DMODULE_NAME="sqlite3" -DSQLITE_OMIT_LOAD_EXTENSION=1 -IModules/_sqlite -I/usr/include -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_sqlite/statement.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/statement.o +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DMODULE_NAME="sqlite3" -DSQLITE_OMIT_LOAD_EXTENSION=1 -IModules/_sqlite -I/usr/include -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_sqlite/util.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/util.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/cache.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/connection.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/cursor.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/microprotocols.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/module.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/prepare_protocol.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/row.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/statement.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_sqlite/util.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lsqlite3 -o build/lib.linux-x86_64-3.8/_sqlite3.cpython-38-x86_64-linux-gnu.so +building 'termios' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/termios.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/termios.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/termios.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/termios.cpython-38-x86_64-linux-gnu.so +building 'resource' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/resource.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/resource.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/resource.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/resource.cpython-38-x86_64-linux-gnu.so +building 'ossaudiodev' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/ossaudiodev.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/ossaudiodev.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/ossaudiodev.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/ossaudiodev.cpython-38-x86_64-linux-gnu.so +building 'nis' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/nismodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/nismodule.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/nismodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lnsl -o build/lib.linux-x86_64-3.8/nis.cpython-38-x86_64-linux-gnu.so +building 'zlib' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/zlibmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/zlibmodule.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/zlibmodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lz -o build/lib.linux-x86_64-3.8/zlib.cpython-38-x86_64-linux-gnu.so +building 'binascii' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/binascii.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/binascii.o -DUSE_ZLIB_CRC32 +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/binascii.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lz -o build/lib.linux-x86_64-3.8/binascii.cpython-38-x86_64-linux-gnu.so +building '_bz2' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_bz2module.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_bz2module.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_bz2module.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lbz2 -o build/lib.linux-x86_64-3.8/_bz2.cpython-38-x86_64-linux-gnu.so +building 'pyexpat' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DHAVE_EXPAT_CONFIG_H=1 -DXML_POOR_ENTROPY=1 -DUSE_PYEXPAT_CAPI -I/home/vorfolomeev/Python-3.8.2/Modules/expat -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/pyexpat.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/pyexpat.o -Wno-unreachable-code +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DHAVE_EXPAT_CONFIG_H=1 -DXML_POOR_ENTROPY=1 -DUSE_PYEXPAT_CAPI -I/home/vorfolomeev/Python-3.8.2/Modules/expat -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/expat/xmlparse.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/expat/xmlparse.o -Wno-unreachable-code +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DHAVE_EXPAT_CONFIG_H=1 -DXML_POOR_ENTROPY=1 -DUSE_PYEXPAT_CAPI -I/home/vorfolomeev/Python-3.8.2/Modules/expat -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/expat/xmlrole.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/expat/xmlrole.o -Wno-unreachable-code +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DHAVE_EXPAT_CONFIG_H=1 -DXML_POOR_ENTROPY=1 -DUSE_PYEXPAT_CAPI -I/home/vorfolomeev/Python-3.8.2/Modules/expat -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/expat/xmltok.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/expat/xmltok.o -Wno-unreachable-code +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/pyexpat.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/expat/xmlparse.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/expat/xmlrole.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/expat/xmltok.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/pyexpat.cpython-38-x86_64-linux-gnu.so +building '_elementtree' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DHAVE_EXPAT_CONFIG_H=1 -DXML_POOR_ENTROPY=1 -DUSE_PYEXPAT_CAPI -I/home/vorfolomeev/Python-3.8.2/Modules/expat -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_elementtree.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_elementtree.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_elementtree.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_elementtree.cpython-38-x86_64-linux-gnu.so +building '_multibytecodec' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/multibytecodec.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/multibytecodec.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/multibytecodec.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_multibytecodec.cpython-38-x86_64-linux-gnu.so +building '_codecs_kr' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_kr.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_kr.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_kr.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_codecs_kr.cpython-38-x86_64-linux-gnu.so +building '_codecs_jp' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_jp.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_jp.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_jp.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_codecs_jp.cpython-38-x86_64-linux-gnu.so +building '_codecs_cn' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_cn.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_cn.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_cn.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_codecs_cn.cpython-38-x86_64-linux-gnu.so +building '_codecs_tw' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_tw.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_tw.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_tw.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_codecs_tw.cpython-38-x86_64-linux-gnu.so +building '_codecs_hk' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_hk.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_hk.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_hk.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_codecs_hk.cpython-38-x86_64-linux-gnu.so +building '_codecs_iso2022' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_iso2022.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_iso2022.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/cjkcodecs/_codecs_iso2022.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_codecs_iso2022.cpython-38-x86_64-linux-gnu.so +building '_decimal' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DCONFIG_64=1 -DASM=1 -I/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_decimal/_decimal.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/_decimal.o +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DCONFIG_64=1 -DASM=1 -I/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/basearith.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/basearith.o +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DCONFIG_64=1 -DASM=1 -I/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/constants.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/constants.o +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DCONFIG_64=1 -DASM=1 -I/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/context.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/context.o +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DCONFIG_64=1 -DASM=1 -I/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/convolute.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/convolute.o +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DCONFIG_64=1 -DASM=1 -I/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/crt.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/crt.o +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DCONFIG_64=1 -DASM=1 -I/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/difradix2.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/difradix2.o +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DCONFIG_64=1 -DASM=1 -I/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/fnt.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/fnt.o +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DCONFIG_64=1 -DASM=1 -I/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/fourstep.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/fourstep.o +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DCONFIG_64=1 -DASM=1 -I/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/io.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/io.o +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DCONFIG_64=1 -DASM=1 -I/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/memory.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/memory.o +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DCONFIG_64=1 -DASM=1 -I/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/mpdecimal.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/mpdecimal.o +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DCONFIG_64=1 -DASM=1 -I/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/numbertheory.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/numbertheory.o +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DCONFIG_64=1 -DASM=1 -I/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/sixstep.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/sixstep.o +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DCONFIG_64=1 -DASM=1 -I/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/transpose.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/transpose.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/_decimal.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/basearith.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/constants.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/context.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/convolute.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/crt.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/difradix2.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/fnt.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/fourstep.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/io.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/memory.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/mpdecimal.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/numbertheory.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/sixstep.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_decimal/libmpdec/transpose.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lm -o build/lib.linux-x86_64-3.8/_decimal.cpython-38-x86_64-linux-gnu.so +building '_ctypes_test' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_ctypes/_ctypes_test.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_ctypes/_ctypes_test.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_ctypes/_ctypes_test.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lm -o build/lib.linux-x86_64-3.8/_ctypes_test.cpython-38-x86_64-linux-gnu.so +building '_posixshmem' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -IModules/_multiprocessing -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_multiprocessing/posixshmem.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_multiprocessing/posixshmem.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_multiprocessing/posixshmem.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lrt -o build/lib.linux-x86_64-3.8/_posixshmem.cpython-38-x86_64-linux-gnu.so +building '_multiprocessing' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -IModules/_multiprocessing -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_multiprocessing/multiprocessing.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_multiprocessing/multiprocessing.o +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -IModules/_multiprocessing -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_multiprocessing/semaphore.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_multiprocessing/semaphore.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_multiprocessing/multiprocessing.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_multiprocessing/semaphore.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/_multiprocessing.cpython-38-x86_64-linux-gnu.so +building '_tkinter' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DWITH_APPINIT=1 -I/usr/include/tcl8.6 -I/usr/X11/include -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_tkinter.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_tkinter.o +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DWITH_APPINIT=1 -I/usr/include/tcl8.6 -I/usr/X11/include -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/tkappinit.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/tkappinit.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_tkinter.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/tkappinit.o -L/usr/X11/lib -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -ltk8.6 -ltcl8.6 -lX11 -o build/lib.linux-x86_64-3.8/_tkinter.cpython-38-x86_64-linux-gnu.so +building '_uuid' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I/usr/include/uuid -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_uuidmodule.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_uuidmodule.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_uuidmodule.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -luuid -o build/lib.linux-x86_64-3.8/_uuid.cpython-38-x86_64-linux-gnu.so +building 'xxlimited' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -DPy_LIMITED_API=0x03050000 -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/xxlimited.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/xxlimited.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/xxlimited.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -o build/lib.linux-x86_64-3.8/xxlimited.cpython-38-x86_64-linux-gnu.so +building '_ctypes' extension +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I/usr/include/x86_64-linux-gnu -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_ctypes/_ctypes.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_ctypes/_ctypes.o +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I/usr/include/x86_64-linux-gnu -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_ctypes/callbacks.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_ctypes/callbacks.o +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I/usr/include/x86_64-linux-gnu -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_ctypes/callproc.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_ctypes/callproc.o +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I/usr/include/x86_64-linux-gnu -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_ctypes/stgdict.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_ctypes/stgdict.o +gcc -pthread -fPIC -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I/usr/include/x86_64-linux-gnu -I./Include -I. -I/usr/include/x86_64-linux-gnu -I/usr/local/include -I/home/vorfolomeev/Python-3.8.2/Include -I/home/vorfolomeev/Python-3.8.2 -c /home/vorfolomeev/Python-3.8.2/Modules/_ctypes/cfield.c -o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_ctypes/cfield.o +gcc -pthread -shared build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_ctypes/_ctypes.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_ctypes/callbacks.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_ctypes/callproc.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_ctypes/stgdict.o build/temp.linux-x86_64-3.8/home/vorfolomeev/Python-3.8.2/Modules/_ctypes/cfield.o -L/usr/lib/x86_64-linux-gnu -L/usr/local/lib -lffi -ldl -o build/lib.linux-x86_64-3.8/_ctypes.cpython-38-x86_64-linux-gnu.so + +Python build finished successfully! +The necessary bits to build these optional modules were not found: +_dbm _gdbm _lzma +To find the necessary bits, look in setup.py in detect_modules() for the module's name. + + +The following modules found by detect_modules() in setup.py, have been +built by the Makefile instead, as configured by the Setup files: +_abc atexit pwd +time + +running build_scripts +copying and adjusting /home/vorfolomeev/Python-3.8.2/Tools/scripts/pydoc3 -> build/scripts-3.8 +copying and adjusting /home/vorfolomeev/Python-3.8.2/Tools/scripts/idle3 -> build/scripts-3.8 +copying and adjusting /home/vorfolomeev/Python-3.8.2/Tools/scripts/2to3 -> build/scripts-3.8 +changing mode of build/scripts-3.8/pydoc3 from 664 to 775 +changing mode of build/scripts-3.8/idle3 from 664 to 775 +changing mode of build/scripts-3.8/2to3 from 664 to 775 +renaming build/scripts-3.8/pydoc3 to build/scripts-3.8/pydoc3.8 +renaming build/scripts-3.8/idle3 to build/scripts-3.8/idle3.8 +renaming build/scripts-3.8/2to3 to build/scripts-3.8/2to3-3.8 +gcc -pthread -c -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -std=c99 -Wextra -Wno-unused-result -Wno-unused-parameter -Wno-missing-field-initializers -Werror=implicit-function-declaration -fprofile-use -fprofile-correction -I./Include/internal -I. -I./Include -DPy_BUILD_CORE -o Programs/_testembed.o ./Programs/_testembed.c +gcc -pthread -Xlinker -export-dynamic -o Programs/_testembed Programs/_testembed.o libpython3.8.a -lcrypt -lpthread -ldl -lutil -lm -lm +make[1]: Leaving directory '/home/vorfolomeev/Python-3.8.2' diff --git a/opt/_accdef.opt b/opt/_accdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19hY2NkZWYub3B0 --- /dev/null +++ b/opt/_accdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__accdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_acldef.opt b/opt/_acldef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19hY2xkZWYub3B0 --- /dev/null +++ b/opt/_acldef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__acldef=PROCEDURE) \ No newline at end of file diff --git a/opt/_acrdef.opt b/opt/_acrdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19hY3JkZWYub3B0 --- /dev/null +++ b/opt/_acrdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__acrdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_armdef.opt b/opt/_armdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19hcm1kZWYub3B0 --- /dev/null +++ b/opt/_armdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__armdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_asyncio.opt b/opt/_asyncio.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19hc3luY2lvLm9wdA== --- /dev/null +++ b/opt/_asyncio.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__asyncio=PROCEDURE) diff --git a/opt/_bisect.opt b/opt/_bisect.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19iaXNlY3Qub3B0 --- /dev/null +++ b/opt/_bisect.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__bisect=PROCEDURE) diff --git a/opt/_blake2.opt b/opt/_blake2.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19ibGFrZTIub3B0 --- /dev/null +++ b/opt/_blake2.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__blake2=PROCEDURE) \ No newline at end of file diff --git a/opt/_brkdef.opt b/opt/_brkdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19icmtkZWYub3B0 --- /dev/null +++ b/opt/_brkdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__brkdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_bz2.opt b/opt/_bz2.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19iejIub3B0 --- /dev/null +++ b/opt/_bz2.opt @@ -0,0 +1,6 @@ +oss$root:[lib]libbz2_32.olb/lib +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__bz2=PROCEDURE) \ No newline at end of file diff --git a/opt/_capdef.opt b/opt/_capdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19jYXBkZWYub3B0 --- /dev/null +++ b/opt/_capdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__capdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_chpdef.opt b/opt/_chpdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19jaHBkZWYub3B0 --- /dev/null +++ b/opt/_chpdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__chpdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_ciadef.opt b/opt/_ciadef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19jaWFkZWYub3B0 --- /dev/null +++ b/opt/_ciadef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__ciadef=PROCEDURE) \ No newline at end of file diff --git a/opt/_clidef.opt b/opt/_clidef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19jbGlkZWYub3B0 --- /dev/null +++ b/opt/_clidef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__clidef=PROCEDURE) \ No newline at end of file diff --git a/opt/_cmbdef.opt b/opt/_cmbdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19jbWJkZWYub3B0 --- /dev/null +++ b/opt/_cmbdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__cmbdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_codecs_cn.opt b/opt/_codecs_cn.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19jb2RlY3NfY24ub3B0 --- /dev/null +++ b/opt/_codecs_cn.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__codecs_cn=PROCEDURE) \ No newline at end of file diff --git a/opt/_codecs_hk.opt b/opt/_codecs_hk.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19jb2RlY3NfaGsub3B0 --- /dev/null +++ b/opt/_codecs_hk.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__codecs_hk=PROCEDURE) \ No newline at end of file diff --git a/opt/_codecs_iso2022.opt b/opt/_codecs_iso2022.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19jb2RlY3NfaXNvMjAyMi5vcHQ= --- /dev/null +++ b/opt/_codecs_iso2022.opt @@ -0,0 +1,4 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__codecs_iso2022=PROCEDURE) \ No newline at end of file diff --git a/opt/_codecs_jp.opt b/opt/_codecs_jp.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19jb2RlY3NfanAub3B0 --- /dev/null +++ b/opt/_codecs_jp.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__codecs_jp=PROCEDURE) \ No newline at end of file diff --git a/opt/_codecs_kr.opt b/opt/_codecs_kr.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19jb2RlY3Nfa3Iub3B0 --- /dev/null +++ b/opt/_codecs_kr.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__codecs_kr=PROCEDURE) \ No newline at end of file diff --git a/opt/_codecs_tw.opt b/opt/_codecs_tw.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19jb2RlY3NfdHcub3B0 --- /dev/null +++ b/opt/_codecs_tw.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__codecs_tw=PROCEDURE) \ No newline at end of file diff --git a/opt/_contextvars.opt b/opt/_contextvars.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19jb250ZXh0dmFycy5vcHQ= --- /dev/null +++ b/opt/_contextvars.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__contextvars=PROCEDURE) diff --git a/opt/_crypt.opt b/opt/_crypt.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19jcnlwdC5vcHQ= --- /dev/null +++ b/opt/_crypt.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__crypt=PROCEDURE) diff --git a/opt/_csv.opt b/opt/_csv.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19jc3Yub3B0 --- /dev/null +++ b/opt/_csv.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__csv=PROCEDURE) diff --git a/opt/_ctypes.opt b/opt/_ctypes.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19jdHlwZXMub3B0 --- /dev/null +++ b/opt/_ctypes.opt @@ -0,0 +1,5 @@ +oss$root:[lib]libffi32.olb/lib +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__ctypes=PROCEDURE) \ No newline at end of file diff --git a/opt/_ctypes_test.opt b/opt/_ctypes_test.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19jdHlwZXNfdGVzdC5vcHQ= --- /dev/null +++ b/opt/_ctypes_test.opt @@ -0,0 +1,111 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=( - +PyInit__ctypes_test=PROCEDURE, - +! ELF$TFRADR=DATA, - +_py_func=PROCEDURE, - +_py_func_si=PROCEDURE, - +- +- +_testfunc_ai8=PROCEDURE, - +_testfunc_array_in_struct1=PROCEDURE, - +_testfunc_array_in_struct2=PROCEDURE, - +_testfunc_array_in_struct2a=PROCEDURE, - +_testfunc_bitfield_by_r1m2g8al$=PROCEDURE, - +_testfunc_bitfield_by_r3qi2s7f$=PROCEDURE, - +_testfunc_bitfield_by_value1=PROCEDURE, - +_testfunc_bitfield_by_value2=PROCEDURE, - +_testfunc_byval=PROCEDURE, - +_testfunc_c_p_p=PROCEDURE, - +_testfunc_callback_i_if=PROCEDURE, - +_testfunc_callback_q_qf=PROCEDURE, - +_testfunc_callback_with_pointer=PROCEDURE, - +_testfunc_callfuncp=PROCEDURE, - +_testfunc_cbk_large_struct=PROCEDURE, - +_testfunc_cbk_reg_double=PROCEDURE, - +_testfunc_cbk_reg_int=PROCEDURE, - +_testfunc_d_bhilfd=PROCEDURE, - +_testfunc_D_bhilfD=PROCEDURE, - +_testfunc_deref_pointer=PROCEDURE, - +_testfunc_f_bhilfd=PROCEDURE, - +_testfunc_i_bhilfd=PROCEDURE, - +_testfunc_large_struct_0cv4oj9$=PROCEDURE, - +_testfunc_p_p=PROCEDURE, - +_testfunc_q_bhilfd=PROCEDURE, - +_testfunc_q_bhilfdq=PROCEDURE, - +_testfunc_reg_struct_up2p63n37$=PROCEDURE, - +_testfunc_union_by_reference1=PROCEDURE, - +_testfunc_union_by_reference2=PROCEDURE, - +_testfunc_union_by_reference3=PROCEDURE, - +_testfunc_union_by_value1=PROCEDURE, - +_testfunc_union_by_value2=PROCEDURE, - +_testfunc_v=PROCEDURE, - +_xxx_lib=DATA, - +an_integer=DATA, - +bottom=DATA, - +get_an_integer=PROCEDURE, - +get_strchr=PROCEDURE, - +GetRectangle=PROCEDURE, - +getSPAMANDEGGS=PROCEDURE, - +integrate=PROCEDURE, - +last_tf_arg_s=DATA, - +last_tf_arg_u=DATA, - +last_tfrsuv_arg=DATA, - +left=DATA, - +library_get=PROCEDURE, - +my_eggs=DATA, - +my_free=PROCEDURE, - +my_qsort=PROCEDURE, - +my_spams=DATA, - +my_sqrt=PROCEDURE, - +my_strchr=PROCEDURE, - +my_strdup=PROCEDURE, - +my_strtok=PROCEDURE, - +my_wcsdup=PROCEDURE, - +my_wcslen=PROCEDURE, - +myprintf=PROCEDURE, - +PointInRect=PROCEDURE, - +! py_func=DATA, - +! py_func_si=DATA, - +ret_2h_func=PROCEDURE, - +ret_8i_func=PROCEDURE, - +ReturnRect=PROCEDURE, - +right=DATA, - +set_bitfields=PROCEDURE, - +testfunc_array=PROCEDURE, - +testfunc_Ddd=PROCEDURE, - +testfunc_DDD=PROCEDURE, - +testfunc_iii=PROCEDURE, - +tf_b=PROCEDURE, - +tf_B=PROCEDURE, - +tf_bb=PROCEDURE, - +tf_bB=PROCEDURE, - +tf_bd=PROCEDURE, - +tf_bD=PROCEDURE, - +tf_bf=PROCEDURE, - +tf_bh=PROCEDURE, - +tf_bH=PROCEDURE, - +tf_bi=PROCEDURE, - +tf_bI=PROCEDURE, - +tf_bl=PROCEDURE, - +tf_bL=PROCEDURE, - +tf_bq=PROCEDURE, - +tf_bQ=PROCEDURE, - +tf_d=PROCEDURE, - +tf_D=PROCEDURE, - +tf_f=PROCEDURE, - +tf_h=PROCEDURE, - +tf_H=PROCEDURE, - +tf_i=PROCEDURE, - +tf_I=PROCEDURE, - +tf_l=PROCEDURE, - +tf_L=PROCEDURE, - +tf_q=PROCEDURE, - +tf_Q=PROCEDURE, - +top=DATA, - +tv_i=PROCEDURE, - +TwoOutArgs=PROCEDURE, - +unpack_bitfields=PROCEDURE - +) diff --git a/opt/_cvtfnmdef.opt b/opt/_cvtfnmdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19jdnRmbm1kZWYub3B0 --- /dev/null +++ b/opt/_cvtfnmdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__cvtfnmdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_datetime.opt b/opt/_datetime.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19kYXRldGltZS5vcHQ= --- /dev/null +++ b/opt/_datetime.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__datetime=PROCEDURE) diff --git a/opt/_dcdef.opt b/opt/_dcdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19kY2RlZi5vcHQ= --- /dev/null +++ b/opt/_dcdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__dcdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_decc.opt b/opt/_decc.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19kZWNjLm9wdA== --- /dev/null +++ b/opt/_decc.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__decc=PROCEDURE) diff --git a/opt/_decimal.opt b/opt/_decimal.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19kZWNpbWFsLm9wdA== --- /dev/null +++ b/opt/_decimal.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__decimal=PROCEDURE) \ No newline at end of file diff --git a/opt/_dmtdef.opt b/opt/_dmtdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19kbXRkZWYub3B0 --- /dev/null +++ b/opt/_dmtdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__dmtdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_dpsdef.opt b/opt/_dpsdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19kcHNkZWYub3B0 --- /dev/null +++ b/opt/_dpsdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__dpsdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_dscdef.opt b/opt/_dscdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19kc2NkZWYub3B0 --- /dev/null +++ b/opt/_dscdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__dscdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_dtr.opt b/opt/_dtr.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19kdHIub3B0 --- /dev/null +++ b/opt/_dtr.opt @@ -0,0 +1,7 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +sys$library:dtrshr.exe/share +dtr$library:termserve.olb/lib +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__dtr=PROCEDURE) \ No newline at end of file diff --git a/opt/_dvidef.opt b/opt/_dvidef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19kdmlkZWYub3B0 --- /dev/null +++ b/opt/_dvidef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__dvidef=PROCEDURE) \ No newline at end of file diff --git a/opt/_dvsdef.opt b/opt/_dvsdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19kdnNkZWYub3B0 --- /dev/null +++ b/opt/_dvsdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__dvsdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_efndef.opt b/opt/_efndef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19lZm5kZWYub3B0 --- /dev/null +++ b/opt/_efndef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__efndef=PROCEDURE) \ No newline at end of file diff --git a/opt/_elementtree.opt b/opt/_elementtree.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19lbGVtZW50dHJlZS5vcHQ= --- /dev/null +++ b/opt/_elementtree.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__elementtree=PROCEDURE) \ No newline at end of file diff --git a/opt/_eradef.opt b/opt/_eradef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19lcmFkZWYub3B0 --- /dev/null +++ b/opt/_eradef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__eradef=PROCEDURE) \ No newline at end of file diff --git a/opt/_fabdef.opt b/opt/_fabdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19mYWJkZWYub3B0 --- /dev/null +++ b/opt/_fabdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__fabdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_fdldef.opt b/opt/_fdldef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19mZGxkZWYub3B0 --- /dev/null +++ b/opt/_fdldef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__fdldef=PROCEDURE) \ No newline at end of file diff --git a/opt/_fpdef.opt b/opt/_fpdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19mcGRlZi5vcHQ= --- /dev/null +++ b/opt/_fpdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__fpdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_freeze_importlib.opt b/opt/_freeze_importlib.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19mcmVlemVfaW1wb3J0bGliLm9wdA== --- /dev/null +++ b/opt/_freeze_importlib.opt @@ -0,0 +1,143 @@ +python$build_obj:[Programs]_freeze_importlib.obj +python$build_obj:[Modules._io]_iomodule.obj +python$build_obj:[Modules._io]bufferedio.obj +python$build_obj:[Modules._io]bytesio.obj +python$build_obj:[Modules._io]fileio.obj +python$build_obj:[Modules._io]iobase.obj +python$build_obj:[Modules._io]stringio.obj +python$build_obj:[Modules._io]textio.obj +python$build_obj:[Modules]_abc.obj +python$build_obj:[Modules]_codecsmodule.obj +python$build_obj:[Modules]_collectionsmodule.obj +python$build_obj:[Modules]_functoolsmodule.obj +python$build_obj:[Modules]_localemodule.obj +python$build_obj:[Modules]_operator.obj +python$build_obj:[Modules]_sre.obj +python$build_obj:[Modules]_stat.obj +python$build_obj:[Modules]_threadmodule.obj +python$build_obj:[Modules]_tracemalloc.obj +python$build_obj:[Modules]_weakref.obj +python$build_obj:[Modules]atexitmodule.obj +python$build_obj:[Modules]config.obj +python$build_obj:[Modules]errnomodule.obj +python$build_obj:[Modules]faulthandler.obj +python$build_obj:[Modules]gcmodule.obj +python$build_obj:[Modules]getbuildinfo.obj +python$build_obj:[Modules]getpath.obj +python$build_obj:[Modules]hashtable.obj +python$build_obj:[Modules]itertoolsmodule.obj +python$build_obj:[Modules]main.obj +python$build_obj:[Modules]posixmodule.obj +python$build_obj:[Modules]pwdmodule.obj +python$build_obj:[Modules]signalmodule.obj +python$build_obj:[Modules]symtablemodule.obj +python$build_obj:[Modules]timemodule.obj +python$build_obj:[Modules]xxsubtype.obj +python$build_obj:[Objects]abstract.obj +python$build_obj:[Objects]accu.obj +python$build_obj:[Objects]boolobject.obj +python$build_obj:[Objects]bytearrayobject.obj +python$build_obj:[Objects]bytes_methods.obj +python$build_obj:[Objects]bytesobject.obj +python$build_obj:[Objects]call.obj +python$build_obj:[Objects]capsule.obj +python$build_obj:[Objects]cellobject.obj +python$build_obj:[Objects]classobject.obj +python$build_obj:[Objects]codeobject.obj +python$build_obj:[Objects]complexobject.obj +python$build_obj:[Objects]descrobject.obj +python$build_obj:[Objects]dictobject.obj +python$build_obj:[Objects]enumobject.obj +python$build_obj:[Objects]exceptions.obj +python$build_obj:[Objects]fileobject.obj +python$build_obj:[Objects]floatobject.obj +python$build_obj:[Objects]frameobject.obj +python$build_obj:[Objects]funcobject.obj +python$build_obj:[Objects]genobject.obj +python$build_obj:[Objects]interpreteridobject.obj +python$build_obj:[Objects]iterobject.obj +python$build_obj:[Objects]listobject.obj +python$build_obj:[Objects]longobject.obj +python$build_obj:[Objects]memoryobject.obj +python$build_obj:[Objects]methodobject.obj +python$build_obj:[Objects]moduleobject.obj +python$build_obj:[Objects]namespaceobject.obj +python$build_obj:[Objects]object.obj +python$build_obj:[Objects]obmalloc.obj +python$build_obj:[Objects]odictobject.obj +python$build_obj:[Objects]picklebufobject.obj +python$build_obj:[Objects]rangeobject.obj +python$build_obj:[Objects]setobject.obj +python$build_obj:[Objects]sliceobject.obj +python$build_obj:[Objects]structseq.obj +python$build_obj:[Objects]tupleobject.obj +python$build_obj:[Objects]typeobject.obj +python$build_obj:[Objects]unicodectype.obj +python$build_obj:[Objects]unicodeobject.obj +python$build_obj:[Objects]weakrefobject.obj +python$build_obj:[Parser]acceler.obj +python$build_obj:[Parser]grammar1.obj +python$build_obj:[Parser]listnode.obj +python$build_obj:[Parser]myreadline.obj +python$build_obj:[Parser]node.obj +python$build_obj:[Parser]parser.obj +python$build_obj:[Parser]parsetok.obj +python$build_obj:[Parser]token.obj +python$build_obj:[Parser]tokenizer.obj +python$build_obj:[Python]Python-ast.obj +python$build_obj:[Python]_warnings.obj +python$build_obj:[Python]asdl.obj +python$build_obj:[Python]ast.obj +python$build_obj:[Python]ast_opt.obj +python$build_obj:[Python]ast_unparse.obj +python$build_obj:[Python]bltinmodule.obj +python$build_obj:[Python]bootstrap_hash.obj +python$build_obj:[Python]ceval.obj +python$build_obj:[Python]codecs.obj +python$build_obj:[Python]compile.obj +python$build_obj:[Python]context.obj +python$build_obj:[Python]dtoa.obj +python$build_obj:[Python]dynamic_annotations.obj +python$build_obj:[Python]dynload_shlib.obj +python$build_obj:[Python]errors.obj +python$build_obj:[Python]fileutils.obj +python$build_obj:[Python]formatter_unicode.obj +python$build_obj:[Python]frozenmain.obj +python$build_obj:[Python]future.obj +python$build_obj:[Python]getargs.obj +python$build_obj:[Python]getcompiler.obj +python$build_obj:[Python]getcopyright.obj +python$build_obj:[Python]getopt.obj +python$build_obj:[Python]getplatform.obj +python$build_obj:[Python]getversion.obj +python$build_obj:[Python]graminit.obj +python$build_obj:[Python]hamt.obj +python$build_obj:[Python]import.obj +python$build_obj:[Python]importdl.obj +python$build_obj:[Python]initconfig.obj +python$build_obj:[Python]marshal.obj +python$build_obj:[Python]modsupport.obj +python$build_obj:[Python]mysnprintf.obj +python$build_obj:[Python]mystrtoul.obj +python$build_obj:[Python]pathconfig.obj +python$build_obj:[Python]peephole.obj +python$build_obj:[Python]preconfig.obj +python$build_obj:[Python]pyarena.obj +python$build_obj:[Python]pyctype.obj +python$build_obj:[Python]pyfpe.obj +python$build_obj:[Python]pyhash.obj +python$build_obj:[Python]pylifecycle.obj +python$build_obj:[Python]pymath.obj +python$build_obj:[Python]pystate.obj +python$build_obj:[Python]pystrcmp.obj +python$build_obj:[Python]pystrhex.obj +python$build_obj:[Python]pystrtod.obj +python$build_obj:[Python]pythonrun.obj +python$build_obj:[Python]pytime.obj +python$build_obj:[Python]structmember.obj +python$build_obj:[Python]symtable.obj +python$build_obj:[Python]sysmodule.obj +python$build_obj:[Python]thread.obj +python$build_obj:[Python]traceback.obj +python$build_obj:[vms]stdioreadline.obj +python$build_obj:[vms]vms_poll_select_hack.obj diff --git a/opt/_fscndef.opt b/opt/_fscndef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19mc2NuZGVmLm9wdA== --- /dev/null +++ b/opt/_fscndef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__fscndef=PROCEDURE) \ No newline at end of file diff --git a/opt/_gdbm.opt b/opt/_gdbm.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19nZGJtLm9wdA== --- /dev/null +++ b/opt/_gdbm.opt @@ -0,0 +1,5 @@ +oss$root:[lib]libgdbm32.olb/lib +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__gdbm=PROCEDURE) \ No newline at end of file diff --git a/opt/_hashlib.opt b/opt/_hashlib.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19oYXNobGliLm9wdA== --- /dev/null +++ b/opt/_hashlib.opt @@ -0,0 +1,7 @@ +sys$library:ssl111$libssl_shr32.exe/share +sys$library:ssl111$libcrypto_shr32.exe/share +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__hashlib=PROCEDURE) diff --git a/opt/_heapq.opt b/opt/_heapq.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19oZWFwcS5vcHQ= --- /dev/null +++ b/opt/_heapq.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__heapq=PROCEDURE) diff --git a/opt/_iccdef.opt b/opt/_iccdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19pY2NkZWYub3B0 --- /dev/null +++ b/opt/_iccdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__iccdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_ile3.opt b/opt/_ile3.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19pbGUzLm9wdA== --- /dev/null +++ b/opt/_ile3.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__ile3=PROCEDURE) \ No newline at end of file diff --git a/opt/_iledef.opt b/opt/_iledef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19pbGVkZWYub3B0 --- /dev/null +++ b/opt/_iledef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__iledef=PROCEDURE) \ No newline at end of file diff --git a/opt/_impdef.opt b/opt/_impdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19pbXBkZWYub3B0 --- /dev/null +++ b/opt/_impdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__impdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_initdef.opt b/opt/_initdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19pbml0ZGVmLm9wdA== --- /dev/null +++ b/opt/_initdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__initdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_iodef.opt b/opt/_iodef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19pb2RlZi5vcHQ= --- /dev/null +++ b/opt/_iodef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__iodef=PROCEDURE) \ No newline at end of file diff --git a/opt/_issdef.opt b/opt/_issdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19pc3NkZWYub3B0 --- /dev/null +++ b/opt/_issdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__issdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_jbcmsgdef.opt b/opt/_jbcmsgdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19qYmNtc2dkZWYub3B0 --- /dev/null +++ b/opt/_jbcmsgdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__jbcmsgdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_jpidef.opt b/opt/_jpidef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19qcGlkZWYub3B0 --- /dev/null +++ b/opt/_jpidef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__jpidef=PROCEDURE) \ No newline at end of file diff --git a/opt/_json.opt b/opt/_json.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19qc29uLm9wdA== --- /dev/null +++ b/opt/_json.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__json=PROCEDURE) diff --git a/opt/_kgbdef.opt b/opt/_kgbdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19rZ2JkZWYub3B0 --- /dev/null +++ b/opt/_kgbdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__kgbdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_lckdef.opt b/opt/_lckdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19sY2tkZWYub3B0 --- /dev/null +++ b/opt/_lckdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__lckdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_lib.opt b/opt/_lib.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19saWIub3B0 --- /dev/null +++ b/opt/_lib.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__lib=PROCEDURE) \ No newline at end of file diff --git a/opt/_libclidef.opt b/opt/_libclidef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19saWJjbGlkZWYub3B0 --- /dev/null +++ b/opt/_libclidef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__libclidef=PROCEDURE) \ No newline at end of file diff --git a/opt/_libdtdef.opt b/opt/_libdtdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19saWJkdGRlZi5vcHQ= --- /dev/null +++ b/opt/_libdtdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__libdtdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_libfisdef.opt b/opt/_libfisdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19saWJmaXNkZWYub3B0 --- /dev/null +++ b/opt/_libfisdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__libfisdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_lkidef.opt b/opt/_lkidef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19sa2lkZWYub3B0 --- /dev/null +++ b/opt/_lkidef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__lkidef=PROCEDURE) \ No newline at end of file diff --git a/opt/_lnmdef.opt b/opt/_lnmdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19sbm1kZWYub3B0 --- /dev/null +++ b/opt/_lnmdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__lnmdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_lsprof.opt b/opt/_lsprof.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19sc3Byb2Yub3B0 --- /dev/null +++ b/opt/_lsprof.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__lsprof=PROCEDURE) diff --git a/opt/_lzma.opt b/opt/_lzma.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19sem1hLm9wdA== --- /dev/null +++ b/opt/_lzma.opt @@ -0,0 +1,6 @@ +oss$root:[lib]liblzma32.olb/lib +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__lzma=PROCEDURE) \ No newline at end of file diff --git a/opt/_maildef.opt b/opt/_maildef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19tYWlsZGVmLm9wdA== --- /dev/null +++ b/opt/_maildef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__maildef=PROCEDURE) \ No newline at end of file diff --git a/opt/_md5.opt b/opt/_md5.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19tZDUub3B0 --- /dev/null +++ b/opt/_md5.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__md5=PROCEDURE) \ No newline at end of file diff --git a/opt/_mntdef.opt b/opt/_mntdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19tbnRkZWYub3B0 --- /dev/null +++ b/opt/_mntdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__mntdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_multibytecodec.opt b/opt/_multibytecodec.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19tdWx0aWJ5dGVjb2RlYy5vcHQ= --- /dev/null +++ b/opt/_multibytecodec.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__multibytecodec=PROCEDURE) \ No newline at end of file diff --git a/opt/_multiprocessing.opt b/opt/_multiprocessing.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19tdWx0aXByb2Nlc3Npbmcub3B0 --- /dev/null +++ b/opt/_multiprocessing.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__multiprocessing=PROCEDURE) \ No newline at end of file diff --git a/opt/_nsadef.opt b/opt/_nsadef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19uc2FkZWYub3B0 --- /dev/null +++ b/opt/_nsadef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__nsadef=PROCEDURE) \ No newline at end of file diff --git a/opt/_opcode.opt b/opt/_opcode.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19vcGNvZGUub3B0 --- /dev/null +++ b/opt/_opcode.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__opcode=PROCEDURE) diff --git a/opt/_ossdef.opt b/opt/_ossdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19vc3NkZWYub3B0 --- /dev/null +++ b/opt/_ossdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__ossdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_pcbdef.opt b/opt/_pcbdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19wY2JkZWYub3B0 --- /dev/null +++ b/opt/_pcbdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__pcbdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_pickle.opt b/opt/_pickle.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19waWNrbGUub3B0 --- /dev/null +++ b/opt/_pickle.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__pickle=PROCEDURE) diff --git a/opt/_posixshmem.opt b/opt/_posixshmem.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19wb3NpeHNobWVtLm9wdA== --- /dev/null +++ b/opt/_posixshmem.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__posixshmem=PROCEDURE) \ No newline at end of file diff --git a/opt/_posixsubprocess.opt b/opt/_posixsubprocess.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19wb3NpeHN1YnByb2Nlc3Mub3B0 --- /dev/null +++ b/opt/_posixsubprocess.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__posixsubprocess=PROCEDURE) \ No newline at end of file diff --git a/opt/_ppropdef.opt b/opt/_ppropdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19wcHJvcGRlZi5vcHQ= --- /dev/null +++ b/opt/_ppropdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__ppropdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_pqldef.opt b/opt/_pqldef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19wcWxkZWYub3B0 --- /dev/null +++ b/opt/_pqldef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__pqldef=PROCEDURE) \ No newline at end of file diff --git a/opt/_prcdef.opt b/opt/_prcdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19wcmNkZWYub3B0 --- /dev/null +++ b/opt/_prcdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__prcdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_prdef.opt b/opt/_prdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19wcmRlZi5vcHQ= --- /dev/null +++ b/opt/_prdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__prdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_prvdef.opt b/opt/_prvdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19wcnZkZWYub3B0 --- /dev/null +++ b/opt/_prvdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__prvdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_prxdef.opt b/opt/_prxdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19wcnhkZWYub3B0 --- /dev/null +++ b/opt/_prxdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__prxdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_pscandef.opt b/opt/_pscandef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19wc2NhbmRlZi5vcHQ= --- /dev/null +++ b/opt/_pscandef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__pscandef=PROCEDURE) \ No newline at end of file diff --git a/opt/_psldef.opt b/opt/_psldef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19wc2xkZWYub3B0 --- /dev/null +++ b/opt/_psldef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__psldef=PROCEDURE) \ No newline at end of file diff --git a/opt/_pxbdef.opt b/opt/_pxbdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19weGJkZWYub3B0 --- /dev/null +++ b/opt/_pxbdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__pxbdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_queue.opt b/opt/_queue.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19xdWV1ZS5vcHQ= --- /dev/null +++ b/opt/_queue.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__queue=PROCEDURE) diff --git a/opt/_quidef.opt b/opt/_quidef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19xdWlkZWYub3B0 --- /dev/null +++ b/opt/_quidef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__quidef=PROCEDURE) \ No newline at end of file diff --git a/opt/_rabdef.opt b/opt/_rabdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19yYWJkZWYub3B0 --- /dev/null +++ b/opt/_rabdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__rabdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_random.opt b/opt/_random.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19yYW5kb20ub3B0 --- /dev/null +++ b/opt/_random.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__random=PROCEDURE) diff --git a/opt/_rdb.opt b/opt/_rdb.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19yZGIub3B0 --- /dev/null +++ b/opt/_rdb.opt @@ -0,0 +1,6 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +sql$user/lib +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__rdb=PROCEDURE) \ No newline at end of file diff --git a/opt/_rec.opt b/opt/_rec.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19yZWMub3B0 --- /dev/null +++ b/opt/_rec.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__rec=PROCEDURE) \ No newline at end of file diff --git a/opt/_regdef.opt b/opt/_regdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19yZWdkZWYub3B0 --- /dev/null +++ b/opt/_regdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__regdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_rmidef.opt b/opt/_rmidef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19ybWlkZWYub3B0 --- /dev/null +++ b/opt/_rmidef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__rmidef=PROCEDURE) \ No newline at end of file diff --git a/opt/_rms.opt b/opt/_rms.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19ybXMub3B0 --- /dev/null +++ b/opt/_rms.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__rms=PROCEDURE) \ No newline at end of file diff --git a/opt/_rmsdef.opt b/opt/_rmsdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19ybXNkZWYub3B0 --- /dev/null +++ b/opt/_rmsdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__rmsdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_rsdmdef.opt b/opt/_rsdmdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19yc2RtZGVmLm9wdA== --- /dev/null +++ b/opt/_rsdmdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__rsdmdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_sdvdef.opt b/opt/_sdvdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19zZHZkZWYub3B0 --- /dev/null +++ b/opt/_sdvdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__sdvdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_sha1.opt b/opt/_sha1.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19zaGExLm9wdA== --- /dev/null +++ b/opt/_sha1.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__sha1=PROCEDURE) \ No newline at end of file diff --git a/opt/_sha256.opt b/opt/_sha256.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19zaGEyNTYub3B0 --- /dev/null +++ b/opt/_sha256.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__sha256=PROCEDURE) \ No newline at end of file diff --git a/opt/_sha3.opt b/opt/_sha3.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19zaGEzLm9wdA== --- /dev/null +++ b/opt/_sha3.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__sha3=PROCEDURE) \ No newline at end of file diff --git a/opt/_sha512.opt b/opt/_sha512.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19zaGE1MTIub3B0 --- /dev/null +++ b/opt/_sha512.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__sha512=PROCEDURE) diff --git a/opt/_sjcdef.opt b/opt/_sjcdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19zamNkZWYub3B0 --- /dev/null +++ b/opt/_sjcdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__sjcdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_socket.opt b/opt/_socket.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19zb2NrZXQub3B0 --- /dev/null +++ b/opt/_socket.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__socket=PROCEDURE) \ No newline at end of file diff --git a/opt/_sqlite3.opt b/opt/_sqlite3.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19zcWxpdGUzLm9wdA== --- /dev/null +++ b/opt/_sqlite3.opt @@ -0,0 +1,6 @@ +oss$root:[lib]libsqlite32.olb/lib +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__sqlite3=PROCEDURE) \ No newline at end of file diff --git a/opt/_ssdef.opt b/opt/_ssdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19zc2RlZi5vcHQ= --- /dev/null +++ b/opt/_ssdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__ssdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_ssl.opt b/opt/_ssl.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19zc2wub3B0 --- /dev/null +++ b/opt/_ssl.opt @@ -0,0 +1,7 @@ +sys$library:ssl111$libssl_shr32.exe/share +sys$library:ssl111$libcrypto_shr32.exe/share +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__ssl=PROCEDURE) diff --git a/opt/_statedef.opt b/opt/_statedef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19zdGF0ZWRlZi5vcHQ= --- /dev/null +++ b/opt/_statedef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__statedef=PROCEDURE) \ No newline at end of file diff --git a/opt/_statistics.opt b/opt/_statistics.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19zdGF0aXN0aWNzLm9wdA== --- /dev/null +++ b/opt/_statistics.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__statistics=PROCEDURE) diff --git a/opt/_stenvdef.opt b/opt/_stenvdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19zdGVudmRlZi5vcHQ= --- /dev/null +++ b/opt/_stenvdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__stenvdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_struct.opt b/opt/_struct.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19zdHJ1Y3Qub3B0 --- /dev/null +++ b/opt/_struct.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__struct=PROCEDURE) diff --git a/opt/_stsdef.opt b/opt/_stsdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19zdHNkZWYub3B0 --- /dev/null +++ b/opt/_stsdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__stsdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_syidef.opt b/opt/_syidef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19zeWlkZWYub3B0 --- /dev/null +++ b/opt/_syidef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__syidef=PROCEDURE) \ No newline at end of file diff --git a/opt/_sys.opt b/opt/_sys.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L19zeXMub3B0 --- /dev/null +++ b/opt/_sys.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__sys=PROCEDURE) \ No newline at end of file diff --git a/opt/_testbuffer.opt b/opt/_testbuffer.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L190ZXN0YnVmZmVyLm9wdA== --- /dev/null +++ b/opt/_testbuffer.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__testbuffer=PROCEDURE) diff --git a/opt/_testcapi.opt b/opt/_testcapi.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L190ZXN0Y2FwaS5vcHQ= --- /dev/null +++ b/opt/_testcapi.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__testcapi=PROCEDURE) diff --git a/opt/_testembed.opt b/opt/_testembed.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L190ZXN0ZW1iZWQub3B0 --- /dev/null +++ b/opt/_testembed.opt @@ -0,0 +1,2 @@ +python$build_out:[000000]python$shr.exe/share +sys$library:pthread$rtl.exe/share diff --git a/opt/_testimportmultiple.opt b/opt/_testimportmultiple.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L190ZXN0aW1wb3J0bXVsdGlwbGUub3B0 --- /dev/null +++ b/opt/_testimportmultiple.opt @@ -0,0 +1,9 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=( - +PyInit__testimportmultiple=PROCEDURE, - +PyInit__testimportmultiple_foo=PROCEDURE, - +PyInit__testimportmultiple_bar=PROCEDURE - +) diff --git a/opt/_testinternalcapi.opt b/opt/_testinternalcapi.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L190ZXN0aW50ZXJuYWxjYXBpLm9wdA== --- /dev/null +++ b/opt/_testinternalcapi.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__testinternalcapi=PROCEDURE) diff --git a/opt/_testmultiphase.opt b/opt/_testmultiphase.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L190ZXN0bXVsdGlwaGFzZS5vcHQ= --- /dev/null +++ b/opt/_testmultiphase.opt @@ -0,0 +1,30 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=( - +PyInitU__testmultiphase24uq8jt$=PROCEDURE, - +PyInitU_eckzbwbhc6jpgzcx415x =PROCEDURE, - +PyInit__testmultiphase=PROCEDURE, - +PyInit__testmultiphase_0c3e8cr$=PROCEDURE, - +PyInit__testmultiphase_0v29c5l$=PROCEDURE, - +PyInit__testmultiphase_11ppgn2$=PROCEDURE, - +PyInit__testmultiphase_165978s$=PROCEDURE, - +PyInit__testmultiphase_192j3ru$=PROCEDURE, - +PyInit__testmultiphase_1g767il$=PROCEDURE, - +PyInit__testmultiphase_23mkqc6$=PROCEDURE, - +PyInit__testmultiphase_24g1e9b$=PROCEDURE, - +PyInit__testmultiphase_2a55hpb$=PROCEDURE, - +PyInit__testmultiphase_2aomecj$=PROCEDURE, - +PyInit__testmultiphase_2bk6dcc$=PROCEDURE, - +PyInit__testmultiphase_2mb031o$=PROCEDURE, - +PyInit__testmultiphase_2me8md1$=PROCEDURE, - +PyInit__testmultiphase_2n9sqcu$=PROCEDURE, - +PyInit__testmultiphase_303s1sq$=PROCEDURE, - +PyInit__testmultiphase_33m7den$=PROCEDURE, - +PyInit__testmultiphase_35uahk4$=PROCEDURE, - +PyInit__testmultiphase_3q0j1na$=PROCEDURE, - +PyInit__testmultiphase_exec_err =PROCEDURE, - +PyInit_imp_dummy=PROCEDURE, - +PyInit_x =PROCEDURE - +) diff --git a/opt/_uafdef.opt b/opt/_uafdef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L191YWZkZWYub3B0 --- /dev/null +++ b/opt/_uafdef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__uafdef=PROCEDURE) \ No newline at end of file diff --git a/opt/_uaidef.opt b/opt/_uaidef.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L191YWlkZWYub3B0 --- /dev/null +++ b/opt/_uaidef.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__uaidef=PROCEDURE) \ No newline at end of file diff --git a/opt/_uuid.opt b/opt/_uuid.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L191dWlkLm9wdA== --- /dev/null +++ b/opt/_uuid.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__uuid=PROCEDURE) \ No newline at end of file diff --git a/opt/_xxsubinterpreters.opt b/opt/_xxsubinterpreters.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L194eHN1YmludGVycHJldGVycy5vcHQ= --- /dev/null +++ b/opt/_xxsubinterpreters.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__xxsubinterpreters=PROCEDURE) diff --git a/opt/_xxtestfuzz.opt b/opt/_xxtestfuzz.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L194eHRlc3RmdXp6Lm9wdA== --- /dev/null +++ b/opt/_xxtestfuzz.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit__xxtestfuzz=PROCEDURE) diff --git a/opt/array.opt b/opt/array.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L2FycmF5Lm9wdA== --- /dev/null +++ b/opt/array.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit_array=PROCEDURE) diff --git a/opt/audioop.opt b/opt/audioop.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L2F1ZGlvb3Aub3B0 --- /dev/null +++ b/opt/audioop.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit_audioop=PROCEDURE) \ No newline at end of file diff --git a/opt/binascii.opt b/opt/binascii.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L2JpbmFzY2lpLm9wdA== --- /dev/null +++ b/opt/binascii.opt @@ -0,0 +1,6 @@ +oss$root:[lib]libz32.olb/lib +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit_binascii=PROCEDURE) \ No newline at end of file diff --git a/opt/cmath.opt b/opt/cmath.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L2NtYXRoLm9wdA== --- /dev/null +++ b/opt/cmath.opt @@ -0,0 +1,6 @@ +python$build_obj:[Modules]_math.obj +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit_cmath=PROCEDURE) diff --git a/opt/fcntl.opt b/opt/fcntl.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L2ZjbnRsLm9wdA== --- /dev/null +++ b/opt/fcntl.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit_fcntl=PROCEDURE) diff --git a/opt/grp.opt b/opt/grp.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L2dycC5vcHQ= --- /dev/null +++ b/opt/grp.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit_grp=PROCEDURE) diff --git a/opt/math.opt b/opt/math.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L21hdGgub3B0 --- /dev/null +++ b/opt/math.opt @@ -0,0 +1,6 @@ +python$build_obj:[Modules]_math.obj +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit_math=PROCEDURE) diff --git a/opt/mmap.opt b/opt/mmap.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L21tYXAub3B0 --- /dev/null +++ b/opt/mmap.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit_mmap=PROCEDURE) diff --git a/opt/parser.opt b/opt/parser.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L3BhcnNlci5vcHQ= --- /dev/null +++ b/opt/parser.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit_parser=PROCEDURE) diff --git a/opt/pyexpat.opt b/opt/pyexpat.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L3B5ZXhwYXQub3B0 --- /dev/null +++ b/opt/pyexpat.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit_pyexpat=PROCEDURE) diff --git a/opt/python$shr.opt b/opt/python$shr.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L3B5dGhvbiRzaHIub3B0 --- /dev/null +++ b/opt/python$shr.opt @@ -0,0 +1,1983 @@ +! from [$(OUTDIR)] +python$build_out:[000000]libpython3^.8.olb/LIBRARY +! +sys$library:pthread$rtl.exe/share +! +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +! +SYMBOL_VECTOR = ( - +! MATH$ROUND_T=PROCEDURE,- +PyAST_Check=PROCEDURE,- +PyAST_Compile=PROCEDURE,- +PyAST_CompileEx=PROCEDURE,- +PyAST_CompileObject=PROCEDURE,- +PyAST_FromNode=PROCEDURE,- +PyAST_FromNodeObject=PROCEDURE,- +PyAST_Validate=PROCEDURE,- +PyAST_mod2obj=PROCEDURE,- +PyAST_obj2mod=PROCEDURE,- +PyArena_AddPyObject=PROCEDURE,- +PyArena_Free=PROCEDURE,- +PyArena_Malloc=PROCEDURE,- +PyArena_New=PROCEDURE,- +PyArg_Parse=PROCEDURE,- +PyArg_ParseTuple=PROCEDURE,- +PyArg_ParseTupleAndKeywords=PROCEDURE,- +PyArg_UnpackTuple=PROCEDURE,- +PyArg_VaParse=PROCEDURE,- +PyArg_VaParseTupleAndKeywords=PROCEDURE,- +PyArg_ValidateKeywordArguments=PROCEDURE,- +PyAsyncGen_ClearFreeLists=PROCEDURE,- +PyAsyncGen_Fini=PROCEDURE,- +PyAsyncGen_New=PROCEDURE,- +PyAsyncGen_Type=DATA,- +PyBaseObject_Type=DATA,- +PyBool_FromLong=PROCEDURE,- +PyBool_Type=DATA,- +PyBuffer_FillContiguousStrides=PROCEDURE,- +PyBuffer_FillInfo=PROCEDURE,- +PyBuffer_FromContiguous=PROCEDURE,- +PyBuffer_GetPointer=PROCEDURE,- +PyBuffer_IsContiguous=PROCEDURE,- +PyBuffer_Release=PROCEDURE,- +PyBuffer_ToContiguous=PROCEDURE,- +PyBufferedIOBase_Type=DATA,- +PyBufferedRWPair_Type=DATA,- +PyBufferedRandom_Type=DATA,- +PyBufferedReader_Type=DATA,- +PyBufferedWriter_Type=DATA,- +PyByteArrayIter_Type=DATA,- +PyByteArray_AsString=PROCEDURE,- +PyByteArray_Concat=PROCEDURE,- +PyByteArray_FromObject=PROCEDURE,- +PyByteArray_FromStringAndSize=PROCEDURE,- +PyByteArray_Resize=PROCEDURE,- +PyByteArray_Size=PROCEDURE,- +PyByteArray_Type=DATA,- +PyBytesIO_Type=DATA,- +PyBytesIter_Type=DATA,- +PyBytes_AsString=PROCEDURE,- +PyBytes_AsStringAndSize=PROCEDURE,- +PyBytes_Concat=PROCEDURE,- +PyBytes_ConcatAndDel=PROCEDURE,- +PyBytes_DecodeEscape=PROCEDURE,- +PyBytes_Fini=PROCEDURE,- +PyBytes_FromFormat=PROCEDURE,- +PyBytes_FromFormatV=PROCEDURE,- +PyBytes_FromObject=PROCEDURE,- +PyBytes_FromString=PROCEDURE,- +PyBytes_FromStringAndSize=PROCEDURE,- +PyBytes_Repr=PROCEDURE,- +PyBytes_Size=PROCEDURE,- +PyBytes_Type=DATA,- +PyCFunction_Call=PROCEDURE,- +PyCFunction_ClearFreeList=PROCEDURE,- +PyCFunction_Fini=PROCEDURE,- +PyCFunction_GetFlags=PROCEDURE,- +PyCFunction_GetFunction=PROCEDURE,- +PyCFunction_GetSelf=PROCEDURE,- +PyCFunction_New=PROCEDURE,- +PyCFunction_NewEx=PROCEDURE,- +PyCFunction_Type=DATA,- +PyCallIter_New=PROCEDURE,- +PyCallIter_Type=DATA,- +PyCallable_Check=PROCEDURE,- +PyCapsule_GetContext=PROCEDURE,- +PyCapsule_GetDestructor=PROCEDURE,- +PyCapsule_GetName=PROCEDURE,- +PyCapsule_GetPointer=PROCEDURE,- +PyCapsule_Import=PROCEDURE,- +PyCapsule_IsValid=PROCEDURE,- +PyCapsule_New=PROCEDURE,- +PyCapsule_SetContext=PROCEDURE,- +PyCapsule_SetDestructor=PROCEDURE,- +PyCapsule_SetName=PROCEDURE,- +PyCapsule_SetPointer=PROCEDURE,- +PyCapsule_Type=DATA,- +PyCell_Get=PROCEDURE,- +PyCell_New=PROCEDURE,- +PyCell_Set=PROCEDURE,- +PyCell_Type=DATA,- +PyClassMethodDescr_Type=DATA,- +PyClassMethod_New=PROCEDURE,- +PyClassMethod_Type=DATA,- +PyCode_Addr2Line=PROCEDURE,- +PyCode_New=PROCEDURE,- +PyCode_NewEmpty=PROCEDURE,- +PyCode_NewWithPosOnlyArgs=PROCEDURE,- +PyCode_Optimize=PROCEDURE,- +PyCode_Type=DATA,- +PyCodec_BackslashReplaceErrors=PROCEDURE,- +PyCodec_Decode=PROCEDURE,- +PyCodec_Decoder=PROCEDURE,- +PyCodec_Encode=PROCEDURE,- +PyCodec_Encoder=PROCEDURE,- +PyCodec_IgnoreErrors=PROCEDURE,- +PyCodec_IncrementalDecoder=PROCEDURE,- +PyCodec_IncrementalEncoder=PROCEDURE,- +PyCodec_KnownEncoding=PROCEDURE,- +PyCodec_LookupError=PROCEDURE,- +PyCodec_NameReplaceErrors=PROCEDURE,- +PyCodec_Register=PROCEDURE,- +PyCodec_RegisterError=PROCEDURE,- +PyCodec_ReplaceErrors=PROCEDURE,- +PyCodec_StreamReader=PROCEDURE,- +PyCodec_StreamWriter=PROCEDURE,- +PyCodec_StrictErrors=PROCEDURE,- +PyCodec_XMLCharRefReplaceErrors=PROCEDURE,- +PyCompileString=PROCEDURE,- +PyCompile_OpcodeStackEf25ml1ih$=PROCEDURE,- +PyCompile_OpcodeStackEffect=PROCEDURE,- +PyComplex_AsCComplex=PROCEDURE,- +PyComplex_FromCComplex=PROCEDURE,- +PyComplex_FromDoubles=PROCEDURE,- +PyComplex_ImagAsDouble=PROCEDURE,- +PyComplex_RealAsDouble=PROCEDURE,- +PyComplex_Type=DATA,- +PyConfig_Clear=PROCEDURE,- +PyConfig_InitIsolatedConfig=PROCEDURE,- +PyConfig_InitPythonConfig=PROCEDURE,- +PyConfig_Read=PROCEDURE,- +PyConfig_SetArgv=PROCEDURE,- +PyConfig_SetBytesArgv=PROCEDURE,- +PyConfig_SetBytesString=PROCEDURE,- +PyConfig_SetString=PROCEDURE,- +PyConfig_SetWideStringList=PROCEDURE,- +PyContextTokenMissing_Type=DATA,- +PyContextToken_Type=DATA,- +PyContextVar_Get=PROCEDURE,- +PyContextVar_New=PROCEDURE,- +PyContextVar_Reset=PROCEDURE,- +PyContextVar_Set=PROCEDURE,- +PyContextVar_Type=DATA,- +PyContext_ClearFreeList=PROCEDURE,- +PyContext_Copy=PROCEDURE,- +PyContext_CopyCurrent=PROCEDURE,- +PyContext_Enter=PROCEDURE,- +PyContext_Exit=PROCEDURE,- +PyContext_New=PROCEDURE,- +PyContext_Type=DATA,- +PyCoro_New=PROCEDURE,- +PyCoro_Type=DATA,- +PyDescr_NewClassMethod=PROCEDURE,- +PyDescr_NewGetSet=PROCEDURE,- +PyDescr_NewMember=PROCEDURE,- +PyDescr_NewMethod=PROCEDURE,- +PyDescr_NewWrapper=PROCEDURE,- +PyDictItems_Type=DATA,- +PyDictIterItem_Type=DATA,- +PyDictIterKey_Type=DATA,- +PyDictIterValue_Type=DATA,- +PyDictKeys_Type=DATA,- +PyDictProxy_New=PROCEDURE,- +PyDictProxy_Type=DATA,- +PyDictRevIterItem_Type=DATA,- +PyDictRevIterKey_Type=DATA,- +PyDictRevIterValue_Type=DATA,- +PyDictValues_Type=DATA,- +PyDict_Clear=PROCEDURE,- +PyDict_ClearFreeList=PROCEDURE,- +PyDict_Contains=PROCEDURE,- +PyDict_Copy=PROCEDURE,- +PyDict_DelItem=PROCEDURE,- +PyDict_DelItemString=PROCEDURE,- +PyDict_Fini=PROCEDURE,- +PyDict_GetItem=PROCEDURE,- +PyDict_GetItemString=PROCEDURE,- +PyDict_GetItemWithError=PROCEDURE,- +PyDict_Items=PROCEDURE,- +PyDict_Keys=PROCEDURE,- +PyDict_Merge=PROCEDURE,- +PyDict_MergeFromSeq2=PROCEDURE,- +PyDict_New=PROCEDURE,- +PyDict_Next=PROCEDURE,- +PyDict_SetDefault=PROCEDURE,- +PyDict_SetItem=PROCEDURE,- +PyDict_SetItemString=PROCEDURE,- +PyDict_Size=PROCEDURE,- +PyDict_Type=DATA,- +PyDict_Update=PROCEDURE,- +PyDict_Values=PROCEDURE,- +PyEllipsis_Type=DATA,- +PyEnum_Type=DATA,- +PyErr_BadArgument=PROCEDURE,- +PyErr_BadInternalCall=PROCEDURE,- +PyErr_CheckSignals=PROCEDURE,- +PyErr_Clear=PROCEDURE,- +PyErr_Display=PROCEDURE,- +PyErr_ExceptionMatches=PROCEDURE,- +PyErr_Fetch=PROCEDURE,- +PyErr_Format=PROCEDURE,- +PyErr_FormatV=PROCEDURE,- +PyErr_GetExcInfo=PROCEDURE,- +PyErr_GivenExceptionMatches=PROCEDURE,- +PyErr_NewException=PROCEDURE,- +PyErr_NewExceptionWithDoc=PROCEDURE,- +PyErr_NoMemory=PROCEDURE,- +PyErr_NormalizeException=PROCEDURE,- +PyErr_Occurred=PROCEDURE,- +PyErr_Print=PROCEDURE,- +PyErr_PrintEx=PROCEDURE,- +PyErr_ProgramText=PROCEDURE,- +PyErr_ProgramTextObject=PROCEDURE,- +PyErr_ResourceWarning=PROCEDURE,- +PyErr_Restore=PROCEDURE,- +PyErr_SetExcInfo=PROCEDURE,- +PyErr_SetFromErrno=PROCEDURE,- +PyErr_SetFromErrnoWithF13nsp2p$=PROCEDURE,- +PyErr_SetFromErrnoWithF36am9kt$=PROCEDURE,- +PyErr_SetFromErrnoWithFilename=PROCEDURE,- +PyErr_SetImportError=PROCEDURE,- +PyErr_SetImportErrorSubclass=PROCEDURE,- +PyErr_SetInterrupt=PROCEDURE,- +PyErr_SetNone=PROCEDURE,- +PyErr_SetObject=PROCEDURE,- +PyErr_SetString=PROCEDURE,- +PyErr_SyntaxLocation=PROCEDURE,- +PyErr_SyntaxLocationEx=PROCEDURE,- +PyErr_SyntaxLocationObject=PROCEDURE,- +PyErr_Warn=PROCEDURE,- +PyErr_WarnEx=PROCEDURE,- +PyErr_WarnExplicit=PROCEDURE,- +PyErr_WarnExplicitFormat=PROCEDURE,- +PyErr_WarnExplicitObject=PROCEDURE,- +PyErr_WarnFormat=PROCEDURE,- +PyErr_WriteUnraisable=PROCEDURE,- +PyEval_AcquireLock=PROCEDURE,- +PyEval_AcquireThread=PROCEDURE,- +PyEval_CallFunction=PROCEDURE,- +PyEval_CallMethod=PROCEDURE,- +PyEval_CallObjectWithKeywords=PROCEDURE,- +PyEval_EvalCode=PROCEDURE,- +PyEval_EvalCodeEx=PROCEDURE,- +PyEval_EvalFrame=PROCEDURE,- +PyEval_EvalFrameEx=PROCEDURE,- +PyEval_GetBuiltins=PROCEDURE,- +PyEval_GetFrame=PROCEDURE,- +PyEval_GetFuncDesc=PROCEDURE,- +PyEval_GetFuncName=PROCEDURE,- +PyEval_GetGlobals=PROCEDURE,- +PyEval_GetLocals=PROCEDURE,- +PyEval_InitThreads=PROCEDURE,- +PyEval_MergeCompilerFlags=PROCEDURE,- +PyEval_ReleaseLock=PROCEDURE,- +PyEval_ReleaseThread=PROCEDURE,- +PyEval_RestoreThread=PROCEDURE,- +PyEval_SaveThread=PROCEDURE,- +PyEval_SetProfile=PROCEDURE,- +PyEval_SetTrace=PROCEDURE,- +PyEval_ThreadsInitialized=PROCEDURE,- +PyExc_ArithmeticError=DATA,- +PyExc_AssertionError=DATA,- +PyExc_AttributeError=DATA,- +PyExc_BaseException=DATA,- +PyExc_BlockingIOError=DATA,- +PyExc_BrokenPipeError=DATA,- +PyExc_BufferError=DATA,- +PyExc_BytesWarning=DATA,- +PyExc_ChildProcessError=DATA,- +PyExc_ConnectionAbortedError=DATA,- +PyExc_ConnectionError=DATA,- +PyExc_ConnectionRefusedError=DATA,- +PyExc_ConnectionResetError=DATA,- +PyExc_DeprecationWarning=DATA,- +PyExc_EOFError=DATA,- +PyExc_EnvironmentError=DATA,- +PyExc_Exception=DATA,- +PyExc_FileExistsError=DATA,- +PyExc_FileNotFoundError=DATA,- +PyExc_FloatingPointError=DATA,- +PyExc_FutureWarning=DATA,- +PyExc_GeneratorExit=DATA,- +PyExc_IOError=DATA,- +PyExc_ImportError=DATA,- +PyExc_ImportWarning=DATA,- +PyExc_IndentationError=DATA,- +PyExc_IndexError=DATA,- +PyExc_InterruptedError=DATA,- +PyExc_IsADirectoryError=DATA,- +PyExc_KeyError=DATA,- +PyExc_KeyboardInterrupt=DATA,- +PyExc_LookupError=DATA,- +PyExc_MemoryError=DATA,- +PyExc_ModuleNotFoundError=DATA,- +PyExc_NameError=DATA,- +PyExc_NotADirectoryError=DATA,- +PyExc_NotImplementedError=DATA,- +PyExc_OSError=DATA,- +PyExc_OverflowError=DATA,- +PyExc_PendingDeprecationWarning=DATA,- +PyExc_PermissionError=DATA,- +PyExc_ProcessLookupError=DATA,- +PyExc_RecursionError=DATA,- +PyExc_ReferenceError=DATA,- +PyExc_ResourceWarning=DATA,- +PyExc_RuntimeError=DATA,- +PyExc_RuntimeWarning=DATA,- +PyExc_StopAsyncIteration=DATA,- +PyExc_StopIteration=DATA,- +PyExc_SyntaxError=DATA,- +PyExc_SyntaxWarning=DATA,- +PyExc_SystemError=DATA,- +PyExc_SystemExit=DATA,- +PyExc_TabError=DATA,- +PyExc_TimeoutError=DATA,- +PyExc_TypeError=DATA,- +PyExc_UnboundLocalError=DATA,- +PyExc_UnicodeDecodeError=DATA,- +PyExc_UnicodeEncodeError=DATA,- +PyExc_UnicodeError=DATA,- +PyExc_UnicodeTranslateError=DATA,- +PyExc_UnicodeWarning=DATA,- +PyExc_UserWarning=DATA,- +PyExc_ValueError=DATA,- +PyExc_Warning=DATA,- +PyExc_ZeroDivisionError=DATA,- +PyExceptionClass_Name=PROCEDURE,- +PyException_GetCause=PROCEDURE,- +PyException_GetContext=PROCEDURE,- +PyException_GetTraceback=PROCEDURE,- +PyException_SetCause=PROCEDURE,- +PyException_SetContext=PROCEDURE,- +PyException_SetTraceback=PROCEDURE,- +PyFPE_dummy=PROCEDURE,- +PyFileIO_Type=DATA,- +PyFile_FromFd=PROCEDURE,- +PyFile_GetLine=PROCEDURE,- +PyFile_NewStdPrinter=PROCEDURE,- +PyFile_OpenCode=PROCEDURE,- +PyFile_OpenCodeObject=PROCEDURE,- +PyFile_SetOpenCodeHook=PROCEDURE,- +PyFile_WriteObject=PROCEDURE,- +PyFile_WriteString=PROCEDURE,- +PyFilter_Type=DATA,- +PyFloat_AsDouble=PROCEDURE,- +PyFloat_ClearFreeList=PROCEDURE,- +PyFloat_Fini=PROCEDURE,- +PyFloat_FromDouble=PROCEDURE,- +PyFloat_FromString=PROCEDURE,- +PyFloat_GetInfo=PROCEDURE,- +PyFloat_GetMax=PROCEDURE,- +PyFloat_GetMin=PROCEDURE,- +PyFloat_Type=DATA,- +PyFrame_BlockPop=PROCEDURE,- +PyFrame_BlockSetup=PROCEDURE,- +PyFrame_ClearFreeList=PROCEDURE,- +PyFrame_FastToLocals=PROCEDURE,- +PyFrame_FastToLocalsWithError=PROCEDURE,- +PyFrame_Fini=PROCEDURE,- +PyFrame_GetLineNumber=PROCEDURE,- +PyFrame_LocalsToFast=PROCEDURE,- +PyFrame_New=PROCEDURE,- +PyFrame_Type=DATA,- +PyFrozenSet_New=PROCEDURE,- +PyFrozenSet_Type=DATA,- +PyFunction_GetAnnotations=PROCEDURE,- +PyFunction_GetClosure=PROCEDURE,- +PyFunction_GetCode=PROCEDURE,- +PyFunction_GetDefaults=PROCEDURE,- +PyFunction_GetGlobals=PROCEDURE,- +PyFunction_GetKwDefaults=PROCEDURE,- +PyFunction_GetModule=PROCEDURE,- +PyFunction_New=PROCEDURE,- +PyFunction_NewWithQualName=PROCEDURE,- +PyFunction_SetAnnotations=PROCEDURE,- +PyFunction_SetClosure=PROCEDURE,- +PyFunction_SetDefaults=PROCEDURE,- +PyFunction_SetKwDefaults=PROCEDURE,- +PyFunction_Type=DATA,- +PyFuture_FromAST=PROCEDURE,- +PyFuture_FromASTObject=PROCEDURE,- +PyGC_Collect=PROCEDURE,- +PyGILState_Check=PROCEDURE,- +PyGILState_Ensure=PROCEDURE,- +PyGILState_GetThisThreadState=PROCEDURE,- +PyGILState_Release=PROCEDURE,- +PyGen_NeedsFinalizing=PROCEDURE,- +PyGen_New=PROCEDURE,- +PyGen_NewWithQualName=PROCEDURE,- +PyGen_Type=DATA,- +PyGetSetDescr_Type=DATA,- +PyGrammar_AddAccelerators=PROCEDURE,- +PyGrammar_FindDFA=PROCEDURE,- +PyGrammar_LabelRepr=PROCEDURE,- +PyGrammar_RemoveAccelerators=PROCEDURE,- +PyHash_GetFuncDef=PROCEDURE,- +PyIOBase_Type=DATA,- +PyImport_AddModule=PROCEDURE,- +PyImport_AddModuleObject=PROCEDURE,- +PyImport_AppendInittab=PROCEDURE,- +PyImport_Cleanup=PROCEDURE,- +PyImport_ExecCodeModule23g5k6b$=PROCEDURE,- +PyImport_ExecCodeModule=PROCEDURE,- +PyImport_ExecCodeModuleEx=PROCEDURE,- +PyImport_ExecCodeModuleObject=PROCEDURE,- +PyImport_ExtendInittab=PROCEDURE,- +PyImport_FrozenModules=DATA,- +PyImport_GetImporter=PROCEDURE,- +PyImport_GetMagicNumber=PROCEDURE,- +PyImport_GetMagicTag=PROCEDURE,- +PyImport_GetModule=PROCEDURE,- +PyImport_GetModuleDict=PROCEDURE,- +PyImport_Import=PROCEDURE,- +PyImport_ImportFrozenMo163r2c6$=PROCEDURE,- +PyImport_ImportFrozenModule=PROCEDURE,- +PyImport_ImportModule=PROCEDURE,- +PyImport_ImportModuleLe3e3v665$=PROCEDURE,- +PyImport_ImportModuleLevel=PROCEDURE,- +PyImport_ImportModuleNoBlock=PROCEDURE,- +PyImport_Inittab=DATA,- +PyImport_ReloadModule=PROCEDURE,- +PyIncrementalNewlineDec1pmcbjr$=DATA,- +PyIndex_Check=PROCEDURE,- +PyInit__abc=PROCEDURE,- +PyInit__ast=PROCEDURE,- +PyInit__codecs=PROCEDURE,- +PyInit__collections=PROCEDURE,- +PyInit__functools=PROCEDURE,- +PyInit__imp=PROCEDURE,- +PyInit__io=PROCEDURE,- +PyInit__locale=PROCEDURE,- +PyInit__operator=PROCEDURE,- +PyInit__signal=PROCEDURE,- +PyInit__sre=PROCEDURE,- +PyInit__stat=PROCEDURE,- +PyInit__string=PROCEDURE,- +PyInit__symtable=PROCEDURE,- +PyInit__thread=PROCEDURE,- +PyInit__tracemalloc=PROCEDURE,- +PyInit__weakref=PROCEDURE,- +PyInit_atexit=PROCEDURE,- +PyInit_errno=PROCEDURE,- +PyInit_faulthandler=PROCEDURE,- +PyInit_gc=PROCEDURE,- +PyInit_itertools=PROCEDURE,- +PyInit_posix=PROCEDURE,- +PyInit_pwd=PROCEDURE,- +PyInit_time=PROCEDURE,- +PyInit_xxsubtype=PROCEDURE,- +PyInstanceMethod_Function=PROCEDURE,- +PyInstanceMethod_New=PROCEDURE,- +PyInstanceMethod_Type=DATA,- +PyInterpreterState_Clear=PROCEDURE,- +PyInterpreterState_Delete=PROCEDURE,- +PyInterpreterState_GetDict=PROCEDURE,- +PyInterpreterState_GetID=PROCEDURE,- +PyInterpreterState_Head=PROCEDURE,- +PyInterpreterState_Main=PROCEDURE,- +PyInterpreterState_New=PROCEDURE,- +PyInterpreterState_Next=PROCEDURE,- +PyInterpreterState_ThreadHead=PROCEDURE,- +PyIter_Check=PROCEDURE,- +PyIter_Next=PROCEDURE,- +PyListIter_Type=DATA,- +PyListRevIter_Type=DATA,- +PyList_Append=PROCEDURE,- +PyList_AsTuple=PROCEDURE,- +PyList_ClearFreeList=PROCEDURE,- +PyList_Fini=PROCEDURE,- +PyList_GetItem=PROCEDURE,- +PyList_GetSlice=PROCEDURE,- +PyList_Insert=PROCEDURE,- +PyList_New=PROCEDURE,- +PyList_Reverse=PROCEDURE,- +PyList_SetItem=PROCEDURE,- +PyList_SetSlice=PROCEDURE,- +PyList_Size=PROCEDURE,- +PyList_Sort=PROCEDURE,- +PyList_Type=DATA,- +PyLongRangeIter_Type=DATA,- +PyLong_AsDouble=PROCEDURE,- +PyLong_AsLong=PROCEDURE,- +PyLong_AsLongAndOverflow=PROCEDURE,- +PyLong_AsLongLong=PROCEDURE,- +PyLong_AsLongLongAndOverflow=PROCEDURE,- +PyLong_AsSize_t=PROCEDURE,- +PyLong_AsSsize_t=PROCEDURE,- +PyLong_AsUnsignedLong=PROCEDURE,- +PyLong_AsUnsignedLongLong=PROCEDURE,- +PyLong_AsUnsignedLongLongMask=PROCEDURE,- +PyLong_AsUnsignedLongMask=PROCEDURE,- +PyLong_AsVoidPtr=PROCEDURE,- +PyLong_Fini=PROCEDURE,- +PyLong_FromDouble=PROCEDURE,- +PyLong_FromLong=PROCEDURE,- +PyLong_FromLongLong=PROCEDURE,- +PyLong_FromSize_t=PROCEDURE,- +PyLong_FromSsize_t=PROCEDURE,- +PyLong_FromString=PROCEDURE,- +PyLong_FromUnicode=PROCEDURE,- +PyLong_FromUnicodeObject=PROCEDURE,- +PyLong_FromUnsignedLong=PROCEDURE,- +PyLong_FromUnsignedLongLong=PROCEDURE,- +PyLong_FromVoidPtr=PROCEDURE,- +PyLong_GetInfo=PROCEDURE,- +PyLong_Type=DATA,- +PyMap_Type=DATA,- +PyMapping_Check=PROCEDURE,- +PyMapping_GetItemString=PROCEDURE,- +PyMapping_HasKey=PROCEDURE,- +PyMapping_HasKeyString=PROCEDURE,- +PyMapping_Items=PROCEDURE,- +PyMapping_Keys=PROCEDURE,- +PyMapping_Length=PROCEDURE,- +PyMapping_SetItemString=PROCEDURE,- +PyMapping_Size=PROCEDURE,- +PyMapping_Values=PROCEDURE,- +PyMarshal_Init=PROCEDURE,- +PyMarshal_ReadLastObjec1gnkbmv$=PROCEDURE,- +PyMarshal_ReadLongFromFile=PROCEDURE,- +PyMarshal_ReadObjectFromFile=PROCEDURE,- +PyMarshal_ReadObjectFromString=PROCEDURE,- +PyMarshal_ReadShortFromFile=PROCEDURE,- +PyMarshal_WriteLongToFile=PROCEDURE,- +PyMarshal_WriteObjectToFile=PROCEDURE,- +PyMarshal_WriteObjectToString=PROCEDURE,- +PyMem_Calloc=PROCEDURE,- +PyMem_Free=PROCEDURE,- +PyMem_GetAllocator=PROCEDURE,- +PyMem_Malloc=PROCEDURE,- +PyMem_RawCalloc=PROCEDURE,- +PyMem_RawFree=PROCEDURE,- +PyMem_RawMalloc=PROCEDURE,- +PyMem_RawRealloc=PROCEDURE,- +PyMem_Realloc=PROCEDURE,- +PyMem_SetAllocator=PROCEDURE,- +PyMem_SetupDebugHooks=PROCEDURE,- +PyMemberDescr_Type=DATA,- +PyMember_GetOne=PROCEDURE,- +PyMember_SetOne=PROCEDURE,- +PyMemoryView_FromBuffer=PROCEDURE,- +PyMemoryView_FromMemory=PROCEDURE,- +PyMemoryView_FromObject=PROCEDURE,- +PyMemoryView_GetContiguous=PROCEDURE,- +PyMemoryView_Type=DATA,- +PyMethodDescr_Type=DATA,- +PyMethod_ClearFreeList=PROCEDURE,- +PyMethod_Fini=PROCEDURE,- +PyMethod_Function=PROCEDURE,- +PyMethod_New=PROCEDURE,- +PyMethod_Self=PROCEDURE,- +PyMethod_Type=DATA,- +PyModuleDef_Init=PROCEDURE,- +PyModuleDef_Type=DATA,- +PyModule_AddFunctions=PROCEDURE,- +PyModule_AddIntConstant=PROCEDURE,- +PyModule_AddObject=PROCEDURE,- +PyModule_AddStringConstant=PROCEDURE,- +PyModule_Create2=PROCEDURE,- +PyModule_ExecDef=PROCEDURE,- +PyModule_FromDefAndSpec2=PROCEDURE,- +PyModule_GetDef=PROCEDURE,- +PyModule_GetDict=PROCEDURE,- +PyModule_GetFilename=PROCEDURE,- +PyModule_GetFilenameObject=PROCEDURE,- +PyModule_GetName=PROCEDURE,- +PyModule_GetNameObject=PROCEDURE,- +PyModule_GetState=PROCEDURE,- +PyModule_GetWarningsModule=PROCEDURE,- +PyModule_New=PROCEDURE,- +PyModule_NewObject=PROCEDURE,- +PyModule_SetDocString=PROCEDURE,- +PyModule_Type=DATA,- +PyNode_AddChild=PROCEDURE,- +PyNode_Compile=PROCEDURE,- +PyNode_Free=PROCEDURE,- +PyNode_ListTree=PROCEDURE,- +PyNode_New=PROCEDURE,- +PyNumber_Absolute=PROCEDURE,- +PyNumber_Add=PROCEDURE,- +PyNumber_And=PROCEDURE,- +PyNumber_AsOff_t=PROCEDURE,- +PyNumber_AsSsize_t=PROCEDURE,- +PyNumber_Check=PROCEDURE,- +PyNumber_Divmod=PROCEDURE,- +PyNumber_Float=PROCEDURE,- +PyNumber_FloorDivide=PROCEDURE,- +PyNumber_InMatrixMultiply=PROCEDURE,- +PyNumber_InPlaceAdd=PROCEDURE,- +PyNumber_InPlaceAnd=PROCEDURE,- +PyNumber_InPlaceFloorDivide=PROCEDURE,- +PyNumber_InPlaceLshift=PROCEDURE,- +PyNumber_InPlaceMatrixMultiply=PROCEDURE,- +PyNumber_InPlaceMultiply=PROCEDURE,- +PyNumber_InPlaceOr=PROCEDURE,- +PyNumber_InPlacePower=PROCEDURE,- +PyNumber_InPlaceRemainder=PROCEDURE,- +PyNumber_InPlaceRshift=PROCEDURE,- +PyNumber_InPlaceSubtract=PROCEDURE,- +PyNumber_InPlaceTrueDivide=PROCEDURE,- +PyNumber_InPlaceXor=PROCEDURE,- +PyNumber_Index=PROCEDURE,- +PyNumber_Invert=PROCEDURE,- +PyNumber_Long=PROCEDURE,- +PyNumber_Lshift=PROCEDURE,- +PyNumber_MatrixMultiply=PROCEDURE,- +PyNumber_Multiply=PROCEDURE,- +PyNumber_Negative=PROCEDURE,- +PyNumber_Or=PROCEDURE,- +PyNumber_Positive=PROCEDURE,- +PyNumber_Power=PROCEDURE,- +PyNumber_Remainder=PROCEDURE,- +PyNumber_Rshift=PROCEDURE,- +PyNumber_Subtract=PROCEDURE,- +PyNumber_ToBase=PROCEDURE,- +PyNumber_TrueDivide=PROCEDURE,- +PyNumber_Xor=PROCEDURE,- +PyODictItems_Type=DATA,- +PyODictIter_Type=DATA,- +PyODictKeys_Type=DATA,- +PyODictValues_Type=DATA,- +PyODict_DelItem=PROCEDURE,- +PyODict_New=PROCEDURE,- +PyODict_SetItem=PROCEDURE,- +PyODict_Type=DATA,- +PyOS_AfterFork=PROCEDURE,- +PyOS_FSPath=PROCEDURE,- +PyOS_FiniInterrupts=PROCEDURE,- +PyOS_InitInterrupts=PROCEDURE,- +PyOS_InputHook=DATA,- +PyOS_InterruptOccurred=PROCEDURE,- +PyOS_Readline=PROCEDURE,- +PyOS_ReadlineFunctionPointer=DATA,- +PyOS_StdioReadline=PROCEDURE,- +PyOS_double_to_string=PROCEDURE,- +PyOS_getsig=PROCEDURE,- +PyOS_mystricmp=PROCEDURE,- +PyOS_mystrnicmp=PROCEDURE,- +PyOS_setsig=PROCEDURE,- +PyOS_snprintf=PROCEDURE,- +PyOS_string_to_double=PROCEDURE,- +PyOS_strtol=PROCEDURE,- +PyOS_strtoul=PROCEDURE,- +PyOS_vsnprintf=PROCEDURE,- +PyObject_ASCII=PROCEDURE,- +PyObject_AsCharBuffer=PROCEDURE,- +PyObject_AsFileDescriptor=PROCEDURE,- +PyObject_AsReadBuffer=PROCEDURE,- +PyObject_AsWriteBuffer=PROCEDURE,- +PyObject_Bytes=PROCEDURE,- +PyObject_Call=PROCEDURE,- +PyObject_CallFinalizer=PROCEDURE,- +PyObject_CallFinalizerF3rob0r5$=PROCEDURE,- +PyObject_CallFunction=PROCEDURE,- +PyObject_CallFunctionObjArgs=PROCEDURE,- +PyObject_CallMethod=PROCEDURE,- +PyObject_CallMethodObjArgs=PROCEDURE,- +PyObject_CallObject=PROCEDURE,- +PyObject_Calloc=PROCEDURE,- +PyObject_CheckReadBuffer=PROCEDURE,- +PyObject_ClearWeakRefs=PROCEDURE,- +PyObject_CopyData=PROCEDURE,- +PyObject_DelItem=PROCEDURE,- +PyObject_DelItemString=PROCEDURE,- +PyObject_Dir=PROCEDURE,- +PyObject_Format=PROCEDURE,- +PyObject_Free=PROCEDURE,- +PyObject_GC_Del=PROCEDURE,- +PyObject_GC_Track=PROCEDURE,- +PyObject_GC_UnTrack=PROCEDURE,- +PyObject_GenericGetAttr=PROCEDURE,- +PyObject_GenericGetDict=PROCEDURE,- +PyObject_GenericSetAttr=PROCEDURE,- +PyObject_GenericSetDict=PROCEDURE,- +PyObject_GetArenaAllocator=PROCEDURE,- +PyObject_GetAttr=PROCEDURE,- +PyObject_GetAttrString=PROCEDURE,- +PyObject_GetBuffer=PROCEDURE,- +PyObject_GetItem=PROCEDURE,- +PyObject_GetIter=PROCEDURE,- +PyObject_HasAttr=PROCEDURE,- +PyObject_HasAttrString=PROCEDURE,- +PyObject_Hash=PROCEDURE,- +PyObject_HashNotImplemented=PROCEDURE,- +PyObject_Init=PROCEDURE,- +PyObject_InitVar=PROCEDURE,- +PyObject_IsInstance=PROCEDURE,- +PyObject_IsSubclass=PROCEDURE,- +PyObject_IsTrue=PROCEDURE,- +PyObject_Length=PROCEDURE,- +PyObject_LengthHint=PROCEDURE,- +PyObject_Malloc=PROCEDURE,- +PyObject_Not=PROCEDURE,- +PyObject_Print=PROCEDURE,- +PyObject_Realloc=PROCEDURE,- +PyObject_Repr=PROCEDURE,- +PyObject_RichCompare=PROCEDURE,- +PyObject_RichCompareBool=PROCEDURE,- +PyObject_SelfIter=PROCEDURE,- +PyObject_SetArenaAllocator=PROCEDURE,- +PyObject_SetAttr=PROCEDURE,- +PyObject_SetAttrString=PROCEDURE,- +PyObject_SetItem=PROCEDURE,- +PyObject_Size=PROCEDURE,- +PyObject_Str=PROCEDURE,- +PyObject_Type=PROCEDURE,- +PyParser_ASTFromFile=PROCEDURE,- +PyParser_ASTFromFileObject=PROCEDURE,- +PyParser_ASTFromString=PROCEDURE,- +PyParser_ASTFromStringObject=PROCEDURE,- +PyParser_AddToken=PROCEDURE,- +PyParser_ClearError=PROCEDURE,- +PyParser_Delete=PROCEDURE,- +PyParser_New=PROCEDURE,- +PyParser_ParseFile=PROCEDURE,- +PyParser_ParseFileFlags=PROCEDURE,- +PyParser_ParseFileFlagsEx=PROCEDURE,- +PyParser_ParseFileObject=PROCEDURE,- +PyParser_ParseString=PROCEDURE,- +PyParser_ParseStringFla0n2o9ga$=PROCEDURE,- +PyParser_ParseStringFla3tj408l$=PROCEDURE,- +PyParser_ParseStringFlags=PROCEDURE,- +PyParser_ParseStringObject=PROCEDURE,- +PyParser_SetError=PROCEDURE,- +PyParser_SimpleParseFile=PROCEDURE,- +PyParser_SimpleParseFileFlags=PROCEDURE,- +PyParser_SimpleParseStr1ei9lfj$=PROCEDURE,- +PyParser_SimpleParseString=PROCEDURE,- +PyParser_SimpleParseStringFlags=PROCEDURE,- +PyPickleBuffer_FromObject=PROCEDURE,- +PyPickleBuffer_GetBuffer=PROCEDURE,- +PyPickleBuffer_Release=PROCEDURE,- +PyPickleBuffer_Type=DATA,- +PyPreConfig_InitIsolatedConfig=PROCEDURE,- +PyPreConfig_InitPythonConfig=PROCEDURE,- +PyProperty_Type=DATA,- +PyRangeIter_Type=DATA,- +PyRange_Type=DATA,- +PyRawIOBase_Type=DATA,- +PyReversed_Type=DATA,- +PyRun_AnyFile=PROCEDURE,- +PyRun_AnyFileEx=PROCEDURE,- +PyRun_AnyFileExFlags=PROCEDURE,- +PyRun_AnyFileFlags=PROCEDURE,- +PyRun_File=PROCEDURE,- +PyRun_FileEx=PROCEDURE,- +PyRun_FileExFlags=PROCEDURE,- +PyRun_FileFlags=PROCEDURE,- +PyRun_InteractiveLoop=PROCEDURE,- +PyRun_InteractiveLoopFlags=PROCEDURE,- +PyRun_InteractiveOne=PROCEDURE,- +PyRun_InteractiveOneFlags=PROCEDURE,- +PyRun_InteractiveOneObject=PROCEDURE,- +PyRun_SimpleFile=PROCEDURE,- +PyRun_SimpleFileEx=PROCEDURE,- +PyRun_SimpleFileExFlags=PROCEDURE,- +PyRun_SimpleString=PROCEDURE,- +PyRun_SimpleStringFlags=PROCEDURE,- +PyRun_String=PROCEDURE,- +PyRun_StringFlags=PROCEDURE,- +PySTEntry_Type=DATA,- +PyST_GetScope=PROCEDURE,- +PySeqIter_New=PROCEDURE,- +PySeqIter_Type=DATA,- +PySequence_Check=PROCEDURE,- +PySequence_Concat=PROCEDURE,- +PySequence_Contains=PROCEDURE,- +PySequence_Count=PROCEDURE,- +PySequence_DelItem=PROCEDURE,- +PySequence_DelSlice=PROCEDURE,- +PySequence_Fast=PROCEDURE,- +PySequence_GetItem=PROCEDURE,- +PySequence_GetSlice=PROCEDURE,- +PySequence_In=PROCEDURE,- +PySequence_InPlaceConcat=PROCEDURE,- +PySequence_InPlaceRepeat=PROCEDURE,- +PySequence_Index=PROCEDURE,- +PySequence_Length=PROCEDURE,- +PySequence_List=PROCEDURE,- +PySequence_Repeat=PROCEDURE,- +PySequence_SetItem=PROCEDURE,- +PySequence_SetSlice=PROCEDURE,- +PySequence_Size=PROCEDURE,- +PySequence_Tuple=PROCEDURE,- +PySetIter_Type=DATA,- +PySet_Add=PROCEDURE,- +PySet_Clear=PROCEDURE,- +PySet_ClearFreeList=PROCEDURE,- +PySet_Contains=PROCEDURE,- +PySet_Discard=PROCEDURE,- +PySet_Fini=PROCEDURE,- +PySet_New=PROCEDURE,- +PySet_Pop=PROCEDURE,- +PySet_Size=PROCEDURE,- +PySet_Type=DATA,- +PySignal_SetWakeupFd=PROCEDURE,- +PySlice_AdjustIndices=PROCEDURE,- +PySlice_Fini=PROCEDURE,- +PySlice_GetIndices=PROCEDURE,- +PySlice_GetIndicesEx=PROCEDURE,- +PySlice_New=PROCEDURE,- +PySlice_Type=DATA,- +PySlice_Unpack=PROCEDURE,- +PyState_AddModule=PROCEDURE,- +PyState_FindModule=PROCEDURE,- +PyState_RemoveModule=PROCEDURE,- +PyStaticMethod_New=PROCEDURE,- +PyStaticMethod_Type=DATA,- +PyStatus_Error=PROCEDURE,- +PyStatus_Exception=PROCEDURE,- +PyStatus_Exit=PROCEDURE,- +PyStatus_IsError=PROCEDURE,- +PyStatus_IsExit=PROCEDURE,- +PyStatus_NoMemory=PROCEDURE,- +PyStatus_Ok=PROCEDURE,- +PyStdPrinter_Type=DATA,- +PyStringIO_Type=DATA,- +PyStructSequence_GetItem=PROCEDURE,- +PyStructSequence_InitType2=PROCEDURE,- +PyStructSequence_InitType=PROCEDURE,- +PyStructSequence_New=PROCEDURE,- +PyStructSequence_NewType=PROCEDURE,- +PyStructSequence_SetItem=PROCEDURE,- +PyStructSequence_UnnamedField=DATA,- +PySuper_Type=DATA,- +PySymtable_Build=PROCEDURE,- +PySymtable_BuildObject=PROCEDURE,- +PySymtable_Free=PROCEDURE,- +PySymtable_Lookup=PROCEDURE,- +PySys_AddAuditHook=PROCEDURE,- +PySys_AddWarnOption=PROCEDURE,- +PySys_AddWarnOptionUnicode=PROCEDURE,- +PySys_AddXOption=PROCEDURE,- +PySys_Audit=PROCEDURE,- +PySys_FormatStderr=PROCEDURE,- +PySys_FormatStdout=PROCEDURE,- +PySys_GetObject=PROCEDURE,- +PySys_GetXOptions=PROCEDURE,- +PySys_HasWarnOptions=PROCEDURE,- +PySys_ResetWarnOptions=PROCEDURE,- +PySys_SetArgv=PROCEDURE,- +PySys_SetArgvEx=PROCEDURE,- +PySys_SetObject=PROCEDURE,- +PySys_SetPath=PROCEDURE,- +PySys_WriteStderr=PROCEDURE,- +PySys_WriteStdout=PROCEDURE,- +PyTextIOBase_Type=DATA,- +PyTextIOWrapper_Type=DATA,- +PyThreadState_Clear=PROCEDURE,- +PyThreadState_Delete=PROCEDURE,- +PyThreadState_DeleteCurrent=PROCEDURE,- +PyThreadState_Get=PROCEDURE,- +PyThreadState_GetDict=PROCEDURE,- +PyThreadState_New=PROCEDURE,- +PyThreadState_Next=PROCEDURE,- +PyThreadState_SetAsyncExc=PROCEDURE,- +PyThreadState_Swap=PROCEDURE,- +PyThread_GetInfo=PROCEDURE,- +PyThread_ReInitTLS=PROCEDURE,- +PyThread_acquire_lock=PROCEDURE,- +PyThread_acquire_lock_timed=PROCEDURE,- +PyThread_allocate_lock=PROCEDURE,- +PyThread_create_key=PROCEDURE,- +PyThread_delete_key=PROCEDURE,- +PyThread_delete_key_value=PROCEDURE,- +PyThread_exit_thread=PROCEDURE,- +PyThread_free_lock=PROCEDURE,- +PyThread_get_key_value=PROCEDURE,- +PyThread_get_stacksize=PROCEDURE,- +PyThread_get_thread_ident=PROCEDURE,- +PyThread_init_thread=PROCEDURE,- +PyThread_release_lock=PROCEDURE,- +PyThread_set_key_value=PROCEDURE,- +PyThread_set_stacksize=PROCEDURE,- +PyThread_start_new_thread=PROCEDURE,- +PyThread_tss_alloc=PROCEDURE,- +PyThread_tss_create=PROCEDURE,- +PyThread_tss_delete=PROCEDURE,- +PyThread_tss_free=PROCEDURE,- +PyThread_tss_get=PROCEDURE,- +PyThread_tss_is_created=PROCEDURE,- +PyThread_tss_set=PROCEDURE,- +PyToken_OneChar=PROCEDURE,- +PyToken_ThreeChars=PROCEDURE,- +PyToken_TwoChars=PROCEDURE,- +PyTokenizer_FindEncodin0djd81n$=PROCEDURE,- +PyTokenizer_FindEncoding=PROCEDURE,- +PyTokenizer_Free=PROCEDURE,- +PyTokenizer_FromFile=PROCEDURE,- +PyTokenizer_FromString=PROCEDURE,- +PyTokenizer_FromUTF8=PROCEDURE,- +PyTokenizer_Get=PROCEDURE,- +PyTraceBack_Here=PROCEDURE,- +PyTraceBack_Print=PROCEDURE,- +PyTraceBack_Type=DATA,- +PyTraceMalloc_Track=PROCEDURE,- +PyTraceMalloc_Untrack=PROCEDURE,- +PyTupleIter_Type=DATA,- +PyTuple_ClearFreeList=PROCEDURE,- +PyTuple_Fini=PROCEDURE,- +PyTuple_GetItem=PROCEDURE,- +PyTuple_GetSlice=PROCEDURE,- +PyTuple_New=PROCEDURE,- +PyTuple_Pack=PROCEDURE,- +PyTuple_SetItem=PROCEDURE,- +PyTuple_Size=PROCEDURE,- +PyTuple_Type=DATA,- +PyType_ClearCache=PROCEDURE,- +PyType_FromSpec=PROCEDURE,- +PyType_FromSpecWithBases=PROCEDURE,- +PyType_GenericAlloc=PROCEDURE,- +PyType_GenericNew=PROCEDURE,- +PyType_GetFlags=PROCEDURE,- +PyType_GetSlot=PROCEDURE,- +PyType_IsSubtype=PROCEDURE,- +PyType_Modified=PROCEDURE,- +PyType_Ready=PROCEDURE,- +PyType_Type=DATA,- +PyUnicodeDecodeError_Create=PROCEDURE,- +PyUnicodeDecodeError_Ge28gplj2$=PROCEDURE,- +PyUnicodeDecodeError_GetEnd=PROCEDURE,- +PyUnicodeDecodeError_GetObject=PROCEDURE,- +PyUnicodeDecodeError_GetReason=PROCEDURE,- +PyUnicodeDecodeError_GetStart=PROCEDURE,- +PyUnicodeDecodeError_SetEnd=PROCEDURE,- +PyUnicodeDecodeError_SetReason=PROCEDURE,- +PyUnicodeDecodeError_SetStart=PROCEDURE,- +PyUnicodeEncodeError_Create=PROCEDURE,- +PyUnicodeEncodeError_Ge2549dvm$=PROCEDURE,- +PyUnicodeEncodeError_GetEnd=PROCEDURE,- +PyUnicodeEncodeError_GetObject=PROCEDURE,- +PyUnicodeEncodeError_GetReason=PROCEDURE,- +PyUnicodeEncodeError_GetStart=PROCEDURE,- +PyUnicodeEncodeError_SetEnd=PROCEDURE,- +PyUnicodeEncodeError_SetReason=PROCEDURE,- +PyUnicodeEncodeError_SetStart=PROCEDURE,- +PyUnicodeIter_Type=DATA,- +PyUnicodeTranslateError06c68o2$=PROCEDURE,- +PyUnicodeTranslateError0po7mq2$=PROCEDURE,- +PyUnicodeTranslateError1nfk4sv$=PROCEDURE,- +PyUnicodeTranslateError35n5p4j$=PROCEDURE,- +PyUnicodeTranslateError3uuuc3v$=PROCEDURE,- +PyUnicodeTranslateError_Create=PROCEDURE,- +PyUnicodeTranslateError_GetEnd=PROCEDURE,- +PyUnicodeTranslateError_SetEnd=PROCEDURE,- +PyUnicode_Append=PROCEDURE,- +PyUnicode_AppendAndDel=PROCEDURE,- +PyUnicode_AsASCIIString=PROCEDURE,- +PyUnicode_AsCharmapString=PROCEDURE,- +PyUnicode_AsDecodedObject=PROCEDURE,- +PyUnicode_AsDecodedUnicode=PROCEDURE,- +PyUnicode_AsEncodedObject=PROCEDURE,- +PyUnicode_AsEncodedString=PROCEDURE,- +PyUnicode_AsEncodedUnicode=PROCEDURE,- +PyUnicode_AsLatin1String=PROCEDURE,- +PyUnicode_AsRawUnicodeE1pq4v4k$=PROCEDURE,- +PyUnicode_AsUCS4=PROCEDURE,- +PyUnicode_AsUCS4Copy=PROCEDURE,- +PyUnicode_AsUTF16String=PROCEDURE,- +PyUnicode_AsUTF32String=PROCEDURE,- +PyUnicode_AsUTF8=PROCEDURE,- +PyUnicode_AsUTF8AndSize=PROCEDURE,- +PyUnicode_AsUTF8String=PROCEDURE,- +PyUnicode_AsUnicode=PROCEDURE,- +PyUnicode_AsUnicodeAndSize=PROCEDURE,- +PyUnicode_AsUnicodeCopy=PROCEDURE,- +PyUnicode_AsUnicodeEscapeString=PROCEDURE,- +PyUnicode_AsWideChar=PROCEDURE,- +PyUnicode_AsWideCharString=PROCEDURE,- +PyUnicode_BuildEncodingMap=PROCEDURE,- +PyUnicode_ClearFreeList=PROCEDURE,- +PyUnicode_Compare=PROCEDURE,- +PyUnicode_CompareWithAS1mu930c$=PROCEDURE,- +PyUnicode_Concat=PROCEDURE,- +PyUnicode_Contains=PROCEDURE,- +PyUnicode_CopyCharacters=PROCEDURE,- +PyUnicode_Count=PROCEDURE- +) +! +SYMBOL_VECTOR = ( - +PyUnicode_Decode=PROCEDURE,- +PyUnicode_DecodeASCII=PROCEDURE,- +PyUnicode_DecodeCharmap=PROCEDURE,- +PyUnicode_DecodeFSDefau2kjh4hh$=PROCEDURE,- +PyUnicode_DecodeFSDefault=PROCEDURE,- +PyUnicode_DecodeLatin1=PROCEDURE,- +PyUnicode_DecodeLocale=PROCEDURE,- +PyUnicode_DecodeLocaleAndSize=PROCEDURE,- +PyUnicode_DecodeRawUnic1u0dtd9$=PROCEDURE,- +PyUnicode_DecodeUTF16=PROCEDURE,- +PyUnicode_DecodeUTF16Stateful=PROCEDURE,- +PyUnicode_DecodeUTF32=PROCEDURE,- +PyUnicode_DecodeUTF32Stateful=PROCEDURE,- +PyUnicode_DecodeUTF7=PROCEDURE,- +PyUnicode_DecodeUTF7Stateful=PROCEDURE,- +PyUnicode_DecodeUTF8=PROCEDURE,- +PyUnicode_DecodeUTF8Stateful=PROCEDURE,- +PyUnicode_DecodeUnicodeEscape=PROCEDURE,- +PyUnicode_Encode=PROCEDURE,- +PyUnicode_EncodeASCII=PROCEDURE,- +PyUnicode_EncodeCharmap=PROCEDURE,- +PyUnicode_EncodeDecimal=PROCEDURE,- +PyUnicode_EncodeFSDefault=PROCEDURE,- +PyUnicode_EncodeLatin1=PROCEDURE,- +PyUnicode_EncodeLocale=PROCEDURE,- +PyUnicode_EncodeRawUnic0qs46ns$=PROCEDURE,- +PyUnicode_EncodeUTF16=PROCEDURE,- +PyUnicode_EncodeUTF32=PROCEDURE,- +PyUnicode_EncodeUTF7=PROCEDURE,- +PyUnicode_EncodeUTF8=PROCEDURE,- +PyUnicode_EncodeUnicodeEscape=PROCEDURE,- +PyUnicode_FSConverter=PROCEDURE,- +PyUnicode_FSDecoder=PROCEDURE,- +PyUnicode_Fill=PROCEDURE,- +PyUnicode_Find=PROCEDURE,- +PyUnicode_FindChar=PROCEDURE,- +PyUnicode_Format=PROCEDURE,- +PyUnicode_FromEncodedObject=PROCEDURE,- +PyUnicode_FromFormat=PROCEDURE,- +PyUnicode_FromFormatV=PROCEDURE,- +PyUnicode_FromKindAndData=PROCEDURE,- +PyUnicode_FromObject=PROCEDURE,- +PyUnicode_FromOrdinal=PROCEDURE,- +PyUnicode_FromString=PROCEDURE,- +PyUnicode_FromStringAndSize=PROCEDURE,- +PyUnicode_FromUnicode=PROCEDURE,- +PyUnicode_FromWideChar=PROCEDURE,- +PyUnicode_GetDefaultEncoding=PROCEDURE,- +PyUnicode_GetLength=PROCEDURE,- +PyUnicode_GetMax=PROCEDURE,- +PyUnicode_GetSize=PROCEDURE,- +PyUnicode_InternFromString=PROCEDURE,- +PyUnicode_InternImmortal=PROCEDURE,- +PyUnicode_InternInPlace=PROCEDURE,- +PyUnicode_IsIdentifier=PROCEDURE,- +PyUnicode_Join=PROCEDURE,- +PyUnicode_New=PROCEDURE,- +PyUnicode_Partition=PROCEDURE,- +PyUnicode_RPartition=PROCEDURE,- +PyUnicode_RSplit=PROCEDURE,- +PyUnicode_ReadChar=PROCEDURE,- +PyUnicode_Replace=PROCEDURE,- +PyUnicode_Resize=PROCEDURE,- +PyUnicode_RichCompare=PROCEDURE,- +PyUnicode_Split=PROCEDURE,- +PyUnicode_Splitlines=PROCEDURE,- +PyUnicode_Substring=PROCEDURE,- +PyUnicode_Tailmatch=PROCEDURE,- +PyUnicode_TransformDeci2bfsl6e$=PROCEDURE,- +PyUnicode_Translate=PROCEDURE,- +PyUnicode_TranslateCharmap=PROCEDURE,- +PyUnicode_Type=DATA,- +PyUnicode_WriteChar=PROCEDURE,- +PyVectorcall_Call=PROCEDURE,- +PyWeakref_GetObject=PROCEDURE,- +PyWeakref_NewProxy=PROCEDURE,- +PyWeakref_NewRef=PROCEDURE,- +PyWideStringList_Append=PROCEDURE,- +PyWideStringList_Insert=PROCEDURE,- +PyWrapperDescr_Type=DATA,- +PyWrapper_New=PROCEDURE,- +PyZip_Type=DATA,- +Py_AddPendingCall=PROCEDURE,- +Py_AtExit=PROCEDURE,- +Py_BuildValue=PROCEDURE,- +Py_BytesMain=PROCEDURE,- +Py_BytesWarningFlag=DATA,- +Py_CompileString=PROCEDURE,- +Py_CompileStringExFlags=PROCEDURE,- +Py_CompileStringFlags=PROCEDURE,- +Py_CompileStringObject=PROCEDURE,- +Py_DebugFlag=DATA,- +Py_DecRef=PROCEDURE,- +Py_DecodeLocale=PROCEDURE,- +Py_DontWriteBytecodeFlag=DATA,- +Py_EncodeLocale=PROCEDURE,- +Py_EndInterpreter=PROCEDURE,- +Py_Exit=PROCEDURE,- +Py_ExitStatusException=PROCEDURE,- +Py_FatalError=PROCEDURE,- +Py_FdIsInteractive=PROCEDURE,- +Py_FileSystemDefaultEnc3q1c87n$=DATA,- +Py_FileSystemDefaultEncoding=DATA,- +Py_Finalize=PROCEDURE,- +Py_FinalizeEx=PROCEDURE,- +Py_FrozenFlag=DATA,- +Py_FrozenMain=PROCEDURE,- +Py_GetArgcArgv=PROCEDURE,- +Py_GetBuildInfo=PROCEDURE,- +Py_GetCompiler=PROCEDURE,- +Py_GetCopyright=PROCEDURE,- +Py_GetExecPrefix=PROCEDURE,- +Py_GetPath=PROCEDURE,- +Py_GetPlatform=PROCEDURE,- +Py_GetPrefix=PROCEDURE,- +Py_GetProgramFullPath=PROCEDURE,- +Py_GetProgramName=PROCEDURE,- +Py_GetPythonHome=PROCEDURE,- +Py_GetRecursionLimit=PROCEDURE,- +Py_GetVersion=PROCEDURE,- +Py_HasFileSystemDefaultEncoding=DATA,- +Py_HashRandomizationFlag=DATA,- +Py_IgnoreEnvironmentFlag=DATA,- +Py_IncRef=PROCEDURE,- +Py_Initialize=PROCEDURE,- +Py_InitializeEx=PROCEDURE,- +Py_InitializeFromConfig=PROCEDURE,- +Py_InspectFlag=DATA,- +Py_InteractiveFlag=DATA,- +Py_IsInitialized=PROCEDURE,- +Py_IsolatedFlag=DATA,- +Py_Main=PROCEDURE,- +Py_MakePendingCalls=PROCEDURE,- +Py_NewInterpreter=PROCEDURE,- +Py_NoSiteFlag=DATA,- +Py_NoUserSiteDirectory=DATA,- +Py_OptimizeFlag=DATA,- +Py_PreInitialize=PROCEDURE,- +Py_PreInitializeFromArgs=PROCEDURE,- +Py_PreInitializeFromBytesArgs=PROCEDURE,- +Py_QuietFlag=DATA,- +Py_ReprEnter=PROCEDURE,- +Py_ReprLeave=PROCEDURE,- +Py_RunMain=PROCEDURE,- +Py_SetPath=PROCEDURE,- +Py_SetProgramName=PROCEDURE,- +Py_SetPythonHome=PROCEDURE,- +Py_SetRecursionLimit=PROCEDURE,- +Py_SetStandardStreamEncoding=PROCEDURE,- +Py_SymtableString=PROCEDURE,- +Py_SymtableStringObject=PROCEDURE,- +Py_UNICODE_strcat=PROCEDURE,- +Py_UNICODE_strchr=PROCEDURE,- +Py_UNICODE_strcmp=PROCEDURE,- +Py_UNICODE_strcpy=PROCEDURE,- +Py_UNICODE_strlen=PROCEDURE,- +Py_UNICODE_strncmp=PROCEDURE,- +Py_UNICODE_strncpy=PROCEDURE,- +Py_UNICODE_strrchr=PROCEDURE,- +Py_UTF8Mode=DATA,- +Py_UnbufferedStdioFlag=DATA,- +Py_UniversalNewlineFgets=PROCEDURE,- +Py_VaBuildValue=PROCEDURE,- +Py_VerboseFlag=DATA,- +Py_hexdigits=DATA,- +_PyAST_ExprAsUnicode=PROCEDURE,- +_PyAST_GetDocString=PROCEDURE,- +_PyAST_Optimize=PROCEDURE,- +_PyAccu_Accumulate=PROCEDURE,- +_PyAccu_Destroy=PROCEDURE,- +_PyAccu_Finish=PROCEDURE,- +_PyAccu_FinishAsList=PROCEDURE,- +_PyAccu_Init=PROCEDURE,- +_PyArg_BadArgument=PROCEDURE,- +_PyArg_CheckPositional=PROCEDURE,- +_PyArg_Fini=PROCEDURE,- +_PyArg_NoKeywords=PROCEDURE,- +_PyArg_NoPositional=PROCEDURE,- +_PyArg_ParseStack=PROCEDURE,- +_PyArg_ParseStackAndKey1r5kfa7$=PROCEDURE,- +_PyArg_ParseStackAndKeywords=PROCEDURE,- +_PyArg_ParseStack_SizeT=PROCEDURE,- +_PyArg_ParseTupleAndKey19kl55t$=PROCEDURE,- +_PyArg_ParseTupleAndKey3hjidue$=PROCEDURE,- +_PyArg_ParseTupleAndKey3rsn4lp$=PROCEDURE,- +_PyArg_ParseTuple_SizeT=PROCEDURE,- +_PyArg_Parse_SizeT=PROCEDURE,- +_PyArg_UnpackKeywords=PROCEDURE,- +_PyArg_UnpackStack=PROCEDURE,- +_PyArg_VaParseTupleAndK1bu9bqh$=PROCEDURE,- +_PyArg_VaParseTupleAndK1dkfbe3$=PROCEDURE,- +_PyArg_VaParseTupleAndK3me8rbm$=PROCEDURE,- +_PyArg_VaParse_SizeT=PROCEDURE,- +_PyArgv_AsWstrList=PROCEDURE,- +_PyAsyncGenASend_Type=DATA,- +_PyAsyncGenAThrow_Type=DATA,- +_PyAsyncGenValueWrapperNew=PROCEDURE,- +_PyAsyncGenWrappedValue_Type=DATA,- +_PyBuiltin_Init=PROCEDURE,- +_PyBuiltins_AddExceptions=PROCEDURE,- +_PyByteArray_empty_string=DATA,- +_PyBytesIOBuffer_Type=DATA,- +_PyBytesWriter_Alloc=PROCEDURE,- +_PyBytesWriter_Dealloc=PROCEDURE,- +_PyBytesWriter_Finish=PROCEDURE,- +_PyBytesWriter_Init=PROCEDURE,- +_PyBytesWriter_Prepare=PROCEDURE,- +_PyBytesWriter_Resize=PROCEDURE,- +_PyBytesWriter_WriteBytes=PROCEDURE,- +_PyBytes_DecodeEscape=PROCEDURE,- +_PyBytes_FormatEx=PROCEDURE,- +_PyBytes_FromHex=PROCEDURE,- +_PyBytes_Join=PROCEDURE,- +_PyBytes_Resize=PROCEDURE,- +_PyCFunction_DebugMallocStats=PROCEDURE,- +_PyCFunction_FastCallDict=PROCEDURE,- +_PyCode_CheckLineNumber=PROCEDURE,- +_PyCode_ConstantKey=PROCEDURE,- +_PyCode_GetExtra=PROCEDURE,- +_PyCode_InitOpcache=PROCEDURE,- +_PyCode_SetExtra=PROCEDURE,- +_PyCodecInfo_GetIncreme06rkpfs$=PROCEDURE,- +_PyCodecInfo_GetIncreme30gl7kb$=PROCEDURE,- +_PyCodec_DecodeText=PROCEDURE,- +_PyCodec_EncodeText=PROCEDURE,- +_PyCodec_Forget=PROCEDURE,- +_PyCodec_Lookup=PROCEDURE,- +_PyCodec_LookupTextEncoding=PROCEDURE,- +_PyComplex_FormatAdvancedWriter=PROCEDURE,- +_PyConfig_Copy=PROCEDURE,- +_PyConfig_InitCompatConfig=PROCEDURE,- +_PyConfig_InitPathConfig=PROCEDURE,- +_PyConfig_SetPyArgv=PROCEDURE,- +_PyConfig_Write=PROCEDURE,- +_PyConfig_WritePathConfig=PROCEDURE,- +_PyContext_Fini=PROCEDURE,- +_PyContext_Init=PROCEDURE,- +_PyContext_NewHamtForTests=PROCEDURE,- +_PyCoroWrapper_Type=DATA,- +_PyCoro_GetAwaitableIter=PROCEDURE,- +_PyCrossInterpreterData0etrgar$=PROCEDURE,- +_PyCrossInterpreterData0ipttne$=PROCEDURE,- +_PyCrossInterpreterData_Lookup=PROCEDURE,- +_PyCrossInterpreterData_Release=PROCEDURE,- +_PyDebugAllocatorStats=PROCEDURE,- +_PyDictKeys_DecRef=PROCEDURE,- +_PyDictView_Intersect=PROCEDURE,- +_PyDictView_New=PROCEDURE,- +_PyDict_CheckConsistency=PROCEDURE,- +_PyDict_Contains=PROCEDURE,- +_PyDict_DebugMallocStats=PROCEDURE,- +_PyDict_DelItemId=PROCEDURE,- +_PyDict_DelItemIf=PROCEDURE,- +_PyDict_DelItem_KnownHash=PROCEDURE,- +_PyDict_FromKeys=PROCEDURE,- +_PyDict_GetItemId=PROCEDURE,- +_PyDict_GetItemIdWithError=PROCEDURE,- +_PyDict_GetItemStringWithError=PROCEDURE,- +_PyDict_GetItem_KnownHash=PROCEDURE,- +_PyDict_HasOnlyStringKeys=PROCEDURE,- +_PyDict_KeysSize=PROCEDURE,- +_PyDict_LoadGlobal=PROCEDURE,- +_PyDict_MaybeUntrack=PROCEDURE,- +_PyDict_MergeEx=PROCEDURE,- +_PyDict_NewKeysForClass=PROCEDURE,- +_PyDict_NewPresized=PROCEDURE,- +_PyDict_Next=PROCEDURE,- +_PyDict_Pop=PROCEDURE,- +_PyDict_Pop_KnownHash=PROCEDURE,- +_PyDict_SetItemId=PROCEDURE,- +_PyDict_SetItem_KnownHash=PROCEDURE,- +_PyDict_SizeOf=PROCEDURE,- +_PyErr_BadInternalCall=PROCEDURE,- +_PyErr_ChainExceptions=PROCEDURE,- +_PyErr_CheckSignals=PROCEDURE,- +_PyErr_Clear=PROCEDURE,- +_PyErr_Display=PROCEDURE,- +_PyErr_ExceptionMatches=PROCEDURE,- +_PyErr_Fetch=PROCEDURE,- +_PyErr_Format=PROCEDURE,- +_PyErr_FormatFromCause=PROCEDURE,- +_PyErr_GetTopmostException=PROCEDURE,- +_PyErr_Init=PROCEDURE,- +_PyErr_NormalizeException=PROCEDURE,- +_PyErr_Print=PROCEDURE,- +_PyErr_Restore=PROCEDURE,- +_PyErr_SetKeyError=PROCEDURE,- +_PyErr_SetNone=PROCEDURE,- +_PyErr_SetObject=PROCEDURE,- +_PyErr_SetString=PROCEDURE,- +_PyErr_TrySetFromCause=PROCEDURE,- +_PyErr_WarnUnawaitedCoroutine=PROCEDURE,- +_PyErr_WriteUnraisableD0gkavvc$=PROCEDURE,- +_PyErr_WriteUnraisableMsg=PROCEDURE,- +_PyEval_AddPendingCall=PROCEDURE,- +_PyEval_CallTracing=PROCEDURE,- +_PyEval_EvalCodeWithName=PROCEDURE,- +_PyEval_EvalFrameDefault=PROCEDURE,- +_PyEval_Fini=PROCEDURE,- +_PyEval_FiniThreads=PROCEDURE,- +_PyEval_GetAsyncGenFinalizer=PROCEDURE,- +_PyEval_GetAsyncGenFirstiter=PROCEDURE,- +_PyEval_GetBuiltinId=PROCEDURE,- +_PyEval_GetCoroutineOri166ulm8$=PROCEDURE,- +_PyEval_GetSwitchInterval=PROCEDURE,- +_PyEval_Initialize=PROCEDURE,- +_PyEval_ReInitThreads=PROCEDURE,- +_PyEval_RequestCodeExtraIndex=PROCEDURE,- +_PyEval_SetAsyncGenFinalizer=PROCEDURE,- +_PyEval_SetAsyncGenFirstiter=PROCEDURE,- +_PyEval_SetCoroutineOri2cosu4s$=PROCEDURE,- +_PyEval_SetSwitchInterval=PROCEDURE,- +_PyEval_SignalAsyncExc=PROCEDURE,- +_PyEval_SignalReceived=PROCEDURE,- +_PyEval_SliceIndex=PROCEDURE,- +_PyEval_SliceIndexNotNone=PROCEDURE,- +_PyExc_Fini=PROCEDURE,- +_PyExc_Init=PROCEDURE,- +_PyFaulthandler_Fini=PROCEDURE,- +_PyFaulthandler_Init=PROCEDURE,- +_PyFileIO_closed=PROCEDURE,- +_PyFloat_DebugMallocStats=PROCEDURE,- +_PyFloat_FormatAdvancedWriter=PROCEDURE,- +_PyFloat_Init=PROCEDURE,- +_PyFloat_Pack2=PROCEDURE,- +_PyFloat_Pack4=PROCEDURE,- +_PyFloat_Pack8=PROCEDURE,- +_PyFloat_Unpack2=PROCEDURE,- +_PyFloat_Unpack4=PROCEDURE,- +_PyFloat_Unpack8=PROCEDURE,- +_PyFrame_DebugMallocStats=PROCEDURE,- +_PyFrame_New_NoTrack=PROCEDURE,- +_PyFunction_FastCallDict=PROCEDURE,- +_PyFunction_Vectorcall=PROCEDURE,- +_PyGC_CollectIfEnabled=PROCEDURE,- +_PyGC_CollectNoFail=PROCEDURE,- +_PyGC_Dump=PROCEDURE,- +_PyGC_DumpShutdownStats=PROCEDURE,- +_PyGC_Fini=PROCEDURE,- +_PyGC_Initialize=PROCEDURE,- +_PyGILState_Fini=PROCEDURE,- +_PyGILState_GetInterpre09it46k$=PROCEDURE,- +_PyGILState_Init=PROCEDURE,- +_PyGILState_Reinit=PROCEDURE,- +_PyGen_FetchStopIterationValue=PROCEDURE,- +_PyGen_Finalize=PROCEDURE,- +_PyGen_Send=PROCEDURE,- +_PyGen_SetStopIterationValue=PROCEDURE,- +_PyGen_yf=PROCEDURE,- +_PyHamtItems_Type=DATA,- +_PyHamtKeys_Type=DATA,- +_PyHamtValues_Type=DATA,- +_PyHamt_ArrayNode_Type=DATA,- +_PyHamt_Assoc=PROCEDURE,- +_PyHamt_BitmapNode_Type=DATA,- +_PyHamt_CollisionNode_Type=DATA,- +_PyHamt_Eq=PROCEDURE,- +_PyHamt_Find=PROCEDURE,- +_PyHamt_Fini=PROCEDURE,- +_PyHamt_Init=PROCEDURE,- +_PyHamt_Len=PROCEDURE,- +_PyHamt_New=PROCEDURE,- +_PyHamt_NewIterItems=PROCEDURE,- +_PyHamt_NewIterKeys=PROCEDURE,- +_PyHamt_NewIterValues=PROCEDURE,- +_PyHamt_Type=DATA,- +_PyHamt_Without=PROCEDURE,- +_PyHash_Fini=PROCEDURE,- +_PyIOBase_check_closed=PROCEDURE,- +_PyIOBase_check_readable=PROCEDURE,- +_PyIOBase_check_seekable=PROCEDURE,- +_PyIOBase_check_writable=PROCEDURE,- +_PyIOBase_finalize=PROCEDURE,- +_PyIO_Module=DATA,- +_PyIO_empty_bytes=DATA,- +_PyIO_empty_str=DATA,- +_PyIO_find_line_ending=PROCEDURE,- +_PyIO_get_locale_module=PROCEDURE,- +_PyIO_get_module_state=PROCEDURE,- +_PyIO_str_close=DATA,- +_PyIO_str_closed=DATA,- +_PyIO_str_decode=DATA,- +_PyIO_str_encode=DATA,- +_PyIO_str_fileno=DATA,- +_PyIO_str_flush=DATA,- +_PyIO_str_getstate=DATA,- +_PyIO_str_isatty=DATA,- +_PyIO_str_newlines=DATA,- +_PyIO_str_nl=DATA,- +_PyIO_str_peek=DATA,- +_PyIO_str_read1=DATA,- +_PyIO_str_read=DATA,- +_PyIO_str_readable=DATA,- +_PyIO_str_readall=DATA,- +_PyIO_str_readinto=DATA,- +_PyIO_str_readline=DATA,- +_PyIO_str_reset=DATA,- +_PyIO_str_seek=DATA,- +_PyIO_str_seekable=DATA,- +_PyIO_str_setstate=DATA,- +_PyIO_str_tell=DATA,- +_PyIO_str_truncate=DATA,- +_PyIO_str_writable=DATA,- +_PyIO_str_write=DATA,- +_PyIO_trap_eintr=PROCEDURE,- +_PyImportHooks_Init=PROCEDURE,- +_PyImportZip_Init=PROCEDURE,- +_PyImport_AcquireLock=PROCEDURE,- +_PyImport_AddModuleObject=PROCEDURE,- +_PyImport_DynLoadFiletab=DATA,- +_PyImport_FindBuiltin=PROCEDURE,- +_PyImport_FindExtensionObject=PROCEDURE,- +_PyImport_FindExtensionObjectEx=PROCEDURE,- +_PyImport_FindSharedFuncptr=PROCEDURE,- +_PyImport_Fini2=PROCEDURE,- +_PyImport_Fini=PROCEDURE,- +_PyImport_FixupBuiltin=PROCEDURE,- +_PyImport_FixupExtensionObject=PROCEDURE,- +_PyImport_GetModuleId=PROCEDURE,- +_PyImport_Init=PROCEDURE,- +_PyImport_Inittab=DATA,- +_PyImport_IsInitialized=PROCEDURE,- +_PyImport_LoadDynamicMo1v767fh$=PROCEDURE,- +_PyImport_ReInitLock=PROCEDURE,- +_PyImport_ReleaseLock=PROCEDURE,- +_PyImport_SetModule=PROCEDURE,- +_PyImport_SetModuleString=PROCEDURE,- +_PyIncrementalNewlineDe3ke4gfc$=PROCEDURE,- +_PyInterpreterID_LookUp=PROCEDURE,- +_PyInterpreterID_New=PROCEDURE,- +_PyInterpreterID_Type=DATA,- +_PyInterpreterState_Del0mj6vhm$=PROCEDURE,- +_PyInterpreterState_Enable=PROCEDURE,- +_PyInterpreterState_Get0lrqb7p$=PROCEDURE,- +_PyInterpreterState_Get=PROCEDURE,- +_PyInterpreterState_GetIDObject=PROCEDURE,- +_PyInterpreterState_IDDecref=PROCEDURE,- +_PyInterpreterState_IDIncref=PROCEDURE,- +_PyInterpreterState_IDInitref=PROCEDURE,- +_PyInterpreterState_LookUpID=PROCEDURE,- +_PyInterpreterState_Req0tb95rd$=PROCEDURE,- +_PyInterpreterState_Req2qu49fg$=PROCEDURE,- +_PyList_DebugMallocStats=PROCEDURE,- +_PyList_Extend=PROCEDURE,- +_PyLong_AsByteArray=PROCEDURE,- +_PyLong_AsInt=PROCEDURE,- +_PyLong_AsTime_t=PROCEDURE,- +_PyLong_Copy=PROCEDURE,- +_PyLong_DigitValue=DATA,- +_PyLong_DivmodNear=PROCEDURE,- +_PyLong_Format=PROCEDURE,- +_PyLong_FormatAdvancedWriter=PROCEDURE,- +_PyLong_FormatBytesWriter=PROCEDURE,- +_PyLong_FormatWriter=PROCEDURE,- +_PyLong_Frexp=PROCEDURE,- +_PyLong_FromByteArray=PROCEDURE,- +_PyLong_FromBytes=PROCEDURE,- +_PyLong_FromGid=PROCEDURE,- +_PyLong_FromNbIndexOrNbInt=PROCEDURE,- +_PyLong_FromNbInt=PROCEDURE,- +_PyLong_FromTime_t=PROCEDURE,- +_PyLong_FromUid=PROCEDURE,- +_PyLong_GCD=PROCEDURE,- +_PyLong_Init=PROCEDURE,- +_PyLong_Lshift=PROCEDURE,- +_PyLong_New=PROCEDURE,- +_PyLong_NumBits=PROCEDURE,- +_PyLong_One=DATA,- +_PyLong_Rshift=PROCEDURE,- +_PyLong_Sign=PROCEDURE,- +_PyLong_Size_t_Converter=PROCEDURE,- +_PyLong_UnsignedInt_Converter=PROCEDURE,- +_PyLong_UnsignedLongLon0ntrsub$=PROCEDURE,- +_PyLong_UnsignedLong_Converter=PROCEDURE,- +_PyLong_UnsignedShort_Converter=PROCEDURE,- +_PyLong_Zero=DATA,- +_PyManagedBuffer_Type=DATA,- +_PyMem_DumpTraceback=PROCEDURE,- +_PyMem_GetAllocatorName=PROCEDURE,- +_PyMem_GetCurrentAllocatorName=PROCEDURE,- +_PyMem_RawStrdup=PROCEDURE,- +_PyMem_RawWcsdup=PROCEDURE,- +_PyMem_SetDefaultAllocator=PROCEDURE,- +_PyMem_SetupAllocators=PROCEDURE,- +_PyMem_Strdup=PROCEDURE,- +_PyMethodDef_RawFastCal31habv6$=PROCEDURE,- +_PyMethodDef_RawFastCallDict=PROCEDURE,- +_PyMethodWrapper_Type=DATA,- +_PyMethod_DebugMallocStats=PROCEDURE,- +_PyModuleSpec_IsInitializing=PROCEDURE,- +_PyModule_Clear=PROCEDURE,- +_PyModule_ClearDict=PROCEDURE,- +_PyModule_CreateInitialized=PROCEDURE,- +_PyNamespace_New=PROCEDURE,- +_PyNamespace_Type=DATA,- +_PyNode_FinalizeEndPos=PROCEDURE,- +_PyNode_SizeOf=PROCEDURE,- +_PyNone_Type=DATA,- +_PyNotImplemented_Type=DATA,- +_PyOS_GetOpt=PROCEDURE,- +_PyOS_IsMainThread=PROCEDURE,- +_PyOS_ReadlineTState=DATA,- +_PyOS_ResetGetOpt=PROCEDURE,- +_PyOS_URandom=PROCEDURE,- +_PyOS_URandomNonblock=PROCEDURE,- +_PyOS_mystrnicmp_hack=DATA,- +_PyOS_optarg=DATA,- +_PyOS_opterr=DATA,- +_PyOS_optind=DATA,- +_PyObjectDict_SetItem=PROCEDURE,- +_PyObject_AssertFailed=PROCEDURE,- +_PyObject_CallFunction_SizeT=PROCEDURE,- +_PyObject_CallMethodId=PROCEDURE,- +_PyObject_CallMethodIdObjArgs=PROCEDURE,- +_PyObject_CallMethodId_SizeT=PROCEDURE,- +_PyObject_CallMethod_SizeT=PROCEDURE,- +_PyObject_Call_Prepend=PROCEDURE,- +_PyObject_CheckConsistency=PROCEDURE,- +_PyObject_CheckCrossInt10cv01b$=PROCEDURE,- +_PyObject_DebugMallocStats=PROCEDURE,- +_PyObject_DebugTypeStats=PROCEDURE,- +_PyObject_Dump=PROCEDURE,- +_PyObject_FastCallDict=PROCEDURE,- +_PyObject_FastCall_Prepend=PROCEDURE,- +_PyObject_GC_Calloc=PROCEDURE,- +_PyObject_GC_Malloc=PROCEDURE,- +_PyObject_GC_New=PROCEDURE,- +_PyObject_GC_NewVar=PROCEDURE,- +_PyObject_GC_Resize=PROCEDURE,- +_PyObject_GenericGetAtt3rvp6ap$=PROCEDURE,- +_PyObject_GenericSetAtt0su4orl$=PROCEDURE,- +_PyObject_GetAttrId=PROCEDURE,- +_PyObject_GetCrossInter120g118$=PROCEDURE,- +_PyObject_GetDictPtr=PROCEDURE,- +_PyObject_GetMethod=PROCEDURE,- +_PyObject_HasAttrId=PROCEDURE,- +_PyObject_HasLen=PROCEDURE,- +_PyObject_IsAbstract=PROCEDURE,- +_PyObject_IsFreed=PROCEDURE,- +_PyObject_LookupAttr=PROCEDURE,- +_PyObject_LookupAttrId=PROCEDURE,- +_PyObject_LookupSpecial=PROCEDURE,- +_PyObject_MakeTpCall=PROCEDURE,- +_PyObject_New=PROCEDURE,- +_PyObject_NewVar=PROCEDURE,- +_PyObject_NextNotImplemented=PROCEDURE,- +_PyObject_RealIsInstance=PROCEDURE,- +_PyObject_RealIsSubclass=PROCEDURE,- +_PyObject_SetAttrId=PROCEDURE,- +_PyParser_Grammar=DATA,- +_PyParser_TokenNames=DATA,- +_PyPathConfig_Calculate=PROCEDURE,- +_PyPathConfig_ClearGlobal=PROCEDURE,- +_PyPathConfig_ComputeSysPath0=PROCEDURE,- +_PyPreCmdline_Clear=PROCEDURE,- +_PyPreCmdline_Read=PROCEDURE,- +_PyPreCmdline_SetArgv=PROCEDURE,- +_PyPreCmdline_SetConfig=PROCEDURE,- +_PyPreConfig_AsDict=PROCEDURE,- +_PyPreConfig_GetConfig=PROCEDURE,- +_PyPreConfig_InitCompatConfig=PROCEDURE,- +_PyPreConfig_InitFromConfig=PROCEDURE,- +_PyPreConfig_InitFromPreConfig=PROCEDURE,- +_PyPreConfig_Read=PROCEDURE,- +_PyPreConfig_Write=PROCEDURE,- +_PyRuntime=DATA,- +_PyRuntimeState_Fini=PROCEDURE,- +_PyRuntimeState_Init=PROCEDURE,- +_PyRuntimeState_ReInitThreads=PROCEDURE,- +_PyRuntime_Finalize=PROCEDURE,- +_PyRuntime_Initialize=PROCEDURE,- +_PySequence_BytesToCharpArray=PROCEDURE,- +_PySequence_IterSearch=PROCEDURE,- +_PySet_Dummy=DATA,- +_PySet_NextEntry=PROCEDURE,- +_PySet_Update=PROCEDURE,- +_PySignal_AfterFork=PROCEDURE,- +_PySlice_FromIndices=PROCEDURE,- +_PySlice_GetLongIndices=PROCEDURE,- +_PyStack_AsDict=PROCEDURE,- +_PyStack_UnpackDict=PROCEDURE,- +_PyState_AddModule=PROCEDURE,- +_PyState_ClearModules=PROCEDURE,- +_PyStructSequence_Init=PROCEDURE,- +_PySys_ClearAuditHooks=PROCEDURE,- +_PySys_Create=PROCEDURE,- +_PySys_GetObjectId=PROCEDURE,- +_PySys_GetSizeOf=PROCEDURE,- +_PySys_ImplCacheTag=DATA,- +_PySys_ImplName=DATA,- +_PySys_InitMain=PROCEDURE,- +_PySys_ReadPreinitWarnOptions=PROCEDURE,- +_PySys_ReadPreinitXOptions=PROCEDURE,- +_PySys_SetObjectId=PROCEDURE,- +_PySys_SetPreliminaryStderr=PROCEDURE,- +_PyThreadState_DeleteExcept=PROCEDURE,- +_PyThreadState_Init=PROCEDURE,- +_PyThreadState_Prealloc=PROCEDURE,- +_PyThreadState_Swap=PROCEDURE,- +_PyThreadState_UncheckedGet=PROCEDURE,- +_PyThread_CurrentFrames=PROCEDURE,- +_PyThread_cond_after=PROCEDURE,- +_PyThread_cond_init=PROCEDURE,- +_PyTime_AsMicroseconds=PROCEDURE,- +_PyTime_AsMilliseconds=PROCEDURE,- +_PyTime_AsNanosecondsObject=PROCEDURE,- +_PyTime_AsSecondsDouble=PROCEDURE,- +_PyTime_AsTimespec=PROCEDURE,- +_PyTime_AsTimeval=PROCEDURE,- +_PyTime_AsTimevalTime_t=PROCEDURE,- +_PyTime_AsTimeval_noraise=PROCEDURE,- +_PyTime_FromMillisecondsObject=PROCEDURE,- +_PyTime_FromNanoseconds=PROCEDURE,- +_PyTime_FromNanosecondsObject=PROCEDURE,- +_PyTime_FromSeconds=PROCEDURE,- +_PyTime_FromSecondsObject=PROCEDURE,- +_PyTime_FromTimespec=PROCEDURE,- +_PyTime_FromTimeval=PROCEDURE,- +_PyTime_GetMonotonicClo0cvp326$=PROCEDURE,- +_PyTime_GetMonotonicClock=PROCEDURE,- +_PyTime_GetPerfCounter=PROCEDURE,- +_PyTime_GetPerfCounterWithInfo=PROCEDURE,- +_PyTime_GetSystemClock=PROCEDURE,- +_PyTime_GetSystemClockWithInfo=PROCEDURE,- +_PyTime_Init=PROCEDURE,- +_PyTime_MulDiv=PROCEDURE,- +_PyTime_ObjectToTime_t=PROCEDURE,- +_PyTime_ObjectToTimespec=PROCEDURE,- +_PyTime_ObjectToTimeval=PROCEDURE,- +_PyTime_gmtime=PROCEDURE,- +_PyTime_localtime=PROCEDURE,- +_PyTraceBack_FromFrame=PROCEDURE,- +_PyTraceMalloc_Fini=PROCEDURE,- +_PyTraceMalloc_GetTraceback=PROCEDURE,- +_PyTraceMalloc_Init=PROCEDURE,- +_PyTraceMalloc_NewReference=PROCEDURE,- +_PyTraceback_Add=PROCEDURE,- +_PyTrash_deposit_object=PROCEDURE,- +_PyTrash_destroy_chain=PROCEDURE,- +_PyTrash_thread_deposit_object=PROCEDURE,- +_PyTrash_thread_destroy_chain=PROCEDURE,- +_PyTuple_DebugMallocStats=PROCEDURE,- +_PyTuple_FromArray=PROCEDURE,- +_PyTuple_MaybeUntrack=PROCEDURE,- +_PyTuple_Resize=PROCEDURE,- +_PyType_CalculateMetaclass=PROCEDURE,- +_PyType_CheckConsistency=PROCEDURE,- +_PyType_Fini=PROCEDURE,- +_PyType_GetDocFromInternalDoc=PROCEDURE,- +_PyType_GetTextSignatur2m88202$=PROCEDURE,- +_PyType_Lookup=PROCEDURE,- +_PyType_LookupId=PROCEDURE,- +_PyType_Name=PROCEDURE,- +_PyTypes_Init=PROCEDURE,- +_PyUnicodeTranslateError_Create=PROCEDURE,- +_PyUnicodeWriter_Dealloc=PROCEDURE,- +_PyUnicodeWriter_Finish=PROCEDURE,- +_PyUnicodeWriter_Init=PROCEDURE,- +_PyUnicodeWriter_Prepar08gfmbu$=PROCEDURE,- +_PyUnicodeWriter_Prepar34806s7$=PROCEDURE,- +_PyUnicodeWriter_WriteA2qb8qnu$=PROCEDURE,- +_PyUnicodeWriter_WriteChar=PROCEDURE,- +_PyUnicodeWriter_WriteL13fdv54$=PROCEDURE,- +_PyUnicodeWriter_WriteStr=PROCEDURE,- +_PyUnicodeWriter_WriteSubstring=PROCEDURE,- +_PyUnicode_AsASCIIString=PROCEDURE,- +_PyUnicode_AsKind=PROCEDURE,- +_PyUnicode_AsLatin1String=PROCEDURE,- +_PyUnicode_AsUTF8String=PROCEDURE,- +_PyUnicode_AsUnicode=PROCEDURE,- +_PyUnicode_CheckConsistency=PROCEDURE,- +_PyUnicode_ClearStaticStrings=PROCEDURE,- +_PyUnicode_Copy=PROCEDURE,- +_PyUnicode_DecodeUnicodeEscape=PROCEDURE,- +_PyUnicode_EQ=PROCEDURE,- +_PyUnicode_EncodeCharmap=PROCEDURE,- +_PyUnicode_EncodeUTF16=PROCEDURE,- +_PyUnicode_EncodeUTF32=PROCEDURE,- +_PyUnicode_EncodeUTF7=PROCEDURE,- +_PyUnicode_EqualToASCIIId=PROCEDURE,- +_PyUnicode_EqualToASCIIString=PROCEDURE,- +_PyUnicode_ExtendedCase=DATA,- +_PyUnicode_FastCopyCharacters=PROCEDURE,- +_PyUnicode_FastFill=PROCEDURE,- +_PyUnicode_FindMaxChar=PROCEDURE,- +_PyUnicode_Fini=PROCEDURE,- +_PyUnicode_FormatAdvancedWriter=PROCEDURE,- +_PyUnicode_FormatLong=PROCEDURE,- +_PyUnicode_FromASCII=PROCEDURE,- +_PyUnicode_FromId=PROCEDURE,- +_PyUnicode_Init=PROCEDURE,- +_PyUnicode_InitEncodings=PROCEDURE,- +_PyUnicode_InsertThousa3dqn1s5$=PROCEDURE,- +_PyUnicode_IsAlpha=PROCEDURE,- +_PyUnicode_IsCaseIgnorable=PROCEDURE,- +_PyUnicode_IsCased=PROCEDURE,- +_PyUnicode_IsDecimalDigit=PROCEDURE,- +_PyUnicode_IsDigit=PROCEDURE,- +_PyUnicode_IsLinebreak=PROCEDURE,- +_PyUnicode_IsLowercase=PROCEDURE,- +_PyUnicode_IsNumeric=PROCEDURE,- +_PyUnicode_IsPrintable=PROCEDURE,- +_PyUnicode_IsTitlecase=PROCEDURE,- +_PyUnicode_IsUppercase=PROCEDURE,- +_PyUnicode_IsWhitespace=PROCEDURE,- +_PyUnicode_IsXidContinue=PROCEDURE,- +_PyUnicode_IsXidStart=PROCEDURE,- +_PyUnicode_JoinArray=PROCEDURE,- +_PyUnicode_Ready=PROCEDURE,- +_PyUnicode_ToDecimalDigit=PROCEDURE,- +_PyUnicode_ToDigit=PROCEDURE,- +_PyUnicode_ToFoldedFull=PROCEDURE,- +_PyUnicode_ToLowerFull=PROCEDURE,- +_PyUnicode_ToLowercase=PROCEDURE,- +_PyUnicode_ToNumeric=PROCEDURE,- +_PyUnicode_ToTitleFull=PROCEDURE,- +_PyUnicode_ToTitlecase=PROCEDURE,- +_PyUnicode_ToUpperFull=PROCEDURE,- +_PyUnicode_ToUppercase=PROCEDURE,- +_PyUnicode_TransformDec0maj7tg$=PROCEDURE,- +_PyUnicode_TypeRecords=DATA,- +_PyUnicode_XStrip=PROCEDURE,- +_PyWarnings_Fini=PROCEDURE,- +_PyWarnings_Init=PROCEDURE,- +_PyWeakref_CallableProxyType=DATA,- +_PyWeakref_ClearRef=PROCEDURE,- +_PyWeakref_GetWeakrefCount=PROCEDURE,- +_PyWeakref_ProxyType=DATA,- +_PyWeakref_RefType=DATA,- +_PyWideStringList_AsList=PROCEDURE,- +_PyWideStringList_Check1etephj$=PROCEDURE,- +_PyWideStringList_Clear=PROCEDURE,- +_PyWideStringList_Copy=PROCEDURE,- +_PyWideStringList_Extend=PROCEDURE,- +_Py_AnnAssign=PROCEDURE,- +_Py_Assert=PROCEDURE,- +_Py_Assign=PROCEDURE,- +_Py_AsyncFor=PROCEDURE,- +_Py_AsyncFunctionDef=PROCEDURE,- +_Py_AsyncWith=PROCEDURE,- +_Py_Attribute=PROCEDURE,- +_Py_AugAssign=PROCEDURE,- +_Py_Await=PROCEDURE,- +_Py_BinOp=PROCEDURE,- +_Py_BoolOp=PROCEDURE,- +_Py_Break=PROCEDURE,- +_Py_BreakPoint=PROCEDURE,- +_Py_BuildValue_SizeT=PROCEDURE,- +_Py_Call=PROCEDURE,- +_Py_CheckFunctionResult=PROCEDURE,- +_Py_CheckRecursionLimit=DATA,- +_Py_CheckRecursiveCall=PROCEDURE,- +_Py_ClassDef=PROCEDURE,- +_Py_ClearArgcArgv=PROCEDURE,- +_Py_ClearFileSystemEncoding=PROCEDURE,- +_Py_ClearStandardStreamEncoding=PROCEDURE,- +_Py_CoerceLegacyLocale=PROCEDURE,- +_Py_Compare=PROCEDURE,- +_Py_Constant=PROCEDURE,- +_Py_Continue=PROCEDURE,- +_Py_Dealloc=PROCEDURE,- +_Py_DecodeLocaleEx=PROCEDURE,- +_Py_DecodeUTF8Ex=PROCEDURE,- +_Py_DecodeUTF8_surrogateescape=PROCEDURE,- +_Py_Delete=PROCEDURE,- +_Py_Dict=PROCEDURE,- +_Py_DictComp=PROCEDURE,- +_Py_DisplaySourceLine=PROCEDURE,- +_Py_DumpASCII=PROCEDURE,- +_Py_DumpDecimal=PROCEDURE,- +_Py_DumpHexadecimal=PROCEDURE,- +_Py_DumpPathConfig=PROCEDURE,- +_Py_DumpTraceback=PROCEDURE,- +_Py_DumpTracebackThreads=PROCEDURE,- +_Py_EllipsisObject=DATA,- +_Py_EncodeLocaleEx=PROCEDURE,- +_Py_EncodeLocaleRaw=PROCEDURE,- +_Py_EncodeUTF8Ex=PROCEDURE,- +_Py_ExceptHandler=PROCEDURE,- +_Py_Expr=PROCEDURE,- +_Py_Expression=PROCEDURE,- +_Py_ExtSlice=PROCEDURE,- +_Py_FalseStruct=DATA,- +_Py_FindEnvConfigValue=PROCEDURE,- +_Py_FinishPendingCalls=PROCEDURE,- +_Py_For=PROCEDURE,- +_Py_FormattedValue=PROCEDURE,- +_Py_FreeCharPArray=PROCEDURE,- +_Py_FunctionDef=PROCEDURE,- +_Py_FunctionType=PROCEDURE,- +_Py_GeneratorExp=PROCEDURE,- +_Py_GetAllocatedBlocks=PROCEDURE,- +_Py_GetConfigsAsDict=PROCEDURE,- +_Py_GetEnv=PROCEDURE,- +_Py_GetErrorHandler=PROCEDURE,- +_Py_GetForceASCII=PROCEDURE,- +_Py_GetLocaleconvNumeric=PROCEDURE,- +_Py_Gid_Converter=PROCEDURE,- +_Py_Global=PROCEDURE,- +_Py_HandleSystemExit=PROCEDURE,- +_Py_HasFileSystemDefaul1d82ugm$=DATA,- +_Py_HashBytes=PROCEDURE,- +_Py_HashDouble=PROCEDURE,- +_Py_HashPointer=PROCEDURE,- +_Py_HashRandomization_Fini=PROCEDURE,- +_Py_HashRandomization_Init=PROCEDURE,- +_Py_HashSecret=DATA,- +_Py_If=PROCEDURE,- +_Py_IfExp=PROCEDURE,- +_Py_Import=PROCEDURE,- +_Py_ImportFrom=PROCEDURE,- +_Py_Index=PROCEDURE,- +_Py_InitializeMain=PROCEDURE,- +_Py_Interactive=PROCEDURE,- +_Py_IsCoreInitialized=PROCEDURE,- +_Py_IsFinalizing=PROCEDURE,- +_Py_IsLocaleCoercionTarget=PROCEDURE,- +_Py_JoinedStr=PROCEDURE,- +_Py_KeyedHash=PROCEDURE,- +_Py_Lambda=PROCEDURE,- +_Py_LegacyLocaleDetected=PROCEDURE,- +_Py_List=PROCEDURE,- +_Py_ListComp=PROCEDURE,- +_Py_M__importlib_bootst3jkv519$=DATA,- +_Py_M__importlib_bootstrap=DATA,- +_Py_M__zipimport=DATA,- +_Py_Mangle=PROCEDURE,- +_Py_Module=PROCEDURE,- +_Py_Name=PROCEDURE,- +_Py_NamedExpr=PROCEDURE,- +_Py_NoneStruct=DATA,- +_Py_Nonlocal=PROCEDURE,- +_Py_NotImplementedStruct=DATA,- +_Py_PackageContext=DATA,- +_Py_Pass=PROCEDURE,- +_Py_PreInitializeFromConfig=PROCEDURE,- +_Py_PreInitializeFromPyArgv=PROCEDURE,- +_Py_PyAtExit=PROCEDURE,- +_Py_Raise=PROCEDURE,- +_Py_ResetForceASCII=PROCEDURE,- +_Py_RestoreSignals=PROCEDURE,- +_Py_Return=PROCEDURE,- +_Py_Set=PROCEDURE,- +_Py_SetComp=PROCEDURE,- +_Py_SetFileSystemEncoding=PROCEDURE,- +_Py_SetLocaleFromEnv=PROCEDURE,- +_Py_SetProgramFullPath=PROCEDURE,- +_Py_Sigset_Converter=PROCEDURE,- +_Py_Slice=PROCEDURE,- +_Py_SourceAsString=PROCEDURE,- +_Py_Starred=PROCEDURE,- +_Py_Subscript=PROCEDURE,- +_Py_Suite=PROCEDURE,- +_Py_SwappedOp=DATA,- +_Py_SymtableStringObjectFlags=PROCEDURE,- +_Py_TrueStruct=DATA,- +_Py_Try=PROCEDURE,- +_Py_Tuple=PROCEDURE,- +_Py_TypeIgnore=PROCEDURE,- +_Py_Uid_Converter=PROCEDURE,- +_Py_UnaryOp=PROCEDURE,- +_Py_UnhandledKeyboardInterrupt=DATA,- +_Py_VaBuildStack=PROCEDURE,- +_Py_VaBuildStack_SizeT=PROCEDURE,- +_Py_VaBuildValue_SizeT=PROCEDURE,- +_Py_While=PROCEDURE,- +_Py_With=PROCEDURE,- +_Py_Yield=PROCEDURE,- +_Py_YieldFrom=PROCEDURE,- +_Py_abstract_hack=DATA,- +_Py_add_one_to_index_C=PROCEDURE,- +_Py_add_one_to_index_F=PROCEDURE,- +_Py_alias=PROCEDURE,- +_Py_arg=PROCEDURE,- +_Py_arguments=PROCEDURE,- +_Py_ascii_whitespace=DATA,- +_Py_asdl_int_seq_new=PROCEDURE,- +_Py_asdl_seq_new=PROCEDURE,- +_Py_bytes_capitalize=PROCEDURE,- +_Py_bytes_contains=PROCEDURE,- +_Py_bytes_count=PROCEDURE,- +_Py_bytes_endswith=PROCEDURE,- +_Py_bytes_find=PROCEDURE,- +_Py_bytes_index=PROCEDURE,- +_Py_bytes_isalnum=PROCEDURE,- +_Py_bytes_isalpha=PROCEDURE,- +_Py_bytes_isascii=PROCEDURE,- +_Py_bytes_isdigit=PROCEDURE,- +_Py_bytes_islower=PROCEDURE,- +_Py_bytes_isspace=PROCEDURE,- +_Py_bytes_istitle=PROCEDURE,- +_Py_bytes_isupper=PROCEDURE,- +_Py_bytes_lower=PROCEDURE,- +_Py_bytes_maketrans=PROCEDURE,- +_Py_bytes_rfind=PROCEDURE,- +_Py_bytes_rindex=PROCEDURE,- +_Py_bytes_startswith=PROCEDURE,- +_Py_bytes_swapcase=PROCEDURE,- +_Py_bytes_title=PROCEDURE,- +_Py_bytes_upper=PROCEDURE,- +_Py_c_abs=PROCEDURE,- +_Py_c_diff=PROCEDURE,- +_Py_c_neg=PROCEDURE,- +_Py_c_pow=PROCEDURE,- +_Py_c_prod=PROCEDURE,- +_Py_c_quot=PROCEDURE,- +_Py_c_sum=PROCEDURE,- +_Py_capitalize__doc__=DATA,- +_Py_comprehension=PROCEDURE,- +_Py_convert_optional_to_ssize_t=PROCEDURE,- +_Py_count__doc__=DATA,- +_Py_ctype_table=DATA,- +_Py_ctype_tolower=DATA,- +_Py_ctype_toupper=DATA,- +_Py_device_encoding=PROCEDURE,- +_Py_dg_dtoa=PROCEDURE,- +_Py_dg_freedtoa=PROCEDURE,- +_Py_dg_infinity=PROCEDURE,- +_Py_dg_stdnan=PROCEDURE,- +_Py_dg_strtod=PROCEDURE,- +_Py_dup=PROCEDURE,- +_Py_endswith__doc__=DATA,- +_Py_find__doc__=DATA,- +_Py_fopen=PROCEDURE,- +_Py_fopen_obj=PROCEDURE,- +_Py_fstat=PROCEDURE,- +_Py_fstat_noraise=PROCEDURE,- +_Py_get_blocking=PROCEDURE,- +_Py_get_env_flag=PROCEDURE,- +_Py_get_inheritable=PROCEDURE,- +_Py_get_xoption=PROCEDURE,- +_Py_gitidentifier=PROCEDURE,- +_Py_gitversion=PROCEDURE,- +_Py_hashtable_clear=PROCEDURE,- +_Py_hashtable_compare_direct=PROCEDURE,- +_Py_hashtable_copy=PROCEDURE,- +_Py_hashtable_destroy=PROCEDURE,- +_Py_hashtable_foreach=PROCEDURE,- +_Py_hashtable_get=PROCEDURE,- +_Py_hashtable_get_entry=PROCEDURE,- +_Py_hashtable_hash_ptr=PROCEDURE,- +_Py_hashtable_new=PROCEDURE,- +_Py_hashtable_new_full=PROCEDURE,- +_Py_hashtable_pop=PROCEDURE,- +_Py_hashtable_set=PROCEDURE,- +_Py_hashtable_size=PROCEDURE,- +_Py_index__doc__=DATA,- +_Py_isalnum__doc__=DATA,- +_Py_isalpha__doc__=DATA,- +_Py_isascii__doc__=DATA,- +_Py_isdigit__doc__=DATA,- +_Py_islower__doc__=DATA,- +_Py_isspace__doc__=DATA,- +_Py_istitle__doc__=DATA,- +_Py_isupper__doc__=DATA,- +_Py_keyword=PROCEDURE,- +_Py_lower__doc__=DATA,- +_Py_maketrans__doc__=DATA,- +_Py_normalize_encoding=PROCEDURE,- +_Py_open=PROCEDURE,- +_Py_open_noraise=PROCEDURE,- +_Py_parse_inf_or_nan=PROCEDURE,- +_Py_path_config=DATA,- +_Py_read=PROCEDURE,- +_Py_rfind__doc__=DATA,- +_Py_rindex__doc__=DATA,- +_Py_set_blocking=PROCEDURE,- +_Py_set_inheritable=PROCEDURE,- +_Py_set_inheritable_async_safe=PROCEDURE,- +_Py_startswith__doc__=DATA,- +_Py_stat=PROCEDURE,- +_Py_str_to_int=PROCEDURE,- +_Py_strhex=PROCEDURE,- +_Py_strhex_bytes=PROCEDURE,- +_Py_strhex_bytes_with_sep=PROCEDURE,- +_Py_strhex_with_sep=PROCEDURE,- +_Py_string_to_number_wi1h7jsg3$=PROCEDURE,- +_Py_swapcase__doc__=DATA,- +_Py_title__doc__=DATA,- +_Py_tracemalloc_config=DATA,- +_Py_upper__doc__=DATA,- +_Py_wfopen=PROCEDURE,- +_Py_wgetcwd=PROCEDURE,- +_Py_withitem=PROCEDURE,- +_Py_wreadlink=PROCEDURE,- +_Py_wrealpath=PROCEDURE,- +_Py_write=PROCEDURE,- +_Py_write_noraise=PROCEDURE,- +vms__StdioReadline=PROCEDURE,- +g_vms_select=PROCEDURE,- +round_imp=PROCEDURE,- +read_pipe_bytes=PROCEDURE- +) \ No newline at end of file diff --git a/opt/python$shr_dbg.opt b/opt/python$shr_dbg.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L3B5dGhvbiRzaHJfZGJnLm9wdA== --- /dev/null +++ b/opt/python$shr_dbg.opt @@ -0,0 +1,1983 @@ +! from [$(OUTDIR)] +python$build_out:[000000]libpython3^.8.olb/LIBRARY +! +sys$library:pthread$rtl.exe/share +! +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +! +SYMBOL_VECTOR = ( - +! MATH$ROUND_T=PROCEDURE,- +PyAST_Check=PROCEDURE,- +PyAST_Compile=PROCEDURE,- +PyAST_CompileEx=PROCEDURE,- +PyAST_CompileObject=PROCEDURE,- +PyAST_FromNode=PROCEDURE,- +PyAST_FromNodeObject=PROCEDURE,- +PyAST_Validate=PROCEDURE,- +PyAST_mod2obj=PROCEDURE,- +PyAST_obj2mod=PROCEDURE,- +PyArena_AddPyObject=PROCEDURE,- +PyArena_Free=PROCEDURE,- +PyArena_Malloc=PROCEDURE,- +PyArena_New=PROCEDURE,- +PyArg_Parse=PROCEDURE,- +PyArg_ParseTuple=PROCEDURE,- +PyArg_ParseTupleAndKeywords=PROCEDURE,- +PyArg_UnpackTuple=PROCEDURE,- +PyArg_VaParse=PROCEDURE,- +PyArg_VaParseTupleAndKeywords=PROCEDURE,- +PyArg_ValidateKeywordArguments=PROCEDURE,- +PyAsyncGen_ClearFreeLists=PROCEDURE,- +PyAsyncGen_Fini=PROCEDURE,- +PyAsyncGen_New=PROCEDURE,- +PyAsyncGen_Type=DATA,- +PyBaseObject_Type=DATA,- +PyBool_FromLong=PROCEDURE,- +PyBool_Type=DATA,- +PyBuffer_FillContiguousStrides=PROCEDURE,- +PyBuffer_FillInfo=PROCEDURE,- +PyBuffer_FromContiguous=PROCEDURE,- +PyBuffer_GetPointer=PROCEDURE,- +PyBuffer_IsContiguous=PROCEDURE,- +PyBuffer_Release=PROCEDURE,- +PyBuffer_ToContiguous=PROCEDURE,- +PyBufferedIOBase_Type=DATA,- +PyBufferedRWPair_Type=DATA,- +PyBufferedRandom_Type=DATA,- +PyBufferedReader_Type=DATA,- +PyBufferedWriter_Type=DATA,- +PyByteArrayIter_Type=DATA,- +PyByteArray_AsString=PROCEDURE,- +PyByteArray_Concat=PROCEDURE,- +PyByteArray_FromObject=PROCEDURE,- +PyByteArray_FromStringAndSize=PROCEDURE,- +PyByteArray_Resize=PROCEDURE,- +PyByteArray_Size=PROCEDURE,- +PyByteArray_Type=DATA,- +PyBytesIO_Type=DATA,- +PyBytesIter_Type=DATA,- +PyBytes_AsString=PROCEDURE,- +PyBytes_AsStringAndSize=PROCEDURE,- +PyBytes_Concat=PROCEDURE,- +PyBytes_ConcatAndDel=PROCEDURE,- +PyBytes_DecodeEscape=PROCEDURE,- +PyBytes_Fini=PROCEDURE,- +PyBytes_FromFormat=PROCEDURE,- +PyBytes_FromFormatV=PROCEDURE,- +PyBytes_FromObject=PROCEDURE,- +PyBytes_FromString=PROCEDURE,- +PyBytes_FromStringAndSize=PROCEDURE,- +PyBytes_Repr=PROCEDURE,- +PyBytes_Size=PROCEDURE,- +PyBytes_Type=DATA,- +PyCFunction_Call=PROCEDURE,- +PyCFunction_ClearFreeList=PROCEDURE,- +PyCFunction_Fini=PROCEDURE,- +PyCFunction_GetFlags=PROCEDURE,- +PyCFunction_GetFunction=PROCEDURE,- +PyCFunction_GetSelf=PROCEDURE,- +PyCFunction_New=PROCEDURE,- +PyCFunction_NewEx=PROCEDURE,- +PyCFunction_Type=DATA,- +PyCallIter_New=PROCEDURE,- +PyCallIter_Type=DATA,- +PyCallable_Check=PROCEDURE,- +PyCapsule_GetContext=PROCEDURE,- +PyCapsule_GetDestructor=PROCEDURE,- +PyCapsule_GetName=PROCEDURE,- +PyCapsule_GetPointer=PROCEDURE,- +PyCapsule_Import=PROCEDURE,- +PyCapsule_IsValid=PROCEDURE,- +PyCapsule_New=PROCEDURE,- +PyCapsule_SetContext=PROCEDURE,- +PyCapsule_SetDestructor=PROCEDURE,- +PyCapsule_SetName=PROCEDURE,- +PyCapsule_SetPointer=PROCEDURE,- +PyCapsule_Type=DATA,- +PyCell_Get=PROCEDURE,- +PyCell_New=PROCEDURE,- +PyCell_Set=PROCEDURE,- +PyCell_Type=DATA,- +PyClassMethodDescr_Type=DATA,- +PyClassMethod_New=PROCEDURE,- +PyClassMethod_Type=DATA,- +PyCode_Addr2Line=PROCEDURE,- +PyCode_New=PROCEDURE,- +PyCode_NewEmpty=PROCEDURE,- +PyCode_NewWithPosOnlyArgs=PROCEDURE,- +PyCode_Optimize=PROCEDURE,- +PyCode_Type=DATA,- +PyCodec_BackslashReplaceErrors=PROCEDURE,- +PyCodec_Decode=PROCEDURE,- +PyCodec_Decoder=PROCEDURE,- +PyCodec_Encode=PROCEDURE,- +PyCodec_Encoder=PROCEDURE,- +PyCodec_IgnoreErrors=PROCEDURE,- +PyCodec_IncrementalDecoder=PROCEDURE,- +PyCodec_IncrementalEncoder=PROCEDURE,- +PyCodec_KnownEncoding=PROCEDURE,- +PyCodec_LookupError=PROCEDURE,- +PyCodec_NameReplaceErrors=PROCEDURE,- +PyCodec_Register=PROCEDURE,- +PyCodec_RegisterError=PROCEDURE,- +PyCodec_ReplaceErrors=PROCEDURE,- +PyCodec_StreamReader=PROCEDURE,- +PyCodec_StreamWriter=PROCEDURE,- +PyCodec_StrictErrors=PROCEDURE,- +PyCodec_XMLCharRefReplaceErrors=PROCEDURE,- +PyCompileString=PROCEDURE,- +PyCompile_OpcodeStackEf25ml1ih$=PROCEDURE,- +PyCompile_OpcodeStackEffect=PROCEDURE,- +PyComplex_AsCComplex=PROCEDURE,- +PyComplex_FromCComplex=PROCEDURE,- +PyComplex_FromDoubles=PROCEDURE,- +PyComplex_ImagAsDouble=PROCEDURE,- +PyComplex_RealAsDouble=PROCEDURE,- +PyComplex_Type=DATA,- +PyConfig_Clear=PROCEDURE,- +PyConfig_InitIsolatedConfig=PROCEDURE,- +PyConfig_InitPythonConfig=PROCEDURE,- +PyConfig_Read=PROCEDURE,- +PyConfig_SetArgv=PROCEDURE,- +PyConfig_SetBytesArgv=PROCEDURE,- +PyConfig_SetBytesString=PROCEDURE,- +PyConfig_SetString=PROCEDURE,- +PyConfig_SetWideStringList=PROCEDURE,- +PyContextTokenMissing_Type=DATA,- +PyContextToken_Type=DATA,- +PyContextVar_Get=PROCEDURE,- +PyContextVar_New=PROCEDURE,- +PyContextVar_Reset=PROCEDURE,- +PyContextVar_Set=PROCEDURE,- +PyContextVar_Type=DATA,- +PyContext_ClearFreeList=PROCEDURE,- +PyContext_Copy=PROCEDURE,- +PyContext_CopyCurrent=PROCEDURE,- +PyContext_Enter=PROCEDURE,- +PyContext_Exit=PROCEDURE,- +PyContext_New=PROCEDURE,- +PyContext_Type=DATA,- +PyCoro_New=PROCEDURE,- +PyCoro_Type=DATA,- +PyDescr_NewClassMethod=PROCEDURE,- +PyDescr_NewGetSet=PROCEDURE,- +PyDescr_NewMember=PROCEDURE,- +PyDescr_NewMethod=PROCEDURE,- +PyDescr_NewWrapper=PROCEDURE,- +PyDictItems_Type=DATA,- +PyDictIterItem_Type=DATA,- +PyDictIterKey_Type=DATA,- +PyDictIterValue_Type=DATA,- +PyDictKeys_Type=DATA,- +PyDictProxy_New=PROCEDURE,- +PyDictProxy_Type=DATA,- +PyDictRevIterItem_Type=DATA,- +PyDictRevIterKey_Type=DATA,- +PyDictRevIterValue_Type=DATA,- +PyDictValues_Type=DATA,- +PyDict_Clear=PROCEDURE,- +PyDict_ClearFreeList=PROCEDURE,- +PyDict_Contains=PROCEDURE,- +PyDict_Copy=PROCEDURE,- +PyDict_DelItem=PROCEDURE,- +PyDict_DelItemString=PROCEDURE,- +PyDict_Fini=PROCEDURE,- +PyDict_GetItem=PROCEDURE,- +PyDict_GetItemString=PROCEDURE,- +PyDict_GetItemWithError=PROCEDURE,- +PyDict_Items=PROCEDURE,- +PyDict_Keys=PROCEDURE,- +PyDict_Merge=PROCEDURE,- +PyDict_MergeFromSeq2=PROCEDURE,- +PyDict_New=PROCEDURE,- +PyDict_Next=PROCEDURE,- +PyDict_SetDefault=PROCEDURE,- +PyDict_SetItem=PROCEDURE,- +PyDict_SetItemString=PROCEDURE,- +PyDict_Size=PROCEDURE,- +PyDict_Type=DATA,- +PyDict_Update=PROCEDURE,- +PyDict_Values=PROCEDURE,- +PyEllipsis_Type=DATA,- +PyEnum_Type=DATA,- +PyErr_BadArgument=PROCEDURE,- +PyErr_BadInternalCall=PROCEDURE,- +PyErr_CheckSignals=PROCEDURE,- +PyErr_Clear=PROCEDURE,- +PyErr_Display=PROCEDURE,- +PyErr_ExceptionMatches=PROCEDURE,- +PyErr_Fetch=PROCEDURE,- +PyErr_Format=PROCEDURE,- +PyErr_FormatV=PROCEDURE,- +PyErr_GetExcInfo=PROCEDURE,- +PyErr_GivenExceptionMatches=PROCEDURE,- +PyErr_NewException=PROCEDURE,- +PyErr_NewExceptionWithDoc=PROCEDURE,- +PyErr_NoMemory=PROCEDURE,- +PyErr_NormalizeException=PROCEDURE,- +PyErr_Occurred=PROCEDURE,- +PyErr_Print=PROCEDURE,- +PyErr_PrintEx=PROCEDURE,- +PyErr_ProgramText=PROCEDURE,- +PyErr_ProgramTextObject=PROCEDURE,- +PyErr_ResourceWarning=PROCEDURE,- +PyErr_Restore=PROCEDURE,- +PyErr_SetExcInfo=PROCEDURE,- +PyErr_SetFromErrno=PROCEDURE,- +PyErr_SetFromErrnoWithF13nsp2p$=PROCEDURE,- +PyErr_SetFromErrnoWithF36am9kt$=PROCEDURE,- +PyErr_SetFromErrnoWithFilename=PROCEDURE,- +PyErr_SetImportError=PROCEDURE,- +PyErr_SetImportErrorSubclass=PROCEDURE,- +PyErr_SetInterrupt=PROCEDURE,- +PyErr_SetNone=PROCEDURE,- +PyErr_SetObject=PROCEDURE,- +PyErr_SetString=PROCEDURE,- +PyErr_SyntaxLocation=PROCEDURE,- +PyErr_SyntaxLocationEx=PROCEDURE,- +PyErr_SyntaxLocationObject=PROCEDURE,- +PyErr_Warn=PROCEDURE,- +PyErr_WarnEx=PROCEDURE,- +PyErr_WarnExplicit=PROCEDURE,- +PyErr_WarnExplicitFormat=PROCEDURE,- +PyErr_WarnExplicitObject=PROCEDURE,- +PyErr_WarnFormat=PROCEDURE,- +PyErr_WriteUnraisable=PROCEDURE,- +PyEval_AcquireLock=PROCEDURE,- +PyEval_AcquireThread=PROCEDURE,- +PyEval_CallFunction=PROCEDURE,- +PyEval_CallMethod=PROCEDURE,- +PyEval_CallObjectWithKeywords=PROCEDURE,- +PyEval_EvalCode=PROCEDURE,- +PyEval_EvalCodeEx=PROCEDURE,- +PyEval_EvalFrame=PROCEDURE,- +PyEval_EvalFrameEx=PROCEDURE,- +PyEval_GetBuiltins=PROCEDURE,- +PyEval_GetFrame=PROCEDURE,- +PyEval_GetFuncDesc=PROCEDURE,- +PyEval_GetFuncName=PROCEDURE,- +PyEval_GetGlobals=PROCEDURE,- +PyEval_GetLocals=PROCEDURE,- +PyEval_InitThreads=PROCEDURE,- +PyEval_MergeCompilerFlags=PROCEDURE,- +PyEval_ReleaseLock=PROCEDURE,- +PyEval_ReleaseThread=PROCEDURE,- +PyEval_RestoreThread=PROCEDURE,- +PyEval_SaveThread=PROCEDURE,- +PyEval_SetProfile=PROCEDURE,- +PyEval_SetTrace=PROCEDURE,- +PyEval_ThreadsInitialized=PROCEDURE,- +PyExc_ArithmeticError=DATA,- +PyExc_AssertionError=DATA,- +PyExc_AttributeError=DATA,- +PyExc_BaseException=DATA,- +PyExc_BlockingIOError=DATA,- +PyExc_BrokenPipeError=DATA,- +PyExc_BufferError=DATA,- +PyExc_BytesWarning=DATA,- +PyExc_ChildProcessError=DATA,- +PyExc_ConnectionAbortedError=DATA,- +PyExc_ConnectionError=DATA,- +PyExc_ConnectionRefusedError=DATA,- +PyExc_ConnectionResetError=DATA,- +PyExc_DeprecationWarning=DATA,- +PyExc_EOFError=DATA,- +PyExc_EnvironmentError=DATA,- +PyExc_Exception=DATA,- +PyExc_FileExistsError=DATA,- +PyExc_FileNotFoundError=DATA,- +PyExc_FloatingPointError=DATA,- +PyExc_FutureWarning=DATA,- +PyExc_GeneratorExit=DATA,- +PyExc_IOError=DATA,- +PyExc_ImportError=DATA,- +PyExc_ImportWarning=DATA,- +PyExc_IndentationError=DATA,- +PyExc_IndexError=DATA,- +PyExc_InterruptedError=DATA,- +PyExc_IsADirectoryError=DATA,- +PyExc_KeyError=DATA,- +PyExc_KeyboardInterrupt=DATA,- +PyExc_LookupError=DATA,- +PyExc_MemoryError=DATA,- +PyExc_ModuleNotFoundError=DATA,- +PyExc_NameError=DATA,- +PyExc_NotADirectoryError=DATA,- +PyExc_NotImplementedError=DATA,- +PyExc_OSError=DATA,- +PyExc_OverflowError=DATA,- +PyExc_PendingDeprecationWarning=DATA,- +PyExc_PermissionError=DATA,- +PyExc_ProcessLookupError=DATA,- +PyExc_RecursionError=DATA,- +PyExc_ReferenceError=DATA,- +PyExc_ResourceWarning=DATA,- +PyExc_RuntimeError=DATA,- +PyExc_RuntimeWarning=DATA,- +PyExc_StopAsyncIteration=DATA,- +PyExc_StopIteration=DATA,- +PyExc_SyntaxError=DATA,- +PyExc_SyntaxWarning=DATA,- +PyExc_SystemError=DATA,- +PyExc_SystemExit=DATA,- +PyExc_TabError=DATA,- +PyExc_TimeoutError=DATA,- +PyExc_TypeError=DATA,- +PyExc_UnboundLocalError=DATA,- +PyExc_UnicodeDecodeError=DATA,- +PyExc_UnicodeEncodeError=DATA,- +PyExc_UnicodeError=DATA,- +PyExc_UnicodeTranslateError=DATA,- +PyExc_UnicodeWarning=DATA,- +PyExc_UserWarning=DATA,- +PyExc_ValueError=DATA,- +PyExc_Warning=DATA,- +PyExc_ZeroDivisionError=DATA,- +PyExceptionClass_Name=PROCEDURE,- +PyException_GetCause=PROCEDURE,- +PyException_GetContext=PROCEDURE,- +PyException_GetTraceback=PROCEDURE,- +PyException_SetCause=PROCEDURE,- +PyException_SetContext=PROCEDURE,- +PyException_SetTraceback=PROCEDURE,- +PyFPE_dummy=PROCEDURE,- +PyFileIO_Type=DATA,- +PyFile_FromFd=PROCEDURE,- +PyFile_GetLine=PROCEDURE,- +PyFile_NewStdPrinter=PROCEDURE,- +PyFile_OpenCode=PROCEDURE,- +PyFile_OpenCodeObject=PROCEDURE,- +PyFile_SetOpenCodeHook=PROCEDURE,- +PyFile_WriteObject=PROCEDURE,- +PyFile_WriteString=PROCEDURE,- +PyFilter_Type=DATA,- +PyFloat_AsDouble=PROCEDURE,- +PyFloat_ClearFreeList=PROCEDURE,- +PyFloat_Fini=PROCEDURE,- +PyFloat_FromDouble=PROCEDURE,- +PyFloat_FromString=PROCEDURE,- +PyFloat_GetInfo=PROCEDURE,- +PyFloat_GetMax=PROCEDURE,- +PyFloat_GetMin=PROCEDURE,- +PyFloat_Type=DATA,- +PyFrame_BlockPop=PROCEDURE,- +PyFrame_BlockSetup=PROCEDURE,- +PyFrame_ClearFreeList=PROCEDURE,- +PyFrame_FastToLocals=PROCEDURE,- +PyFrame_FastToLocalsWithError=PROCEDURE,- +PyFrame_Fini=PROCEDURE,- +PyFrame_GetLineNumber=PROCEDURE,- +PyFrame_LocalsToFast=PROCEDURE,- +PyFrame_New=PROCEDURE,- +PyFrame_Type=DATA,- +PyFrozenSet_New=PROCEDURE,- +PyFrozenSet_Type=DATA,- +PyFunction_GetAnnotations=PROCEDURE,- +PyFunction_GetClosure=PROCEDURE,- +PyFunction_GetCode=PROCEDURE,- +PyFunction_GetDefaults=PROCEDURE,- +PyFunction_GetGlobals=PROCEDURE,- +PyFunction_GetKwDefaults=PROCEDURE,- +PyFunction_GetModule=PROCEDURE,- +PyFunction_New=PROCEDURE,- +PyFunction_NewWithQualName=PROCEDURE,- +PyFunction_SetAnnotations=PROCEDURE,- +PyFunction_SetClosure=PROCEDURE,- +PyFunction_SetDefaults=PROCEDURE,- +PyFunction_SetKwDefaults=PROCEDURE,- +PyFunction_Type=DATA,- +PyFuture_FromAST=PROCEDURE,- +PyFuture_FromASTObject=PROCEDURE,- +PyGC_Collect=PROCEDURE,- +PyGILState_Check=PROCEDURE,- +PyGILState_Ensure=PROCEDURE,- +PyGILState_GetThisThreadState=PROCEDURE,- +PyGILState_Release=PROCEDURE,- +PyGen_NeedsFinalizing=PROCEDURE,- +PyGen_New=PROCEDURE,- +PyGen_NewWithQualName=PROCEDURE,- +PyGen_Type=DATA,- +PyGetSetDescr_Type=DATA,- +PyGrammar_AddAccelerators=PROCEDURE,- +PyGrammar_FindDFA=PROCEDURE,- +PyGrammar_LabelRepr=PROCEDURE,- +PyGrammar_RemoveAccelerators=PROCEDURE,- +PyHash_GetFuncDef=PROCEDURE,- +PyIOBase_Type=DATA,- +PyImport_AddModule=PROCEDURE,- +PyImport_AddModuleObject=PROCEDURE,- +PyImport_AppendInittab=PROCEDURE,- +PyImport_Cleanup=PROCEDURE,- +PyImport_ExecCodeModule23g5k6b$=PROCEDURE,- +PyImport_ExecCodeModule=PROCEDURE,- +PyImport_ExecCodeModuleEx=PROCEDURE,- +PyImport_ExecCodeModuleObject=PROCEDURE,- +PyImport_ExtendInittab=PROCEDURE,- +PyImport_FrozenModules=DATA,- +PyImport_GetImporter=PROCEDURE,- +PyImport_GetMagicNumber=PROCEDURE,- +PyImport_GetMagicTag=PROCEDURE,- +PyImport_GetModule=PROCEDURE,- +PyImport_GetModuleDict=PROCEDURE,- +PyImport_Import=PROCEDURE,- +PyImport_ImportFrozenMo163r2c6$=PROCEDURE,- +PyImport_ImportFrozenModule=PROCEDURE,- +PyImport_ImportModule=PROCEDURE,- +PyImport_ImportModuleLe3e3v665$=PROCEDURE,- +PyImport_ImportModuleLevel=PROCEDURE,- +PyImport_ImportModuleNoBlock=PROCEDURE,- +PyImport_Inittab=DATA,- +PyImport_ReloadModule=PROCEDURE,- +PyIncrementalNewlineDec1pmcbjr$=DATA,- +PyIndex_Check=PROCEDURE,- +PyInit__abc=PROCEDURE,- +PyInit__ast=PROCEDURE,- +PyInit__codecs=PROCEDURE,- +PyInit__collections=PROCEDURE,- +PyInit__functools=PROCEDURE,- +PyInit__imp=PROCEDURE,- +PyInit__io=PROCEDURE,- +PyInit__locale=PROCEDURE,- +PyInit__operator=PROCEDURE,- +PyInit__signal=PROCEDURE,- +PyInit__sre=PROCEDURE,- +PyInit__stat=PROCEDURE,- +PyInit__string=PROCEDURE,- +PyInit__symtable=PROCEDURE,- +PyInit__thread=PROCEDURE,- +PyInit__tracemalloc=PROCEDURE,- +PyInit__weakref=PROCEDURE,- +PyInit_atexit=PROCEDURE,- +PyInit_errno=PROCEDURE,- +PyInit_faulthandler=PROCEDURE,- +PyInit_gc=PROCEDURE,- +PyInit_itertools=PROCEDURE,- +PyInit_posix=PROCEDURE,- +PyInit_pwd=PROCEDURE,- +PyInit_time=PROCEDURE,- +PyInit_xxsubtype=PROCEDURE,- +PyInstanceMethod_Function=PROCEDURE,- +PyInstanceMethod_New=PROCEDURE,- +PyInstanceMethod_Type=DATA,- +PyInterpreterState_Clear=PROCEDURE,- +PyInterpreterState_Delete=PROCEDURE,- +PyInterpreterState_GetDict=PROCEDURE,- +PyInterpreterState_GetID=PROCEDURE,- +PyInterpreterState_Head=PROCEDURE,- +PyInterpreterState_Main=PROCEDURE,- +PyInterpreterState_New=PROCEDURE,- +PyInterpreterState_Next=PROCEDURE,- +PyInterpreterState_ThreadHead=PROCEDURE,- +PyIter_Check=PROCEDURE,- +PyIter_Next=PROCEDURE,- +PyListIter_Type=DATA,- +PyListRevIter_Type=DATA,- +PyList_Append=PROCEDURE,- +PyList_AsTuple=PROCEDURE,- +PyList_ClearFreeList=PROCEDURE,- +PyList_Fini=PROCEDURE,- +PyList_GetItem=PROCEDURE,- +PyList_GetSlice=PROCEDURE,- +PyList_Insert=PROCEDURE,- +PyList_New=PROCEDURE,- +PyList_Reverse=PROCEDURE,- +PyList_SetItem=PROCEDURE,- +PyList_SetSlice=PROCEDURE,- +PyList_Size=PROCEDURE,- +PyList_Sort=PROCEDURE,- +PyList_Type=DATA,- +PyLongRangeIter_Type=DATA,- +PyLong_AsDouble=PROCEDURE,- +PyLong_AsLong=PROCEDURE,- +PyLong_AsLongAndOverflow=PROCEDURE,- +PyLong_AsLongLong=PROCEDURE,- +PyLong_AsLongLongAndOverflow=PROCEDURE,- +PyLong_AsSize_t=PROCEDURE,- +PyLong_AsSsize_t=PROCEDURE,- +PyLong_AsUnsignedLong=PROCEDURE,- +PyLong_AsUnsignedLongLong=PROCEDURE,- +PyLong_AsUnsignedLongLongMask=PROCEDURE,- +PyLong_AsUnsignedLongMask=PROCEDURE,- +PyLong_AsVoidPtr=PROCEDURE,- +PyLong_Fini=PROCEDURE,- +PyLong_FromDouble=PROCEDURE,- +PyLong_FromLong=PROCEDURE,- +PyLong_FromLongLong=PROCEDURE,- +PyLong_FromSize_t=PROCEDURE,- +PyLong_FromSsize_t=PROCEDURE,- +PyLong_FromString=PROCEDURE,- +PyLong_FromUnicode=PROCEDURE,- +PyLong_FromUnicodeObject=PROCEDURE,- +PyLong_FromUnsignedLong=PROCEDURE,- +PyLong_FromUnsignedLongLong=PROCEDURE,- +PyLong_FromVoidPtr=PROCEDURE,- +PyLong_GetInfo=PROCEDURE,- +PyLong_Type=DATA,- +PyMap_Type=DATA,- +PyMapping_Check=PROCEDURE,- +PyMapping_GetItemString=PROCEDURE,- +PyMapping_HasKey=PROCEDURE,- +PyMapping_HasKeyString=PROCEDURE,- +PyMapping_Items=PROCEDURE,- +PyMapping_Keys=PROCEDURE,- +PyMapping_Length=PROCEDURE,- +PyMapping_SetItemString=PROCEDURE,- +PyMapping_Size=PROCEDURE,- +PyMapping_Values=PROCEDURE,- +PyMarshal_Init=PROCEDURE,- +PyMarshal_ReadLastObjec1gnkbmv$=PROCEDURE,- +PyMarshal_ReadLongFromFile=PROCEDURE,- +PyMarshal_ReadObjectFromFile=PROCEDURE,- +PyMarshal_ReadObjectFromString=PROCEDURE,- +PyMarshal_ReadShortFromFile=PROCEDURE,- +PyMarshal_WriteLongToFile=PROCEDURE,- +PyMarshal_WriteObjectToFile=PROCEDURE,- +PyMarshal_WriteObjectToString=PROCEDURE,- +PyMem_Calloc=PROCEDURE,- +PyMem_Free=PROCEDURE,- +PyMem_GetAllocator=PROCEDURE,- +PyMem_Malloc=PROCEDURE,- +PyMem_RawCalloc=PROCEDURE,- +PyMem_RawFree=PROCEDURE,- +PyMem_RawMalloc=PROCEDURE,- +PyMem_RawRealloc=PROCEDURE,- +PyMem_Realloc=PROCEDURE,- +PyMem_SetAllocator=PROCEDURE,- +PyMem_SetupDebugHooks=PROCEDURE,- +PyMemberDescr_Type=DATA,- +PyMember_GetOne=PROCEDURE,- +PyMember_SetOne=PROCEDURE,- +PyMemoryView_FromBuffer=PROCEDURE,- +PyMemoryView_FromMemory=PROCEDURE,- +PyMemoryView_FromObject=PROCEDURE,- +PyMemoryView_GetContiguous=PROCEDURE,- +PyMemoryView_Type=DATA,- +PyMethodDescr_Type=DATA,- +PyMethod_ClearFreeList=PROCEDURE,- +PyMethod_Fini=PROCEDURE,- +PyMethod_Function=PROCEDURE,- +PyMethod_New=PROCEDURE,- +PyMethod_Self=PROCEDURE,- +PyMethod_Type=DATA,- +PyModuleDef_Init=PROCEDURE,- +PyModuleDef_Type=DATA,- +PyModule_AddFunctions=PROCEDURE,- +PyModule_AddIntConstant=PROCEDURE,- +PyModule_AddObject=PROCEDURE,- +PyModule_AddStringConstant=PROCEDURE,- +PyModule_Create2=PROCEDURE,- +PyModule_ExecDef=PROCEDURE,- +PyModule_FromDefAndSpec2=PROCEDURE,- +PyModule_GetDef=PROCEDURE,- +PyModule_GetDict=PROCEDURE,- +PyModule_GetFilename=PROCEDURE,- +PyModule_GetFilenameObject=PROCEDURE,- +PyModule_GetName=PROCEDURE,- +PyModule_GetNameObject=PROCEDURE,- +PyModule_GetState=PROCEDURE,- +PyModule_GetWarningsModule=PROCEDURE,- +PyModule_New=PROCEDURE,- +PyModule_NewObject=PROCEDURE,- +PyModule_SetDocString=PROCEDURE,- +PyModule_Type=DATA,- +PyNode_AddChild=PROCEDURE,- +PyNode_Compile=PROCEDURE,- +PyNode_Free=PROCEDURE,- +PyNode_ListTree=PROCEDURE,- +PyNode_New=PROCEDURE,- +PyNumber_Absolute=PROCEDURE,- +PyNumber_Add=PROCEDURE,- +PyNumber_And=PROCEDURE,- +PyNumber_AsOff_t=PROCEDURE,- +PyNumber_AsSsize_t=PROCEDURE,- +PyNumber_Check=PROCEDURE,- +PyNumber_Divmod=PROCEDURE,- +PyNumber_Float=PROCEDURE,- +PyNumber_FloorDivide=PROCEDURE,- +PyNumber_InMatrixMultiply=PROCEDURE,- +PyNumber_InPlaceAdd=PROCEDURE,- +PyNumber_InPlaceAnd=PROCEDURE,- +PyNumber_InPlaceFloorDivide=PROCEDURE,- +PyNumber_InPlaceLshift=PROCEDURE,- +PyNumber_InPlaceMatrixMultiply=PROCEDURE,- +PyNumber_InPlaceMultiply=PROCEDURE,- +PyNumber_InPlaceOr=PROCEDURE,- +PyNumber_InPlacePower=PROCEDURE,- +PyNumber_InPlaceRemainder=PROCEDURE,- +PyNumber_InPlaceRshift=PROCEDURE,- +PyNumber_InPlaceSubtract=PROCEDURE,- +PyNumber_InPlaceTrueDivide=PROCEDURE,- +PyNumber_InPlaceXor=PROCEDURE,- +PyNumber_Index=PROCEDURE,- +PyNumber_Invert=PROCEDURE,- +PyNumber_Long=PROCEDURE,- +PyNumber_Lshift=PROCEDURE,- +PyNumber_MatrixMultiply=PROCEDURE,- +PyNumber_Multiply=PROCEDURE,- +PyNumber_Negative=PROCEDURE,- +PyNumber_Or=PROCEDURE,- +PyNumber_Positive=PROCEDURE,- +PyNumber_Power=PROCEDURE,- +PyNumber_Remainder=PROCEDURE,- +PyNumber_Rshift=PROCEDURE,- +PyNumber_Subtract=PROCEDURE,- +PyNumber_ToBase=PROCEDURE,- +PyNumber_TrueDivide=PROCEDURE,- +PyNumber_Xor=PROCEDURE,- +PyODictItems_Type=DATA,- +PyODictIter_Type=DATA,- +PyODictKeys_Type=DATA,- +PyODictValues_Type=DATA,- +PyODict_DelItem=PROCEDURE,- +PyODict_New=PROCEDURE,- +PyODict_SetItem=PROCEDURE,- +PyODict_Type=DATA,- +PyOS_AfterFork=PROCEDURE,- +PyOS_FSPath=PROCEDURE,- +PyOS_FiniInterrupts=PROCEDURE,- +PyOS_InitInterrupts=PROCEDURE,- +PyOS_InputHook=DATA,- +PyOS_InterruptOccurred=PROCEDURE,- +PyOS_Readline=PROCEDURE,- +PyOS_ReadlineFunctionPointer=DATA,- +PyOS_StdioReadline=PROCEDURE,- +PyOS_double_to_string=PROCEDURE,- +PyOS_getsig=PROCEDURE,- +PyOS_mystricmp=PROCEDURE,- +PyOS_mystrnicmp=PROCEDURE,- +PyOS_setsig=PROCEDURE,- +PyOS_snprintf=PROCEDURE,- +PyOS_string_to_double=PROCEDURE,- +PyOS_strtol=PROCEDURE,- +PyOS_strtoul=PROCEDURE,- +PyOS_vsnprintf=PROCEDURE,- +PyObject_ASCII=PROCEDURE,- +PyObject_AsCharBuffer=PROCEDURE,- +PyObject_AsFileDescriptor=PROCEDURE,- +PyObject_AsReadBuffer=PROCEDURE,- +PyObject_AsWriteBuffer=PROCEDURE,- +PyObject_Bytes=PROCEDURE,- +PyObject_Call=PROCEDURE,- +PyObject_CallFinalizer=PROCEDURE,- +PyObject_CallFinalizerF3rob0r5$=PROCEDURE,- +PyObject_CallFunction=PROCEDURE,- +PyObject_CallFunctionObjArgs=PROCEDURE,- +PyObject_CallMethod=PROCEDURE,- +PyObject_CallMethodObjArgs=PROCEDURE,- +PyObject_CallObject=PROCEDURE,- +PyObject_Calloc=PROCEDURE,- +PyObject_CheckReadBuffer=PROCEDURE,- +PyObject_ClearWeakRefs=PROCEDURE,- +PyObject_CopyData=PROCEDURE,- +PyObject_DelItem=PROCEDURE,- +PyObject_DelItemString=PROCEDURE,- +PyObject_Dir=PROCEDURE,- +PyObject_Format=PROCEDURE,- +PyObject_Free=PROCEDURE,- +PyObject_GC_Del=PROCEDURE,- +PyObject_GC_Track=PROCEDURE,- +PyObject_GC_UnTrack=PROCEDURE,- +PyObject_GenericGetAttr=PROCEDURE,- +PyObject_GenericGetDict=PROCEDURE,- +PyObject_GenericSetAttr=PROCEDURE,- +PyObject_GenericSetDict=PROCEDURE,- +PyObject_GetArenaAllocator=PROCEDURE,- +PyObject_GetAttr=PROCEDURE,- +PyObject_GetAttrString=PROCEDURE,- +PyObject_GetBuffer=PROCEDURE,- +PyObject_GetItem=PROCEDURE,- +PyObject_GetIter=PROCEDURE,- +PyObject_HasAttr=PROCEDURE,- +PyObject_HasAttrString=PROCEDURE,- +PyObject_Hash=PROCEDURE,- +PyObject_HashNotImplemented=PROCEDURE,- +PyObject_Init=PROCEDURE,- +PyObject_InitVar=PROCEDURE,- +PyObject_IsInstance=PROCEDURE,- +PyObject_IsSubclass=PROCEDURE,- +PyObject_IsTrue=PROCEDURE,- +PyObject_Length=PROCEDURE,- +PyObject_LengthHint=PROCEDURE,- +PyObject_Malloc=PROCEDURE,- +PyObject_Not=PROCEDURE,- +PyObject_Print=PROCEDURE,- +PyObject_Realloc=PROCEDURE,- +PyObject_Repr=PROCEDURE,- +PyObject_RichCompare=PROCEDURE,- +PyObject_RichCompareBool=PROCEDURE,- +PyObject_SelfIter=PROCEDURE,- +PyObject_SetArenaAllocator=PROCEDURE,- +PyObject_SetAttr=PROCEDURE,- +PyObject_SetAttrString=PROCEDURE,- +PyObject_SetItem=PROCEDURE,- +PyObject_Size=PROCEDURE,- +PyObject_Str=PROCEDURE,- +PyObject_Type=PROCEDURE,- +PyParser_ASTFromFile=PROCEDURE,- +PyParser_ASTFromFileObject=PROCEDURE,- +PyParser_ASTFromString=PROCEDURE,- +PyParser_ASTFromStringObject=PROCEDURE,- +PyParser_AddToken=PROCEDURE,- +PyParser_ClearError=PROCEDURE,- +PyParser_Delete=PROCEDURE,- +PyParser_New=PROCEDURE,- +PyParser_ParseFile=PROCEDURE,- +PyParser_ParseFileFlags=PROCEDURE,- +PyParser_ParseFileFlagsEx=PROCEDURE,- +PyParser_ParseFileObject=PROCEDURE,- +PyParser_ParseString=PROCEDURE,- +PyParser_ParseStringFla0n2o9ga$=PROCEDURE,- +PyParser_ParseStringFla3tj408l$=PROCEDURE,- +PyParser_ParseStringFlags=PROCEDURE,- +PyParser_ParseStringObject=PROCEDURE,- +PyParser_SetError=PROCEDURE,- +PyParser_SimpleParseFile=PROCEDURE,- +PyParser_SimpleParseFileFlags=PROCEDURE,- +PyParser_SimpleParseStr1ei9lfj$=PROCEDURE,- +PyParser_SimpleParseString=PROCEDURE,- +PyParser_SimpleParseStringFlags=PROCEDURE,- +PyPickleBuffer_FromObject=PROCEDURE,- +PyPickleBuffer_GetBuffer=PROCEDURE,- +PyPickleBuffer_Release=PROCEDURE,- +PyPickleBuffer_Type=DATA,- +PyPreConfig_InitIsolatedConfig=PROCEDURE,- +PyPreConfig_InitPythonConfig=PROCEDURE,- +PyProperty_Type=DATA,- +PyRangeIter_Type=DATA,- +PyRange_Type=DATA,- +PyRawIOBase_Type=DATA,- +PyReversed_Type=DATA,- +PyRun_AnyFile=PROCEDURE,- +PyRun_AnyFileEx=PROCEDURE,- +PyRun_AnyFileExFlags=PROCEDURE,- +PyRun_AnyFileFlags=PROCEDURE,- +PyRun_File=PROCEDURE,- +PyRun_FileEx=PROCEDURE,- +PyRun_FileExFlags=PROCEDURE,- +PyRun_FileFlags=PROCEDURE,- +PyRun_InteractiveLoop=PROCEDURE,- +PyRun_InteractiveLoopFlags=PROCEDURE,- +PyRun_InteractiveOne=PROCEDURE,- +PyRun_InteractiveOneFlags=PROCEDURE,- +PyRun_InteractiveOneObject=PROCEDURE,- +PyRun_SimpleFile=PROCEDURE,- +PyRun_SimpleFileEx=PROCEDURE,- +PyRun_SimpleFileExFlags=PROCEDURE,- +PyRun_SimpleString=PROCEDURE,- +PyRun_SimpleStringFlags=PROCEDURE,- +PyRun_String=PROCEDURE,- +PyRun_StringFlags=PROCEDURE,- +PySTEntry_Type=DATA,- +PyST_GetScope=PROCEDURE,- +PySeqIter_New=PROCEDURE,- +PySeqIter_Type=DATA,- +PySequence_Check=PROCEDURE,- +PySequence_Concat=PROCEDURE,- +PySequence_Contains=PROCEDURE,- +PySequence_Count=PROCEDURE,- +PySequence_DelItem=PROCEDURE,- +PySequence_DelSlice=PROCEDURE,- +PySequence_Fast=PROCEDURE,- +PySequence_GetItem=PROCEDURE,- +PySequence_GetSlice=PROCEDURE,- +PySequence_In=PROCEDURE,- +PySequence_InPlaceConcat=PROCEDURE,- +PySequence_InPlaceRepeat=PROCEDURE,- +PySequence_Index=PROCEDURE,- +PySequence_Length=PROCEDURE,- +PySequence_List=PROCEDURE,- +PySequence_Repeat=PROCEDURE,- +PySequence_SetItem=PROCEDURE,- +PySequence_SetSlice=PROCEDURE,- +PySequence_Size=PROCEDURE,- +PySequence_Tuple=PROCEDURE,- +PySetIter_Type=DATA,- +PySet_Add=PROCEDURE,- +PySet_Clear=PROCEDURE,- +PySet_ClearFreeList=PROCEDURE,- +PySet_Contains=PROCEDURE,- +PySet_Discard=PROCEDURE,- +PySet_Fini=PROCEDURE,- +PySet_New=PROCEDURE,- +PySet_Pop=PROCEDURE,- +PySet_Size=PROCEDURE,- +PySet_Type=DATA,- +PySignal_SetWakeupFd=PROCEDURE,- +PySlice_AdjustIndices=PROCEDURE,- +PySlice_Fini=PROCEDURE,- +PySlice_GetIndices=PROCEDURE,- +PySlice_GetIndicesEx=PROCEDURE,- +PySlice_New=PROCEDURE,- +PySlice_Type=DATA,- +PySlice_Unpack=PROCEDURE,- +PyState_AddModule=PROCEDURE,- +PyState_FindModule=PROCEDURE,- +PyState_RemoveModule=PROCEDURE,- +PyStaticMethod_New=PROCEDURE,- +PyStaticMethod_Type=DATA,- +PyStatus_Error=PROCEDURE,- +PyStatus_Exception=PROCEDURE,- +PyStatus_Exit=PROCEDURE,- +PyStatus_IsError=PROCEDURE,- +PyStatus_IsExit=PROCEDURE,- +PyStatus_NoMemory=PROCEDURE,- +PyStatus_Ok=PROCEDURE,- +PyStdPrinter_Type=DATA,- +PyStringIO_Type=DATA,- +PyStructSequence_GetItem=PROCEDURE,- +PyStructSequence_InitType2=PROCEDURE,- +PyStructSequence_InitType=PROCEDURE,- +PyStructSequence_New=PROCEDURE,- +PyStructSequence_NewType=PROCEDURE,- +PyStructSequence_SetItem=PROCEDURE,- +PyStructSequence_UnnamedField=DATA,- +PySuper_Type=DATA,- +PySymtable_Build=PROCEDURE,- +PySymtable_BuildObject=PROCEDURE,- +PySymtable_Free=PROCEDURE,- +PySymtable_Lookup=PROCEDURE,- +PySys_AddAuditHook=PROCEDURE,- +PySys_AddWarnOption=PROCEDURE,- +PySys_AddWarnOptionUnicode=PROCEDURE,- +PySys_AddXOption=PROCEDURE,- +PySys_Audit=PROCEDURE,- +PySys_FormatStderr=PROCEDURE,- +PySys_FormatStdout=PROCEDURE,- +PySys_GetObject=PROCEDURE,- +PySys_GetXOptions=PROCEDURE,- +PySys_HasWarnOptions=PROCEDURE,- +PySys_ResetWarnOptions=PROCEDURE,- +PySys_SetArgv=PROCEDURE,- +PySys_SetArgvEx=PROCEDURE,- +PySys_SetObject=PROCEDURE,- +PySys_SetPath=PROCEDURE,- +PySys_WriteStderr=PROCEDURE,- +PySys_WriteStdout=PROCEDURE,- +PyTextIOBase_Type=DATA,- +PyTextIOWrapper_Type=DATA,- +PyThreadState_Clear=PROCEDURE,- +PyThreadState_Delete=PROCEDURE,- +PyThreadState_DeleteCurrent=PROCEDURE,- +PyThreadState_Get=PROCEDURE,- +PyThreadState_GetDict=PROCEDURE,- +PyThreadState_New=PROCEDURE,- +PyThreadState_Next=PROCEDURE,- +PyThreadState_SetAsyncExc=PROCEDURE,- +PyThreadState_Swap=PROCEDURE,- +PyThread_GetInfo=PROCEDURE,- +PyThread_ReInitTLS=PROCEDURE,- +PyThread_acquire_lock=PROCEDURE,- +PyThread_acquire_lock_timed=PROCEDURE,- +PyThread_allocate_lock=PROCEDURE,- +PyThread_create_key=PROCEDURE,- +PyThread_delete_key=PROCEDURE,- +PyThread_delete_key_value=PROCEDURE,- +PyThread_exit_thread=PROCEDURE,- +PyThread_free_lock=PROCEDURE,- +PyThread_get_key_value=PROCEDURE,- +PyThread_get_stacksize=PROCEDURE,- +PyThread_get_thread_ident=PROCEDURE,- +PyThread_init_thread=PROCEDURE,- +PyThread_release_lock=PROCEDURE,- +PyThread_set_key_value=PROCEDURE,- +PyThread_set_stacksize=PROCEDURE,- +PyThread_start_new_thread=PROCEDURE,- +PyThread_tss_alloc=PROCEDURE,- +PyThread_tss_create=PROCEDURE,- +PyThread_tss_delete=PROCEDURE,- +PyThread_tss_free=PROCEDURE,- +PyThread_tss_get=PROCEDURE,- +PyThread_tss_is_created=PROCEDURE,- +PyThread_tss_set=PROCEDURE,- +PyToken_OneChar=PROCEDURE,- +PyToken_ThreeChars=PROCEDURE,- +PyToken_TwoChars=PROCEDURE,- +PyTokenizer_FindEncodin0djd81n$=PROCEDURE,- +PyTokenizer_FindEncoding=PROCEDURE,- +PyTokenizer_Free=PROCEDURE,- +PyTokenizer_FromFile=PROCEDURE,- +PyTokenizer_FromString=PROCEDURE,- +PyTokenizer_FromUTF8=PROCEDURE,- +PyTokenizer_Get=PROCEDURE,- +PyTraceBack_Here=PROCEDURE,- +PyTraceBack_Print=PROCEDURE,- +PyTraceBack_Type=DATA,- +PyTraceMalloc_Track=PROCEDURE,- +PyTraceMalloc_Untrack=PROCEDURE,- +PyTupleIter_Type=DATA,- +PyTuple_ClearFreeList=PROCEDURE,- +PyTuple_Fini=PROCEDURE,- +PyTuple_GetItem=PROCEDURE,- +PyTuple_GetSlice=PROCEDURE,- +PyTuple_New=PROCEDURE,- +PyTuple_Pack=PROCEDURE,- +PyTuple_SetItem=PROCEDURE,- +PyTuple_Size=PROCEDURE,- +PyTuple_Type=DATA,- +PyType_ClearCache=PROCEDURE,- +PyType_FromSpec=PROCEDURE,- +PyType_FromSpecWithBases=PROCEDURE,- +PyType_GenericAlloc=PROCEDURE,- +PyType_GenericNew=PROCEDURE,- +PyType_GetFlags=PROCEDURE,- +PyType_GetSlot=PROCEDURE,- +PyType_IsSubtype=PROCEDURE,- +PyType_Modified=PROCEDURE,- +PyType_Ready=PROCEDURE,- +PyType_Type=DATA,- +PyUnicodeDecodeError_Create=PROCEDURE,- +PyUnicodeDecodeError_Ge28gplj2$=PROCEDURE,- +PyUnicodeDecodeError_GetEnd=PROCEDURE,- +PyUnicodeDecodeError_GetObject=PROCEDURE,- +PyUnicodeDecodeError_GetReason=PROCEDURE,- +PyUnicodeDecodeError_GetStart=PROCEDURE,- +PyUnicodeDecodeError_SetEnd=PROCEDURE,- +PyUnicodeDecodeError_SetReason=PROCEDURE,- +PyUnicodeDecodeError_SetStart=PROCEDURE,- +PyUnicodeEncodeError_Create=PROCEDURE,- +PyUnicodeEncodeError_Ge2549dvm$=PROCEDURE,- +PyUnicodeEncodeError_GetEnd=PROCEDURE,- +PyUnicodeEncodeError_GetObject=PROCEDURE,- +PyUnicodeEncodeError_GetReason=PROCEDURE,- +PyUnicodeEncodeError_GetStart=PROCEDURE,- +PyUnicodeEncodeError_SetEnd=PROCEDURE,- +PyUnicodeEncodeError_SetReason=PROCEDURE,- +PyUnicodeEncodeError_SetStart=PROCEDURE,- +PyUnicodeIter_Type=DATA,- +PyUnicodeTranslateError06c68o2$=PROCEDURE,- +PyUnicodeTranslateError0po7mq2$=PROCEDURE,- +PyUnicodeTranslateError1nfk4sv$=PROCEDURE,- +PyUnicodeTranslateError35n5p4j$=PROCEDURE,- +PyUnicodeTranslateError3uuuc3v$=PROCEDURE,- +PyUnicodeTranslateError_Create=PROCEDURE,- +PyUnicodeTranslateError_GetEnd=PROCEDURE,- +PyUnicodeTranslateError_SetEnd=PROCEDURE,- +PyUnicode_Append=PROCEDURE,- +PyUnicode_AppendAndDel=PROCEDURE,- +PyUnicode_AsASCIIString=PROCEDURE,- +PyUnicode_AsCharmapString=PROCEDURE,- +PyUnicode_AsDecodedObject=PROCEDURE,- +PyUnicode_AsDecodedUnicode=PROCEDURE,- +PyUnicode_AsEncodedObject=PROCEDURE,- +PyUnicode_AsEncodedString=PROCEDURE,- +PyUnicode_AsEncodedUnicode=PROCEDURE,- +PyUnicode_AsLatin1String=PROCEDURE,- +PyUnicode_AsRawUnicodeE1pq4v4k$=PROCEDURE,- +PyUnicode_AsUCS4=PROCEDURE,- +PyUnicode_AsUCS4Copy=PROCEDURE,- +PyUnicode_AsUTF16String=PROCEDURE,- +PyUnicode_AsUTF32String=PROCEDURE,- +PyUnicode_AsUTF8=PROCEDURE,- +PyUnicode_AsUTF8AndSize=PROCEDURE,- +PyUnicode_AsUTF8String=PROCEDURE,- +PyUnicode_AsUnicode=PROCEDURE,- +PyUnicode_AsUnicodeAndSize=PROCEDURE,- +PyUnicode_AsUnicodeCopy=PROCEDURE,- +PyUnicode_AsUnicodeEscapeString=PROCEDURE,- +PyUnicode_AsWideChar=PROCEDURE,- +PyUnicode_AsWideCharString=PROCEDURE,- +PyUnicode_BuildEncodingMap=PROCEDURE,- +PyUnicode_ClearFreeList=PROCEDURE,- +PyUnicode_Compare=PROCEDURE,- +PyUnicode_CompareWithAS1mu930c$=PROCEDURE,- +PyUnicode_Concat=PROCEDURE,- +PyUnicode_Contains=PROCEDURE,- +PyUnicode_CopyCharacters=PROCEDURE,- +PyUnicode_Count=PROCEDURE- +) +! +SYMBOL_VECTOR = ( - +PyUnicode_Decode=PROCEDURE,- +PyUnicode_DecodeASCII=PROCEDURE,- +PyUnicode_DecodeCharmap=PROCEDURE,- +PyUnicode_DecodeFSDefau2kjh4hh$=PROCEDURE,- +PyUnicode_DecodeFSDefault=PROCEDURE,- +PyUnicode_DecodeLatin1=PROCEDURE,- +PyUnicode_DecodeLocale=PROCEDURE,- +PyUnicode_DecodeLocaleAndSize=PROCEDURE,- +PyUnicode_DecodeRawUnic1u0dtd9$=PROCEDURE,- +PyUnicode_DecodeUTF16=PROCEDURE,- +PyUnicode_DecodeUTF16Stateful=PROCEDURE,- +PyUnicode_DecodeUTF32=PROCEDURE,- +PyUnicode_DecodeUTF32Stateful=PROCEDURE,- +PyUnicode_DecodeUTF7=PROCEDURE,- +PyUnicode_DecodeUTF7Stateful=PROCEDURE,- +PyUnicode_DecodeUTF8=PROCEDURE,- +PyUnicode_DecodeUTF8Stateful=PROCEDURE,- +PyUnicode_DecodeUnicodeEscape=PROCEDURE,- +PyUnicode_Encode=PROCEDURE,- +PyUnicode_EncodeASCII=PROCEDURE,- +PyUnicode_EncodeCharmap=PROCEDURE,- +PyUnicode_EncodeDecimal=PROCEDURE,- +PyUnicode_EncodeFSDefault=PROCEDURE,- +PyUnicode_EncodeLatin1=PROCEDURE,- +PyUnicode_EncodeLocale=PROCEDURE,- +PyUnicode_EncodeRawUnic0qs46ns$=PROCEDURE,- +PyUnicode_EncodeUTF16=PROCEDURE,- +PyUnicode_EncodeUTF32=PROCEDURE,- +PyUnicode_EncodeUTF7=PROCEDURE,- +PyUnicode_EncodeUTF8=PROCEDURE,- +PyUnicode_EncodeUnicodeEscape=PROCEDURE,- +PyUnicode_FSConverter=PROCEDURE,- +PyUnicode_FSDecoder=PROCEDURE,- +PyUnicode_Fill=PROCEDURE,- +PyUnicode_Find=PROCEDURE,- +PyUnicode_FindChar=PROCEDURE,- +PyUnicode_Format=PROCEDURE,- +PyUnicode_FromEncodedObject=PROCEDURE,- +PyUnicode_FromFormat=PROCEDURE,- +PyUnicode_FromFormatV=PROCEDURE,- +PyUnicode_FromKindAndData=PROCEDURE,- +PyUnicode_FromObject=PROCEDURE,- +PyUnicode_FromOrdinal=PROCEDURE,- +PyUnicode_FromString=PROCEDURE,- +PyUnicode_FromStringAndSize=PROCEDURE,- +PyUnicode_FromUnicode=PROCEDURE,- +PyUnicode_FromWideChar=PROCEDURE,- +PyUnicode_GetDefaultEncoding=PROCEDURE,- +PyUnicode_GetLength=PROCEDURE,- +PyUnicode_GetMax=PROCEDURE,- +PyUnicode_GetSize=PROCEDURE,- +PyUnicode_InternFromString=PROCEDURE,- +PyUnicode_InternImmortal=PROCEDURE,- +PyUnicode_InternInPlace=PROCEDURE,- +PyUnicode_IsIdentifier=PROCEDURE,- +PyUnicode_Join=PROCEDURE,- +PyUnicode_New=PROCEDURE,- +PyUnicode_Partition=PROCEDURE,- +PyUnicode_RPartition=PROCEDURE,- +PyUnicode_RSplit=PROCEDURE,- +PyUnicode_ReadChar=PROCEDURE,- +PyUnicode_Replace=PROCEDURE,- +PyUnicode_Resize=PROCEDURE,- +PyUnicode_RichCompare=PROCEDURE,- +PyUnicode_Split=PROCEDURE,- +PyUnicode_Splitlines=PROCEDURE,- +PyUnicode_Substring=PROCEDURE,- +PyUnicode_Tailmatch=PROCEDURE,- +PyUnicode_TransformDeci2bfsl6e$=PROCEDURE,- +PyUnicode_Translate=PROCEDURE,- +PyUnicode_TranslateCharmap=PROCEDURE,- +PyUnicode_Type=DATA,- +PyUnicode_WriteChar=PROCEDURE,- +PyVectorcall_Call=PROCEDURE,- +PyWeakref_GetObject=PROCEDURE,- +PyWeakref_NewProxy=PROCEDURE,- +PyWeakref_NewRef=PROCEDURE,- +PyWideStringList_Append=PROCEDURE,- +PyWideStringList_Insert=PROCEDURE,- +PyWrapperDescr_Type=DATA,- +PyWrapper_New=PROCEDURE,- +PyZip_Type=DATA,- +Py_AddPendingCall=PROCEDURE,- +Py_AtExit=PROCEDURE,- +Py_BuildValue=PROCEDURE,- +Py_BytesMain=PROCEDURE,- +Py_BytesWarningFlag=DATA,- +Py_CompileString=PROCEDURE,- +Py_CompileStringExFlags=PROCEDURE,- +Py_CompileStringFlags=PROCEDURE,- +Py_CompileStringObject=PROCEDURE,- +Py_DebugFlag=DATA,- +Py_DecRef=PROCEDURE,- +Py_DecodeLocale=PROCEDURE,- +Py_DontWriteBytecodeFlag=DATA,- +Py_EncodeLocale=PROCEDURE,- +Py_EndInterpreter=PROCEDURE,- +Py_Exit=PROCEDURE,- +Py_ExitStatusException=PROCEDURE,- +Py_FatalError=PROCEDURE,- +Py_FdIsInteractive=PROCEDURE,- +Py_FileSystemDefaultEnc3q1c87n$=DATA,- +Py_FileSystemDefaultEncoding=DATA,- +Py_Finalize=PROCEDURE,- +Py_FinalizeEx=PROCEDURE,- +Py_FrozenFlag=DATA,- +Py_FrozenMain=PROCEDURE,- +Py_GetArgcArgv=PROCEDURE,- +Py_GetBuildInfo=PROCEDURE,- +Py_GetCompiler=PROCEDURE,- +Py_GetCopyright=PROCEDURE,- +Py_GetExecPrefix=PROCEDURE,- +Py_GetPath=PROCEDURE,- +Py_GetPlatform=PROCEDURE,- +Py_GetPrefix=PROCEDURE,- +Py_GetProgramFullPath=PROCEDURE,- +Py_GetProgramName=PROCEDURE,- +Py_GetPythonHome=PROCEDURE,- +Py_GetRecursionLimit=PROCEDURE,- +Py_GetVersion=PROCEDURE,- +Py_HasFileSystemDefaultEncoding=DATA,- +Py_HashRandomizationFlag=DATA,- +Py_IgnoreEnvironmentFlag=DATA,- +Py_IncRef=PROCEDURE,- +Py_Initialize=PROCEDURE,- +Py_InitializeEx=PROCEDURE,- +Py_InitializeFromConfig=PROCEDURE,- +Py_InspectFlag=DATA,- +Py_InteractiveFlag=DATA,- +Py_IsInitialized=PROCEDURE,- +Py_IsolatedFlag=DATA,- +Py_Main=PROCEDURE,- +Py_MakePendingCalls=PROCEDURE,- +Py_NewInterpreter=PROCEDURE,- +Py_NoSiteFlag=DATA,- +Py_NoUserSiteDirectory=DATA,- +Py_OptimizeFlag=DATA,- +Py_PreInitialize=PROCEDURE,- +Py_PreInitializeFromArgs=PROCEDURE,- +Py_PreInitializeFromBytesArgs=PROCEDURE,- +Py_QuietFlag=DATA,- +Py_ReprEnter=PROCEDURE,- +Py_ReprLeave=PROCEDURE,- +Py_RunMain=PROCEDURE,- +Py_SetPath=PROCEDURE,- +Py_SetProgramName=PROCEDURE,- +Py_SetPythonHome=PROCEDURE,- +Py_SetRecursionLimit=PROCEDURE,- +Py_SetStandardStreamEncoding=PROCEDURE,- +Py_SymtableString=PROCEDURE,- +Py_SymtableStringObject=PROCEDURE,- +Py_UNICODE_strcat=PROCEDURE,- +Py_UNICODE_strchr=PROCEDURE,- +Py_UNICODE_strcmp=PROCEDURE,- +Py_UNICODE_strcpy=PROCEDURE,- +Py_UNICODE_strlen=PROCEDURE,- +Py_UNICODE_strncmp=PROCEDURE,- +Py_UNICODE_strncpy=PROCEDURE,- +Py_UNICODE_strrchr=PROCEDURE,- +Py_UTF8Mode=DATA,- +Py_UnbufferedStdioFlag=DATA,- +Py_UniversalNewlineFgets=PROCEDURE,- +Py_VaBuildValue=PROCEDURE,- +Py_VerboseFlag=DATA,- +Py_hexdigits=DATA,- +_PyAST_ExprAsUnicode=PROCEDURE,- +_PyAST_GetDocString=PROCEDURE,- +_PyAST_Optimize=PROCEDURE,- +_PyAccu_Accumulate=PROCEDURE,- +_PyAccu_Destroy=PROCEDURE,- +_PyAccu_Finish=PROCEDURE,- +_PyAccu_FinishAsList=PROCEDURE,- +_PyAccu_Init=PROCEDURE,- +_PyArg_BadArgument=PROCEDURE,- +_PyArg_CheckPositional=PROCEDURE,- +_PyArg_Fini=PROCEDURE,- +_PyArg_NoKeywords=PROCEDURE,- +_PyArg_NoPositional=PROCEDURE,- +_PyArg_ParseStack=PROCEDURE,- +_PyArg_ParseStackAndKey1r5kfa7$=PROCEDURE,- +_PyArg_ParseStackAndKeywords=PROCEDURE,- +_PyArg_ParseStack_SizeT=PROCEDURE,- +_PyArg_ParseTupleAndKey19kl55t$=PROCEDURE,- +_PyArg_ParseTupleAndKey3hjidue$=PROCEDURE,- +_PyArg_ParseTupleAndKey3rsn4lp$=PROCEDURE,- +_PyArg_ParseTuple_SizeT=PROCEDURE,- +_PyArg_Parse_SizeT=PROCEDURE,- +_PyArg_UnpackKeywords=PROCEDURE,- +_PyArg_UnpackStack=PROCEDURE,- +_PyArg_VaParseTupleAndK1bu9bqh$=PROCEDURE,- +_PyArg_VaParseTupleAndK1dkfbe3$=PROCEDURE,- +_PyArg_VaParseTupleAndK3me8rbm$=PROCEDURE,- +_PyArg_VaParse_SizeT=PROCEDURE,- +_PyArgv_AsWstrList=PROCEDURE,- +_PyAsyncGenASend_Type=DATA,- +_PyAsyncGenAThrow_Type=DATA,- +_PyAsyncGenValueWrapperNew=PROCEDURE,- +_PyAsyncGenWrappedValue_Type=DATA,- +_PyBuiltin_Init=PROCEDURE,- +_PyBuiltins_AddExceptions=PROCEDURE,- +_PyByteArray_empty_string=DATA,- +_PyBytesIOBuffer_Type=DATA,- +_PyBytesWriter_Alloc=PROCEDURE,- +_PyBytesWriter_Dealloc=PROCEDURE,- +_PyBytesWriter_Finish=PROCEDURE,- +_PyBytesWriter_Init=PROCEDURE,- +_PyBytesWriter_Prepare=PROCEDURE,- +_PyBytesWriter_Resize=PROCEDURE,- +_PyBytesWriter_WriteBytes=PROCEDURE,- +_PyBytes_DecodeEscape=PROCEDURE,- +_PyBytes_FormatEx=PROCEDURE,- +_PyBytes_FromHex=PROCEDURE,- +_PyBytes_Join=PROCEDURE,- +_PyBytes_Resize=PROCEDURE,- +_PyCFunction_DebugMallocStats=PROCEDURE,- +_PyCFunction_FastCallDict=PROCEDURE,- +_PyCode_CheckLineNumber=PROCEDURE,- +_PyCode_ConstantKey=PROCEDURE,- +_PyCode_GetExtra=PROCEDURE,- +_PyCode_InitOpcache=PROCEDURE,- +_PyCode_SetExtra=PROCEDURE,- +_PyCodecInfo_GetIncreme06rkpfs$=PROCEDURE,- +_PyCodecInfo_GetIncreme30gl7kb$=PROCEDURE,- +_PyCodec_DecodeText=PROCEDURE,- +_PyCodec_EncodeText=PROCEDURE,- +_PyCodec_Forget=PROCEDURE,- +_PyCodec_Lookup=PROCEDURE,- +_PyCodec_LookupTextEncoding=PROCEDURE,- +_PyComplex_FormatAdvancedWriter=PROCEDURE,- +_PyConfig_Copy=PROCEDURE,- +_PyConfig_InitCompatConfig=PROCEDURE,- +_PyConfig_InitPathConfig=PROCEDURE,- +_PyConfig_SetPyArgv=PROCEDURE,- +_PyConfig_Write=PROCEDURE,- +_PyConfig_WritePathConfig=PROCEDURE,- +_PyContext_Fini=PROCEDURE,- +_PyContext_Init=PROCEDURE,- +_PyContext_NewHamtForTests=PROCEDURE,- +_PyCoroWrapper_Type=DATA,- +_PyCoro_GetAwaitableIter=PROCEDURE,- +_PyCrossInterpreterData0etrgar$=PROCEDURE,- +_PyCrossInterpreterData0ipttne$=PROCEDURE,- +_PyCrossInterpreterData_Lookup=PROCEDURE,- +_PyCrossInterpreterData_Release=PROCEDURE,- +_PyDebugAllocatorStats=PROCEDURE,- +_PyDictKeys_DecRef=PROCEDURE,- +_PyDictView_Intersect=PROCEDURE,- +_PyDictView_New=PROCEDURE,- +_PyDict_CheckConsistency=PROCEDURE,- +_PyDict_Contains=PROCEDURE,- +_PyDict_DebugMallocStats=PROCEDURE,- +_PyDict_DelItemId=PROCEDURE,- +_PyDict_DelItemIf=PROCEDURE,- +_PyDict_DelItem_KnownHash=PROCEDURE,- +_PyDict_FromKeys=PROCEDURE,- +_PyDict_GetItemId=PROCEDURE,- +_PyDict_GetItemIdWithError=PROCEDURE,- +_PyDict_GetItemStringWithError=PROCEDURE,- +_PyDict_GetItem_KnownHash=PROCEDURE,- +_PyDict_HasOnlyStringKeys=PROCEDURE,- +_PyDict_KeysSize=PROCEDURE,- +_PyDict_LoadGlobal=PROCEDURE,- +_PyDict_MaybeUntrack=PROCEDURE,- +_PyDict_MergeEx=PROCEDURE,- +_PyDict_NewKeysForClass=PROCEDURE,- +_PyDict_NewPresized=PROCEDURE,- +_PyDict_Next=PROCEDURE,- +_PyDict_Pop=PROCEDURE,- +_PyDict_Pop_KnownHash=PROCEDURE,- +_PyDict_SetItemId=PROCEDURE,- +_PyDict_SetItem_KnownHash=PROCEDURE,- +_PyDict_SizeOf=PROCEDURE,- +_PyErr_BadInternalCall=PROCEDURE,- +_PyErr_ChainExceptions=PROCEDURE,- +_PyErr_CheckSignals=PROCEDURE,- +_PyErr_Clear=PROCEDURE,- +_PyErr_Display=PROCEDURE,- +_PyErr_ExceptionMatches=PROCEDURE,- +_PyErr_Fetch=PROCEDURE,- +_PyErr_Format=PROCEDURE,- +_PyErr_FormatFromCause=PROCEDURE,- +_PyErr_GetTopmostException=PROCEDURE,- +_PyErr_Init=PROCEDURE,- +_PyErr_NormalizeException=PROCEDURE,- +_PyErr_Print=PROCEDURE,- +_PyErr_Restore=PROCEDURE,- +_PyErr_SetKeyError=PROCEDURE,- +_PyErr_SetNone=PROCEDURE,- +_PyErr_SetObject=PROCEDURE,- +_PyErr_SetString=PROCEDURE,- +_PyErr_TrySetFromCause=PROCEDURE,- +_PyErr_WarnUnawaitedCoroutine=PROCEDURE,- +_PyErr_WriteUnraisableD0gkavvc$=PROCEDURE,- +_PyErr_WriteUnraisableMsg=PROCEDURE,- +_PyEval_AddPendingCall=PROCEDURE,- +_PyEval_CallTracing=PROCEDURE,- +_PyEval_EvalCodeWithName=PROCEDURE,- +_PyEval_EvalFrameDefault=PROCEDURE,- +_PyEval_Fini=PROCEDURE,- +_PyEval_FiniThreads=PROCEDURE,- +_PyEval_GetAsyncGenFinalizer=PROCEDURE,- +_PyEval_GetAsyncGenFirstiter=PROCEDURE,- +_PyEval_GetBuiltinId=PROCEDURE,- +_PyEval_GetCoroutineOri166ulm8$=PROCEDURE,- +_PyEval_GetSwitchInterval=PROCEDURE,- +_PyEval_Initialize=PROCEDURE,- +_PyEval_ReInitThreads=PROCEDURE,- +_PyEval_RequestCodeExtraIndex=PROCEDURE,- +_PyEval_SetAsyncGenFinalizer=PROCEDURE,- +_PyEval_SetAsyncGenFirstiter=PROCEDURE,- +_PyEval_SetCoroutineOri2cosu4s$=PROCEDURE,- +_PyEval_SetSwitchInterval=PROCEDURE,- +_PyEval_SignalAsyncExc=PROCEDURE,- +_PyEval_SignalReceived=PROCEDURE,- +_PyEval_SliceIndex=PROCEDURE,- +_PyEval_SliceIndexNotNone=PROCEDURE,- +_PyExc_Fini=PROCEDURE,- +_PyExc_Init=PROCEDURE,- +_PyFaulthandler_Fini=PROCEDURE,- +_PyFaulthandler_Init=PROCEDURE,- +_PyFileIO_closed=PROCEDURE,- +_PyFloat_DebugMallocStats=PROCEDURE,- +_PyFloat_FormatAdvancedWriter=PROCEDURE,- +_PyFloat_Init=PROCEDURE,- +_PyFloat_Pack2=PROCEDURE,- +_PyFloat_Pack4=PROCEDURE,- +_PyFloat_Pack8=PROCEDURE,- +_PyFloat_Unpack2=PROCEDURE,- +_PyFloat_Unpack4=PROCEDURE,- +_PyFloat_Unpack8=PROCEDURE,- +_PyFrame_DebugMallocStats=PROCEDURE,- +_PyFrame_New_NoTrack=PROCEDURE,- +_PyFunction_FastCallDict=PROCEDURE,- +_PyFunction_Vectorcall=PROCEDURE,- +_PyGC_CollectIfEnabled=PROCEDURE,- +_PyGC_CollectNoFail=PROCEDURE,- +_PyGC_Dump=PROCEDURE,- +_PyGC_DumpShutdownStats=PROCEDURE,- +_PyGC_Fini=PROCEDURE,- +_PyGC_Initialize=PROCEDURE,- +_PyGILState_Fini=PROCEDURE,- +_PyGILState_GetInterpre09it46k$=PROCEDURE,- +_PyGILState_Init=PROCEDURE,- +_PyGILState_Reinit=PROCEDURE,- +_PyGen_FetchStopIterationValue=PROCEDURE,- +_PyGen_Finalize=PROCEDURE,- +_PyGen_Send=PROCEDURE,- +_PyGen_SetStopIterationValue=PROCEDURE,- +_PyGen_yf=PROCEDURE,- +_PyHamtItems_Type=DATA,- +_PyHamtKeys_Type=DATA,- +_PyHamtValues_Type=DATA,- +_PyHamt_ArrayNode_Type=DATA,- +_PyHamt_Assoc=PROCEDURE,- +_PyHamt_BitmapNode_Type=DATA,- +_PyHamt_CollisionNode_Type=DATA,- +_PyHamt_Eq=PROCEDURE,- +_PyHamt_Find=PROCEDURE,- +_PyHamt_Fini=PROCEDURE,- +_PyHamt_Init=PROCEDURE,- +_PyHamt_Len=PROCEDURE,- +_PyHamt_New=PROCEDURE,- +_PyHamt_NewIterItems=PROCEDURE,- +_PyHamt_NewIterKeys=PROCEDURE,- +_PyHamt_NewIterValues=PROCEDURE,- +_PyHamt_Type=DATA,- +_PyHamt_Without=PROCEDURE,- +_PyHash_Fini=PROCEDURE,- +_PyIOBase_check_closed=PROCEDURE,- +_PyIOBase_check_readable=PROCEDURE,- +_PyIOBase_check_seekable=PROCEDURE,- +_PyIOBase_check_writable=PROCEDURE,- +_PyIOBase_finalize=PROCEDURE,- +_PyIO_Module=DATA,- +_PyIO_empty_bytes=DATA,- +_PyIO_empty_str=DATA,- +_PyIO_find_line_ending=PROCEDURE,- +_PyIO_get_locale_module=PROCEDURE,- +_PyIO_get_module_state=PROCEDURE,- +_PyIO_str_close=DATA,- +_PyIO_str_closed=DATA,- +_PyIO_str_decode=DATA,- +_PyIO_str_encode=DATA,- +_PyIO_str_fileno=DATA,- +_PyIO_str_flush=DATA,- +_PyIO_str_getstate=DATA,- +_PyIO_str_isatty=DATA,- +_PyIO_str_newlines=DATA,- +_PyIO_str_nl=DATA,- +_PyIO_str_peek=DATA,- +_PyIO_str_read1=DATA,- +_PyIO_str_read=DATA,- +_PyIO_str_readable=DATA,- +_PyIO_str_readall=DATA,- +_PyIO_str_readinto=DATA,- +_PyIO_str_readline=DATA,- +_PyIO_str_reset=DATA,- +_PyIO_str_seek=DATA,- +_PyIO_str_seekable=DATA,- +_PyIO_str_setstate=DATA,- +_PyIO_str_tell=DATA,- +_PyIO_str_truncate=DATA,- +_PyIO_str_writable=DATA,- +_PyIO_str_write=DATA,- +_PyIO_trap_eintr=PROCEDURE,- +_PyImportHooks_Init=PROCEDURE,- +_PyImportZip_Init=PROCEDURE,- +_PyImport_AcquireLock=PROCEDURE,- +_PyImport_AddModuleObject=PROCEDURE,- +_PyImport_DynLoadFiletab=DATA,- +_PyImport_FindBuiltin=PROCEDURE,- +_PyImport_FindExtensionObject=PROCEDURE,- +_PyImport_FindExtensionObjectEx=PROCEDURE,- +_PyImport_FindSharedFuncptr=PROCEDURE,- +_PyImport_Fini2=PROCEDURE,- +_PyImport_Fini=PROCEDURE,- +_PyImport_FixupBuiltin=PROCEDURE,- +_PyImport_FixupExtensionObject=PROCEDURE,- +_PyImport_GetModuleId=PROCEDURE,- +_PyImport_Init=PROCEDURE,- +_PyImport_Inittab=DATA,- +_PyImport_IsInitialized=PROCEDURE,- +_PyImport_LoadDynamicMo1v767fh$=PROCEDURE,- +_PyImport_ReInitLock=PROCEDURE,- +_PyImport_ReleaseLock=PROCEDURE,- +_PyImport_SetModule=PROCEDURE,- +_PyImport_SetModuleString=PROCEDURE,- +_PyIncrementalNewlineDe3ke4gfc$=PROCEDURE,- +_PyInterpreterID_LookUp=PROCEDURE,- +_PyInterpreterID_New=PROCEDURE,- +_PyInterpreterID_Type=DATA,- +_PyInterpreterState_Del0mj6vhm$=PROCEDURE,- +_PyInterpreterState_Enable=PROCEDURE,- +_PyInterpreterState_Get0lrqb7p$=PROCEDURE,- +_PyInterpreterState_Get=PROCEDURE,- +_PyInterpreterState_GetIDObject=PROCEDURE,- +_PyInterpreterState_IDDecref=PROCEDURE,- +_PyInterpreterState_IDIncref=PROCEDURE,- +_PyInterpreterState_IDInitref=PROCEDURE,- +_PyInterpreterState_LookUpID=PROCEDURE,- +_PyInterpreterState_Req0tb95rd$=PROCEDURE,- +_PyInterpreterState_Req2qu49fg$=PROCEDURE,- +_PyList_DebugMallocStats=PROCEDURE,- +_PyList_Extend=PROCEDURE,- +_PyLong_AsByteArray=PROCEDURE,- +_PyLong_AsInt=PROCEDURE,- +_PyLong_AsTime_t=PROCEDURE,- +_PyLong_Copy=PROCEDURE,- +_PyLong_DigitValue=DATA,- +_PyLong_DivmodNear=PROCEDURE,- +_PyLong_Format=PROCEDURE,- +_PyLong_FormatAdvancedWriter=PROCEDURE,- +_PyLong_FormatBytesWriter=PROCEDURE,- +_PyLong_FormatWriter=PROCEDURE,- +_PyLong_Frexp=PROCEDURE,- +_PyLong_FromByteArray=PROCEDURE,- +_PyLong_FromBytes=PROCEDURE,- +_PyLong_FromGid=PROCEDURE,- +_PyLong_FromNbIndexOrNbInt=PROCEDURE,- +_PyLong_FromNbInt=PROCEDURE,- +_PyLong_FromTime_t=PROCEDURE,- +_PyLong_FromUid=PROCEDURE,- +_PyLong_GCD=PROCEDURE,- +_PyLong_Init=PROCEDURE,- +_PyLong_Lshift=PROCEDURE,- +_PyLong_New=PROCEDURE,- +_PyLong_NumBits=PROCEDURE,- +_PyLong_One=DATA,- +_PyLong_Rshift=PROCEDURE,- +_PyLong_Sign=PROCEDURE,- +_PyLong_Size_t_Converter=PROCEDURE,- +_PyLong_UnsignedInt_Converter=PROCEDURE,- +_PyLong_UnsignedLongLon0ntrsub$=PROCEDURE,- +_PyLong_UnsignedLong_Converter=PROCEDURE,- +_PyLong_UnsignedShort_Converter=PROCEDURE,- +_PyLong_Zero=DATA,- +_PyManagedBuffer_Type=DATA,- +_PyMem_DumpTraceback=PROCEDURE,- +_PyMem_GetAllocatorName=PROCEDURE,- +_PyMem_GetCurrentAllocatorName=PROCEDURE,- +_PyMem_RawStrdup=PROCEDURE,- +_PyMem_RawWcsdup=PROCEDURE,- +_PyMem_SetDefaultAllocator=PROCEDURE,- +_PyMem_SetupAllocators=PROCEDURE,- +_PyMem_Strdup=PROCEDURE,- +_PyMethodDef_RawFastCal31habv6$=PROCEDURE,- +_PyMethodDef_RawFastCallDict=PROCEDURE,- +_PyMethodWrapper_Type=DATA,- +_PyMethod_DebugMallocStats=PROCEDURE,- +_PyModuleSpec_IsInitializing=PROCEDURE,- +_PyModule_Clear=PROCEDURE,- +_PyModule_ClearDict=PROCEDURE,- +_PyModule_CreateInitialized=PROCEDURE,- +_PyNamespace_New=PROCEDURE,- +_PyNamespace_Type=DATA,- +_PyNode_FinalizeEndPos=PROCEDURE,- +_PyNode_SizeOf=PROCEDURE,- +_PyNone_Type=DATA,- +_PyNotImplemented_Type=DATA,- +_PyOS_GetOpt=PROCEDURE,- +_PyOS_IsMainThread=PROCEDURE,- +_PyOS_ReadlineTState=DATA,- +_PyOS_ResetGetOpt=PROCEDURE,- +_PyOS_URandom=PROCEDURE,- +_PyOS_URandomNonblock=PROCEDURE,- +_PyOS_mystrnicmp_hack=DATA,- +_PyOS_optarg=DATA,- +_PyOS_opterr=DATA,- +_PyOS_optind=DATA,- +_PyObjectDict_SetItem=PROCEDURE,- +_PyObject_AssertFailed=PROCEDURE,- +_PyObject_CallFunction_SizeT=PROCEDURE,- +_PyObject_CallMethodId=PROCEDURE,- +_PyObject_CallMethodIdObjArgs=PROCEDURE,- +_PyObject_CallMethodId_SizeT=PROCEDURE,- +_PyObject_CallMethod_SizeT=PROCEDURE,- +_PyObject_Call_Prepend=PROCEDURE,- +_PyObject_CheckConsistency=PROCEDURE,- +_PyObject_CheckCrossInt10cv01b$=PROCEDURE,- +_PyObject_DebugMallocStats=PROCEDURE,- +_PyObject_DebugTypeStats=PROCEDURE,- +_PyObject_Dump=PROCEDURE,- +_PyObject_FastCallDict=PROCEDURE,- +_PyObject_FastCall_Prepend=PROCEDURE,- +_PyObject_GC_Calloc=PROCEDURE,- +_PyObject_GC_Malloc=PROCEDURE,- +_PyObject_GC_New=PROCEDURE,- +_PyObject_GC_NewVar=PROCEDURE,- +_PyObject_GC_Resize=PROCEDURE,- +_PyObject_GenericGetAtt3rvp6ap$=PROCEDURE,- +_PyObject_GenericSetAtt0su4orl$=PROCEDURE,- +_PyObject_GetAttrId=PROCEDURE,- +_PyObject_GetCrossInter120g118$=PROCEDURE,- +_PyObject_GetDictPtr=PROCEDURE,- +_PyObject_GetMethod=PROCEDURE,- +_PyObject_HasAttrId=PROCEDURE,- +_PyObject_HasLen=PROCEDURE,- +_PyObject_IsAbstract=PROCEDURE,- +_PyObject_IsFreed=PROCEDURE,- +_PyObject_LookupAttr=PROCEDURE,- +_PyObject_LookupAttrId=PROCEDURE,- +_PyObject_LookupSpecial=PROCEDURE,- +_PyObject_MakeTpCall=PROCEDURE,- +_PyObject_New=PROCEDURE,- +_PyObject_NewVar=PROCEDURE,- +_PyObject_NextNotImplemented=PROCEDURE,- +_PyObject_RealIsInstance=PROCEDURE,- +_PyObject_RealIsSubclass=PROCEDURE,- +_PyObject_SetAttrId=PROCEDURE,- +_PyParser_Grammar=DATA,- +_PyParser_TokenNames=DATA,- +_PyPathConfig_Calculate=PROCEDURE,- +_PyPathConfig_ClearGlobal=PROCEDURE,- +_PyPathConfig_ComputeSysPath0=PROCEDURE,- +_PyPreCmdline_Clear=PROCEDURE,- +_PyPreCmdline_Read=PROCEDURE,- +_PyPreCmdline_SetArgv=PROCEDURE,- +_PyPreCmdline_SetConfig=PROCEDURE,- +_PyPreConfig_AsDict=PROCEDURE,- +_PyPreConfig_GetConfig=PROCEDURE,- +_PyPreConfig_InitCompatConfig=PROCEDURE,- +_PyPreConfig_InitFromConfig=PROCEDURE,- +_PyPreConfig_InitFromPreConfig=PROCEDURE,- +_PyPreConfig_Read=PROCEDURE,- +_PyPreConfig_Write=PROCEDURE,- +_PyRuntime=DATA,- +_PyRuntimeState_Fini=PROCEDURE,- +_PyRuntimeState_Init=PROCEDURE,- +_PyRuntimeState_ReInitThreads=PROCEDURE,- +_PyRuntime_Finalize=PROCEDURE,- +_PyRuntime_Initialize=PROCEDURE,- +_PySequence_BytesToCharpArray=PROCEDURE,- +_PySequence_IterSearch=PROCEDURE,- +_PySet_Dummy=DATA,- +_PySet_NextEntry=PROCEDURE,- +_PySet_Update=PROCEDURE,- +_PySignal_AfterFork=PROCEDURE,- +_PySlice_FromIndices=PROCEDURE,- +_PySlice_GetLongIndices=PROCEDURE,- +_PyStack_AsDict=PROCEDURE,- +_PyStack_UnpackDict=PROCEDURE,- +_PyState_AddModule=PROCEDURE,- +_PyState_ClearModules=PROCEDURE,- +_PyStructSequence_Init=PROCEDURE,- +_PySys_ClearAuditHooks=PROCEDURE,- +_PySys_Create=PROCEDURE,- +_PySys_GetObjectId=PROCEDURE,- +_PySys_GetSizeOf=PROCEDURE,- +_PySys_ImplCacheTag=DATA,- +_PySys_ImplName=DATA,- +_PySys_InitMain=PROCEDURE,- +_PySys_ReadPreinitWarnOptions=PROCEDURE,- +_PySys_ReadPreinitXOptions=PROCEDURE,- +_PySys_SetObjectId=PROCEDURE,- +_PySys_SetPreliminaryStderr=PROCEDURE,- +_PyThreadState_DeleteExcept=PROCEDURE,- +_PyThreadState_Init=PROCEDURE,- +_PyThreadState_Prealloc=PROCEDURE,- +_PyThreadState_Swap=PROCEDURE,- +_PyThreadState_UncheckedGet=PROCEDURE,- +_PyThread_CurrentFrames=PROCEDURE,- +_PyThread_cond_after=PROCEDURE,- +_PyThread_cond_init=PROCEDURE,- +_PyTime_AsMicroseconds=PROCEDURE,- +_PyTime_AsMilliseconds=PROCEDURE,- +_PyTime_AsNanosecondsObject=PROCEDURE,- +_PyTime_AsSecondsDouble=PROCEDURE,- +_PyTime_AsTimespec=PROCEDURE,- +_PyTime_AsTimeval=PROCEDURE,- +_PyTime_AsTimevalTime_t=PROCEDURE,- +_PyTime_AsTimeval_noraise=PROCEDURE,- +_PyTime_FromMillisecondsObject=PROCEDURE,- +_PyTime_FromNanoseconds=PROCEDURE,- +_PyTime_FromNanosecondsObject=PROCEDURE,- +_PyTime_FromSeconds=PROCEDURE,- +_PyTime_FromSecondsObject=PROCEDURE,- +_PyTime_FromTimespec=PROCEDURE,- +_PyTime_FromTimeval=PROCEDURE,- +_PyTime_GetMonotonicClo0cvp326$=PROCEDURE,- +_PyTime_GetMonotonicClock=PROCEDURE,- +_PyTime_GetPerfCounter=PROCEDURE,- +_PyTime_GetPerfCounterWithInfo=PROCEDURE,- +_PyTime_GetSystemClock=PROCEDURE,- +_PyTime_GetSystemClockWithInfo=PROCEDURE,- +_PyTime_Init=PROCEDURE,- +_PyTime_MulDiv=PROCEDURE,- +_PyTime_ObjectToTime_t=PROCEDURE,- +_PyTime_ObjectToTimespec=PROCEDURE,- +_PyTime_ObjectToTimeval=PROCEDURE,- +_PyTime_gmtime=PROCEDURE,- +_PyTime_localtime=PROCEDURE,- +_PyTraceBack_FromFrame=PROCEDURE,- +_PyTraceMalloc_Fini=PROCEDURE,- +_PyTraceMalloc_GetTraceback=PROCEDURE,- +_PyTraceMalloc_Init=PROCEDURE,- +_PyTraceMalloc_NewReference=PROCEDURE,- +_PyTraceback_Add=PROCEDURE,- +_PyTrash_deposit_object=PROCEDURE,- +_PyTrash_destroy_chain=PROCEDURE,- +_PyTrash_thread_deposit_object=PROCEDURE,- +_PyTrash_thread_destroy_chain=PROCEDURE,- +_PyTuple_DebugMallocStats=PROCEDURE,- +_PyTuple_FromArray=PROCEDURE,- +_PyTuple_MaybeUntrack=PROCEDURE,- +_PyTuple_Resize=PROCEDURE,- +_PyType_CalculateMetaclass=PROCEDURE,- +_PyType_CheckConsistency=PROCEDURE,- +_PyType_Fini=PROCEDURE,- +_PyType_GetDocFromInternalDoc=PROCEDURE,- +_PyType_GetTextSignatur2m88202$=PROCEDURE,- +_PyType_Lookup=PROCEDURE,- +_PyType_LookupId=PROCEDURE,- +_PyType_Name=PROCEDURE,- +_PyTypes_Init=PROCEDURE,- +_PyUnicodeTranslateError_Create=PROCEDURE,- +_PyUnicodeWriter_Dealloc=PROCEDURE,- +_PyUnicodeWriter_Finish=PROCEDURE,- +_PyUnicodeWriter_Init=PROCEDURE,- +_PyUnicodeWriter_Prepar08gfmbu$=PROCEDURE,- +_PyUnicodeWriter_Prepar34806s7$=PROCEDURE,- +_PyUnicodeWriter_WriteA2qb8qnu$=PROCEDURE,- +_PyUnicodeWriter_WriteChar=PROCEDURE,- +_PyUnicodeWriter_WriteL13fdv54$=PROCEDURE,- +_PyUnicodeWriter_WriteStr=PROCEDURE,- +_PyUnicodeWriter_WriteSubstring=PROCEDURE,- +_PyUnicode_AsASCIIString=PROCEDURE,- +_PyUnicode_AsKind=PROCEDURE,- +_PyUnicode_AsLatin1String=PROCEDURE,- +_PyUnicode_AsUTF8String=PROCEDURE,- +_PyUnicode_AsUnicode=PROCEDURE,- +_PyUnicode_CheckConsistency=PROCEDURE,- +_PyUnicode_ClearStaticStrings=PROCEDURE,- +_PyUnicode_Copy=PROCEDURE,- +_PyUnicode_DecodeUnicodeEscape=PROCEDURE,- +_PyUnicode_EQ=PROCEDURE,- +_PyUnicode_EncodeCharmap=PROCEDURE,- +_PyUnicode_EncodeUTF16=PROCEDURE,- +_PyUnicode_EncodeUTF32=PROCEDURE,- +_PyUnicode_EncodeUTF7=PROCEDURE,- +_PyUnicode_EqualToASCIIId=PROCEDURE,- +_PyUnicode_EqualToASCIIString=PROCEDURE,- +_PyUnicode_ExtendedCase=DATA,- +_PyUnicode_FastCopyCharacters=PROCEDURE,- +_PyUnicode_FastFill=PROCEDURE,- +_PyUnicode_FindMaxChar=PROCEDURE,- +_PyUnicode_Fini=PROCEDURE,- +_PyUnicode_FormatAdvancedWriter=PROCEDURE,- +_PyUnicode_FormatLong=PROCEDURE,- +_PyUnicode_FromASCII=PROCEDURE,- +_PyUnicode_FromId=PROCEDURE,- +_PyUnicode_Init=PROCEDURE,- +_PyUnicode_InitEncodings=PROCEDURE,- +_PyUnicode_InsertThousa3dqn1s5$=PROCEDURE,- +_PyUnicode_IsAlpha=PROCEDURE,- +_PyUnicode_IsCaseIgnorable=PROCEDURE,- +_PyUnicode_IsCased=PROCEDURE,- +_PyUnicode_IsDecimalDigit=PROCEDURE,- +_PyUnicode_IsDigit=PROCEDURE,- +_PyUnicode_IsLinebreak=PROCEDURE,- +_PyUnicode_IsLowercase=PROCEDURE,- +_PyUnicode_IsNumeric=PROCEDURE,- +_PyUnicode_IsPrintable=PROCEDURE,- +_PyUnicode_IsTitlecase=PROCEDURE,- +_PyUnicode_IsUppercase=PROCEDURE,- +_PyUnicode_IsWhitespace=PROCEDURE,- +_PyUnicode_IsXidContinue=PROCEDURE,- +_PyUnicode_IsXidStart=PROCEDURE,- +_PyUnicode_JoinArray=PROCEDURE,- +_PyUnicode_Ready=PROCEDURE,- +_PyUnicode_ToDecimalDigit=PROCEDURE,- +_PyUnicode_ToDigit=PROCEDURE,- +_PyUnicode_ToFoldedFull=PROCEDURE,- +_PyUnicode_ToLowerFull=PROCEDURE,- +_PyUnicode_ToLowercase=PROCEDURE,- +_PyUnicode_ToNumeric=PROCEDURE,- +_PyUnicode_ToTitleFull=PROCEDURE,- +_PyUnicode_ToTitlecase=PROCEDURE,- +_PyUnicode_ToUpperFull=PROCEDURE,- +_PyUnicode_ToUppercase=PROCEDURE,- +_PyUnicode_TransformDec0maj7tg$=PROCEDURE,- +_PyUnicode_TypeRecords=DATA,- +_PyUnicode_XStrip=PROCEDURE,- +_PyWarnings_Fini=PROCEDURE,- +_PyWarnings_Init=PROCEDURE,- +_PyWeakref_CallableProxyType=DATA,- +_PyWeakref_ClearRef=PROCEDURE,- +_PyWeakref_GetWeakrefCount=PROCEDURE,- +_PyWeakref_ProxyType=DATA,- +_PyWeakref_RefType=DATA,- +_PyWideStringList_AsList=PROCEDURE,- +_PyWideStringList_Check1etephj$=PROCEDURE,- +_PyWideStringList_Clear=PROCEDURE,- +_PyWideStringList_Copy=PROCEDURE,- +_PyWideStringList_Extend=PROCEDURE,- +_Py_AnnAssign=PROCEDURE,- +_Py_Assert=PROCEDURE,- +_Py_Assign=PROCEDURE,- +_Py_AsyncFor=PROCEDURE,- +_Py_AsyncFunctionDef=PROCEDURE,- +_Py_AsyncWith=PROCEDURE,- +_Py_Attribute=PROCEDURE,- +_Py_AugAssign=PROCEDURE,- +_Py_Await=PROCEDURE,- +_Py_BinOp=PROCEDURE,- +_Py_BoolOp=PROCEDURE,- +_Py_Break=PROCEDURE,- +_Py_BreakPoint=PROCEDURE,- +_Py_BuildValue_SizeT=PROCEDURE,- +_Py_Call=PROCEDURE,- +_Py_CheckFunctionResult=PROCEDURE,- +_Py_CheckRecursionLimit=DATA,- +_Py_CheckRecursiveCall=PROCEDURE,- +_Py_ClassDef=PROCEDURE,- +_Py_ClearArgcArgv=PROCEDURE,- +_Py_ClearFileSystemEncoding=PROCEDURE,- +_Py_ClearStandardStreamEncoding=PROCEDURE,- +_Py_CoerceLegacyLocale=PROCEDURE,- +_Py_Compare=PROCEDURE,- +_Py_Constant=PROCEDURE,- +_Py_Continue=PROCEDURE,- +_Py_Dealloc=PROCEDURE,- +_Py_DecodeLocaleEx=PROCEDURE,- +_Py_DecodeUTF8Ex=PROCEDURE,- +_Py_DecodeUTF8_surrogateescape=PROCEDURE,- +_Py_Delete=PROCEDURE,- +_Py_Dict=PROCEDURE,- +_Py_DictComp=PROCEDURE,- +_Py_DisplaySourceLine=PROCEDURE,- +_Py_DumpASCII=PROCEDURE,- +_Py_DumpDecimal=PROCEDURE,- +_Py_DumpHexadecimal=PROCEDURE,- +_Py_DumpPathConfig=PROCEDURE,- +_Py_DumpTraceback=PROCEDURE,- +_Py_DumpTracebackThreads=PROCEDURE,- +_Py_EllipsisObject=DATA,- +_Py_EncodeLocaleEx=PROCEDURE,- +_Py_EncodeLocaleRaw=PROCEDURE,- +_Py_EncodeUTF8Ex=PROCEDURE,- +_Py_ExceptHandler=PROCEDURE,- +_Py_Expr=PROCEDURE,- +_Py_Expression=PROCEDURE,- +_Py_ExtSlice=PROCEDURE,- +_Py_FalseStruct=DATA,- +_Py_FindEnvConfigValue=PROCEDURE,- +_Py_FinishPendingCalls=PROCEDURE,- +_Py_For=PROCEDURE,- +_Py_FormattedValue=PROCEDURE,- +_Py_FreeCharPArray=PROCEDURE,- +_Py_FunctionDef=PROCEDURE,- +_Py_FunctionType=PROCEDURE,- +_Py_GeneratorExp=PROCEDURE,- +_Py_GetAllocatedBlocks=PROCEDURE,- +_Py_GetConfigsAsDict=PROCEDURE,- +_Py_GetEnv=PROCEDURE,- +_Py_GetErrorHandler=PROCEDURE,- +_Py_GetForceASCII=PROCEDURE,- +_Py_GetLocaleconvNumeric=PROCEDURE,- +_Py_Gid_Converter=PROCEDURE,- +_Py_Global=PROCEDURE,- +_Py_HandleSystemExit=PROCEDURE,- +_Py_HasFileSystemDefaul1d82ugm$=DATA,- +_Py_HashBytes=PROCEDURE,- +_Py_HashDouble=PROCEDURE,- +_Py_HashPointer=PROCEDURE,- +_Py_HashRandomization_Fini=PROCEDURE,- +_Py_HashRandomization_Init=PROCEDURE,- +_Py_HashSecret=DATA,- +_Py_If=PROCEDURE,- +_Py_IfExp=PROCEDURE,- +_Py_Import=PROCEDURE,- +_Py_ImportFrom=PROCEDURE,- +_Py_Index=PROCEDURE,- +_Py_InitializeMain=PROCEDURE,- +_Py_Interactive=PROCEDURE,- +_Py_IsCoreInitialized=PROCEDURE,- +_Py_IsFinalizing=PROCEDURE,- +_Py_IsLocaleCoercionTarget=PROCEDURE,- +_Py_JoinedStr=PROCEDURE,- +_Py_KeyedHash=PROCEDURE,- +_Py_Lambda=PROCEDURE,- +_Py_LegacyLocaleDetected=PROCEDURE,- +_Py_List=PROCEDURE,- +_Py_ListComp=PROCEDURE,- +_Py_M__importlib_bootst3jkv519$=DATA,- +_Py_M__importlib_bootstrap=DATA,- +_Py_M__zipimport=DATA,- +_Py_Mangle=PROCEDURE,- +_Py_Module=PROCEDURE,- +_Py_Name=PROCEDURE,- +_Py_NamedExpr=PROCEDURE,- +_Py_NoneStruct=DATA,- +_Py_Nonlocal=PROCEDURE,- +_Py_NotImplementedStruct=DATA,- +_Py_PackageContext=DATA,- +_Py_Pass=PROCEDURE,- +_Py_PreInitializeFromConfig=PROCEDURE,- +_Py_PreInitializeFromPyArgv=PROCEDURE,- +_Py_PyAtExit=PROCEDURE,- +_Py_Raise=PROCEDURE,- +_Py_ResetForceASCII=PROCEDURE,- +_Py_RestoreSignals=PROCEDURE,- +_Py_Return=PROCEDURE,- +_Py_Set=PROCEDURE,- +_Py_SetComp=PROCEDURE,- +_Py_SetFileSystemEncoding=PROCEDURE,- +_Py_SetLocaleFromEnv=PROCEDURE,- +_Py_SetProgramFullPath=PROCEDURE,- +_Py_Sigset_Converter=PROCEDURE,- +_Py_Slice=PROCEDURE,- +_Py_SourceAsString=PROCEDURE,- +_Py_Starred=PROCEDURE,- +_Py_Subscript=PROCEDURE,- +_Py_Suite=PROCEDURE,- +_Py_SwappedOp=DATA,- +_Py_SymtableStringObjectFlags=PROCEDURE,- +_Py_TrueStruct=DATA,- +_Py_Try=PROCEDURE,- +_Py_Tuple=PROCEDURE,- +_Py_TypeIgnore=PROCEDURE,- +_Py_Uid_Converter=PROCEDURE,- +_Py_UnaryOp=PROCEDURE,- +_Py_UnhandledKeyboardInterrupt=DATA,- +_Py_VaBuildStack=PROCEDURE,- +_Py_VaBuildStack_SizeT=PROCEDURE,- +_Py_VaBuildValue_SizeT=PROCEDURE,- +_Py_While=PROCEDURE,- +_Py_With=PROCEDURE,- +_Py_Yield=PROCEDURE,- +_Py_YieldFrom=PROCEDURE,- +_Py_abstract_hack=DATA,- +_Py_add_one_to_index_C=PROCEDURE,- +_Py_add_one_to_index_F=PROCEDURE,- +_Py_alias=PROCEDURE,- +_Py_arg=PROCEDURE,- +_Py_arguments=PROCEDURE,- +_Py_ascii_whitespace=DATA,- +_Py_asdl_int_seq_new=PROCEDURE,- +_Py_asdl_seq_new=PROCEDURE,- +_Py_bytes_capitalize=PROCEDURE,- +_Py_bytes_contains=PROCEDURE,- +_Py_bytes_count=PROCEDURE,- +_Py_bytes_endswith=PROCEDURE,- +_Py_bytes_find=PROCEDURE,- +_Py_bytes_index=PROCEDURE,- +_Py_bytes_isalnum=PROCEDURE,- +_Py_bytes_isalpha=PROCEDURE,- +_Py_bytes_isascii=PROCEDURE,- +_Py_bytes_isdigit=PROCEDURE,- +_Py_bytes_islower=PROCEDURE,- +_Py_bytes_isspace=PROCEDURE,- +_Py_bytes_istitle=PROCEDURE,- +_Py_bytes_isupper=PROCEDURE,- +_Py_bytes_lower=PROCEDURE,- +_Py_bytes_maketrans=PROCEDURE,- +_Py_bytes_rfind=PROCEDURE,- +_Py_bytes_rindex=PROCEDURE,- +_Py_bytes_startswith=PROCEDURE,- +_Py_bytes_swapcase=PROCEDURE,- +_Py_bytes_title=PROCEDURE,- +_Py_bytes_upper=PROCEDURE,- +_Py_c_abs=PROCEDURE,- +_Py_c_diff=PROCEDURE,- +_Py_c_neg=PROCEDURE,- +_Py_c_pow=PROCEDURE,- +_Py_c_prod=PROCEDURE,- +_Py_c_quot=PROCEDURE,- +_Py_c_sum=PROCEDURE,- +_Py_capitalize__doc__=DATA,- +_Py_comprehension=PROCEDURE,- +_Py_convert_optional_to_ssize_t=PROCEDURE,- +_Py_count__doc__=DATA,- +_Py_ctype_table=DATA,- +_Py_ctype_tolower=DATA,- +_Py_ctype_toupper=DATA,- +_Py_device_encoding=PROCEDURE,- +_Py_dg_dtoa=PROCEDURE,- +_Py_dg_freedtoa=PROCEDURE,- +_Py_dg_infinity=PROCEDURE,- +_Py_dg_stdnan=PROCEDURE,- +_Py_dg_strtod=PROCEDURE,- +_Py_dup=PROCEDURE,- +_Py_endswith__doc__=DATA,- +_Py_find__doc__=DATA,- +_Py_fopen=PROCEDURE,- +_Py_fopen_obj=PROCEDURE,- +_Py_fstat=PROCEDURE,- +_Py_fstat_noraise=PROCEDURE,- +_Py_get_blocking=PROCEDURE,- +_Py_get_env_flag=PROCEDURE,- +_Py_get_inheritable=PROCEDURE,- +_Py_get_xoption=PROCEDURE,- +_Py_gitidentifier=PROCEDURE,- +_Py_gitversion=PROCEDURE,- +_Py_hashtable_clear=PROCEDURE,- +_Py_hashtable_compare_direct=PROCEDURE,- +_Py_hashtable_copy=PROCEDURE,- +_Py_hashtable_destroy=PROCEDURE,- +_Py_hashtable_foreach=PROCEDURE,- +_Py_hashtable_get=PROCEDURE,- +_Py_hashtable_get_entry=PROCEDURE,- +_Py_hashtable_hash_ptr=PROCEDURE,- +_Py_hashtable_new=PROCEDURE,- +_Py_hashtable_new_full=PROCEDURE,- +_Py_hashtable_pop=PROCEDURE,- +_Py_hashtable_set=PROCEDURE,- +_Py_hashtable_size=PROCEDURE,- +_Py_index__doc__=DATA,- +_Py_isalnum__doc__=DATA,- +_Py_isalpha__doc__=DATA,- +_Py_isascii__doc__=DATA,- +_Py_isdigit__doc__=DATA,- +_Py_islower__doc__=DATA,- +_Py_isspace__doc__=DATA,- +_Py_istitle__doc__=DATA,- +_Py_isupper__doc__=DATA,- +_Py_keyword=PROCEDURE,- +_Py_lower__doc__=DATA,- +_Py_maketrans__doc__=DATA,- +_Py_normalize_encoding=PROCEDURE,- +_Py_open=PROCEDURE,- +_Py_open_noraise=PROCEDURE,- +_Py_parse_inf_or_nan=PROCEDURE,- +_Py_path_config=DATA,- +_Py_read=PROCEDURE,- +_Py_rfind__doc__=DATA,- +_Py_rindex__doc__=DATA,- +_Py_set_blocking=PROCEDURE,- +_Py_set_inheritable=PROCEDURE,- +_Py_set_inheritable_async_safe=PROCEDURE,- +_Py_startswith__doc__=DATA,- +_Py_stat=PROCEDURE,- +_Py_str_to_int=PROCEDURE,- +_Py_strhex=PROCEDURE,- +_Py_strhex_bytes=PROCEDURE,- +_Py_strhex_bytes_with_sep=PROCEDURE,- +_Py_strhex_with_sep=PROCEDURE,- +_Py_string_to_number_wi1h7jsg3$=PROCEDURE,- +_Py_swapcase__doc__=DATA,- +_Py_title__doc__=DATA,- +_Py_tracemalloc_config=DATA,- +_Py_upper__doc__=DATA,- +_Py_wfopen=PROCEDURE,- +_Py_wgetcwd=PROCEDURE,- +_Py_withitem=PROCEDURE,- +_Py_wreadlink=PROCEDURE,- +_Py_wrealpath=PROCEDURE,- +_Py_write=PROCEDURE,- +_Py_write_noraise=PROCEDURE,- +vms__StdioReadline=PROCEDURE,- +g_vms_select=PROCEDURE,- +round_imp=PROCEDURE,- +read_pipe_bytes=PROCEDURE- +) \ No newline at end of file diff --git a/opt/python3.opt b/opt/python3.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L3B5dGhvbjMub3B0 --- /dev/null +++ b/opt/python3.opt @@ -0,0 +1,2 @@ +python$build_out:[000000]python$shr.exe/share +sys$library:pthread$rtl.exe/share diff --git a/opt/readline.opt b/opt/readline.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L3JlYWRsaW5lLm9wdA== --- /dev/null +++ b/opt/readline.opt @@ -0,0 +1,6 @@ +oss$root:[lib]libreadline32.olb/lib +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit_readline=PROCEDURE) diff --git a/opt/select.opt b/opt/select.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L3NlbGVjdC5vcHQ= --- /dev/null +++ b/opt/select.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit_select=PROCEDURE) diff --git a/opt/syslog.opt b/opt/syslog.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L3N5c2xvZy5vcHQ= --- /dev/null +++ b/opt/syslog.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit_syslog=PROCEDURE) diff --git a/opt/unicodedata.opt b/opt/unicodedata.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L3VuaWNvZGVkYXRhLm9wdA== --- /dev/null +++ b/opt/unicodedata.opt @@ -0,0 +1,5 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit_unicodedata=PROCEDURE) diff --git a/opt/xxlimited.opt b/opt/xxlimited.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L3h4bGltaXRlZC5vcHQ= --- /dev/null +++ b/opt/xxlimited.opt @@ -0,0 +1,4 @@ +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit_xxlimited=PROCEDURE) \ No newline at end of file diff --git a/opt/zlib.opt b/opt/zlib.opt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_b3B0L3psaWIub3B0 --- /dev/null +++ b/opt/zlib.opt @@ -0,0 +1,6 @@ +oss$root:[lib]libz32.olb/lib +sys$library:pthread$rtl.exe/share +python$build_out:[000000]python$shr.exe/share +GSMATCH=LEQUAL,1,0 +CASE_SENSITIVE=YES +SYMBOL_VECTOR=(PyInit_zlib=PROCEDURE) diff --git a/requirements.txt b/requirements.txt new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_cmVxdWlyZW1lbnRzLnR4dA== --- /dev/null +++ b/requirements.txt @@ -0,0 +1,92 @@ +apispec +apispec_webframeworks +async_generator +attrs +Automat +betamax +blinker +bottle +brotli +cffi +chardet +cheroot +CherryPy +click +constantly +cryptography +cryptography_vectors +cython +decorator +elementpath +flasgger +Flask +flex +freezegun +ftputil +httpbin +hypothesis +idna +incremental +iniconfig +iso8601 +itsdangerous +jaraco.classes +jaraco.collections +jaraco.functools +jaraco.text +Jinja2 +jsonpointer +jsonschema +MarkupSafe +marshmallow +mistune +mock +more_itertools +numpy +outcome +packaging +path +pika +pluggy +portend +prance +pretend +py +pyasn1 +pyasn1_modules +pycparser +Pygments +pyparsing +pyrsistent +pytest +pytest_flask +pytest_httpbin +pytest_httpserver +pytest_localserver +python_dateutil +pytz +PyYAML +raven +requests +responses +rfc3987 +semver +service_identity +setuptools_scm +simplejson +six +sniffio +sortedcontainers +strict_rfc3339 +suds_py3 +sure +tempora +toml +trustme +urllib3 +validate_email +wcwidth +Werkzeug +wheel +xmlschema +zc.lockfile diff --git a/vms/create_kit_files.py b/vms/create_kit_files.py new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL2NyZWF0ZV9raXRfZmlsZXMucHk= --- /dev/null +++ b/vms/create_kit_files.py @@ -0,0 +1,191 @@ +import os +import re +import sys + +def spec_replacer(match): + if match.group(0) == ' ': + return '^_' + return '^' + match.group(0) + +def create_content(type, major, minor, level, edit): + python_dir = '/python$root' + python_dir_len = len(python_dir) + all_dirs = [] + all_files = [] + spec_pattern = re.compile('([. ^+()])') + for root, dirs, files in os.walk(python_dir): + inner_dirs = list(filter(lambda x: x != '', spec_pattern.sub(spec_replacer, root[python_dir_len:]).split('/'))) + kit_dir = '[' + '.'.join(['python'] + inner_dirs) + ']' + all_dirs.append('directory "' + kit_dir + '" version limit 1;') + for file in files: + file_name, file_ext = os.path.splitext(file) + if file_ext == '': + file_ext = '.' + file_name = spec_pattern.sub(spec_replacer, file_name) + all_files.append('file "' + \ + kit_dir + file_name + file_ext + \ + '" source "' + \ + kit_dir + file_name + file_ext + \ + '";') + try: + dirs.remove('__pycache__') + except: + pass + + kit_template = '''-- +-- (C) Copyright 2020 VMS Software Inc. +-- +product VSI I64VMS PYTHON {type}{major}.{minor}-{level}{edit} FULL ; + +-- +-- Execute the preconfigure procedure +-- + execute preconfigure "@pcsi$source:[python]python$pcsi_preconfigure.com" uses [python]python$pcsi_preconfigure.com ; + +-- +-- Make sure VMS V8.4 or above is installed +-- + if ((not <software VSI I64VMS VMS version minimum V8.4>) and (not <software HP I64VMS VMS version minimum V8.4>)) ; + error NO_MIN_VMS abort ; + end if ; + +-- +-- ODS-5 Disk(s) should be available on this system +-- + if (<logical name PYTHON$ODS5_AVAIL equals 0 table LNM$JOB>) ; + error NO_ODS5_DISKS ; + end if ; + +-- +-- Directories... +-- + + {dirs} + +-- +-- Files... +-- + + {files} + +-- +-- Start-up and shutdown scripts +-- + file "[sys$startup]python$define_root.com" source "[python]python$define_root.com"; + file "[sys$startup]python$startup.com" source "[python]python$startup.com"; + file "[sys$startup]python$shutdown.com" source "[python]python$shutdown.com"; + + +-- +-- Release notes +-- +-- (none) + + +-- +-- Do post-install tasks +-- + execute postinstall "@pcsi$source:[python]python$define_root.com" interactive uses "[python]python$define_root.com" ; + +-- +-- Okay, done. Tell the user what to do next. +-- + information POST_INSTALL phase after with helptext; + +-- +-- All done +-- + +end product; +''' + # type, major, minor, level, edit must be the same as in pythlib.pcsi$text + kit_content = kit_template.format( + type=type, + major=major, + minor=minor, + level=level, + edit=edit, + dirs='\n '.join(all_dirs), + files='\n '.join(all_files)) + with open('python.pcsi$desc', 'w') as file: + file.write(kit_content) + + text_template = '''=product VSI I64VMS PYTHON {type}{major}.{minor}-{level}{edit} full +1 'PRODUCT +=prompt Python for OpenVMS is based on Python Version 3.8.2 ({edit}) + +1 'PRODUCER +=prompt VSI Software Inc. + +1 'NOTICE +=prompt (C) Copyright 2020 VMS Software Inc. + +1 NO_MIN_VMS +=prompt Minimum OpenVMS software version not found on this system, abort instalation +This kit requires a minimum of OpenVMS I64 V8.4. + +1 NO_ODS5_DISKS +=prompt ODS-5 disk(s) not found on this system, abort installation +This kit requires an ODS-5 disk to be correctly installed in this system. + +1 POST_INSTALL +=prompt Post-installation tasks are required. +To define the Python runtime at system boot time, add the +following lines to SYS$MANAGER:SYSTARTUP_VMS.COM: + + $ file := SYS$STARTUP:PYTHON$STARTUP.COM + $ if f$search("''file'") .nes. "" then @'file' + +To shutdown the Python runtime at system shutdown time, add the +following lines to SYS$MANAGER:SYSHUTDWN.COM: + + $ file := SYS$STARTUP:PYTHON$SHUTDOWN.COM + $ if f$search("''file'") .nes. "" then @'file' + + +''' + text_content = text_template.format( + type=type, + major=major, + minor=minor, + level=level, + edit=edit, + dirs='\n '.join(all_dirs), + files='\n '.join(all_files)) + with open('python.pcsi$text', 'w') as file: + file.write(text_content) + +if __name__ == "__main__": + + import getopt + import datetime + + opts, args = getopt.getopt(sys.argv[1:], '', ['type=', 'major=', 'minor=', 'level=', 'edit=']) + + type = 'A' + major = '3' + minor = '8' + level = '2' + edit = '' # 'd' + datetime.date.today().strftime('%Y%m%d') + + for opt, optarg in opts: + if opt in ['--type']: + type = optarg + elif opt in ['--major']: + major = optarg + elif opt in ['--minor']: + minor = optarg + elif opt in ['--level']: + level = optarg + elif opt in ['--edit']: + edit = optarg + else: + print('Unknown option %s' % opt) + + create_content( + type, + major, + minor, + level, + edit, + ) diff --git a/vms/exec64.c b/vms/exec64.c new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL2V4ZWM2NC5j --- /dev/null +++ b/vms/exec64.c @@ -0,0 +1,130 @@ +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> +#include <assert.h> + +extern __char_ptr32 _strdup32(__const_char_ptr64); +extern __void_ptr32 _malloc32(size_t); + +int execve64(const __char_ptr64 file_spec, __char_ptr64 argv[], __char_ptr64 envp[]) +{ + int i, n, m; + __char_ptr_ptr32 argv32 = NULL; + __char_ptr_ptr32 envp32 = NULL; + int rv; + n = 0; + + while (argv[n]) { + n++; + } + + argv32 = (__char_ptr_ptr32) _malloc32((n + 1) * sizeof(char *)); + assert(argv32); + + for (i = 0; i < n; i++) { + argv32[i] = _strdup32(argv[i]); + assert(argv32[i]); + } + + argv32[n] = NULL; + + m = 0; + + while (envp[m]) { + m++; + } + + envp32 = (__char_ptr_ptr32) _malloc32((m + 1) * sizeof(char *)); + assert(envp32); + + for (i = 0; i < m; i++) { + envp32[i] = _strdup32(envp[i]); + assert(envp32[i]); + } + + envp32[m] = NULL; + + rv = execve(file_spec, argv32, envp32); + + /* If all is well we will not get here, but just in case the execv() failed let's have a bit of a tidy-up... */ + for (i = 0; i < n; i++) { + free(argv32[i]); + } + free(argv32); + + for (i = 0; i < m; i++) { + free(envp32[i]); + } + free(envp32); + + /* ... and return our status */ + return (rv); +} + +int execv64(const __char_ptr64 file_spec, __char_ptr64 argv[]) +{ + int i, n; + __char_ptr_ptr32 argv32 = NULL; + int rv; + n = 0; + + while (argv[n]) { + n++; + } + + argv32 = (__char_ptr_ptr32) _malloc32((n + 1) * sizeof(char *)); + assert(argv32); + + for (i = 0; i < n; i++) { + argv32[i] = _strdup32(argv[i]) + assert(argv32[i]); + } + + argv32[n] = NULL; + + rv = execv(file_spec, argv32); + + /* If all is well we will not get here, but just in case the execv() failed let's have a bit of a tidy-up... */ + for (i = 0; i < n; i++) { + free(argv32[i]); + } + free(argv32); + + /* ... and return our status */ + return (rv); +} + + +int execvp64(const __char_ptr64 file_spec, __char_ptr64 argv[]) +{ + int i, n; + __char_ptr_ptr32 argv32 = NULL; + int rv; + n = 0; + + while (argv[n]) { + n++; + } + + argv32 = (__char_ptr_ptr32) _malloc32((n + 1) * sizeof(char *)); + assert(argv32); + + for (i = 0; i < n; i++) { + argv32[i] = _strdup32(argv[i]) + assert(argv32[i]); + } + + argv32[n] = NULL; + + rv = execvp(file_spec, argv32); + + /* If all is well we will not get here, but just in case the execv() failed let's have a bit of a tidy-up... */ + for (i = 0; i < n; i++) { + free(argv32[i]); + } + free(argv32); + + /* ... and return our status */ + return (rv); +} diff --git a/vms/format_macros.h b/vms/format_macros.h new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL2Zvcm1hdF9tYWNyb3MuaA== --- /dev/null +++ b/vms/format_macros.h @@ -0,0 +1,171 @@ +/* ANSI/ISO C99 says these should not be visible in C++ unless + explicitly requested. */ + +#if !defined(__cplusplus) || defined(__STDC_FORMAT_MACROS) + +#define PRId8 "hhd" +#define PRId16 "hd" +#define PRId32 "ld" +#define PRId64 "lld" +#define PRIdLEAST8 "hhd" +#define PRIdLEAST16 "hd" +#define PRIdLEAST32 "d" +#define PRIdLEAST64 "lld" +#define PRIdFAST8 "hhd" +#define PRIdFAST16 "d" +#define PRIdFAST32 "d" +#define PRIdFAST64 "lld" +#define PRIdMAX "lld" +#define PRIdPTR "ld" + +#define PRIi8 "hhi" +#define PRIi16 "hi" +#define PRIi32 "li" +#define PRIi64 "lli" +#define PRIiLEAST8 "hhi" +#define PRIiLEAST16 "hi" +#define PRIiLEAST32 "i" +#define PRIiLEAST64 "lli" +#define PRIiFAST8 "hhi" +#define PRIiFAST16 "i" +#define PRIiFAST32 "i" +#define PRIiFAST64 "lli" +#define PRIiMAX "lli" +#define PRIiPTR "li" + +#define PRIo8 "hho" +#define PRIo16 "ho" +#define PRIo32 "lo" +#define PRIo64 "llo" +#define PRIoLEAST8 "hho" +#define PRIoLEAST16 "ho" +#define PRIoLEAST32 "o" +#define PRIoLEAST64 "llo" +#define PRIoFAST8 "hho" +#define PRIoFAST16 "o" +#define PRIoFAST32 "o" +#define PRIoFAST64 "llo" +#define PRIoMAX "llo" +#define PRIoPTR "lo" + +#define PRIu8 "hhu" +#define PRIu16 "hu" +#define PRIu32 "lu" +#define PRIu64 "llu" +#define PRIuLEAST8 "hhu" +#define PRIuLEAST16 "hu" +#define PRIuLEAST32 "u" +#define PRIuLEAST64 "llu" +#define PRIuFAST8 "hhu" +#define PRIuFAST16 "u" +#define PRIuFAST32 "u" +#define PRIuFAST64 "llu" +#define PRIuMAX "llu" +#define PRIuPTR "lu" + +#define PRIx8 "hhx" +#define PRIx16 "hx" +#define PRIx32 "lx" +#define PRIx64 "llx" +#define PRIxLEAST8 "hhx" +#define PRIxLEAST16 "hx" +#define PRIxLEAST32 "x" +#define PRIxLEAST64 "llx" +#define PRIxFAST8 "hhx" +#define PRIxFAST16 "x" +#define PRIxFAST32 "x" +#define PRIxFAST64 "llx" +#define PRIxMAX "llx" +#define PRIxPTR "lx" + +#define PRIX8 "hhX" +#define PRIX16 "hX" +#define PRIX32 "lX" +#define PRIX64 "llX" +#define PRIXLEAST8 "hhX" +#define PRIXLEAST16 "hX" +#define PRIXLEAST32 "X" +#define PRIXLEAST64 "llX" +#define PRIXFAST8 "hhX" +#define PRIXFAST16 "X" +#define PRIXFAST32 "X" +#define PRIXFAST64 "llX" +#define PRIXMAX "llX" +#define PRIXPTR "lX" + +#define SCNd8 "hhd" +#define SCNd16 "hd" +#define SCNd32 "ld" +#define SCNd64 "lld" +#define SCNdLEAST8 "hhd" +#define SCNdLEAST16 "hd" +#define SCNdLEAST32 "d" +#define SCNdLEAST64 "lld" +#define SCNdFAST8 "hhd" +#define SCNdFAST16 "d" +#define SCNdFAST32 "d" +#define SCNdFAST64 "lld" +#define SCNdMAX "lld" +#define SCNdPTR "ld" + +#define SCNi8 "hhi" +#define SCNi16 "hi" +#define SCNi32 "li" +#define SCNi64 "lli" +#define SCNiLEAST8 "hhi" +#define SCNiLEAST16 "hi" +#define SCNiLEAST32 "i" +#define SCNiLEAST64 "lli" +#define SCNiFAST8 "hhi" +#define SCNiFAST16 "i" +#define SCNiFAST32 "i" +#define SCNiFAST64 "lli" +#define SCNiMAX "lli" +#define SCNiPTR "li" + +#define SCNo8 "hho" +#define SCNo16 "ho" +#define SCNo32 "lo" +#define SCNo64 "llo" +#define SCNoLEAST8 "hho" +#define SCNoLEAST16 "ho" +#define SCNoLEAST32 "o" +#define SCNoLEAST64 "llo" +#define SCNoFAST8 "hho" +#define SCNoFAST16 "o" +#define SCNoFAST32 "o" +#define SCNoFAST64 "llo" +#define SCNoMAX "llo" +#define SCNoPTR "lo" + +#define SCNu8 "hhu" +#define SCNu16 "hu" +#define SCNu32 "lu" +#define SCNu64 "llu" +#define SCNuLEAST8 "hhu" +#define SCNuLEAST16 "hu" +#define SCNuLEAST32 "u" +#define SCNuLEAST64 "llu" +#define SCNuFAST8 "hhu" +#define SCNuFAST16 "u" +#define SCNuFAST32 "u" +#define SCNuFAST64 "llu" +#define SCNuMAX "llu" +#define SCNuPTR "lu" + +#define SCNx8 "hhx" +#define SCNx16 "hx" +#define SCNx32 "lx" +#define SCNx64 "llx" +#define SCNxLEAST8 "hhx" +#define SCNxLEAST16 "hx" +#define SCNxLEAST32 "x" +#define SCNxLEAST64 "llx" +#define SCNxFAST8 "hhx" +#define SCNxFAST16 "x" +#define SCNxFAST32 "x" +#define SCNxFAST64 "llx" +#define SCNxMAX "llx" +#define SCNxPTR "lx" + +#endif /* !__cplusplus || __STDC_FORMAT_MACROS */ diff --git a/vms/make_kit.com b/vms/make_kit.com new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL21ha2Vfa2l0LmNvbQ== --- /dev/null +++ b/vms/make_kit.com @@ -0,0 +1,28 @@ +$ set verify +$ +$ delete/log/noconf vsi-i64vms-python-*.pcsi;* +$ delete/log/noconf vsi-i64vms-python-*.pcsi$compressed;* +$ +$ com_nam = f$environment("procedure") +$ com_dir = f$parse(com_nam,,,"directory") +$ com_dev = f$parse(com_nam,,,"device") +$ out_pat = com_dev + com_dir - "vms]" + "out.]" +$ +$ product package python - + /source=python.pcsi$desc - + /destination=[] - + /material=('out_pat') - + /format=sequential - + /opt=noconf - + /log - + /producer=VSI +$ +$ product copy python/source=[]/dest=[]/format=compressed/opt=noconf +$ purge/log +$ +$ purge/log [...] +$ +$ set noverify +$ +$ exit + diff --git a/vms/py_vms.h b/vms/py_vms.h new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3B5X3Ztcy5o --- /dev/null +++ b/vms/py_vms.h @@ -0,0 +1,37 @@ +#ifndef PLATFORM +#define PLATFORM "OpenVMS" +#endif + +#ifndef ABIFLAGS +#define ABIFLAGS "" +#endif + +#ifndef SOABI +#define SOABI "cpython-38-ia64-openvms" +#endif + +#ifndef PYTHONPATH +#define PYTHONPATH ":plat-openvms" +#endif + +#ifndef PREFIX +#define PREFIX "/python$root" +#endif + +#ifndef EXEC_PREFIX +#define EXEC_PREFIX "/python$root" +#endif + +#ifndef VERSION +#define VERSION "3.8" +#endif + +#ifndef VPATH +#define VPATH "" +#endif + +#define _POSIX_EXIT 1 + +#define SIGBUS 10 + +#define O_BINARY 0100 diff --git a/vms/pyconfig.h b/vms/pyconfig.h new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3B5Y29uZmlnLmg= --- /dev/null +++ b/vms/pyconfig.h @@ -0,0 +1,1785 @@ +#include "py_vms.h" + +/* pyconfig.h Created from Python 3.5 for VMS source */ + + +#ifndef Py_PYCONFIG_H +#define Py_PYCONFIG_H + + +/* Define if building universal (internal helper macro) */ +#undef AC_APPLE_UNIVERSAL_BUILD + +/* Define for AIX if your compiler is a genuine IBM xlC/xlC_r and you want + support for AIX C++ shared extension modules. */ +#undef AIX_GENUINE_CPLUSPLUS + +/* Alternative SOABI used in debug build to load C extensions built in release + mode */ +#undef ALT_SOABI + +/* The Android API level. */ +#undef ANDROID_API_LEVEL + +/* Define if C doubles are 64-bit IEEE 754 binary format, stored in ARM + mixed-endian order (byte order 45670123) */ +#undef DOUBLE_IS_ARM_MIXED_ENDIAN_IEEE754 + +/* Define if C doubles are 64-bit IEEE 754 binary format, stored with the most + significant byte first */ +#undef DOUBLE_IS_BIG_ENDIAN_IEEE754 + +/* Define if C doubles are 64-bit IEEE 754 binary format, stored with the + least significant byte first */ +#define DOUBLE_IS_LITTLE_ENDIAN_IEEE754 1 + +/* Define if --enable-ipv6 is specified */ +#define ENABLE_IPV6 1 + +/* Define to 1 if your system stores words within floats with the most + significant word first */ +#undef FLOAT_WORDS_BIGENDIAN + +/* Define if flock needs to be linked with bsd library. */ +#undef FLOCK_NEEDS_LIBBSD + +/* Define if getpgrp() must be called as getpgrp(0). */ +#undef GETPGRP_HAVE_ARG + +/* Define if gettimeofday() does not have second (timezone) argument This is + the case on Motorola V4 (R40V4.2) */ +#undef GETTIMEOFDAY_NO_TZ + +/* Define to 1 if you have the `accept4' function. */ +#define HAVE_ACCEPT4 1 + +/* Define to 1 if you have the `acosh' function. */ +#define HAVE_ACOSH 1 + +/* struct addrinfo (netdb.h) */ +#define HAVE_ADDRINFO 1 + +/* Define to 1 if you have the `alarm' function. */ +#define HAVE_ALARM 1 + +/* Define if aligned memory access is required */ +#undef HAVE_ALIGNED_REQUIRED + +/* Define to 1 if you have the <alloca.h> header file. */ +#undef HAVE_ALLOCA_H + +#define alloca __ALLOCA + +/* Define this if your time.h defines altzone. */ +#undef HAVE_ALTZONE + +/* Define to 1 if you have the `asinh' function. */ +#define HAVE_ASINH 1 + +/* Define to 1 if you have the <asm/types.h> header file. */ +#define HAVE_ASM_TYPES_H 1 + +/* Define to 1 if you have the `atanh' function. */ +#define HAVE_ATANH 1 + +/* Define to 1 if you have the `bind_textdomain_codeset' function. */ +#define HAVE_BIND_TEXTDOMAIN_CODESET 1 + +/* Define to 1 if you have the <bluetooth/bluetooth.h> header file. */ +#undef HAVE_BLUETOOTH_BLUETOOTH_H + +/* Define to 1 if you have the <bluetooth.h> header file. */ +#undef HAVE_BLUETOOTH_H + +/* Define if mbstowcs(NULL, "text", 0) does not return the number of wide + chars that would be converted. */ +#undef HAVE_BROKEN_MBSTOWCS + +/* Define if nice() returns success/failure instead of the new priority. */ +#undef HAVE_BROKEN_NICE + +/* Define if the system reports an invalid PIPE_BUF value. */ +#undef HAVE_BROKEN_PIPE_BUF + +/* Define if poll() sets errno on invalid file descriptors. */ +#undef HAVE_BROKEN_POLL + +/* Define if the Posix semaphores do not work on your system */ +#undef HAVE_BROKEN_POSIX_SEMAPHORES + +/* Define if pthread_sigmask() does not work on your system. */ +#undef HAVE_BROKEN_PTHREAD_SIGMASK + +/* define to 1 if your sem_getvalue is broken. */ +#undef HAVE_BROKEN_SEM_GETVALUE + +/* Define if `unsetenv` does not return an int. */ +#define HAVE_BROKEN_UNSETENV 1 + +/* Has builtin atomics */ +#undef HAVE_BUILTIN_ATOMIC + +/* Define this if you have the type _Bool. */ +#define HAVE_C99_BOOL 1 + +/* Define to 1 if you have the 'chflags' function. */ +#undef HAVE_CHFLAGS + +/* Define to 1 if you have the `chown' function. */ +#define HAVE_CHOWN 1 + +/* Define if you have the 'chroot' function. */ +#undef HAVE_CHROOT + +/* Define to 1 if you have the `clock' function. */ +#define HAVE_CLOCK 1 + +/* Define to 1 if you have the `clock_getres' function. */ +#define HAVE_CLOCK_GETRES 1 + +/* Define to 1 if you have the `clock_gettime' function. */ +#define HAVE_CLOCK_GETTIME 1 + +/* Define to 1 if you have the `clock_settime' function. */ +#undef HAVE_CLOCK_SETTIME + +/* Define if the C compiler supports computed gotos. */ +#undef HAVE_COMPUTED_GOTOS + +/* Define to 1 if you have the `confstr' function. */ +#define HAVE_CONFSTR 1 + +/* Define to 1 if you have the <conio.h> header file. */ +#undef HAVE_CONIO_H + +/* Define to 1 if you have the `copysign' function. */ +#define HAVE_COPYSIGN 1 + +/* Define to 1 if you have the `copy_file_range' function. */ +#undef HAVE_COPY_FILE_RANGE + +/* Define to 1 if you have the <crypt.h> header file. */ +#undef HAVE_CRYPT_H + +/* Define if you have the crypt_r() function. */ +#undef HAVE_CRYPT_R + +/* Define to 1 if you have the `ctermid' function. */ +#define HAVE_CTERMID 1 + +/* Define if you have the 'ctermid_r' function. */ +#undef HAVE_CTERMID_R + +/* Define if you have the 'filter' function. */ +#undef HAVE_CURSES_FILTER + +/* Define to 1 if you have the <curses.h> header file. */ +#undef HAVE_CURSES_H + +/* Define if you have the 'has_key' function. */ +#undef HAVE_CURSES_HAS_KEY + +/* Define if you have the 'immedok' function. */ +#undef HAVE_CURSES_IMMEDOK + +/* Define if you have the 'is_pad' function or macro. */ +#undef HAVE_CURSES_IS_PAD + +/* Define if you have the 'is_term_resized' function. */ +#undef HAVE_CURSES_IS_TERM_RESIZED + +/* Define if you have the 'resizeterm' function. */ +#undef HAVE_CURSES_RESIZETERM + +/* Define if you have the 'resize_term' function. */ +#undef HAVE_CURSES_RESIZE_TERM + +/* Define if you have the 'syncok' function. */ +#undef HAVE_CURSES_SYNCOK + +/* Define if you have the 'typeahead' function. */ +#undef HAVE_CURSES_TYPEAHEAD + +/* Define if you have the 'use_env' function. */ +#undef HAVE_CURSES_USE_ENV + +/* Define if you have the 'wchgat' function. */ +#undef HAVE_CURSES_WCHGAT + +/* Define to 1 if you have the declaration of `isfinite', and to 0 if you + don't. */ +#undef HAVE_DECL_ISFINITE + +/* Define to 1 if you have the declaration of `isinf', and to 0 if you don't. + */ +#undef HAVE_DECL_ISINF + +/* Define to 1 if you have the declaration of `isnan', and to 0 if you don't. + */ +#define HAVE_DECL_ISNAN 1 + +/* Define to 1 if you have the declaration of `RTLD_DEEPBIND', and to 0 if you + don't. */ +#undef HAVE_DECL_RTLD_DEEPBIND + +/* Define to 1 if you have the declaration of `RTLD_GLOBAL', and to 0 if you + don't. */ +#undef HAVE_DECL_RTLD_GLOBAL + +/* Define to 1 if you have the declaration of `RTLD_LAZY', and to 0 if you + don't. */ +#undef HAVE_DECL_RTLD_LAZY + +/* Define to 1 if you have the declaration of `RTLD_LOCAL', and to 0 if you + don't. */ +#undef HAVE_DECL_RTLD_LOCAL + +/* Define to 1 if you have the declaration of `RTLD_MEMBER', and to 0 if you + don't. */ +#undef HAVE_DECL_RTLD_MEMBER + +/* Define to 1 if you have the declaration of `RTLD_NODELETE', and to 0 if you + don't. */ +#undef HAVE_DECL_RTLD_NODELETE + +/* Define to 1 if you have the declaration of `RTLD_NOLOAD', and to 0 if you + don't. */ +#undef HAVE_DECL_RTLD_NOLOAD + +/* Define to 1 if you have the declaration of `RTLD_NOW', and to 0 if you + don't. */ +#undef HAVE_DECL_RTLD_NOW + +/* Define to 1 if you have the declaration of `tzname', and to 0 if you don't. + */ +#undef HAVE_DECL_TZNAME + +/* Define to 1 if you have the device macros. */ +#undef HAVE_DEVICE_MACROS + +/* Define to 1 if you have the /dev/ptc device file. */ +#undef HAVE_DEV_PTC + +/* Define to 1 if you have the /dev/ptmx device file. */ +#undef HAVE_DEV_PTMX + +/* Define to 1 if you have the <direct.h> header file. */ +#undef HAVE_DIRECT_H + +/* Define to 1 if the dirent structure has a d_type field */ +#undef HAVE_DIRENT_D_TYPE + +/* Define to 1 if you have the <dirent.h> header file, and it defines `DIR'. + */ +#define HAVE_DIRENT_H 1 + +/* Define if you have the 'dirfd' function or macro. */ +#undef HAVE_DIRFD + +/* Define to 1 if you have the <dlfcn.h> header file. */ +#define HAVE_DLFCN_H 1 + +/* Define to 1 if you have the `dlopen' function. */ +#define HAVE_DLOPEN 1 + +/* Define to 1 if you have the `dup2' function. */ +#define HAVE_DUP2 1 + +/* Define to 1 if you have the `dup3' function. */ +#undef HAVE_DUP3 + +/* Defined when any dynamic module loading is enabled. */ +#define HAVE_DYNAMIC_LOADING 1 + +/* Define to 1 if you have the <endian.h> header file. */ +#define HAVE_ENDIAN_H 1 + +/* Define if you have the 'epoll' functions. */ +#undef HAVE_EPOLL + +/* Define if you have the 'epoll_create1' function. */ +#undef HAVE_EPOLL_CREATE1 + +/* Define to 1 if you have the `erf' function. */ +#define HAVE_ERF 1 + +/* Define to 1 if you have the `erfc' function. */ +#define HAVE_ERFC 1 + +/* Define to 1 if you have the <errno.h> header file. */ +#define HAVE_ERRNO_H 1 + +/* Define to 1 if you have the `execv' function. */ +#define HAVE_EXECV 1 + +/* Define to 1 if you have the `explicit_bzero' function. */ +#undef HAVE_EXPLICIT_BZERO + +/* Define to 1 if you have the `explicit_memset' function. */ +#undef HAVE_EXPLICIT_MEMSET + +/* Define to 1 if you have the `expm1' function. */ +#define HAVE_EXPM1 1 + +/* Define to 1 if you have the `faccessat' function. */ +#undef HAVE_FACCESSAT + +/* Define if you have the 'fchdir' function. */ +#undef HAVE_FCHDIR + +/* Define to 1 if you have the `fchmod' function. */ +#define HAVE_FCHMOD 1 + +/* Define to 1 if you have the `fchmodat' function. */ +#undef HAVE_FCHMODAT + +/* Define to 1 if you have the `fchown' function. */ +#define HAVE_FCHOWN 1 + +/* Define to 1 if you have the `fchownat' function. */ +#undef HAVE_FCHOWNAT + +/* Define to 1 if you have the <fcntl.h> header file. */ +#define HAVE_FCNTL_H 1 + +/* Define if you have the 'fdatasync' function. */ +#undef HAVE_FDATASYNC + +/* Define to 1 if you have the `fdopendir' function. */ +#undef HAVE_FDOPENDIR + +/* Define to 1 if you have the `fdwalk' function. */ +#undef HAVE_FDWALK + +/* Define to 1 if you have the `fexecve' function. */ +#undef HAVE_FEXECVE + +/* Define to 1 if you have the `finite' function. */ +#undef HAVE_FINITE + +/* Define to 1 if you have the `flock' function. */ +#undef HAVE_FLOCK + +/* Define to 1 if you have the `fork' function. */ +#undef HAVE_FORK + +/* Define to 1 if you have the `forkpty' function. */ +#undef HAVE_FORKPTY + +/* Define to 1 if you have the `fpathconf' function. */ +#define HAVE_FPATHCONF 1 + +/* Define to 1 if you have the `fseek64' function. */ +#undef HAVE_FSEEK64 + +/* Define to 1 if you have the `fseeko' function. */ +#define HAVE_FSEEKO 1 + +/* Define to 1 if you have the `fstatat' function. */ +#undef HAVE_FSTATAT + +/* Define to 1 if you have the `fstatvfs' function. */ +#define HAVE_FSTATVFS 1 + +/* Define if you have the 'fsync' function. */ +#define HAVE_FSYNC 1 + +/* Define to 1 if you have the `ftell64' function. */ +#undef HAVE_FTELL64 + +/* Define to 1 if you have the `ftello' function. */ +#define HAVE_FTELLO 1 + +/* Define to 1 if you have the `ftime' function. */ +#define HAVE_FTIME 1 + +/* Define to 1 if you have the `ftruncate' function. */ +#define HAVE_FTRUNCATE 1 + +/* Define to 1 if you have the `futimens' function. */ +#undef HAVE_FUTIMENS + +/* Define to 1 if you have the `futimes' function. */ +#undef HAVE_FUTIMES + +/* Define to 1 if you have the `futimesat' function. */ +#undef HAVE_FUTIMESAT + +/* Define to 1 if you have the `gai_strerror' function. */ +#define HAVE_GAI_STRERROR 1 + +/* Define to 1 if you have the `gamma' function. */ +#define HAVE_GAMMA 1 + +/* Define if we can use gcc inline assembler to get and set mc68881 fpcr */ +#undef HAVE_GCC_ASM_FOR_MC68881 + +/* Define if we can use x64 gcc inline assembler */ +#undef HAVE_GCC_ASM_FOR_X64 + +/* Define if we can use gcc inline assembler to get and set x87 control word + */ +#undef HAVE_GCC_ASM_FOR_X87 + +/* Define if your compiler provides __uint128_t */ +#undef HAVE_GCC_UINT128_T + +/* Define if you have the getaddrinfo function. */ +#define HAVE_GETADDRINFO 1 + +/* Define this if you have flockfile(), getc_unlocked(), and funlockfile() */ +#define HAVE_GETC_UNLOCKED 1 + +/* Define to 1 if you have the `getentropy' function. */ +#define HAVE_GETENTROPY 1 + +/* Define to 1 if you have the `getgrgid_r' function. */ +#undef HAVE_GETGRGID_R + +/* Define to 1 if you have the `getgrnam_r' function. */ +#undef HAVE_GETGRNAM_R + +/* Define to 1 if you have the `getgrouplist' function. */ +#undef HAVE_GETGROUPLIST + +/* Define to 1 if you have the `getgroups' function. */ +#undef HAVE_GETGROUPS + +/* Define to 1 if you have the `gethostbyname' function. */ +#undef HAVE_GETHOSTBYNAME + +/* Define this if you have some version of gethostbyname_r() */ +#define HAVE_GETHOSTBYNAME_R 1 + +/* Define this if you have the 3-arg version of gethostbyname_r(). */ +#undef HAVE_GETHOSTBYNAME_R_3_ARG + +/* Define this if you have the 5-arg version of gethostbyname_r(). */ +#undef HAVE_GETHOSTBYNAME_R_5_ARG + +/* Define this if you have the 6-arg version of gethostbyname_r(). */ +#define HAVE_GETHOSTBYNAME_R_6_ARG 1 + +/* Define to 1 if you have the `getitimer' function. */ +#define HAVE_GETITIMER 1 + +/* Define to 1 if you have the `getloadavg' function. */ +#undef HAVE_GETLOADAVG + +/* Define to 1 if you have the `getlogin' function. */ +#define HAVE_GETLOGIN 1 + +/* Define to 1 if you have the `getnameinfo' function. */ +#define HAVE_GETNAMEINFO 1 + +/* Define if you have the 'getpagesize' function. */ +#define HAVE_GETPAGESIZE 1 + +/* Define to 1 if you have the `getpeername' function. */ +#define HAVE_GETPEERNAME 1 + +/* Define to 1 if you have the `getpgid' function. */ +#define HAVE_GETPGID 1 + +/* Define to 1 if you have the `getpgrp' function. */ +#define HAVE_GETPGRP 1 + +/* Define to 1 if you have the `getpid' function. */ +#define HAVE_GETPID 1 + +/* Define to 1 if you have the `getpriority' function. */ +#undef HAVE_GETPRIORITY + +/* Define to 1 if you have the `getpwent' function. */ +#define HAVE_GETPWENT 1 + +/* Define to 1 if you have the `getpwnam_r' function. */ +#undef HAVE_GETPWNAM_R + +/* Define to 1 if you have the `getpwuid_r' function. */ +#define HAVE_GETPWUID_R 1 + +/* Define to 1 if the getrandom() function is available */ +#undef HAVE_GETRANDOM + +/* Define to 1 if the Linux getrandom() syscall is available */ +#undef HAVE_GETRANDOM_SYSCALL + +/* Define to 1 if you have the `getresgid' function. */ +#undef HAVE_GETRESGID + +/* Define to 1 if you have the `getresuid' function. */ +#undef HAVE_GETRESUID + +/* Define to 1 if you have the `getsid' function. */ +#define HAVE_GETSID 1 + +/* Define to 1 if you have the `getspent' function. */ +#undef HAVE_GETSPENT + +/* Define to 1 if you have the `getspnam' function. */ +#undef HAVE_GETSPNAM + +/* Define to 1 if you have the `gettimeofday' function. */ +#define HAVE_GETTIMEOFDAY 1 + +/* Define to 1 if you have the `getwd' function. */ +#define HAVE_GETWD 1 + +/* Define if glibc has incorrect _FORTIFY_SOURCE wrappers for memmove and + bcopy. */ +#undef HAVE_GLIBC_MEMMOVE_BUG + +/* Define to 1 if you have the <grp.h> header file. */ +#define HAVE_GRP_H 1 + +/* Define if you have the 'hstrerror' function. */ +#undef HAVE_HSTRERROR + +/* Define this if you have le64toh() */ +#define HAVE_HTOLE64 1 + +/* Define to 1 if you have the `hypot' function. */ +#define HAVE_HYPOT 1 + +/* Define to 1 if you have the <ieeefp.h> header file. */ +#undef HAVE_IEEEFP_H + +/* Define to 1 if you have the `if_nameindex' function. */ +#define HAVE_IF_NAMEINDEX 1 + +/* Define if you have the 'inet_aton' function. */ +#define HAVE_INET_ATON 1 + +/* Define if you have the 'inet_pton' function. */ +#define HAVE_INET_PTON 1 + +/* Define to 1 if you have the `initgroups' function. */ +#undef HAVE_INITGROUPS + +/* Define if your compiler provides int32_t. */ +#define HAVE_INT32_T 1 + +/* Define if your compiler provides int64_t. */ +#define HAVE_INT64_T 1 + +/* Define to 1 if you have the <inttypes.h> header file. */ +#define HAVE_INTTYPES_H 1 + +/* Define to 1 if you have the <io.h> header file. */ +#undef HAVE_IO_H + +/* Define if gcc has the ipa-pure-const bug. */ +#undef HAVE_IPA_PURE_CONST_BUG + +/* Define to 1 if you have the `kill' function. */ +#define HAVE_KILL 1 + +/* Define to 1 if you have the `killpg' function. */ +#undef HAVE_KILLPG + +/* Define if you have the 'kqueue' functions. */ +#undef HAVE_KQUEUE + +/* Define to 1 if you have the <langinfo.h> header file. */ +#define HAVE_LANGINFO_H 1 + +/* Defined to enable large file support when an off_t is bigger than a long + and long long is at least as big as an off_t. You may need to add some + flags for configuration and compilation to enable this mode. (For Solaris + and Linux, the necessary defines are already defined.) */ +#undef HAVE_LARGEFILE_SUPPORT + +/* Define to 1 if you have the 'lchflags' function. */ +#undef HAVE_LCHFLAGS + +/* Define to 1 if you have the `lchmod' function. */ +#undef HAVE_LCHMOD + +/* Define to 1 if you have the `lchown' function. */ +#define HAVE_LCHOWN 1 + +/* Define to 1 if you have the `lgamma' function. */ +#define HAVE_LGAMMA 1 + +/* Define to 1 if you have the `dl' library (-ldl). */ +#define HAVE_LIBDL 1 + +/* Define to 1 if you have the `dld' library (-ldld). */ +#undef HAVE_LIBDLD + +/* Define to 1 if you have the `ieee' library (-lieee). */ +#undef HAVE_LIBIEEE + +/* Define to 1 if you have the <libintl.h> header file. */ +#undef HAVE_LIBINTL_H + +/* Define if you have the readline library (-lreadline). */ +#define HAVE_LIBREADLINE 1 + +/* Define to 1 if you have the `resolv' library (-lresolv). */ +#undef HAVE_LIBRESOLV + +/* Define to 1 if you have the `sendfile' library (-lsendfile). */ +#undef HAVE_LIBSENDFILE + +/* Define to 1 if you have the <libutil.h> header file. */ +#undef HAVE_LIBUTIL_H + +/* Define if you have the 'link' function. */ +#define HAVE_LINK 1 + +/* Define to 1 if you have the `linkat' function. */ +#undef HAVE_LINKAT + +/* Define to 1 if you have the <linux/can/bcm.h> header file. */ +#undef HAVE_LINUX_CAN_BCM_H + +/* Define to 1 if you have the <linux/can.h> header file. */ +#undef HAVE_LINUX_CAN_H + +/* Define if compiling using Linux 3.6 or later. */ +#undef HAVE_LINUX_CAN_RAW_FD_FRAMES + +/* Define to 1 if you have the <linux/can/raw.h> header file. */ +#undef HAVE_LINUX_CAN_RAW_H + +/* Define to 1 if you have the <linux/memfd.h> header file. */ +#undef HAVE_LINUX_MEMFD_H + +/* Define to 1 if you have the <linux/netlink.h> header file. */ +#undef HAVE_LINUX_NETLINK_H + +/* Define to 1 if you have the <linux/qrtr.h> header file. */ +#undef HAVE_LINUX_QRTR_H + +/* Define to 1 if you have the <linux/random.h> header file. */ +#undef HAVE_LINUX_RANDOM_H + +/* Define to 1 if you have the <linux/tipc.h> header file. */ +#undef HAVE_LINUX_TIPC_H + +/* Define to 1 if you have the <linux/vm_sockets.h> header file. */ +#undef HAVE_LINUX_VM_SOCKETS_H + +/* Define to 1 if you have the `lockf' function. */ +#undef HAVE_LOCKF + +/* Define to 1 if you have the `log1p' function. */ +#define HAVE_LOG1P 1 + +/* Define to 1 if you have the `log2' function. */ +#define HAVE_LOG2 1 + +/* Define to 1 if the system has the type `long double'. */ +#define HAVE_LONG_DOUBLE 1 + +/* Define this if you have the type long long. */ +#define HAVE_LONG_LONG 1 + +/* Define to 1 if you have the `lstat' function. */ +#define HAVE_LSTAT 1 + +/* Define to 1 if you have the `lutimes' function. */ +#undef HAVE_LUTIMES + +/* Define to 1 if you have the `madvise' function. */ +#undef HAVE_MADVISE + +/* Define this if you have the makedev macro. */ +#undef HAVE_MAKEDEV + +/* Define to 1 if you have the `mbrtowc' function. */ +#undef HAVE_MBRTOWC + +/* Define if you have the 'memfd_create' function. */ +#undef HAVE_MEMFD_CREATE + +/* Define to 1 if you have the <memory.h> header file. */ +#define HAVE_MEMORY_H 1 + +/* Define to 1 if you have the `memrchr' function. */ +#undef HAVE_MEMRCHR + +/* Define to 1 if you have the `mkdirat' function. */ +#undef HAVE_MKDIRAT + +/* Define to 1 if you have the `mkfifo' function. */ +#undef HAVE_MKFIFO + +/* Define to 1 if you have the `mkfifoat' function. */ +#undef HAVE_MKFIFOAT + +/* Define to 1 if you have the `mknod' function. */ +#undef HAVE_MKNOD + +/* Define to 1 if you have the `mknodat' function. */ +#undef HAVE_MKNODAT + +/* Define to 1 if you have the `mktime' function. */ +#define HAVE_MKTIME 1 + +/* Define to 1 if you have the `mmap' function. */ +#define HAVE_MMAP 1 + +/* Define to 1 if you have the `mremap' function. */ +#undef HAVE_MREMAP + +/* Define to 1 if you have the <ncurses.h> header file. */ +#undef HAVE_NCURSES_H + +/* Define to 1 if you have the <ndir.h> header file, and it defines `DIR'. */ +#undef HAVE_NDIR_H + +/* Define to 1 if you have the <netpacket/packet.h> header file. */ +#undef HAVE_NETPACKET_PACKET_H + +/* Define to 1 if you have the <net/if.h> header file. */ +#define HAVE_NET_IF_H 1 + +/* Define to 1 if you have the `nice' function. */ +#define HAVE_NICE 1 + +/* Define to 1 if you have the `openat' function. */ +#undef HAVE_OPENAT + +/* Define to 1 if you have the `openpty' function. */ +#undef HAVE_OPENPTY + +/* Define to 1 if you have the `pathconf' function. */ +#define HAVE_PATHCONF 1 + +/* Define to 1 if you have the `pause' function. */ +#define HAVE_PAUSE 1 + +/* Define to 1 if you have the `pipe2' function. */ +#undef HAVE_PIPE2 + +/* Define to 1 if you have the `plock' function. */ +#undef HAVE_PLOCK + +/* Define to 1 if you have the `poll' function. */ +#define HAVE_POLL 1 + +/* Define to 1 if you have the <poll.h> header file. */ +#define HAVE_POLL_H 1 + +/* Define to 1 if you have the `posix_fadvise' function. */ +#undef HAVE_POSIX_FADVISE + +/* Define to 1 if you have the `posix_fallocate' function. */ +#undef HAVE_POSIX_FALLOCATE + +/* Define to 1 if you have the `posix_spawn' function. */ +#undef HAVE_POSIX_SPAWN + +/* Define to 1 if you have the `posix_spawnp' function. */ +#undef HAVE_POSIX_SPAWNP + +/* Define to 1 if you have the `pread' function. */ +#define HAVE_PREAD 1 + +/* Define to 1 if you have the `preadv' function. */ +#undef HAVE_PREADV + +/* Define to 1 if you have the `preadv2' function. */ +#undef HAVE_PREADV2 + +/* Define if you have the 'prlimit' functions. */ +#define HAVE_PRLIMIT 1 + +/* Define to 1 if you have the <process.h> header file. */ +#undef HAVE_PROCESS_H + +/* Define if your compiler supports function prototype */ +#define HAVE_PROTOTYPES 1 + +/* Define to 1 if you have the `pthread_atfork' function. */ +#undef HAVE_PTHREAD_ATFORK + +/* Define to 1 if you have the `pthread_condattr_setclock' function. */ +#undef HAVE_PTHREAD_CONDATTR_SETCLOCK + +/* Defined for Solaris 2.6 bug in pthread header. */ +#undef HAVE_PTHREAD_DESTRUCTOR + +/* Define to 1 if you have the `pthread_getcpuclockid' function. */ +#undef HAVE_PTHREAD_GETCPUCLOCKID + +/* Define to 1 if you have the <pthread.h> header file. */ +#define HAVE_PTHREAD_H 1 + +/* Define to 1 if you have the `pthread_init' function. */ +#undef HAVE_PTHREAD_INIT + +/* Define to 1 if you have the `pthread_kill' function. */ +#undef HAVE_PTHREAD_KILL + +/* Define to 1 if you have the `pthread_sigmask' function. */ +#undef HAVE_PTHREAD_SIGMASK + +/* Define to 1 if you have the <pty.h> header file. */ +#define HAVE_PTY_H 1 + +/* Define to 1 if you have the `putenv' function. */ +#define HAVE_PUTENV 1 + +/* Define to 1 if you have the `pwrite' function. */ +#define HAVE_PWRITE 1 + +/* Define if the libcrypto has RAND_egd */ +#define HAVE_RAND_EGD 1 + +/* Define to 1 if you have the `pwritev' function. */ +#undef HAVE_PWRITEV + +/* Define to 1 if you have the `pwritev2' function. */ +#undef HAVE_PWRITEV2 + +/* Define to 1 if you have the `readlink' function. */ +#define HAVE_READLINK 1 + +/* Define to 1 if you have the `readlinkat' function. */ +#undef HAVE_READLINKAT + +/* Define to 1 if you have the `readv' function. */ +#define HAVE_READV 1 + +/* Define to 1 if you have the `realpath' function. */ +#define HAVE_REALPATH 1 + +/* Define to 1 if you have the `renameat' function. */ +#undef HAVE_RENAMEAT + +/* Define if readline supports append_history */ +#define HAVE_RL_APPEND_HISTORY 1 + +/* Define if you can turn off readline's signal handling. */ +#define HAVE_RL_CATCH_SIGNAL 1 + +/* Define if you have readline 2.2 */ +#define HAVE_RL_COMPLETION_APPEND_CHARACTER 1 + +/* Define if you have readline 4.0 */ +#define HAVE_RL_COMPLETION_DISPLAY_MATCHES_HOOK 1 + +/* Define if you have readline 4.2 */ +#define HAVE_RL_COMPLETION_MATCHES 1 + +/* Define if you have rl_completion_suppress_append */ +#define HAVE_RL_COMPLETION_SUPPRESS_APPEND 1 + +/* Define if you have readline 4.0 */ +#define HAVE_RL_PRE_INPUT_HOOK 1 + +/* Define if you have readline 4.0 */ +#undef HAVE_RL_RESIZE_TERMINAL + +/* Define to 1 if you have the `round' function. */ +#undef HAVE_ROUND +#if __CRTL_VER > 80400000 +#define HAVE_ROUND 1 +#endif + +/* Define to 1 if you have the `rtpSpawn' function. */ +#undef HAVE_RTPSPAWN + +/* Define to 1 if you have the `sched_get_priority_max' function. */ +#define HAVE_SCHED_GET_PRIORITY_MAX 1 + +/* Define to 1 if you have the <sched.h> header file. */ +#undef HAVE_SCHED_H + +/* Define to 1 if you have the `sched_rr_get_interval' function. */ +#define HAVE_SCHED_RR_GET_INTERVAL 1 + +/* Define to 1 if you have the `sched_setaffinity' function. */ +#define HAVE_SCHED_SETAFFINITY 1 + +/* Define to 1 if you have the `sched_setparam' function. */ +#undef HAVE_SCHED_SETPARAM + +/* Define to 1 if you have the `sched_setscheduler' function. */ +#undef HAVE_SCHED_SETSCHEDULER + +/* Define to 1 if you have the `select' function. */ +#define HAVE_SELECT 1 + +/* Define to 1 if you have the `sem_getvalue' function. */ +#define HAVE_SEM_GETVALUE 1 + +/* Define to 1 if you have the `sem_open' function. */ +#define HAVE_SEM_OPEN 1 + +/* Define to 1 if you have the `sem_timedwait' function. */ +#define HAVE_SEM_TIMEDWAIT 1 + +/* Define to 1 if you have the `sem_unlink' function. */ +#define HAVE_SEM_UNLINK 1 + +/* Define to 1 if you have the `sendfile' function. */ +#undef HAVE_SENDFILE + +/* Define to 1 if you have the `setegid' function. */ +#undef HAVE_SETEGID + +/* Define to 1 if you have the `seteuid' function. */ +#define HAVE_SETEUID 1 + +/* Define to 1 if you have the `setgid' function. */ +#define HAVE_SETGID 1 + +/* Define if you have the 'setgroups' function. */ +#undef HAVE_SETGROUPS + +/* Define to 1 if you have the `sethostname' function. */ +#undef HAVE_SETHOSTNAME + +/* Define to 1 if you have the `setitimer' function. */ +#define HAVE_SETITIMER 1 + +/* Define to 1 if you have the `setlocale' function. */ +#define HAVE_SETLOCALE 1 + +/* Define to 1 if you have the `setpgid' function. */ +#define HAVE_SETPGID 1 + +/* Define to 1 if you have the `setpgrp' function. */ +#define HAVE_SETPGRP 1 + +/* Define to 1 if you have the `setpriority' function. */ +#undef HAVE_SETPRIORITY + +/* Define to 1 if you have the `setregid' function. */ +#define HAVE_SETREGID 1 + +/* Define to 1 if you have the `setresgid' function. */ +#undef HAVE_SETRESGID + +/* Define to 1 if you have the `setresuid' function. */ +#undef HAVE_SETRESUID + +/* Define to 1 if you have the `setreuid' function. */ +#define HAVE_SETREUID 1 + +/* Define to 1 if you have the `setsid' function. */ +#define HAVE_SETSID 1 + +/* Define to 1 if you have the `setuid' function. */ +#define HAVE_SETUID 1 + +/* Define to 1 if you have the `setvbuf' function. */ +#define HAVE_SETVBUF 1 + +/* Define to 1 if you have the <shadow.h> header file. */ +#undef HAVE_SHADOW_H + +/* Define to 1 if you have the `shm_open' function. */ +#define HAVE_SHM_OPEN 1 + +/* Define to 1 if you have the `shm_unlink' function. */ +#define HAVE_SHM_UNLINK 1 + +/* Define to 1 if you have the `sigaction' function. */ +#define HAVE_SIGACTION 1 + +/* Define to 1 if you have the `sigaltstack' function. */ +#undef HAVE_SIGALTSTACK + +/* Define to 1 if you have the `sigfillset' function. */ +#define HAVE_SIGFILLSET 1 + +/* Define to 1 if `si_band' is a member of `siginfo_t'. */ +#define HAVE_SIGINFO_T_SI_BAND 1 + +/* Define to 1 if you have the `siginterrupt' function. */ +#undef HAVE_SIGINTERRUPT + +/* Define to 1 if you have the <signal.h> header file. */ +#define HAVE_SIGNAL_H 1 + +/* Define to 1 if you have the `sigpending' function. */ +#define HAVE_SIGPENDING 1 + +/* Define to 1 if you have the `sigrelse' function. */ +#define HAVE_SIGRELSE 1 + +/* Define to 1 if you have the `sigtimedwait' function. */ +#define HAVE_SIGTIMEDWAIT 1 + +/* Define to 1 if you have the `sigwait' function. */ +#define HAVE_SIGWAIT 1 + +/* Define to 1 if you have the `sigwaitinfo' function. */ +#define HAVE_SIGWAITINFO 1 + +/* Define to 1 if you have the `snprintf' function. */ +#define HAVE_SNPRINTF 1 + +/* struct sockaddr_alg (linux/if_alg.h) */ +#undef HAVE_SOCKADDR_ALG + +/* Define if sockaddr has sa_len member */ +#undef HAVE_SOCKADDR_SA_LEN +#undef _SOCKADDR_LEN +#define HAVE_SOCKADDR_SA_LEN 1 +#define _SOCKADDR_LEN 1 + +/* struct sockaddr_storage (sys/socket.h) */ +#define HAVE_SOCKADDR_STORAGE 1 + +/* Define if you have the 'socketpair' function. */ +#define HAVE_SOCKETPAIR 1 + +/* Define to 1 if you have the <spawn.h> header file. */ +#define HAVE_SPAWN_H 1 + +/* Define if your compiler provides ssize_t */ +#define HAVE_SSIZE_T 1 + +/* Define to 1 if you have the `statvfs' function. */ +#define HAVE_STATVFS 1 + +/* Define if you have struct stat.st_mtim.tv_nsec */ +#undef HAVE_STAT_TV_NSEC + +/* Define if you have struct stat.st_mtimensec */ +#undef HAVE_STAT_TV_NSEC2 + +/* Define if your compiler supports variable length function prototypes (e.g. + void fprintf(FILE *, char *, ...);) *and* <stdarg.h> */ +#define HAVE_STDARG_PROTOTYPES 1 + +/* Define to 1 if you have the <stdint.h> header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the <stdlib.h> header file. */ +#define HAVE_STDLIB_H 1 + +/* Has stdatomic.h with atomic_int and atomic_uintptr_t */ +#undef HAVE_STD_ATOMIC + +/* Define to 1 if you have the `strdup' function. */ +#define HAVE_STRDUP 1 + +/* Define to 1 if you have the `strftime' function. */ +#define HAVE_STRFTIME 1 + +/* Define to 1 if you have the <strings.h> header file. */ +#define HAVE_STRINGS_H 1 + +/* Define to 1 if you have the <string.h> header file. */ +#define HAVE_STRING_H 1 + +/* Define to 1 if you have the `strlcpy' function. */ +#undef HAVE_STRLCPY + +/* Define to 1 if you have the <stropts.h> header file. */ +#define HAVE_STROPTS_H 1 + +/* Define to 1 if you have the `strsignal' function. */ +#undef HAVE_STRSIGNAL + +/* Define to 1 if `pw_gecos' is a member of `struct passwd'. */ +#undef HAVE_STRUCT_PASSWD_PW_GECOS + +/* Define to 1 if `pw_passwd' is a member of `struct passwd'. */ +#undef HAVE_STRUCT_PASSWD_PW_PASSWD + +/* Define to 1 if `st_birthtime' is a member of `struct stat'. */ +#undef HAVE_STRUCT_STAT_ST_BIRTHTIME + +/* Define to 1 if `st_blksize' is a member of `struct stat'. */ +#define HAVE_STRUCT_STAT_ST_BLKSIZE 1 + +/* Define to 1 if `st_blocks' is a member of `struct stat'. */ +#define HAVE_STRUCT_STAT_ST_BLOCKS 1 + +/* Define to 1 if `st_flags' is a member of `struct stat'. */ +#undef HAVE_STRUCT_STAT_ST_FLAGS + +/* Define to 1 if `st_gen' is a member of `struct stat'. */ +#undef HAVE_STRUCT_STAT_ST_GEN + +/* Define to 1 if `st_rdev' is a member of `struct stat'. */ +#define HAVE_STRUCT_STAT_ST_RDEV 1 + +/* Define to 1 if `tm_zone' is a member of `struct tm'. */ +#undef HAVE_STRUCT_TM_TM_ZONE + +/* Define to 1 if your `struct stat' has `st_blocks'. Deprecated, use + `HAVE_STRUCT_STAT_ST_BLOCKS' instead. */ +#define HAVE_ST_BLOCKS 1 + +/* Define if you have the 'symlink' function. */ +#define HAVE_SYMLINK 1 + +/* Define to 1 if you have the `symlinkat' function. */ +#undef HAVE_SYMLINKAT + +/* Define to 1 if you have the `sync' function. */ +#undef HAVE_SYNC + +/* Define to 1 if you have the `sysconf' function. */ +#define HAVE_SYSCONF 1 + +/* Define to 1 if you have the <sysexits.h> header file. */ +#undef HAVE_SYSEXITS_H + +/* Define to 1 if you have the <sys/audioio.h> header file. */ +#undef HAVE_SYS_AUDIOIO_H + +/* Define to 1 if you have the <sys/bsdtty.h> header file. */ +#undef HAVE_SYS_BSDTTY_H + +/* Define to 1 if you have the <sys/devpoll.h> header file. */ +#undef HAVE_SYS_DEVPOLL_H + +/* Define to 1 if you have the <sys/dir.h> header file, and it defines `DIR'. + */ +#undef HAVE_SYS_DIR_H + +/* Define to 1 if you have the <sys/endian.h> header file. */ +#undef HAVE_SYS_ENDIAN_H + +/* Define to 1 if you have the <sys/epoll.h> header file. */ +#undef HAVE_SYS_EPOLL_H + +/* Define to 1 if you have the <sys/event.h> header file. */ +#undef HAVE_SYS_EVENT_H + +/* Define to 1 if you have the <sys/file.h> header file. */ +#define HAVE_SYS_FILE_H 1 + +/* Define to 1 if you have the <sys/ioctl.h> header file. */ +#define HAVE_SYS_IOCTL_H 1 + +/* Define to 1 if you have the <sys/kern_control.h> header file. */ +#undef HAVE_SYS_KERN_CONTROL_H + +/* Define to 1 if you have the <sys/loadavg.h> header file. */ +#undef HAVE_SYS_LOADAVG_H + +/* Define to 1 if you have the <sys/lock.h> header file. */ +#undef HAVE_SYS_LOCK_H + +/* Define to 1 if you have the <sys/memfd.h> header file. */ +#undef HAVE_SYS_MEMFD_H + +/* Define to 1 if you have the <sys/mkdev.h> header file. */ +#undef HAVE_SYS_MKDEV_H + +/* Define to 1 if you have the <sys/mman.h> header file. */ +#define HAVE_SYS_MMAN_H 1 + +/* Define to 1 if you have the <sys/modem.h> header file. */ +#undef HAVE_SYS_MODEM_H + +/* Define to 1 if you have the <sys/ndir.h> header file, and it defines `DIR'. + */ +#undef HAVE_SYS_NDIR_H + +/* Define to 1 if you have the <sys/param.h> header file. */ +#undef HAVE_SYS_PARAM_H + +/* Define to 1 if you have the <sys/poll.h> header file. */ +#define HAVE_SYS_POLL_H 1 + +/* Define to 1 if you have the <sys/random.h> header file. */ +#undef HAVE_SYS_RANDOM_H + +/* Define to 1 if you have the <sys/resource.h> header file. */ +#undef HAVE_SYS_RESOURCE_H + +/* Define to 1 if you have the <sys/select.h> header file. */ +#undef HAVE_SYS_SELECT_H + +/* Define to 1 if you have the <sys/sendfile.h> header file. */ +#undef HAVE_SYS_SENDFILE_H + +/* Define to 1 if you have the <sys/socket.h> header file. */ +#define HAVE_SYS_SOCKET_H 1 + +/* Define to 1 if you have the <sys/statvfs.h> header file. */ +#define HAVE_SYS_STATVFS_H 1 + +/* Define to 1 if you have the <sys/stat.h> header file. */ +#define HAVE_SYS_STAT_H 1 + +/* Define to 1 if you have the <sys/syscall.h> header file. */ +#undef HAVE_SYS_SYSCALL_H + +/* Define to 1 if you have the <sys/sysmacros.h> header file. */ +#undef HAVE_SYS_SYSMACROS_H + +/* Define to 1 if you have the <sys/sys_domain.h> header file. */ +#undef HAVE_SYS_SYS_DOMAIN_H + +/* Define to 1 if you have the <sys/termio.h> header file. */ +#undef HAVE_SYS_TERMIO_H + +/* Define to 1 if you have the <sys/times.h> header file. */ +#define HAVE_SYS_TIMES_H 1 + +/* Define to 1 if you have the <sys/time.h> header file. */ +#define HAVE_SYS_TIME_H 1 + +/* Define to 1 if you have the <sys/types.h> header file. */ +#define HAVE_SYS_TYPES_H 1 + +/* Define to 1 if you have the <sys/uio.h> header file. */ +#define HAVE_SYS_UIO_H 1 + +/* Define to 1 if you have the <sys/un.h> header file. */ +#define HAVE_SYS_UN_H 1 + +/* Define to 1 if you have the <sys/utsname.h> header file. */ +#define HAVE_SYS_UTSNAME_H 1 + +/* Define to 1 if you have the <sys/wait.h> header file. */ +#define HAVE_SYS_WAIT_H 1 + +/* Define to 1 if you have the <sys/xattr.h> header file. */ +#define HAVE_SYS_XATTR_H 1 + +/* Define to 1 if you have the `tcgetpgrp' function. */ +#undef HAVE_TCGETPGRP + +/* Define to 1 if you have the `tcsetpgrp' function. */ +#undef HAVE_TCSETPGRP + +/* Define to 1 if you have the `tempnam' function. */ +#define HAVE_TEMPNAM 1 + +/* Define to 1 if you have the <termios.h> header file. */ +#undef HAVE_TERMIOS_H + +/* Define to 1 if you have the <term.h> header file. */ +#undef HAVE_TERM_H + +/* Define to 1 if you have the `tgamma' function. */ +#define HAVE_TGAMMA 1 + +/* Define to 1 if you have the `timegm' function. */ +#undef HAVE_TIMEGM + +/* Define to 1 if you have the `times' function. */ +#define HAVE_TIMES 1 + +/* Define to 1 if you have the `tmpfile' function. */ +#define HAVE_TMPFILE 1 + +/* Define to 1 if you have the `tmpnam' function. */ +#define HAVE_TMPNAM 1 + +/* Define to 1 if you have the `tmpnam_r' function. */ +#define HAVE_TMPNAM_R 1 + +/* Define to 1 if your `struct tm' has `tm_zone'. Deprecated, use + `HAVE_STRUCT_TM_TM_ZONE' instead. */ +#define HAVE_TM_ZONE 1 + +/* Define to 1 if you have the `truncate' function. */ +#define HAVE_TRUNCATE 1 + +/* Define to 1 if you don't have `tm_zone' but do have the external array + `tzname'. */ +#undef HAVE_TZNAME + +/* Define this if you have tcl and TCL_UTF_MAX==6 */ +#undef HAVE_UCS4_TCL + +/* Define if your compiler provides uint32_t. */ +#define HAVE_UINT32_T 1 + +/* Define if your compiler provides uint64_t. */ +#define HAVE_UINT64_T 1 + +/* Define to 1 if the system has the type `uintptr_t'. */ +#define HAVE_UINTPTR_T 1 + +/* Define to 1 if you have the `uname' function. */ +#define HAVE_UNAME 1 + +/* Define to 1 if you have the <unistd.h> header file. */ +#define HAVE_UNISTD_H 1 + +/* Define to 1 if you have the `unlinkat' function. */ +#undef HAVE_UNLINKAT + +/* Define to 1 if you have the `unsetenv' function. */ +#define HAVE_UNSETENV 1 + +/* Define if you have a useable wchar_t type defined in wchar.h; useable means + wchar_t must be an unsigned type with at least 16 bits. (see + Include/unicodeobject.h). */ +#define HAVE_USABLE_WCHAR_T 1 + +/* Define to 1 if you have the <util.h> header file. */ +#undef HAVE_UTIL_H + +/* Define to 1 if you have the `utimensat' function. */ +#undef HAVE_UTIMENSAT + +/* Define to 1 if you have the `utimes' function. */ +#define HAVE_UTIMES 1 + +/* Define to 1 if you have the <utime.h> header file. */ +#define HAVE_UTIME_H 1 + +/* Define if uuid_create() exists. */ +#undef HAVE_UUID_CREATE + +/* Define if uuid_enc_be() exists. */ +#undef HAVE_UUID_ENC_BE + +/* Define if uuid_generate_time_safe() exists. */ +#undef HAVE_UUID_GENERATE_TIME_SAFE + +/* Define to 1 if you have the <uuid.h> header file. */ +#undef HAVE_UUID_H + +/* Define to 1 if you have the <uuid/uuid.h> header file. */ +#undef HAVE_UUID_UUID_H + +/* Define to 1 if you have the `wait3' function. */ +#undef HAVE_WAIT3 + +/* Define to 1 if you have the `wait4' function. */ +#undef HAVE_WAIT4 + +/* Define to 1 if you have the `waitid' function. */ +#undef HAVE_WAITID + +/* Define to 1 if you have the `waitpid' function. */ +#define HAVE_WAITPID 1 + +/* Define if the compiler provides a wchar.h header file. */ +#define HAVE_WCHAR_H 1 + +/* Define to 1 if you have the `wcscoll' function. */ +#define HAVE_WCSCOLL 1 + +/* Define to 1 if you have the `wcsftime' function. */ +/* Actually OpenVMS has `wcsftime' function, but it does not work as it is supposed to work */ +#undef HAVE_WCSFTIME + +/* Define to 1 if you have the `wcsxfrm' function. */ +/* Actually OpenVMS has `wcsxfrm' function, but it returns non-unicode strings */ +#undef HAVE_WCSXFRM + +/* Define to 1 if you have the `wmemcmp' function. */ +#undef HAVE_WMEMCMP + +/* Define if tzset() actually switches the local timezone in a meaningful way. + */ +#define HAVE_WORKING_TZSET 1 + +/* Define to 1 if you have the `writev' function. */ +#define HAVE_WRITEV 1 + +/* Define if libssl has X509_VERIFY_PARAM_set1_host and related function */ +#undef HAVE_X509_VERIFY_PARAM_SET1_HOST + +/* Define if the zlib library has inflateCopy */ +#define HAVE_ZLIB_COPY 1 + +/* Define to 1 if you have the `_getpty' function. */ +#undef HAVE__GETPTY + +/* Define to 1 if `major', `minor', and `makedev' are declared in <mkdev.h>. + */ +#undef MAJOR_IN_MKDEV + +/* Define to 1 if `major', `minor', and `makedev' are declared in + <sysmacros.h>. */ +#undef MAJOR_IN_SYSMACROS + +/* Define if mvwdelch in curses.h is an expression. */ +#undef MVWDELCH_IS_EXPRESSION + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define if POSIX semaphores aren't enabled on your system */ +#undef POSIX_SEMAPHORES_NOT_ENABLED + +/* Define if pthread_key_t is compatible with int. */ +#undef PTHREAD_KEY_T_IS_COMPATIBLE_WITH_INT + +/* Defined if PTHREAD_SCOPE_SYSTEM supported. */ +#define PTHREAD_SYSTEM_SCHED_SUPPORTED 1 + +/* Define as the preferred size in bits of long digits */ +#undef PYLONG_BITS_IN_DIGIT + +/* Define to printf format modifier for long long type */ +#define PY_FORMAT_LONG_LONG "ll" + +/* Define to printf format modifier for Py_ssize_t */ +/* #define PY_FORMAT_SIZE_T "z" */ +#define PY_FORMAT_SIZE_T "l" + +/* Define if you want to coerce the C locale to a UTF-8 based locale */ +#undef PY_COERCE_C_LOCALE + +/* Default cipher suites list for ssl module. 1: Python's preferred selection, + 2: leave OpenSSL defaults untouched, 0: custom string */ +#undef PY_SSL_DEFAULT_CIPHERS + +/* Cipher suite string for PY_SSL_DEFAULT_CIPHERS=0 */ +#undef PY_SSL_DEFAULT_CIPHER_STRING + +/* Define if you want to build an interpreter with many run-time checks. */ +/* #undef Py_DEBUG */ + +/* Defined if Python is built as a shared library. */ +/* #undef Py_ENABLE_SHARED */ + +/* Define hash algorithm for str, bytes and memoryview. SipHash24: 1, FNV: 2, + externally defined: 0 */ +#undef Py_HASH_ALGORITHM + +/* Define if you want to enable tracing references for debugging purpose */ +#undef Py_TRACE_REFS + +/* assume C89 semantics that RETSIGTYPE is always void */ +#define RETSIGTYPE void + +/* Define if setpgrp() must be called as setpgrp(0, 0). */ +#undef SETPGRP_HAVE_ARG + +/* Define to 1 if you must link with -lrt for shm_open(). */ +#undef SHM_NEEDS_LIBRT + +/* Define if i>>j for signed int i does not extend the sign bit when i < 0 */ +#undef SIGNED_RIGHT_SHIFT_ZERO_FILLS + +/* The size of `double', as computed by sizeof. */ +#define SIZEOF_DOUBLE 8 + +/* The size of `float', as computed by sizeof. */ +#define SIZEOF_FLOAT 4 + +/* The size of `fpos_t', as computed by sizeof. */ +#define SIZEOF_FPOS_T 8 + +/* The size of `int', as computed by sizeof. */ +#define SIZEOF_INT 4 + +/* The size of `long', as computed by sizeof. */ +#define SIZEOF_LONG 4 + +/* The size of `long double', as computed by sizeof. */ +#define SIZEOF_LONG_DOUBLE 16 + +/* The size of `long long', as computed by sizeof. */ +#define SIZEOF_LONG_LONG 8 + +/* The size of `off_t', as computed by sizeof. */ +#define SIZEOF_OFF_T 4 + +/* The size of `pid_t', as computed by sizeof. */ +#define SIZEOF_PID_T 4 + +/* The size of `pthread_key_t', as computed by sizeof. */ +#undef SIZEOF_PTHREAD_KEY_T + +/* The size of `pthread_t', as computed by sizeof. */ +#define SIZEOF_PTHREAD_T 8 + +/* The size of `short', as computed by sizeof. */ +#define SIZEOF_SHORT 2 + +/* The size of `size_t', as computed by sizeof. */ +#define SIZEOF_SIZE_T 4 + +/* The size of `time_t', as computed by sizeof. */ +#define SIZEOF_TIME_T 4 + +/* The size of `uintptr_t', as computed by sizeof. */ +#define SIZEOF_UINTPTR_T 8 + +/* The size of `void *', as computed by sizeof. */ +#define SIZEOF_VOID_P 4 + +/* The size of `wchar_t', as computed by sizeof. */ +#define SIZEOF_WCHAR_T 4 + +/* The size of `_Bool', as computed by sizeof. */ +#define SIZEOF__BOOL 1 + +/* Define to 1 if you have the ANSI C header files. */ +#define STDC_HEADERS 1 + +/* Define if you can safely include both <sys/select.h> and <sys/time.h> + (which you can't on SCO ODT 3.0). */ +#define SYS_SELECT_WITH_SYS_TIME 1 + +/* Define if tanh(-0.) is -0., or if platform doesn't have signed zeros */ +#define TANH_PRESERVES_ZERO_SIGN 1 + +/* Library needed by timemodule.c: librt may be needed for clock_gettime() */ +#undef TIMEMODULE_LIB + +/* Define to 1 if you can safely include both <sys/time.h> and <time.h>. */ +#define TIME_WITH_SYS_TIME 1 + +/* Define to 1 if your <sys/time.h> declares `struct tm'. */ +#undef TM_IN_SYS_TIME + +/* Define if you want to use computed gotos in ceval.c. */ +#undef USE_COMPUTED_GOTOS + +/* Define to use the C99 inline keyword. */ +#define USE_INLINE 1 + +/* Enable extensions on AIX 3, Interix. */ +#ifndef _ALL_SOURCE +# define _ALL_SOURCE 1 +#endif +/* Enable GNU extensions on systems that have them. */ +#ifndef _GNU_SOURCE +# define _GNU_SOURCE 1 +#endif +/* Enable threading extensions on Solaris. */ +#ifndef _POSIX_PTHREAD_SEMANTICS +# define _POSIX_PTHREAD_SEMANTICS 1 +#endif +/* Enable extensions on HP NonStop. */ +#ifndef _TANDEM_SOURCE +# define _TANDEM_SOURCE 1 +#endif +/* Enable general extensions on Solaris. */ +#ifndef __EXTENSIONS__ +# define __EXTENSIONS__ 1 +#endif + + +/* Define if WINDOW in curses.h offers a field _flags. */ +#undef WINDOW_HAS_FLAGS + +/* Define if you want documentation strings in extension modules */ +#define WITH_DOC_STRINGS 1 + +/* Define if you want to compile in DTrace support */ +#undef WITH_DTRACE + +/* Define if you want to use the new-style (Openstep, Rhapsody, MacOS) dynamic + linker (dyld) instead of the old-style (NextStep) dynamic linker (rld). + Dyld is necessary to support frameworks. */ +#undef WITH_DYLD + +/* Define to 1 if libintl is needed for locale functions. */ +#undef WITH_LIBINTL + +/* Define if you want to produce an OpenStep/Rhapsody framework (shared + library plus accessory files). */ +#undef WITH_NEXT_FRAMEWORK + +/* Define if you want to compile in Python-specific mallocs */ +#define WITH_PYMALLOC 1 + +/* Define if you want to compile in rudimentary thread support */ +#define WITH_THREAD 1 + +/* Define if you want pymalloc to be disabled when running under valgrind */ +#undef WITH_VALGRIND + +/* Define WORDS_BIGENDIAN to 1 if your processor stores words with the most + significant byte first (like Motorola and SPARC, unlike Intel). */ +#if defined AC_APPLE_UNIVERSAL_BUILD +# if defined __BIG_ENDIAN__ +# define WORDS_BIGENDIAN 1 +# endif +#else +# ifndef WORDS_BIGENDIAN +/* # undef WORDS_BIGENDIAN */ +# endif +#endif + +/* Define if arithmetic is subject to x87-style double rounding issue */ +#undef X87_DOUBLE_ROUNDING + +/* Define on OpenBSD to activate all library features */ +#undef _BSD_SOURCE + +/* Define on Irix to enable u_int */ +#define _BSD_TYPES 1 + +/* Define on Darwin to activate all library features */ +#define _DARWIN_C_SOURCE 1 + +/* This must be set to 64 on some systems to enable large file support. */ +#define _FILE_OFFSET_BITS 64 + +/* Define on Linux to activate all library features */ +#define _GNU_SOURCE 1 + +/* Define to include mbstate_t for mbrtowc */ +#undef _INCLUDE__STDC_A1_SOURCE + +/* This must be defined on some systems to enable large file support. */ +#define _LARGEFILE_SOURCE 1 + +/* This must be defined on AIX systems to enable large file support. */ +#undef _LARGE_FILES + +/* Define to 1 if on MINIX. */ +#undef _MINIX + +/* Define on NetBSD to activate all library features */ +#define _NETBSD_SOURCE 1 + +/* Define to 2 if the system does not provide POSIX.1 features except with + this defined. */ +#undef _POSIX_1_SOURCE + +/* Define to activate features from IEEE Stds 1003.1-2008 */ +#define _POSIX_C_SOURCE 200809L + +/* Define to 1 if you need to in order for `stat' and other things to work. */ +#define _POSIX_SOURCE 1 + +/* Define if you have POSIX threads, and your system does not define that. */ +#define _POSIX_THREADS + +/* framework name */ +#define _PYTHONFRAMEWORK "" + +/* Define to force use of thread-safe errno, h_errno, and other functions */ +#undef _REENTRANT + +/* Define to the level of X/Open that your system supports */ +#define _XOPEN_SOURCE 700 + +/* Define to activate Unix95-and-earlier features */ +#define _XOPEN_SOURCE_EXTENDED 1 + +/* Define on FreeBSD to activate all library features */ +#define __BSD_VISIBLE 1 + +/* Define to 1 if type `char' is unsigned and you are not using gcc. */ +#ifndef __CHAR_UNSIGNED__ +/* # undef __CHAR_UNSIGNED__ */ +#endif + +/* Define to 'long' if <time.h> doesn't define. */ +#undef clock_t + +/* Define to empty if `const' does not conform to ANSI C. */ +#undef const + +/* Define to `int' if <sys/types.h> doesn't define. */ +#undef gid_t + +/* Define to `int' if <sys/types.h> does not define. */ +#undef mode_t + +/* Define to `long int' if <sys/types.h> does not define. */ +#undef off_t + +/* Define to `int' if <sys/types.h> does not define. */ +#undef pid_t + +/* Define to empty if the keyword does not work. */ +#undef signed + +/* Define to `unsigned int' if <sys/types.h> does not define. */ +#undef size_t + +/* Define to `int' if <sys/socket.h> does not define. */ +/* #undef socklen_t */ + +/* Define to `int' if <sys/types.h> doesn't define. */ +#undef uid_t + + +/* Define the macros needed if on a UnixWare 7.x system. */ +#if defined(__USLC__) && defined(__SCO_VERSION__) +#define STRICT_SYSV_CURSES /* Don't use ncurses extensions */ +#endif + +/* VMS specific */ + +#ifndef INT32_MIN +#define INT32_MIN __INT32_MIN +#endif + +#ifndef INT32_MAX +#define INT32_MAX __INT32_MAX +#endif + +#ifndef INT64_MIN +#define INT64_MIN __INT64_MIN +#endif + +#ifndef INT64_MAX +#define INT64_MAX __INT64_MAX +#endif + +#ifndef UINT32_MAX +#define UINT32_MAX __UINT32_MAX +#endif + +#ifndef UINT64_MAX +#define UINT64_MAX __UINT64_MAX +#endif + +#ifndef SIZE_MAX +#define SIZE_MAX __UINT32_MAX +#endif + +#ifndef LLONG_MIN +#define LLONG_MIN __INT64_MIN +#endif + +#ifndef LLONG_MAX +#define LLONG_MAX __INT64_MAX +#endif + +#ifndef ULLONG_MAX +#define ULLONG_MAX __UINT64_MAX +#endif + +#define va_copy(dest,src) ((dest) = (src)) + +#define WCSTOK(a,b,c) wcstok((a),(b)) + +#if !defined __SOCKET_TYPEDEFS +# define __SOCKET_TYPEDEFS 1 + typedef unsigned char u_char; + typedef unsigned short u_short; + typedef unsigned long u_long; +#endif + +/* the following macros come from Python: Modules/signalmodule.c */ +#ifndef NSIG +# if defined(_NSIG) +# define NSIG _NSIG /* For BSD/SysV */ +# elif defined(_SIGMAX) +# define NSIG (_SIGMAX + 1) /* For QNX */ +# elif defined(SIGMAX) +# define NSIG (SIGMAX + 1) /* For djgpp */ +# else +# define NSIG 64 /* Use a reasonable default value */ +# endif +#endif + +#endif /*Py_PYCONFIG_H*/ + diff --git a/vms/python$define_root.com b/vms/python$define_root.com new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3B5dGhvbiRkZWZpbmVfcm9vdC5jb20= --- /dev/null +++ b/vms/python$define_root.com @@ -0,0 +1,18 @@ +$! 'f$verify(0) +$ +$! Create python$define_logicals.com such that python$root is corectly defined +$! +$ +$ if "" .nes. f$trnlnm("python$verify") then set verify +$ +$ root = f$trnlmn("pcsi$destination") - "]" + "python.]" +$ +$ open/write fd sys$common:[sysmgr]python$define_logicals.com +$ write fd "$ define/system/trans=concealed python$root ''root'" +$ write fd "$ define/system python$shr python$root:[lib]python$shr.exe" +$ write fd "$ define/system PYTHONHOME ""/python$root""" +$ write fd "$ exit" +$ close fd +$ purge/nolog sys$startup:python$define_logicals.com +$ +$ exit diff --git a/vms/python$pcsi_preconfigure.com b/vms/python$pcsi_preconfigure.com new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3B5dGhvbiRwY3NpX3ByZWNvbmZpZ3VyZS5jb20= --- /dev/null +++ b/vms/python$pcsi_preconfigure.com @@ -0,0 +1,19 @@ +$ verify = f$verify(0) +$ set noon +$ +$ define/job/nolog python$ods5_avail 0 +$ +$ loop: +$ dev = f$device("*", "DISK") +$ if dev .nes. "" +$ then +$ if f$getdvi("''dev'", "ACPTYPE") .eqs. "F11V5" +$ then +$ define/job/nolog python$ods5_avail 1 +$ else +$ goto loop +$ endif +$ endif +$ +$ verify = f$verify(verify) +$ exit diff --git a/vms/python$shutdown.com b/vms/python$shutdown.com new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3B5dGhvbiRzaHV0ZG93bi5jb20= --- /dev/null +++ b/vms/python$shutdown.com @@ -0,0 +1,28 @@ +$ ! PYTHON$SHUTDOWN.COM +$ !+ +$ ! 06-May-2020 +$ ! Shutdown file for Python 3.8.2 on OpenVMS +$ ! +$ !- +$ +$ verify = f$verify(0) +$ set noon +$ +$! Cleanup logical names... +$! +$!! if f$file_attributes("PYTHON$SHR","KNOWN") +$!! then +$!! install remove python$shr +$!! endif +$ +$ if f$trnlnm("PYTHON$SHR", "LNM$SYSTEM_TABLE") .nes. "" +$ then +$ deassign/sys PYTHON$SHR +$ endif +$ +$ if f$trnlnm("PYTHON$ROOT", "LNM$SYSTEM_TABLE") .nes. "" +$ then +$ deassign/sys PYTHON$ROOT +$ endif +$ +$ exit diff --git a/vms/python$startup.com b/vms/python$startup.com new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3B5dGhvbiRzdGFydHVwLmNvbQ== --- /dev/null +++ b/vms/python$startup.com @@ -0,0 +1,35 @@ +$ ! PYTHON$STARTUP.COM +$ !+ +$ ! 06-May-2020 +$ ! Startup file for Python 3.8.2 on OpenVMS +$ ! +$ !- +$ +$ set noon +$ +$ file = f$search("sys$startup:python$define_logicals.com") +$ +$ if file .eqs. "" +$ then +$ root = f$trnlmn("pcsi$destination") +$ if "''root'" .eqs. "" +$ then +$ write sys$output "The logical name python$root is not defined; check installation." +$ exit +$ endif +$ +$ root = "''root" - "]" + "python.]" +$ define/system/trans=concealed python$root 'root +$ define/system python$shr python$root:[lib]python$shr.exe +$ else +$ @sys$startup:python$define_logicals.com +$ endif +$ +$!! if f$file_attributes("PYTHON$SHR","KNOWN") +$!! then +$!! install replace python$shr +$!! else +$!! install add python$shr /open /header_res /share +$!! endif +$ +$ exit diff --git a/vms/python_wheels$define_root.com b/vms/python_wheels$define_root.com new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3B5dGhvbl93aGVlbHMkZGVmaW5lX3Jvb3QuY29t --- /dev/null +++ b/vms/python_wheels$define_root.com @@ -0,0 +1,15 @@ +$! 'f$verify(0) +$ +$! Create python_wheels$define_logicals.com such that python_wheels$root is corectly defined +$! +$ +$ root = f$trnlmn("pcsi$destination") - "]" + "wheels.]" +$ +$ open/write fd sys$common:[sysmgr]python_wheels$define_logicals.com +$ write fd "$ define/system/trans=concealed python_wheels$root ''root'" +$ write fd "$ define/system PIP_FIND_LINKS ""/PYTHON_WHEELS$ROOT""" +$ write fd "$ exit" +$ close fd +$ purge/nolog sys$startup:python_wheels$define_logicals.com +$ +$ exit diff --git a/vms/python_wheels$startup.com b/vms/python_wheels$startup.com new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3B5dGhvbl93aGVlbHMkc3RhcnR1cC5jb20= --- /dev/null +++ b/vms/python_wheels$startup.com @@ -0,0 +1,28 @@ +$ ! PYTHON_WHEELS$STARTUP.COM +$ !+ +$ ! 02-Nov-2020 +$ ! Startup file for wheels for Python 3.8.2 on OpenVMS +$ ! +$ !- +$ +$ set noon +$ +$ file = f$search("sys$startup:python_wheels$define_logicals.com") +$ +$ if file .eqs. "" +$ then +$ root = f$trnlmn("pcsi$destination") +$ if "''root'" .eqs. "" +$ then +$ write sys$output "The logical name python_wheels$root is not defined; check installation." +$ exit +$ endif +$ +$ root = "''root" - "]" + "wheels.]" +$ define/system/trans=concealed PYTHON_WHEELS$ROOT 'root +$ define/system PIP_FIND_LINKS "/PYTHON_WHEELS$ROOT" +$ else +$ @sys$startup:python_wheels$define_logicals.com +$ endif +$ +$ exit diff --git a/vms/static_assert.h b/vms/static_assert.h new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3N0YXRpY19hc3NlcnQuaA== --- /dev/null +++ b/vms/static_assert.h @@ -0,0 +1,16 @@ +#ifndef STATIC_ASSERT +#define ASSERT_CONCAT_(a, b) a##b +#define ASSERT_CONCAT(a, b) ASSERT_CONCAT_(a, b) +/* These can't be used after statements in c89. */ +#ifdef __COUNTER__ + #define STATIC_ASSERT(e,m) \ + ;enum { ASSERT_CONCAT(static_assert_, __COUNTER__) = 1/(int)(!!(e)) } +#else + /* This can't be used twice on the same line so ensure if using in headers + * that the headers are not included twice (by wrapping in #ifndef...#endif) + * Note it doesn't cause an issue when used on same line of separate modules + * compiled with gcc -combine -fwhole-program. */ + #define STATIC_ASSERT(e,m) \ + ;enum { ASSERT_CONCAT(assert_line_, __LINE__) = 1/(int)(!!(e)) } +#endif +#endif diff --git a/vms/stdioreadline.c b/vms/stdioreadline.c new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3N0ZGlvcmVhZGxpbmUuYw== --- /dev/null +++ b/vms/stdioreadline.c @@ -0,0 +1,106 @@ +#include <limits.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include <descrip.h> +#include <lib$routines.h> +#include <smg$routines.h> /* SMG$name */ +#include <smgdef.h> /* SMG$x_name */ +#include <smgmsg.h> /* SMG$_name */ +#include <ssdef.h> /* SS$_NAME */ +#include <trmdef.h> +#include <stsdef.h> + +#define S_PASSWORD 255 /* size of password buffer */ + +/* SMG$ support */ +static unsigned long pyvms_gl_keyboard_id; /* SMG$ */ +static unsigned long pyvms_gl_key_table_id; /* SMG$ */ +static char LineBuffer[256]; + +char * +vms__StdioReadline(FILE *sys_stdin, FILE *sys_stdout, char *prompt) +{ + int n; + struct dsc$descriptor_s inputD; + struct dsc$descriptor_s promptD; + struct dsc$descriptor_s* promptPtr; + unsigned short int reslen; + unsigned long flags = 0; + int s; + char promptLocal[32]; + + if (pyvms_gl_key_table_id == 0) { + s = smg$create_key_table(&pyvms_gl_key_table_id); + if (!$VMS_STATUS_SUCCESS(s)) { + perror("SMG$CREATE_KEY_TABLE() failed\n"); + exit(s); + } + } + if (pyvms_gl_keyboard_id == 0) { + s = smg$create_virtual_keyboard(&pyvms_gl_keyboard_id); + if (!$VMS_STATUS_SUCCESS(s)) { + perror("SMG$CREATE_VIRTUAL_KEYBOARD() failed\n"); + exit(s); + } + } + + fflush(stdout); + + /* set up descriptors */ + inputD.dsc$w_length = sizeof(LineBuffer) - 2; + inputD.dsc$b_dtype = DSC$K_DTYPE_T; + inputD.dsc$b_class = DSC$K_CLASS_S; /* @@ use a Dyndesc ? */ + inputD.dsc$a_pointer = LineBuffer; + + if (prompt) + { + strcpy(promptLocal, prompt); + promptD.dsc$w_length = strlen(prompt); + promptD.dsc$b_dtype = DSC$K_DTYPE_T; + promptD.dsc$b_class = DSC$K_CLASS_S; + promptD.dsc$a_pointer = promptLocal; + promptPtr = &promptD; + } + else + { + promptPtr = 0; /* no prompt */ + } + + s = smg$read_composed_line + (&pyvms_gl_keyboard_id /* keyboard-id */ + ,&pyvms_gl_key_table_id /* [key-table-id] */ + ,&inputD /* resultant-string */ + ,promptPtr /* [prompt-string] */ + ,&reslen /* [resultant-length] */ + ,0 /* [display-id] */ + ,&flags /* [flags] */ + ,0 /* [initial-string] */ + ,0 /* [timeout] */ + ,0 /* [rendition-set] */ + ,0 /* [rendition-complement] */ + ,0 /* [word-terminator-code] */ + ); + + if ((s != SS$_NORMAL) && + (s != SS$_ABORT) && + (s != SS$_CANCEL) && + (s != SMG$_EOF) + ) + { + return NULL; + } + + if (s == SMG$_EOF) { + LineBuffer[reslen] = '\0'; + } else if ((s == SS$_ABORT) || (s == SS$_CANCEL)) { + return NULL; + } else { + LineBuffer[reslen] = '\n'; + LineBuffer[reslen+1] = '\0'; + } + + return LineBuffer; +} + diff --git a/vms/syslog.c b/vms/syslog.c new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3N5c2xvZy5j --- /dev/null +++ b/vms/syslog.c @@ -0,0 +1,454 @@ +#pragma module SYSLOG "V1.03" + +/* +** +** � Copyright 2002 Hewlett-Packard Development Company, L.P. +** +** Hewlett-Packard and the Hewlett-Packard logo are trademarks +** of Hewlett-Packard Development Company L.P. in the U.S. and/or +** other countries. +** +** Confidential computer software. +** Valid license from Hewlett-Packard required for possession, use +** or copying. Consistent with FAR 12.211 and 12.212, Commercial +** Computer Software, Computer Software Documentation, and Technical +** Data for Commercial. Items are licensed to the U.S. Government +** under vendor's standard commercial license. +** +** Hewlett-Packard shall not be liable for technical or editorial +** errors or omissions contained herein. The information is provided +** "as is" without warranty of any kind and is subject to change +** without notice. The warranties for Hewlett-Packard products are +** set forth in the express warranty statements accompanying such +** products. Nothing herein should be construed as constituting an +** additional warranty. +** +*/ + +/* +** +** FACILITY: +** +** Secure Web Server +** +** ABSTRACT: +** +** Interface for openlog, syslog, closelog +** +** AUTHOR: +** +** Matthew Doremus +** +** +** CREATION DATE: August 29, 2001 +** +** MODIFICATION HISTORY: +** +** V1.00 Matthew Doremus 29-Aug-2001 +** Initial development. +** +*/ + +#ifndef __NEW_STARLET +#define __NEW_STARLET +#define __NEW_STARLET_SET +#endif + +#include <builtins.h> +#include <starlet.h> +#include <unixlib.h> +#include <descrip.h> +#include <stdlib.h> +#include <string.h> +#include <stdarg.h> +#include <opcdef.h> +#include <prdef.h> +#include <stdio.h> +#include <time.h> + +#include "syslog.h" + +#ifdef __NEW_STARLET_SET +#undef __NEW_STARLET_SET +#undef __NEW_STARLET +#endif + +/* +** Define local macro definitions +*/ +#define SYSLOG_MSG_SIZE 1024 +#define OPCOM_MSG_SIZE 128 +#define OPCOM_HDR_SIZE 8 +#ifndef MIN +#define MIN(x, y) (((x) < (y)) ? (x) : (y)) +#endif + +/* +** Define the code table structure +*/ +typedef struct _CodeTable { + char *text; + int code; +} CodeTable; + +#ifdef TEST_SYSLOG +/* +** Define the Options table array +*/ +static const CodeTable OptionsTable[] = { + "pid", LOG_PID, + "cons", LOG_CONS, + "odelay", LOG_ODELAY, + "ndelay", LOG_NDELAY, + "nowait", LOG_NOWAIT, + "perror", LOG_PERROR, + "", -1}; +#endif + +/* +** Define the Facility table array +*/ +static const CodeTable FacilityTable[] = { + "kern", LOG_KERN, + "user", LOG_USER, + "mail", LOG_MAIL, + "daemon", LOG_DAEMON, + "auth", LOG_AUTH, + "syslog", LOG_SYSLOG, + "lpr", LOG_LPR, + "news", LOG_NEWS, + "uucp", LOG_UUCP, + "cron", LOG_CRON, + "", 0, + "", 0, + "", 0, + "", 0, + "", 0, + "", 0, + "local0", LOG_LOCAL0, + "local1", LOG_LOCAL1, + "local2", LOG_LOCAL2, + "local3", LOG_LOCAL3, + "local4", LOG_LOCAL4, + "local5", LOG_LOCAL5, + "local6", LOG_LOCAL6, + "local7", LOG_LOCAL7, + "", -1}; + +/* +** Define the Priority table array +*/ +static const CodeTable PriorityTable[] = { + "emerg", LOG_EMERG, + "alert", LOG_ALERT, + "crit", LOG_CRIT, + "err", LOG_ERR, + "warning", LOG_WARNING, + "notice", LOG_NOTICE, + "info", LOG_INFO, + "debug", LOG_DEBUG, + "", -1}; + +/* +** Define the static values for syslog functions +*/ +static char *SysLogIdent = NULL; +static int SysLogOpt = -1; +static int SysLogPri = -1; + +/* +** Define prototypes for local functions +*/ +#ifdef TEST_SYSLOG +static int ParseArg (char *, const CodeTable [], int); +#endif + +#ifdef TEST_SYSLOG +/******************************************************************************/ +/*** ***/ +/******************************************************************************/ +main (int argc, char *argv[]) +{ +int Opt = LOG_PERROR, + Fac = LOG_USER, + Pri = LOG_INFO, + status, + i; + +/* +** Get the path name +*/ +if (argc < 2 || argc > 5) + { + printf ("Usage: SYSLOG message [options] [facility] [priority]\n"); + printf ("\tmessage: syslog message\n"); + printf ("\toptions: openlog options (default LOG_PERROR)\n"); + for (i = 0; OptionsTable[i].code != -1; i++) + if (strlen (OptionsTable[i].text) > 0) + printf ("\t\tLOG_%s\n", OptionsTable[i].text); + printf ("\tfacility: openlog facility (default LOG_USER)\n"); + for (i = 0; FacilityTable[i].code != -1; i++) + if (strlen (FacilityTable[i].text) > 0) + printf ("\t\tLOG_%s\n", FacilityTable[i].text); + printf ("\tpriority: syslog priority (default LOG_INFO)\n"); + for (i = 0; PriorityTable[i].code != -1; i++) + if (strlen (PriorityTable[i].text) > 0) + printf ("\t\tLOG_%s\n", PriorityTable[i].text); + exit (1); + } + +/* +** Parse the Options +*/ +if (argc > 2) + Opt = ParseArg (argv[2], OptionsTable, Opt); + +/* +** Parse the Facility +*/ +if (argc > 3) + Fac = ParseArg (argv[3], FacilityTable, Fac); + +/* +** Parse the Priority +*/ +if (argc > 4) + Pri = ParseArg (argv[4], PriorityTable, Pri); + +/* +** Call the openlog, syslog, closelog functions +*/ +openlog ("TEST", Opt, Fac); +syslog (Pri, argv[1]); +closelog (); + +} +/******************************************************************************/ +/*** ***/ +/******************************************************************************/ +static int ParseArg (char *ArgStr, const CodeTable ArgTbl[], int DefVal) +{ +char *StrPtr = ArgStr, + *TokPtr = ArgStr; +int Finished = 0, + SetVal = 0, + RetVal = 0, + i; + +while (TokPtr) + { + /* + ** Locate the next token and null terminate it + */ + TokPtr = strstr (StrPtr, "|"); + if (TokPtr) + *TokPtr = '\0'; + + if (strncasecmp (StrPtr, "LOG_", 4) == 0) + StrPtr = StrPtr + 4; + + for (i = 0; ArgTbl[i].code != -1; i++) + { + if (strcasecmp (StrPtr, ArgTbl[i].text) == 0) + { + RetVal |= ArgTbl[i].code; + SetVal = 1; + break; + } + } + + /* + ** Move past the last token + */ + if (TokPtr) + StrPtr = TokPtr + 1; + } + +/* +** If node code value was found then return the default value +*/ +if (SetVal == 0) + RetVal = DefVal; + +/* +** Return the code value +*/ +return (RetVal); + +} +#endif + +/******************************************************************************/ +/*** ***/ +/******************************************************************************/ +void syslog (int priority, const char *message, ...) +{ +struct dsc64$descriptor OpComDesc = {0, DSC$K_DTYPE_T, DSC$K_CLASS_S, 0}; +char MsgHdr[SYSLOG_MSG_SIZE]; +char MsgBuf[SYSLOG_MSG_SIZE]; +char SndBuf[SYSLOG_MSG_SIZE]; +OPCDEF OpComMsg; +time_t TimeBin; +char *TimeStr; +int FacilityIdx, + PriorityIdx, + status = 1, + SndLen; +va_list ap; + +/* +** Construct the variable length message +*/ +va_start (ap, message); +vsprintf (MsgBuf, message, ap); +va_end (ap); + +/* +** Initialize the syslog info if necessary +*/ +if (SysLogOpt < 0 || SysLogPri < 0) + closelog (); + +/* +** Determine the Facility & Priority array indexes +*/ +FacilityIdx = (LOG_FAC(priority) ? LOG_FAC(priority) : LOG_FAC(SysLogPri)); +PriorityIdx = LOG_PRI(priority); + +/* +** Construct the log message header +*/ +sprintf (MsgHdr, "[%s] [%s] ", + FacilityTable[FacilityIdx].text, PriorityTable[PriorityIdx].text); +if (SysLogOpt & LOG_PID) + sprintf (MsgHdr + strlen (MsgHdr), "(%08X) ", getpid ()); +if (SysLogIdent) + sprintf (MsgHdr + strlen (MsgHdr), "%s:", SysLogIdent); + +/* +** Send the message to the console if requested +*/ +if (SysLogOpt & LOG_CONS) + { + /* + ** Create the opcom log message to be sent + */ + sprintf (SndBuf, "%s%s", MsgHdr, MsgBuf); + + /* + ** Establish the message length + */ + SndLen = MIN(strlen (SndBuf), OPCOM_MSG_SIZE); + + /* + ** Setup the opcom request + */ + memset (&OpComMsg, 0, sizeof (OpComMsg)); + OpComMsg.opc$b_ms_type = OPC$_RQ_RQST; + OpComMsg.opc$b_ms_target = OPC$M_NM_CENTRL; + OpComMsg.opc$l_ms_rqstid = 0; + memcpy (&OpComMsg.opc$l_ms_text, SndBuf, SndLen); + + /* + ** Setup the opcom request descriptor + */ + OpComDesc.dsc64$q_length = SndLen + OPCOM_HDR_SIZE; + OpComDesc.dsc64$pq_pointer = (char *) &OpComMsg; + + /* + ** Send the log message to opcom + */ + status = SYS$SNDOPR (&OpComDesc, 0); + } + +/* +** Send the message to standard error if requested or console write failed +*/ +if (SysLogOpt & LOG_PERROR || ! (status & 1)) + { + /* + ** Get the current time + */ + TimeBin = time (NULL); + TimeStr = ctime (&TimeBin); + TimeStr[strlen (TimeStr) - 1] = '\0'; + + /* + ** Create the standard error log message to be written + */ + sprintf (SndBuf, "[%s] %s%s", TimeStr, MsgHdr, MsgBuf); + + /* + ** Write the log message to standard error + */ + fprintf (stderr, SndBuf); + } + +} + +/******************************************************************************/ +/*** ***/ +/******************************************************************************/ +void openlog (const char *ident, int logopt, int facility) +{ +unsigned __int64 CurMode = (__PAL_RD_PS() & PR$M_PS_CURMOD) >> 3; +int i; + +/* +** Close any previous log info +*/ +closelog (); + +/* +** Save the log ident +*/ +if (ident) + SysLogIdent = strdup (ident); + +/* +** Save the log options +*/ +if (! ((logopt & LOG_PERROR) || (logopt & LOG_CONS))) + SysLogOpt = logopt | LOG_PERROR; +else + SysLogOpt = logopt; + +/* +** Initialize the priority +*/ +if (facility == LOG_KERN && CurMode != PR$C_PS_KERNEL) + SysLogPri = LOG_USER; +else + SysLogPri = facility; +for (i = 0; PriorityTable[i].code != -1; i++) + SysLogPri |= PriorityTable[i].code; + +} + +/******************************************************************************/ +/*** ***/ +/******************************************************************************/ +void closelog (void) +{ +int i; + +/* +** Initialize the ident +*/ +if (SysLogIdent) + free (SysLogIdent); +SysLogIdent = NULL; + +/* +** Initialize the options +*/ +SysLogOpt = LOG_PERROR; + +/* +** Initialize the priority +*/ +SysLogPri = LOG_USER; +for (i = 0; PriorityTable[i].code != -1; i++) + SysLogPri |= PriorityTable[i].code; + +} diff --git a/vms/syslog.h b/vms/syslog.h new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3N5c2xvZy5o --- /dev/null +++ b/vms/syslog.h @@ -0,0 +1,92 @@ +/* +** +** � Copyright 2002 Hewlett-Packard Development Company, L.P. +** +** Hewlett-Packard and the Hewlett-Packard logo are trademarks +** of Hewlett-Packard Development Company L.P. in the U.S. and/or +** other countries. +** +** Confidential computer software. +** Valid license from Hewlett-Packard required for possession, use +** or copying. Consistent with FAR 12.211 and 12.212, Commercial +** Computer Software, Computer Software Documentation, and Technical +** Data for Commercial. Items are licensed to the U.S. Government +** under vendor's standard commercial license. +** +** Hewlett-Packard shall not be liable for technical or editorial +** errors or omissions contained herein. The information is provided +** "as is" without warranty of any kind and is subject to change +** without notice. The warranties for Hewlett-Packard products are +** set forth in the express warranty statements accompanying such +** products. Nothing herein should be construed as constituting an +** additional warranty. +** +*/ + +#ifndef __SYSLOG_H +#define __SYSLOG_H 1 + +#define LOG_KERN (0<<3) /* kernel messages */ +#define LOG_USER (1<<3) /* random user-level messages */ +#define LOG_MAIL (2<<3) /* mail system */ +#define LOG_DAEMON (3<<3) /* system daemons */ +#define LOG_AUTH (4<<3) /* security/authorization messages */ +#define LOG_SYSLOG (5<<3) /* messages generated internally by syslogd */ +#define LOG_LPR (6<<3) /* line printer subsystem */ +#define LOG_NEWS (7<<3) /* network news subsystem */ +#define LOG_UUCP (8<<3) /* UUCP subsystem */ +#define LOG_CRON (9<<3) /* clock daemon */ +#define LOG_LOCAL0 (16<<3) /* reserved for local use */ +#define LOG_LOCAL1 (17<<3) /* reserved for local use */ +#define LOG_LOCAL2 (18<<3) /* reserved for local use */ +#define LOG_LOCAL3 (19<<3) /* reserved for local use */ +#define LOG_LOCAL4 (20<<3) /* reserved for local use */ +#define LOG_LOCAL5 (21<<3) /* reserved for local use */ +#define LOG_LOCAL6 (22<<3) /* reserved for local use */ +#define LOG_LOCAL7 (23<<3) /* reserved for local use */ + +#define LOG_NFACILITIES 24 /* maximum number of facilities */ +#define LOG_FACMASK 0x03f8 /* mask to extract facility part */ +#define LOG_FAC(p) (((p) & LOG_FACMASK) >> 3) /* extract facility */ + +/* +** Priorities (these are ordered) +*/ +#define LOG_EMERG 0 /* system is unusable */ +#define LOG_ALERT 1 /* action must be taken immediately */ +#define LOG_CRIT 2 /* critical conditions */ +#define LOG_ERR 3 /* error conditions */ +#define LOG_WARNING 4 /* warning conditions */ +#define LOG_NOTICE 5 /* normal but signification condition */ +#define LOG_INFO 6 /* informational */ +#define LOG_DEBUG 7 /* debug-level messages */ + +#define LOG_PRIMASK 0x0007 /* mask to extract priority part (internal) */ +#define LOG_PRI(p) ((p) & LOG_PRIMASK) /* extract priority */ +#define LOG_MAKEPRI(fac, pri) (((fac) << 3) | (pri)) + +/* +** arguments to setlogmask. +*/ +#define LOG_MASK(pri) (1 << (pri)) /* mask for one priority */ +#define LOG_UPTO(pri) ((1 << ((pri)+1)) - 1) /* all priorities through pri*/ + +/* + * Option flags for openlog. + * + * LOG_ODELAY no longer does anything; LOG_NDELAY is the + * inverse of what it used to be. + */ +#define LOG_PID 0x01 /* log the pid with each message */ +#define LOG_CONS 0x02 /* log on the console if errors in sending */ +#define LOG_ODELAY 0x04 /* delay open until syslog() is called */ +#define LOG_NDELAY 0x08 /* don't delay open */ +#define LOG_NOWAIT 0x10 /* if forking to log on console, don't wait() */ +#define LOG_PERROR 0x20 /* print log message also to standard error */ + +void openlog (const char *, int, int); +void syslog (int, const char *, ...); +void closelog (void); +int setlogmask (int); + +#endif /* __SYSLOG_H */ diff --git a/vms/termios.h b/vms/termios.h new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3Rlcm1pb3MuaA== --- /dev/null +++ b/vms/termios.h @@ -0,0 +1,321 @@ +/* + ************************************************************************* + * * + * Copyright 2000 Compaq Computer Corporation * + * * + * COMPAQ Registered in U.S. Patent and Trademark Office. * + * * + ************************************************************************* + * IMPORTANT: Carefully read the License Terms below before * + * proceeding. By use of these materials you agree to these terms. * + * If you do not agree to these terms, you may not use this software or * + * the accompanying documentation. * + ************************************************************************* + * LICENSE TERMS * + * 1. GRANT * + * Compaq Computer Corporation ("COMPAQ") grants you the right to use, * + * modify, and distribute the following source code (the "Software") * + * on any number of computers. You may use the Software as part of * + * creating a software program or product intended for commercial or * + * non-commercial distribution in machine-readable source code, binary, * + * or executable formats. You may distribute the Software as * + * machine-readable source code provided this license is not removed * + * from the Software and any modifications are conspicuously indicated. * + * 2. COPYRIGHT * + * The Software is owned by COMPAQ and its suppliers and is protected by * + * copyright laws and international treaties. Your use of the Software * + * and associated documentation is subject to the applicable copyright * + * laws and the express rights and restrictions of these terms. * + * 3. RESTRICTIONS * + * You may not remove any copyright, trademark, or other proprietary * + * notices from the Software or the associated documentation. * + * You are responsible for compliance with all applicable export or * + * re-export control laws and regulations if you export the Software. * + * This license is governed by and is to be construed under the laws * + * of the State of Texas. * + * * + * DISCLAIMER OF WARRANTY AND LIABILITY * + * Compaq shall not be liable for technical or editorial errors or * + * omissions contained herein. The information contained herein is * + * subject to change without notice. * + * * + * THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. * + * THE ENTIRE RISK ARISING OUT OF THE USE OF THIS SOFTWARE REMAINS WITH * + * RECIPIENT. IN NO EVENT SHALL COMPAQ BE LIABLE FOR ANY DIRECT, * + * CONSEQUENTIAL, INCIDENTAL, SPECIAL, PUNITIVE OR OTHER DAMAGES * + * WHATSOEVER (INCLUDING WITHOUT LIMITATION DAMAGES FOR LOSS OF BUSINESS * + * PROFITS, BUSINESS INTERRUPTION, OR LOSS OF BUSINESS INFORMATION), * + * EVEN IF COMPAQ HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES * + * AND WHETHER IN AN ACTION OF CONTRACT OR TORT INCLUDING NEGLIGENCE. * + * * + * If you have any questions concerning this license, please contact: * + * Compaq Computer Corporation, Software Business Practices, ZKO1-2/D22, * + * 110 Spit Brook Road, Nashua, NH. 03062-2698. * + * * + ************************************************************************* + */ + +# ifndef __TERMIOS_LOADED +# define __TERMIOS_LOADED 1 + + +# if __DECC_VER<50000000 && __DECCXX_VER<50000000 /* PROLOGUE version X-7 */ +# error POSIX for OpenVMS V3.0 requires DEC C or DEC C++ V5.0 or later +# endif +# if __64BITS_A || __64BITS_B +# error The /INTS compile time option is not supported +# endif +# pragma __environment __save +# pragma __environment __header_defaults +# pragma __extern_model __strict_refdef +# if __cplusplus +extern "C" { +# endif +# ifndef __CHAR_SP +# define __CHAR_SP 1 +# ifdef __INITIAL_POINTER_SIZE +# pragma __required_pointer_size __long +# endif + typedef char * __char_lp; /* 64-bit pointer */ + typedef void * __void_lp; /* 64-bit pointer */ + typedef int * __int_lp; /* 64-bit pointer */ + typedef const char *__kchar_lp; /* 64-bit pointer */ + typedef const void *__kvoid_lp; /* 64-bit pointer */ + typedef const int *__kint_lp; /* 64-bit pointer */ +# ifdef __INITIAL_POINTER_SIZE +# pragma __required_pointer_size __short +# endif + typedef char * __char_sp; /* 32-bit pointer */ + typedef void * __void_sp; /* 32-bit pointer */ + typedef int * __int_sp; /* 32-bit pointer */ + typedef const char *__kchar_sp; /* 32-bit pointer */ + typedef const void *__kvoid_sp; /* 32-bit pointer */ + typedef const int *__kint_sp; /* 64-bit pointer */ +# endif + +typedef unsigned long tcflag_t; +typedef unsigned char speed_t; +typedef unsigned char cc_t; + +# define VINTR 0 +# define VQUIT 1 +# define VERASE 2 +# define VKILL 3 +# define VEOF 4 +# define VMIN 5 +# define VEOL 6 +# define VTIME 7 +# define VSUSP 8 +# define VSTART 9 +# define VSTOP 10 +# define VDEBUG 11 + +# define VEOL2 12 /* BRC 22-Jun-2017 */ +# define VWERASE 13 /* BRC 22-Jun-2017 */ +# define VREPRINT 14 /* BRC 22-Jun-2017 */ +# define VDSUSP 14 /* BRC 22-Jun-2017 */ +# define VLNEXT 16 /* BRC 22-Jun-2017 */ +# define VDISCARD 17 /* BRC 22-Jun-2017 */ +# define VSTATUS 18 /* BRC 22-Jun-2017 */ + +# define NCCS 20 /* Includes room for future extensions */ + +struct termios +{ + tcflag_t c_iflag; +# define IGNBRK 0000001 +# define BRKINT 0000002 +# define IGNPAR 0000004 +# define PARMRK 0000010 +# define INPCK 0000020 +# define ISTRIP 0000040 +# define INLCR 0000100 +# define IGNCR 0000200 +# define ICRNL 0000400 +# define IUCLC 0001000 +# define IXON 0002000 +# define IXANY 0004000 +# define IXOFF 0010000 +# define IMAXBEL 0020000 /* BRC 22-Jun-2017 */ + + tcflag_t c_oflag; +# define OPOST 0000001 +# define OLCUC 0000002 +# define ONLCR 0000004 +# define OCRNL 0000010 +# define ONOCR 0000020 +# define ONLRET 0000040 +# define OFILL 0000100 +# define OFDEL 0000200 +# define NLDLY 0000400 +# define NL0 0000000 +# define NL1 0000400 +# define VTDLY 0001000 +# define VT0 0000000 +# define VT1 0001000 +# define TABDLY 0006000 +# define TAB0 0000000 +# define TAB1 0002000 +# define TAB2 0004000 +# define TAB3 0006000 +# define CRDLY 0030000 +# define CR0 0000000 +# define CR1 0010000 +# define CR2 0020000 +# define CR3 0030000 +# define FFDLY 0040000 +# define FF0 0000000 +# define FF1 0040000 +# define BSDLY 0100000 +# define BS0 0000000 +# define BS1 0100000 + + tcflag_t c_cflag; +# define CIGNORE 0000001 /* BRC 22-Jun-2017 */ +# define CSIZE 0000060 +# define CS5 0000000 +# define CS6 0000020 +# define CS7 0000040 +# define CS8 0000060 +# define CSTOPB 0000100 +# define CREAD 0000200 +# define PARENB 0000400 +# define PARODD 0001000 +# define HUPCL 0002000 +# define CLOCAL 0004000 +# define CRTSCTS 0200000 /* BRC 22-Jun-2017 */ +# define CDTRCTS 0400000 /* BRC 22-Jun-2017 */ +# define MDMBUF 4000000 /* BRC 22-Jun-2017 */ + + tcflag_t c_lflag; +#ifdef __USE_BSD +# define ECHOKE (1 << 0) /* Visual erase for KILL. */ +#endif +#define _ECHOE (1 << 1) /* Visual erase for ERASE. */ +#define ECHOE _ECHOE +#define _ECHOK (1 << 2) /* Echo NL after KILL. */ +#define ECHOK _ECHOK +#define _ECHO (1 << 3) /* Enable echo. */ +#define ECHO _ECHO +#define _ECHONL (1 << 4) /* Echo NL even if ECHO is off. */ +#define ECHONL _ECHONL +#ifdef __USE_BSD +# define ECHOPRT (1 << 5) /* Hardcopy visual erase. */ +# define ECHOCTL (1 << 6) /* Echo control characters as ^X. */ +#endif +#define _ISIG (1 << 7) /* Enable signals. */ +#define ISIG _ISIG +#define _ICANON (1 << 8) /* Do erase and kill processing. */ +#define ICANON _ICANON +#ifdef __USE_BSD +# define ALTWERASE (1 << 9) /* Alternate WERASE algorithm. */ +#endif +#define _IEXTEN (1 << 10) /* Enable DISCARD and LNEXT. */ +#define IEXTEN _IEXTEN +#define EXTPROC (1 << 11) /* External processing. */ +#define _TOSTOP (1 << 22) /* Send SIGTTOU for background output. */ +#define TOSTOP _TOSTOP +#ifdef __USE_BSD +# define FLUSHO (1 << 23) /* Output being flushed (state). */ +# define NOKERNINFO (1 << 25) /* Disable VSTATUS. */ +# define PENDIN (1 << 29) /* Retype pending input (state). */ +#endif +#define _NOFLSH (1 << 31) /* Disable flush after interrupt. */ +#define NOFLSH _NOFLSH +#if 0 +# define ISIG 0000001 +# define ICANON 0000002 +# define XCASE 0000004 +# define ECHO 0000010 +# define ECHOE 0000020 +# define ECHOK 0000040 +# define ECHONL 0000100 +# define NOFLSH 0000200 +# define TOSTOP (0x40<<16) +# define IEXTEN (0x80<<16) +#endif + + speed_t c_ispeed; + speed_t c_ospeed; +# define B0 0 +# define B50 1 +# define B75 2 +# define B110 3 +# define B134 4 +# define B150 5 +# define B200 255 /* Not available on VAX/VMS */ +# define B300 6 +# define B600 7 +# define B1200 8 +# define B1800 9 +# define B2000 10 /* Non-standard speed */ +# define B2400 11 +# define B3600 12 /* Non-standard speed */ +# define B4800 13 +# define B7200 14 /* Non-standard speed */ +# define B9600 15 +# define B19200 16 +# define B38400 17 + + cc_t c_cc [NCCS]; +} ; + +# define TCSANOW 0 +# define TCSADRAIN 1 +# define TCSAFLUSH 2 + +# define TCIFLUSH 0 +# define TCOFLUSH 1 +# define TCIOFLUSH 2 + +# define TCOOFF 0 +# define TCOON 1 +# define TCIOFF 2 +# define TCION 3 + +# if __INITIAL_POINTER_SIZE > 0 +# pragma __pointer_size __long +# endif + +int tcgetattr (int __fd, struct termios * __termios_p); +int tcsetattr (int __fd, int __opt, const struct termios * __termios_p); +int tcsendbreak (int __fd, int __duration); +int tcdrain (int __fd); +int tcflush (int __fd, int __queue); +int tcflow (int __fd, int __action); + +# if __cplusplus + inline speed_t cfgetispeed (const struct termios * __termios_p) + { + return __termios_p->c_ispeed; + } + inline speed_t cfgetospeed (const struct termios * __termios_p) + { + return __termios_p->c_ospeed; + } + inline int cfsetispeed (struct termios * __termios_p, speed_t __speed) + { + __termios_p->c_ispeed = __speed; return 0; + } + inline int cfsetospeed (struct termios * __termios_p, speed_t __speed) + { + __termios_p->c_ospeed = __speed; return 0; + } +# else + speed_t cfgetispeed (const struct termios * __termios_p); + speed_t cfgetospeed (const struct termios * __termios_p); + int cfsetispeed (struct termios * __termios_p, speed_t __speed); + int cfsetospeed (struct termios * __termios_p, speed_t __speed); +# define cfgetispeed(tp) ((tp)->c_ispeed) +# define cfgetospeed(tp) ((tp)->c_ospeed) +# define cfsetispeed(tp,sp) ((tp)->c_ispeed=(sp), 0) +# define cfsetospeed(tp,sp) ((tp)->c_ospeed=(sp), 0) +# endif + +# if __cplusplus /* EPILOGUE version X-5 */ +} +# endif +# pragma __environment __restore + +# endif /* _TERMIOS_LOADED */ + diff --git a/vms/termios.h-keep b/vms/termios.h-keep new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3Rlcm1pb3MuaC1rZWVw --- /dev/null +++ b/vms/termios.h-keep @@ -0,0 +1,270 @@ +/* + ************************************************************************* + * * + * Copyright 2000 Compaq Computer Corporation * + * * + * COMPAQ Registered in U.S. Patent and Trademark Office. * + * * + ************************************************************************* + * IMPORTANT: Carefully read the License Terms below before * + * proceeding. By use of these materials you agree to these terms. * + * If you do not agree to these terms, you may not use this software or * + * the accompanying documentation. * + ************************************************************************* + * LICENSE TERMS * + * 1. GRANT * + * Compaq Computer Corporation ("COMPAQ") grants you the right to use, * + * modify, and distribute the following source code (the "Software") * + * on any number of computers. You may use the Software as part of * + * creating a software program or product intended for commercial or * + * non-commercial distribution in machine-readable source code, binary, * + * or executable formats. You may distribute the Software as * + * machine-readable source code provided this license is not removed * + * from the Software and any modifications are conspicuously indicated. * + * 2. COPYRIGHT * + * The Software is owned by COMPAQ and its suppliers and is protected by * + * copyright laws and international treaties. Your use of the Software * + * and associated documentation is subject to the applicable copyright * + * laws and the express rights and restrictions of these terms. * + * 3. RESTRICTIONS * + * You may not remove any copyright, trademark, or other proprietary * + * notices from the Software or the associated documentation. * + * You are responsible for compliance with all applicable export or * + * re-export control laws and regulations if you export the Software. * + * This license is governed by and is to be construed under the laws * + * of the State of Texas. * + * * + * DISCLAIMER OF WARRANTY AND LIABILITY * + * Compaq shall not be liable for technical or editorial errors or * + * omissions contained herein. The information contained herein is * + * subject to change without notice. * + * * + * THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. * + * THE ENTIRE RISK ARISING OUT OF THE USE OF THIS SOFTWARE REMAINS WITH * + * RECIPIENT. IN NO EVENT SHALL COMPAQ BE LIABLE FOR ANY DIRECT, * + * CONSEQUENTIAL, INCIDENTAL, SPECIAL, PUNITIVE OR OTHER DAMAGES * + * WHATSOEVER (INCLUDING WITHOUT LIMITATION DAMAGES FOR LOSS OF BUSINESS * + * PROFITS, BUSINESS INTERRUPTION, OR LOSS OF BUSINESS INFORMATION), * + * EVEN IF COMPAQ HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES * + * AND WHETHER IN AN ACTION OF CONTRACT OR TORT INCLUDING NEGLIGENCE. * + * * + * If you have any questions concerning this license, please contact: * + * Compaq Computer Corporation, Software Business Practices, ZKO1-2/D22, * + * 110 Spit Brook Road, Nashua, NH. 03062-2698. * + * * + ************************************************************************* + */ + +# ifndef __TERMIOS_LOADED +# define __TERMIOS_LOADED 1 + + +# if __DECC_VER<50000000 && __DECCXX_VER<50000000 /* PROLOGUE version X-7 */ +# error POSIX for OpenVMS V3.0 requires DEC C or DEC C++ V5.0 or later +# endif +# if __64BITS_A || __64BITS_B +# error The /INTS compile time option is not supported +# endif +# pragma __environment __save +# pragma __environment __header_defaults +# pragma __extern_model __strict_refdef +# if __cplusplus +extern "C" { +# endif +# ifndef __CHAR_SP +# define __CHAR_SP 1 +# ifdef __INITIAL_POINTER_SIZE +# pragma __required_pointer_size __long +# endif + typedef char * __char_lp; /* 64-bit pointer */ + typedef void * __void_lp; /* 64-bit pointer */ + typedef int * __int_lp; /* 64-bit pointer */ + typedef const char *__kchar_lp; /* 64-bit pointer */ + typedef const void *__kvoid_lp; /* 64-bit pointer */ + typedef const int *__kint_lp; /* 64-bit pointer */ +# ifdef __INITIAL_POINTER_SIZE +# pragma __required_pointer_size __short +# endif + typedef char * __char_sp; /* 32-bit pointer */ + typedef void * __void_sp; /* 32-bit pointer */ + typedef int * __int_sp; /* 32-bit pointer */ + typedef const char *__kchar_sp; /* 32-bit pointer */ + typedef const void *__kvoid_sp; /* 32-bit pointer */ + typedef const int *__kint_sp; /* 64-bit pointer */ +# endif + +typedef unsigned long tcflag_t; +typedef unsigned char speed_t; +typedef unsigned char cc_t; + +# define VINTR 0 +# define VQUIT 1 +# define VERASE 2 +# define VKILL 3 +# define VEOF 4 +# define VMIN 5 +# define VEOL 6 +# define VTIME 7 +# define VSUSP 8 +# define VSTART 9 +# define VSTOP 10 +# define VDEBUG 11 +# define NCCS 18 /* Includes room for future extensions */ + +struct termios +{ + tcflag_t c_iflag; +# define IGNBRK 0000001 +# define BRKINT 0000002 +# define IGNPAR 0000004 +# define PARMRK 0000010 +# define INPCK 0000020 +# define ISTRIP 0000040 +# define INLCR 0000100 +# define IGNCR 0000200 +# define ICRNL 0000400 +# define IUCLC 0001000 +# define IXON 0002000 +# define IXANY 0004000 +# define IXOFF 0010000 + + tcflag_t c_oflag; +# define OPOST 0000001 +# define OLCUC 0000002 +# define ONLCR 0000004 +# define OCRNL 0000010 +# define ONOCR 0000020 +# define ONLRET 0000040 +# define OFILL 0000100 +# define OFDEL 0000200 +# define NLDLY 0000400 +# define NL0 0000000 +# define NL1 0000400 +# define VTDLY 0001000 +# define VT0 0000000 +# define VT1 0001000 +# define TABDLY 0006000 +# define TAB0 0000000 +# define TAB1 0002000 +# define TAB2 0004000 +# define TAB3 0006000 +# define CRDLY 0030000 +# define CR0 0000000 +# define CR1 0010000 +# define CR2 0020000 +# define CR3 0030000 +# define FFDLY 0040000 +# define FF0 0000000 +# define FF1 0040000 +# define BSDLY 0100000 +# define BS0 0000000 +# define BS1 0100000 + + tcflag_t c_cflag; +# define CSIZE 0000060 +# define CS5 0000000 +# define CS6 0000020 +# define CS7 0000040 +# define CS8 0000060 +# define CSTOPB 0000100 +# define CREAD 0000200 +# define PARENB 0000400 +# define PARODD 0001000 +# define HUPCL 0002000 +# define CLOCAL 0004000 + + tcflag_t c_lflag; +# define ISIG 0000001 +# define ICANON 0000002 +# define XCASE 0000004 +# define ECHO 0000010 +# define ECHOE 0000020 +# define ECHOK 0000040 +# define ECHONL 0000100 +# define NOFLSH 0000200 +# define TOSTOP (0x40<<16) +# define IEXTEN (0x80<<16) + + speed_t c_ispeed; + speed_t c_ospeed; +# define B0 0 +# define B50 1 +# define B75 2 +# define B110 3 +# define B134 4 +# define B150 5 +# define B200 255 /* Not available on VAX/VMS */ +# define B300 6 +# define B600 7 +# define B1200 8 +# define B1800 9 +# define B2000 10 /* Non-standard speed */ +# define B2400 11 +# define B3600 12 /* Non-standard speed */ +# define B4800 13 +# define B7200 14 /* Non-standard speed */ +# define B9600 15 +# define B19200 16 +# define B38400 17 + + cc_t c_cc [NCCS]; +} ; + +# define TCSANOW 0 +# define TCSADRAIN 1 +# define TCSAFLUSH 2 + +# define TCIFLUSH 0 +# define TCOFLUSH 1 +# define TCIOFLUSH 2 + +# define TCOOFF 0 +# define TCOON 1 +# define TCIOFF 2 +# define TCION 3 + +# if __INITIAL_POINTER_SIZE > 0 +# pragma __pointer_size __long +# endif + +int tcgetattr (int __fd, struct termios * __termios_p); +int tcsetattr (int __fd, int __opt, const struct termios * __termios_p); +int tcsendbreak (int __fd, int __duration); +int tcdrain (int __fd);int tcflush (int __fd, int __queue); +int tcflow (int __fd, int __action); + +# if __cplusplus + inline speed_t cfgetispeed (const struct termios * __termios_p) + { + return __termios_p->c_ispeed; + } + inline speed_t cfgetospeed (const struct termios * __termios_p) + { + return __termios_p->c_ospeed; + } + inline int cfsetispeed (struct termios * __termios_p, speed_t __speed) + { + __termios_p->c_ispeed = __speed; return 0; + } + inline int cfsetospeed (struct termios * __termios_p, speed_t __speed) + { + __termios_p->c_ospeed = __speed; return 0; + } +# else + speed_t cfgetispeed (const struct termios * __termios_p); + speed_t cfgetospeed (const struct termios * __termios_p); + int cfsetispeed (struct termios * __termios_p, speed_t __speed); + int cfsetospeed (struct termios * __termios_p, speed_t __speed); +# define cfgetispeed(tp) ((tp)->c_ispeed) +# define cfgetospeed(tp) ((tp)->c_ospeed) +# define cfsetispeed(tp,sp) ((tp)->c_ispeed=(sp), 0) +# define cfsetospeed(tp,sp) ((tp)->c_ospeed=(sp), 0) +# endif + +# if __cplusplus /* EPILOGUE version X-5 */ +} +# endif +# pragma __environment __restore + +# endif /* _TERMIOS_LOADED */ + diff --git a/vms/tio.c b/vms/tio.c new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3Rpby5j --- /dev/null +++ b/vms/tio.c @@ -0,0 +1,1142 @@ +#ifndef __USE_BSD +#define __USE_BSD 1 +#endif +#ifndef __USE_GNU +#define __USE_GNU 1 +#endif +#ifndef __USE_XOPEN +#define __USE_XOPEN 1 +#endif +#ifndef __USE_MISC +#define __USE_MISC 1 +#endif + +#include <errno.h> +#include <stdlib.h> +#include <stsdef.h> +#include <descrip.h> +#include <efndef.h> +#include <string.h> +#include <iodef.h> +#include <unixlib.h> +#include <unixio.h> +#include <unistd.h> +#include <ssdef.h> +#include <libclidef.h> + +#define __NEW_STARLET 1 +#include <ttdef.h> +#include <tt3def.h> +#include <tt2def.h> + +#include "termios.h" + +/* General structure of these routines is that they will check the file + * descriptor to see if it is a tty and what its name is, and then use a + * VMS channel for it to do the QIOW, and a structure of UNIX attributes + * to actually do the I/O. The first access of a tty file descriptor will + * cause the VMS channel to be created and the structure of UNIX attributes + * to be populated. + */ + + +#pragma member_alignment save +#pragma nomember_alignment longword +#pragma message save +#pragma message disable misalgndmem + +/* Generic VMS item list structure */ +struct itmlst_3 { + unsigned short int buflen; + unsigned short int itmcode; + void *bufadr; + unsigned short int *retlen; +}; + +struct tt_framing_st { + unsigned tt_v_framesize : 4; + unsigned tt_v_altframe : 1; + unsigned tt_v_altrpar : 1; + unsigned tt_v_parity : 1; + unsigned tt_v_odd : 1; + unsigned tt_v_twostop : 1; + unsigned tt_v_disparerr : 1; + unsigned tt_v_altdispar : 1; + unsigned tt_v_break : 1; + unsigned tt_v_fill_43_ : 4; +}; + + +struct term_mode_iosb_st { + unsigned short sts; + unsigned char txspeed; + unsigned char rxspeed; + unsigned char cr_fill; + unsigned char lf_fill; + struct tt_framing_st framing; +}; + +struct term_char_st { + unsigned char class; + unsigned char type; + unsigned short page_width; + TTDEF ttdef; + TT2DEF tt2def; +#if (__CRTL_VER >= 080200000) && !defined (__VAX) + TT3DEF tt3def; +#endif +}; + +struct term_speed_st { + unsigned char txspeed; + unsigned char rxspeed; + unsigned short speed_fill_mbz; +}; + +struct term_fill_st { + unsigned short cr_fill; + unsigned short lf_fill; +}; + +struct term_read_iosb_st { + unsigned short sts; + unsigned short count; + unsigned short terminator; + unsigned short terminator_count; +}; + +struct term_write_iosb_st { + unsigned short sts; + unsigned short count; + unsigned short unknown1; + unsigned short unknown2; +}; + +#pragma message restore +#pragma member_alignment restore + +int LIB$DISABLE_CTRL(const unsigned long * new_mask, + unsigned long * old_mask); + +int LIB$ENABLE_CTRL(const unsigned long * new_mask, + unsigned long * old_mask); + +int LIB$SIGNAL(int); + +int SYS$ASSIGN( + const struct dsc$descriptor_s * devnam, + unsigned short * chan, + unsigned long acmode, + const struct dsc$descriptor_s * mbxnam, + unsigned long flags); + +int SYS$CRELNM( + const unsigned long * attr, + const struct dsc$descriptor_s * table_dsc, + const struct dsc$descriptor_s * name_dsc, + const unsigned char * acmode, + const struct itmlst_3 * item_list); + +int SYS$DASSGN(unsigned short chan); + +unsigned long SYS$QIOW( + unsigned long efn, + unsigned short chan, + unsigned long func, + void * iosb, + void (* astadr)(void *), + ...); + +int SYS$READEF(unsigned long efn, unsigned long * state); + +int SYS$TRNLNM( + const unsigned long * attr, + const struct dsc$descriptor_s * table_dsc, + struct dsc$descriptor_s * name_dsc, + const unsigned char * acmode, + const struct itmlst_3 * item_list); + +struct vms_info_st { + unsigned short channel; /* VMS channel assigned */ + unsigned short ref_cnt; /* Number of references */ + char * device_name; /* VMS device name for channel */ + unsigned long oldctrlmask; /* Old Control Mask */ + struct termios * term_attr; /* Unix terminal attributes */ + struct term_char_st *vms_char; /* VMS terminal characteristics */ + struct term_mode_iosb_st * vms_iosb; /* IOSB from sense mode */ +}; + + +/* Array to hold file descriptors that we are intercepting I/O for. */ +static struct vms_info_st * vms_info = NULL; +static int vms_info_size = -1; + + + +/* fd lookup routine. We need our special data with some file descriptors */ + +static struct vms_info_st * vms_lookup_fd(int fd) { + + /* Make sure memory of file descriptors is set up. */ + if (vms_info == NULL) { + + /* Find out how many channels are possible */ + vms_info_size = getdtablesize(); + + /* Allocate the array */ + vms_info = malloc(vms_info_size * sizeof(struct vms_info_st)); + if (vms_info == NULL) { + + /* We are probably out of memory, so degrade gracefully */ + vms_info_size = -1; + } else { + memset(vms_info, 0, vms_info_size * sizeof(struct vms_info_st)); + } + } + return &vms_info[fd]; +} + + + + +/* When we encounter a terminal device, we need to see if it is one + * that we already know about. + * The first time we encounter a terminal device, we need to look up its + * Unix terminal characteristics so we can do terminal I/O properly on it. + * Poll/select from glib are modified to only deassign channels that they + * assigned. Eventually this module should become common to glib so that + * glib can get the better terminal support + */ + + +static int vms_channel_lookup(int fd, unsigned short *channel) +{ +int status; +char device_name[256]; +char * retname; +struct dsc$descriptor_s dev_desc; +int call_stat; +unsigned short chan; +struct vms_info_st * info; + + status = -1; + + /* Make sure memory of file descriptors is set up. */ + if (vms_info == NULL) { + + /* Find out how many channels are possible */ + vms_info_size = getdtablesize(); + + /* Allocate the array */ + vms_info = malloc(vms_info_size * sizeof(struct vms_info_st)); + if (vms_info == NULL) { + + /* We are probably out of memory, so degrade gracefully */ + vms_info_size = -1; + } else { + memset(vms_info, 0, vms_info_size * sizeof(struct vms_info_st)); + } + } + + /* Do we know about this one? */ + info = vms_lookup_fd(fd); + if (info->ref_cnt > 0) { + /* We found it */ + *channel = info->channel; + + /* Do not increment the ref count for STDIN/STDOUT/STDERR */ + if (fd > 2) { + info->ref_cnt++; + } + return 0; + } + + /* get the name */ + /*--------------*/ + retname = getname(fd, device_name, 1); + if (retname != NULL) { + + /* Store the name */ + info->device_name = strdup(device_name); + + /* Assign the channel */ + /*--------------------*/ + dev_desc.dsc$a_pointer = device_name; + dev_desc.dsc$w_length = strlen(device_name); + dev_desc.dsc$b_dtype = DSC$K_DTYPE_T; + dev_desc.dsc$b_class = DSC$K_CLASS_S; + call_stat = SYS$ASSIGN(&dev_desc, &chan, 0, 0, 0); + if ($VMS_STATUS_SUCCESS(call_stat)) { + *channel = chan; + info->channel = chan; + info->ref_cnt = 1; + status = 0; + } + + /* Initialize the rest of the structure */ + info->term_attr = NULL; + } + + return status; +} + + +/* Close the vms_channel on the last lookup */ + +static int vms_channel_close(int fd) { + int status = 0; + + if (vms_info[fd].ref_cnt) { + if (fd > 2) { + vms_info[fd].ref_cnt--; + } + } + if (vms_info[fd].ref_cnt == 0) { + int call_stat; + + /* All references done, time to clean up */ + + /* Cancel any ASTs for signals */ + + /* Remove the channel */ + call_stat = SYS$DASSGN(vms_info[fd].channel); + if ($VMS_STATUS_SUCCESS(call_stat)) { + status = 0; + } else { + errno = EIO; + status = -1; + } + + /* Clean up the cached device name */ + if (vms_info[fd].device_name != NULL) { + free(vms_info[fd].device_name); + vms_info[fd].device_name = NULL; + } + + /* Clean up the VMS terminal attributes */ + if (vms_info[fd].vms_char != NULL) { + free(vms_info[fd].vms_char); + vms_info[fd].vms_char = NULL; + } + if (vms_info[fd].vms_iosb != NULL) { + free(vms_info[fd].vms_iosb); + vms_info[fd].vms_iosb = NULL; + } + + /* Clean up the Unix terminal attributes */ + if (vms_info[fd].term_attr != NULL) { + free(vms_info[fd].term_attr); + vms_info[fd].term_attr = NULL; + } + } + return status; +} + + + + + +/* vms_speed_to_unix + * + * speed - VMS Speed value + * + * returns Unix speed value or 0 if speed can not be calculated. + * + */ + +static int vms_speed_to_unix_speed(unsigned char speed) { + switch(speed) { + case TT$C_BAUD_50: return B50; + case TT$C_BAUD_75: return B75; + case TT$C_BAUD_110: return B110; + case TT$C_BAUD_134: return B134; + case TT$C_BAUD_150: return B150; + case TT$C_BAUD_300: return B300; + case TT$C_BAUD_600: return B600; + case TT$C_BAUD_1200: return B1200; + case TT$C_BAUD_2400: return B2400; + case TT$C_BAUD_4800: return B4800; + case TT$C_BAUD_7200: return B7200; + case TT$C_BAUD_9600: return B9600; + case TT$C_BAUD_19200: return B19200; + case TT$C_BAUD_38400: return B38400; + } + return 0; +} + +/* unix_speed_to_vms + * + * speed - Unix Speed value + * + * returns VMS speed value or 0 if speed can not be calculated. + * + */ + +static int unix_speed_to_vms_speed(unsigned char speed) { + switch(speed) { + case B50: return TT$C_BAUD_50; + case B75: return TT$C_BAUD_75; + case B110: return TT$C_BAUD_110; + case B134: return TT$C_BAUD_134; + case B150: return TT$C_BAUD_150; + case B300: return TT$C_BAUD_300; + case B600: return TT$C_BAUD_600; + case B1200: return TT$C_BAUD_1200; + case B2400: return TT$C_BAUD_2400; + case B4800: return TT$C_BAUD_4800; + case B7200: return TT$C_BAUD_7200; + case B9600: return TT$C_BAUD_9600; + case B19200: return TT$C_BAUD_19200; + case B38400: return TT$C_BAUD_38400; + } + return 0; +} + +/* vms_term_qio_tcgetattr + * Does the actual work of getting those VMS terminal characteristics + * that can be mapped to Unix terminal characteristics. + * + * vms_info - on input, the VMS device channel, and other information. + * on output, updated to reflect the current status. + * + * my_attr - Structure containing the equivalent Unix characteristics. + * + * Returns 0 for success, -1 for an error and sets errno on failure. + * + */ +int vms_term_qio_tcgetattr(struct vms_info_st * vms_info, + struct termios *my_attr) { +int status; +struct term_mode_iosb_st * mode_iosb; +struct term_char_st * termchar; +const unsigned long newmask = 0; +unsigned int opost_active = 0; +unsigned int any_fill = 0; +unsigned int cflag_active = 0; +int ret_stat = 0; + + /* Get the old control character mask */ + status = LIB$ENABLE_CTRL(&newmask, &vms_info->oldctrlmask); + if (!$VMS_STATUS_SUCCESS(status)) { + errno = EIO; + return -1; + } + + /* Set up the structures to hold the information if not already there */ + if (vms_info->vms_char == NULL) { + vms_info->vms_char = malloc(sizeof(struct term_char_st)); + if (vms_info->vms_char == NULL) { + return -1; + } + } + termchar = vms_info->vms_char; + + if (vms_info->vms_iosb == NULL) { + vms_info->vms_iosb = malloc(sizeof(struct term_mode_iosb_st)); + if (vms_info->vms_iosb == NULL) { + return -1; + } + } + mode_iosb = vms_info->vms_iosb; + + if (vms_info->term_attr == NULL) { + vms_info->term_attr = malloc(sizeof(struct termios)); + if (vms_info->term_attr == NULL) { + return -1; + } + } + + status = SYS$QIOW + (EFN$C_ENF, + vms_info->channel, + IO$_SENSEMODE, + vms_info->vms_iosb, + NULL, + NULL, + termchar, sizeof(struct term_char_st), 0, 0, 0, 0); + if ($VMS_STATUS_SUCCESS(status) && + $VMS_STATUS_SUCCESS(mode_iosb->sts)) { + /* We have data */ + ret_stat = 0; + } else { + /* Something really wrong */ + ret_stat = -1; + errno = EIO; + return ret_stat; + } + + memset(my_attr, 0, sizeof(struct termios)); + + /* Input Flags */ + my_attr->c_iflag |= IGNBRK; /* VMS driver handles BREAK */ +/* BKRINT VMS driver handles BREAK */ +/* IGNPAR VMS fatal error on bad parity */ +/* PARMRK VMS can not mark parity errors */ + if (mode_iosb->framing.tt_v_disparerr) { + my_attr->c_iflag |= INPCK; /* Parity is enabled */ + } + if (!termchar->ttdef.tt$v_eightbit) { + my_attr->c_iflag |= ISTRIP; /* Strip 8th bit off characters */ + } +/* INLCR VMS terminates on linefeed and passes through */ +/* IGNCR VMS can not ignore CR */ + my_attr->c_iflag |= ICRNL; /* VMS RMS maps CR to LF on input */ + if (termchar->ttdef.tt$v_ttsync) { + my_attr->c_iflag |= IXON; /* XON/XOFF on output */ + } + if (termchar->ttdef.tt$v_hostsync) { + my_attr->c_iflag |= IXOFF; /* XON/XOFF on input */ + } +#ifdef __USE_BSD +/* IXANY VMS will not do this. */ + my_attr->c_iflag |= IMAXBEL; /* VMS rings bell when queue full */ +#endif +#ifdef __USE_GNU +/* IUCLC VMS will not translate upper to lower */ +#endif + + + /* Output flags */ +#if defined __USE_BSD || defined __USE_XOPEN + my_attr->c_oflag |= ONLCR; /* VMS RMS does this automatically */ + opost_active = 1; +#endif +#ifdef __USE_BSD +/* OXTABS (ALIAS for TAB3) Expand tabs to spaces */ +/* ONOEOT VMS does not pass through ^Z EOF */ +/* to output. */ +/* Ignore for now. */ +#endif +#if defined __USE_BSD || defined __USE_XOPEN +/* OCRNL VMS will not map CR to NL on output */ +/* ONOCR Will VMS discard CRs when on column 0? */ + my_attr->c_oflag |= ONLRET; /*VMS RMS adds a CR to NL on output */ + opost_active = 1; +#endif +#if defined __USE_MISC || defined __USE_XOPEN +/* NLDLY */ +/* NL0 - No delay */ +/* NL1 - Delay 0.10 seconds (2 chars) */ +/* FFDLY */ +/* FF0 - No delay */ +/* FF1 - Delay about 2 seconds */ +/* VTDLY */ +/* VT0 - No delay */ +/* VT1 - Delay about 2 seconds */ + if (mode_iosb->lf_fill != 0) { + any_fill = 1; + opost_active = 1; + my_attr->c_oflag |= (VT1|FF1|VT1); + } +/* CRDLY */ +/* CR0 - No delay */ +/* CR1 - column dependent (2 chars) */ +/* CR2 - Delay 0.10 seconds (4 chars) */ +/* CR3 - Delay 0.15 seconds */ + if (mode_iosb->cr_fill != 0) { + any_fill = 1; + opost_active = 1; + if (mode_iosb->cr_fill > 4) { + my_attr->c_oflag |= CR3; + } else if (mode_iosb->cr_fill > 2) { + my_attr->c_oflag |= CR2; + } else { + my_attr->c_oflag |= CR1; + } + } +/* TABDLY */ +/* TAB0 - No delay */ +/* TAB1 - column dependent */ +/* TAB2 - Delay 0.10 seconds (2 chars) */ +/* TAB3 - Expand TAB to spaces */ + if (!termchar->ttdef.tt$v_mechtab) { + my_attr->c_oflag |= TAB3; /* Expand tabs to spaces */ + opost_active = 1; + } +/* BSDLY Not present on VMS */ +#endif +#ifdef __USE_GNU + if (!termchar->ttdef.tt$v_lower) { + my_attr->c_oflag |= OLCUC; /* VMS output all upper case */ + opost_active = 1; + } +#endif +/* OFDEL X/Open says use DEL instead of NULL */ +/* GNU/Linux does not have a definition */ +#ifdef __USE_XOPEN + if (any_fill) { + /* X/Open Says this means 2 */ + /* characters sent for delay */ + my_attr->c_oflag |= OFILL; /* Send fill characters for delay */ + opost_active = 1; + } +#endif + + if (opost_active) { + my_attr->c_oflag |= OPOST; /* VMS At least one post feature active */ + } + + /* Control Modes */ + if (mode_iosb->framing.tt_v_altframe) { + switch(mode_iosb->framing.tt_v_framesize) { + case 6: my_attr->c_cflag |= CS6; + cflag_active = 1; + break; + case 7: my_attr->c_cflag |= CS7; + cflag_active = 1; + break; + case 8: my_attr->c_cflag |= CS8; + cflag_active = 1; + break; + } + } + if (mode_iosb->framing.tt_v_twostop) { /* two stop bits */ + my_attr->c_cflag |= CSTOPB; + cflag_active = 1; + } + my_attr->c_cflag |= CREAD; /* VMS not easily available, so say ready */ + cflag_active = 1; + if (mode_iosb->framing.tt_v_parity) { /* Enable parity */ + my_attr->c_cflag |= PARENB; + cflag_active = 1; + } + if (mode_iosb->framing.tt_v_odd) { /* Odd parity */ + my_attr->c_cflag |= PARODD; + cflag_active = 1; + } + if (!termchar->ttdef.tt$v_modem ) { + my_attr->c_cflag |= CLOCAL; /* Local terminal */ + cflag_active = 1; + } else { + my_attr->c_cflag |= HUPCL; /* Hang up on last close */ + } + +#ifdef __USE_BSD +#if (__CRTL_VER >= 080200000) && !defined (__VAX) + if (termchar->tt3def.tt3$v_rts_flow) { + my_attr->c_cflag |= CRTSCTS; /* VMS 8.2 has CTRCTS flow control */ + cflag_active = 1; + } +#else + if (termchar->tt2def.tt2$v_commsync) { + my_attr->c_cflag |= CRTSCTS; /* Comm sync uses hardware flow ctrl */ + cflag_active = 1; + } +#endif + if (termchar->tt2def.tt2$v_commsync) { + my_attr->c_cflag |= CDTRCTS; /* Comm sync uses hardware flow ctrl */ + cflag_active = 1; + } + if (termchar->ttdef.tt$v_modem) { + my_attr->c_cflag |= MDMBUF; /* Modem connected terminal */ + cflag_active = 1; + } + + if (!cflag_active) { + my_attr->c_cflag |= CIGNORE; /* Only if no control flags are set */ + } +#endif + + /* Local Modes */ + if (termchar->ttdef.tt$v_scope) { /* VMS terminal SCOPE set */ + my_attr->c_lflag |= ECHOKE; + my_attr->c_lflag |= ECHOE; + } else { + my_attr->c_lflag |= ECHOK; + } + + if (!termchar->ttdef.tt$v_noecho) { /* Characters are echoed */ + my_attr->c_lflag |= ECHO; + } +/* ENCHONL VMS will not echo NL with echo off */ +#ifdef __USE_BSD + my_attr->c_lflag |= ECHOPRT; /* VMS echos erase characters */ + my_attr->c_lflag |= ECHOCTL; /* VMS echos control characters */ +#endif + + /* VMS pass all input characters */ + if (!termchar->ttdef.tt$v_passall && !termchar->tt2def.tt2$v_pasthru) { + my_attr->c_lflag |= ISIG; /* VMS normal mode */ + my_attr->c_lflag |= ICANON; + } +#ifdef __USE_BSD +/* ALTWERASE VMS is hard coded */ +#endif + if (!termchar->ttdef.tt$v_passall && !termchar->tt2def.tt2$v_pasthru) { + my_attr->c_lflag |= IEXTEN; /* VMS does ^O and ^V normally */ + } else { + my_attr->c_lflag |= EXTPROC; /* Application, not interactive */ + } +/* TOSTOP VMS does not have SIGTTOU */ +#ifdef __USE_BSD +/* FLUSHO VMS and Linux do not do this. */ + if ((vms_info->oldctrlmask & LIB$M_CLI_CTRLT) == 0) { + my_attr->c_lflag |= NOKERNINFO; /* VMS Control-T Disabled */ + } +/* PENDIN Not sure how to do on VMS */ +#endif +/* NOFLSH VMS does not do this */ + +/* XCASE VMS does not have this */ + + /* Control Character Array */ + my_attr->c_cc[VEOF] = 26; /* VMS EOF is Control-Z */ + /* Unix EOF is Control-D */ + my_attr->c_cc[VEOL] = 0; /* Not used with VMS/Linux */ +#ifdef __USE_BSD + my_attr->c_cc[VEOL2] = 0; /* Not used with VMS/Linux */ +#endif + my_attr->c_cc[VERASE] = 127; /* VMS default is DEL */ +#if (__CRTL_VER >= 080200000) && !defined (__VAX) + if (termchar->tt3def.tt3$v_bs) { + my_attr->c_cc[VERASE] = 8; /* VMS 8.2 can set BS */ + } +#endif +#ifdef __USE_BSD + my_attr->c_cc[VWERASE] = 10; /* VMS uses LF to delete word */ + /* Unix uses Control-W */ +#endif + my_attr->c_cc[VKILL] = 21; /* VMS uses Control-U to delete line */ + my_attr->c_cc[VREPRINT] = 18; /* VMS uses Control-R to reprint */ + my_attr->c_cc[VINTR] = 3; /* VMS uses Control-C */ + my_attr->c_cc[VQUIT] = 0; /* VMS does not have Quit Character */ + /* Unix uses Control-\ */ + my_attr->c_cc[VSUSP] = 0; /* VMS does not have Suspend */ +#ifdef __USE_BSD + my_attr->c_cc[VDSUSP] = 0; /* VMS does not have a Delayed suspend */ + /* Unix uses Control-y */ +#endif + my_attr->c_cc[VSTART] = 17; /* VMS uses Control-Q */ + my_attr->c_cc[VSTOP] = 19; /* VMS uses Control-S */ + my_attr->c_cc[VLNEXT] = 22; /* VMS uses Control-V */ + my_attr->c_cc[VDISCARD] = 15; /* VMS uses Control-O */ + my_attr->c_cc[VSTATUS] = 20; /* VMS uses Control-T */ + + /* Speed section */ + my_attr->c_ospeed = vms_speed_to_unix_speed(mode_iosb->txspeed); + if (mode_iosb->rxspeed == 0) { + my_attr->c_ispeed = my_attr->c_ospeed; + } else { + my_attr->c_ispeed = vms_speed_to_unix_speed(mode_iosb->rxspeed); + } + + memcpy(vms_info->term_attr, my_attr, sizeof(struct termios)); + + return ret_stat; +} + + +/* vms_term_qio_tcsetattr + * Does the actual work of setting those VMS terminal characteristics + * that can be set, ignoring the rest. + * The vms_term_qio_tcgetattr routine needs to initially populate the vms_info + * structure that is passed by reference before this call. + * The vms_info structure will be updated to reflect the changes. + * + * vms_info - on input, the VMS device channel, and other information. + * on output, updated to reflect any change requested. + * + * my_attr - Readonly structure containing the desired Unix characteristics. + * + * We do not seem to be able to set fill here and have not tested + * Setting speed. Attempting to set parity returns a SS$_BADPARAM + * On VMS these should be set before running the program. + * + * Returns 0 for success, -1 for an error and sets errno on failure. + * + */ +int vms_term_qio_tcsetattr(struct vms_info_st * vms_info, + const struct termios *my_attr) { +int status; +struct term_mode_iosb_st * mode_iosb; +struct term_char_st * termchar; +const unsigned long newmask = LIB$M_CLI_CTRLT; +unsigned long oldmask; +int is_modem; +int is_scope; +int ret_stat; +struct term_mode_iosb_st set_mode_iosb; + + /* Set up the structures to hold the information if not already there */ + if (vms_info->vms_char == NULL) { + struct termios old_attr; + ret_stat = vms_term_qio_tcgetattr(vms_info, &old_attr); + if (ret_stat < 0) { + return ret_stat; + } + } + + termchar = vms_info->vms_char; + mode_iosb = vms_info->vms_iosb; + + is_modem = termchar->ttdef.tt$v_modem; + is_scope = termchar->ttdef.tt$v_scope; + + /* Input Flags */ +/* IGNBRK VMS driver handles BREAK */ +/* BKRINT VMS driver handles BREAK */ +/* IGNPAR VMS fatal error on bad parity */ +/* PARMRK VMS can not mark parity errors */ + +/* On VMS, we are not setting the framing or parity this way */ +/* INPCK Parity is enabled ? */ + + if ((my_attr->c_iflag & ISTRIP) != 0) { /* Strip 8th bit off characters */ + termchar->ttdef.tt$v_eightbit = 0; + } else { + termchar->ttdef.tt$v_eightbit = 1; + } +/* INLCR VMS terminates on linefeed and passes through */ +/* IGNCR VMS can not ignore CR */ +/* ICRNL VMS RMS maps CR to LF on input */ + + if ((my_attr->c_iflag & IXON) != 0) { /* XON/XOFF on output */ + termchar->ttdef.tt$v_ttsync = 1; + } else { + termchar->ttdef.tt$v_ttsync = 0; + } + if ((my_attr->c_iflag & IXOFF) != 0) { /* XON/XOFF on input */ + termchar->ttdef.tt$v_hostsync = 1; + } else { + termchar->ttdef.tt$v_hostsync = 0; + } +#ifdef __USE_BSD +/* IXANY VMS will not do this. */ +/* IMAXBEL VMS rings bell when queue full */ +#endif +#ifdef __USE_GNU +/* IUCLC VMS will not translate upper to lower */ +#endif + + + /* Output flags */ +#if defined __USE_BSD || defined __USE_XOPEN +/* ONLCR VMS RMS does this automatically */ +#endif + +#ifdef __USE_BSD +/* OXTABS Alias for TAB3 */ +/* ONOEOT VMS does not pass through ^Z EOF */ +/* to output. */ +/* Ignore for now. */ +#endif +#if defined __USE_BSD || defined __USE_XOPEN +/* OCRNL VMS will not map CR to NL on output */ +/* ONOCR Will VMS discard CRs when on column 0? */ +/* ONLRET VMS RMS adds a CR to NL on output */ +#endif +#if defined __USE_MISC || defined __USE_XOPEN +/* NLDLY */ +/* NL0 - No delay */ +/* NL1 - Delay 0.10 seconds (2 chars) */ +/* FFDLY */ +/* FF0 - No delay */ +/* FF1 - Delay about 2 seconds */ +/* VTDLY */ +/* VT0 - No delay */ +/* VT1 - Delay about 2 seconds */ +/* CRDLY */ +/* CR0 - No delay */ +/* CR1 - column dependent (2 chars) */ +/* CR2 - Delay 0.10 seconds (4 chars) */ +/* CR3 - Delay 0.15 seconds */ +/* TABDLY */ +/* TAB0 - No delay */ +/* TAB1 - column dependent */ +/* TAB2 - Delay 0.10 seconds (2 chars) */ +/* TAB3 - Expand TAB to spaces */ + if ((my_attr->c_oflag & TAB3) != 0) { /* Expand tabs to spaces */ + termchar->ttdef.tt$v_mechtab = 0; + } else { + termchar->ttdef.tt$v_mechtab = 1; + } + + +/* BSDLY Not present on VMS */ +#endif +#ifdef __USE_GNU + if ((my_attr->c_oflag & OLCUC) != 0) { /* VMS output all upper case */ + termchar->ttdef.tt$v_lower = 0; + } else { + termchar->ttdef.tt$v_lower = 1; + } +#endif +/* OFDEL X/Open says use DEL instead of NULL */ +/* GNU/Linux does not have a definition */ +#ifdef __USE_XOPEN + /* X/Open Says this means 2 */ + /* characters sent for delay */ +/* OFILL */ /* Send fill characters for delay */ +#endif + +/* OPOST VMS At least one post feature active */ + + /* Control Modes */ + +#ifdef __USE_BSD +/* CIGNORE Only if no control flags are set */ + if ((my_attr->c_cflag & CIGNORE) != 0) { +#endif + +/* CSIZE == CS6 , CS7, CS8 Frame size not set here on VMS */ +/* CSTOPB Stop bits not set here on VMS */ + +/* CREAD VMS not easily available, so say ready */ + +/* PARENB VMS not setting parity here */ +/* PARODD VMS not setting Odd parity here */ + +/* HUPCL Hangup modem on logout */ +/* CLOCAL Local terminal - Not modem */ +/* Resolving conflict by having HUPCL override CLOCAL */ +/* Setting modem by sensemode should disconnect or logout the process */ + if ((my_attr->c_cflag & CLOCAL) != 0) { + is_modem = 0; + } + if ((my_attr->c_cflag & HUPCL) != 0) { + is_modem = 1; + } + +#ifdef __USE_BSD + /* VMS 8.2 has CTRCTS flow control */ +#if (__CRTL_VER >= 080200000) && !defined (__VAX) + if ((my_attr->c_cflag & CRTSCTS) != 0) { + termchar->tt3def.tt3$v_rts_flow = 1; + } else { + termchar->tt3def.tt3$v_rts_flow = 0; + } +#else + if ((my_attr->c_cflag & CRTSCTS) != 0) { + /* Comm sync uses hardware flow ctrl */ + termchar->tt2def.tt2$v_commsync = 1; + } else { + termchar->tt2def.tt2$v_commsync = 0; + } +#endif + /* Comm sync uses hardware flow ctrl */ + if ((my_attr->c_cflag & CDTRCTS) != 0) { + termchar->tt2def.tt2$v_commsync = 1; + } else { + termchar->tt2def.tt2$v_commsync = 0; + } + if ((my_attr->c_cflag & MDMBUF) != 0) { /* Modem connected terminal */ + is_modem = 1; + } +#endif + +#ifdef __USE_BSD + } +#endif + + /* Local Modes */ + if (((my_attr->c_lflag & ECHOKE) != 0) || + ((my_attr->c_lflag & ECHOE) != 0)) { + is_scope = 1; /* VMS terminal SCOPE set */ + } else if ((my_attr->c_lflag & ECHOK) != 0) { + is_scope = 0; /* VMS terminal SCOPE clear */ + } + + +/* ECHOK Echo NL after kill (non-scope) */ + + if ((my_attr->c_lflag & ECHO) != 0) { + termchar->ttdef.tt$v_noecho = 0; /* Characters are echoed */ + } else { + termchar->ttdef.tt$v_noecho = 1; /* Characters are not echoed */ + } +/* ENCHONL VMS will not echo NL with echo off */ +#ifdef __USE_BSD +/* ECHOPRT VMS hardcopy echos erase characters */ +/* ECHOCTL VMS echos control characters */ +#endif + + if (((my_attr->c_lflag & ISIG) != 0) || + ((my_attr->c_lflag & ICANON) != 0) || + ((my_attr->c_lflag & IEXTEN) != 0)) { + + /* VMS interpret input characters */ + termchar->tt2def.tt2$v_pasthru = 0; + } else { + /* VMS pass-through input characters */ + termchar->tt2def.tt2$v_pasthru = 1; + } +#ifdef __USE_BSD +/* ALTWERASE VMS is hard coded */ +#endif +/* IEXTEN VMS does ^O and ^V normally */ + +/* EXTPROC Application, not interactive */ +/* Need to set before entering */ +/* TOSTOP VMS does not have SIGTTOU */ +#ifdef __USE_BSD +/* FLUSHO VMS and Linux do not do this. */ + if ((my_attr->c_lflag & NOKERNINFO) != 0) { /* VMS Control-T handling */ + if ((vms_info->oldctrlmask & LIB$M_CLI_CTRLT) != 0) { + status = LIB$DISABLE_CTRL(&newmask, &oldmask); + } + } else { + if ((vms_info->oldctrlmask & LIB$M_CLI_CTRLT) == 0) { + status = LIB$ENABLE_CTRL(&newmask, &oldmask); + } + } +/* PENDIN Not sure how to do on VMS */ +#endif +/* NOFLSH VMS does not do this */ + +/* XCASE VMS does not have this */ + + /* Control Character Array */ +/* my_attr->c_cc[VEOF] = 26; */ /* VMS EOF is Control-Z */ + /* Unix EOF is Control-D */ +/* my_attr->c_cc[VEOL] = 0; */ /* Not used with VMS/Linux */ +#ifdef __USE_BSD +/* my_attr->c_cc[VEOL2] = 0; */ /* Not used with VMS/Linux */ +#endif +/* my_attr->c_cc[VERASE] = 127; */ /* VMS default is DEL */ +#if (__CRTL_VER >= 080200000) && !defined (__VAX) + if (my_attr->c_cc[VERASE] == 8) { /* VMS 8.2 can set BS */ + termchar->tt3def.tt3$v_bs = 1; + } else { + termchar->tt3def.tt3$v_bs = 0; + } +#endif +#ifdef __USE_BSD +/* my_attr->c_cc[VWERASE] = 10; */ /* VMS uses LF to delete word */ + /* Unix uses Control-W */ +#endif +/* my_attr->c_cc[VKILL] = 21; */ /* VMS uses Control-U to delete line */ +/* my_attr->c_cc[VREPRINT] = 18; */ /* VMS uses Control-R to reprint */ +/* my_attr->c_cc[VINTR] = 3; */ /* VMS uses Control-C */ +/* my_attr->c_cc[VQUIT] = 0; */ /* VMS does not have Quit Character */ + /* Unix uses Control-\ */ +/* my_attr->c_cc[VSUSP] = 0; */ /* VMS does not have Suspend */ +#ifdef __USE_BSD +/* my_attr->c_cc[VDSUSP] = 0; */ /* VMS does not have a Delayed suspend */ + /* Unix uses Control-y */ +#endif +/* my_attr->c_cc[VSTART] = 17; */ /* VMS uses Control-Q */ +/* my_attr->c_cc[VSTOP] = 19; */ /* VMS uses Control-S */ +/* my_attr->c_cc[VLNEXT] = 22; */ /* VMS uses Control-V */ +/* my_attr->c_cc[VDISCARD] = 15; */ /* VMS uses Control-O */ +/* my_attr->c_cc[VSTATUS] = 20; */ /* VMS uses Control-T */ + + /* Is this a video terminal? */ + termchar->ttdef.tt$v_scope = is_scope; + + /* Is this a modem? */ + termchar->ttdef.tt$v_modem = is_modem; + + status = SYS$QIOW + (EFN$C_ENF, + vms_info->channel, + IO$_SETMODE, + &set_mode_iosb, + NULL, + NULL, + termchar, sizeof(struct term_char_st), + 0, 0, 0, 0); + if ($VMS_STATUS_SUCCESS(status) && + $VMS_STATUS_SUCCESS(set_mode_iosb.sts)) { + + /* We set the data, cache it */ + vms_info->term_attr->c_iflag = my_attr->c_iflag; + vms_info->term_attr->c_oflag = my_attr->c_oflag; + vms_info->term_attr->c_lflag = my_attr->c_lflag; + if (termchar->tt2def.tt2$v_pasthru) { + vms_info->term_attr->c_lflag &= ~(ISIG|ICANON|IEXTEN); + } + + /* Except if CIGNORE set for changes */ + if ((my_attr->c_cflag & CIGNORE) == 0) { + vms_info->term_attr->c_cflag = my_attr->c_cflag; + } + + /* VMS 8.2 can set BS, so this could have changed */ + vms_info->term_attr->c_cc[VERASE] = my_attr->c_cc[VERASE]; + + } else { + /* Something really wrong */ + ret_stat = -1; + errno = EIO; + } + + return ret_stat; +} + + + + /********************************/ + /* termios replacement routines */ +/********************************/ +int tcgetattr(int fd, struct termios * buf) { +int result; +unsigned short chan; +int status; + + /* Would someone call this on a non-terminal? */ +#if 0 + if (!isatty(fd)) { + errno = EBADF; + return -1; + } +#endif + /* Open the channel if needed */ + status = vms_channel_lookup(fd, &chan); + if (status == 0) { + + + /* We need to first get the current settings */ + status = vms_term_qio_tcgetattr(&vms_info[fd], buf); + + if (status != 0) { + vms_channel_close(fd); + return -1; + } + + + /* Unix mode, just look up the last cached value */ + memcpy(buf, vms_info[fd].term_attr, sizeof (struct termios)); + status = 0; + + /* close the channel if we opened it */ + vms_channel_close(fd); + } + return status; +} + + + +int tcsetattr(int fd, int action, const struct termios * buf) { + +int result; +unsigned short chan; +int status; + + /* Would someone call this on a non-terminal? */ +#if 0 + if (!isatty(fd)) { + errno = EBADF; + return -1; + } +#endif + if (action != TCSANOW) { + /* Unless we totally take over the I/O, the best that */ + /* we can do is attempt a a fsync() */ + fsync(fd); + } + + /* Open the channel if needed */ + status = vms_channel_lookup(fd, &chan); + if (status == 0) { + /* Now attempt to set them */ + status = vms_term_qio_tcsetattr(&vms_info[fd], buf); + } + + /* close the channel if we opened it */ + vms_channel_close(fd); + return status; +} + + + + diff --git a/vms/vms_crtl_init.c b/vms/vms_crtl_init.c new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3Ztc19jcnRsX2luaXQuYw== --- /dev/null +++ b/vms/vms_crtl_init.c @@ -0,0 +1,70 @@ +#include <stdio.h> +#include <errno.h> +#include <unixlib.h> + + +/* +** Sets current value for a feature +*/ +static void set(char *name, int value) +{ + int index; + errno = 0; + + index = decc$feature_get_index(name); + + if (index > 0) + decc$feature_set_value(index, 1, value); +} + +/* +** Sets default value for a feature +*/ +static void set_default(char *name, int value) +{ + int index; + errno = 0; + + index = decc$feature_get_index(name); + + if (index > 0) + decc$feature_set_value (index, 0, value); +} + +static void set_coe ( void ) +{ + set ("DECC$UNIX_LEVEL", 100); + set ("DECC$ARGV_PARSE_STYLE", 1); + set ("DECC$DETACHED_CHILD_PROCESS", 0); + set ("DECC$EFS_CASE_PRESERVE", 1); + set ("DECC$EFS_CASE_SPECIAL", 0); + set ("DECC$EFS_CHARSET", 1); + set ("DECC$ENABLE_GETENV_CACHE", 1); + set ("DECC$EXIT_AFTER_FAILED_EXEC", 1); + set ("DECC$FILE_SHARING", 1); + set ("DECC$MAILBOX_CTX_STM", 1); + set ("DECC$POPEN_NO_CRLF_REC_ATTR", 1); + set ("DECC$POSIX_SEEK_STREAM_FILE", 1); + set ("DECC$POSIX_STYLE_UID", 0); // else getpwuid() doesn't work + set ("DECC$READDIR_DROPDOTNOTYPE", 1); +} + +#pragma extern_model save +#pragma extern_model strict_refdef "LIB$INITIALIZE" nowrt, long +#if __INITIAL_POINTER_SIZE +# pragma __pointer_size __save +# pragma __pointer_size 32 +#else +# pragma __required_pointer_size __save +# pragma __required_pointer_size 32 +#endif +void (* const iniarray[])() = {set_coe, } ; /* Set our contribution to the LIB$INITIALIZE array */ +#if __INITIAL_POINTER_SIZE +# pragma __pointer_size __restore +#else +# pragma __required_pointer_size __restore +#endif +#pragma extern_model restore + +int LIB$INITIALIZE(); +/* globaldef */ int (*lib_init_ref)() = LIB$INITIALIZE; diff --git a/vms/vms_poll_select_hack.c b/vms/vms_poll_select_hack.c new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3Ztc19wb2xsX3NlbGVjdF9oYWNrLmM= --- /dev/null +++ b/vms/vms_poll_select_hack.c @@ -0,0 +1,1059 @@ +/* File: VMS_POLL_SELECT_HACK.C */ +/* Hack to make poll() and select() appear to work on pipes and terminals */ + +/* This file is included in gmain.c to easily add it into the build */ + +#include <dcdef> +#include <descrip.h> +#include <dvidef> +#include <efndef.h> +#include <errno.h> +#include <inttypes.h> +#include <iodef.h> +#include <iosbdef.h> +#include <poll.h> +#include <socket.h> +#include <ssdef.h> +#include <stdlib.h> +#include <string.h> +#include <stsdef.h> +#include <unistd.h> +#include <unixio.h> +#include <unixlib.h> +#include <time.h> +/* +#include "python_root:[include]Python.h" +#include "python_root:[include]floatobject.h" +#include "python_root:[include]object.h" +#include "python_root:[include]pyport.h" +*/ + +int LIB$SIGNAL(int); + +int SYS$ASSIGN(const struct dsc$descriptor_s *devnam, unsigned short *chan, + unsigned long acmode, const struct dsc$descriptor_s *mbxnam, + unsigned long flags); + +int SYS$DASSGN(unsigned short chan); + +unsigned long SYS$QIOW(unsigned long efn, unsigned short chan, + unsigned long func, void *iosb, void (*astadr)(void *), + ...); + +int SYS$READEF(unsigned long efn, unsigned long *state); + +int SYS$GETDVIW(unsigned int efn, unsigned short int chan, void *devnam, + void *itmlst, void *iosb, void (*astadr)(void *), int astprm, + void *nullarg, ...); + +static int g_vms_channel_lookup(int fd, unsigned short *channel) { + int status; + char devicename[256]; + char *retname; + struct dsc$descriptor_s dev_desc; + int call_stat; + unsigned short chan; + + status = -1; + + /* get the name */ + /*--------------*/ + retname = getname(fd, devicename, 1); + if (retname != NULL) { + /* Assign the channel */ + /*--------------------*/ + dev_desc.dsc$a_pointer = devicename; + dev_desc.dsc$w_length = strlen(devicename); + dev_desc.dsc$b_dtype = DSC$K_DTYPE_T; + dev_desc.dsc$b_class = DSC$K_CLASS_S; + call_stat = SYS$ASSIGN(&dev_desc, &chan, 0, 0, 0); + if ($VMS_STATUS_SUCCESS(call_stat)) { + *channel = chan; + status = 0; + } + } + return status; +} + +static int g_vms_channelname_lookup(int fd, char *channel) { + int status; + char devicename[256]; + char *retname; + struct dsc$descriptor_s dev_desc; + int call_stat; + unsigned short chan; + + status = -1; + + /* get the name */ + /*--------------*/ + retname = getname(fd, devicename, 1); + if (retname != NULL) { + strcpy(channel, devicename); + status = 0; + } else + status = 1; + return status; +} + +unsigned long read_pipe_bytes(int fd, char *buf, int size, int *pid_ptr) { + unsigned short channel; + int nbytes = 0; + if (g_vms_channel_lookup(fd, &channel) == 0) { + struct { + unsigned short sts; + unsigned short bytes_read; + unsigned long pid; + } mbx_iosb_read; + int status = SYS$QIOW(EFN$C_ENF, channel, IO$_READVBLK, &mbx_iosb_read, + NULL, NULL, buf, size, 0, 0, 0, 0); + if ($VMS_STATUS_SUCCESS(status)) { + if (mbx_iosb_read.sts == SS$_ENDOFFILE) { + nbytes = 0; + } else { + nbytes = mbx_iosb_read.bytes_read; + if (nbytes == 0) { + nbytes = 1; + buf[0] = '\n'; + } + } + } SYS$DASSGN(channel); + if (pid_ptr) { + *pid_ptr = mbx_iosb_read.pid; + } + } + return nbytes; +} + +struct vms_pollfd_st { + struct pollfd *fd_desc_ptr; + unsigned short channel; + unsigned short pad; +}; + +static int vms_poll_terminal(const struct vms_pollfd_st *term_array, int ti) { + int i; + int ret_stat; + int count; + int status; +#pragma member_alignment save +#pragma nomember_alignment + struct term_mode_iosb_st { + unsigned short sts; + unsigned short speed; + unsigned long other; + } mode_iosb; + + struct typeahead_st { + unsigned short numchars; + unsigned char firstchar; + unsigned char reserved0; + unsigned long reserved1; + } typeahead; +#pragma member_alignment restore + + ret_stat = 0; + + /* Loop through the terminal channels */ + for (i = 0; i < ti; i++) { + + term_array[i].fd_desc_ptr->revents = 0; + + /* assume output is always available */ + term_array[i].fd_desc_ptr->revents = + term_array[i].fd_desc_ptr->events & POLL_OUT; + + /* Poll input status */ + if (term_array[i].fd_desc_ptr->events & POLL_IN) { + status = SYS$QIOW(EFN$C_ENF, term_array[i].channel, + IO$_SENSEMODE | IO$M_TYPEAHDCNT, &mode_iosb, NULL, NULL, + &typeahead, 8, 0, 0, 0, 0); + if ($VMS_STATUS_SUCCESS(status) && $VMS_STATUS_SUCCESS(mode_iosb.sts)) { + if (typeahead.numchars != 0) { + term_array[i].fd_desc_ptr->revents = + term_array[i].fd_desc_ptr->events & POLL_IN; + } + } else { + /* Something really wrong */ + ret_stat = -1; + errno = EIO; + break; + } + } + /* Increment the return status */ + if (term_array[i].fd_desc_ptr->revents != 0) + ret_stat++; + } + + return ret_stat; +} + +static int vms_poll_pipe(const struct vms_pollfd_st *pipe_array, int pi) { + int i; + int ret_stat; + int status; +#pragma member_alignment save +#pragma nomember_alignment + struct mbx_gmif_iosb_st { + unsigned short sts; + unsigned short num_msg; + unsigned long num_bytes; + } mbx_iosb; +#pragma member_alignment restore + + ret_stat = 0; + + /* Loop through the pipes */ + for (i = 0; i < pi; i++) { + pipe_array[i].fd_desc_ptr->revents = 0; + + /* Check the mailbox status */ + if (pipe_array[i].fd_desc_ptr->events & (POLL_IN | POLL_OUT)) { + status = SYS$QIOW(EFN$C_ENF, pipe_array[i].channel, IO$_SENSEMODE, + &mbx_iosb, NULL, NULL, 0, 0, 0, 0, 0, 0); + if ($VMS_STATUS_SUCCESS(status) && $VMS_STATUS_SUCCESS(mbx_iosb.sts)) { + + /* Got some information */ + + if (mbx_iosb.num_msg != 0) { + /* There is data to read */ + pipe_array[i].fd_desc_ptr->revents = + pipe_array[i].fd_desc_ptr->events & POLL_IN; + } else { + /* Pipe is empty, ok to write */ + pipe_array[i].fd_desc_ptr->revents = + pipe_array[i].fd_desc_ptr->events & POLL_OUT; + } + } else { + /* Something really wrong */ + ret_stat = -1; + errno = EIO; + break; + } + } + /* Increment the return status */ + if (pipe_array[i].fd_desc_ptr->revents != 0) + ret_stat++; + } + return ret_stat; +} + +static int vms_poll_x11_efn(const struct vms_pollfd_st *efn_array, int xi) { + int i; + int ret_stat; + int status; + unsigned long state; + + ret_stat = 0; + + /* Loop through the event flags */ + for (i = 0; i < xi; i++) { + efn_array[i].fd_desc_ptr->revents = 0; + + /* assume output is always available */ + efn_array[i].fd_desc_ptr->revents = + efn_array[i].fd_desc_ptr->events & POLL_OUT; + + /* Check the mailbox status */ + if (efn_array[i].fd_desc_ptr->events & (POLL_IN | POLL_OUT)) { + status = SYS$READEF(efn_array[i].fd_desc_ptr->fd, &state); + if ($VMS_STATUS_SUCCESS(status)) { + + /* Got some information */ + if (status == SS$_WASSET) { + /* There is data to read */ + efn_array[i].fd_desc_ptr->revents = + efn_array[i].fd_desc_ptr->events & POLL_IN; + } + } else { + /* Something really wrong */ + ret_stat = -1; + errno = EIO; + break; + } + } + /* Increment the return status */ + if (efn_array[i].fd_desc_ptr->revents != 0) + ret_stat++; + } + return ret_stat; +} + +/******************************************************************* + OpenVMS Open Source Community poll hack... + + this code acts as a wrapper for poll() and supports: + pipes + mailboxes + terminals + sockets + + + *******************************************************************/ + +int g_vms_poll(struct pollfd fd_array[], nfds_t nfds, int timeout) { + int ret_stat; + + struct { + short int buf_len; + short int item; + char *buf_addr; + unsigned short int *ret_len; + int end; + } item_list; + + int mbx_len; + unsigned int mbx_char; + + struct vms_pollfd_st *sock_array; + struct pollfd *sfd_array; + struct vms_pollfd_st *term_array; + struct vms_pollfd_st *pipe_array; + struct vms_pollfd_st *xefn_array; + + /* Sort out the pipes, terminals from the array */ + if ((nfds != 0) && (fd_array != NULL)) { + int i; + int pi; + int ti; + int si; + int xi; + int status; + int ti_stat; + int pi_stat; + int si_stat; + int xi_stat; + + ti_stat = 0; + pi_stat = 0; + si_stat = 0; + xi_stat = 0; + + /* Need 5 new arrays */ + sock_array = malloc(sizeof(struct vms_pollfd_st) * nfds); + if (sock_array == NULL) + return -1; + sfd_array = malloc(sizeof(struct pollfd) * nfds); + if (sfd_array == NULL) { + free(sock_array); + return -1; + } + term_array = malloc(sizeof(struct vms_pollfd_st) * nfds); + if (term_array == NULL) { + free(sock_array); + free(sfd_array); + return -1; + } + pipe_array = malloc(sizeof(struct vms_pollfd_st) * nfds); + if (pipe_array == NULL) { + free(term_array); + free(sock_array); + free(sfd_array); + return -1; + } + xefn_array = malloc(sizeof(struct vms_pollfd_st) * nfds); + if (xefn_array == NULL) { + free(pipe_array); + free(term_array); + free(sock_array); + free(sfd_array); + return -1; + } + memset(sock_array, 0, sizeof(struct vms_pollfd_st) * nfds); + memset(sfd_array, 0, sizeof(struct pollfd) * nfds); + memset(term_array, 0, sizeof(struct vms_pollfd_st) * nfds); + memset(pipe_array, 0, sizeof(struct vms_pollfd_st) * nfds); + memset(xefn_array, 0, sizeof(struct vms_pollfd_st) * nfds); + + /* Now actually separate things out */ + for (i = 0, pi = 0, si = 0, ti = 0, xi = 0; i < nfds; i++) { + fd_array[i].revents = 0; + + /* Only care about devices that are waiting for something */ + if (fd_array[i].events != 0) { + + /* First look for pipes */ + if (isapipe(fd_array[i].fd) == 1) { + pipe_array[pi].fd_desc_ptr = NULL; + if (fd_array[i].events & (POLL_IN | POLL_OUT)) { + pipe_array[pi].fd_desc_ptr = &fd_array[i]; + status = + g_vms_channel_lookup(fd_array[i].fd, &pipe_array[pi].channel); + if (status == 0) + pi++; + } + } + /* Then look for terminals */ + else if (isatty(fd_array[i].fd) == 1) { + term_array[ti].fd_desc_ptr = NULL; + if (fd_array[i].events & (POLL_IN | POLL_OUT)) { + term_array[ti].fd_desc_ptr = &fd_array[i]; + status = + g_vms_channel_lookup(fd_array[i].fd, &term_array[ti].channel); + if (status == 0) + ti++; + } + } + /* Should be a socket */ + else if (decc$get_sdc(fd_array[i].fd) != 0) { + sfd_array[si] = fd_array[i]; + sock_array[si].fd_desc_ptr = &fd_array[i]; + si++; + } else { + /**** WAP 24 Nov 2015 *********/ + /* see if it is a mailbox and then treat as a pipe or X11 event if not + * mailbox */ + pipe_array[pi].fd_desc_ptr = NULL; + + /* Only care about something with read/write events */ + mbx_char = 0; + if (fd_array[i].events & (POLL_IN | POLL_OUT)) { + pipe_array[pi].fd_desc_ptr = &fd_array[i]; + status = g_vms_channel_lookup(i, &pipe_array[pi].channel); + if (status == 0) { + item_list.buf_len = 4; + item_list.item = DVI$_DEVCLASS; + item_list.buf_addr = (void *)&mbx_char; + item_list.ret_len = (void *)&mbx_len; + item_list.end = 0; + + SYS$GETDVIW(0, pipe_array[pi].channel, 0, &item_list, 0, 0, 0, 0); + if ((mbx_char & DC$_MAILBOX) != 0) { + pi++; + } else { + SYS$DASSGN(pipe_array[pi].channel); + } + } /* if status */ + } /* if events MBX... */ + + /* What's left? X11 event flags */ + else if ((mbx_char & DC$_MAILBOX) == 0) { + + xefn_array[xi].fd_desc_ptr = NULL; + if (fd_array[i].events & (POLL_IN | POLL_OUT)) { + xefn_array[xi].fd_desc_ptr = &fd_array[i]; + xi++; + } + } + } + } /* if events */ + } /* for... */ + if ((ti == 0) && (pi == 0) && (si == 0) && (xi == 0)) { + /* Trivial case, all sockets */ + ret_stat = poll(fd_array, nfds, timeout); + } else { + int timeleft; + + timeleft = timeout; + ret_stat = 0; + + /* Terminals and or pipes and or sockets */ + /* Now we have to periodically poll everything with timeout */ + while (ret_stat == 0) { + int sleeptime; + + if (ti != 0) { + ti_stat = vms_poll_terminal(term_array, ti); + } + if (pi != 0) { + pi_stat = vms_poll_pipe(pipe_array, pi); + } + if (xi != 0) { + xi_stat = vms_poll_x11_efn(xefn_array, xi); + } + + if ((ti_stat != 0) || (pi_stat != 0) || (xi_stat != 0)) + sleeptime = 0; + else { + sleeptime = 100; + if ((timeleft < sleeptime) && (timeleft > -1)) + sleeptime = timeleft; + } + + if (si == 0) { + /* sleep for shorter of 100 Ms or timeout and retry */ + if (sleeptime > 0) + usleep(sleeptime * 1000); + } else { + int j; + + /* select for shorter of 100 Ms or timeout and retry */ + si_stat = poll(sfd_array, si, sleeptime); + if (si_stat != 0) { + + /* Need to copy the results back to original array */ + for (j = 0; j < si; j++) { + sock_array[j].fd_desc_ptr[0] = sfd_array[j]; + } + } + } + /* one last poll of terminals and pipes */ + if ((sleeptime > 0) || (si_stat > 0)) { + if ((ti != 0) && (ti_stat == 0)) { + ti_stat = vms_poll_terminal(term_array, ti); + } + if ((pi != 0) && (pi_stat == 0)) { + pi_stat = vms_poll_pipe(pipe_array, pi); + } + if ((xi != 0) && (xi_stat == 0)) { + xi_stat = vms_poll_x11_efn(xefn_array, xi); + } + } + if (timeleft > 0) { + timeleft -= sleeptime; + if (timeleft < 0) + timeleft = 0; + } + + /* Gather up any results */ + if ((ti_stat == -1) || (pi_stat == -1) || (si_stat == -1) || + (xi_stat == -1)) { + ret_stat = -1; + } else { + ret_stat = ti_stat + pi_stat + si_stat + xi_stat; + } + + /* Out of time? */ + if (timeleft <= 0) + break; + } + } + + /* Clean up channels */ + free(xefn_array); + while (ti > 0) { + ti--; + if (term_array[ti].fd_desc_ptr != NULL) { + SYS$DASSGN(term_array[ti].channel); + term_array[ti].fd_desc_ptr = NULL; + } + } + free(term_array); + while (pi > 0) { + pi--; + if (pipe_array[ti].fd_desc_ptr != NULL) { + SYS$DASSGN(pipe_array[pi].channel); + pipe_array[pi].fd_desc_ptr = NULL; + } + } + free(pipe_array); + free(sock_array); + free(sfd_array); + + } else { + /* Why would this be called with an empty array? */ + ret_stat = poll(fd_array, nfds, timeout); + } + + return ret_stat; +} +/******************************************************************* + Python API to the VMS select routine. + + Python gives us the max number of fds in a given array of fds, this is + different than the max_fd which is used by select which is the + highest value of the fd's. + + The arrays are just integer arrays of with the file numbers. + + "tout" is the pointer to the time sent by Python, which we need to + put into a timeval structure for the call to g_vms_select. + + On return we test the file number values which are returned and we + update the arrays so we identity the channel to then do the IO on + for the Python code. + + The Python code returns a triplet-tuple of file numbers for read + write, exception. + + + +*******************************************************************/ + +int py_g_vms_select(int nfds, int *rfds, int *wfds, int *xfds, void *tout) { + + int g_vms_select(int nfds, fd_set *readfds, fd_set *writefds, + fd_set *exceptfds, struct timeval *timeout); + + int ret_stat; + int i, ri, wi, xi; + int max_fd; + double timeout; + long seconds; + + fd_set rdfds, wrfds, xpfds, *readfds, *writefds, *exceptfds; + + struct timeval tv, *tvp; + + tvp = (struct timeval *)0; + /* Changed by Rinat to throw out PyFloat_AS_DOUBLE + if (tout == NULL) + tvp = (struct timeval *)0; + else { + timeout = PyFloat_AS_DOUBLE(tout); + if (timeout == -1) + return 0; + if (timeout > (double)LONG_MAX) + return 0; + + seconds = (long)timeout; + timeout = timeout - (double)seconds; + tv.tv_sec = seconds; + tv.tv_usec = (long)(timeout * 1E6); + tvp = &tv; + } + */ + /* printf ("py_b_vms_select nfds: %d rfds[0]: %d\n", nfds, rfds[0]); */ + + if (rfds == NULL) + readfds = (void *)0; + else + readfds = &rdfds; + if (wfds == NULL) + writefds = (void *)0; + else + writefds = &wrfds; + if (xfds == NULL) + exceptfds = (void *)0; + else + exceptfds = &xpfds; + max_fd = 0; + for (i = 0; i < nfds; i++) { + if (rfds[i] != 0) { + if (rfds[i] > max_fd) + max_fd = rfds[i]; + FD_SET(rfds[i], &rdfds); + } + if (wfds[i] != 0) { + if (wfds[i] > max_fd) + max_fd = wfds[i]; + FD_SET(wfds[i], &wrfds); + } + if (xfds[i] != 0) { + if (xfds[i] > max_fd) + max_fd = xfds[i]; + FD_SET(xfds[i], &xpfds); + } + } + + /* printf ("max_fd: %d, readfds: %x, writefsd: %x, exceptfds: %x, tvp: %x\n", + max_fd, readfds, writefds, exceptfds, tvp); + */ + ret_stat = g_vms_select(max_fd, readfds, writefds, exceptfds, tvp); + + for (i = 0; i < nfds; i++) { + rfds[i] = 0; + wfds[i] = 0; + xfds[i] = 0; + } + + for (i = 0, ri = 0, wi = 0, xi = 0; i < max_fd; i++) { + if (FD_ISSET(i, &rdfds)) { + rfds[ri] = i; + ri++; + } + if (FD_ISSET(i, &wrfds)) { + wfds[ri] = i; + wi++; + } + if (FD_ISSET(i, &xpfds)) { + xfds[ri] = i; + xi++; + } + } + return ret_stat; +} + +/******************************************************************* + OpenVMS Open Source Community select hack... + + Check channel for provided fd to see of there is data waiting... + + *******************************************************************/ + +int py_g_vms_buffer_data(int fd) { + int ret_stat; + unsigned short channel; + int status; +#pragma member_alignment save +#pragma nomember_alignment + struct mbx_gmif_iosb_st { + unsigned short sts; + unsigned short num_msg; + unsigned long num_bytes; + } mbx_iosb; +#pragma member_alignment restore + + mbx_iosb.num_msg = 0; + mbx_iosb.num_bytes = 0; + ret_stat = 0; + ret_stat = g_vms_channel_lookup(fd, &channel); + if (ret_stat == 0) { + status = SYS$QIOW(EFN$C_ENF, channel, IO$_SENSEMODE, &mbx_iosb, NULL, NULL, + 0, 0, 0, 0, 0, 0); + if ($VMS_STATUS_SUCCESS(status) && $VMS_STATUS_SUCCESS(mbx_iosb.sts)) { + + /* Got some information */ + if (mbx_iosb.num_msg != 0) { + /* There is data to read */ + ret_stat = mbx_iosb.num_msg; + } else { + ret_stat = 0; + } + } else { + /* Something really wrong */ + ret_stat = -1; + errno = EIO; + } + } + SYS$DASSGN(channel); + return ret_stat; +} +/******************************************************************* + OpenVMS Open Source Community select hack... + + this code acts as a wrapper for poll() and supports: + pipes + mailboxes + terminals + sockets + + *******************************************************************/ + +int g_vms_select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, + struct timeval *timeout) { + int ret_stat; + int siif_index; + int old_siif_value; + int new_siif_value; + int i; + + struct { + short int buf_len; + short int item; + char *buf_addr; + unsigned short int *ret_len; + int end; + } item_list; + + int mbx_len; + unsigned int mbx_char; + + const char *select_ignores_invalid_fd = "DECC$SELECT_IGNORES_INVALID_FD"; + + /* Get old ignore setting and enable new */ + /* threaded applications need this setting enabled before this routine */ + siif_index = decc$feature_get_index(select_ignores_invalid_fd); + if (siif_index >= 0) + old_siif_value = decc$feature_set_value(siif_index, 1, 1); + + if (nfds != 0) { + int i; + struct pollfd *poll_array; + struct vms_pollfd_st *term_array; + struct vms_pollfd_st *pipe_array; + struct vms_pollfd_st *xefn_array; + int ti; + int si; + int pi; + int xi; + int status; + + /* Need structures to separate terminals and pipes */ + poll_array = malloc(sizeof(struct pollfd) * (nfds + 1)); + if (poll_array == NULL) { + return -1; + } + term_array = malloc(sizeof(struct vms_pollfd_st) * (nfds + 1)); + if (term_array == NULL) { + free(poll_array); + return -1; + } + pipe_array = malloc(sizeof(struct vms_pollfd_st) * (nfds + 1)); + if (pipe_array == NULL) { + free(term_array); + free(poll_array); + return -1; + } + xefn_array = malloc(sizeof(struct vms_pollfd_st) * (nfds + 1)); + if (xefn_array == NULL) { + free(pipe_array); + free(term_array); + free(poll_array); + return -1; + } + + /* printf (" in g_vms_select\n"); */ + + /* Find all of the terminals and pipe fds for polling */ + for (i = 0, pi = 0, ti = 0, xi = 0, si = 0; i <= nfds; i++) { + /* printf ("fds : %d\n", i); */ + /* Copy file descriptor arrays into a poll structure */ + poll_array[i].fd = i; + poll_array[i].events = 0; + poll_array[i].revents = 0; + + /* Now separate out the pipes */ + if (isapipe(i) == 1) { + /* printf ("pipe\n"); */ + pipe_array[pi].fd_desc_ptr = &poll_array[i]; + if (readfds != NULL) { + /* printf ("pipe array read: %d\n", i); */ + if (FD_ISSET(i, readfds)) + poll_array[i].events |= POLL_IN; + } + if (writefds != NULL) { + /* printf ("pipe array write: %d\n", i); */ + if (FD_ISSET(i, writefds)) + poll_array[i].events |= POLL_OUT; + } + /* Only care about something with read/write events */ + if (poll_array[i].events != 0) { + status = g_vms_channel_lookup(i, &pipe_array[pi].channel); + if (status == 0) { + /* printf ("pipe array accepted\n"); */ + pi++; + } + } + } + /* Not a pipe, see if a terminal */ + else if (isatty(i) == 1) { + /* printf ("terminal\n"); */ + term_array[ti].fd_desc_ptr = &poll_array[i]; + if (readfds != NULL) { + if (FD_ISSET(i, readfds)) + poll_array[i].events |= POLL_IN; + } + if (writefds != NULL) { + if (FD_ISSET(i, writefds)) + poll_array[i].events |= POLL_OUT; + } + /* Only care about something with read/write events */ + if (poll_array[i].events != 0) { + status = g_vms_channel_lookup(i, &term_array[ti].channel); + if (status == 0) { + ti++; + } + } + } else if (decc$get_sdc(i) != 0) { + /* printf ("socket\n"); */ + /* Not pipe or terminal, use built in select on this */ + si++; + } else { + /* see if it is a mailbox and then treat as a pipe or X11 event if not + * mailbox */ + /* printf ("mailbox\n"); */ + pipe_array[pi].fd_desc_ptr = &poll_array[i]; + if (readfds != NULL) { + if (FD_ISSET(i, readfds)) + poll_array[i].events |= POLL_IN; + } + if (writefds != NULL) { + if (FD_ISSET(i, writefds)) + poll_array[i].events |= POLL_OUT; + } + /* Only care about something with read/write events */ + mbx_char = 0; + if (poll_array[i].events != 0) { + status = g_vms_channel_lookup(i, &pipe_array[pi].channel); + if (status == 0) { + item_list.buf_len = 4; + item_list.item = DVI$_DEVCLASS; + item_list.buf_addr = (void *)&mbx_char; + item_list.ret_len = (void *)&mbx_len; + item_list.end = 0; + + SYS$GETDVIW(0, pipe_array[pi].channel, 0, &item_list, 0, 0, 0, 0); + if ((mbx_char & DC$_MAILBOX) != 0) { + pi++; + } else { + poll_array[i].events = 0; + SYS$DASSGN(pipe_array[pi].channel); + } + } else { + poll_array[i].events = 0; + } + } + /* What's left? X11 event flags */ + else if ((mbx_char & DC$_MAILBOX) == 0) { + /* printf ("X11\n"); */ + xefn_array[xi].fd_desc_ptr = &poll_array[i]; + if (readfds != NULL) { + if (FD_ISSET(i, readfds)) + poll_array[i].events |= POLL_IN; + } + if (writefds != NULL) { + if (FD_ISSET(i, writefds)) + poll_array[i].events |= POLL_OUT; + } + /* Only care about something with read/write events */ + if (poll_array[i].events != 0) { + xi++; + } + } + } + } + if ((pi == 0) && (ti == 0) && (xi == 0)) { + /* printf ("socket select\n"); */ + /* All sockets, let select do everything */ + ret_stat = select(nfds, readfds, writefds, exceptfds, timeout); + } else { + int utimeleft; /* Microseconds left */ + int ti_stat; + int pi_stat; + int si_stat; + int xi_stat; + struct timespec end_time; + + ti_stat = 0; + pi_stat = 0; + si_stat = 0; + xi_stat = 0; + end_time.tv_sec = 0; + end_time.tv_nsec = 0; + #define FULL_NSEC 1000000000 + #define FULL_USEC 1000000 + utimeleft = FULL_USEC; + if (timeout != NULL) { + if (clock_gettime(CLOCK_REALTIME, &end_time)) { + end_time.tv_sec = 0; + end_time.tv_nsec = 0; + } else { + end_time.tv_sec += timeout->tv_sec; + end_time.tv_nsec += timeout->tv_usec * (FULL_NSEC / FULL_USEC); + while (end_time.tv_nsec >= FULL_NSEC) { + ++end_time.tv_sec; + end_time.tv_nsec -= FULL_NSEC; + } + + } + } + ret_stat = 0; + + /* Terminals and or pipes (and or MBXs) and or sockets */ + /* Now we have to periodically poll everything with timeout */ + while (ret_stat == 0) { + int sleeptime; + + if (ti != 0) { + /* printf ("terminal poll\n"); */ + ti_stat = vms_poll_terminal(term_array, ti); + } + if (pi != 0) { + /* printf ("pipe poll\n"); */ + pi_stat = vms_poll_pipe(pipe_array, pi); + } + if (xi != 0) { + xi_stat = vms_poll_x11_efn(xefn_array, xi); + } + + if (ti_stat != 0 || pi_stat != 0 || xi_stat != 0) { + /* printf ("ti_stat: %d pi_stat: %d xi_stat: %d\n", ti_stat, pi_stat, + * xi_stat); */ + sleeptime = 0; + } else { + sleeptime = 100 * 1000; + if (utimeleft < sleeptime) { + sleeptime = utimeleft; + } + } + if (si == 0) { + /* sleep for shorter of 100 Ms or timeout and retry */ + if (sleeptime > 0) + usleep(sleeptime); + } else { + struct timeval sleep_timeout; + sleep_timeout.tv_sec = 0; + sleep_timeout.tv_usec = sleeptime; + si_stat = select(nfds, readfds, writefds, exceptfds, &sleep_timeout); + } + /* one last poll of terminals and pipes */ + if ((sleeptime > 0) || (si_stat > 0)) { + if ((ti != 0) && (ti_stat == 0)) { + ti_stat = vms_poll_terminal(term_array, ti); + } + if ((pi != 0) && (pi_stat == 0)) { + pi_stat = vms_poll_pipe(pipe_array, pi); + } + if ((xi != 0) && (xi_stat == 0)) { + xi_stat = vms_poll_x11_efn(xefn_array, xi); + } + } + + /* Gather up any results */ + if ((ti_stat == -1) || (pi_stat == -1) || (si_stat == -1) || (xi_stat == -1)) { + ret_stat = -1; + } else { + ret_stat = ti_stat + pi_stat + si_stat + xi_stat; + } + + /* Copy the pipe and terminal information */ + if ((ti_stat > 0) || (pi_stat > 0) || (xi_stat > 0)) { + int j; + for (j = 0; j < nfds; j++) { + if (poll_array[j].events != 0) { + if (readfds != NULL) { + if (poll_array[j].revents & POLL_IN) + FD_SET(poll_array[j].fd, readfds); + else + FD_CLR(poll_array[j].fd, readfds); + } + if (writefds != NULL) { + if (poll_array[j].revents & POLL_OUT) + FD_SET(poll_array[j].fd, writefds); + else + FD_CLR(poll_array[j].fd, writefds); + } + } + } + } + /* Timed out? */ + if (timeout != NULL) { + struct timespec cur_time; + if (clock_gettime(CLOCK_REALTIME, &cur_time)) { + // failed to obtain current time + break; + } else { + if (cur_time.tv_sec > end_time.tv_sec || + cur_time.tv_sec == end_time.tv_sec && cur_time.tv_nsec >= end_time.tv_nsec) { + // time out + break; + } else { + if (end_time.tv_sec - cur_time.tv_sec <= 1) { + utimeleft = (end_time.tv_sec - cur_time.tv_sec) * FULL_USEC; + utimeleft += (end_time.tv_nsec - cur_time.tv_nsec) / (FULL_NSEC / FULL_USEC); + if (utimeleft < 0) { + // something wrong + break; + } + } + } + } + } + } + } + while (pi > 0) { + pi--; + SYS$DASSGN(pipe_array[pi].channel); + } + free(poll_array); + while (ti > 0) { + ti--; + SYS$DASSGN(term_array[ti].channel); + } + free(term_array); + free(pipe_array); + free(xefn_array); + } else { + ret_stat = select(nfds, readfds, writefds, exceptfds, timeout); + } + + /* Restore old setting */ + if (siif_index >= 0) + new_siif_value = decc$feature_set_value(siif_index, 1, old_siif_value); + + return ret_stat; +} + +#define poll g_vms_poll +#define select(__v, __w, __x, __y, __z) g_vms_select(__v, __w, __x, __y, __z) diff --git a/vms/vms_sqlite3_first.h b/vms/vms_sqlite3_first.h new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3Ztc19zcWxpdGUzX2ZpcnN0Lmg= --- /dev/null +++ b/vms/vms_sqlite3_first.h @@ -0,0 +1,6 @@ +#ifndef __SQLITE3_H__ +#define __SQLITE3_H__ + +#define MODULE_NAME "sqlite3" + +#endif diff --git a/vms/wheels_create_kit_files.py b/vms/wheels_create_kit_files.py new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3doZWVsc19jcmVhdGVfa2l0X2ZpbGVzLnB5 --- /dev/null +++ b/vms/wheels_create_kit_files.py @@ -0,0 +1,184 @@ +import os +import re +import sys + +def spec_replacer(match): + if match.group(0) == ' ': + return '^_' + return '^' + match.group(0) + +def create_content(type, major, minor, level, edit): + re_is_compiled = re.compile(r'([^-]*)-([^-]*)-([^-]*)-([^-]*)-openvms(.*?).whl', flags=re.IGNORECASE) + python_wheels_dir = '/python_wheels$root' + python_wheels_dir_len = len(python_wheels_dir) + all_dirs = [] + all_files = [] + spec_pattern = re.compile('([. ^+()])') + for root, dirs, files in os.walk(python_wheels_dir): + inner_dirs = list(filter(lambda x: x != '', spec_pattern.sub(spec_replacer, root[python_wheels_dir_len:]).split('/'))) + kit_dir = '[' + '.'.join(['wheels'] + inner_dirs) + ']' + src_dir = '[000000]' + if len(inner_dirs): + src_dir = '[' + '.'.join(inner_dirs) + ']' + all_dirs.append('directory "' + kit_dir + '" version limit 1;') + for file in files: + file_name, file_ext = os.path.splitext(file) + if file_ext == '': + file_ext = '.' + file_name = spec_pattern.sub(spec_replacer, file_name) + kit_file_name = file_name + # test if module is compiled + matched = re_is_compiled.match(file) + if matched: + kit_file_name = spec_pattern.sub(spec_replacer, + matched.group(1) + '-' + # name + matched.group(2) + # version + '-py2.py3-none-any') # built for + all_files.append('file "' + \ + kit_dir + kit_file_name + file_ext + \ + '" source "' + \ + src_dir + file_name + file_ext + \ + '";') + try: + dirs.remove('__pycache__') + except: + pass + + kit_template = '''-- +-- (C) Copyright 2020 VMS Software Inc. +-- +product VSI I64VMS PYTHWHLS {type}{major}.{minor}-{level}{edit} FULL ; + +-- +-- Directories... +-- + + {dirs} + +-- +-- Files... +-- + + {files} + +-- +-- Start-up and shutdown scripts +-- +-- file "[sys$startup]python_wheels$define_root.com" source "[000000]python_wheels$define_root.com"; +-- file "[sys$startup]python_wheels$startup.com" source "[000000]python_wheels$startup.com"; + +-- +-- Do post-install tasks +-- + + execute postinstall ( + "root = f$trnlmn(""pcsi$destination"") - ""]"" + ""wheels.]""", + "define/system/trans=concealed python_wheels$root 'root'", + "define/system PIP_FIND_LINKS ""/python_wheels$root""", + "open/write fd sys$startup:wheels$startup.com", + "write fd ""$!Define logical names for Python wheels packages...""", + "write fd ""$define/system/trans=concealed python_wheels$root ''root'""", + "write fd ""$define/system PIP_FIND_LINKS """"/python_wheels$root""""", + "write fd ""$exit""", + "close fd" + ); + +-- execute postinstall ( +-- "root = f$trnlmn(""pcsi$destination"") - ""]"" + ""wheels.]""", +-- "define/system/trans=concealed python_wheels$root 'root'", +-- "define/system PIP_FIND_LINKS ""/python_wheels$root""", +-- "write sys$output ""% Add next commands to the system startup file:""", +-- "write sys$output ""% $define/system/trans=concealed python_wheels$root ''root'""", +-- "write sys$output ""% $define/system PIP_FIND_LINKS """"/python_wheels$root""""" +-- ) interactive ; + +-- execute +-- postinstall +-- "@pcsi$source:[000000]python_wheels$define_root.com" +-- interactive +-- uses [000000]python_wheels$define_root.com +-- ; + +-- +-- Okay, done. Tell the user what to do next. +-- + information POST_INSTALL phase after with helptext; + +end product; +''' + # type, major, minor, level, edit must be the same as in pythlib.pcsi$text + kit_content = kit_template.format( + type=type, + major=major, + minor=minor, + level=level, + edit=edit, + dirs='\n '.join(all_dirs), + files='\n '.join(all_files)) + with open('pythwhls.pcsi$desc', 'w') as file: + file.write(kit_content) + + text_template = '''=product VSI I64VMS PYTHWHLS {type}{major}.{minor}-{level}{edit} full +1 'PRODUCT +=prompt Python wheels collection for OpenVMS ({edit}) + +1 'PRODUCER +=prompt VSI Software Inc. + +1 'NOTICE +=prompt (C) Copyright 2020 VMS Software Inc. + +1 POST_INSTALL +=prompt Post-installation tasks are required. +To define the Wheels for Python runtime at system boot time, add the +following lines to SYS$MANAGER:SYSTARTUP_VMS.COM: + + $ file := sys$startup:wheels$startup.com + $ if f$search("''file'") .nes. "" then @'file' + +''' + text_content = text_template.format( + type=type, + major=major, + minor=minor, + level=level, + edit=edit, + dirs='\n '.join(all_dirs), + files='\n '.join(all_files)) + with open('pythwhls.pcsi$text', 'w') as file: + file.write(text_content) + +if __name__ == "__main__": + + import getopt + import datetime + + opts, args = getopt.getopt(sys.argv[1:], '', ['type=', 'major=', 'minor=', 'level=', 'edit=']) + + type = 'A' + major = '0' + minor = '0' + level = '1' + edit = '' # 'd' + datetime.date.today().strftime('%Y%m%d') + + for opt, optarg in opts: + if opt in ['--type']: + type = optarg + elif opt in ['--major']: + major = optarg + elif opt in ['--minor']: + minor = optarg + elif opt in ['--level']: + level = optarg + elif opt in ['--edit']: + edit = optarg + else: + print('Unknown option %s' % opt) + + create_content( + type, + major, + minor, + level, + edit, + ) diff --git a/vms/wheels_make_kit.com b/vms/wheels_make_kit.com new file mode 100644 index 0000000000000000000000000000000000000000..9d9986df1ce6ba133b4e5aedeb9b975e1e01132b_dm1zL3doZWVsc19tYWtlX2tpdC5jb20= --- /dev/null +++ b/vms/wheels_make_kit.com @@ -0,0 +1,23 @@ +$ set verify +$ +$ delete/log/noconf vsi-i64vms-pythwhls-*.pcsi;* +$ delete/log/noconf vsi-i64vms-pythwhls-*.pcsi$compressed;* +$ +$ product package pythwhls - + /source=pythwhls.pcsi$desc - + /destination=[] - + /material=(python_wheels$root:) - + /format=sequential - + /opt=noconf - + /log - + /producer=VSI +$ +$ product copy pythwhls/source=[]/dest=[]/format=compressed/opt=noconf +$ purge/log +$ +$ purge/log [...] +$ +$ set noverify +$ +$ exit +