api: remove __del__

it seems not good idea? use context
Revert "api: remove __del__"

This reverts commit 4d8857b593d897fdd9f6989c99a31d5a1d83188e.
test: started

and found many bugs