Added dllbase_nt.txt and python_nt.rc;

added notes to readme.txt about NumPy targets;
added some symbols to python_nt.def.
This commit is contained in:
Guido van Rossum 1996-08-23 15:48:14 +00:00
parent bc17d299cc
commit cbc66767c5
4 changed files with 448 additions and 0 deletions

38
PC/dllbase_nt.txt Normal file
View File

@ -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

345
PC/python_nt.def Normal file
View File

@ -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

53
PC/python_nt.rc Normal file
View File

@ -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
/////////////////////////////////////////////////////////////////////////////

View File

@ -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)
=================================================