Kaydet (Commit) cbc66767 authored tarafından Guido van Rossum's avatar Guido van Rossum

Added dllbase_nt.txt and python_nt.rc;

added notes to readme.txt about NumPy targets;
added some symbols to python_nt.def.
üst bc17d299
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
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
// 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
/////////////////////////////////////////////////////////////////////////////
...@@ -83,6 +83,8 @@ python The Python main program, named python.exe. This should ...@@ -83,6 +83,8 @@ python The Python main program, named python.exe. This should
_tkinter The optional _tkinter extension, _tkinter.dll; see below. _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 ALl end products of the compilation are placed in the subdirectory
vc40 (which Developer Studio creates); object files are placed in vc40 (which Developer Studio creates); object files are placed in
vc40/tmp. There are no separate Release and Debug project variants. 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 ...@@ -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 Tkinter.py module must be on PYTHONPATH. It is found in the
Lib\tkinter subdirectory. 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) Microsoft Visual C++ Version 1.5 (16-bit Windows)
================================================= =================================================
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment