From cbc66767c5fe08125d883a1e2432d80f8083649d Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Fri, 23 Aug 1996 15:48:14 +0000 Subject: Added dllbase_nt.txt and python_nt.rc; added notes to readme.txt about NumPy targets; added some symbols to python_nt.def. --- PC/dllbase_nt.txt | 38 ++++++ PC/python_nt.def | 345 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ PC/python_nt.rc | 53 +++++++++ PC/readme.txt | 12 ++ 4 files changed, 448 insertions(+) create mode 100644 PC/dllbase_nt.txt create mode 100644 PC/python_nt.def create mode 100644 PC/python_nt.rc diff --git a/PC/dllbase_nt.txt b/PC/dllbase_nt.txt new file mode 100644 index 0000000..776d1c1 --- /dev/null +++ b/PC/dllbase_nt.txt @@ -0,0 +1,38 @@ +In Win32, DLL's are "pre-linked" using a specified base address. +When the DLL is loaded, an attempt is made to place it at +that address. If that address is already in use, a new base address +is selected, and the DLL subject to fixups. Apparently, these +fixups are very slow, and significant performance gains can be +made by selecting a good base address. + +This document is to allocate base addresses to core Python +and Python .PYD files, to give a better change of optimal performance. +This base address is passed to the linker using the /BASE +command line switch. + + + +Python.dll - 1e100000 - 1e180000 +Standard Extension Modules - 1e180000 - 1e200000 + - socket 1e180000 - 1e188000 + - _tkinter 1e190000 - 1e1A0000 + +Other extension modules + - win32api 1e200000 - 1e220000 + - win32ras 1e220000 - 1e230000 + - win32lz 1e230000 - 1e240000 + - timer 1e240000 - 1e250000 + - mmapfile 1e250000 - 1e260000 + - avl 1e270000 - 1e270000 + - dbhash 1e280000 - 1e290000 + - win32net 1e290000 - 1e2A0000 + - oleauto 1e2A0000 - 1e2B0000 + - oleautsv 1e2B0000 - 1e2c0000 + - nspi 1e2d0000 - 1e2e0000 + - npipw.dll 1e2e0000 - 1e2f0000 + - _imaging 1e2f0000 - 1e300000 + - multiarray 1e300000 - 1e310000 + - bsddb 1e320000 - 1e330000 + +PythonWin + win32ui 1e400000 - 1e500000 diff --git a/PC/python_nt.def b/PC/python_nt.def new file mode 100644 index 0000000..cbb965b --- /dev/null +++ b/PC/python_nt.def @@ -0,0 +1,345 @@ +LIBRARY Python14.dll +CODE PRELOAD MOVEABLE DISCARDABLE +DATA PRELOAD SINGLE + +EXPORTS +; Data item exports +; PyAnyNumber_Type DATA +; PyAnySequence_Type DATA +; PyAnyMapping_Type DATA + _Py_ZeroStruct DATA + _Py_NoneStruct DATA + _Py_TrueStruct DATA + Py_DebugFlag DATA + _PyParser_Grammar DATA + _PySys_ProfileFunc DATA + _PySys_TraceFunc DATA + _PySys_CheckInterval DATA + _PyThread_Started DATA + _PyParser_TokenNames DATA + Py_VerboseFlag DATA + Py_SuppressPrintingFlag DATA + PyExc_AccessError DATA + PyExc_AttributeError DATA + PyExc_ConflictError DATA + PyExc_EOFError DATA + PyExc_IOError DATA + PyExc_ImportError DATA + PyExc_IndexError DATA + PyExc_KeyError DATA + PyExc_MemoryError DATA + PyExc_NameError DATA + PyExc_OverflowError DATA + PyExc_RuntimeError DATA + PyExc_SyntaxError DATA + PyExc_SystemError DATA + PyExc_TypeError DATA + PyExc_ValueError DATA + PyExc_ZeroDivisionError DATA + PyExc_KeyboardInterrupt DATA + PyExc_SystemExit DATA + PyFloat_Type DATA + PyInt_Type DATA + PyLong_Type DATA + PyString_Type DATA + PyType_Type DATA + PyList_Type DATA + PyDict_Type DATA + PyDict_Type DATA + PyTuple_Type DATA + PyFile_Type DATA + PyClass_Type DATA + PyFunction_Type DATA + PyMethod_Type DATA + PyInstance_Type DATA + PyCFunction_Type DATA + PyModule_Type DATA + PyCode_Type DATA + PyFrame_Type DATA + PyRange_Type DATA + PyComplex_Type DATA + _Py_EllipsesObject DATA + PySlice_Type DATA + + _PyObject_New + _PyObject_NewVar + PyObject_Compare + PyObject_GetAttrString + PyObject_GetAttr + PyObject_HasAttrString + PyObject_Hash + PyObject_Print + PyObject_Repr + PyObject_Str + PyObject_SetAttrString + PyObject_SetAttr + PyObject_IsTrue + PyFloat_AsString + PyFloat_AsDouble + PyFloat_FromDouble + PyInt_AsLong + PyInt_GetMax + PyInt_FromLong + PyLong_AsDouble + PyLong_FromDouble + PyLong_AsLong + PyLong_FromString + PyLong_FromLong + PyString_Format + PyString_Size + PyString_AsString + PyString_Concat + PyString_ConcatAndDel + PyString_FromStringAndSize + PyString_FromString + _PyString_Resize + + PyList_Append + PyList_GetItem + PyList_Size + PyList_GetSlice + PyList_Insert + PyList_New + PyList_SetItem + PyList_SetSlice + PyList_Sort + PyList_Reverse + PyList_AsTuple + PyDict_SetItemString + PyDict_GetItemString + PyDict_DelItemString + PyDict_Items + PyDict_Items + PyDict_Keys + PyDict_Keys + PyDict_Values + PyDict_Values + PyDict_Size + PyDict_Size + PyDict_Clear + PyDict_Next + PyDict_SetItem + PyDict_SetItem + PyDict_GetItem + PyDict_GetItem + PyDict_DelItem + PyDict_DelItem + PyDict_New + PyDict_New + PyTuple_GetItem + PyTuple_Size + PyTuple_GetSlice + PyTuple_New + PyTuple_SetItem + PyFile_GetLine + PyFile_AsFile + PyFile_Name + PyFile_SetBufSize + PyFile_FromString + PyFile_FromFile + PyFile_SoftSpace + PyFile_WriteObject + PyFile_WriteString + PyMethod_Class + PyMethod_Function + PyMethod_Self + PyClass_IsSubclass + PyClass_New + PyMethod_New + PyInstance_New + PyInstance_DoBinOp + PyFrame_ExtendStack + PyFrame_New + PyFrame_BlockPop + PyFrame_BlockSetup + PyFrame_FastToLocals + PyFrame_LocalsToFast + PyFunction_GetCode + PyFunction_GetGlobals + PyOS_strtol + PyOS_strtoul + PyFunction_New + PyRange_New + Py_FindMethod + Py_FindMethodInChain + PyCFunction_GetFunction + PyCFunction_GetSelf + PyCFunction_New + PyModule_GetDict + PyModule_GetName + PyModule_New + PyGrammar_AddAccelerators + PyGrammar_FindDFA + PyGrammar_LabelRepr +; PyNode_ListTree ; debugging item only + PyNode_AddChild + PyNode_Free + PyNode_New + PyParser_AddToken + PyParser_Delete + PyParser_New + PyParser_ParseFile + PyParser_ParseString + PyToken_OneChar + PyToken_TwoChars + PyTokenizer_Free + PyTokenizer_Get + PyTokenizer_FromFile + PyTokenizer_FromString + PyNode_Compile + PyCode_New + PyEval_CallObject + PyEval_EvalCode + Py_FlushLine + PyEval_GetBuiltins + PyEval_GetGlobals + PyEval_GetLocals + PyEval_GetOwner + PyEval_GetFrame + PyEval_GetRestricted + PyEval_InitThreads + PyEval_RestoreThread + PyEval_SaveThread + PyTraceBack_Fetch + PyTraceBack_Here + PyTraceBack_Print + PyTraceBack_Store + PyImport_AddModule + PyImport_Cleanup + PyImport_GetModuleDict + PyImport_GetMagicNumber + PyImport_ImportModule + PyImport_ImportFrozenModule + PyImport_Init + PyImport_ReloadModule + PyNumber_Coerce + PyBuiltin_Init + PyMarshal_Init + Py_InitModule4 + PySys_Init + PySys_SetArgv + PySys_SetPath + PySys_GetObject + PySys_GetFile + PySys_SetObject + Py_CompileString + Py_FatalError + Py_Exit + Py_Cleanup + Py_Initialize + PyErr_Print + PyParser_SimpleParseFile + PyParser_SimpleParseString + PyRun_AnyFile + PyRun_SimpleFile + PyRun_SimpleString + PyRun_File + PyRun_String + PyRun_InteractiveOne + PyRun_InteractiveLoop + PyMember_Get + PyMember_Set + Py_BuildValue + Py_VaBuildValue + PyArg_Parse + PyArgs_VaParse + PyArg_ParseTuple + PyArg_GetChar + PyArg_GetDoubleArray + PyArg_GetFloat + PyArg_GetFloatArray + PyArg_GetLong + PyArg_GetLongArray + PyArg_GetLongArraySize + PyArg_GetObject + PyArg_GetShort + PyArg_GetShortArray + PyArg_GetShortArraySize + PyArg_GetString + PyErr_BadArgument + PyErr_BadInternalCall + PyErr_NoMemory + PyErr_SetFromErrno + PyErr_SetNone + PyErr_SetString + PyErr_SetObject + PyErr_Occurred + PyErr_Fetch + PyErr_Restore + PyErr_Clear + PyOS_InitInterrupts + PyOS_InterruptOccurred + PyOS_GetLastModificationTime + PyOS_Readline + PyErr_CheckSignals + PyErr_SetInterrupt + PyCallable_Check + Py_Main + Py_GetCopyright + Py_GetVersion + + PyCallable_Check + PyObject_CallObject + PyObject_CallFunction + PyObject_CallMethod + PyObject_Type + PyObject_Length + PyObject_GetItem + PyObject_SetItem + PyNumber_Check + PyNumber_Add + PyNumber_Subtract + PyNumber_Multiply + PyNumber_Divide + PyNumber_Remainder + PyNumber_Divmod + PyNumber_Power + PyNumber_Negative + PyNumber_Positive + PyNumber_Absolute + PyNumber_Invert + PyNumber_Lshift + PyNumber_Rshift + PyNumber_And + PyNumber_Xor + PyNumber_Or + PyNumber_Int + PyNumber_Long + PyNumber_Float + PySequence_Check + PySequence_Concat + PySequence_Repeat + PySequence_GetItem + PySequence_GetSlice + PySequence_SetItem + PySequence_SetSlice + PySequence_Tuple + PySequence_Count + PySequence_In + PySequence_Index + PySequence_Length + PyMapping_Check + PyMapping_Length + PyMapping_HasKeyString + PyMapping_HasKey + PyMapping_SetItemString + PyMapping_GetItemString + PyComplex_FromCComplex + PyComplex_FromDoubles + PyComplex_RealAsDouble + PyComplex_ImagAsDouble + PyComplex_AsCComplex +; PyComplex_Check *** This is a macro *** + Py_AtExit + Py_GetPath + Py_GetExecPrefix + Py_GetPrefix + Py_GetProgramName + PySlice_New + PySlice_GetIndices + _Py_c_pow + _Py_c_quot + _Py_c_neg + _Py_c_sum + _Py_c_prod + _Py_c_diff diff --git a/PC/python_nt.rc b/PC/python_nt.rc new file mode 100644 index 0000000..92dc0c6 --- /dev/null +++ b/PC/python_nt.rc @@ -0,0 +1,53 @@ +// Resource script for Python core DLL. +// Currently only holds version information. +// +#include "ver.h" +#include "winver.h" + +#define MS_WINDOWS +#include "modsupport.h" +#include "patchlevel.h" + +#define PYTHON_VERSION MS_DLL_ID "." PYTHON_API_STRING "\0" + +///////////////////////////////////////////////////////////////////////////// +// +// Version +// + +VS_VERSION_INFO VERSIONINFO + FILEVERSION 1,0,0,1 + PRODUCTVERSION 1,0,0,1 + FILEFLAGSMASK 0x3fL +#ifdef _DEBUG + FILEFLAGS 0x1L +#else + FILEFLAGS 0x0L +#endif + FILEOS 0x40004L + FILETYPE 0x1L + FILESUBTYPE 0x0L +BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "000004b0" + BEGIN + VALUE "CompanyName", "PSA\0" + VALUE "FileDescription", "Python Core\0" + VALUE "FileVersion", PYTHON_VERSION + VALUE "InternalName", "Python DLL\0" + VALUE "LegalCopyright", "Copyright © 1991-1996 Stichting Mathematisch Centrum, Amsterdam\0" +#ifdef PYTHON_DLL_NAME + VALUE "OriginalFilename", PYTHON_DLL_NAME "\0" +#endif + VALUE "ProductName", "Python\0" + VALUE "ProductVersion", PYTHON_VERSION + END + END + BLOCK "VarFileInfo" + BEGIN + VALUE "Translation", 0x0, 1200 + END +END + +///////////////////////////////////////////////////////////////////////////// diff --git a/PC/readme.txt b/PC/readme.txt index 6c66e1e..6a4f934 100644 --- a/PC/readme.txt +++ b/PC/readme.txt @@ -83,6 +83,8 @@ python The Python main program, named python.exe. This should _tkinter The optional _tkinter extension, _tkinter.dll; see below. +NumPy, multiarray, fast_umath projects to build Numerical Python. + ALl end products of the compilation are placed in the subdirectory vc40 (which Developer Studio creates); object files are placed in vc40/tmp. There are no separate Release and Debug project variants. @@ -101,6 +103,16 @@ placed those files in C:\tcl\bin. In order to use _tkinter, the Tkinter.py module must be on PYTHONPATH. It is found in the Lib\tkinter subdirectory. +*** How to build Numerical Python *** + +This has been tested only with NumPy 1.0alpha2. Unpack the NumPy +tarfile so that it creates a NumPy subdirectory in the Python +distribution directory. You need to create exports files +NumPy/multiarray.def and NumPy/fast_umath.def (see PC/_tkinter.def for +an example). Then build the targets NumPy, multiarray and fast_umath, +in that order. To use Numerical Python you have to append NumPy/Lib +to sys.path. + Microsoft Visual C++ Version 1.5 (16-bit Windows) ================================================= -- cgit v0.12