Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
A
asdf
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Service Desk
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Terms and privacy
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Tarn Burton
asdf
Commits
71883b6f
Commit
71883b6f
authored
8 years ago
by
Francois-Rene Rideau
Browse files
Options
Downloads
Patches
Plain Diff
Tell in uiop/README.md when to use UIOP or not
parent
3e579958
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
uiop/README.md
+41
-0
41 additions, 0 deletions
uiop/README.md
with
41 additions
and
0 deletions
uiop/README.md
+
41
−
0
View file @
71883b6f
...
@@ -155,6 +155,47 @@ be moved from one internal package to the other, without notification.
...
@@ -155,6 +155,47 @@ be moved from one internal package to the other, without notification.
They have in the past and will in the future.
They have in the past and will in the future.
When to use UIOP
----------------
UIOP is the ideal tool to use when:
*
You need utilities that are always available,
portably, with no installation needed.
*
You work in a cooperative environment, where the user is a developer
who understands what he's doing and is trusted not to be malicious.
*
You are writing a build system, build tools, developer-facing tools.
*
You are writing bootstrap scripts, in which you cannot suppose
that any third-party library has been installed (yet),
much less a C compiler or any external tool.
*
You are trying to make existing Common Lisp code more robust and portable,
or replacing developer "scripts"
(in shell, perl, python, ruby, js, and other blub languages)
with Common Lisp code, but without concerns about
either end-user usability or security
(at the very least, you, not end-users, are fully controlling pathnames,
and filtering off or portably encoding any unusual character, etc.)
UIOP is the wrong tool when:
*
You need to have total control on syscalls,
to use special characters in pathnames, to handle symlinks yourself,
or otherwise to have low-level system access.
*
You work in an adversarial environment, where some users are stupid,
uneducated or outright malicious, and cannot be trusted not to try and
abuse the system with pathnames, symlinks, race conditions, etc.
(or be tricked into it by attackers).
*
You are writing end-user facing tools that pass along user-provided
pathnames, with bad usability implications if a user tries to use weird
pathnames, or even security implications if an attackers crafts bad
pathnames or filesystem setups.
In those latter cases, we recommend you use IOlib, or osicat,
or some similar library that isn't as portable as UIOP,
but provides fine-grained control over low-level system access.
Also, please use extreme caution.
Some history
Some history
------------
------------
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment