|
1 Bug tracker at http://code.google.com/p/psutil/issues |
|
2 |
|
3 |
|
4 1.0.1 - 2013-07-12 |
|
5 ------------------ |
|
6 |
|
7 BUG FIXES |
|
8 |
|
9 * #405: network_io_counters(pernic=True) no longer works as intended in 1.0.0. |
|
10 |
|
11 |
|
12 1.0.0 - 2013-07-10 |
|
13 ------------------ |
|
14 |
|
15 NEW FEATURES |
|
16 |
|
17 * #18: Solaris support (yay!) (thanks Justin Venus) |
|
18 * #367: Process.get_connections() 'status' strings are now constants. |
|
19 * #380: test suite exits with non-zero on failure. (patch by floppymaster) |
|
20 * #391: extensively use unittest2 module in unit tests and provide |
|
21 workarounds if this is not installed on python < 2.7. |
|
22 |
|
23 BUG FIXES |
|
24 |
|
25 * #374: [Windows] negative memory usage reported when processes use a lot of |
|
26 memory. |
|
27 * #379: [Linux] Process.get_memory_maps() may raise ValueError. |
|
28 * #394: [OSX] Mapped memory regions report incorrect file name. |
|
29 * #404: [Linux] sched_*affinity() are implicitly declared. (patch by Arfrever) |
|
30 |
|
31 API CHANGES |
|
32 |
|
33 * Process.get_connections() 'status' field is no longer a string but a constant |
|
34 object (psutil.CONN_*). |
|
35 * Process.get_connections() 'local_address' and 'remote_address' fields renamed |
|
36 to 'laddr' and 'raddr'. |
|
37 * psutil.network_io_counters() renamed to psutil.net_io_counters(). |
|
38 |
|
39 |
|
40 0.7.1 - 2013-05-03 |
|
41 ------------------ |
|
42 |
|
43 BUG FIXES: |
|
44 |
|
45 * #325: [BSD] psutil.virtual_memory() can raise SystemError. |
|
46 (patch by Jan Beich) |
|
47 * #370: [BSD] Process.get_connections() requires root. (patch by John Baldwin) |
|
48 * #372: [BSD] different process methods raise NoSuchProcess instead of |
|
49 AccessDenied. |
|
50 |
|
51 |
|
52 0.7.0 - 2013-04-12 |
|
53 ------------------ |
|
54 |
|
55 NEW FEATURES |
|
56 |
|
57 * #233: code migrated to Mercurial (yay!) |
|
58 * #246: psutil.error module is deprecated and scheduled for removal. |
|
59 * #328: [Windows] process IO nice/priority support. |
|
60 * #359: psutil.get_boot_time() |
|
61 * #361: [Linux] psutil.cpu_times() now includes new 'steal', 'guest' and |
|
62 'guest_nice' fields available on recent Linux kernels. |
|
63 Also, psutil.cpu_percent() is more accurate. |
|
64 * #362: cpu_times_percent() (per-CPU-time utilization as a percentage) |
|
65 |
|
66 BUG FIXES |
|
67 |
|
68 * #234: [Windows] disk_io_counters() fails to list certain disks. |
|
69 * #264: [Windows] use of psutil.disk_partitions() may cause a message box to |
|
70 appear. |
|
71 * #313: [Linux] psutil.virtual_memory() and psutil.swap_memory() can crash on |
|
72 certain exotic Linux flavors having an incomplete /proc interface. |
|
73 If that's the case we now set the unretrievable stats to 0 and raise a |
|
74 RuntimeWarning. |
|
75 * #315: [OSX] fix some compilation warnings. |
|
76 * #317: [Windows] cannot set process CPU affinity above 31 cores. |
|
77 * #319: [Linux] process get_memory_maps() raises KeyError 'Anonymous' on Debian |
|
78 squeeze. |
|
79 * #321: [UNIX] Process.ppid property is no longer cached as the kernel may set |
|
80 the ppid to 1 in case of a zombie process. |
|
81 * #323: [OSX] disk_io_counters()'s read_time and write_time parameters were |
|
82 reporting microseconds not milliseconds. (patch by Gregory Szorc) |
|
83 * #331: Process cmdline is no longer cached after first acces as it may change. |
|
84 * #333: [OSX] Leak of Mach ports on OS X (patch by rsesek@google.com) |
|
85 * #337: [Linux] process methods not working because of a poor /proc |
|
86 implementation will raise NotImplementedError rather than RuntimeError |
|
87 and Process.as_dict() will not blow up. (patch by Curtin1060) |
|
88 * #338: [Linux] disk_io_counters() fails to find some disks. |
|
89 * #339: [FreeBSD] get_pid_list() can allocate all the memory on system. |
|
90 * #341: [Linux] psutil might crash on import due to error in retrieving system |
|
91 terminals map. |
|
92 * #344: [FreeBSD] swap_memory() might return incorrect results due to |
|
93 kvm_open(3) not being called. (patch by Jean Sebastien) |
|
94 * #338: [Linux] disk_io_counters() fails to find some disks. |
|
95 * #351: [Windows] if psutil is compiled with mingw32 (provided installers for |
|
96 py2.4 and py2.5 are) disk_io_counters() will fail. (Patch by m.malycha) |
|
97 * #353: [OSX] get_users() returns an empty list on OSX 10.8. |
|
98 * #356: Process.parent now checks whether parent PID has been reused in which |
|
99 case returns None. |
|
100 * #365: Process.set_nice() should check PID has not been reused by another |
|
101 process. |
|
102 * #366: [FreeBSD] get_memory_maps(), get_num_fds(), get_open_files() and |
|
103 getcwd() Process methods raise RuntimeError instead of AccessDenied. |
|
104 |
|
105 API CHANGES |
|
106 |
|
107 * Process.cmdline property is no longer cached after first access. |
|
108 * Process.ppid property is no longer cached after first access. |
|
109 * [Linux] Process methods not working because of a poor /proc implementation |
|
110 will raise NotImplementedError instead of RuntimeError. |
|
111 * psutil.error module is deprecated and scheduled for removal. |
|
112 |
|
113 |
|
114 0.6.1 - 2012-08-16 |
|
115 ------------------ |
|
116 |
|
117 NEW FEATURES |
|
118 |
|
119 * #316: process cmdline property now makes a better job at guessing the process |
|
120 executable from the cmdline. |
|
121 |
|
122 BUG FIXES |
|
123 |
|
124 * #316: process exe was resolved in case it was a symlink. |
|
125 * #318: python 2.4 compatibility was broken. |
|
126 |
|
127 API CHANGES |
|
128 |
|
129 * process exe can now return an empty string instead of raising AccessDenied. |
|
130 * process exe is no longer resolved in case it's a symlink. |
|
131 |
|
132 |
|
133 0.6.0 - 2012-08-13 |
|
134 ------------------ |
|
135 |
|
136 NEW FEATURES |
|
137 |
|
138 * #216: [POSIX] get_connections() UNIX sockets support. |
|
139 * #220: [FreeBSD] get_connections() has been rewritten in C and no longer |
|
140 requires lsof. |
|
141 * #222: [OSX] add support for process cwd. |
|
142 * #261: process extended memory info. |
|
143 * #295: [OSX] process executable path is now determined by asking the OS |
|
144 instead of being guessed from process cmdline. |
|
145 * #297: [OSX] the Process methods below were always raising AccessDenied for |
|
146 any process except the current one. Now this is no longer true. Also |
|
147 they are 2.5x faster. |
|
148 - name |
|
149 - get_memory_info() |
|
150 - get_memory_percent() |
|
151 - get_cpu_times() |
|
152 - get_cpu_percent() |
|
153 - get_num_threads() |
|
154 * #300: examples/pmap.py script. |
|
155 * #301: process_iter() now yields processes sorted by their PIDs. |
|
156 * #302: process number of voluntary and involuntary context switches. |
|
157 * #303: [Windows] the Process methods below were always raising AccessDenied |
|
158 for any process not owned by current user. Now this is no longer true: |
|
159 - create_time |
|
160 - get_cpu_times() |
|
161 - get_cpu_percent() |
|
162 - get_memory_info() |
|
163 - get_memory_percent() |
|
164 - get_num_handles() |
|
165 - get_io_counters() |
|
166 * #305: add examples/netstat.py script. |
|
167 * #311: system memory functions has been refactorized and rewritten and now |
|
168 provide a more detailed and consistent representation of the system |
|
169 memory. New psutil.virtual_memory() function provides the following |
|
170 memory amounts: |
|
171 - total |
|
172 - available |
|
173 - percent |
|
174 - used |
|
175 - active [POSIX] |
|
176 - inactive [POSIX] |
|
177 - buffers (BSD, Linux) |
|
178 - cached (BSD, OSX) |
|
179 - wired (OSX, BSD) |
|
180 - shared [FreeBSD] |
|
181 New psutil.swap_memory() provides: |
|
182 - total |
|
183 - used |
|
184 - free |
|
185 - percent |
|
186 - sin (no. of bytes the system has swapped in from disk (cumulative)) |
|
187 - sout (no. of bytes the system has swapped out from disk (cumulative)) |
|
188 All old memory-related functions are deprecated. |
|
189 Also two new example scripts were added: free.py and meminfo.py. |
|
190 * #312: psutil.network_io_counters() namedtuple includes 4 new fields: |
|
191 errin, errout dropin and dropout, reflecting the number of packets |
|
192 dropped and with errors. |
|
193 |
|
194 BUGFIXES |
|
195 |
|
196 * #298: [OSX and BSD] memory leak in get_num_fds(). |
|
197 * #299: potential memory leak every time PyList_New(0) is used. |
|
198 * #303: [Windows] potential heap corruption in get_num_threads() and |
|
199 get_status() Process methods. |
|
200 * #305: [FreeBSD] psutil can't compile on FreeBSD 9 due to removal of utmp.h. |
|
201 * #306: at C level, errors are not checked when invoking Py* functions which |
|
202 create or manipulate Python objects leading to potential memory related |
|
203 errors and/or segmentation faults. |
|
204 * #307: [FreeBSD] values returned by psutil.network_io_counters() are wrong. |
|
205 * #308: [BSD / Windows] psutil.virtmem_usage() wasn't actually returning |
|
206 information about swap memory usage as it was supposed to do. It does |
|
207 now. |
|
208 * #309: get_open_files() might not return files which can not be accessed |
|
209 due to limited permissions. AccessDenied is now raised instead. |
|
210 |
|
211 API CHANGES |
|
212 |
|
213 * psutil.phymem_usage() is deprecated (use psutil.virtual_memory()) |
|
214 * psutil.virtmem_usage() is deprecated (use psutil.swap_memory()) |
|
215 * psutil.phymem_buffers() on Linux is deprecated (use psutil.virtual_memory()) |
|
216 * psutil.cached_phymem() on Linux is deprecated (use psutil.virtual_memory()) |
|
217 * [Windows and BSD] psutil.virtmem_usage() now returns information about swap |
|
218 memory instead of virtual memory. |
|
219 |
|
220 |
|
221 0.5.1 - 2012-06-29 |
|
222 ------------------ |
|
223 |
|
224 NEW FEATURES |
|
225 |
|
226 * #293: [Windows] process executable path is now determined by asking the OS |
|
227 instead of being guessed from process cmdline. |
|
228 |
|
229 BUGFIXES |
|
230 |
|
231 * #292: [Linux] race condition in process files/threads/connections. |
|
232 * #294: [Windows] Process CPU affinity is only able to set CPU #0. |
|
233 |
|
234 |
|
235 0.5.0 - 2012-06-27 |
|
236 ------------------ |
|
237 |
|
238 NEW FEATURES |
|
239 |
|
240 * #195: [Windows] number of handles opened by process. |
|
241 * #209: psutil.disk_partitions() now provides also mount options. |
|
242 * #229: list users currently connected on the system (psutil.get_users()). |
|
243 * #238: [Linux, Windows] process CPU affinity (get and set). |
|
244 * #242: Process.get_children(recursive=True): return all process |
|
245 descendants. |
|
246 * #245: [POSIX] Process.wait() incrementally consumes less CPU cycles. |
|
247 * #257: [Windows] removed Windows 2000 support. |
|
248 * #258: [Linux] Process.get_memory_info() is now 0.5x faster. |
|
249 * #260: process's mapped memory regions. (Windows patch by wj32.64, OSX patch |
|
250 by Jeremy Whitlock) |
|
251 * #262: [Windows] psutil.disk_partitions() was slow due to inspecting the |
|
252 floppy disk drive also when "all" argument was False. |
|
253 * #273: psutil.get_process_list() is deprecated. |
|
254 * #274: psutil no longer requires 2to3 at installation time in order to work |
|
255 with Python 3. |
|
256 * #278: new Process.as_dict() method. |
|
257 * #281: ppid, name, exe, cmdline and create_time properties of Process class |
|
258 are now cached after being accessed. |
|
259 * #282: psutil.STATUS_* constants can now be compared by using their string |
|
260 representation. |
|
261 * #283: speedup Process.is_running() by caching its return value in case the |
|
262 process is terminated. |
|
263 * #284: [POSIX] per-process number of opened file descriptors. |
|
264 * #287: psutil.process_iter() now caches Process instances between calls. |
|
265 * #290: Process.nice property is deprecated in favor of new get_nice() and |
|
266 set_nice() methods. |
|
267 |
|
268 BUGFIXES |
|
269 |
|
270 * #193: psutil.Popen constructor can throw an exception if the spawned process |
|
271 terminates quickly. |
|
272 * #240: [OSX] incorrect use of free() for Process.get_connections(). |
|
273 * #244: [POSIX] Process.wait() can hog CPU resources if called against a |
|
274 process which is not our children. |
|
275 * #248: [Linux] psutil.network_io_counters() might return erroneous NIC names. |
|
276 * #252: [Windows] process getcwd() erroneously raise NoSuchProcess for |
|
277 processes owned by another user. It now raises AccessDenied instead. |
|
278 * #266: [Windows] psutil.get_pid_list() only shows 1024 processes. |
|
279 (patch by Amoser) |
|
280 * #267: [OSX] Process.get_connections() - an erroneous remote address was |
|
281 returned. (Patch by Amoser) |
|
282 * #272: [Linux] Porcess.get_open_files() - potential race condition can lead to |
|
283 unexpected NoSuchProcess exception. Also, we can get incorrect reports |
|
284 of not absolutized path names. |
|
285 * #275: [Linux] Process.get_io_counters() erroneously raise NoSuchProcess on |
|
286 old Linux versions. Where not available it now raises |
|
287 NotImplementedError. |
|
288 * #286: Process.is_running() doesn't actually check whether PID has been |
|
289 reused. |
|
290 * #314: Process.get_children() can sometimes return non-children. |
|
291 |
|
292 API CHANGES |
|
293 |
|
294 * Process.nice property is deprecated in favor of new get_nice() and set_nice() |
|
295 methods. |
|
296 * psutil.get_process_list() is deprecated. |
|
297 * ppid, name, exe, cmdline and create_time properties of Process class are now |
|
298 cached after being accessed, meaning NoSuchProcess will no longer be raised |
|
299 in case the process is gone in the meantime. |
|
300 * psutil.STATUS_* constants can now be compared by using their string |
|
301 representation. |
|
302 |
|
303 |
|
304 0.4.1 - 2011-12-14 |
|
305 ------------------ |
|
306 |
|
307 BUGFIXES |
|
308 |
|
309 * #228: some example scripts were not working with python 3. |
|
310 * #230: [Windows / OSX] memory leak in Process.get_connections(). |
|
311 * #232: [Linux] psutil.phymem_usage() can report erroneous values which are |
|
312 different than "free" command. |
|
313 * #236: [Windows] memory/handle leak in Process's get_memory_info(), |
|
314 suspend() and resume() methods. |
|
315 |
|
316 |
|
317 0.4.0 - 2011-10-29 |
|
318 ------------------ |
|
319 |
|
320 NEW FEATURES |
|
321 |
|
322 * #150: network I/O counters. (OSX and Windows patch by Jeremy Whitlock) |
|
323 * #154: [FreeBSD] add support for process getcwd() |
|
324 * #157: [Windows] provide installer for Python 3.2 64-bit. |
|
325 * #198: Process.wait(timeout=0) can now be used to make wait() return |
|
326 immediately. |
|
327 * #206: disk I/O counters. (OSX and Windows patch by Jeremy Whitlock) |
|
328 * #213: examples/iotop.py script. |
|
329 * #217: Process.get_connections() now has a "kind" argument to filter |
|
330 for connections with different criteria. |
|
331 * #221: [FreeBSD] Process.get_open_files has been rewritten in C and no longer |
|
332 relies on lsof. |
|
333 * #223: examples/top.py script. |
|
334 * #227: examples/nettop.py script. |
|
335 |
|
336 BUGFIXES |
|
337 |
|
338 * #135: [OSX] psutil cannot create Process object. |
|
339 * #144: [Linux] no longer support 0 special PID. |
|
340 * #188: [Linux] psutil import error on Linux ARM architectures. |
|
341 * #194: [POSIX] psutil.Process.get_cpu_percent() now reports a percentage over |
|
342 100 on multicore processors. |
|
343 * #197: [Linux] Process.get_connections() is broken on platforms not supporting |
|
344 IPv6. |
|
345 * #200: [Linux] psutil.NUM_CPUS not working on armel and sparc architectures |
|
346 and causing crash on module import. |
|
347 * #201: [Linux] Process.get_connections() is broken on big-endian |
|
348 architectures. |
|
349 * #211: Process instance can unexpectedly raise NoSuchProcess if tested for |
|
350 equality with another object. |
|
351 * #218: [Linux] crash at import time on Debian 64-bit because of a missing line |
|
352 in /proc/meminfo. |
|
353 * #226: [FreeBSD] crash at import time on FreeBSD 7 and minor. |
|
354 |
|
355 |
|
356 0.3.0 - 2011-07-08 |
|
357 ------------------ |
|
358 |
|
359 NEW FEATURES |
|
360 |
|
361 * #125: system per-cpu percentage utilization and times. |
|
362 * #163: per-process associated terminal (TTY). |
|
363 * #171: added get_phymem() and get_virtmem() functions returning system |
|
364 memory information (total, used, free) and memory percent usage. |
|
365 total_* avail_* and used_* memory functions are deprecated. |
|
366 * #172: disk usage statistics. |
|
367 * #174: mounted disk partitions. |
|
368 * #179: setuptools is now used in setup.py |
|
369 |
|
370 BUGFIXES |
|
371 |
|
372 * #159: SetSeDebug() does not close handles or unset impersonation on return. |
|
373 * #164: [Windows] wait function raises a TimeoutException when a process |
|
374 returns -1 . |
|
375 * #165: process.status raises an unhandled exception. |
|
376 * #166: get_memory_info() leaks handles hogging system resources. |
|
377 * #168: psutil.cpu_percent() returns erroneous results when used in |
|
378 non-blocking mode. (patch by Philip Roberts) |
|
379 * #178: OSX - Process.get_threads() leaks memory |
|
380 * #180: [Windows] Process's get_num_threads() and get_threads() methods can |
|
381 raise NoSuchProcess exception while process still exists. |
|
382 |
|
383 |
|
384 0.2.1 - 2011-03-20 |
|
385 ------------------ |
|
386 |
|
387 NEW FEATURES |
|
388 |
|
389 * #64: per-process I/O counters. |
|
390 * #116: per-process wait() (wait for process to terminate and return its exit |
|
391 code). |
|
392 * #134: per-process get_threads() returning information (id, user and kernel |
|
393 times) about threads opened by process. |
|
394 * #136: process executable path on FreeBSD is now determined by asking the |
|
395 kernel instead of guessing it from cmdline[0]. |
|
396 * #137: per-process real, effective and saved user and group ids. |
|
397 * #140: system boot time. |
|
398 * #142: per-process get and set niceness (priority). |
|
399 * #143: per-process status. |
|
400 * #147: per-process I/O nice (priority) - Linux only. |
|
401 * #148: psutil.Popen class which tidies up subprocess.Popen and psutil.Process |
|
402 in a unique interface. |
|
403 * #152: [OSX] get_process_open_files() implementation has been rewritten |
|
404 in C and no longer relies on lsof resulting in a 3x speedup. |
|
405 * #153: [OSX] get_process_connection() implementation has been rewritten |
|
406 in C and no longer relies on lsof resulting in a 3x speedup. |
|
407 |
|
408 BUGFIXES |
|
409 |
|
410 * #83: process cmdline is empty on OSX 64-bit. |
|
411 * #130: a race condition can cause IOError exception be raised on |
|
412 Linux if process disappears between open() and subsequent read() calls. |
|
413 * #145: WindowsError was raised instead of psutil.AccessDenied when using |
|
414 process resume() or suspend() on Windows. |
|
415 * #146: 'exe' property on Linux can raise TypeError if path contains NULL |
|
416 bytes. |
|
417 * #151: exe and getcwd() for PID 0 on Linux return inconsistent data. |
|
418 |
|
419 API CHANGES |
|
420 |
|
421 * Process "uid" and "gid" properties are deprecated in favor of "uids" and |
|
422 "gids" properties. |
|
423 |
|
424 |
|
425 0.2.0 - 2010-11-13 |
|
426 ------------------ |
|
427 |
|
428 NEW FEATURES |
|
429 |
|
430 * #79: per-process open files. |
|
431 * #88: total system physical cached memory. |
|
432 * #88: total system physical memory buffers used by the kernel. |
|
433 * #91: per-process send_signal() and terminate() methods. |
|
434 * #95: NoSuchProcess and AccessDenied exception classes now provide "pid", |
|
435 "name" and "msg" attributes. |
|
436 * #97: per-process children. |
|
437 * #98: Process.get_cpu_times() and Process.get_memory_info now return |
|
438 a namedtuple instead of a tuple. |
|
439 * #103: per-process opened TCP and UDP connections. |
|
440 * #107: add support for Windows 64 bit. (patch by cjgohlke) |
|
441 * #111: per-process executable name. |
|
442 * #113: exception messages now include process name and pid. |
|
443 * #114: process username Windows implementation has been rewritten in pure |
|
444 C and no longer uses WMI resulting in a big speedup. Also, pywin32 is no |
|
445 longer required as a third-party dependancy. (patch by wj32) |
|
446 * #117: added support for Windows 2000. |
|
447 * #123: psutil.cpu_percent() and psutil.Process.cpu_percent() accept a |
|
448 new 'interval' parameter. |
|
449 * #129: per-process number of threads. |
|
450 |
|
451 BUGFIXES |
|
452 |
|
453 * #80: fixed warnings when installing psutil with easy_install. |
|
454 * #81: psutil fails to compile with Visual Studio. |
|
455 * #94: suspend() raises OSError instead of AccessDenied. |
|
456 * #86: psutil didn't compile against FreeBSD 6.x. |
|
457 * #102: orphaned process handles obtained by using OpenProcess in C were |
|
458 left behind every time Process class was instantiated. |
|
459 * #111: path and name Process properties report truncated or erroneous |
|
460 values on UNIX. |
|
461 * #120: cpu_percent() always returning 100% on OS X. |
|
462 * #112: uid and gid properties don't change if process changes effective |
|
463 user/group id at some point. |
|
464 * #126: ppid, uid, gid, name, exe, cmdline and create_time properties are |
|
465 no longer cached and correctly raise NoSuchProcess exception if the process |
|
466 disappears. |
|
467 |
|
468 API CHANGES |
|
469 |
|
470 * psutil.Process.path property is deprecated and works as an alias for "exe" |
|
471 property. |
|
472 * psutil.Process.kill(): signal argument was removed - to send a signal to the |
|
473 process use send_signal(signal) method instead. |
|
474 * psutil.Process.get_memory_info() returns a nametuple instead of a tuple. |
|
475 * psutil.cpu_times() returns a nametuple instead of a tuple. |
|
476 * New psutil.Process methods: get_open_files(), get_connections(), |
|
477 send_signal() and terminate(). |
|
478 * ppid, uid, gid, name, exe, cmdline and create_time properties are no longer |
|
479 cached and raise NoSuchProcess exception if process disappears. |
|
480 * psutil.cpu_percent() no longer returns immediately (see issue 123). |
|
481 * psutil.Process.get_cpu_percent() and psutil.cpu_percent() no longer returns |
|
482 immediately by default (see issue 123). |
|
483 |
|
484 |
|
485 0.1.3 - 2010-03-02 |
|
486 ------------------ |
|
487 |
|
488 NEW FEATURES |
|
489 |
|
490 * #14: per-process username |
|
491 * #51: per-process current working directory (Windows and Linux only) |
|
492 * #59: Process.is_running() is now 10 times faster |
|
493 * #61: added supoprt for FreeBSD 64 bit |
|
494 * #71: implemented suspend/resume process |
|
495 * #75: python 3 support |
|
496 |
|
497 BUGFIXES |
|
498 |
|
499 * #36: process cpu_times() and memory_info() functions succeeded also for |
|
500 dead processes while a NoSuchProcess exception is supposed to be raised. |
|
501 * #48: incorrect size for mib array defined in getcmdargs for BSD |
|
502 * #49: possible memory leak due to missing free() on error condition on |
|
503 * #50: fixed getcmdargs() memory fragmentation on BSD |
|
504 * #55: test_pid_4 was failing on Windows Vista |
|
505 * #57: some unit tests were failing on systems where no swap memory is |
|
506 available |
|
507 * #58: is_running() is now called before kill() to make sure we are going |
|
508 to kill the correct process. |
|
509 * #73: virtual memory size reported on OS X includes shared library size |
|
510 * #77: NoSuchProcess wasn't raised on Process.create_time if kill() was |
|
511 used first. |
|
512 |
|
513 |
|
514 0.1.2 - 2009-05-06 |
|
515 ------------------ |
|
516 |
|
517 NEW FEATURES |
|
518 |
|
519 * #32: Per-process CPU user/kernel times |
|
520 * #33: Process create time |
|
521 * #34: Per-process CPU utilization percentage |
|
522 * #38: Per-process memory usage (bytes) |
|
523 * #41: Per-process memory utilization (percent) |
|
524 * #39: System uptime |
|
525 * #43: Total system virtual memory |
|
526 * #46: Total system physical memory |
|
527 * #44: Total system used/free virtual and physical memory |
|
528 |
|
529 BUGFIXES |
|
530 |
|
531 * #36: [Windows] NoSuchProcess not raised when accessing timing methods. |
|
532 * #40: test_get_cpu_times() failing on FreeBSD and OS X. |
|
533 * #42: [Windows] get_memory_percent() raises AccessDenied. |
|
534 |
|
535 |
|
536 0.1.1 - 2009-03-06 |
|
537 ------------------ |
|
538 |
|
539 NEW FEATURES |
|
540 |
|
541 * #4: FreeBSD support for all functions of psutil |
|
542 * #9: Process.uid and Process.gid now retrieve process UID and GID. |
|
543 * #11: Support for parent/ppid - Process.parent property returns a |
|
544 Process object representing the parent process, and Process.ppid returns |
|
545 the parent PID. |
|
546 * #12 & 15: |
|
547 NoSuchProcess exception now raised when creating an object |
|
548 for a nonexistent process, or when retrieving information about a process |
|
549 that has gone away. |
|
550 * #21: AccessDenied exception created for raising access denied errors |
|
551 from OSError or WindowsError on individual platforms. |
|
552 * #26: psutil.process_iter() function to iterate over processes as |
|
553 Process objects with a generator. |
|
554 * #?: Process objects can now also be compared with == operator for equality |
|
555 (PID, name, command line are compared). |
|
556 |
|
557 BUGFIXES |
|
558 |
|
559 * #16: [Windows] Special case for "System Idle Process" (PID 0) which |
|
560 otherwise would return an "invalid parameter" exception. |
|
561 * #17: get_process_list() ignores NoSuchProcess and AccessDenied |
|
562 exceptions during building of the list. |
|
563 * #22: [Windows] Process(0).kill() was failing with an unset exception. |
|
564 * #23: Special case for pid_exists(0) |
|
565 * #24: [Windows] Process(0).kill() now raises AccessDenied exception instead of |
|
566 WindowsError. |
|
567 * #30: psutil.get_pid_list() was returning two instances of PID 0 on OS |
|
568 X and FreeBSD platforms. |
|
569 |
|
570 |
|
571 0.1.0 - 2009-01-27 |
|
572 ------------------ |
|
573 |
|
574 * Initial release. |